diff --git a/.github/workflows/markdown_equations.yml b/.github/workflows/markdown_equations.yml index 618ec2a96a77..0879d14bb775 100644 --- a/.github/workflows/markdown_equations.yml +++ b/.github/workflows/markdown_equations.yml @@ -96,6 +96,11 @@ jobs: git config --local user.name "stdlib-bot" timeout-minutes: 5 + # Disable Git hooks: + - name: 'Disable Git hooks' + run: | + rm -rf .git/hooks + # Import GPG key to sign commits: - name: 'Import GPG key to sign commits' # Pin action to full length commit SHA @@ -166,7 +171,7 @@ jobs: git commit -m "docs: update Markdown equation elements" echo "changed=true" >> $GITHUB_OUTPUT fi - timeout-minutes: 15 + timeout-minutes: 60 # Delete remote PR branch to ensure a clean push when the branch has diverged: - name: 'Delete remote PR branch' @@ -177,6 +182,9 @@ jobs: # Fetch the branch first so that --force-with-lease in the subsequent push has a local tracking reference and can verify the remote state: git fetch origin markdown-insert-equations 2>/dev/null || true gh api -X DELETE repos/stdlib-js/stdlib/git/refs/heads/markdown-insert-equations 2>/dev/null || true + + # Delete the local tracking branch so that --force-with-lease does not reject the push due to stale info: + git branch -dr origin/markdown-insert-equations 2>/dev/null || true timeout-minutes: 5 # Create a pull request with the updated equations: diff --git a/.github/workflows/publish_coverage_pr.yml b/.github/workflows/publish_coverage_pr.yml index 21c1bbff76d2..80937fbbbb70 100644 --- a/.github/workflows/publish_coverage_pr.yml +++ b/.github/workflows/publish_coverage_pr.yml @@ -157,8 +157,11 @@ jobs: run: | cd ./www-test-code-coverage BRANCH_NAME="pr-$PR_NUMBER" - git fetch origin "$BRANCH_NAME" || true - git checkout "$BRANCH_NAME" || git checkout -b "$BRANCH_NAME" + if git fetch origin "$BRANCH_NAME"; then + git checkout -B "$BRANCH_NAME" FETCH_HEAD + else + git checkout -b "$BRANCH_NAME" + fi # Remove all directories except .github and .git from branch: find . -mindepth 1 -maxdepth 1 -type d -not -name '.github' -not -name '.git' -exec git rm -rf {} + || true diff --git a/.rtlintrc b/.rtlintrc index c209e068a3b1..a4f45f9e8df1 100644 --- a/.rtlintrc +++ b/.rtlintrc @@ -6,7 +6,7 @@ "@stdlib/_tools/repl-txt/rules/interface-spacing": [ "error", 2 ], "@stdlib/_tools/repl-txt/rules/line-length": [ "error", 80 ], "@stdlib/_tools/repl-txt/rules/match-signature": "error", - "@stdlib/_tools/repl-txt/rules/resolvable-aliases": "error", + "@stdlib/_tools/repl-txt/rules/resolvable-aliases": "warn", "@stdlib/_tools/repl-txt/rules/section-order": "error", "@stdlib/_tools/repl-txt/rules/section-heading-style": "error", "@stdlib/_tools/repl-txt/rules/see-also": "error", diff --git a/docs/git-notes/aa89fb36f12f7e813ddec45082316115185eff89.txt b/docs/git-notes/aa89fb36f12f7e813ddec45082316115185eff89.txt new file mode 100644 index 000000000000..b1e40b09d8ce --- /dev/null +++ b/docs/git-notes/aa89fb36f12f7e813ddec45082316115185eff89.txt @@ -0,0 +1,11 @@ +--- +type: amend-message +--- +feat: add `stats/incr/nanmmin` + +PR-URL: https://github.com/stdlib-js/stdlib/pull/5849 +Closes: https://github.com/stdlib-js/stdlib/issues/5594 + +Co-authored-by: Philipp Burckhardt +Co-authored-by: stdlib-bot +Reviewed-by: Philipp Burckhardt diff --git a/docs/git-notes/bc7c322891b1c0b758e6aef323b2f22a3bab1500.txt b/docs/git-notes/bc7c322891b1c0b758e6aef323b2f22a3bab1500.txt new file mode 100644 index 000000000000..12bb21e91b79 --- /dev/null +++ b/docs/git-notes/bc7c322891b1c0b758e6aef323b2f22a3bab1500.txt @@ -0,0 +1,10 @@ +--- +type: amend-message +--- +feat: add `blas/ext/base/ndarray/gfirst-index-less-than` + +PR-URL: https://github.com/stdlib-js/stdlib/pull/13596 +Co-authored-by: Athan Reines +Reviewed-by: Athan Reines +Signed-off-by: Athan Reines +Closes: https://github.com/stdlib-js/metr-issue-tracker/issues/1022 diff --git a/docs/git-notes/ef6a8d06633359aa718f4aef91a1a257782748b2.txt b/docs/git-notes/ef6a8d06633359aa718f4aef91a1a257782748b2.txt new file mode 100644 index 000000000000..bb32a0bb4b6f --- /dev/null +++ b/docs/git-notes/ef6a8d06633359aa718f4aef91a1a257782748b2.txt @@ -0,0 +1,12 @@ +--- +type: amend-message +--- +feat: add C implementation for `stats/base/dists/frechet/pdf` + +PR-URL: https://github.com/stdlib-js/stdlib/pull/10843 +Closes: https://github.com/stdlib-js/stdlib/issues/3612 + +Co-authored-by: Philipp Burckhardt +Co-authored-by: stdlib-bot +Reviewed-by: Philipp Burckhardt +Signed-off-by: Philipp Burckhardt diff --git a/etc/eslint/.eslintrc.benchmarks.js b/etc/eslint/.eslintrc.benchmarks.js index 713fed264ecc..a2d0ed97f188 100644 --- a/etc/eslint/.eslintrc.benchmarks.js +++ b/etc/eslint/.eslintrc.benchmarks.js @@ -16,6 +16,8 @@ * limitations under the License. */ +/* eslint-disable stdlib/no-empty-lines-between-requires */ + 'use strict'; // MODULES // @@ -127,11 +129,11 @@ eslint.rules[ 'stdlib/jsdoc-doctest' ] = 'off'; eslint.rules[ 'stdlib/no-unnecessary-nested-functions' ] = 'off'; /** -* Warn when using string concatenation in benchmark descriptions. +* Disallow using string concatenation in benchmark descriptions. * * @private */ -eslint.rules[ 'stdlib/no-bench-string-concat' ] = 'warn'; +eslint.rules[ 'stdlib/no-bench-string-concat' ] = 'error'; // EXPORTS // diff --git a/etc/eslint/.eslintrc.examples.js b/etc/eslint/.eslintrc.examples.js index afa9a472ffd5..20a433c6fa84 100644 --- a/etc/eslint/.eslintrc.examples.js +++ b/etc/eslint/.eslintrc.examples.js @@ -16,6 +16,8 @@ * limitations under the License. */ +/* eslint-disable stdlib/no-empty-lines-between-requires */ + 'use strict'; // MODULES // diff --git a/etc/eslint/.eslintrc.tests.js b/etc/eslint/.eslintrc.tests.js index edd9f4f9452b..d845bbc7da83 100644 --- a/etc/eslint/.eslintrc.tests.js +++ b/etc/eslint/.eslintrc.tests.js @@ -16,6 +16,8 @@ * limitations under the License. */ +/* eslint-disable stdlib/no-empty-lines-between-requires */ + 'use strict'; // MODULES // diff --git a/etc/eslint/.eslintrc.typescript.tests.js b/etc/eslint/.eslintrc.typescript.tests.js index 2f2b6a15a0da..91e6dd8b2a78 100644 --- a/etc/eslint/.eslintrc.typescript.tests.js +++ b/etc/eslint/.eslintrc.typescript.tests.js @@ -16,6 +16,8 @@ * limitations under the License. */ +/* eslint-disable stdlib/no-empty-lines-between-requires */ + 'use strict'; // MODULES // diff --git a/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-typedef-typos/lib/edit_distance.js b/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-typedef-typos/lib/edit_distance.js index 755b221d87a2..5bc482c0d167 100644 --- a/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-typedef-typos/lib/edit_distance.js +++ b/lib/node_modules/@stdlib/_tools/eslint/rules/jsdoc-typedef-typos/lib/edit_distance.js @@ -20,7 +20,7 @@ // MODULES // -var ndarray = require( '@stdlib/ndarray/array' ); +var zeros = require( '@stdlib/ndarray/zeros' ); var minn = require( '@stdlib/math/base/special/minn' ); @@ -31,7 +31,7 @@ var minn = require( '@stdlib/math/base/special/minn' ); * * ## Notes * -* - the edit distance between two strings is the number of insertions, deletions, character substitutions, as well as transpositions of adjacent characters to convert one of the strings into the other. +* - The edit distance between two strings is the number of insertions, deletions, character substitutions, as well as transpositions of adjacent characters to convert one of the strings into the other. * * [damerau-levenshtein]: https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance * @@ -56,9 +56,7 @@ function editDistance( word1, word2 ) { n = word2.length; // FIXME: all of the following needs to be cleaned up. There may be an opportunity for a `blas/ext/base` implementation of edit distance; however, we need to think carefully about this as the following doesn't take into account grapheme clusters. - d = ndarray({ - 'shape': [ m+1, n+1 ] - }); + d = zeros( [ m+1, n+1 ] ); for ( i = 0; i <= m; i++ ) { d.set( i, 0, i ); } diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md b/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md index 572134fff336..7a6c9a3c602d 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/README.md @@ -34,22 +34,35 @@ var lint = require( '@stdlib/_tools/lint/repl-txt' ); Asynchronously lints `repl.txt` files. + + ```javascript -lint( done ); +var join = require( 'path' ).join; + +var opts = { + 'dir': join( __dirname, 'test' ) +}; +lint( opts, done ); -function done( error, errs ) { +function done( error, results ) { if ( error ) { - throw error; + console.error( error.message ); + return; } - if ( errs ) { - console.dir( errs ); - } else { - console.log( 'Success!' ); + if ( results ) { + if ( results.warnings.length ) { + console.dir( results.warnings ); + } + if ( results.errors.length ) { + console.dir( results.errors ); + } else { + console.log( 'Success!' ); + } } } ``` -The function accepts the following `options`: +The function accepts the following options: - **dir**: root directory from which to search for `repl.txt` files. May be either an absolute file path or a path relative to the current working directory. Default: current working directory. - **pattern**: glob pattern used to find `repl.txt` files. Default: `'**/repl.txt'`. @@ -57,6 +70,8 @@ The function accepts the following `options`: To search from an alternative directory, set the `dir` option. + + ```javascript var opts = { 'dir': '/foo/bar/baz' @@ -64,43 +79,65 @@ var opts = { lint( opts, done ); -function done( error, errs ) { +function done( error, results ) { if ( error ) { - throw error; + console.error( error.message ); + return; } - if ( errs ) { - console.dir( errs ); - } else { - console.log( 'Success!' ); + if ( results ) { + if ( results.warnings.length ) { + console.dir( results.warnings ); + } + if ( results.errors.length ) { + console.dir( results.errors ); + } else { + console.log( 'Success!' ); + } } } ``` To provide an alternative include filter, set the `pattern` option. + + ```javascript +var join = require( 'path' ).join; + var opts = { + 'dir': join( __dirname, 'test' ), 'pattern': '**/foo/**/repl.txt' }; lint( opts, done ); -function done( error, errs ) { +function done( error, results ) { if ( error ) { - throw error; + console.error( error.message ); + return; } - if ( errs ) { - console.dir( errs ); - } else { - console.log( 'Success!' ); + if ( results ) { + if ( results.warnings.length ) { + console.dir( results.warnings ); + } + if ( results.errors.length ) { + console.dir( results.errors ); + } else { + console.log( 'Success!' ); + } } } ``` To exclude matches, set the `ignore` option. + + ```javascript +var join = require( 'path' ).join; + var opts = { + 'dir': join( __dirname, 'test' ), 'ignore': [ 'node_modules/**', 'build/**', @@ -110,14 +147,20 @@ var opts = { lint( opts, done ); -function done( error, errs ) { +function done( error, results ) { if ( error ) { - throw error; + console.error( error.message ); + return; } - if ( errs ) { - console.dir( errs ); - } else { - console.log( 'Success!' ); + if ( results ) { + if ( results.warnings.length ) { + console.dir( results.warnings ); + } + if ( results.errors.length ) { + console.dir( results.errors ); + } else { + console.log( 'Success!' ); + } } } ``` @@ -126,16 +169,29 @@ function done( error, errs ) { Synchronously lints `repl.txt` files. + + ```javascript -var errs = lint.sync(); -if ( errs ) { - console.dir( errs ); -} else { - console.log( 'Success!' ); +var join = require( 'path' ).join; + +var opts = { + 'dir': join( __dirname, 'test' ) +}; + +var results = lint.sync( opts ); +if ( results ) { + if ( results.warnings.length ) { + console.dir( results.warnings ); + } + if ( results.errors.length ) { + console.dir( results.errors ); + } else { + console.log( 'Success!' ); + } } ``` -The function accepts the same `options` as `lint()` above. +The function accepts the same options as `lint()` above. @@ -164,15 +220,20 @@ var opts = { lint( opts, done ); -function done( error, errs ) { +function done( error, results ) { if ( error ) { throw error; } - if ( errs ) { - console.log( JSON.stringify( errs, null, 2 ) ); - } else { - console.log( 'Success!' ); + if ( results ) { + if ( results.warnings.length ) { + console.log( JSON.stringify( results.warnings, null, 2 ) ); + } + if ( results.errors.length ) { + console.log( JSON.stringify( results.errors, null, 2 ) ); + return; + } } + console.log( 'Success!' ); } ``` @@ -217,12 +278,16 @@ Options: - To provide multiple exclusion glob patterns, set multiple `--ignore` option arguments. + + ```bash $ lint-repl-txt --ignore=node_modules/** --ignore=build/** --ignore=reports/** ``` - If the split separator is a [regular expression][regexp], ensure that the `split` option is properly **escaped**. + + ```bash # Not escaped... $ | lint-repl-txt --split /\r?\n/ @@ -241,6 +306,8 @@ Options: ### Examples + + ```bash $ lint-repl-txt @@ -258,20 +325,24 @@ $ lint-repl-txt start: 17 end: 24 -2 errors +2 errors, 0 warnings ``` To output results as newline-delimited JSON ([NDJSON][ndjson]), + + ```bash $ lint-repl-txt --format ndjson -{"file":"...","errors":[...]} -{"file":"...","errors":[...]} +{"file":"...","errors":[...],"warnings":[...]} +{"file":"...","errors":[...],"warnings":[...]} ... ``` To use as a part of a [standard stream][standard-stream] pipeline, + + ```bash $ echo -n $'./repl.txt' | lint-repl-txt ... diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/bin/cli b/lib/node_modules/@stdlib/_tools/lint/repl-txt/bin/cli index 54c221474c95..151f0899202d 100755 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/bin/cli +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/bin/cli @@ -31,6 +31,8 @@ var stdout = require( '@stdlib/streams/node/stdout' ); var RE_EOL = require( '@stdlib/regexp/eol' ).REGEXP; var isRegExpString = require( '@stdlib/assert/is-regexp-string' ); var reFromString = require( '@stdlib/utils/regexp-from-string' ); +var groupValuesOnKey = require( '@stdlib/array/base/group-values-on-key' ); +var objectKeys = require( '@stdlib/utils/keys' ); var cwd = require( '@stdlib/process/cwd' ); var lint = require( './../lib' ); var lintREPL = require( './../lib/lint.js' ); @@ -39,54 +41,119 @@ var lintREPL = require( './../lib/lint.js' ); // FUNCTIONS // /** -* Prints lint errors as newline-delimited JSON. +* Combines errors and warnings into a single array. * * @private -* @param {ObjectArray} errs - lint errors +* @param {Array} results - array of results +* @returns {Array} processed results */ -function ndjson( errs ) { +function results2array( results ) { + var out; + var tmp; + var o; var i; - for ( i = 0; i < errs.length; i++ ) { - console.error( JSON.stringify( errs[ i ] ) ); // eslint-disable-line no-console + var j; + + out = []; + for ( i = 0; i < results.length; i++ ) { + o = results[ i ]; + tmp = o.errors || o.warnings; + for ( j = 0; j < tmp.length; j++ ) { + out.push( tmp[ j ] ); + } + } + return out; +} + +/** +* Prints lint results as newline-delimited JSON. +* +* @private +* @param {Object} results - lint results +*/ +function ndjson( results ) { + var keys; + var g; + var o; + var v; + var i; + var j; + var k; + + // Resolve the file names: + keys = objectKeys( results ); + + // Print results for each file... + for ( i = 0; i < keys.length; i++ ) { + k = keys[ i ]; + g = results[ k ]; + o = { + 'file': k, + 'errors': [], + 'warnings': [] + }; + for ( j = 0; j < g.length; j++ ) { + v = g[ j ]; + if ( v.errors ) { + o.errors = v.errors; + } else if ( v.warnings ) { + o.warnings = v.warnings; + } + } + console.error( JSON.stringify( o ) ); // eslint-disable-line no-console } } /** -* Pretty prints lint errors. +* Pretty prints lint results. * * @private -* @param {ObjectArray} errors - lint errors +* @param {Object} results - lint results */ -function prettyPrint( errors ) { +function prettyPrint( results ) { /* eslint-disable no-console */ - var total; - var error; - var errs; - var err; + var etotal; + var wtotal; + var keys; + var v; + var g; var i; var j; + var k; + + etotal = 0; + wtotal = 0; - total = 0; + // Resolve the file names: + keys = objectKeys( results ); console.error( '' ); - for ( i = 0; i < errors.length; i++ ) { - error = errors[ i ]; - console.error( error.file ); - - errs = error.errors; - total += errs.length; - for ( j = 0; j < errs.length; j++ ) { - err = errs[ j ]; + for ( i = 0; i < keys.length; i++ ) { + k = keys[ i ]; + g = results2array( results[ k ] ); + + // Print the current filename: + console.error( k ); + + // Pretty print errors and warnings for the current file... + for ( j = 0; j < g.length; j++ ) { + v = g[ j ]; console.error( '' ); - console.error( ' id: %s', err.id ); - console.error( ' severity: %s', err.severity ); - console.error( ' message: %s', err.message ); - console.error( ' start: %s', err.start ); - console.error( ' end: %s', err.end ); + console.error( ' id: %s', v.id ); + console.error( ' severity: %s', v.severity ); + console.error( ' message: %s', v.message ); + console.error( ' start: %s', v.start ); + console.error( ' end: %s', v.end ); + + if ( v.severity === 'error' ) { + etotal += 1; + } else { // v.severity === 'warning' + wtotal += 1; + } } console.error( '' ); } - console.error( '%d errors', total ); + console.error( '%d errors, %d warnings', etotal, wtotal ); console.error( '' ); /* eslint-enable no-console */ @@ -127,7 +194,7 @@ function main() { args = cli.args(); if ( flags.format ) { - fmt = args.format; + fmt = flags.format; } else if ( stdout.isTTY ) { fmt = 'pretty'; } else { @@ -194,20 +261,32 @@ function main() { * * @private * @param {(Error|null)} error - error object - * @param {(ObjectArray|null)} errs - lint errors + * @param {(Object|null)} results - lint results * @returns {void} */ - function onFinish( error, errs ) { + function onFinish( error, results ) { + var groups; + var tmp; if ( error ) { return cli.error( error ); } - if ( errs ) { + if ( results ) { + // Combine errors and warnings into a single array: + tmp = results.errors.concat( results.warnings ); + + // Group errors and warnings according to filename: + groups = groupValuesOnKey( tmp, 'file' ); + + // Print results: if ( fmt === 'ndjson' ) { - ndjson( errs ); + ndjson( groups ); } else { - prettyPrint( errs ); + prettyPrint( groups ); + } + // If we encountered lint errors, ensure we exit with a non-zero exit code... + if ( results.errors.length ) { + return cli.close( 1 ); } - return cli.close( 1 ); } } } diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js index 4fb35fc1d98a..ae5f9c61e849 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/examples/index.js @@ -28,13 +28,18 @@ var opts = { lint( opts, done ); -function done( error, errs ) { +function done( error, results ) { if ( error ) { throw error; } - if ( errs ) { - console.log( JSON.stringify( errs, null, 2 ) ); - } else { - console.log( 'Success!' ); + if ( results ) { + if ( results.warnings.length ) { + console.log( JSON.stringify( results.warnings, null, 2 ) ); + } + if ( results.errors.length ) { + console.log( JSON.stringify( results.errors, null, 2 ) ); + return; + } } + console.log( 'Success!' ); } diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/async.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/async.js index 99947bc71733..8f94bf2e2cf3 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/async.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/async.js @@ -53,14 +53,24 @@ var debug = logger( 'lint:repl-txt:async' ); * @throws {Error} `pattern` option must end with `repl.txt` * * @example -* lint( clbk ); +* var opts = { +* 'dir': __dirname +* }; +* lint( opts, clbk ); * -* function clbk( error, errs ) { +* function clbk( error, results ) { * if ( error ) { * throw error; * } -* if ( errs ) { -* console.dir( errs ); +* if ( results ) { +* if ( results.warnings.length ) { +* console.dir( results.warnings ); +* } +* if ( results.errors.length ) { +* console.dir( results.errors ); +* } else { +* console.log( 'Success!' ); +* } * } else { * console.log( 'Success!' ); * } @@ -119,10 +129,9 @@ function lint() { debug( 'Found %d files.', files.length ); if ( files.length ) { debug( 'Processing files.' ); - linter( files, done ); - } else { - done( null, null ); + return linter( files, done ); } + done( null, null ); } /** @@ -130,14 +139,14 @@ function lint() { * * @private * @param {(Error|null)} error - error object - * @param {(ObjectArray|null)} errs - lint errs + * @param {(Object|null)} results - lint results * @returns {void} */ - function done( error, errs ) { + function done( error, results ) { if ( error ) { return clbk( error ); } - clbk( null, errs ); + clbk( null, results ); } } diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/index.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/index.js index f0b310e34cdd..1dc9fc101ed1 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/index.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/index.js @@ -26,14 +26,24 @@ * @example * var lint = require( '@stdlib/_tools/lint/repl-txt' ); * -* lint( clbk ); +* var opts = { +* 'dir': __dirname +* }; +* lint( opts, clbk ); * -* function clbk( error, errs ) { +* function clbk( error, results ) { * if ( error ) { * throw error; * } -* if ( errs ) { -* console.dir( errs ); +* if ( results ) { +* if ( results.warnings.length ) { +* console.dir( results.warnings ); +* } +* if ( results.errors.length ) { +* console.dir( results.errors ); +* } else { +* console.log( 'Success!' ); +* } * } else { * console.log( 'Success!' ); * } @@ -42,9 +52,19 @@ * @example * var lint = require( '@stdlib/_tools/lint/repl-txt' ); * -* var errs = lint.sync(); -* if ( errs ) { -* console.dir( errs ); +* var opts = { +* 'dir': __dirname +* }; +* var results = lint.sync( opts ); +* if ( results ) { +* if ( results.warnings.length ) { +* console.dir( results.warnings ); +* } +* if ( results.errors.length ) { +* console.dir( results.errors ); +* } else { +* console.log( 'Success!' ); +* } * } else { * console.log( 'Success!' ); * } diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/lint.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/lint.js index e7cd84aef166..5a964f9da1df 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/lint.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/lint.js @@ -41,17 +41,20 @@ var OPTS = { * @private * @param {StringArray} files - list of `repl.txt` files * @param {Callback} clbk - callback to invoke upon completion +* @returns {void} */ function lint( files, clbk ) { + var warnings; + var errors; var total; - var out; var i; total = files.length; - out = []; + warnings = []; + errors = []; i = -1; - next(); + return next(); /** * Processes the next `repl.txt` file. @@ -78,7 +81,7 @@ function lint( files, clbk ) { j = i + 1; if ( error ) { debug( 'Encountered an error reading file: %s (%d of %d). Error: %s', files[ i ], j, total, error.message ); - out.push({ + errors.push({ 'file': files[ i ], 'errors': [ { @@ -97,11 +100,18 @@ function lint( files, clbk ) { debug( 'File is valid.' ); } else { debug( 'File is invalid: %s.', JSON.stringify( isValid.errors ) ); - out.push({ + errors.push({ 'file': files[ i ], 'errors': isValid.errors }); } + if ( isValid.warnings ) { + debug( 'File has warnings: %s.', JSON.stringify( isValid.warnings ) ); + warnings.push({ + 'file': files[ i ], + 'warnings': isValid.warnings + }); + } } if ( j < total ) { debug( 'Processed %d of %d files.', j, total ); @@ -115,13 +125,16 @@ function lint( files, clbk ) { * Callback invoked upon completion. * * @private + * @returns {void} */ function done() { - if ( out.length ) { - clbk( null, out ); - } else { - clbk( null, null ); + if ( errors.length || warnings.length ) { + return clbk( null, { + 'errors': errors, + 'warnings': warnings + }); } + clbk( null, null ); } } diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/sync.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/sync.js index 1ea8047fbb3f..612f93bbc544 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/sync.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/lib/sync.js @@ -48,17 +48,28 @@ var debug = logger( 'lint:repl-txt:sync' ); * @throws {TypeError} options argument must be an object * @throws {TypeError} must provide valid options * @throws {Error} `pattern` option must end with `repl.txt` -* @returns {(ObjectArray|null)} lint errors or `null` +* @returns {(Object|null)} lint results or `null` * * @example -* var errs = lint(); -* if ( errs ) { -* console.dir( errs ); +* var results = lint({ +* 'dir': __dirname +* }); +* if ( results ) { +* if ( results.warnings.length ) { +* console.dir( results.warnings ); +* } +* if ( results.errors.length ) { +* console.dir( results.errors ); +* } else { +* console.log( 'Success!' ); +* } * } else { * console.log( 'Success!' ); * } */ function lint( options ) { + var warnings; + var errors; var files; var gopts; var total; @@ -67,7 +78,6 @@ function lint( options ) { var bool; var err; var dir; - var out; var i; var j; @@ -99,14 +109,15 @@ function lint( options ) { return null; } debug( 'Processing files.' ); - out = []; + warnings = []; + errors = []; for ( i = 0; i < total; i++ ) { j = i + 1; debug( 'Reading file: %s (%d of %d).', files[ i ], j, total ); file = readFile( files[ i ] ); if ( file instanceof Error ) { debug( 'Encountered an error reading file: %s (%d of %d). Error: %s', files[ i ], j, total, file.message ); - out.push({ + errors.push({ 'file': files[ i ], 'errors': [ { @@ -125,17 +136,27 @@ function lint( options ) { debug( 'File is valid.' ); } else { debug( 'File is invalid: %s.', JSON.stringify( isValid.errors ) ); - out.push({ + errors.push({ 'file': files[ i ], 'errors': isValid.errors }); } + if ( isValid.warnings ) { + debug( 'File has warnings: %s.', JSON.stringify( isValid.warnings ) ); + warnings.push({ + 'file': files[ i ], + 'warnings': isValid.warnings + }); + } } debug( 'Processed %d of %d files.', j, total ); } debug( 'Processed all files.' ); - if ( out.length ) { - return out; + if ( errors.length || warnings.length ) { + return { + 'errors': errors, + 'warnings': warnings + }; } return null; } diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.async.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.async.js index 823e7b226c30..15ada6b5262f 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.async.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.async.js @@ -24,6 +24,7 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); var proxyquire = require( 'proxyquire' ); var noop = require( '@stdlib/utils/noop' ); +var isObject = require( '@stdlib/assert/is-object' ); var isObjectArray = require( '@stdlib/assert/is-object-array' ); var lint = require( './../lib/async.js' ); @@ -170,11 +171,11 @@ tape( 'the function returns `null` if unable to resolve any packages', function } } - function clbk( error, errs ) { + function clbk( error, results ) { if ( error ) { t.ok( false, error.message ); } else { - t.strictEqual( errs, null, 'returns `null`' ); + t.strictEqual( results, null, 'returns expected value' ); } t.end(); } @@ -187,11 +188,11 @@ tape( 'the function returns `null` if all `repl.txt` files are valid', function }; lint( opts, clbk ); - function clbk( error, errs ) { + function clbk( error, results ) { if ( error ) { t.ok( false, error.message ); } else { - t.strictEqual( errs, null, 'returns `null`' ); + t.strictEqual( results, null, 'returns expected value' ); } t.end(); } @@ -215,18 +216,24 @@ tape( 'the function returns an array of lint errors to a provided callback if on var cb = arguments[ arguments.length-1 ]; setTimeout( onTimeout, 0 ); function onTimeout() { - cb( null, [{ - 'file': 'beep', - 'message': 'boop' - }]); + cb( null, { + 'errors': [ + { + 'file': 'beep', + 'message': 'boop' + } + ], + 'warnings': [] + }); } } - function clbk( error, errs ) { + function clbk( error, results ) { if ( error ) { t.ok( false, error.message ); } else { - t.strictEqual( isObjectArray( errs ), true, 'returns expected value' ); + t.strictEqual( isObject( results ), true, 'returns expected value' ); + t.strictEqual( isObjectArray( results.errors ), true, 'returns expected value' ); } t.end(); } diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.lint.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.lint.js index a105bd559d87..9c732b5a97e2 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.lint.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.lint.js @@ -23,6 +23,7 @@ var join = require( 'path' ).join; var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); +var isObject = require( '@stdlib/assert/is-object' ); var isObjectArray = require( '@stdlib/assert/is-object-array' ); var lint = require( './../lib/lint.js' ); @@ -44,11 +45,12 @@ tape( 'main export is a function', function test( t ) { tape( 'the function returns an array of errors to a provided callback if one or more `repl.txt` files are invalid', function test( t ) { lint( [ invalid ], clbk ); - function clbk( error, errs ) { + function clbk( error, results ) { if ( error ) { t.ok( false, error.message ); } else { - t.strictEqual( isObjectArray( errs ), true, 'returns an array of errors' ); + t.strictEqual( isObject( results ), true, 'returns expected value' ); + t.strictEqual( isObjectArray( results.errors ), true, 'returns expected value' ); } t.end(); } @@ -57,11 +59,11 @@ tape( 'the function returns an array of errors to a provided callback if one or tape( 'the function successfully lints valid `repl.txt` files', function test( t ) { lint( [ valid, valid ], clbk ); - function clbk( error, errs ) { + function clbk( error, results ) { if ( error ) { t.ok( false, error.message ); } else { - t.strictEqual( errs, null, 'returns `null`' ); + t.strictEqual( results, null, 'returns expected value' ); } t.end(); } diff --git a/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.sync.js b/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.sync.js index 368c2819e10a..333cce9c51e8 100644 --- a/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.sync.js +++ b/lib/node_modules/@stdlib/_tools/lint/repl-txt/test/test.sync.js @@ -20,7 +20,6 @@ // MODULES // -var resolve = require( 'path' ).resolve; var join = require( 'path' ).join; var tape = require( 'tape' ); var proxyquire = require( 'proxyquire' ); @@ -30,7 +29,7 @@ var lint = require( './../lib/sync.js' ); // VARIABLES // -var exampleDir = resolve( __dirname, '..', '..', '..', '..', 'symbol' ); +var valid = join( __dirname, 'fixtures', 'docs', 'valid.repl.txt' ); var invalid = join( __dirname, 'fixtures', 'docs', 'invalid.repl.txt' ); @@ -55,7 +54,7 @@ tape( 'the function throws an error if provided an invalid option', function tes tape( 'the function returns an array of lint errors if one or more files fail lint tests', function test( t ) { var lint; - var errs; + var res; lint = proxyquire( './../lib/sync.js', { 'glob': { @@ -63,8 +62,8 @@ tape( 'the function returns an array of lint errors if one or more files fail li } }); - errs = lint(); - t.strictEqual( isObjectArray( errs ), true, 'returns lint errors' ); + res = lint(); + t.strictEqual( isObjectArray( res.errors ), true, 'returns expected value' ); t.end(); function glob() { @@ -73,22 +72,28 @@ tape( 'the function returns an array of lint errors if one or more files fail li }); tape( 'the function returns `null` if all `repl.txt` files are valid', function test( t ) { - var opts; - var err; + var lint; + var res; - opts = { - 'dir': exampleDir - }; - err = lint( opts ); + lint = proxyquire( './../lib/sync.js', { + 'glob': { + 'sync': glob + } + }); - t.strictEqual( err, null, 'returns `null`' ); + res = lint(); + t.strictEqual( res, null, 'returns expected value' ); t.end(); + + function glob() { + return [ valid, valid ]; + } }); tape( 'the function returns `null` if unable to resolve any `repl.txt` files', function test( t ) { var lint; - var errs; + var res; lint = proxyquire( './../lib/sync.js', { 'glob': { @@ -96,8 +101,8 @@ tape( 'the function returns `null` if unable to resolve any `repl.txt` files', f } }); - errs = lint(); - t.strictEqual( errs, null, 'returns expected value' ); + res = lint(); + t.strictEqual( res, null, 'returns expected value' ); t.end(); function glob() { diff --git a/lib/node_modules/@stdlib/_tools/package-json/schema/examples/index.js b/lib/node_modules/@stdlib/_tools/package-json/schema/examples/index.js index f80bfa9f0ddb..59739085974c 100644 --- a/lib/node_modules/@stdlib/_tools/package-json/schema/examples/index.js +++ b/lib/node_modules/@stdlib/_tools/package-json/schema/examples/index.js @@ -20,8 +20,8 @@ var Ajv = require( 'ajv' ); var schema = require( './../lib' ); - var pkg = require( './../package.json' ); + var ajv = new Ajv(); var bool = ajv.validate( schema(), pkg ); diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/parse/lib/extract_signature.js b/lib/node_modules/@stdlib/_tools/repl-txt/parse/lib/extract_signature.js index d8ddc5384a4d..8f15daaa8187 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/parse/lib/extract_signature.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/parse/lib/extract_signature.js @@ -48,14 +48,6 @@ function extractSignature( str ) { for ( i = 0; i < str.length; i++ ) { ch = str.charAt( i ); switch ( state ) { - default: - case 'name': - if ( ch === '(' ) { - state = 'params'; - } else { - name += ch; - } - break; case 'params': if ( ch === ')' ) { if ( param && param.name !== '' ) { @@ -89,9 +81,17 @@ function extractSignature( str ) { }; } } + break; + case 'name': + default: + if ( ch === '(' ) { + state = 'params'; + } else { + name += ch; + } + break; } } - return { 'name': name, 'parameters': params, diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/doctest/lib/main.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/doctest/lib/main.js index 64b64e6151ee..d1af26399e07 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/doctest/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/doctest/lib/main.js @@ -23,39 +23,17 @@ var vm = require( 'vm' ); var dirname = require( 'path' ).dirname; var replace = require( '@stdlib/string/replace' ); -var namespace = require( '@stdlib/namespace' ); +var pkg2alias = require( '@stdlib/namespace/pkg2alias' ); var hasOwnProp = require( '@stdlib/assert/has-own-property' ); +var tryRequire = require( '@stdlib/utils/try-require' ); var compareValues = require( '@stdlib/_tools/doctest/compare-values' ); +var format = require( '@stdlib/string/format' ); // VARIABLES // var RE_EXTERNAL_ALIAS = /{{alias:([\s\S]+?)}}/g; -var RE_ASSIGNMENT = /(?:var|let|const)? ?([a-zA-Z0-9]*) ?=/; -var NAMESPACE = namespace(); - - -// FUNCTIONS // - -/** -* Returns an alias for a given package name. -* -* @private -* @param {string} pkg - package name -* @returns {(string|null)} alias name or null -*/ -function pkg2alias( pkg ) { - var alias; - var i; - - for ( i = 0; i < NAMESPACE.length; i++ ) { - if ( pkg === NAMESPACE[ i ].path ) { - alias = NAMESPACE[ i ].alias; - return alias; - } - } - return null; -} +var RE_ASSIGNMENT = /(?:var|let|const)? ?([a-zA-Z0-9]*) *=/; // MAIN // @@ -142,8 +120,12 @@ function main( context ) { } } catch ( err ) { if ( current.output !== '' ) { - context.report( 'Received an unexpected error when running example `'+code+'`: ' + err.message, section ); + // If the error was due to an unknown package identifier, strip the `require` stacktrace: + msg = replace( err.message, /\nRequire stack:[\s\S]+/, '' ); + msg = format( 'Received an unexpected error when running example `%s`: %s', code, msg ); + context.report( msg, section ); } + break; } } for ( i = 0; i < expected.length; i++ ) { @@ -168,10 +150,23 @@ function main( context ) { var alias; var key; var len; + var err; var o; var i; alias = pkg2alias( pkg ); + if ( alias === null ) { + // Attempt to `require` the package, thus confirming that the package actually exists: + err = tryRequire( pkg ); + + // If an error was returned, we were unable to import the package... + if ( err instanceof Error ) { + // Return a string which will raise an exception: + return format( 'require(\'%s\')', pkg ); + } + // If an alias does not exist in the global namespace, dynamically `require` a package so that the desired expression can be executed: + return format( '(require(\'%s\'))', pkg ); + } alias = alias.split( '.' ); len = alias.length; diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/interface-spacing/lib/main.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/interface-spacing/lib/main.js index c9c275518b0c..45e13d427645 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/interface-spacing/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/interface-spacing/lib/main.js @@ -18,6 +18,11 @@ 'use strict'; +// MODULES // + +var format = require( '@stdlib/string/format' ); + + // VARIABLES // var DEFAULT_SPACING = 2; @@ -52,7 +57,7 @@ function main( context ) { elem = interfaces[ i ]; emptyLines = elem.start - end - 1; if ( emptyLines !== spacing ) { - context.report( 'Interface documentation sections must be separated by `' + spacing + '` empty lines. Encountered: `'+ emptyLines+'`.', interfaces[ i ] ); + context.report( format( 'Interface documentation sections must be separated by `%s` empty lines. Encountered: `%s`.', spacing, emptyLines ), interfaces[ i ] ); } end = elem.end; } diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/line-length/lib/main.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/line-length/lib/main.js index e5a3a7cb3a0d..95d955207380 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/line-length/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/line-length/lib/main.js @@ -22,13 +22,14 @@ var replace = require( '@stdlib/string/replace' ); var namespace = require( '@stdlib/namespace' ); +var format = require( '@stdlib/string/format' ); // VARIABLES // var NAMESPACE = namespace(); var MAX_LINE_LENGTH = 80; -var RE_OUTSIDE_ALIAS = /{{alias:([\s\S]+?)}}/g; +var RE_EXTERNAL_ALIAS = /{{alias:([\s\S]+?)}}/g; // FUNCTIONS // @@ -92,11 +93,11 @@ function main( context ) { lines = ast.raw.split( '\n' ); for ( i = 0; i < lines.length; i++ ) { line = lines[ i ]; - line = replace( line, RE_OUTSIDE_ALIAS, substituteAlias ); + line = replace( line, RE_EXTERNAL_ALIAS, substituteAlias ); if ( line.length > maxLength ) { - context.report( 'Lines must not exceed '+maxLength+' characters', { - 'start': i, - 'end': i + context.report( format( 'Lines must not exceed %d characters', maxLength ), { + 'start': ast.start + i, + 'end': ast.start + i }); } } diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/lib/index.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/lib/index.js index fca0b06fe4c7..c8acca786ea7 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/lib/index.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/lib/index.js @@ -19,7 +19,7 @@ 'use strict'; /** -* Lint rule to enforce that packages in outside aliases are resolvable. +* Lint rule to enforce that aliased packages are resolvable. * * @module @stdlib/_tools/repl-txt/rules/resolvable-aliases * diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/lib/main.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/lib/main.js index cfcf108b33fb..2240b3ee3967 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/lib/main.js @@ -20,14 +20,14 @@ // MODULES // -var namespace = require( '@stdlib/namespace' ); +var pkg2alias = require( '@stdlib/namespace/pkg2alias' ); var isNull = require( '@stdlib/assert/is-null' ); +var format = require( '@stdlib/string/format' ); // VARIABLES // -var NAMESPACE = namespace(); -var RE_OUTSIDE_ALIAS = /{{alias:([\s\S]+?)}}/g; +var RE_EXTERNAL_ALIAS = /{{alias:([\s\S]+?)}}/g; var RE_NEWLINE = /\r?\n/g; @@ -41,39 +41,21 @@ var RE_NEWLINE = /\r?\n/g; * @returns {PositiveInteger} number of lines */ function countLines( str ) { - return ( str.match( RE_NEWLINE ) || '' ).length + 1; -} - -/** -* Returns the REPL alias for a given package. -* -* @private -* @param {string} pkg - package path -* @returns {(string|null)} package alias -*/ -function pkg2alias( pkg ) { - var i; - - for ( i = 0; i < NAMESPACE.length; i++ ) { - if ( pkg === NAMESPACE[ i ].path ) { - return NAMESPACE[ i ].alias; - } - } - return null; + return ( str.match( RE_NEWLINE ) || '' ).length; } // MAIN // /** -* Rule for enforcing that packages in outside aliases are resolvable. +* Rule for enforcing that aliased packages are resolvable. * * @param {Context} context - lint context * @returns {Object} validators */ function main( context ) { /** - * Checks that all packages in aliases are resolvable. + * Checks that all aliased packages are resolvable. * * @private * @param {Object} ast - full AST @@ -85,19 +67,20 @@ function main( context ) { var line; var pos; - match = RE_OUTSIDE_ALIAS.exec( ast.raw ); + match = RE_EXTERNAL_ALIAS.exec( ast.raw ); while ( !isNull( match ) ) { alias = pkg2alias( match[ 1 ] ); if ( !alias ) { - substr = ast.raw.substring( 0, RE_OUTSIDE_ALIAS.lastIndex ); + substr = ast.raw.substring( 0, RE_EXTERNAL_ALIAS.lastIndex ); line = countLines( substr ); pos = { - 'start': line, - 'end': line + 'start': ast.start + line, + 'end': ast.start + line }; - context.report( match[ 1 ]+' does not map to any REPL alias', pos ); + context.report( format( '%s does not have an alias in the global REPL namespace', match[ 1 ] ), pos ); } - match = RE_OUTSIDE_ALIAS.exec( ast.raw ); + // Resolve the next match: + match = RE_EXTERNAL_ALIAS.exec( ast.raw ); } } return { diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/package.json b/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/package.json index d4d0d138cd9d..a24a07721cd4 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/package.json +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/resolvable-aliases/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/_tools/repl-txt/rules/resolvable-aliases", "version": "0.0.0", - "description": "Lint rule to enforce that packages in outside aliases are resolvable.", + "description": "Lint rule to enforce that aliased packages are resolvable.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/section-heading-style/lib/main.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/section-heading-style/lib/main.js index 241b25f1a2f0..1aac873ee69b 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/section-heading-style/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/section-heading-style/lib/main.js @@ -21,6 +21,7 @@ // MODULES // var isCapitalized = require( '@stdlib/assert/is-capitalized' ); +var format = require( '@stdlib/string/format' ); // VARIABLES // @@ -59,10 +60,10 @@ function main( context ) { */ function sectionStyle( section ) { if ( !isCapitalized( section.title ) ) { - context.report( 'Section title "'+section.title+'" should be capitalized', section ); + context.report( format( 'Section title "%s" should be capitalized', section.title ), section ); } if ( countHyphens( section.rawTitle ) !== section.title.length ) { - context.report( 'Number of hyphens in the line following "'+section.title+'" must match the length of the title', section ); + context.report( format( 'Number of hyphens in the line following "%s" must match the length of the title', section.title ), section ); } } return { diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/section-order/lib/main.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/section-order/lib/main.js index 75fc815a5519..19bedf951130 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/section-order/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/section-order/lib/main.js @@ -21,6 +21,7 @@ // MODULES // var indexOf = require( '@stdlib/utils/index-of' ); +var format = require( '@stdlib/string/format' ); // VARIABLES // @@ -61,7 +62,7 @@ function main( context ) { section = sections[ i ]; idx = indexOf( order, section.title ); if ( last !== void 0 && idx < last ) { - context.report( 'Sections have to be arranged in the following order: '+order.join( ', ' ), section ); + context.report( format( 'Sections have to be arranged in the following order: %s', order.join( ', ' ) ), section ); } last = idx; } diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/defaults.json b/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/defaults.json index bd35100545a1..968ace7a2abd 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/defaults.json +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/defaults.json @@ -7,6 +7,7 @@ "number", "integer", "string", + "symbol", "uinteger", "ndarray", "Array", @@ -16,28 +17,35 @@ "Boolean", "Buffer", "Complex", + "Complex32", "Complex64", "Complex128", + "ComplexLike", "Date", "Error", "Function", "Object", "ObjectLike", "Number", - "Plot", "RegExp", "SharedArrayBuffer", "String", "TypedArray", + "Complex32Array", + "Complex64Array", + "Complex128Array", + "Float16Array", "Float32Array", "Float64Array", "Int8Array", "Int16Array", "Int32Array", + "Int64Array", "Uint8ClampedArray", "Uint8Array", "Uint16Array", "Uint32Array", + "Uint64Array", "process", "Window" ] diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/edit_distance.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/edit_distance.js index b4b6dd29e98d..845e2c7a0561 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/edit_distance.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/edit_distance.js @@ -20,8 +20,8 @@ // MODULES // -var ndarray = require( '@stdlib/ndarray/array' ); -var min = require( '@stdlib/math/base/special/min' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var minn = require( '@stdlib/math/base/special/minn' ); // MAIN // @@ -31,7 +31,7 @@ var min = require( '@stdlib/math/base/special/min' ); * * ## Notes * -* - the edit distance between two strings is the number of insertions, deletions, character substitutions, as well as transpositions of adjacent characters to convert one of the strings into the other. +* - The edit distance between two strings is the number of insertions, deletions, character substitutions, as well as transpositions of adjacent characters to convert one of the strings into the other. * * [damerau-levenshtein]: https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance * @@ -54,9 +54,7 @@ function editDistance( word1, word2 ) { } m = word1.length; n = word2.length; - d = ndarray({ - 'shape': [ m+1, n+1 ] - }); + d = zeros( [ m+1, n+1 ] ); for ( i = 0; i <= m; i++ ) { d.set( i, 0, i ); } @@ -70,14 +68,14 @@ function editDistance( word1, word2 ) { } else { cost = 1; } - v = min( d.get(i-1, j)+1, d.get(i, j-1)+1, d.get(i-1, j-1)+cost ); + v = minn( d.get(i-1, j)+1, d.get(i, j-1)+1, d.get(i-1, j-1)+cost ); d.set( i, j, v ); if ( i > 1 && j > 1 && word1[ i-1 ] === word2[ j-2 ] && word1[ i-2 ] === word2[ j-1 ] ) { - v = min( d.get( i, j ), d.get( i-2, j-2 ) + cost ); + v = minn( d.get( i, j ), d.get( i-2, j-2 ) + cost ); d.set( i, j, v ); } } diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/main.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/main.js index 703a30a6bd2f..2091ba1f9dac 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/tag-typedef-typos/lib/main.js @@ -24,6 +24,7 @@ var hasOwnProp = require( '@stdlib/assert/has-own-property' ); var indexOf = require( '@stdlib/utils/index-of' ); var copy = require( '@stdlib/utils/copy' ); var PINF = require( '@stdlib/constants/float64/pinf' ); +var format = require( '@stdlib/string/format' ); var editDistance = require( './edit_distance.js' ); var DEFAULTS = require( './defaults.json' ); @@ -75,7 +76,7 @@ function main( context ) { if ( type.name && indexOf( opts.types, type.name ) === -1 ) { correction = correctTypedef( type.name ); if ( correction ) { - context.report( '"'+type.name+'" type definition should be "'+correction+'"', section ); + context.report( format( '"%s" type definition should be "%s"', type.name, correction ), section ); } } } @@ -101,7 +102,7 @@ function main( context ) { if ( elem.name ) { correction = correctTypedef( elem.name ); if ( correction ) { - context.report( '"'+elem.name+'" type definition should be "'+correction+'"', section ); + context.report( format( '"%s" type definition should be "%s"', elem.name, correction ), section ); } } } @@ -117,11 +118,11 @@ function main( context ) { function checkTypedObject( val, section ) { var correction = correctTypedef( val.name ); if ( correction ) { - context.report( '"'+val.name+'" type definition should be "'+correction+'"', section ); + context.report( format( '"%s" type definition should be "%s"', val.name, correction ), section ); } correction = correctTypedef( val.of ); if ( correction ) { - context.report( '"'+val.of+'" type definition should be "'+correction+'"', section ); + context.report( format( '"%s" type definition should be "%s"', val.of, correction ), section ); } } diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/rules/whitelisted-sections/lib/main.js b/lib/node_modules/@stdlib/_tools/repl-txt/rules/whitelisted-sections/lib/main.js index e29fa5cb6df7..37d491f6a11f 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/rules/whitelisted-sections/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/rules/whitelisted-sections/lib/main.js @@ -21,6 +21,7 @@ // MODULES // var indexOf = require( '@stdlib/utils/index-of' ); +var format = require( '@stdlib/string/format' ); // VARIABLES // @@ -54,7 +55,7 @@ function main( context ) { idx = indexOf( SECTIONS, section.title ); if ( idx === -1 ) { - context.report( 'Only use one of the following section header titles: '+SECTIONS.join( '\n' ), section ); + context.report( format( 'Only use one of the following section header titles: %s', SECTIONS.join( '\n' ) ), section ); } } return { diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/validate/README.md b/lib/node_modules/@stdlib/_tools/repl-txt/validate/README.md index a5d9540a46ca..1c4b26444d47 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/validate/README.md +++ b/lib/node_modules/@stdlib/_tools/repl-txt/validate/README.md @@ -42,7 +42,7 @@ var isValid = require( '@stdlib/_tools/repl-txt/validate' ); #### isValid( repl ) -Validates a `repl.txt` file. `errors` and `warnings` arrays are attached to the function after each invocation, which contain the errors and warnings encountered when linting the `repl.txt` file, respectively. +Validates a `repl.txt` file. ```javascript var repl = [ @@ -73,6 +73,8 @@ var warn = isValid.warnings; // returns || null ``` +After each invocation, `errors` and `warnings` arrays are attached to the function. These arrays contain the errors and warnings encountered when linting the `repl.txt` file. + @@ -81,7 +83,7 @@ var warn = isValid.warnings;
-- The function looks for a `.rtlintrc` configuration file in the current working directory or its parent directories; if no such file is found, the function throws an error. +- The function looks for a `.rtlintrc` configuration file in the current working directory or its parent directories; if no such file is found, the function raises an exception.
@@ -93,6 +95,8 @@ var warn = isValid.warnings; ## Examples + + ```javascript @@ -147,7 +151,9 @@ Options: ### Notes -- If successful, the program prints `true` to `stdout`. If not successful, the program prints validation errors to `stderr`. +- If successful, the program prints `true` to `stdout`. +- If not successful, the program prints validation errors to `stderr`. +- The program prints validation warnings to `stderr`. diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/validate/bin/cli b/lib/node_modules/@stdlib/_tools/repl-txt/validate/bin/cli index 026e3dc74a05..75d8de84cff3 100755 --- a/lib/node_modules/@stdlib/_tools/repl-txt/validate/bin/cli +++ b/lib/node_modules/@stdlib/_tools/repl-txt/validate/bin/cli @@ -94,6 +94,9 @@ function main() { */ function next() { var bool = validate( repl ); + if ( validate.warnings ) { + console.warn( validate.warnings ); // eslint-disable-line no-console + } if ( bool ) { console.log( true ); // eslint-disable-line no-console } else { diff --git a/lib/node_modules/@stdlib/_tools/repl-txt/validate/test/test.js b/lib/node_modules/@stdlib/_tools/repl-txt/validate/test/test.js index 0c026dfaa6be..f6646a3014be 100644 --- a/lib/node_modules/@stdlib/_tools/repl-txt/validate/test/test.js +++ b/lib/node_modules/@stdlib/_tools/repl-txt/validate/test/test.js @@ -16,6 +16,8 @@ * limitations under the License. */ +/* eslint-disable n/no-sync */ + 'use strict'; // MODULES // diff --git a/lib/node_modules/@stdlib/array/base/assert/contains/package.json b/lib/node_modules/@stdlib/array/base/assert/contains/package.json index 62e2812c15ac..68420e99ac12 100644 --- a/lib/node_modules/@stdlib/array/base/assert/contains/package.json +++ b/lib/node_modules/@stdlib/array/base/assert/contains/package.json @@ -56,8 +56,10 @@ "structure", "array", "generic", + "test", "contains", "search", - "assert" + "assert", + "validate" ] } diff --git a/lib/node_modules/@stdlib/array/base/assert/is-sorted-ascending/package.json b/lib/node_modules/@stdlib/array/base/assert/is-sorted-ascending/package.json index 7fe5f635babb..2e6045938eea 100644 --- a/lib/node_modules/@stdlib/array/base/assert/is-sorted-ascending/package.json +++ b/lib/node_modules/@stdlib/array/base/assert/is-sorted-ascending/package.json @@ -56,9 +56,11 @@ "structure", "array", "generic", + "test", "sorted", "ascending", "ordered", - "assert" + "assert", + "validate" ] } diff --git a/lib/node_modules/@stdlib/array/docs/types/index.d.ts b/lib/node_modules/@stdlib/array/docs/types/index.d.ts index bcefafd0448e..62c83525bdf3 100644 --- a/lib/node_modules/@stdlib/array/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/array/docs/types/index.d.ts @@ -2133,6 +2133,7 @@ interface Namespace { * * - `float64`: double-precision floating-point numbers (IEEE 754) * - `float32`: single-precision floating-point numbers (IEEE 754) + * - `float16`: half-precision floating-point numbers (IEEE 754) * - `complex128`: double-precision complex floating-point numbers * - `complex64`: single-precision complex floating-point numbers * - `int32`: 32-bit two's complement signed integers diff --git a/lib/node_modules/@stdlib/array/float16/docs/types/index.d.ts b/lib/node_modules/@stdlib/array/float16/docs/types/index.d.ts index ff6c0d6fd1b3..e75c82558021 100644 --- a/lib/node_modules/@stdlib/array/float16/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/array/float16/docs/types/index.d.ts @@ -23,7 +23,7 @@ /// import { Iterator as Iter, IterableIterator, TypedIterator } from '@stdlib/types/iter'; -import { ArrayLike } from '@stdlib/types/array'; +import { ArrayLike, Float16Array as Float16ArrayInterface } from '@stdlib/types/array'; import ArrayBuffer = require( '@stdlib/array/buffer' ); // Define a union type representing both iterable and non-iterable iterators: @@ -272,7 +272,7 @@ type CompareFcn = ( a: number, b: number ) => number; /** * Class for creating a half-precision floating-point number array. */ -declare class Float16Array { +declare class Float16Array implements Float16ArrayInterface { /** * Half-precision floating-point number array constructor. * @@ -340,6 +340,11 @@ declare class Float16Array { */ constructor( arg?: number | ArrayLike | ArrayBuffer | Iterable, byteOffset?: number, length?: number ); + /** + * Indexed properties. + */ + [ index: number ]: number; + /** * Returns an array element located at integer position (index) `i`, with support for both nonnegative and negative integer indices. * diff --git a/lib/node_modules/@stdlib/array/ones-like/README.md b/lib/node_modules/@stdlib/array/ones-like/README.md index f04e3bc6548c..9407436058dc 100644 --- a/lib/node_modules/@stdlib/array/ones-like/README.md +++ b/lib/node_modules/@stdlib/array/ones-like/README.md @@ -108,7 +108,7 @@ var onesLike = require( '@stdlib/array/ones-like' ); var x = zeros( 4, 'complex128' ); // Get a list of array data types: -var dt = dtypes(); +var dt = dtypes( 'numeric_and_generic' ); // Generate filled arrays... var y; diff --git a/lib/node_modules/@stdlib/array/ones-like/examples/index.js b/lib/node_modules/@stdlib/array/ones-like/examples/index.js index 91a4e5f9be35..608301b4f1a4 100644 --- a/lib/node_modules/@stdlib/array/ones-like/examples/index.js +++ b/lib/node_modules/@stdlib/array/ones-like/examples/index.js @@ -26,7 +26,7 @@ var onesLike = require( './../lib' ); var x = zeros( 4, 'complex128' ); // Get a list of array data types: -var dt = dtypes(); +var dt = dtypes( 'numeric_and_generic' ); // Generate filled arrays... var y; diff --git a/lib/node_modules/@stdlib/array/zero-to-like/README.md b/lib/node_modules/@stdlib/array/zero-to-like/README.md index 2a34888075c5..f902fd989f7a 100644 --- a/lib/node_modules/@stdlib/array/zero-to-like/README.md +++ b/lib/node_modules/@stdlib/array/zero-to-like/README.md @@ -53,6 +53,7 @@ The function recognizes the following data types: - `float64`: double-precision floating-point numbers (IEEE 754) - `float32`: single-precision floating-point numbers (IEEE 754) +- `float16`: half-precision floating-point numbers (IEEE 754) - `complex128`: double-precision complex floating-point numbers - `complex64`: single-precision complex floating-point numbers - `int32`: 32-bit two's complement signed integers diff --git a/lib/node_modules/@stdlib/array/zero-to-like/benchmark/benchmark.js b/lib/node_modules/@stdlib/array/zero-to-like/benchmark/benchmark.js index fcdeb20f683d..d5992a57b7b0 100644 --- a/lib/node_modules/@stdlib/array/zero-to-like/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/array/zero-to-like/benchmark/benchmark.js @@ -97,6 +97,28 @@ bench( format( '%s:dtype=float32', pkg ), function benchmark( b ) { b.end(); }); +bench( format( '%s:dtype=float16', pkg ), function benchmark( b ) { + var arr; + var x; + var i; + + x = empty( 0, 'float16' ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = zeroToLike( x ); + if ( arr.length !== 0 ) { + b.fail( 'should have length 0' ); + } + } + b.toc(); + if ( !isTypedArrayLike( arr ) ) { + b.fail( 'should return a typed array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + bench( format( '%s:dtype=complex128', pkg ), function benchmark( b ) { var arr; var x; diff --git a/lib/node_modules/@stdlib/array/zero-to-like/benchmark/benchmark.length.float16.js b/lib/node_modules/@stdlib/array/zero-to-like/benchmark/benchmark.length.float16.js new file mode 100644 index 000000000000..85efdc3e62c6 --- /dev/null +++ b/lib/node_modules/@stdlib/array/zero-to-like/benchmark/benchmark.length.float16.js @@ -0,0 +1,96 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isTypedArray = require( '@stdlib/assert/is-typed-array' ); +var empty = require( '@stdlib/array/empty' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zeroToLike = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = empty( len, 'float16' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = zeroToLike( x ); + if ( arr.length !== len ) { + b.fail( 'unexpected length' ); + } + } + b.toc(); + if ( !isTypedArray( arr ) ) { + b.fail( 'should return a typed array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:dtype=float16,len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/zero-to-like/docs/repl.txt b/lib/node_modules/@stdlib/array/zero-to-like/docs/repl.txt index 6c86b632d725..50d5710857b0 100644 --- a/lib/node_modules/@stdlib/array/zero-to-like/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/zero-to-like/docs/repl.txt @@ -8,6 +8,7 @@ - float64: double-precision floating-point numbers (IEEE 754). - float32: single-precision floating-point numbers (IEEE 754). + - float16: half-precision floating-point numbers (IEEE 754). - complex128: double-precision complex floating-point numbers. - complex64: single-precision complex floating-point numbers. - int32: 32-bit two's complement signed integers. diff --git a/lib/node_modules/@stdlib/array/zero-to-like/docs/types/index.d.ts b/lib/node_modules/@stdlib/array/zero-to-like/docs/types/index.d.ts index 88f15b241ca5..3a267b3bd973 100644 --- a/lib/node_modules/@stdlib/array/zero-to-like/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/array/zero-to-like/docs/types/index.d.ts @@ -20,7 +20,7 @@ /// -import { Complex128Array, Complex64Array, AnyArray, NumericDataType } from '@stdlib/types/array'; +import { Complex128Array, Complex64Array, Float16Array, AnyArray, NumericDataType } from '@stdlib/types/array'; /** * Generates a linearly spaced numeric array whose elements increment by 1 starting from zero and having the same length as a provided input array. @@ -58,6 +58,24 @@ declare function zeroToLike( x: AnyArray, dtype: 'float64' ): Float64Array; */ declare function zeroToLike( x: AnyArray, dtype: 'float32' ): Float32Array; +/** +* Generates a linearly spaced numeric array whose elements increment by 1 starting from zero and having the same length as a provided input array. +* +* @param x - input array from which to derive the output array length +* @param dtype - data type +* @returns linearly spaced numeric array +* +* @example +* var zeros = require( '@stdlib/array/zeros' ); +* +* var x = zeros( 2, 'float64' ); +* // returns [ 0.0, 0.0 ] +* +* var y = zeroToLike( x, 'float16' ); +* // returns [ 0.0, 1.0 ] +*/ +declare function zeroToLike( x: AnyArray, dtype: 'float16' ): Float16Array; + /** * Generates a linearly spaced numeric array whose elements increment by 1 starting from zero and having the same length as a provided input array. * @@ -282,6 +300,24 @@ declare function zeroToLike( x: Float64Array, dtype?: NumericDataType ): Float64 */ declare function zeroToLike( x: Float32Array, dtype?: NumericDataType ): Float32Array; +/** +* Generates a linearly spaced numeric array whose elements increment by 1 starting from zero and having the same length and data type as a provided input array. +* +* @param x - input array from which to derive the output array length +* @param dtype - data type +* @returns linearly spaced numeric array +* +* @example +* var zeros = require( '@stdlib/array/zeros' ); +* +* var x = zeros( 2, 'float16' ); +* // returns [ 0.0, 0.0 ] +* +* var y = zeroToLike( x ); +* // returns [ 0.0, 1.0 ] +*/ +declare function zeroToLike( x: Float16Array, dtype?: NumericDataType ): Float16Array; + /** * Generates a linearly spaced numeric array whose elements increment by 1 starting from zero and having the same length and data type as a provided input array. * diff --git a/lib/node_modules/@stdlib/array/zero-to-like/docs/types/test.ts b/lib/node_modules/@stdlib/array/zero-to-like/docs/types/test.ts index f79d23af271f..0778c615e195 100644 --- a/lib/node_modules/@stdlib/array/zero-to-like/docs/types/test.ts +++ b/lib/node_modules/@stdlib/array/zero-to-like/docs/types/test.ts @@ -18,6 +18,7 @@ import Complex128Array = require( '@stdlib/array/complex128' ); import Complex64Array = require( '@stdlib/array/complex64' ); +import Float16Array = require( '@stdlib/array/float16' ); import zeroToLike = require( './index' ); @@ -28,6 +29,7 @@ import zeroToLike = require( './index' ); zeroToLike( [ 0, 0 ] ); // $ExpectType number[] zeroToLike( new Float64Array( [ 0, 0 ] ) ); // $ExpectType Float64Array zeroToLike( new Float32Array( [ 0, 0 ] ) ); // $ExpectType Float32Array + zeroToLike( new Float16Array( [ 0, 0 ] ) ); // $ExpectType Float16ArrayFallback zeroToLike( new Complex128Array( [ 0, 0 ] ) ); // $ExpectType Complex128Array zeroToLike( new Complex64Array( [ 0, 0 ] ) ); // $ExpectType Complex64Array zeroToLike( new Int32Array( [ 0, 0 ] ) ); // $ExpectType Int32Array @@ -40,6 +42,7 @@ import zeroToLike = require( './index' ); zeroToLike( [ 0, 0 ], 'float64' ); // $ExpectType Float64Array zeroToLike( [ 0, 0 ], 'float32' ); // $ExpectType Float32Array + zeroToLike( [ 0, 0 ], 'float16' ); // $ExpectType Float16ArrayFallback zeroToLike( [ 0, 0 ], 'complex128' ); // $ExpectType Complex128Array zeroToLike( [ 0, 0 ], 'complex64' ); // $ExpectType Complex64Array zeroToLike( [ 0, 0 ], 'int32' ); // $ExpectType Int32Array diff --git a/lib/node_modules/@stdlib/array/zero-to-like/package.json b/lib/node_modules/@stdlib/array/zero-to-like/package.json index ab0d2129a5a2..c9fd7695e680 100644 --- a/lib/node_modules/@stdlib/array/zero-to-like/package.json +++ b/lib/node_modules/@stdlib/array/zero-to-like/package.json @@ -63,6 +63,7 @@ "matrix", "float64array", "float32array", + "float16array", "int32array", "uint32array", "int16array", @@ -83,6 +84,8 @@ "single", "float", "single-precision", + "half", + "half-precision", "float32", "ieee754", "integer", diff --git a/lib/node_modules/@stdlib/array/zero-to-like/test/test.js b/lib/node_modules/@stdlib/array/zero-to-like/test/test.js index e755a8611999..9b89c0c5fc8a 100644 --- a/lib/node_modules/@stdlib/array/zero-to-like/test/test.js +++ b/lib/node_modules/@stdlib/array/zero-to-like/test/test.js @@ -23,6 +23,7 @@ var tape = require( 'tape' ); var Float64Array = require( '@stdlib/array/float64' ); var Float32Array = require( '@stdlib/array/float32' ); +var Float16Array = require( '@stdlib/array/float16' ); var Int32Array = require( '@stdlib/array/int32' ); var Uint32Array = require( '@stdlib/array/uint32' ); var Int16Array = require( '@stdlib/array/int16' ); @@ -203,6 +204,38 @@ tape( 'the function returns a filled array (dtype=float32)', function test( t ) t.end(); }); +tape( 'the function returns a filled array (float16)', function test( t ) { + var expected; + var arr; + var x; + + x = new Float16Array( 5 ); + expected = new Float16Array( [ 0.0, 1.0, 2.0, 3.0, 4.0 ] ); + + arr = zeroToLike( x ); + t.strictEqual( instanceOf( arr, Float16Array ), true, 'returns expected value' ); + t.strictEqual( arr.length, expected.length, 'returns expected value' ); + t.deepEqual( arr, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a filled array (dtype=float16)', function test( t ) { + var expected; + var arr; + var x; + + x = new Float64Array( 5 ); + expected = new Float16Array( [ 0.0, 1.0, 2.0, 3.0, 4.0 ] ); + + arr = zeroToLike( x, 'float16' ); + t.strictEqual( instanceOf( arr, Float16Array ), true, 'returns expected value' ); + t.strictEqual( arr.length, expected.length, 'returns expected value' ); + t.deepEqual( arr, expected, 'returns expected value' ); + + t.end(); +}); + tape( 'the function returns a filled array (complex128)', function test( t ) { var expected; var arr; diff --git a/lib/node_modules/@stdlib/array/zeros-like/README.md b/lib/node_modules/@stdlib/array/zeros-like/README.md index 6aaa36823d30..ae70339f2f77 100644 --- a/lib/node_modules/@stdlib/array/zeros-like/README.md +++ b/lib/node_modules/@stdlib/array/zeros-like/README.md @@ -55,6 +55,7 @@ The function supports the following data types: - `float64`: double-precision floating-point numbers (IEEE 754) - `float32`: single-precision floating-point numbers (IEEE 754) +- `float16`: half-precision floating-point numbers (IEEE 754) - `complex128`: double-precision complex floating-point numbers - `complex64`: single-precision complex floating-point numbers - `int32`: 32-bit two's complement signed integers @@ -104,7 +105,7 @@ var zerosLike = require( '@stdlib/array/zeros-like' ); var x = zeros( 4, 'complex128' ); // Get a list of array data types: -var dt = dtypes(); +var dt = dtypes( 'numeric' ); // Generate additional zero-filled arrays... var y; diff --git a/lib/node_modules/@stdlib/array/zeros-like/benchmark/benchmark.js b/lib/node_modules/@stdlib/array/zeros-like/benchmark/benchmark.js index 3acb1308fb3a..a21da304ef69 100644 --- a/lib/node_modules/@stdlib/array/zeros-like/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/array/zeros-like/benchmark/benchmark.js @@ -97,6 +97,28 @@ bench( format( '%s:dtype=float32', pkg ), function benchmark( b ) { b.end(); }); +bench( format( '%s:dtype=float16', pkg ), function benchmark( b ) { + var arr; + var x; + var i; + + x = empty( 0, 'float16' ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = zerosLike( x ); + if ( arr.length !== 0 ) { + b.fail( 'should have length 0' ); + } + } + b.toc(); + if ( !isTypedArrayLike( arr ) ) { + b.fail( 'should return a typed array' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + bench( format( '%s:dtype=complex128', pkg ), function benchmark( b ) { var arr; var x; diff --git a/lib/node_modules/@stdlib/array/zeros-like/benchmark/benchmark.length.float16.js b/lib/node_modules/@stdlib/array/zeros-like/benchmark/benchmark.length.float16.js new file mode 100644 index 000000000000..cffd1ce27f8e --- /dev/null +++ b/lib/node_modules/@stdlib/array/zeros-like/benchmark/benchmark.length.float16.js @@ -0,0 +1,96 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isTypedArray = require( '@stdlib/assert/is-typed-array' ); +var empty = require( '@stdlib/array/empty' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zerosLike = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = empty( len, 'float16' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var arr; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + arr = zerosLike( x ); + if ( arr.length !== len ) { + b.fail( 'unexpected length' ); + } + } + b.toc(); + if ( !isTypedArray( arr ) ) { + b.fail( 'should return a typed array' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:dtype=float16,len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/array/zeros-like/docs/repl.txt b/lib/node_modules/@stdlib/array/zeros-like/docs/repl.txt index 4bb0bc0d52b7..ec3d73af0db5 100644 --- a/lib/node_modules/@stdlib/array/zeros-like/docs/repl.txt +++ b/lib/node_modules/@stdlib/array/zeros-like/docs/repl.txt @@ -7,6 +7,7 @@ - float64: double-precision floating-point numbers (IEEE 754). - float32: single-precision floating-point numbers (IEEE 754). + - float16: half-precision floating-point numbers (IEEE 754). - complex128: double-precision complex floating-point numbers. - complex64: single-precision complex floating-point numbers. - int32: 32-bit two's complement signed integers. diff --git a/lib/node_modules/@stdlib/array/zeros-like/docs/types/index.d.ts b/lib/node_modules/@stdlib/array/zeros-like/docs/types/index.d.ts index dc82b05ba5d8..75d4f5946803 100644 --- a/lib/node_modules/@stdlib/array/zeros-like/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/array/zeros-like/docs/types/index.d.ts @@ -31,13 +31,13 @@ import { NumericAndGenericDataTypeMap, AnyArray, TypedArray, ComplexTypedArray } * @example * var zeros = require( '@stdlib/array/zeros' ); * -* var x = zeros( 2, 'generic' ); -* // returns [ 0, 0 ] +* var x = zeros( 2, 'float64' ); +* // returns [ 0.0, 0.0 ] * * var y = zerosLike( x ); -* // returns [ 0, 0 ] +* // returns [ 0.0, 0.0 ] */ -declare function zerosLike( x: Array ): Array; +declare function zerosLike( x: T ): T; /** * Creates a zero-filled array having the same length and data type as a provided input array. @@ -48,13 +48,13 @@ declare function zerosLike( x: Array ): Array; * @example * var zeros = require( '@stdlib/array/zeros' ); * -* var x = zeros( 2, 'float64' ); -* // returns [ 0.0, 0.0 ] +* var x = zeros( 2, 'generic' ); +* // returns [ 0, 0 ] * * var y = zerosLike( x ); -* // returns [ 0.0, 0.0 ] +* // returns [ 0, 0 ] */ -declare function zerosLike( x: T ): T; +declare function zerosLike( x: Array ): Array; /** * Creates a zero-filled array having the same length as a provided input array. @@ -63,6 +63,7 @@ declare function zerosLike( x: T ): T; * * - `float64`: double-precision floating-point numbers (IEEE 754) * - `float32`: single-precision floating-point numbers (IEEE 754) +* - `float16`: half-precision floating-point numbers (IEEE 754) * - `complex128`: double-precision complex floating-point numbers * - `complex64`: single-precision complex floating-point numbers * - `int32`: 32-bit two's complement signed integers diff --git a/lib/node_modules/@stdlib/array/zeros-like/docs/types/test.ts b/lib/node_modules/@stdlib/array/zeros-like/docs/types/test.ts index 51064dda33e2..d3c9f636fad9 100644 --- a/lib/node_modules/@stdlib/array/zeros-like/docs/types/test.ts +++ b/lib/node_modules/@stdlib/array/zeros-like/docs/types/test.ts @@ -18,6 +18,7 @@ import Complex128Array = require( '@stdlib/array/complex128' ); import Complex64Array = require( '@stdlib/array/complex64' ); +import Float16Array = require( '@stdlib/array/float16' ); import zerosLike = require( './index' ); @@ -28,6 +29,7 @@ import zerosLike = require( './index' ); zerosLike( [ 0, 0 ] ); // $ExpectType number[] zerosLike( new Float64Array( [ 0, 0 ] ) ); // $ExpectType Float64Array zerosLike( new Float32Array( [ 0, 0 ] ) ); // $ExpectType Float32Array + zerosLike( new Float16Array( [ 0, 0 ] ) ); // $ExpectType Float16ArrayFallback zerosLike( new Complex128Array( [ 0, 0 ] ) ); // $ExpectType Complex128Array zerosLike( new Complex64Array( [ 0, 0 ] ) ); // $ExpectType Complex64Array zerosLike( new Int32Array( [ 0, 0 ] ) ); // $ExpectType Int32Array @@ -41,6 +43,7 @@ import zerosLike = require( './index' ); zerosLike( [ 0, 0 ], 'float64' ); // $ExpectType Float64Array zerosLike( [ 0, 0 ], 'float32' ); // $ExpectType Float32Array + zerosLike( [ 0, 0 ], 'float16' ); // $ExpectType Float16ArrayFallback zerosLike( [ 0, 0 ], 'complex128' ); // $ExpectType Complex128Array zerosLike( [ 0, 0 ], 'complex64' ); // $ExpectType Complex64Array zerosLike( [ 0, 0 ], 'int32' ); // $ExpectType Int32Array diff --git a/lib/node_modules/@stdlib/array/zeros-like/examples/index.js b/lib/node_modules/@stdlib/array/zeros-like/examples/index.js index e7e586956bc4..efe558239b50 100644 --- a/lib/node_modules/@stdlib/array/zeros-like/examples/index.js +++ b/lib/node_modules/@stdlib/array/zeros-like/examples/index.js @@ -26,7 +26,7 @@ var zerosLike = require( './../lib' ); var x = zeros( 4, 'complex128' ); // Get a list of array data types: -var dt = dtypes(); +var dt = dtypes( 'numeric' ); // Generate additional zero-filled arrays... var y; diff --git a/lib/node_modules/@stdlib/array/zeros-like/package.json b/lib/node_modules/@stdlib/array/zeros-like/package.json index e1bf6c35befd..2d4f6f6a0ce1 100644 --- a/lib/node_modules/@stdlib/array/zeros-like/package.json +++ b/lib/node_modules/@stdlib/array/zeros-like/package.json @@ -63,6 +63,7 @@ "matrix", "float64array", "float32array", + "float16array", "int32array", "uint32array", "int16array", @@ -84,6 +85,9 @@ "float", "single-precision", "float32", + "half", + "half-precision", + "float16", "ieee754", "integer", "int32", diff --git a/lib/node_modules/@stdlib/array/zeros-like/test/test.js b/lib/node_modules/@stdlib/array/zeros-like/test/test.js index 8587b9803551..676df125c652 100644 --- a/lib/node_modules/@stdlib/array/zeros-like/test/test.js +++ b/lib/node_modules/@stdlib/array/zeros-like/test/test.js @@ -23,6 +23,7 @@ var tape = require( 'tape' ); var Float64Array = require( '@stdlib/array/float64' ); var Float32Array = require( '@stdlib/array/float32' ); +var Float16Array = require( '@stdlib/array/float16' ); var Int32Array = require( '@stdlib/array/int32' ); var Uint32Array = require( '@stdlib/array/uint32' ); var Int16Array = require( '@stdlib/array/int16' ); @@ -203,6 +204,38 @@ tape( 'the function returns a zero-filled array (dtype=float32)', function test( t.end(); }); +tape( 'the function returns a zero-filled array (float16)', function test( t ) { + var expected; + var arr; + var x; + + x = new Float16Array( 5 ); + expected = new Float16Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + arr = zerosLike( x ); + t.strictEqual( instanceOf( arr, Float16Array ), true, 'returns expected value' ); + t.strictEqual( arr.length, expected.length, 'returns expected value' ); + t.deepEqual( arr, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a zero-filled array (dtype=float16)', function test( t ) { + var expected; + var arr; + var x; + + x = new Float64Array( 5 ); + expected = new Float16Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + arr = zerosLike( x, 'float16' ); + t.strictEqual( instanceOf( arr, Float16Array ), true, 'returns expected value' ); + t.strictEqual( arr.length, expected.length, 'returns expected value' ); + t.deepEqual( arr, expected, 'returns expected value' ); + + t.end(); +}); + tape( 'the function returns a zero-filled array (complex128)', function test( t ) { var expected; var arr; diff --git a/lib/node_modules/@stdlib/assert/README.md b/lib/node_modules/@stdlib/assert/README.md index c25480dc80d7..ab869ca4ee6f 100644 --- a/lib/node_modules/@stdlib/assert/README.md +++ b/lib/node_modules/@stdlib/assert/README.md @@ -458,6 +458,7 @@ The remaining namespace utilities are as follows: - [`isHexString( value )`][@stdlib/assert/is-hex-string]: test whether a string contains only hexadecimal digits. - [`isInfinite( value )`][@stdlib/assert/is-infinite]: test if a value is an infinite number. - [`isInheritedProperty( value, property )`][@stdlib/assert/is-inherited-property]: test if an object has an inherited property. +- [`isInt64( value )`][@stdlib/assert/is-int64]: test if a value is a 64-bit signed integer. - [`isIterableLike( value )`][@stdlib/assert/is-iterable-like]: test if a value is `iterable`-like. - [`isIteratorLike( value )`][@stdlib/assert/is-iterator-like]: test if a value is `iterator`-like. - [`isJSON( value )`][@stdlib/assert/is-json]: test if a value is a parseable JSON string. @@ -693,6 +694,8 @@ console.log( objectKeys( assert ) ); [@stdlib/assert/is-inherited-property]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/is-inherited-property +[@stdlib/assert/is-int64]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/is-int64 + [@stdlib/assert/is-iterable-like]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/is-iterable-like [@stdlib/assert/is-iterator-like]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert/is-iterator-like diff --git a/lib/node_modules/@stdlib/assert/docs/types/index.d.ts b/lib/node_modules/@stdlib/assert/docs/types/index.d.ts index 8e8864ee9303..c94b8ab60740 100644 --- a/lib/node_modules/@stdlib/assert/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/assert/docs/types/index.d.ts @@ -202,6 +202,7 @@ import isInheritedProperty = require( '@stdlib/assert/is-inherited-property' ); import isInt8Array = require( '@stdlib/assert/is-int8array' ); import isInt16Array = require( '@stdlib/assert/is-int16array' ); import isInt32Array = require( '@stdlib/assert/is-int32array' ); +import isInt64 = require( '@stdlib/assert/is-int64' ); import isInteger = require( '@stdlib/assert/is-integer' ); import isIntegerArray = require( '@stdlib/assert/is-integer-array' ); import isIterableLike = require( '@stdlib/assert/is-iterable-like' ); @@ -4291,6 +4292,22 @@ interface Namespace { */ isInt32Array: typeof isInt32Array; + /** + * Tests if a value is a 64-bit signed integer. + * + * @param value - value to test + * @returns boolean indicating if a value is a 64-bit signed integer + * + * @example + * var Int64 = require( '@stdlib/number/int64/ctor' ); + * + * var x = new Int64( 1234 ); + * + * var bool = ns.isInt64( x ); + * // returns true + */ + isInt64: typeof isInt64; + /** * Tests if a value is an integer. * diff --git a/lib/node_modules/@stdlib/assert/has-symbol-support/lib/main.js b/lib/node_modules/@stdlib/assert/has-symbol-support/lib/main.js index 79bd6d16446d..95855fdbbbde 100644 --- a/lib/node_modules/@stdlib/assert/has-symbol-support/lib/main.js +++ b/lib/node_modules/@stdlib/assert/has-symbol-support/lib/main.js @@ -31,8 +31,8 @@ */ function hasSymbolSupport() { return ( - typeof Symbol === 'function' && - typeof Symbol( 'foo' ) === 'symbol' + typeof Symbol === 'function' && // eslint-disable-line stdlib/require-globals + typeof Symbol( 'foo' ) === 'symbol' // eslint-disable-line stdlib/require-globals ); } diff --git a/lib/node_modules/@stdlib/assert/is-int64/README.md b/lib/node_modules/@stdlib/assert/is-int64/README.md new file mode 100644 index 000000000000..6323d166a952 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/README.md @@ -0,0 +1,98 @@ + + +# isInt64 + +> Test if a value is a [64-bit signed integer][@stdlib/number/int64/ctor]. + +
+ +## Usage + +```javascript +var isInt64 = require( '@stdlib/assert/is-int64' ); +``` + +#### isInt64( value ) + +Tests if a value is a [64-bit signed integer][@stdlib/number/int64/ctor]. + +```javascript +var Int64 = require( '@stdlib/number/int64/ctor' ); + +var x = new Int64( 1234 ); + +var bool = isInt64( x ); +// returns true +``` + +
+ + + +
+ +## Examples + + + +```javascript +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var Int64 = require( '@stdlib/number/int64/ctor' ); +var isInt64 = require( '@stdlib/assert/is-int64' ); + +console.log( isInt64( new Int64( 1234 ) ) ); +// => true + +console.log( isInt64( new Complex128( 3.0, 1.0 ) ) ); +// => false + +console.log( isInt64( {} ) ); +// => false + +console.log( isInt64( null ) ); +// => false +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/assert/is-int64/benchmark/benchmark.js b/lib/node_modules/@stdlib/assert/is-int64/benchmark/benchmark.js new file mode 100644 index 000000000000..d3543088f3ee --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/benchmark/benchmark.js @@ -0,0 +1,88 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive; +var Int64 = require( '@stdlib/number/int64/ctor' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var isInt64 = require( './../lib' ); + + +// MAIN // + +bench( format( '%s::true', pkg ), function benchmark( b ) { + var values; + var bool; + var i; + + values = [ + new Int64( 1234 ), + new Int64( 5678 ), + new Int64( 9012 ), + new Int64( 3456 ) + ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isInt64( values[ i%values.length ] ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); + +bench( format( '%s::false', pkg ), function benchmark( b ) { + var values; + var bool; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + [], + {} + ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + bool = isInt64( values[ i%values.length ] ); + if ( typeof bool !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( !isBoolean( bool ) ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/is-int64/docs/repl.txt b/lib/node_modules/@stdlib/assert/is-int64/docs/repl.txt new file mode 100644 index 000000000000..5018ced0e666 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/docs/repl.txt @@ -0,0 +1,28 @@ + +{{alias}}( value ) + Tests if a value is a 64-bit signed integer. + + Parameters + ---------- + value: any + Value to test. + + Returns + ------- + bool: boolean + Boolean indicating whether a value is a 64-bit signed integer. + + Examples + -------- + > var bool = {{alias}}( new {{alias:@stdlib/number/int64/ctor}}( 1234 ) ) + true + > bool = {{alias}}( new {{alias:@stdlib/complex/float64/ctor}}( 3.0, 1.0 ) ) + false + > bool = {{alias}}( 3.14 ) + false + > bool = {{alias}}( {} ) + false + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/assert/is-int64/docs/types/index.d.ts b/lib/node_modules/@stdlib/assert/is-int64/docs/types/index.d.ts new file mode 100644 index 000000000000..3c6b5cf63223 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/docs/types/index.d.ts @@ -0,0 +1,44 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Int64 } from '@stdlib/types/number'; + +/** +* Tests if a value is a 64-bit signed integer. +* +* @param value - value to test +* @returns boolean indicating if a value is a 64-bit signed integer +* +* @example +* var Int64 = require( '@stdlib/number/int64/ctor' ); +* +* var x = new Int64( 1234 ); +* +* var bool = isInt64( x ); +* // returns true +*/ +declare function isInt64( value: any ): value is Int64; + + +// EXPORTS // + +export = isInt64; diff --git a/lib/node_modules/@stdlib/assert/is-int64/docs/types/test.ts b/lib/node_modules/@stdlib/assert/is-int64/docs/types/test.ts new file mode 100644 index 000000000000..bdd4c366a136 --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/docs/types/test.ts @@ -0,0 +1,38 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import Complex128 = require( '@stdlib/complex/float64/ctor' ); +import Int64 = require( '@stdlib/number/int64/ctor' ); +import isInt64 = require( '@stdlib/assert/is-int64' ); + + +// TESTS // + +// The function returns a boolean... +{ + isInt64( new Int64( 1234 ) ); // $ExpectType boolean + isInt64( new Complex128( 5.0, 3.0 ) ); // $ExpectType boolean + isInt64( {} ); // $ExpectType boolean + isInt64( 123 ); // $ExpectType boolean +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + isInt64(); // $ExpectError + isInt64( new Int64( 1234 ), 123 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/assert/is-int64/examples/index.js b/lib/node_modules/@stdlib/assert/is-int64/examples/index.js new file mode 100644 index 000000000000..10eec6df104d --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var Int64 = require( '@stdlib/number/int64/ctor' ); +var isInt64 = require( './../lib' ); + +console.log( isInt64( new Int64( 1234 ) ) ); +// => true + +console.log( isInt64( new Complex128( 3.0, 1.0 ) ) ); +// => false + +console.log( isInt64( {} ) ); +// => false + +console.log( isInt64( null ) ); +// => false diff --git a/lib/node_modules/@stdlib/assert/is-int64/lib/index.js b/lib/node_modules/@stdlib/assert/is-int64/lib/index.js new file mode 100644 index 000000000000..efd42bd9c81c --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/lib/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test if a value is a 64-bit signed integer. +* +* @module @stdlib/assert/is-int64 +* +* @example +* var Int64 = require( '@stdlib/number/int64/ctor' ); +* var isInt64 = require( '@stdlib/assert/is-int64' ); +* +* var x = new Int64( 1234 ); +* +* var bool = isInt64( x ); +* // returns true +*/ + +// MODULES // + +var isInt64 = require( './main.js' ); + + +// EXPORTS // + +module.exports = isInt64; diff --git a/lib/node_modules/@stdlib/assert/is-int64/lib/main.js b/lib/node_modules/@stdlib/assert/is-int64/lib/main.js new file mode 100644 index 000000000000..665d6b60e36e --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/lib/main.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var Int64 = require( '@stdlib/number/int64/ctor' ); +var constructorName = require( '@stdlib/utils/constructor-name' ); + + +// MAIN // + +/** +* Tests if a value is a 64-bit signed integer. +* +* @param {*} value - value to test +* @returns {boolean} boolean indicating if a value is a 64-bit signed integer +* +* @example +* var Int64 = require( '@stdlib/number/int64/ctor' ); +* +* var x = new Int64( 1234 ); +* +* var bool = isInt64( x ); +* // returns true +*/ +function isInt64( value ) { + return ( + value instanceof Int64 || + constructorName( value ) === 'Int64' + ); +} + + +// EXPORTS // + +module.exports = isInt64; diff --git a/lib/node_modules/@stdlib/assert/is-int64/package.json b/lib/node_modules/@stdlib/assert/is-int64/package.json new file mode 100644 index 000000000000..d45b6238185f --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/assert/is-int64", + "version": "0.0.0", + "description": "Test if a value is a 64-bit signed integer.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdassert", + "assertion", + "assert", + "utilities", + "utility", + "utils", + "util", + "is", + "isint64", + "int64", + "signed", + "64-bit", + "integer", + "type", + "check", + "test", + "validate", + "isvalid", + "valid" + ] +} diff --git a/lib/node_modules/@stdlib/assert/is-int64/test/test.js b/lib/node_modules/@stdlib/assert/is-int64/test/test.js new file mode 100644 index 000000000000..6c30cde8d72a --- /dev/null +++ b/lib/node_modules/@stdlib/assert/is-int64/test/test.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Int64 = require( '@stdlib/number/int64/ctor' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var isInt64 = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof isInt64, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns `true` if provided a 64-bit signed integer', function test( t ) { + t.strictEqual( isInt64( new Int64( 1234 ) ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns `false` if not provided a 64-bit signed integer', function test( t ) { + var values; + var i; + + values = [ + 5, + '5', + null, + void 0, + NaN, + true, + [], + {}, + new Complex128( 2.0, 2.0 ), + function noop() {} + ]; + + for ( i = 0; i < values.length; i++ ) { + t.strictEqual( isInt64( values[i] ), false, 'returns false when provided '+values[i] ); + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/assert/lib/index.js b/lib/node_modules/@stdlib/assert/lib/index.js index d4b6b0121624..c547d8240d79 100644 --- a/lib/node_modules/@stdlib/assert/lib/index.js +++ b/lib/node_modules/@stdlib/assert/lib/index.js @@ -1680,6 +1680,15 @@ setReadOnly( ns, 'isInt16Array', require( '@stdlib/assert/is-int16array' ) ); */ setReadOnly( ns, 'isInt32Array', require( '@stdlib/assert/is-int32array' ) ); +/** +* @name isInt64 +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/assert/is-int64} +*/ +setReadOnly( ns, 'isInt64', require( '@stdlib/assert/is-int64' ) ); + /** * @name isInteger * @memberof ns diff --git a/lib/node_modules/@stdlib/blas/README.md b/lib/node_modules/@stdlib/blas/README.md index a401a45fe2b1..48271fe4cc39 100644 --- a/lib/node_modules/@stdlib/blas/README.md +++ b/lib/node_modules/@stdlib/blas/README.md @@ -45,12 +45,14 @@ The namespace contains the following:
+- [`asum( x[, options] )`][@stdlib/blas/asum]: compute the sum of absolute values (L1 norm) along one or more ndarray dimensions. - [`base`][@stdlib/blas/base]: base (i.e., lower-level) basic linear algebra subprograms (BLAS). - [`ddot( x, y[, dim] )`][@stdlib/blas/ddot]: calculate the dot product of two double-precision floating-point vectors. - [`dswap( x, y[, dim] )`][@stdlib/blas/dswap]: interchange two double-precision floating-point vectors. - [`ext`][@stdlib/blas/ext]: extended basic linear algebra subprograms (BLAS). - [`gdot( x, y )`][@stdlib/blas/gdot]: calculate the dot product of two vectors. - [`gswap( x, y )`][@stdlib/blas/gswap]: interchange two vectors. +- [`nrm2( x[, options] )`][@stdlib/blas/nrm2]: compute the L2-norm along one or more ndarray dimensions. - [`sdot( x, y[, dim] )`][@stdlib/blas/sdot]: calculate the dot product of two single-precision floating-point vectors. - [`sswap( x, y[, dim] )`][@stdlib/blas/sswap]: interchange two single-precision floating-point vectors. @@ -95,6 +97,8 @@ console.log( objectKeys( blas ) ); +[@stdlib/blas/asum]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/asum + [@stdlib/blas/base]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base [@stdlib/blas/ddot]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ddot @@ -107,6 +111,8 @@ console.log( objectKeys( blas ) ); [@stdlib/blas/gswap]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/gswap +[@stdlib/blas/nrm2]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/nrm2 + [@stdlib/blas/sdot]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/sdot [@stdlib/blas/sswap]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/sswap diff --git a/lib/node_modules/@stdlib/blas/asum/README.md b/lib/node_modules/@stdlib/blas/asum/README.md new file mode 100644 index 000000000000..1a47208d1c15 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/README.md @@ -0,0 +1,232 @@ + + +# asum + +> Compute the sum of absolute values (L1 norm) along one or more [ndarray][@stdlib/ndarray/ctor] dimensions. + +
+ +## Usage + +```javascript +var asum = require( '@stdlib/blas/asum' ); +``` + +#### asum( x\[, options] ) + +Computes the sum of absolute values (L1 norm) along one or more [ndarray][@stdlib/ndarray/ctor] dimensions. + +```javascript +var array = require( '@stdlib/ndarray/array' ); + +var x = array( [ 1.0, -2.0, 2.0 ] ); + +var y = asum( x ); +// returns [ 5.0 ] +``` + +The function has the following parameters: + +- **x**: input [ndarray][@stdlib/ndarray/ctor]. Must have a numeric or "generic" [data type][@stdlib/ndarray/dtypes]. +- **options**: function options (_optional_). + +The function accepts the following options: + +- **dims**: list of dimensions over which to perform a reduction. If not provided, the function performs a reduction over all elements in a provided input [ndarray][@stdlib/ndarray/ctor]. +- **dtype**: output ndarray [data type][@stdlib/ndarray/dtypes]. Must be a real-valued floating-point or "generic" [data type][@stdlib/ndarray/dtypes]. +- **keepdims**: boolean indicating whether the reduced dimensions should be included in the returned [ndarray][@stdlib/ndarray/ctor] as singleton dimensions. Default: `false`. + +By default, the function performs a reduction over all elements in a provided input [ndarray][@stdlib/ndarray/ctor]. To perform a reduction over specific dimensions, provide a `dims` option. + +```javascript +var array = require( '@stdlib/ndarray/array' ); + +var x = array( [ 3.0, 0.0, 4.0, 0.0 ], { + 'shape': [ 2, 2 ], + 'order': 'row-major' +}); +// returns [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ] + +var y = asum( x, { + 'dims': [ 0 ] +}); +// returns [ 7.0, 0.0 ] + +y = asum( x, { + 'dims': [ 1 ] +}); +// returns [ 3.0, 4.0 ] + +y = asum( x, { + 'dims': [ 0, 1 ] +}); +// returns [ 7.0 ] +``` + +By default, the function excludes reduced dimensions from the output [ndarray][@stdlib/ndarray/ctor]. To include the reduced dimensions as singleton dimensions, set the `keepdims` option to `true`. + +```javascript +var array = require( '@stdlib/ndarray/array' ); + +var x = array( [ 3.0, 0.0, 4.0, 0.0 ], { + 'shape': [ 2, 2 ], + 'order': 'row-major' +}); +// returns [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ] + +var y = asum( x, { + 'dims': [ 0 ], + 'keepdims': true +}); +// returns [ [ 7.0, 0.0 ] ] + +y = asum( x, { + 'dims': [ 1 ], + 'keepdims': true +}); +// returns [ [ 3.0 ], [ 4.0 ] ] + +y = asum( x, { + 'dims': [ 0, 1 ], + 'keepdims': true +}); +// returns [ [ 7.0 ] ] +``` + +By default, the function returns an [ndarray][@stdlib/ndarray/ctor] having a [data type][@stdlib/ndarray/dtypes] determined by the function's output data type [policy][@stdlib/ndarray/output-dtype-policies]. To override the default behavior, set the `dtype` option. + +```javascript +var getDType = require( '@stdlib/ndarray/dtype' ); +var array = require( '@stdlib/ndarray/array' ); + +var x = array( [ 1.0, -2.0, 2.0 ], { + 'dtype': 'generic' +}); + +var y = asum( x, { + 'dtype': 'float64' +}); +// returns [ 5.0 ] + +var dt = String( getDType( y ) ); +// returns 'float64' +``` + +#### asum.assign( x, out\[, options] ) + +Computes the sum of absolute values (L1 norm) along one or more [ndarray][@stdlib/ndarray/ctor] dimensions and assigns results to a provided output [ndarray][@stdlib/ndarray/ctor]. + +```javascript +var array = require( '@stdlib/ndarray/array' ); +var zeros = require( '@stdlib/ndarray/zeros' ); + +var x = array( [ 1.0, -2.0, 2.0 ] ); +var y = zeros( [] ); + +var out = asum.assign( x, y ); +// returns [ 5.0 ] + +var bool = ( out === y ); +// returns true +``` + +The method has the following parameters: + +- **x**: input [ndarray][@stdlib/ndarray/ctor]. Must have a numeric or "generic" [data type][@stdlib/ndarray/dtypes]. +- **out**: output [ndarray][@stdlib/ndarray/ctor]. +- **options**: function options (_optional_). + +The method accepts the following options: + +- **dims**: list of dimensions over which to perform a reduction. If not provided, the function performs a reduction over all elements in a provided input [ndarray][@stdlib/ndarray/ctor]. + +
+ + + +
+ +## Notes + +- Setting the `keepdims` option to `true` can be useful when wanting to ensure that the output [ndarray][@stdlib/ndarray/ctor] is [broadcast-compatible][@stdlib/ndarray/base/broadcast-shapes] with ndarrays having the same shape as the input [ndarray][@stdlib/ndarray/ctor]. +- For complex-valued input [ndarrays][@stdlib/ndarray/ctor], the function computes the sum of the absolute values of the real and imaginary components (i.e., the sum of `|Re(z)| + |Im(z)|` over all elements). +- The output data type [policy][@stdlib/ndarray/output-dtype-policies] only applies to the main function and specifies that, by default, the function must return an [ndarray][@stdlib/ndarray/ctor] having a real-valued floating-point or "generic" [data type][@stdlib/ndarray/dtypes]. For the `assign` method, the output [ndarray][@stdlib/ndarray/ctor] is allowed to have any supported output [data type][@stdlib/ndarray/dtypes]. + +
+ + + +
+ +## Examples + + + +```javascript +var uniform = require( '@stdlib/random/uniform' ); +var getDType = require( '@stdlib/ndarray/dtype' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var asum = require( '@stdlib/blas/asum' ); + +// Generate an array of random numbers: +var x = uniform( [ 5, 5 ], -10.0, 10.0 ); +console.log( ndarray2array( x ) ); + +// Perform a reduction: +var y = asum( x, { + 'dims': [ 0 ] +}); + +// Resolve the output array data type: +var dt = getDType( y ); +console.log( dt ); + +// Print the results: +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/asum/benchmark/benchmark.assign.js b/lib/node_modules/@stdlib/blas/asum/benchmark/benchmark.assign.js new file mode 100644 index 000000000000..f18fc162c797 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/benchmark/benchmark.assign.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var uniform = require( '@stdlib/random/uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var asum = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( [], options ); + var x = uniform( [ len ], -50.0, 50.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var o; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + o = asum.assign( x, out ); + if ( typeof o !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( o.get() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:assign:dtype=%s,len=%d', pkg, options.dtype, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/asum/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/asum/benchmark/benchmark.js new file mode 100644 index 000000000000..26acbec8bc38 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/benchmark/benchmark.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var uniform = require( '@stdlib/random/uniform' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var asum = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( [ len ], -50.0, 50.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var o; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + o = asum( x ); + if ( typeof o !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( o.get() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:dtype=%s,len=%d', pkg, options.dtype, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/asum/docs/repl.txt b/lib/node_modules/@stdlib/blas/asum/docs/repl.txt new file mode 100644 index 000000000000..3ef49398db73 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/docs/repl.txt @@ -0,0 +1,75 @@ + +{{alias}}( x[, options] ) + Computes the sum of absolute values (L1 norm) along one or more ndarray + dimensions. + + Parameters + ---------- + x: ndarray + Input array. Must have a numeric or "generic" data type. + + options: Object (optional) + Function options. + + options.dtype: string|DataType (optional) + Output array data type. Must be a real-valued floating-point or + "generic" data type. + + options.dims: Array (optional) + List of dimensions over which to perform a reduction. If not provided, + the function performs a reduction over all elements in a provided input + ndarray. + + options.keepdims: boolean (optional) + Boolean indicating whether the reduced dimensions should be included in + the returned ndarray as singleton dimensions. Default: false. + + Returns + ------- + out: ndarray + Output array. + + Examples + -------- + > var x = {{alias:@stdlib/ndarray/array}}( [ 1.0, -2.0, 2.0 ] ); + > var y = {{alias}}( x ) + [ 5.0 ] + + +{{alias}}.assign( x, out[, options] ) + Computes the sum of absolute values (L1 norm) along one or more ndarray + dimensions and assigns results to a provided output ndarray. + + Parameters + ---------- + x: ndarray + Input array. Must have a numeric or "generic" data type. + + out: ndarray + Output array. + + options: Object (optional) + Function options. + + options.dims: Array (optional) + List of dimensions over which to perform a reduction. If not provided, + the function performs a reduction over all elements in a provided input + ndarray. + + Returns + ------- + out: ndarray + Output array. + + Examples + -------- + > var x = {{alias:@stdlib/ndarray/array}}( [ 1.0, -2.0, 2.0 ] ); + > var out = {{alias:@stdlib/ndarray/zeros}}( [] ); + > var y = {{alias}}.assign( x, out ) + [ 5.0 ] + > var bool = ( out === y ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/asum/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/asum/docs/types/index.d.ts new file mode 100644 index 000000000000..c7c357ae427f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/docs/types/index.d.ts @@ -0,0 +1,139 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { ArrayLike } from '@stdlib/types/array'; +import { RealFloatingPointAndGenericDataType as DataType, typedndarray } from '@stdlib/types/ndarray'; + +/** +* Input array. +*/ +type InputArray = typedndarray; + +/** +* Output array. +*/ +type OutputArray = typedndarray; + +/** +* Interface defining "base" options. +*/ +interface BaseOptions { + /** + * List of dimensions over which to perform a reduction. + */ + dims?: ArrayLike; +} + +/** +* Interface defining options. +*/ +interface Options extends BaseOptions { + /** + * Output array data type. + */ + dtype?: DataType; + + /** + * Boolean indicating whether the reduced dimensions should be included in the returned array as singleton dimensions. Default: `false`. + */ + keepdims?: boolean; +} + +/** +* Interface for performing a reduction on an ndarray. +*/ +interface Unary { + /** + * Computes the sum of absolute values (L1 norm) along one or more ndarray dimensions. + * + * @param x - input ndarray + * @param options - function options + * @returns output ndarray + * + * @example + * var array = require( '@stdlib/ndarray/array' ); + * + * var x = array( [ 1.0, -2.0, 2.0 ] ); + * + * var y = asum( x ); + * // returns [ 5.0 ] + */ + ( x: InputArray, options?: Options ): OutputArray; // NOTE: we lose type specificity here, but retaining specificity would likely be difficult and/or tedious to completely enumerate, as the output ndarray data type is dependent on how `x` interacts with output data type policy and whether that policy has been overridden by `options.dtype`. + + /** + * Computes the sum of absolute values (L1 norm) along one or more ndarray dimensions and assigns results to a provided output ndarray. + * + * @param x - input ndarray + * @param out - output ndarray + * @param options - function options + * @returns output ndarray + * + * @example + * var array = require( '@stdlib/ndarray/array' ); + * var zeros = require( '@stdlib/ndarray/zeros' ); + * + * var x = array( [ 1.0, -2.0, 2.0 ] ); + * var y = zeros( [] ); + * + * var out = asum.assign( x, y ); + * // returns [ 5.0 ] + * + * var bool = ( out === y ); + * // returns true + */ + assign = OutputArray>( x: InputArray, out: U, options?: BaseOptions ): U; +} + +/** +* Computes the sum of absolute values (L1 norm) along one or more ndarray dimensions. +* +* @param x - input ndarray +* @param options - function options +* @returns output ndarray +* +* @example +* var array = require( '@stdlib/ndarray/array' ); +* +* var x = array( [ 1.0, -2.0, 2.0 ] ); +* +* var y = asum( x ); +* // returns [ 5.0 ] +* +* @example +* var array = require( '@stdlib/ndarray/array' ); +* var zeros = require( '@stdlib/ndarray/zeros' ); +* +* var x = array( [ 1.0, -2.0, 2.0 ] ); +* var y = zeros( [] ); +* +* var out = asum.assign( x, y ); +* // returns [ 5.0 ] +* +* var bool = ( out === y ); +* // returns true +*/ +declare const asum: Unary; + + +// EXPORTS // + +export = asum; diff --git a/lib/node_modules/@stdlib/blas/asum/docs/types/test.ts b/lib/node_modules/@stdlib/blas/asum/docs/types/test.ts new file mode 100644 index 000000000000..a40eea2351f1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/docs/types/test.ts @@ -0,0 +1,230 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import empty = require( '@stdlib/ndarray/empty' ); +import asum = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + asum( empty( [ 2, 2 ], { 'dtype': 'float64' } ) ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'float64' } ), {} ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'float32' } ) ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'float32' } ), {} ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'int32' } ) ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'int32' } ), {} ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'complex128' } ) ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'complex128' } ), {} ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'complex64' } ) ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'complex64' } ), {} ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'generic' } ) ); // $ExpectType OutputArray + asum( empty( [ 2, 2 ], { 'dtype': 'generic' } ), {} ); // $ExpectType OutputArray +} + +// The compiler throws an error if the function is provided a first argument which is not an ndarray... +{ + asum( '5' ); // $ExpectError + asum( 5 ); // $ExpectError + asum( true ); // $ExpectError + asum( false ); // $ExpectError + asum( null ); // $ExpectError + asum( void 0 ); // $ExpectError + asum( {} ); // $ExpectError + asum( ( x: number ): number => x ); // $ExpectError + + asum( '5', {} ); // $ExpectError + asum( 5, {} ); // $ExpectError + asum( true, {} ); // $ExpectError + asum( false, {} ); // $ExpectError + asum( null, {} ); // $ExpectError + asum( void 0, {} ); // $ExpectError + asum( {}, {} ); // $ExpectError + asum( ( x: number ): number => x, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not an object... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum( x, '5' ); // $ExpectError + asum( x, true ); // $ExpectError + asum( x, false ); // $ExpectError + asum( x, null ); // $ExpectError + asum( x, [] ); // $ExpectError + asum( x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an invalid `dtype` option... +{ + const x = empty( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum( x, { 'dtype': '5' } ); // $ExpectError + asum( x, { 'dtype': 5 } ); // $ExpectError + asum( x, { 'dtype': true } ); // $ExpectError + asum( x, { 'dtype': false } ); // $ExpectError + asum( x, { 'dtype': null } ); // $ExpectError + asum( x, { 'dtype': [] } ); // $ExpectError + asum( x, { 'dtype': {} } ); // $ExpectError + asum( x, { 'dtype': ( x: number ): number => x } ); // $ExpectError +} + +// The compiler throws an error if the function is provided an invalid `keepdims` option... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum( x, { 'keepdims': '5' } ); // $ExpectError + asum( x, { 'keepdims': 5 } ); // $ExpectError + asum( x, { 'keepdims': null } ); // $ExpectError + asum( x, { 'keepdims': [] } ); // $ExpectError + asum( x, { 'keepdims': {} } ); // $ExpectError + asum( x, { 'keepdims': ( x: number ): number => x } ); // $ExpectError +} + +// The compiler throws an error if the function is provided an invalid `dims` option... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum( x, { 'dims': '5' } ); // $ExpectError + asum( x, { 'dims': 5 } ); // $ExpectError + asum( x, { 'dims': true } ); // $ExpectError + asum( x, { 'dims': false } ); // $ExpectError + asum( x, { 'dims': null } ); // $ExpectError + asum( x, { 'dims': {} } ); // $ExpectError + asum( x, { 'dims': ( x: number ): number => x } ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum(); // $ExpectError + asum( x, {}, {} ); // $ExpectError +} + +// Attached to the function is an `assign` method which returns an ndarray... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum.assign( x, x ); // $ExpectType float64ndarray + asum.assign( x, x, {} ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the `assign` method is provided a first argument which is not an ndarray... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum.assign( '5', x ); // $ExpectError + asum.assign( 5, x ); // $ExpectError + asum.assign( true, x ); // $ExpectError + asum.assign( false, x ); // $ExpectError + asum.assign( null, x ); // $ExpectError + asum.assign( void 0, x ); // $ExpectError + asum.assign( {}, x ); // $ExpectError + asum.assign( ( x: number ): number => x, x ); // $ExpectError + + asum.assign( '5', x, {} ); // $ExpectError + asum.assign( 5, x, {} ); // $ExpectError + asum.assign( true, x, {} ); // $ExpectError + asum.assign( false, x, {} ); // $ExpectError + asum.assign( null, x, {} ); // $ExpectError + asum.assign( void 0, x, {} ); // $ExpectError + asum.assign( {}, x, {} ); // $ExpectError + asum.assign( ( x: number ): number => x, x, {} ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided a second argument which is not an ndarray... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum.assign( x, '5' ); // $ExpectError + asum.assign( x, 5 ); // $ExpectError + asum.assign( x, true ); // $ExpectError + asum.assign( x, false ); // $ExpectError + asum.assign( x, null ); // $ExpectError + asum.assign( x, void 0 ); // $ExpectError + asum.assign( x, ( x: number ): number => x ); // $ExpectError + + asum.assign( x, '5', {} ); // $ExpectError + asum.assign( x, 5, {} ); // $ExpectError + asum.assign( x, true, {} ); // $ExpectError + asum.assign( x, false, {} ); // $ExpectError + asum.assign( x, null, {} ); // $ExpectError + asum.assign( x, void 0, {} ); // $ExpectError + asum.assign( x, ( x: number ): number => x, {} ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided a third argument which is not an object... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum.assign( x, x, '5' ); // $ExpectError + asum.assign( x, x, true ); // $ExpectError + asum.assign( x, x, false ); // $ExpectError + asum.assign( x, x, null ); // $ExpectError + asum.assign( x, x, [] ); // $ExpectError + asum.assign( x, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided an invalid `dims` option... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum.assign( x, x, { 'dims': '5' } ); // $ExpectError + asum.assign( x, x, { 'dims': 5 } ); // $ExpectError + asum.assign( x, x, { 'dims': true } ); // $ExpectError + asum.assign( x, x, { 'dims': false } ); // $ExpectError + asum.assign( x, x, { 'dims': null } ); // $ExpectError + asum.assign( x, x, { 'dims': {} } ); // $ExpectError + asum.assign( x, x, { 'dims': ( x: number ): number => x } ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + asum.assign(); // $ExpectError + asum.assign( x ); // $ExpectError + asum.assign( x, x, {}, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/asum/examples/index.js b/lib/node_modules/@stdlib/blas/asum/examples/index.js new file mode 100644 index 000000000000..a1b17b12aa19 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/examples/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var uniform = require( '@stdlib/random/uniform' ); +var getDType = require( '@stdlib/ndarray/dtype' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var asum = require( './../lib' ); + +// Generate an array of random numbers: +var x = uniform( [ 5, 5 ], -10.0, 10.0 ); +console.log( ndarray2array( x ) ); + +// Perform a reduction: +var y = asum( x, { + 'dims': [ 0 ] +}); + +// Resolve the output array data type: +var dt = getDType( y ); +console.log( dt ); + +// Print the results: +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/asum/lib/index.js b/lib/node_modules/@stdlib/blas/asum/lib/index.js new file mode 100644 index 000000000000..bfb3ce66e3fc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/lib/index.js @@ -0,0 +1,60 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Compute the sum of absolute values (L1 norm) along one or more ndarray dimensions. +* +* @module @stdlib/blas/asum +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var ndarray = require( '@stdlib/ndarray/ctor' ); +* var asum = require( '@stdlib/blas/asum' ); +* +* // Create a data buffer: +* var xbuf = new Float64Array( [ 0.0, 1.0, -2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* // Define the shape of the input array: +* var sh = [ 3, 1, 2 ]; +* +* // Define the array strides: +* var sx = [ 4, 4, 1 ]; +* +* // Define the index offset: +* var ox = 1; +* +* // Create an input ndarray: +* var x = new ndarray( 'float64', xbuf, sh, sx, ox, 'row-major' ); +* +* // Perform reduction: +* var out = asum( x ); +* // returns [ 5.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; + +// exports: { "assign": "main.assign" } diff --git a/lib/node_modules/@stdlib/blas/asum/lib/main.js b/lib/node_modules/@stdlib/blas/asum/lib/main.js new file mode 100644 index 000000000000..30d48acfba9e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/lib/main.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var dtypes = require( '@stdlib/ndarray/dtypes' ); +var gasum = require( '@stdlib/blas/base/ndarray/gasum' ); +var dasum = require( '@stdlib/blas/base/ndarray/dasum' ); +var sasum = require( '@stdlib/blas/base/ndarray/sasum' ); +var dzasum = require( '@stdlib/blas/base/ndarray/dzasum' ); +var scasum = require( '@stdlib/blas/base/ndarray/scasum' ); +var factory = require( '@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-factory' ); + + +// VARIABLES // + +var idtypes = dtypes( 'numeric_and_generic' ); +var odtypes = dtypes( 'real_floating_point_and_generic' ); +var policies = { + 'output': 'real_floating_point_and_generic', + 'casting': 'none' +}; +var table = { + 'types': [ + 'float64', // input + 'float32', // input + 'complex128', // input + 'complex64' // input + ], + 'fcns': [ + dasum, + sasum, + dzasum, + scasum + ], + 'default': gasum +}; + + +// MAIN // + +/** +* Computes the sum of absolute values (L1 norm) along one or more ndarray dimensions. +* +* @name asum +* @type {Function} +* @param {ndarray} x - input ndarray +* @param {Options} [options] - function options +* @param {IntegerArray} [options.dims] - list of dimensions over which to perform a reduction +* @param {boolean} [options.keepdims=false] - boolean indicating whether the reduced dimensions should be included in the returned ndarray as singleton dimensions +* @param {*} [options.dtype] - output ndarray data type +* @throws {TypeError} first argument must be an ndarray-like object +* @throws {TypeError} options argument must be an object +* @throws {RangeError} dimension indices must not exceed input ndarray bounds +* @throws {RangeError} number of dimension indices must not exceed the number of input ndarray dimensions +* @throws {Error} must provide valid options +* @returns {ndarray} output ndarray +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var ndarray = require( '@stdlib/ndarray/ctor' ); +* +* // Create a data buffer: +* var xbuf = new Float64Array( [ 0.0, 1.0, -2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* // Define the shape of the input array: +* var sh = [ 3, 1, 2 ]; +* +* // Define the array strides: +* var sx = [ 4, 4, 1 ]; +* +* // Define the index offset: +* var ox = 1; +* +* // Create an input ndarray: +* var x = new ndarray( 'float64', xbuf, sh, sx, ox, 'row-major' ); +* +* // Perform reduction: +* var out = asum( x ); +* // returns [ 5.0 ] +*/ +var asum = factory( table, [ idtypes ], odtypes, policies ); + + +// EXPORTS // + +module.exports = asum; diff --git a/lib/node_modules/@stdlib/blas/asum/package.json b/lib/node_modules/@stdlib/blas/asum/package.json new file mode 100644 index 000000000000..75f327557e57 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/blas/asum", + "version": "0.0.0", + "description": "Compute the sum of absolute values (L1 norm) along one or more ndarray dimensions.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 1", + "linear", + "algebra", + "subroutines", + "asum", + "sum", + "absolute", + "l1-norm", + "norm", + "vector", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/asum/test/test.assign.js b/lib/node_modules/@stdlib/blas/asum/test/test.assign.js new file mode 100644 index 000000000000..0991fa9f1487 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/test/test.assign.js @@ -0,0 +1,765 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var empty = require( '@stdlib/ndarray/empty' ); +var emptyLike = require( '@stdlib/ndarray/empty-like' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var asum = require( './../lib' ).assign; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof asum, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object', function test( t ) { + var values; + var out; + var i; + + out = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( value, out ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object (options)', function test( t ) { + var values; + var out; + var i; + + out = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( value, out, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object having a supported data type', function test( t ) { + var values; + var out; + var i; + + out = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + empty( [ 2, 2 ], { + 'dtype': 'bool' + }) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( value, out ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object having a supported data type (options)', function test( t ) { + var values; + var out; + var i; + + out = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + empty( [ 2, 2 ], { + 'dtype': 'bool' + }) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( value, out, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a second argument which is not an ndarray-like object', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, value ); + }; + } +}); + +tape( 'the function throws an error if provided a second argument which is not an ndarray-like object (options)', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, value, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a third argument which is not an object', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, out, value ); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which is not an array-like object of integers', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [ 'a' ], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, out, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains out-of-bounds indices', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [ 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ -10 ], + [ 20 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, out, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains too many indices', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [], { + 'dtype': 'generic' + }); + + values = [ + [ 0, 1, 2 ], + [ 0, 1, 2, 3 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, out, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains duplicate indices', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [], { + 'dtype': 'generic' + }); + + values = [ + [ 0, 0 ], + [ 1, 1 ], + [ 0, 1, 0 ], + [ 1, 0, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, out, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided an output array which has an invalid shape (default)', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ 2, 2 ], + [ 2 ], + [ 4, 4 ], + [ 4 ], + [ 1 ], + [ 1, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + var out = zeros( value, { + 'dtype': 'generic' + }); + asum( x, out ); + }; + } +}); + +tape( 'the function throws an error if provided an output array which has an invalid shape (all dimensions)', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ 2, 2 ], + [ 2 ], + [ 4, 4 ], + [ 4 ], + [ 1 ], + [ 1, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + var out = zeros( value, { + 'dtype': 'generic' + }); + asum( x, out, { + 'dims': [ 0, 1 ] + }); + }; + } +}); + +tape( 'the function throws an error if provided an output array which has an invalid shape (some dimensions)', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [], + [ 4, 4 ], + [ 4 ], + [ 1 ], + [ 1, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + var out = zeros( value, { + 'dtype': 'generic' + }); + asum( x, out, { + 'dims': [ 0 ] + }); + }; + } +}); + +tape( 'the function performs a reduction on an ndarray (default, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [] + }); + + actual = asum( x, out ); + expected = 7.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (default, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [] + }); + + actual = asum( x, out ); + expected = 7.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (all dimensions, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [] + }); + + actual = asum( x, out, { + 'dims': [ 0, 1 ] + }); + expected = 7.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (all dimensions, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [] + }); + + actual = asum( x, out, { + 'dims': [ 0, 1 ] + }); + expected = 7.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (no dimensions, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [ 2, 2 ] + }); + + actual = asum( x, out, { + 'dims': [] + }); + expected = [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (no dimensions, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [ 2, 2 ] + }); + + actual = asum( x, out, { + 'dims': [] + }); + expected = [ [ 3.0, 4.0 ], [ 0.0, 0.0 ] ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying reduction dimensions (row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [ 2 ] + }); + + actual = asum( x, out, { + 'dims': [ 0 ] + }); + expected = [ 7.0, 0.0 ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [ 2 ] + }); + + actual = asum( x, out, { + 'dims': [ 1 ] + }); + expected = [ 3.0, 4.0 ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying reduction dimensions (column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [ 2 ] + }); + + actual = asum( x, out, { + 'dims': [ 0 ] + }); + expected = [ 3.0, 4.0 ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [ 2 ] + }); + + actual = asum( x, out, { + 'dims': [ 1 ] + }); + expected = [ 7.0, 0.0 ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (complex128)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = new Complex128Array( [ 1.0, 2.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0 ] ); + x = new ndarray( 'complex128', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = empty( [], { + 'dtype': 'float64' + }); + + actual = asum( x, out ); + expected = 9.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (complex64)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = new Complex64Array( [ 1.0, 2.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0 ] ); + x = new ndarray( 'complex64', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = empty( [], { + 'dtype': 'float32' + }); + + actual = asum( x, out ); + expected = 9.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/asum/test/test.js b/lib/node_modules/@stdlib/blas/asum/test/test.js new file mode 100644 index 000000000000..86d2cbc1763b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/test/test.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isMethod = require( '@stdlib/assert/is-method' ); +var asum = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof asum, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is an `assign` method', function test( t ) { + t.strictEqual( isMethod( asum, 'assign' ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/asum/test/test.main.js b/lib/node_modules/@stdlib/blas/asum/test/test.main.js new file mode 100644 index 000000000000..9f50aff6ff0d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/asum/test/test.main.js @@ -0,0 +1,795 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isndarrayLike = require( '@stdlib/assert/is-ndarray-like' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var empty = require( '@stdlib/ndarray/empty' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var getDType = require( '@stdlib/ndarray/dtype' ); +var getShape = require( '@stdlib/ndarray/shape' ); +var getOrder = require( '@stdlib/ndarray/order' ); +var asum = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof asum, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( value ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object (options)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( value, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object having a supported data type', function test( t ) { + var values; + var i; + + values = [ + empty( [ 2, 2 ], { + 'dtype': 'bool' + }) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( value ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object having a supported data type (options)', function test( t ) { + var values; + var i; + + values = [ + empty( [ 2, 2 ], { + 'dtype': 'bool' + }) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( value, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a second argument which is not an object', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, value ); + }; + } +}); + +tape( 'the function throws an error if provided a `dtype` option which is not a supported data type', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + 'foo', + 'bar', + 'beep', + 'boop' + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, { + 'dtype': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `keepdims` option which is not a boolean', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, { + 'keepdims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which is not an array-like object of integers', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [ 'a' ], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains out-of-bounds indices', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ -10 ], + [ 0, 20 ], + [ 20 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains too many indices', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ 0, 1, 2 ], + [ 0, 1, 2, 3 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains duplicate indices', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ 0, 0 ], + [ 1, 1 ], + [ 0, 1, 0 ], + [ 1, 0, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + asum( x, { + 'dims': value + }); + }; + } +}); + +tape( 'the function performs a reduction on an ndarray (default, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x ); + expected = 7.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (default, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x ); + expected = 7.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (all dimensions, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dims': [ 0, 1 ] + }); + expected = 7.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dims': [ 0, 1 ], + 'keepdims': false + }); + expected = 7.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dims': [ 0, 1 ], + 'keepdims': true + }); + expected = [ [ 7.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 1, 1 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (all dimensions, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dims': [ 0, 1 ] + }); + expected = 7.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dims': [ 0, 1 ], + 'keepdims': false + }); + expected = 7.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dims': [ 0, 1 ], + 'keepdims': true + }); + expected = [ [ 7.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 1, 1 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (no dimensions, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dims': [], + 'keepdims': false + }); + expected = [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dims': [], + 'keepdims': true + }); + expected = [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (no dimensions, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dims': [], + 'keepdims': false + }); + expected = [ [ 3.0, 4.0 ], [ 0.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dims': [], + 'keepdims': true + }); + expected = [ [ 3.0, 4.0 ], [ 0.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying reduction dimensions (row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dims': [ 0 ], + 'keepdims': false + }); + expected = [ 7.0, 0.0 ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dims': [ 0 ], + 'keepdims': true + }); + expected = [ [ 7.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 1, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dims': [ 1 ], + 'keepdims': false + }); + expected = [ 3.0, 4.0 ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dims': [ 1 ], + 'keepdims': true + }); + expected = [ [ 3.0 ], [ 4.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 1 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying reduction dimensions (column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dims': [ 0 ], + 'keepdims': false + }); + expected = [ 3.0, 4.0 ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dims': [ 0 ], + 'keepdims': true + }); + expected = [ [ 3.0, 4.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 1, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dims': [ 1 ], + 'keepdims': false + }); + expected = [ 7.0, 0.0 ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dims': [ 1 ], + 'keepdims': true + }); + expected = [ [ 7.0 ], [ 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 1 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying the output array data type', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x, { + 'dtype': 'float64' + }); + expected = 7.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'float64', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = asum( x, { + 'dtype': 'float64' + }); + expected = 7.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'float64', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (complex128)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = new Complex128Array( [ 1.0, 2.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0 ] ); + x = new ndarray( 'complex128', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x ); + expected = 9.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'float64', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (complex64)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = new Complex64Array( [ 1.0, 2.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0 ] ); + x = new ndarray( 'complex64', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = asum( x ); + expected = 9.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'float32', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.js index 821c3a83c309..426202c7f09c 100644 --- a/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.js @@ -22,7 +22,7 @@ var bench = require( '@stdlib/bench' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Complex64Array = require( '@stdlib/array/complex64' ); var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); @@ -75,12 +75,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { ccopy( x.length, x, 1, y, 1 ); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.native.js index 6cb84989a92f..66c3bfe0e742 100644 --- a/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.native.js @@ -23,7 +23,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Complex64Array = require( '@stdlib/array/complex64' ); var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); @@ -80,12 +80,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { ccopy( x.length, x, 1, y, 1 ); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.ndarray.js index 907557ed02e7..bc955cebc652 100644 --- a/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.ndarray.js @@ -22,7 +22,7 @@ var bench = require( '@stdlib/bench' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Complex64Array = require( '@stdlib/array/complex64' ); var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); @@ -75,12 +75,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { ccopy( x.length, x, 1, 0, y, 1, 0 ); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.ndarray.native.js index 09ec3ec39287..761bc447ea28 100644 --- a/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/base/ccopy/benchmark/benchmark.ndarray.native.js @@ -23,7 +23,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Complex64Array = require( '@stdlib/array/complex64' ); var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); @@ -80,12 +80,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { ccopy( x.length, x, 1, 0, y, 1, 0 ); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.js index 782876fcde2c..e85d7850377b 100644 --- a/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.js @@ -22,7 +22,7 @@ var bench = require( '@stdlib/bench' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Complex64Array = require( '@stdlib/array/complex64' ); var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); @@ -75,12 +75,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { cswap( x.length, x, 1, y, 1 ); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.native.js index 5425744493e8..0b2071853391 100644 --- a/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.native.js @@ -23,7 +23,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Complex64Array = require( '@stdlib/array/complex64' ); var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); @@ -80,12 +80,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { cswap( x.length, x, 1, y, 1 ); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.ndarray.js index 05cd6505e0b1..b49aeb2f7294 100644 --- a/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.ndarray.js @@ -22,7 +22,7 @@ var bench = require( '@stdlib/bench' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Complex64Array = require( '@stdlib/array/complex64' ); var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); @@ -75,12 +75,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { cswap( x.length, x, 1, 0, y, 1, 0 ); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.ndarray.native.js index 44d27adab4fa..c616b1875afd 100644 --- a/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/base/cswap/benchmark/benchmark.ndarray.native.js @@ -23,7 +23,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Complex64Array = require( '@stdlib/array/complex64' ); var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); @@ -80,12 +80,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { cswap( x.length, x, 1, 0, y, 1, 0 ); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( viewY[ i%(len*2) ] ) ) { + if ( isnanf( viewY[ i%(len*2) ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/diagonal-types/test/test.js b/lib/node_modules/@stdlib/blas/base/diagonal-types/test/test.js index fb495487e74b..8f1c225a33b3 100644 --- a/lib/node_modules/@stdlib/blas/base/diagonal-types/test/test.js +++ b/lib/node_modules/@stdlib/blas/base/diagonal-types/test/test.js @@ -66,7 +66,7 @@ tape( 'attached to the main function is an `enum` method to return an object map ]; for ( i = 0; i < o.length; i++ ) { t.strictEqual( hasOwnProp( obj, o[ i ] ), true, 'has property `' + o[ i ] + '`' ); - t.strictEqual( isNonNegativeInteger( obj[ o[i] ] ), true, 'returns expected value' ); + t.strictEqual( isNonNegativeInteger( obj[ o[ i ] ] ), true, 'returns expected value' ); } t.end(); diff --git a/lib/node_modules/@stdlib/blas/base/dspmv/lib/dspmv.js b/lib/node_modules/@stdlib/blas/base/dspmv/lib/dspmv.js index 32b865e63310..293281194ef9 100644 --- a/lib/node_modules/@stdlib/blas/base/dspmv/lib/dspmv.js +++ b/lib/node_modules/@stdlib/blas/base/dspmv/lib/dspmv.js @@ -21,7 +21,7 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -33,7 +33,7 @@ var base = require( './base.js' ); * Performs the matrix-vector operation `y = alpha*A*x + beta*y` where `alpha` and `beta` are scalars, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} AP - packed form of a symmetric matrix `A` @@ -62,11 +62,13 @@ var base = require( './base.js' ); function dspmv( order, uplo, N, alpha, AP, x, strideX, beta, y, strideY ) { var offsetX; var offsetY; + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -80,7 +82,7 @@ function dspmv( order, uplo, N, alpha, AP, x, strideX, beta, y, strideY ) { } offsetX = stride2offset( N, strideX ); offsetY = stride2offset( N, strideY ); - return base( order, uplo, N, alpha, AP, 0, x, strideX, offsetX, beta, y, strideY, offsetY ); // eslint-disable-line max-len + return base( order, u, N, alpha, AP, 0, x, strideX, offsetX, beta, y, strideY, offsetY ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/dspmv/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/dspmv/lib/ndarray.js index 2c5a1479e790..d4d1c4643752 100644 --- a/lib/node_modules/@stdlib/blas/base/dspmv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/dspmv/lib/ndarray.js @@ -21,7 +21,7 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -32,7 +32,7 @@ var base = require( './base.js' ); * Performs the matrix-vector operation `y = alpha*A*x + beta*y` where `alpha` and `beta` are scalars, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} AP - packed form of a symmetric matrix `A` @@ -62,10 +62,13 @@ var base = require( './base.js' ); * // y => [ ~7.0, ~12.0, ~15.0 ] */ function dspmv( order, uplo, N, alpha, AP, offsetAP, x, strideX, offsetX, beta, y, strideY, offsetY ) { // eslint-disable-line max-params, max-len + var u; + if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -77,7 +80,7 @@ function dspmv( order, uplo, N, alpha, AP, offsetAP, x, strideX, offsetX, beta, if ( strideY === 0 ) { throw new RangeError( format( 'invalid argument. Twelfth argument must be non-zero. Value: `%d`.', strideY ) ); } - return base( order, uplo, N, alpha, AP, offsetAP, x, strideX, offsetX, beta, y, strideY, offsetY ); // eslint-disable-line max-len + return base( order, u, N, alpha, AP, offsetAP, x, strideX, offsetX, beta, y, strideY, offsetY ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/dspr/README.md b/lib/node_modules/@stdlib/blas/base/dspr/README.md index eb930c6c66a8..071ede7dc3b0 100644 --- a/lib/node_modules/@stdlib/blas/base/dspr/README.md +++ b/lib/node_modules/@stdlib/blas/base/dspr/README.md @@ -84,7 +84,7 @@ dspr( 'row-major', 'upper', 3, 1.0, x1, -1, AP ); // AP => [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] ``` -#### dspr.ndarray( uplo, N, α, x, sx, ox, AP, sap, oap ) +#### dspr.ndarray( order, uplo, N, α, x, sx, ox, AP, sap, oap ) Performs the symmetric rank 1 operation `A = α*x*x^T + A`, using alternative indexing semantics and where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix supplied in packed form. diff --git a/lib/node_modules/@stdlib/blas/base/dspr/lib/dspr.js b/lib/node_modules/@stdlib/blas/base/dspr/lib/dspr.js index 05dcf1474174..2682c6b0168b 100644 --- a/lib/node_modules/@stdlib/blas/base/dspr/lib/dspr.js +++ b/lib/node_modules/@stdlib/blas/base/dspr/lib/dspr.js @@ -21,7 +21,7 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -33,7 +33,7 @@ var base = require( './base.js' ); * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} x - input vector @@ -56,11 +56,13 @@ var base = require( './base.js' ); */ function dspr( order, uplo, N, alpha, x, strideX, AP ) { var ox; + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -73,7 +75,7 @@ function dspr( order, uplo, N, alpha, x, strideX, AP ) { return AP; } ox = stride2offset( N, strideX ); - return base( order, uplo, N, alpha, x, strideX, ox, AP, 1, 0 ); + return base( order, u, N, alpha, x, strideX, ox, AP, 1, 0 ); } diff --git a/lib/node_modules/@stdlib/blas/base/dspr/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/dspr/lib/ndarray.js index f6884ee91ee1..e645a7db9f16 100644 --- a/lib/node_modules/@stdlib/blas/base/dspr/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/dspr/lib/ndarray.js @@ -21,7 +21,7 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -32,7 +32,7 @@ var base = require( './base.js' ); * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} x - input vector @@ -58,10 +58,12 @@ var base = require( './base.js' ); * // AP => [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] */ function dspr( order, uplo, N, alpha, x, strideX, offsetX, AP, strideAP, offsetAP ) { // eslint-disable-line max-len + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -76,7 +78,7 @@ function dspr( order, uplo, N, alpha, x, strideX, offsetX, AP, strideAP, offsetA if ( N === 0 || alpha === 0.0 ) { return AP; } - return base( order, uplo, N, alpha, x, strideX, offsetX, AP, strideAP, offsetAP ); // eslint-disable-line max-len + return base( order, u, N, alpha, x, strideX, offsetX, AP, strideAP, offsetAP ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/dsymv/lib/dsymv.js b/lib/node_modules/@stdlib/blas/base/dsymv/lib/dsymv.js index 7795b9005465..8e76a5a4eec5 100644 --- a/lib/node_modules/@stdlib/blas/base/dsymv/lib/dsymv.js +++ b/lib/node_modules/@stdlib/blas/base/dsymv/lib/dsymv.js @@ -24,7 +24,7 @@ var dfill = require( '@stdlib/blas/ext/base/dfill' ); var dscal = require( '@stdlib/blas/base/dscal' ); var max = require( '@stdlib/math/base/special/max' ); var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major-string' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); @@ -35,7 +35,7 @@ var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string * Performs the matrix-vector operation `y = alpha*A*x + beta*y` where `alpha` and `beta` are scalars, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} A - matrix @@ -78,11 +78,13 @@ function dsymv( order, uplo, N, alpha, A, LDA, x, strideX, beta, y, strideY ) { var i; var j; var k; + var u; if ( !isLayout( order ) ) { throw new TypeError( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ); } if ( N < 0 ) { @@ -128,8 +130,8 @@ function dsymv( order, uplo, N, alpha, A, LDA, x, strideX, beta, y, strideY ) { } // Form: y = alpha*A*x + y if ( - ( isRowMajor( order ) && uplo === 'upper' ) || - ( isColumnMajor( order ) && uplo === 'lower' ) + ( isRowMajor( order ) && u === 'upper' ) || + ( isColumnMajor( order ) && u === 'lower' ) ) { ix = ox; iy = oy; @@ -154,7 +156,7 @@ function dsymv( order, uplo, N, alpha, A, LDA, x, strideX, beta, y, strideY ) { } return y; } - // ( order === 'row-major' && uplo === 'lower') || ( order === 'column-major' && uplo === 'upper' ) + // ( order === 'row-major' && u === 'lower') || ( order === 'column-major' && u === 'upper' ) ix = ox + ( ( N - 1 ) * strideX ); iy = oy + ( ( N - 1 ) * strideY ); for ( i = N - 1; i >= 0; i-- ) { diff --git a/lib/node_modules/@stdlib/blas/base/dsymv/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/dsymv/lib/ndarray.js index ea6d8bf9fd3b..ce5ccd7bb535 100644 --- a/lib/node_modules/@stdlib/blas/base/dsymv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/dsymv/lib/ndarray.js @@ -24,7 +24,7 @@ var dfill = require( '@stdlib/blas/ext/base/dfill' ).ndarray; var dscal = require( '@stdlib/blas/base/dscal' ).ndarray; var max = require( '@stdlib/math/base/special/max' ); var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major-string' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); @@ -35,7 +35,7 @@ var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string * Performs the matrix-vector operation `y = alpha*A*x + beta*y` where `alpha` and `beta` are scalars, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} A - matrix @@ -79,11 +79,13 @@ function dsymv( order, uplo, N, alpha, A, LDA, x, strideX, offsetX, beta, y, str var i; var j; var k; + var u; if ( !isLayout( order ) ) { throw new TypeError( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ); } if ( N < 0 ) { @@ -117,8 +119,8 @@ function dsymv( order, uplo, N, alpha, A, LDA, x, strideX, offsetX, beta, y, str // Form: y = alpha*A*x + y if ( - ( isRowMajor( order ) && uplo === 'upper' ) || - ( isColumnMajor( order ) && uplo === 'lower' ) + ( isRowMajor( order ) && u === 'upper' ) || + ( isColumnMajor( order ) && u === 'lower' ) ) { ix = ox; iy = oy; @@ -143,7 +145,7 @@ function dsymv( order, uplo, N, alpha, A, LDA, x, strideX, offsetX, beta, y, str } return y; } - // ( order === 'row-major' && uplo === 'lower') || ( order === 'column-major' && uplo === 'upper' ) + // ( order === 'row-major' && u === 'lower') || ( order === 'column-major' && u === 'upper' ) ix = ox + ( ( N - 1 ) * strideX ); iy = oy + ( ( N - 1 ) * strideY ); for ( i = N - 1; i >= 0; i-- ) { diff --git a/lib/node_modules/@stdlib/blas/base/dsyr/lib/dsyr.js b/lib/node_modules/@stdlib/blas/base/dsyr/lib/dsyr.js index c8c14a02e4ff..0209564e16df 100644 --- a/lib/node_modules/@stdlib/blas/base/dsyr/lib/dsyr.js +++ b/lib/node_modules/@stdlib/blas/base/dsyr/lib/dsyr.js @@ -21,7 +21,7 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var max = require( '@stdlib/math/base/special/fast/max' ); @@ -35,7 +35,7 @@ var base = require( './base.js' ); * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} x - input vector @@ -62,11 +62,13 @@ function dsyr( order, uplo, N, alpha, x, strideX, A, LDA ) { var sa1; var sa2; var ox; + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -90,7 +92,7 @@ function dsyr( order, uplo, N, alpha, x, strideX, A, LDA ) { sa2 = 1; } ox = stride2offset( N, strideX ); - return base( uplo, N, alpha, x, strideX, ox, A, sa1, sa2, 0 ); + return base( u, N, alpha, x, strideX, ox, A, sa1, sa2, 0 ); } diff --git a/lib/node_modules/@stdlib/blas/base/dsyr/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/dsyr/lib/ndarray.js index e82b95100197..2da19ed9da37 100644 --- a/lib/node_modules/@stdlib/blas/base/dsyr/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/dsyr/lib/ndarray.js @@ -20,7 +20,7 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -30,7 +30,7 @@ var base = require( './base.js' ); /** * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix. * -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} x - input vector @@ -57,7 +57,8 @@ var base = require( './base.js' ); * // A => [ 2.0, 4.0, 6.0, 2.0, 5.0, 8.0, 3.0, 2.0, 10.0 ] */ function dsyr( uplo, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-len - if ( !isMatrixTriangle( uplo ) ) { + var u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -76,7 +77,7 @@ function dsyr( uplo, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offse if ( N === 0 || alpha === 0.0 ) { return A; } - return base( uplo, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len + return base( u, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/dsyr2/lib/dsyr2.js b/lib/node_modules/@stdlib/blas/base/dsyr2/lib/dsyr2.js index c721c40150b5..5c85e1f90f34 100644 --- a/lib/node_modules/@stdlib/blas/base/dsyr2/lib/dsyr2.js +++ b/lib/node_modules/@stdlib/blas/base/dsyr2/lib/dsyr2.js @@ -22,7 +22,7 @@ var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var max = require( '@stdlib/math/base/special/fast/max' ); var format = require( '@stdlib/string/format' ); @@ -35,7 +35,7 @@ var base = require( './base.js' ); * Performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` where `α` is a scalar, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} x - first input vector @@ -67,11 +67,13 @@ function dsyr2( order, uplo, N, alpha, x, strideX, y, strideY, A, LDA ) { var sa2; var ox; var oy; + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -99,7 +101,7 @@ function dsyr2( order, uplo, N, alpha, x, strideX, y, strideY, A, LDA ) { } ox = stride2offset( N, strideX ); oy = stride2offset( N, strideY ); - return base( uplo, N, alpha, x, strideX, ox, y, strideY, oy, A, sa1, sa2, 0 ); // eslint-disable-line max-len + return base( u, N, alpha, x, strideX, ox, y, strideY, oy, A, sa1, sa2, 0 ); } diff --git a/lib/node_modules/@stdlib/blas/base/dsyr2/lib/dsyr2.native.js b/lib/node_modules/@stdlib/blas/base/dsyr2/lib/dsyr2.native.js index 7ae09da27006..8ebcc5e7b000 100644 --- a/lib/node_modules/@stdlib/blas/base/dsyr2/lib/dsyr2.native.js +++ b/lib/node_modules/@stdlib/blas/base/dsyr2/lib/dsyr2.native.js @@ -21,7 +21,6 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); var resolveOrder = require( '@stdlib/blas/base/layout-resolve-enum' ); var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); var max = require( '@stdlib/math/base/special/fast/max' ); @@ -35,7 +34,7 @@ var addon = require( './../src/addon.node' ); * Performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` where `α` is a scalar, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} x - first input vector @@ -63,10 +62,13 @@ var addon = require( './../src/addon.node' ); * // A => [ 3.0, 6.0, 9.0, 2.0, 9.0, 14.0, 3.0, 2.0, 19.0 ] */ function dsyr2( order, uplo, N, alpha, x, strideX, y, strideY, A, LDA ) { + var u; + if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveUplo( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -85,7 +87,7 @@ function dsyr2( order, uplo, N, alpha, x, strideX, y, strideY, A, LDA ) { if ( N === 0 || alpha === 0.0 ) { return A; } - addon( resolveOrder( order ), resolveUplo( uplo ), N, alpha, x, strideX, y, strideY, A, LDA ); // eslint-disable-line max-len + addon( resolveOrder( order ), u, N, alpha, x, strideX, y, strideY, A, LDA ); return A; } diff --git a/lib/node_modules/@stdlib/blas/base/dsyr2/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/dsyr2/lib/ndarray.js index a0aae998d303..a0fae53e1e45 100644 --- a/lib/node_modules/@stdlib/blas/base/dsyr2/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/dsyr2/lib/ndarray.js @@ -20,7 +20,7 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -30,7 +30,7 @@ var base = require( './base.js' ); /** * Performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` where `α` is a scalar, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} x - first input vector @@ -62,7 +62,8 @@ var base = require( './base.js' ); * // A => [ 3.0, 6.0, 9.0, 2.0, 9.0, 14.0, 3.0, 2.0, 19.0 ] */ function dsyr2( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-len, max-params - if ( !isMatrixTriangle( uplo ) ) { + var u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -84,7 +85,7 @@ function dsyr2( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, str if ( N === 0 || alpha === 0.0 ) { return A; } - return base( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len + return base( u, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/dsyr2/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/base/dsyr2/lib/ndarray.native.js index ab471ef9fe14..9d16bc2b60c3 100644 --- a/lib/node_modules/@stdlib/blas/base/dsyr2/lib/ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/base/dsyr2/lib/ndarray.native.js @@ -20,7 +20,6 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); var format = require( '@stdlib/string/format' ); var addon = require( './../src/addon.node' ); @@ -31,7 +30,7 @@ var addon = require( './../src/addon.node' ); /** * Performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` where `α` is a scalar, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float64Array} x - first input vector @@ -63,7 +62,8 @@ var addon = require( './../src/addon.node' ); * // A => [ 3.0, 6.0, 9.0, 2.0, 9.0, 14.0, 3.0, 2.0, 19.0 ] */ function dsyr2( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-len, max-params - if ( !isMatrixTriangle( uplo ) ) { + var u = resolveUplo( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -85,7 +85,7 @@ function dsyr2( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, str if ( N === 0 || alpha === 0.0 ) { return A; } - addon.ndarray( resolveUplo( uplo ), N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len + addon.ndarray( u, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len return A; } diff --git a/lib/node_modules/@stdlib/blas/base/dtrsv/lib/dtrsv.js b/lib/node_modules/@stdlib/blas/base/dtrsv/lib/dtrsv.js index b6998b8e6f8c..83f9106f8f4e 100644 --- a/lib/node_modules/@stdlib/blas/base/dtrsv/lib/dtrsv.js +++ b/lib/node_modules/@stdlib/blas/base/dtrsv/lib/dtrsv.js @@ -21,10 +21,10 @@ // MODULES // var max = require( '@stdlib/math/base/special/fast/max' ); -var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); -var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' ); -var isDiagonal = require( '@stdlib/blas/base/assert/is-diagonal-type' ); +var resolveLayout = require( '@stdlib/blas/base/layout-resolve-str' ); +var resolveTriangle = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); +var resolveTranspose = require( '@stdlib/blas/base/transpose-operation-resolve-str' ); +var resolveDiagonal = require( '@stdlib/blas/base/diagonal-type-resolve-str' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var format = require( '@stdlib/string/format' ); @@ -36,10 +36,10 @@ var base = require( './base.js' ); /** * Solves one of the systems of equations `A*x = b` or `A^T*x = b` where `b` and `x` are `N` element vectors and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix. * -* @param {string} order - storage layout -* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix -* @param {string} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed -* @param {string} diag - specifies whether `A` has a unit diagonal +* @param {(integer|string)} order - storage layout +* @param {(integer|string)} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {(integer|string)} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed +* @param {(integer|string)} diag - specifies whether `A` has a unit diagonal * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {Float64Array} A - input matrix * @param {integer} LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`) @@ -67,17 +67,25 @@ function dtrsv( order, uplo, trans, diag, N, A, LDA, x, strideX ) { var sa1; var sa2; var ox; + var l; + var u; + var t; + var d; - if ( !isLayout( order ) ) { + l = resolveLayout( order ); + if ( l === null ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveTriangle( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } - if ( !isTransposeOperation( trans ) ) { + t = resolveTranspose( trans ); + if ( t === null ) { throw new TypeError( format( 'invalid argument. Third argument must be a valid transpose operation. Value: `%s`.', trans ) ); } - if ( !isDiagonal( diag ) ) { + d = resolveDiagonal( diag ); + if ( d === null ) { throw new TypeError( format( 'invalid argument. Fourth argument must be a valid diagonal type. Value: `%s`.', diag ) ); } if ( N < 0 ) { @@ -92,7 +100,7 @@ function dtrsv( order, uplo, trans, diag, N, A, LDA, x, strideX ) { if ( N === 0 ) { return x; } - if ( isColumnMajor( order ) ) { + if ( isColumnMajor( l ) ) { sa1 = 1; sa2 = LDA; } else { // order === 'row-major' @@ -100,7 +108,7 @@ function dtrsv( order, uplo, trans, diag, N, A, LDA, x, strideX ) { sa2 = 1; } ox = stride2offset( N, strideX ); - return base( uplo, trans, diag, N, A, sa1, sa2, 0, x, strideX, ox ); + return base( u, t, d, N, A, sa1, sa2, 0, x, strideX, ox ); } diff --git a/lib/node_modules/@stdlib/blas/base/dtrsv/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/dtrsv/lib/ndarray.js index 6651f15baa51..3834bd8171c3 100644 --- a/lib/node_modules/@stdlib/blas/base/dtrsv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/dtrsv/lib/ndarray.js @@ -20,9 +20,9 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); -var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' ); -var isDiagonal = require( '@stdlib/blas/base/assert/is-diagonal-type' ); +var resolveTriangle = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); +var resolveTranspose = require( '@stdlib/blas/base/transpose-operation-resolve-str' ); +var resolveDiagonal = require( '@stdlib/blas/base/diagonal-type-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -32,9 +32,9 @@ var base = require( './base.js' ); /** * Solves one of the systems of equations `A*x = b` or `A^T*x = b` where `b` and `x` are `N` element vectors and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix. * -* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix -* @param {string} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed -* @param {string} diag - specifies whether `A` has a unit diagonal +* @param {(integer|string)} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {(integer|string)} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed +* @param {(integer|string)} diag - specifies whether `A` has a unit diagonal * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {Float64Array} A - input matrix * @param {integer} strideA1 - stride of the first dimension of `A` @@ -62,13 +62,20 @@ var base = require( './base.js' ); * // x => [ 0.0, -4.0, 3.0 ] */ function dtrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX, offsetX ) { // eslint-disable-line max-params, max-len - if ( !isMatrixTriangle( uplo ) ) { + var u; + var t; + var d; + + u = resolveTriangle( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } - if ( !isTransposeOperation( trans ) ) { + t = resolveTranspose( trans ); + if ( t === null ) { throw new TypeError( format( 'invalid argument. Second argument must be a valid transpose operation. Value: `%s`.', trans ) ); } - if ( !isDiagonal( diag ) ) { + d = resolveDiagonal( diag ); + if ( d === null ) { throw new TypeError( format( 'invalid argument. Third argument must be a valid diagonal type. Value: `%s`.', diag ) ); } if ( N < 0 ) { @@ -86,7 +93,7 @@ function dtrsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX if ( N === 0 ) { return x; } - return base( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX, offsetX ); // eslint-disable-line max-len + return base( u, t, d, N, A, strideA1, strideA2, offsetA, x, strideX, offsetX ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/gsyr/lib/main.js b/lib/node_modules/@stdlib/blas/base/gsyr/lib/main.js index be34a72b1df1..ab607b7a1c70 100644 --- a/lib/node_modules/@stdlib/blas/base/gsyr/lib/main.js +++ b/lib/node_modules/@stdlib/blas/base/gsyr/lib/main.js @@ -21,7 +21,7 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var max = require( '@stdlib/math/base/special/fast/max' ); @@ -35,7 +35,7 @@ var base = require( './base.js' ); * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {NumericArray} x - input vector @@ -60,11 +60,13 @@ function gsyr( order, uplo, N, alpha, x, strideX, A, LDA ) { var sa1; var sa2; var ox; + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -88,7 +90,7 @@ function gsyr( order, uplo, N, alpha, x, strideX, A, LDA ) { sa2 = 1; } ox = stride2offset( N, strideX ); - return base( uplo, N, alpha, x, strideX, ox, A, sa1, sa2, 0 ); + return base( u, N, alpha, x, strideX, ox, A, sa1, sa2, 0 ); } diff --git a/lib/node_modules/@stdlib/blas/base/gsyr/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/gsyr/lib/ndarray.js index fcbe90edddc7..b01a4b28c311 100644 --- a/lib/node_modules/@stdlib/blas/base/gsyr/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/gsyr/lib/ndarray.js @@ -20,7 +20,7 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -30,7 +30,7 @@ var base = require( './base.js' ); /** * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix. * -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {NumericArray} x - input vector @@ -55,7 +55,8 @@ var base = require( './base.js' ); * // A => [ 2.0, 4.0, 6.0, 2.0, 5.0, 8.0, 3.0, 2.0, 10.0 ] */ function gsyr( uplo, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-len - if ( !isMatrixTriangle( uplo ) ) { + var u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -74,7 +75,7 @@ function gsyr( uplo, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offse if ( N === 0 || alpha === 0.0 ) { return A; } - return base( uplo, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len + return base( u, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/layouts/test/test.js b/lib/node_modules/@stdlib/blas/base/layouts/test/test.js index e5765877c4a0..deceef9a750e 100644 --- a/lib/node_modules/@stdlib/blas/base/layouts/test/test.js +++ b/lib/node_modules/@stdlib/blas/base/layouts/test/test.js @@ -66,7 +66,7 @@ tape( 'attached to the main function is an `enum` method to return an object map ]; for ( i = 0; i < o.length; i++ ) { t.strictEqual( hasOwnProp( obj, o[ i ] ), true, 'has property `' + o[ i ] + '`' ); - t.strictEqual( isNonNegativeInteger( obj[ o[i] ] ), true, 'returns expected value' ); + t.strictEqual( isNonNegativeInteger( obj[ o[ i ] ] ), true, 'returns expected value' ); } t.end(); diff --git a/lib/node_modules/@stdlib/blas/base/matrix-orientations/test/test.js b/lib/node_modules/@stdlib/blas/base/matrix-orientations/test/test.js index 8c4a6a26efc1..19fb62f3d3a9 100644 --- a/lib/node_modules/@stdlib/blas/base/matrix-orientations/test/test.js +++ b/lib/node_modules/@stdlib/blas/base/matrix-orientations/test/test.js @@ -66,7 +66,7 @@ tape( 'attached to the main function is an `enum` method to return an object map ]; for ( i = 0; i < o.length; i++ ) { t.strictEqual( hasOwnProp( obj, o[ i ] ), true, 'has property `' + o[ i ] + '`' ); - t.strictEqual( isNonNegativeInteger( obj[ o[i] ] ), true, 'returns expected value' ); + t.strictEqual( isNonNegativeInteger( obj[ o[ i ] ] ), true, 'returns expected value' ); } t.end(); diff --git a/lib/node_modules/@stdlib/blas/base/matrix-triangles/test/test.js b/lib/node_modules/@stdlib/blas/base/matrix-triangles/test/test.js index 34bf34b56d5a..f0a7307f333b 100644 --- a/lib/node_modules/@stdlib/blas/base/matrix-triangles/test/test.js +++ b/lib/node_modules/@stdlib/blas/base/matrix-triangles/test/test.js @@ -66,7 +66,7 @@ tape( 'attached to the main function is an `enum` method to return an object map ]; for ( i = 0; i < o.length; i++ ) { t.strictEqual( hasOwnProp( obj, o[ i ] ), true, 'has property `' + o[ i ] + '`' ); - t.strictEqual( isNonNegativeInteger( obj[ o[i] ] ), true, 'returns expected value' ); + t.strictEqual( isNonNegativeInteger( obj[ o[ i ] ] ), true, 'returns expected value' ); } t.end(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/README.md index 2e90981de895..c89d1f47157d 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/README.md +++ b/lib/node_modules/@stdlib/blas/base/ndarray/README.md @@ -47,6 +47,7 @@ The namespace exposes the following APIs: - [`caxpy( arrays )`][@stdlib/blas/base/ndarray/caxpy]: multiply a one-dimensional single-precision complex floating-point ndarray `x` by a constant `alpha` and add the result to a one-dimensional single-precision complex floating-point ndarray `y`. - [`ccopy( arrays )`][@stdlib/blas/base/ndarray/ccopy]: copy values from a one-dimensional single-precision complex floating-point ndarray `x` into a one-dimensional single-precision complex floating-point ndarray `y`. +- [`cgemv( arrays )`][@stdlib/blas/base/ndarray/cgemv]: perform one of the matrix-vector operations `y = alpha*A*x + beta*y`, `y = alpha*A^T*x + beta*y`, or `y = alpha*A^H*x + beta*y`. - [`cscal( arrays )`][@stdlib/blas/base/ndarray/cscal]: multiply a one-dimensional single-precision complex floating-point ndarray by a scalar constant. - [`csscal( arrays )`][@stdlib/blas/base/ndarray/csscal]: multiply a one-dimensional single-precision complex floating-point ndarray by a single-precision floating-point scalar constant. - [`cswap( arrays )`][@stdlib/blas/base/ndarray/cswap]: interchange two one-dimensional single-precision complex floating-point ndarrays. @@ -54,19 +55,29 @@ The namespace exposes the following APIs: - [`daxpy( arrays )`][@stdlib/blas/base/ndarray/daxpy]: multiply a one-dimensional double-precision floating-point ndarray `x` by a constant `alpha` and add the result to a one-dimensional double-precision floating-point ndarray `y`. - [`dcopy( arrays )`][@stdlib/blas/base/ndarray/dcopy]: copy values from a one-dimensional double-precision floating-point ndarray `x` into a one-dimensional double-precision floating-point ndarray `y`. - [`ddot( arrays )`][@stdlib/blas/base/ndarray/ddot]: calculate the dot product of two one-dimensional double-precision floating-point ndarrays. +- [`dgemm( arrays )`][@stdlib/blas/base/ndarray/dgemm]: perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`. +- [`dgemv( arrays )`][@stdlib/blas/base/ndarray/dgemv]: perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`. +- [`dger( arrays )`][@stdlib/blas/base/ndarray/dger]: perform the rank 1 operation `A = alpha*x*y^T + A`. - [`dnrm2( arrays )`][@stdlib/blas/base/ndarray/dnrm2]: compute the L2-norm of a one-dimensional double-precision floating-point ndarray. - [`dscal( arrays )`][@stdlib/blas/base/ndarray/dscal]: multiply a one-dimensional double-precision floating-point ndarray by a scalar constant. - [`dsdot( arrays )`][@stdlib/blas/base/ndarray/dsdot]: calculate the dot product of two one-dimensional single-precision floating-point ndarrays with double-precision accumulation. +- [`dspr( arrays )`][@stdlib/blas/base/ndarray/dspr]: perform the symmetric rank 1 operation `A = alpha*x*x^T + A` for a symmetric matrix `A` supplied in packed form. - [`dswap( arrays )`][@stdlib/blas/base/ndarray/dswap]: interchange two one-dimensional double-precision floating-point ndarrays. +- [`dsyr( arrays )`][@stdlib/blas/base/ndarray/dsyr]: perform the symmetric rank 1 operation `A = alpha*x*x^T + A`. +- [`dsyr2( arrays )`][@stdlib/blas/base/ndarray/dsyr2]: perform the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`. - [`dzasum( arrays )`][@stdlib/blas/base/ndarray/dzasum]: calculate the sum of absolute values for all elements in a one-dimensional double-precision complex floating-point ndarray. - [`dznrm2( arrays )`][@stdlib/blas/base/ndarray/dznrm2]: compute the L2-norm of a one-dimensional double-precision complex floating-point ndarray. - [`gasum( arrays )`][@stdlib/blas/base/ndarray/gasum]: calculate the sum of absolute values for all elements in a one-dimensional ndarray. - [`gaxpy( arrays )`][@stdlib/blas/base/ndarray/gaxpy]: multiply a one-dimensional ndarray `x` by a constant `alpha` and add the result to a one-dimensional ndarray `y`. - [`gcopy( arrays )`][@stdlib/blas/base/ndarray/gcopy]: copy values from a one-dimensional ndarray `x` into a one-dimensional ndarray `y`. - [`gdot( arrays )`][@stdlib/blas/base/ndarray/gdot]: calculate the dot product of two one-dimensional ndarrays. +- [`ggemm( arrays )`][@stdlib/blas/base/ndarray/ggemm]: perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`. +- [`ggemv( arrays )`][@stdlib/blas/base/ndarray/ggemv]: perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`. +- [`gger( arrays )`][@stdlib/blas/base/ndarray/gger]: perform the rank 1 operation `A = alpha*x*y^T + A`. - [`gnrm2( arrays )`][@stdlib/blas/base/ndarray/gnrm2]: compute the L2-norm of a one-dimensional ndarray. - [`gscal( arrays )`][@stdlib/blas/base/ndarray/gscal]: multiply a one-dimensional ndarray by a scalar constant. - [`gswap( arrays )`][@stdlib/blas/base/ndarray/gswap]: interchange two one-dimensional ndarrays. +- [`gsyr( arrays )`][@stdlib/blas/base/ndarray/gsyr]: perform the symmetric rank 1 operation `A = alpha*x*x^T + A`. - [`idamax( arrays )`][@stdlib/blas/base/ndarray/idamax]: find the index of the first element having the maximum absolute value for all elements in a one-dimensional double-precision floating-point ndarray. - [`igamax( arrays )`][@stdlib/blas/base/ndarray/igamax]: find the index of the first element having the maximum absolute value for all elements in a one-dimensional ndarray. - [`isamax( arrays )`][@stdlib/blas/base/ndarray/isamax]: find the index of the first element having the maximum absolute value for all elements in a one-dimensional single-precision floating-point ndarray. @@ -77,9 +88,15 @@ The namespace exposes the following APIs: - [`scopy( arrays )`][@stdlib/blas/base/ndarray/scopy]: copy values from a one-dimensional single-precision floating-point ndarray `x` into a one-dimensional single-precision floating-point ndarray `y`. - [`sdot( arrays )`][@stdlib/blas/base/ndarray/sdot]: calculate the dot product of two one-dimensional single-precision floating-point ndarrays. - [`sdsdot( arrays )`][@stdlib/blas/base/ndarray/sdsdot]: calculate the dot product of two one-dimensional single-precision floating-point ndarrays with extended accumulation. +- [`sgemm( arrays )`][@stdlib/blas/base/ndarray/sgemm]: perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`. +- [`sgemv( arrays )`][@stdlib/blas/base/ndarray/sgemv]: perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`. +- [`sger( arrays )`][@stdlib/blas/base/ndarray/sger]: perform the rank 1 operation `A = alpha*x*y^T + A`. - [`snrm2( arrays )`][@stdlib/blas/base/ndarray/snrm2]: compute the L2-norm of a one-dimensional single-precision floating-point ndarray. - [`sscal( arrays )`][@stdlib/blas/base/ndarray/sscal]: multiply a one-dimensional single-precision floating-point ndarray by a scalar constant. +- [`sspr( arrays )`][@stdlib/blas/base/ndarray/sspr]: perform the symmetric rank 1 operation `A = alpha*x*x^T + A` for a symmetric matrix `A` supplied in packed form. - [`sswap( arrays )`][@stdlib/blas/base/ndarray/sswap]: interchange two one-dimensional single-precision floating-point ndarrays. +- [`ssyr( arrays )`][@stdlib/blas/base/ndarray/ssyr]: perform the symmetric rank 1 operation `A = alpha*x*x^T + A`. +- [`ssyr2( arrays )`][@stdlib/blas/base/ndarray/ssyr2]: perform the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`. - [`zaxpy( arrays )`][@stdlib/blas/base/ndarray/zaxpy]: multiply a one-dimensional double-precision complex floating-point ndarray `x` by a constant `alpha` and add the result to a one-dimensional double-precision complex floating-point ndarray `y`. - [`zcopy( arrays )`][@stdlib/blas/base/ndarray/zcopy]: copy values from a one-dimensional double-precision complex floating-point ndarray `x` into a one-dimensional double-precision complex floating-point ndarray `y`. - [`zdscal( arrays )`][@stdlib/blas/base/ndarray/zdscal]: multiply a one-dimensional double-precision complex floating-point ndarray by a double-precision floating-point scalar constant. @@ -131,6 +148,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/base/ndarray/ccopy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/ccopy +[@stdlib/blas/base/ndarray/cgemv]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/cgemv + [@stdlib/blas/base/ndarray/cscal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/cscal [@stdlib/blas/base/ndarray/csscal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/csscal @@ -145,14 +164,26 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/base/ndarray/ddot]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/ddot +[@stdlib/blas/base/ndarray/dgemm]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dgemm + +[@stdlib/blas/base/ndarray/dgemv]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dgemv + +[@stdlib/blas/base/ndarray/dger]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dger + [@stdlib/blas/base/ndarray/dnrm2]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dnrm2 [@stdlib/blas/base/ndarray/dscal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dscal [@stdlib/blas/base/ndarray/dsdot]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dsdot +[@stdlib/blas/base/ndarray/dspr]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dspr + [@stdlib/blas/base/ndarray/dswap]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dswap +[@stdlib/blas/base/ndarray/dsyr]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dsyr + +[@stdlib/blas/base/ndarray/dsyr2]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dsyr2 + [@stdlib/blas/base/ndarray/dzasum]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dzasum [@stdlib/blas/base/ndarray/dznrm2]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/dznrm2 @@ -165,12 +196,20 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/base/ndarray/gdot]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/gdot +[@stdlib/blas/base/ndarray/ggemm]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/ggemm + +[@stdlib/blas/base/ndarray/ggemv]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/ggemv + +[@stdlib/blas/base/ndarray/gger]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/gger + [@stdlib/blas/base/ndarray/gnrm2]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/gnrm2 [@stdlib/blas/base/ndarray/gscal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/gscal [@stdlib/blas/base/ndarray/gswap]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/gswap +[@stdlib/blas/base/ndarray/gsyr]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/gsyr + [@stdlib/blas/base/ndarray/idamax]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/idamax [@stdlib/blas/base/ndarray/igamax]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/igamax @@ -191,12 +230,24 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/base/ndarray/sdsdot]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/sdsdot +[@stdlib/blas/base/ndarray/sgemm]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/sgemm + +[@stdlib/blas/base/ndarray/sgemv]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/sgemv + +[@stdlib/blas/base/ndarray/sger]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/sger + [@stdlib/blas/base/ndarray/snrm2]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/snrm2 [@stdlib/blas/base/ndarray/sscal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/sscal +[@stdlib/blas/base/ndarray/sspr]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/sspr + [@stdlib/blas/base/ndarray/sswap]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/sswap +[@stdlib/blas/base/ndarray/ssyr]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/ssyr + +[@stdlib/blas/base/ndarray/ssyr2]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/ssyr2 + [@stdlib/blas/base/ndarray/zaxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/zaxpy [@stdlib/blas/base/ndarray/zcopy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/base/ndarray/zcopy diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/README.md new file mode 100644 index 000000000000..5a1f35150666 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/README.md @@ -0,0 +1,152 @@ + + +# cgemv + +> Perform one of the matrix-vector operations `y = alpha*A*x + beta*y`, `y = alpha*A^T*x + beta*y`, or `y = alpha*A^H*x + beta*y`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var cgemv = require( '@stdlib/blas/base/ndarray/cgemv' ); +``` + +#### cgemv( arrays ) + +Performs one of the matrix-vector operations `y = alpha*A*x + beta*y`, `y = alpha*A^T*x + beta*y`, or `y = alpha*A^H*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + + + +```javascript +var Complex64Matrix = require( '@stdlib/ndarray/matrix/complex64' ); +var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + +var A = new Complex64Matrix( [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ] ] ); +var x = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' +}); +var beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' +}); + +var out = cgemv( [ A, x, y, trans, alpha, beta ] ); +// returns [ [ -9.0, 30.0 ], [ -15.0, 72.0 ] ] + +var bool = ( out === y ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to `y`. + - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Matrix = require( '@stdlib/ndarray/matrix/complex64' ); +var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var cgemv = require( '@stdlib/blas/base/ndarray/cgemv' ); + +var opts = { + 'dtype': 'float32' +}; + +var A = new Complex64Matrix( discreteUniform( 24, 0, 10, opts ).buffer, 0, [ 3, 4 ] ); +var x = new Complex64Vector( discreteUniform( 8, 0, 10, opts ) ); +var y = new Complex64Vector( discreteUniform( 6, 0, 10, opts ) ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' +}); +var beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' +}); + +var out = cgemv( [ A, x, y, trans, alpha, beta ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/benchmark/benchmark.js new file mode 100644 index 000000000000..fb018b0a67ac --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/benchmark/benchmark.js @@ -0,0 +1,139 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var realf = require( '@stdlib/complex/float32/real' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +var Complex64Matrix = require( '@stdlib/ndarray/matrix/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var cgemv = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'complex64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var A; + var x; + var y; + + Abuf = uniform( len*len*2, -100.0, 100.0, { + 'dtype': 'float32' + }); + A = new Complex64Matrix( Abuf.buffer, 0, [ len, len ] ); + + xbuf = uniform( len*2, -100.0, 100.0, { + 'dtype': 'float32' + }); + x = new Complex64Vector( xbuf.buffer ); + + ybuf = uniform( len*2, -100.0, 100.0, { + 'dtype': 'float32' + }); + y = new Complex64Vector( ybuf.buffer ); + + alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), options ); + beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), options ); + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = cgemv( [ A, x, y, trans, alpha, beta ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnanf( realf( z.get( i%len ) ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/docs/repl.txt new file mode 100644 index 000000000000..44f44c2eba7a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/docs/repl.txt @@ -0,0 +1,54 @@ + +{{alias}}( arrays ) + Performs one of the matrix-vector operations `y = alpha*A*x + beta*y`, + `y = alpha*A^T*x + beta*y`, or `y = alpha*A^H*x + beta*y`, where `alpha` + and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` + is an `M` by `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to `y`. + - a zero-dimensional ndarray specifying whether `A` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `beta`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var abuf = [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/complex64}}( abuf ); + + > var xbuf = [ 1.0, 2.0, 3.0, 4.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/complex64}}( xbuf ); + + > var ybuf = [ 1.0, 2.0, 3.0, 4.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/complex64}}( ybuf ); + + > var opts = { 'dtype': 'complex64' }; + > var ca = new {{alias:@stdlib/complex/float32/ctor}}( 1.0, 0.0 ); + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( ca, opts ); + + > var cb = new {{alias:@stdlib/complex/float32/ctor}}( 1.0, 0.0 ); + > var beta = {{alias:@stdlib/ndarray/from-scalar}}( cb, opts ); + + > var trans = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + + > {{alias}}( [ A, x, y, trans, alpha, beta ] ); + > y + [ [ -9.0, 30.0 ], [ -15.0, 72.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/docs/types/index.d.ts new file mode 100644 index 000000000000..4fb92374d8a6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/docs/types/index.d.ts @@ -0,0 +1,74 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { complex64ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs one of the matrix-vector operations `y = alpha*A*x + beta*y`, `y = alpha*A^T*x + beta*y`, or `y = alpha*A^H*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to `y`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Complex64Matrix = require( '@stdlib/ndarray/matrix/complex64' ); +* var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Complex64Matrix( [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ] ] ); +* var x = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); +* var y = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { +* 'dtype': 'complex64' +* }); +* var beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { +* 'dtype': 'complex64' +* }); +* +* var z = cgemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ [ -9.0, 30.0 ], [ -15.0, 72.0 ] ] +* +* var bool = ( z === y ); +* // returns true +*/ +declare function cgemv( arrays: [ complex64ndarray, complex64ndarray, complex64ndarray, ndarray, complex64ndarray, complex64ndarray ] ): complex64ndarray; + + +// EXPORTS // + +export = cgemv; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/docs/types/test.ts new file mode 100644 index 000000000000..1e452d275cef --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/docs/types/test.ts @@ -0,0 +1,87 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import cgemv = require( '@stdlib/blas/base/ndarray/cgemv' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const A = zeros( [ 2, 3 ], { + 'dtype': 'complex64' + }); + const x = zeros( [ 3 ], { + 'dtype': 'complex64' + }); + const y = zeros( [ 2 ], { + 'dtype': 'complex64' + }); + const trans = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'complex64' + }); + const beta = zeros( [], { + 'dtype': 'complex64' + }); + + cgemv( [ A, x, y, trans, alpha, beta ] ); // $ExpectType complex64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + cgemv( '10' ); // $ExpectError + cgemv( 10 ); // $ExpectError + cgemv( true ); // $ExpectError + cgemv( false ); // $ExpectError + cgemv( null ); // $ExpectError + cgemv( undefined ); // $ExpectError + cgemv( [] ); // $ExpectError + cgemv( {} ); // $ExpectError + cgemv( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = zeros( [ 2, 3 ], { + 'dtype': 'complex64' + }); + const x = zeros( [ 3 ], { + 'dtype': 'complex64' + }); + const y = zeros( [ 2 ], { + 'dtype': 'complex64' + }); + const trans = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'complex64' + }); + const beta = zeros( [], { + 'dtype': 'complex64' + }); + + cgemv(); // $ExpectError + cgemv( [ A, x, y, trans, alpha, beta ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/examples/index.js new file mode 100644 index 000000000000..816f65952baa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/examples/index.js @@ -0,0 +1,49 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Matrix = require( '@stdlib/ndarray/matrix/complex64' ); +var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var cgemv = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var A = new Complex64Matrix( discreteUniform( 24, 0, 10, opts ).buffer, 0, [ 3, 4 ] ); +var x = new Complex64Vector( discreteUniform( 8, 0, 10, opts ) ); +var y = new Complex64Vector( discreteUniform( 6, 0, 10, opts ) ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' +}); +var beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' +}); + +var out = cgemv( [ A, x, y, trans, alpha, beta ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/lib/index.js new file mode 100644 index 000000000000..21771b44bd23 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/lib/index.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform one of the matrix-vector operations `y = alpha*A*x + beta*y`, `y = alpha*A^T*x + beta*y`, or `y = alpha*A^H*x + beta*y`. +* +* @module @stdlib/blas/base/ndarray/cgemv +* +* @example +* var Complex64Matrix = require( '@stdlib/ndarray/matrix/complex64' ); +* var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* var cgemv = require( '@stdlib/blas/base/ndarray/cgemv' ); +* +* var A = new Complex64Matrix( [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ] ] ); +* var x = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); +* var y = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { +* 'dtype': 'complex64' +* }); +* var beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { +* 'dtype': 'complex64' +* }); +* +* var out = cgemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ [ -9.0, 30.0 ], [ -15.0, 72.0 ] ] +* +* var bool = ( out === y ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/lib/main.js new file mode 100644 index 000000000000..5ad4e3565dcc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/lib/main.js @@ -0,0 +1,107 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/cgemv' ).ndarray; + + +// MAIN // + +/** +* Performs one of the matrix-vector operations `y = alpha*A*x + beta*y`, `y = alpha*A^T*x + beta*y`, or `y = alpha*A^H*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to `y`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Complex64Matrix = require( '@stdlib/ndarray/matrix/complex64' ); +* var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Complex64Matrix( [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ] ] ); +* var x = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); +* var y = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { +* 'dtype': 'complex64' +* }); +* var beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { +* 'dtype': 'complex64' +* }); +* +* var z = cgemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ [ -9.0, 30.0 ], [ -15.0, 72.0 ] ] +* +* var bool = ( z === y ); +* // returns true +*/ +function cgemv( arrays ) { + var trans; + var alpha; + var beta; + var sh; + var st; + var A; + var x; + var y; + + A = arrays[ 0 ]; + x = arrays[ 1 ]; + y = arrays[ 2 ]; + + trans = ndarraylike2scalar( arrays[ 3 ] ); + alpha = ndarraylike2scalar( arrays[ 4 ] ); + beta = ndarraylike2scalar( arrays[ 5 ] ); + + sh = getShape( A, false ); + st = getStrides( A, false ); + + strided( trans, sh[ 0 ], sh[ 1 ], alpha, getData( A ), st[ 0 ], st[ 1 ], getOffset( A ), getData( x ), getStride( x, 0 ), getOffset( x ), beta, getData( y ), getStride( y, 0 ), getOffset( y ) ); + + return y; +} + + +// EXPORTS // + +module.exports = cgemv; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/package.json new file mode 100644 index 000000000000..8fb04277dfc7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/base/ndarray/cgemv", + "version": "0.0.0", + "description": "Perform one of the matrix-vector operations `y = alpha*A*x + beta*y`, `y = alpha*A^T*x + beta*y`, or `y = alpha*A^H*x + beta*y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "cgemv", + "linear", + "algebra", + "subroutines", + "matrix-vector", + "multiply", + "vector", + "matrix", + "array", + "ndarray", + "complex64", + "complex", + "complex64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/test/test.js new file mode 100644 index 000000000000..61fb6e7d2fe2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/cgemv/test/test.js @@ -0,0 +1,567 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var cgemv = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'complex64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'complex64', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cgemv, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( cgemv.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0 // 1 + ]); + ybuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + Abuf = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' + }); + beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = cgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Complex64Array( [ -9.0, 30.0, -15.0, 72.0, -21.0, 114.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + ybuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0 // 1 + ]); + Abuf = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( new Complex64( 2.0, 0.0 ), { + 'dtype': 'complex64' + }); + beta = scalar2ndarray( new Complex64( 2.0, 0.0 ), { + 'dtype': 'complex64' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = cgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Complex64Array( [ -52.0, 296.0, -60.0, 384.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A^T*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0 // 1 + ]); + ybuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0 // 1 + ]); + Abuf = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + A = matrix( Abuf, 2, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' + }); + beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = cgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Complex64Array( [ -11.0, 44.0, -13.0, 66.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A^H*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0 // 1 + ]); + ybuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0 // 1 + ]); + Abuf = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + A = matrix( Abuf, 2, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' + }); + beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + 'dtype': 'complex64' + }); + + trans = scalar2ndarray( resolveEnum( 'conjugate-transpose' ), { + 'dtype': 'int8' + }); + + v = cgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Complex64Array( [ 45.0, 4.0, 67.0, 10.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-vector operation with complex scalars', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0 // 1 + ]); + ybuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0 // 1 + ]); + Abuf = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + A = matrix( Abuf, 2, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( new Complex64( 0.5, 0.5 ), { + 'dtype': 'complex64' + }); + beta = scalar2ndarray( new Complex64( 0.5, -0.5 ), { + 'dtype': 'complex64' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = cgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Complex64Array( [ -17.5, 9.5, -39.5, 25.5 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0 // 1 + ]); + ybuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + Abuf = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + alpha = scalar2ndarray( new Complex64( 0.0, 0.0 ), { + 'dtype': 'complex64' + }); + beta = scalar2ndarray( new Complex64( 2.0, 0.0 ), { + 'dtype': 'complex64' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = cgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Complex64Array( [ 2.0, 4.0, 6.0, 8.0, 10.0, 12.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides (transpose)', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + + xbuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0 // 1 + ]); + x = vector( xbuf, 2, 2, 0 ); + + ybuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 2 + 6.0 // 2 + ]); + y = vector( ybuf, 3, 2, 0 ); + + alpha = scalar2ndarray( new Complex64( 2.0, 0.0 ), { + 'dtype': 'complex64' + }); + beta = scalar2ndarray( new Complex64( 2.0, 0.0 ), { + 'dtype': 'complex64' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = cgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Complex64Array( [ -26.0, 116.0, 0.0, 0.0, -30.0, 160.0, 0.0, 0.0, -34.0, 204.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides (conjugate-transpose)', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + + xbuf = new Complex64Array([ + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 1.0, // 0 + 2.0 // 0 + ]); + x = vector( xbuf, 2, -2, 2 ); + + ybuf = new Complex64Array([ + 5.0, // 2 + 6.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 1.0, // 0 + 2.0 // 0 + ]); + y = vector( ybuf, 3, -2, 4 ); + + alpha = scalar2ndarray( new Complex64( 2.0, 0.0 ), { + 'dtype': 'complex64' + }); + beta = scalar2ndarray( new Complex64( 2.0, 0.0 ), { + 'dtype': 'complex64' + }); + + trans = scalar2ndarray( resolveEnum( 'conjugate-transpose' ), { + 'dtype': 'int8' + }); + + v = cgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Complex64Array( [ 206.0, 36.0, 0.0, 0.0, 162.0, 24.0, 0.0, 0.0, 118.0, 12.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0 + ]); + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + + xbuf = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + x = vector( xbuf, 3, 1, 2 ); + + ybuf = new Complex64Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0 // 1 + ]); + y = vector( ybuf, 2, 2, 1 ); + + alpha = scalar2ndarray( new Complex64( 2.0, 0.0 ), { + 'dtype': 'complex64' + }); + beta = scalar2ndarray( new Complex64( 2.0, 0.0 ), { + 'dtype': 'complex64' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = cgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Complex64Array([ + 0.0, + 0.0, + -40.0, + 180.0, + 0.0, + 0.0, + -72.0, + 436.0 + ]); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/README.md new file mode 100644 index 000000000000..1bc8c67dde33 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/README.md @@ -0,0 +1,146 @@ + + +# dgemm + +> Perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dgemm = require( '@stdlib/blas/base/ndarray/dgemm' ); +``` + +#### dgemm( arrays ) + +Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. + +```javascript +var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + +var A = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +var B = new Float64Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); +var C = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); + +var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' +}); +var beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' +}); + +var out = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); +// returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] + +var bool = ( out === C ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a two-dimensional input ndarray corresponding to `B`. + - a two-dimensional input/output ndarray corresponding to `C`. + - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dgemm = require( '@stdlib/blas/base/ndarray/dgemm' ); + +var opts = { + 'dtype': 'float64' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var B = discreteUniform( [ 4, 2 ], 0, 10, opts ); +var C = discreteUniform( [ 3, 2 ], 0, 10, opts ); + +var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/benchmark/benchmark.js new file mode 100644 index 000000000000..2ad514bf7f6e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/benchmark/benchmark.js @@ -0,0 +1,125 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dgemm = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var transA; + var transB; + var alpha; + var beta; + var A; + var B; + var C; + + A = uniform( [ len, len ], -100.0, 100.0, options ); + B = uniform( [ len, len ], -100.0, 100.0, options ); + C = uniform( [ len, len ], -100.0, 100.0, options ); + + alpha = scalar2ndarray( 1.0, options ); + beta = scalar2ndarray( 1.0, options ); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( i%len, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/docs/repl.txt new file mode 100644 index 000000000000..62f1588fec66 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/docs/repl.txt @@ -0,0 +1,54 @@ + +{{alias}}( arrays ) + Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, + where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` + are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` + matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a two-dimensional input ndarray corresponding to `B`. + - a two-dimensional input/output ndarray corresponding to `C`. + - a zero-dimensional ndarray specifying whether `A` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray specifying whether `B` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `beta`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var abuf = [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float64}}( abuf ); + + > var bbuf = [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ]; + > var B = new {{alias:@stdlib/ndarray/matrix/float64}}( bbuf ); + + > var cbuf = [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ]; + > var C = new {{alias:@stdlib/ndarray/matrix/float64}}( cbuf ); + + > var opts = { 'dtype': 'float64' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + > var beta = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > var transA = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + > var transB = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + + > {{alias}}( [ A, B, C, transA, transB, alpha, beta ] ); + > C + [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/docs/types/index.d.ts new file mode 100644 index 000000000000..57d7cd9dbb62 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/docs/types/index.d.ts @@ -0,0 +1,76 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a two-dimensional input ndarray corresponding to `B`. +* - a two-dimensional input/output ndarray corresponding to `C`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* var B = new Float64Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); +* var C = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* +* var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var z = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); +* // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] +* +* var bool = ( z === C ); +* // returns true +*/ +declare function dgemm( arrays: [ float64ndarray, float64ndarray, float64ndarray, ndarray, ndarray, float64ndarray, float64ndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dgemm; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/docs/types/test.ts new file mode 100644 index 000000000000..7e5afa0d84bd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/docs/types/test.ts @@ -0,0 +1,93 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dgemm = require( '@stdlib/blas/base/ndarray/dgemm' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const A = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + const B = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + const C = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + const transA = zeros( [], { + 'dtype': 'int32' + }); + const transB = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + const beta = zeros( [], { + 'dtype': 'float64' + }); + + dgemm( [ A, B, C, transA, transB, alpha, beta ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dgemm( '10' ); // $ExpectError + dgemm( 10 ); // $ExpectError + dgemm( true ); // $ExpectError + dgemm( false ); // $ExpectError + dgemm( null ); // $ExpectError + dgemm( undefined ); // $ExpectError + dgemm( [] ); // $ExpectError + dgemm( {} ); // $ExpectError + dgemm( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + const B = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + const C = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + const transA = zeros( [], { + 'dtype': 'int32' + }); + const transB = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + const beta = zeros( [], { + 'dtype': 'float64' + }); + + dgemm(); // $ExpectError + dgemm( [ A, B, C, transA, transB, alpha, beta ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/examples/index.js new file mode 100644 index 000000000000..21377c39b161 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/examples/index.js @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dgemm = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var B = discreteUniform( [ 4, 2 ], 0, 10, opts ); +var C = discreteUniform( [ 3, 2 ], 0, 10, opts ); + +var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/lib/index.js new file mode 100644 index 000000000000..ca4ead3d7541 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/lib/index.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 3 routine to perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`. +* +* @module @stdlib/blas/base/ndarray/dgemm +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* var dgemm = require( '@stdlib/blas/base/ndarray/dgemm' ); +* +* var A = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* var B = new Float64Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); +* var C = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* +* var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var out = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); +* // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] +* +* var bool = ( out === C ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/lib/main.js new file mode 100644 index 000000000000..00f94f4b5c88 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/lib/main.js @@ -0,0 +1,134 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var strided = require( '@stdlib/blas/base/dgemm' ).ndarray; + + +// VARIABLES // + +var NO_TRANSPOSE = resolveEnum( 'no-transpose' ); + + +// MAIN // + +/** +* Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a two-dimensional input ndarray corresponding to `B`. +* - a two-dimensional input/output ndarray corresponding to `C`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* var B = new Float64Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); +* var C = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* +* var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var z = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); +* // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] +* +* var bool = ( z === C ); +* // returns true +*/ +function dgemm( arrays ) { + var transA; + var transB; + var alpha; + var beta; + var shA; + var shC; + var stA; + var stB; + var stC; + var A; + var B; + var C; + var M; + var N; + var K; + + A = arrays[ 0 ]; + B = arrays[ 1 ]; + C = arrays[ 2 ]; + + transA = ndarraylike2scalar( arrays[ 3 ] ); + transB = ndarraylike2scalar( arrays[ 4 ] ); + alpha = ndarraylike2scalar( arrays[ 5 ] ); + beta = ndarraylike2scalar( arrays[ 6 ] ); + + shA = getShape( A, false ); + shC = getShape( C, false ); + + stA = getStrides( A, false ); + stB = getStrides( B, false ); + stC = getStrides( C, false ); + + M = shC[ 0 ]; + N = shC[ 1 ]; + if ( resolveEnum( transA ) === NO_TRANSPOSE ) { + K = shA[ 1 ]; + } else { + K = shA[ 0 ]; + } + + strided( transA, transB, M, N, K, alpha, getData( A ), stA[ 0 ], stA[ 1 ], getOffset( A ), getData( B ), stB[ 0 ], stB[ 1 ], getOffset( B ), beta, getData( C ), stC[ 0 ], stC[ 1 ], getOffset( C ) ); // eslint-disable-line max-len + + return C; +} + + +// EXPORTS // + +module.exports = dgemm; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/package.json new file mode 100644 index 000000000000..24095a086cd8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/blas/base/ndarray/dgemm", + "version": "0.0.0", + "description": "Perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 3", + "dgemm", + "linear", + "algebra", + "subroutines", + "matrix-matrix", + "multiply", + "matrix", + "array", + "ndarray", + "float64", + "double", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/test/test.js new file mode 100644 index 000000000000..40643663c26d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemm/test/test.js @@ -0,0 +1,441 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var dgemm = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'float64', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dgemm, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( dgemm.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (no-transpose, no-transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float64Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float64Array( [ 23.0, 29.0, 50.0, 65.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (transpose, no-transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float64Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + transA = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float64Array( [ 36.0, 45.0, 45.0, 57.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (no-transpose, transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float64Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 2, 3, 3, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int32' + }); + + v = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float64Array( [ 15.0, 33.0, 33.0, 78.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (conjugate-transpose, no-transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float64Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + transA = scalar2ndarray( resolveEnum( 'conjugate-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float64Array( [ 36.0, 45.0, 45.0, 57.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function correctly applies both `alpha` and `beta` scalars', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 3.0, { + 'dtype': 'float64' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float64Array( [ 47.0, 62.0, 107.0, 140.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `beta*C`', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float64Array( [ 2.0, 4.0, 6.0, 8.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports column-major ndarrays', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float64Array( [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ] ); + Bbuf = new Float64Array( [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ] ); + Cbuf = new Float64Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + B = matrix( Bbuf, 3, 2, 1, 3, 0 ); + C = matrix( Cbuf, 2, 2, 1, 2, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float64Array( [ 23.0, 50.0, 29.0, 65.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float64Array( [ 4.0, 5.0, 6.0, 1.0, 2.0, 3.0 ] ); + Bbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float64Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, -3, 1, 3 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float64Array( [ 23.0, 29.0, 50.0, 65.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float64Array( [ 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float64Array( [ 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float64Array( [ 0.0, 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + B = matrix( Bbuf, 3, 2, 2, 1, 2 ); + C = matrix( Cbuf, 2, 2, 2, 1, 1 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float64Array( [ 0.0, 23.0, 29.0, 50.0, 65.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/README.md new file mode 100644 index 000000000000..7115cde23839 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/README.md @@ -0,0 +1,140 @@ + + +# dgemv + +> Perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dgemv = require( '@stdlib/blas/base/ndarray/dgemv' ); +``` + +#### dgemv( arrays ) + +Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + +```javascript +var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + +var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +var y = new Float64Vector( [ 4.0, 5.0 ] ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' +}); +var beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' +}); + +var out = dgemv( [ A, x, y, trans, alpha, beta ] ); +// returns [ 18.0, 37.0 ] + +var bool = ( out === y ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to `y`. + - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dgemv = require( '@stdlib/blas/base/ndarray/dgemv' ); + +var opts = { + 'dtype': 'float64' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = dgemv( [ A, x, y, trans, alpha, beta ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/benchmark/benchmark.js new file mode 100644 index 000000000000..530f8e8792e2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/benchmark/benchmark.js @@ -0,0 +1,121 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dgemv = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var trans; + var alpha; + var beta; + var A; + var x; + var y; + + A = uniform( [ len, len ], -100.0, 100.0, options ); + x = uniform( [ len ], -100.0, 100.0, options ); + y = uniform( [ len ], -100.0, 100.0, options ); + + alpha = scalar2ndarray( 1.0, options ); + beta = scalar2ndarray( 1.0, options ); + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dgemv( [ A, x, y, trans, alpha, beta ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/docs/repl.txt new file mode 100644 index 000000000000..d25f8e75abf5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/docs/repl.txt @@ -0,0 +1,50 @@ + +{{alias}}( arrays ) + Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` + or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` + and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to `y`. + - a zero-dimensional ndarray specifying whether `A` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `beta`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float64}}( abuf ); + + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( xbuf ); + + > var ybuf = [ 4.0, 5.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float64}}( ybuf ); + + > var opts = { 'dtype': 'float64' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + > var beta = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > var trans = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + + > {{alias}}( [ A, x, y, trans, alpha, beta ] ); + > y + [ 18.0, 37.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/docs/types/index.d.ts new file mode 100644 index 000000000000..d25a1ee60613 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/docs/types/index.d.ts @@ -0,0 +1,73 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to `y`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float64Vector( [ 4.0, 5.0 ] ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var z = dgemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ 18.0, 37.0 ] +* +* var bool = ( z === y ); +* // returns true +*/ +declare function dgemv( arrays: [ float64ndarray, float64ndarray, float64ndarray, ndarray, float64ndarray, float64ndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dgemv; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/docs/types/test.ts new file mode 100644 index 000000000000..3a8b5222504f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/docs/types/test.ts @@ -0,0 +1,87 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dgemv = require( '@stdlib/blas/base/ndarray/dgemv' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const A = zeros( [ 2, 3 ], { + 'dtype': 'float64' + }); + const x = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 2 ], { + 'dtype': 'float64' + }); + const trans = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + const beta = zeros( [], { + 'dtype': 'float64' + }); + + dgemv( [ A, x, y, trans, alpha, beta ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dgemv( '10' ); // $ExpectError + dgemv( 10 ); // $ExpectError + dgemv( true ); // $ExpectError + dgemv( false ); // $ExpectError + dgemv( null ); // $ExpectError + dgemv( undefined ); // $ExpectError + dgemv( [] ); // $ExpectError + dgemv( {} ); // $ExpectError + dgemv( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = zeros( [ 2, 3 ], { + 'dtype': 'float64' + }); + const x = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 2 ], { + 'dtype': 'float64' + }); + const trans = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + const beta = zeros( [], { + 'dtype': 'float64' + }); + + dgemv(); // $ExpectError + dgemv( [ A, x, y, trans, alpha, beta ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/examples/index.js new file mode 100644 index 000000000000..bbae3b29371e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/examples/index.js @@ -0,0 +1,42 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dgemv = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = dgemv( [ A, x, y, trans, alpha, beta ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/lib/index.js new file mode 100644 index 000000000000..f40843a67cc9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/lib/index.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`. +* +* @module @stdlib/blas/base/ndarray/dgemv +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* var dgemv = require( '@stdlib/blas/base/ndarray/dgemv' ); +* +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float64Vector( [ 4.0, 5.0 ] ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var out = dgemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ 18.0, 37.0 ] +* +* var bool = ( out === y ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/lib/main.js new file mode 100644 index 000000000000..83f0de511be6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/lib/main.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/dgemv' ).ndarray; + + +// MAIN // + +/** +* Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to `y`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float64Vector( [ 4.0, 5.0 ] ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var z = dgemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ 18.0, 37.0 ] +* +* var bool = ( z === y ); +* // returns true +*/ +function dgemv( arrays ) { + var trans; + var alpha; + var beta; + var sh; + var st; + var A; + var x; + var y; + + A = arrays[ 0 ]; + x = arrays[ 1 ]; + y = arrays[ 2 ]; + + trans = ndarraylike2scalar( arrays[ 3 ] ); + alpha = ndarraylike2scalar( arrays[ 4 ] ); + beta = ndarraylike2scalar( arrays[ 5 ] ); + + sh = getShape( A, false ); + st = getStrides( A, false ); + + strided( trans, sh[ 0 ], sh[ 1 ], alpha, getData( A ), st[ 0 ], st[ 1 ], getOffset( A ), getData( x ), getStride( x, 0 ), getOffset( x ), beta, getData( y ), getStride( y, 0 ), getOffset( y ) ); + + return y; +} + + +// EXPORTS // + +module.exports = dgemv; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/package.json new file mode 100644 index 000000000000..20cc76d15a40 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/base/ndarray/dgemv", + "version": "0.0.0", + "description": "Perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "dgemv", + "linear", + "algebra", + "subroutines", + "matrix-vector", + "multiply", + "vector", + "matrix", + "array", + "ndarray", + "float64", + "double", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/test/test.js new file mode 100644 index 000000000000..b31de09684ba --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dgemv/test/test.js @@ -0,0 +1,457 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var dgemv = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'float64', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dgemv, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( dgemv.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = dgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float64Array( [ 6.0, 13.0, 20.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + ybuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = dgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float64Array( [ 46.0, 60.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A^T*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + A = matrix( Abuf, 2, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = dgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float64Array( [ 8.0, 12.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A^H*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + A = matrix( Abuf, 2, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + trans = scalar2ndarray( resolveEnum( 'conjugate-transpose' ), { + 'dtype': 'int8' + }); + + v = dgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float64Array( [ 8.0, 12.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = dgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float64Array( [ 2.0, 4.0, 6.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides (transpose)', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + + xbuf = new Float64Array([ + 1.0, // 0 + 0.0, + 2.0 // 1 + ]); + x = vector( xbuf, 2, 2, 0 ); + + ybuf = new Float64Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + y = vector( ybuf, 3, 2, 0 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = dgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float64Array( [ 20.0, 0.0, 28.0, 0.0, 36.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides (transpose)', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + + xbuf = new Float64Array([ + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + x = vector( xbuf, 2, -2, 2 ); + + ybuf = new Float64Array([ + 3.0, // 2 + 0.0, + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + y = vector( ybuf, 3, -2, 4 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = dgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float64Array( [ 36.0, 0.0, 28.0, 0.0, 20.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = new Float64Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + + xbuf = new Float64Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + x = vector( xbuf, 3, 1, 2 ); + + ybuf = new Float64Array([ + 0.0, + 1.0, // 0 + 0.0, + 2.0 // 1 + ]); + y = vector( ybuf, 2, 2, 1 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = dgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float64Array([ + 0.0, + 30.0, + 0.0, + 68.0 + ]); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/dger/README.md new file mode 100644 index 000000000000..8634c9ad90c3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/README.md @@ -0,0 +1,126 @@ + + +# dger + +> Perform the rank 1 operation `A = alpha*x*y^T + A`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dger = require( '@stdlib/blas/base/ndarray/dger' ); +``` + +#### dger( arrays ) + +Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + +```javascript +var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = new Float64Vector( [ 1.0, 2.0 ] ); +var y = new Float64Vector( [ 3.0, 4.0, 5.0 ] ); +var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); + +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' +}); + +var out = dger( [ x, y, A, alpha ] ); +// returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] + +var bool = ( out === A ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dger = require( '@stdlib/blas/base/ndarray/dger' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 4 ], 0, 10, opts ); +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); + +var alpha = scalar2ndarray( 1.0, opts ); + +var out = dger( [ x, y, A, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/dger/benchmark/benchmark.js new file mode 100644 index 000000000000..b8e0b9e73a34 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/benchmark/benchmark.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dger = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var x; + var y; + var A; + + x = uniform( [ len ], -100.0, 100.0, options ); + y = uniform( [ len ], -100.0, 100.0, options ); + A = uniform( [ len, len ], -100.0, 100.0, options ); + + alpha = scalar2ndarray( 1.0, options ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dger( [ x, y, A, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( 0, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/dger/docs/repl.txt new file mode 100644 index 000000000000..026391984502 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/docs/repl.txt @@ -0,0 +1,43 @@ + +{{alias}}( arrays ) + Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a + scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by + `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( xbuf ); + + > var ybuf = [ 3.0, 4.0, 5.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float64}}( ybuf ); + + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float64}}( abuf ); + + > var opts = { 'dtype': 'float64' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > {{alias}}( [ x, y, A, alpha ] ); + > A + [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dger/docs/types/index.d.ts new file mode 100644 index 000000000000..c39ccca34c1a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/docs/types/index.d.ts @@ -0,0 +1,64 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float64Vector( [ 1.0, 2.0 ] ); +* var y = new Float64Vector( [ 3.0, 4.0, 5.0 ] ); +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var z = dger( [ x, y, A, alpha ] ); +* // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +declare function dger( arrays: [ float64ndarray, float64ndarray, float64ndarray, float64ndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dger; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dger/docs/types/test.ts new file mode 100644 index 000000000000..2f761c5dd678 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/docs/types/test.ts @@ -0,0 +1,75 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dger = require( '@stdlib/blas/base/ndarray/dger' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 2 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const A = zeros( [ 2, 3 ], { + 'dtype': 'float64' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + + dger( [ x, y, A, alpha ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dger( '10' ); // $ExpectError + dger( 10 ); // $ExpectError + dger( true ); // $ExpectError + dger( false ); // $ExpectError + dger( null ); // $ExpectError + dger( undefined ); // $ExpectError + dger( [] ); // $ExpectError + dger( {} ); // $ExpectError + dger( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 2 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const A = zeros( [ 2, 3 ], { + 'dtype': 'float64' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + + dger(); // $ExpectError + dger( [ x, y, A, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dger/examples/index.js new file mode 100644 index 000000000000..83c7515b48c2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dger = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 4 ], 0, 10, opts ); +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); + +var alpha = scalar2ndarray( 1.0, opts ); + +var out = dger( [ x, y, A, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dger/lib/index.js new file mode 100644 index 000000000000..b8cc1346d291 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/lib/index.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the rank 1 operation `A = alpha*x*y^T + A`. +* +* @module @stdlib/blas/base/ndarray/dger +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var dger = require( '@stdlib/blas/base/ndarray/dger' ); +* +* var x = new Float64Vector( [ 1.0, 2.0 ] ); +* var y = new Float64Vector( [ 3.0, 4.0, 5.0 ] ); +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var out = dger( [ x, y, A, alpha ] ); +* // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] +* +* var bool = ( out === A ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/dger/lib/main.js new file mode 100644 index 000000000000..b226a2763e0c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/lib/main.js @@ -0,0 +1,93 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/dger' ).ndarray; + + +// MAIN // + +/** +* Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float64Vector( [ 1.0, 2.0 ] ); +* var y = new Float64Vector( [ 3.0, 4.0, 5.0 ] ); +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var z = dger( [ x, y, A, alpha ] ); +* // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +function dger( arrays ) { + var alpha; + var sh; + var st; + var A; + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + A = arrays[ 2 ]; + + alpha = ndarraylike2scalar( arrays[ 3 ] ); + + sh = getShape( A, false ); + st = getStrides( A, false ); + + strided( sh[ 0 ], sh[ 1 ], alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ), getData( A ), st[ 0 ], st[ 1 ], getOffset( A ) ); + + return A; +} + + +// EXPORTS // + +module.exports = dger; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/dger/package.json new file mode 100644 index 000000000000..c743093fee96 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/base/ndarray/dger", + "version": "0.0.0", + "description": "Perform the rank 1 operation `A = alpha*x*y^T + A`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "dger", + "linear", + "algebra", + "subroutines", + "rank-1", + "update", + "vector", + "matrix", + "array", + "ndarray", + "float64", + "double", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dger/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/dger/test/test.js new file mode 100644 index 000000000000..17e5ab837cda --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dger/test/test.js @@ -0,0 +1,315 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var dger = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'float64', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dger, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( dger.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the rank 1 operation `A = alpha*x*y^T + A`', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + v = dger( [ x, y, A, alpha ] ); + + expected = new Float64Array( [ 2.0, 4.0, 6.0, 6.0, 9.0, 12.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + v = dger( [ x, y, A, alpha ] ); + + expected = new Float64Array( [ 2.0, 4.0, 5.0, 8.0, 8.0, 12.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float64Array([ + 3.0, // 0 + 4.0, // 1 + 5.0 // 2 + ]); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + + v = dger( [ x, y, A, alpha ] ); + + expected = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 1.0, // 0 + 0.0, + 2.0 // 1 + ]); + x = vector( xbuf, 2, 2, 0 ); + + ybuf = new Float64Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + y = vector( ybuf, 3, 2, 0 ); + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + v = dger( [ x, y, A, alpha ] ); + + expected = new Float64Array( [ 3.0, 6.0, 9.0, 8.0, 13.0, 18.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + x = vector( xbuf, 2, -2, 2 ); + + ybuf = new Float64Array([ + 3.0, // 2 + 0.0, + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + y = vector( ybuf, 3, -2, 4 ); + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + v = dger( [ x, y, A, alpha ] ); + + expected = new Float64Array( [ 3.0, 6.0, 9.0, 8.0, 13.0, 18.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 0.0, + 1.0, // 0 + 0.0, + 2.0 // 1 + ]); + x = vector( xbuf, 2, 2, 1 ); + + ybuf = new Float64Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + y = vector( ybuf, 3, 1, 2 ); + + Abuf = new Float64Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + v = dger( [ x, y, A, alpha ] ); + + expected = new Float64Array([ + 0.0, + 0.0, + 2.0, + 4.0, + 6.0, + 6.0, + 9.0, + 12.0 + ]); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dnrm2/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/dnrm2/README.md index 47e6b4a7b372..d240ea1ac2cf 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/dnrm2/README.md +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dnrm2/README.md @@ -33,7 +33,7 @@ The [L2-norm][l2-norm] is defined as ``` @@ -66,9 +66,7 @@ var y = dnrm2( [ x ] ); The function has the following parameters: -- **arrays**: array-like object containing the following ndarrays: - - - a one-dimensional input ndarray. +- **arrays**: array-like object containing a one-dimensional input ndarray. diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/docs/types/index.d.ts index f5232ebb360b..dc5366bc9425 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/blas/base/ndarray/docs/types/index.d.ts @@ -22,6 +22,7 @@ import caxpy = require( '@stdlib/blas/base/ndarray/caxpy' ); import ccopy = require( '@stdlib/blas/base/ndarray/ccopy' ); +import cgemv = require( '@stdlib/blas/base/ndarray/cgemv' ); import cscal = require( '@stdlib/blas/base/ndarray/cscal' ); import csscal = require( '@stdlib/blas/base/ndarray/csscal' ); import cswap = require( '@stdlib/blas/base/ndarray/cswap' ); @@ -29,19 +30,29 @@ import dasum = require( '@stdlib/blas/base/ndarray/dasum' ); import daxpy = require( '@stdlib/blas/base/ndarray/daxpy' ); import dcopy = require( '@stdlib/blas/base/ndarray/dcopy' ); import ddot = require( '@stdlib/blas/base/ndarray/ddot' ); +import dgemm = require( '@stdlib/blas/base/ndarray/dgemm' ); +import dgemv = require( '@stdlib/blas/base/ndarray/dgemv' ); +import dger = require( '@stdlib/blas/base/ndarray/dger' ); import dnrm2 = require( '@stdlib/blas/base/ndarray/dnrm2' ); import dscal = require( '@stdlib/blas/base/ndarray/dscal' ); import dsdot = require( '@stdlib/blas/base/ndarray/dsdot' ); +import dspr = require( '@stdlib/blas/base/ndarray/dspr' ); import dswap = require( '@stdlib/blas/base/ndarray/dswap' ); +import dsyr = require( '@stdlib/blas/base/ndarray/dsyr' ); +import dsyr2 = require( '@stdlib/blas/base/ndarray/dsyr2' ); import dzasum = require( '@stdlib/blas/base/ndarray/dzasum' ); import dznrm2 = require( '@stdlib/blas/base/ndarray/dznrm2' ); import gasum = require( '@stdlib/blas/base/ndarray/gasum' ); import gaxpy = require( '@stdlib/blas/base/ndarray/gaxpy' ); import gcopy = require( '@stdlib/blas/base/ndarray/gcopy' ); import gdot = require( '@stdlib/blas/base/ndarray/gdot' ); +import ggemm = require( '@stdlib/blas/base/ndarray/ggemm' ); +import ggemv = require( '@stdlib/blas/base/ndarray/ggemv' ); +import gger = require( '@stdlib/blas/base/ndarray/gger' ); import gnrm2 = require( '@stdlib/blas/base/ndarray/gnrm2' ); import gscal = require( '@stdlib/blas/base/ndarray/gscal' ); import gswap = require( '@stdlib/blas/base/ndarray/gswap' ); +import gsyr = require( '@stdlib/blas/base/ndarray/gsyr' ); import idamax = require( '@stdlib/blas/base/ndarray/idamax' ); import igamax = require( '@stdlib/blas/base/ndarray/igamax' ); import isamax = require( '@stdlib/blas/base/ndarray/isamax' ); @@ -52,9 +63,15 @@ import scnrm2 = require( '@stdlib/blas/base/ndarray/scnrm2' ); import scopy = require( '@stdlib/blas/base/ndarray/scopy' ); import sdot = require( '@stdlib/blas/base/ndarray/sdot' ); import sdsdot = require( '@stdlib/blas/base/ndarray/sdsdot' ); +import sgemm = require( '@stdlib/blas/base/ndarray/sgemm' ); +import sgemv = require( '@stdlib/blas/base/ndarray/sgemv' ); +import sger = require( '@stdlib/blas/base/ndarray/sger' ); import snrm2 = require( '@stdlib/blas/base/ndarray/snrm2' ); import sscal = require( '@stdlib/blas/base/ndarray/sscal' ); +import sspr = require( '@stdlib/blas/base/ndarray/sspr' ); import sswap = require( '@stdlib/blas/base/ndarray/sswap' ); +import ssyr = require( '@stdlib/blas/base/ndarray/ssyr' ); +import ssyr2 = require( '@stdlib/blas/base/ndarray/ssyr2' ); import zaxpy = require( '@stdlib/blas/base/ndarray/zaxpy' ); import zcopy = require( '@stdlib/blas/base/ndarray/zcopy' ); import zdscal = require( '@stdlib/blas/base/ndarray/zdscal' ); @@ -126,6 +143,52 @@ interface Namespace { */ ccopy: typeof ccopy; + /** + * Performs one of the matrix-vector operations `y = alpha*A*x + beta*y`, `y = alpha*A^T*x + beta*y`, or `y = alpha*A^H*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a two-dimensional input ndarray corresponding to `A`. + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input/output ndarray corresponding to `y`. + * - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Complex64Matrix = require( '@stdlib/ndarray/matrix/complex64' ); + * var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); + * var Complex64 = require( '@stdlib/complex/float32/ctor' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + * + * var A = new Complex64Matrix( [ [ 1.0, 2.0, 3.0, 4.0 ], [ 5.0, 6.0, 7.0, 8.0 ] ] ); + * var x = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var y = new Complex64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); + * + * var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int8' + * }); + * var alpha = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + * 'dtype': 'complex64' + * }); + * var beta = scalar2ndarray( new Complex64( 1.0, 0.0 ), { + * 'dtype': 'complex64' + * }); + * + * var z = ns.cgemv( [ A, x, y, trans, alpha, beta ] ); + * // returns [ [ -9.0, 30.0 ], [ -15.0, 72.0 ] ] + * + * var bool = ( z === y ); + * // returns true + */ + cgemv: typeof cgemv; + /** * Multiplies a one-dimensional single-precision complex floating-point ndarray by a scalar constant. * @@ -323,6 +386,135 @@ interface Namespace { */ ddot: typeof ddot; + /** + * Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a two-dimensional input ndarray corresponding to `A`. + * - a two-dimensional input ndarray corresponding to `B`. + * - a two-dimensional input/output ndarray corresponding to `C`. + * - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + * + * var A = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); + * var B = new Float64Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); + * var C = new Float64Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); + * + * var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int32' + * }); + * var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int32' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float64' + * }); + * var beta = scalar2ndarray( 1.0, { + * 'dtype': 'float64' + * }); + * + * var z = ns.dgemm( [ A, B, C, transA, transB, alpha, beta ] ); + * // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] + * + * var bool = ( z === C ); + * // returns true + */ + dgemm: typeof dgemm; + + /** + * Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a two-dimensional input ndarray corresponding to `A`. + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input/output ndarray corresponding to `y`. + * - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + * + * var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); + * var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); + * var y = new Float64Vector( [ 4.0, 5.0 ] ); + * + * var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int8' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float64' + * }); + * var beta = scalar2ndarray( 1.0, { + * 'dtype': 'float64' + * }); + * + * var z = ns.dgemv( [ A, x, y, trans, alpha, beta ] ); + * // returns [ 18.0, 37.0 ] + * + * var bool = ( z === y ); + * // returns true + */ + dgemv: typeof dgemv; + + /** + * Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input ndarray corresponding to `y`. + * - a two-dimensional input/output ndarray corresponding to `A`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var x = new Float64Vector( [ 1.0, 2.0 ] ); + * var y = new Float64Vector( [ 3.0, 4.0, 5.0 ] ); + * var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); + * + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float64' + * }); + * + * var z = ns.dger( [ x, y, A, alpha ] ); + * // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] + * + * var bool = ( z === A ); + * // returns true + */ + dger: typeof dger; + /** * Computes the L2-norm of a one-dimensional double-precision floating-point ndarray. * @@ -400,6 +592,44 @@ interface Namespace { */ dsdot: typeof dsdot; + /** + * Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is a symmetric `N` by `N` matrix supplied in packed form. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input/output ndarray corresponding to the packed form of `A`. + * - a zero-dimensional ndarray specifying whether the upper or lower triangular part of `A` is supplied. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + * + * var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); + * var AP = new Float64Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + * + * var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + * 'dtype': 'int8' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float64' + * }); + * + * var y = ns.dspr( [ x, AP, uplo, alpha ] ); + * // returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] + * + * var bool = ( y === AP ); + * // returns true + */ + dspr: typeof dspr; + /** * Interchanges two one-dimensional double-precision floating-point ndarrays. * @@ -428,6 +658,86 @@ interface Namespace { */ dswap: typeof dswap; + /** + * Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a two-dimensional input/output ndarray corresponding to `A`. + * - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + * + * var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); + * var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); + * + * var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + * 'dtype': 'int32' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float64' + * }); + * + * var y = ns.dsyr( [ x, A, uplo, alpha ] ); + * // returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] + * + * var bool = ( y === A ); + * // returns true + */ + dsyr: typeof dsyr; + + /** + * Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `N` by `N` symmetric matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input ndarray corresponding to `y`. + * - a two-dimensional input/output ndarray corresponding to `A`. + * - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); + * var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); + * var y = new Float64Vector( [ 2.0, 1.0, 3.0 ] ); + * + * var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + * 'dtype': 'int32' + * }); + * var alpha = scalar2ndarray( 2.0, { + * 'dtype': 'float64' + * }); + * + * var z = ns.dsyr2( [ x, y, A, uplo, alpha ] ); + * // returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] + * + * var bool = ( z === A ); + * // returns true + */ + dsyr2: typeof dsyr2; + /** * Computes the sum of absolute values for all elements in a one-dimensional double-precision complex floating-point ndarray. * @@ -578,6 +888,135 @@ interface Namespace { */ gdot: typeof gdot; + /** + * Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a two-dimensional input ndarray corresponding to `A`. + * - a two-dimensional input ndarray corresponding to `B`. + * - a two-dimensional input/output ndarray corresponding to `C`. + * - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var matrix = require( '@stdlib/ndarray/matrix/ctor' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + * + * var A = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); + * var B = matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ], 'generic' ); + * var C = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); + * + * var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int32' + * }); + * var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int32' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'generic' + * }); + * var beta = scalar2ndarray( 1.0, { + * 'dtype': 'generic' + * }); + * + * var z = ns.ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + * // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] + * + * var bool = ( z === C ); + * // returns true + */ + ggemm: typeof ggemm; + + /** + * Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a two-dimensional input ndarray corresponding to `A`. + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input/output ndarray corresponding to `y`. + * - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var matrix = require( '@stdlib/ndarray/matrix/ctor' ); + * var vector = require( '@stdlib/ndarray/vector/ctor' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + * + * var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); + * var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); + * var y = vector( [ 4.0, 5.0 ], 'generic' ); + * + * var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int8' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'generic' + * }); + * var beta = scalar2ndarray( 1.0, { + * 'dtype': 'generic' + * }); + * + * var z = ns.ggemv( [ A, x, y, trans, alpha, beta ] ); + * // returns [ 18.0, 37.0 ] + * + * var bool = ( z === y ); + * // returns true + */ + ggemv: typeof ggemv; + + /** + * Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input ndarray corresponding to `y`. + * - a two-dimensional input/output ndarray corresponding to `A`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var matrix = require( '@stdlib/ndarray/matrix/ctor' ); + * var vector = require( '@stdlib/ndarray/vector/ctor' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var x = vector( [ 1.0, 2.0 ], 'generic' ); + * var y = vector( [ 3.0, 4.0, 5.0 ], 'generic' ); + * var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); + * + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'generic' + * }); + * + * var z = ns.gger( [ x, y, A, alpha ] ); + * // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] + * + * var bool = ( z === A ); + * // returns true + */ + gger: typeof gger; + /** * Computes the L2-norm of a one-dimensional ndarray. * @@ -659,6 +1098,45 @@ interface Namespace { */ gswap: typeof gswap; + /** + * Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a two-dimensional input ndarray corresponding to `A`. + * - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var matrix = require( '@stdlib/ndarray/matrix/ctor' ); + * var vector = require( '@stdlib/ndarray/vector/ctor' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + * + * var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); + * var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ], 'generic' ); + * + * var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + * 'dtype': 'int32' + * }); + * var alpha = scalar2ndarray( 2.0, { + * 'dtype': 'generic' + * }); + * + * var y = ns.gsyr( [ x, A, uplo, alpha ] ); + * // returns [ [ 3.0, 6.0, 9.0 ], [ 2.0, 9.0, 14.0 ], [ 3.0, 2.0, 19.0 ] ] + * + * var bool = ( y === A ); + * // returns true + */ + gsyr: typeof gsyr; + /** * Finds the index of the first element having the maximum absolute value for all elements in a one-dimensional double-precision floating-point ndarray. * @@ -905,6 +1383,135 @@ interface Namespace { */ sdsdot: typeof sdsdot; + /** + * Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a two-dimensional input ndarray corresponding to `A`. + * - a two-dimensional input ndarray corresponding to `B`. + * - a two-dimensional input/output ndarray corresponding to `C`. + * - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + * + * var A = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); + * var B = new Float32Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); + * var C = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); + * + * var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int32' + * }); + * var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int32' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float32' + * }); + * var beta = scalar2ndarray( 1.0, { + * 'dtype': 'float32' + * }); + * + * var z = ns.sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + * // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] + * + * var bool = ( z === C ); + * // returns true + */ + sgemm: typeof sgemm; + + /** + * Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a two-dimensional input ndarray corresponding to `A`. + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input/output ndarray corresponding to `y`. + * - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); + * var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + * + * var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); + * var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); + * var y = new Float32Vector( [ 4.0, 5.0 ] ); + * + * var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + * 'dtype': 'int8' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float32' + * }); + * var beta = scalar2ndarray( 1.0, { + * 'dtype': 'float32' + * }); + * + * var z = ns.sgemv( [ A, x, y, trans, alpha, beta ] ); + * // returns [ 18.0, 37.0 ] + * + * var bool = ( z === y ); + * // returns true + */ + sgemv: typeof sgemv; + + /** + * Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input ndarray corresponding to `y`. + * - a two-dimensional input/output ndarray corresponding to `A`. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); + * var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var x = new Float32Vector( [ 1.0, 2.0 ] ); + * var y = new Float32Vector( [ 3.0, 4.0, 5.0 ] ); + * var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); + * + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float32' + * }); + * + * var z = ns.sger( [ x, y, A, alpha ] ); + * // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] + * + * var bool = ( z === A ); + * // returns true + */ + sger: typeof sger; + /** * Computes the L2-norm of a one-dimensional single-precision floating-point ndarray. * @@ -958,6 +1565,44 @@ interface Namespace { */ sscal: typeof sscal; + /** + * Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is a symmetric `N` by `N` matrix supplied in packed form. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input/output ndarray corresponding to the packed form of `A`. + * - a zero-dimensional ndarray specifying whether the upper or lower triangular part of `A` is supplied. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + * + * var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); + * var AP = new Float32Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + * + * var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + * 'dtype': 'int8' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float32' + * }); + * + * var y = ns.sspr( [ x, AP, uplo, alpha ] ); + * // returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] + * + * var bool = ( y === AP ); + * // returns true + */ + sspr: typeof sspr; + /** * Interchanges two one-dimensional single-precision floating-point ndarrays. * @@ -986,6 +1631,86 @@ interface Namespace { */ sswap: typeof sswap; + /** + * Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a two-dimensional input/output ndarray corresponding to `A`. + * - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); + * var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + * + * var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); + * var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); + * + * var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + * 'dtype': 'int32' + * }); + * var alpha = scalar2ndarray( 1.0, { + * 'dtype': 'float32' + * }); + * + * var y = ns.ssyr( [ x, A, uplo, alpha ] ); + * // returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] + * + * var bool = ( y === A ); + * // returns true + */ + ssyr: typeof ssyr; + + /** + * Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `N` by `N` symmetric matrix. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray corresponding to `x`. + * - a one-dimensional input ndarray corresponding to `y`. + * - a two-dimensional input/output ndarray corresponding to `A`. + * - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + * - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); + * var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + * var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); + * var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); + * var y = new Float32Vector( [ 2.0, 1.0, 3.0 ] ); + * + * var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + * 'dtype': 'int32' + * }); + * var alpha = scalar2ndarray( 2.0, { + * 'dtype': 'float32' + * }); + * + * var z = ns.ssyr2( [ x, y, A, uplo, alpha ] ); + * // returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] + * + * var bool = ( z === A ); + * // returns true + */ + ssyr2: typeof ssyr2; + /** * Multiplies a one-dimensional double-precision complex floating-point ndarray `x` by a constant `alpha` and adds the result to a one-dimensional double-precision complex floating-point ndarray `y`. * diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/README.md new file mode 100644 index 000000000000..7bd1fd11f61e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/README.md @@ -0,0 +1,131 @@ + + +# dspr + +> Perform the symmetric rank 1 operation `A = alpha*x*x^T + A` for a symmetric matrix `A` supplied in packed form. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dspr = require( '@stdlib/blas/base/ndarray/dspr' ); +``` + +#### dspr( arrays ) + +Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is a symmetric `N` by `N` matrix supplied in packed form. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + +var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +var AP = new Float64Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' +}); + +var y = dspr( [ x, AP, uplo, alpha ] ); +// returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] + +var bool = ( y === AP ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to the packed form of `A`. + - a zero-dimensional ndarray specifying whether the upper or lower triangular part of `A` is supplied. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dspr = require( '@stdlib/blas/base/ndarray/dspr' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var AP = discreteUniform( [ 10 ], 0, 10, opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 3.0, opts ); + +var out = dspr( [ x, AP, uplo, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/benchmark/benchmark.js new file mode 100644 index 000000000000..cf11dc1c66d6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/benchmark/benchmark.js @@ -0,0 +1,117 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dspr = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var uplo; + var AP; + var x; + + AP = uniform( [ ( len * ( len+1 ) ) / 2 ], -100.0, 100.0, options ); + x = uniform( [ len ], -100.0, 100.0, options ); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + alpha = scalar2ndarray( 1.0, options ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dspr( [ x, AP, uplo, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/docs/repl.txt new file mode 100644 index 000000000000..ff6c68d0c614 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/docs/repl.txt @@ -0,0 +1,43 @@ + +{{alias}}( arrays ) + Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` + is a scalar, `x` is a one-dimensional ndarray, and `A` is a symmetric `N` by + `N` matrix supplied in packed form. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to the packed + form of `A`. + - a zero-dimensional ndarray specifying whether the upper or lower + triangular part of `A` is supplied. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( xbuf ); + + > var apbuf = [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ]; + > var AP = new {{alias:@stdlib/ndarray/vector/float64}}( apbuf ); + + > var uplo = {{alias:@stdlib/ndarray/from-scalar}}( 'upper' ); + > var opts = { 'dtype': 'float64' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > {{alias}}( [ x, AP, uplo, alpha ] ); + > AP + [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/docs/types/index.d.ts new file mode 100644 index 000000000000..43dcc7e6e0b7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/docs/types/index.d.ts @@ -0,0 +1,66 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is a symmetric `N` by `N` matrix supplied in packed form. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to the packed form of `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of `A` is supplied. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var AP = new Float64Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var y = dspr( [ x, AP, uplo, alpha ] ); +* // returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] +* +* var bool = ( y === AP ); +* // returns true +*/ +declare function dspr( arrays: [ float64ndarray, float64ndarray, ndarray, float64ndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dspr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/docs/types/test.ts new file mode 100644 index 000000000000..11cd1cc60142 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/docs/types/test.ts @@ -0,0 +1,75 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dspr = require( '@stdlib/blas/base/ndarray/dspr' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const AP = zeros( [ 6 ], { + 'dtype': 'float64' + }); + const x = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const uplo = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + + dspr( [ x, AP, uplo, alpha ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dspr( '10' ); // $ExpectError + dspr( 10 ); // $ExpectError + dspr( true ); // $ExpectError + dspr( false ); // $ExpectError + dspr( null ); // $ExpectError + dspr( undefined ); // $ExpectError + dspr( [] ); // $ExpectError + dspr( {} ); // $ExpectError + dspr( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const AP = zeros( [ 6 ], { + 'dtype': 'float64' + }); + const x = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const uplo = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + + dspr(); // $ExpectError + dspr( [ x, AP, uplo, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/examples/index.js new file mode 100644 index 000000000000..4d93060ff283 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/examples/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dspr = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var AP = discreteUniform( [ 10 ], 0, 10, opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 3.0, opts ); + +var out = dspr( [ x, AP, uplo, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/lib/index.js new file mode 100644 index 000000000000..f052098c57a0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/lib/index.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the symmetric rank 1 operation `A = alpha*x*x^T + A` for a symmetric matrix `A` supplied in packed form. +* +* @module @stdlib/blas/base/ndarray/dspr +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var dspr = require( '@stdlib/blas/base/ndarray/dspr' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var AP = new Float64Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var out = dspr( [ x, AP, uplo, alpha ] ); +* // returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] +* +* var bool = ( out === AP ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/lib/main.js new file mode 100644 index 000000000000..7ef79ea5e370 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/lib/main.js @@ -0,0 +1,90 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getOrder = require( '@stdlib/ndarray/base/order' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/dspr' ).ndarray; + + +// MAIN // + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix supplied in packed form. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to the packed form of `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of `A` is supplied. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var AP = new Float64Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var y = dspr( [ x, AP, uplo, alpha ] ); +* // returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] +* +* var bool = ( y === AP ); +* // returns true +*/ +function dspr( arrays ) { + var alpha; + var uplo; + var AP; + var x; + + x = arrays[ 0 ]; + AP = arrays[ 1 ]; + + uplo = ndarraylike2scalar( arrays[ 2 ] ); + alpha = ndarraylike2scalar( arrays[ 3 ] ); + + strided( getOrder( AP ), uplo, numelDimension( x, 0 ), alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( AP ), getStride( AP, 0 ), getOffset( AP ) ); // eslint-disable-line max-len + + return AP; +} + + +// EXPORTS // + +module.exports = dspr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/package.json new file mode 100644 index 000000000000..1e1813b73bde --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/base/ndarray/dspr", + "version": "0.0.0", + "description": "Perform the symmetric rank 1 operation `A = alpha*x*x^T + A` for a symmetric matrix `A` supplied in packed form.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "dspr", + "linear", + "algebra", + "subroutines", + "rank 1", + "symmetric", + "update", + "vector", + "matrix", + "array", + "ndarray", + "float64", + "double", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dspr/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/test/test.js new file mode 100644 index 000000000000..e997ac910c4f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dspr/test/test.js @@ -0,0 +1,304 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var dspr = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dspr, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( dspr.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the symmetric rank 1 operation `A = alpha*x*x^T + A` (upper)', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + x = vector( xbuf, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = dspr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float64Array( [ 1.0, 1.0, 1.0 ] ); + Abuf = new Float64Array( [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + x = vector( xbuf, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = dspr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 3.0, 6.0, 4.0, 7.0, 5.0, 8.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the symmetric rank 1 operation `A = alpha*x*x^T + A` (lower)', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 1.0, 3.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + x = vector( xbuf, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'lower' ), { + 'dtype': 'int8' + }); + + v = dspr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 2.0, 4.0, 5.0, 6.0, 8.0, 10.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + x = vector( xbuf, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = dspr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + + xbuf = new Float64Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 0 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = dspr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 3.0, 6.0, 9.0, 9.0, 14.0, 19.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + + xbuf = new Float64Array([ + 3.0, // 2 + 0.0, + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + x = vector( xbuf, 3, -2, 4 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = dspr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 3.0, 6.0, 9.0, 9.0, 14.0, 19.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + Abuf = new Float64Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 3.0, + 1.0, + 2.0, + 1.0 + ]); + A = vector( Abuf, 6, 1, 2 ); + + xbuf = new Float64Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + x = vector( xbuf, 3, 1, 2 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = dspr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array([ + 0.0, + 0.0, + 3.0, + 6.0, + 9.0, + 9.0, + 14.0, + 19.0 + ]); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/README.md new file mode 100644 index 000000000000..34cb95ec0932 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/README.md @@ -0,0 +1,135 @@ + + +# dsyr + +> Perform the symmetric rank 1 operation `A = alpha*x*x^T + A`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dsyr = require( '@stdlib/blas/base/ndarray/dsyr' ); +``` + +#### dsyr( arrays ) + +Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. + + + +```javascript +var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + +var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' +}); + +var y = dsyr( [ x, A, uplo, alpha ] ); +// returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] + +var bool = ( y === A ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dsyr = require( '@stdlib/blas/base/ndarray/dsyr' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = dsyr( [ x, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/benchmark/benchmark.js new file mode 100644 index 000000000000..79c8c9f81115 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/benchmark/benchmark.js @@ -0,0 +1,118 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dsyr = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var uplo; + var x; + var A; + + x = uniform( [ len ], -100.0, 100.0, options ); + A = zeros( [ len, len ], options ); + + alpha = scalar2ndarray( 1.0, options ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dsyr( [ x, A, uplo, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( 0, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/docs/repl.txt new file mode 100644 index 000000000000..ed77b51c220a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/docs/repl.txt @@ -0,0 +1,43 @@ + +{{alias}}( arrays ) + Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where + `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an + `N` by `N` symmetric matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower + triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( xbuf ); + + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float64}}( abuf ); + + > var opts = { 'dtype': 'float64' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > var uplo = {{alias:@stdlib/ndarray/from-scalar}}( 'upper' ); + + > {{alias}}( [ x, A, uplo, alpha ] ); + > A + [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/docs/types/index.d.ts new file mode 100644 index 000000000000..6c1963d7f28f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/docs/types/index.d.ts @@ -0,0 +1,67 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var y = dsyr( [ x, A, uplo, alpha ] ); +* // returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] +* +* var bool = ( y === A ); +* // returns true +*/ +declare function dsyr( arrays: [ float64ndarray, float64ndarray, ndarray, float64ndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dsyr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/docs/types/test.ts new file mode 100644 index 000000000000..fa82d2f21faf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/docs/types/test.ts @@ -0,0 +1,75 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dsyr = require( '@stdlib/blas/base/ndarray/dsyr' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'float64' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + + dsyr( [ x, A, uplo, alpha ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dsyr( '10' ); // $ExpectError + dsyr( 10 ); // $ExpectError + dsyr( true ); // $ExpectError + dsyr( false ); // $ExpectError + dsyr( null ); // $ExpectError + dsyr( undefined ); // $ExpectError + dsyr( [] ); // $ExpectError + dsyr( {} ); // $ExpectError + dsyr( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'float64' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + + dsyr(); // $ExpectError + dsyr( [ x, A, uplo, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/examples/index.js new file mode 100644 index 000000000000..fb1650c40335 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dsyr = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = dsyr( [ x, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/lib/index.js new file mode 100644 index 000000000000..fe6babf3b9bb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the symmetric rank 1 operation `A = alpha*x*x^T + A`. +* +* @module @stdlib/blas/base/ndarray/dsyr +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var dsyr = require( '@stdlib/blas/base/ndarray/dsyr' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var y = dsyr( [ x, A, uplo, alpha ] ); +* // returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] +* +* var bool = ( y === A ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/lib/main.js new file mode 100644 index 000000000000..fa15e4c069af --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/lib/main.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/dsyr' ).ndarray; + + +// MAIN // + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var y = dsyr( [ x, A, uplo, alpha ] ); +* // returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] +* +* var bool = ( y === A ); +* // returns true +*/ +function dsyr( arrays ) { + var alpha; + var uplo; + var st; + var x; + var A; + + x = arrays[ 0 ]; + A = arrays[ 1 ]; + + uplo = ndarraylike2scalar( arrays[ 2 ] ); + alpha = ndarraylike2scalar( arrays[ 3 ] ); + + st = getStrides( A, false ); + + strided( uplo, numelDimension( A, 0 ), alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( A ), st[ 0 ], st[ 1 ], getOffset( A ) ); + + return A; +} + + +// EXPORTS // + +module.exports = dsyr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/package.json new file mode 100644 index 000000000000..14159875174b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/base/ndarray/dsyr", + "version": "0.0.0", + "description": "Perform the symmetric rank 1 operation `A = alpha*x*x^T + A`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "dsyr", + "linear", + "algebra", + "subroutines", + "symmetric", + "rank-1", + "update", + "vector", + "matrix", + "array", + "ndarray", + "float64", + "double", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/test/test.js new file mode 100644 index 000000000000..ab2f8e073cef --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr/test/test.js @@ -0,0 +1,321 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var dsyr = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} N - number of rows and columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, N, stride0, stride1, offset ) { + return new ndarray( 'float64', buffer, [ N, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dsyr, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( dsyr.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the symmetric rank 1 operation `A = alpha*x*x^T + A` (upper)', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = dsyr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 2.0, 4.0, 6.0, 2.0, 5.0, 8.0, 3.0, 2.0, 10.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float64Array( [ 1.0, 1.0, 1.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 1, 3, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = dsyr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 2.0, 2.0, 3.0, 3.0, 2.0, 2.0, 4.0, 3.0, 2.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the symmetric rank 1 operation `A = alpha*x*x^T + A` (lower)', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'lower' ), { + 'dtype': 'int32' + }); + + v = dsyr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 2.0, 2.0, 3.0, 4.0, 5.0, 2.0, 6.0, 8.0, 10.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = dsyr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float64Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 0 ); + + Abuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = dsyr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 1.0, 2.0, 3.0, 0.0, 4.0, 6.0, 0.0, 0.0, 9.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float64Array([ + 3.0, // 2 + 2.0, // 1 + 1.0 // 0 + ]); + x = vector( xbuf, 3, -1, 2 ); + + Abuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = dsyr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array( [ 1.0, 2.0, 3.0, 0.0, 4.0, 6.0, 0.0, 0.0, 9.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float64Array([ + 0.0, + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 1 ); + + Abuf = new Float64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0 + ]); + A = matrix( Abuf, 3, 3, 1, 2 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = dsyr( [ x, A, uplo, alpha ] ); + + expected = new Float64Array([ + 1.0, + 2.0, + 5.0, + 8.0, + 11.0, + 6.0, + 15.0, + 20.0, + 9.0, + 10.0, + 29.0 + ]); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/README.md new file mode 100644 index 000000000000..9dcb14747a7e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/README.md @@ -0,0 +1,138 @@ + + +# dsyr2 + +> Perform the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dsyr2 = require( '@stdlib/blas/base/ndarray/dsyr2' ); +``` + +#### dsyr2( arrays ) + +Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `N` by `N` symmetric matrix. + + + +```javascript +var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +var y = new Float64Vector( [ 2.0, 1.0, 3.0 ] ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' +}); + +var z = dsyr2( [ x, y, A, uplo, alpha ] ); +// returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] + +var bool = ( z === A ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dsyr2 = require( '@stdlib/blas/base/ndarray/dsyr2' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = dsyr2( [ x, y, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/benchmark/benchmark.js new file mode 100644 index 000000000000..270b1fa54b6e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/benchmark/benchmark.js @@ -0,0 +1,120 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dsyr2 = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var uplo; + var x; + var y; + var A; + + x = uniform( [ len ], -100.0, 100.0, options ); + y = uniform( [ len ], -100.0, 100.0, options ); + A = zeros( [ len, len ], options ); + + alpha = scalar2ndarray( 1.0, options ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dsyr2( [ x, y, A, uplo, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( 0, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/docs/repl.txt new file mode 100644 index 000000000000..24011fe0013e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/docs/repl.txt @@ -0,0 +1,47 @@ + +{{alias}}( arrays ) + Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, + where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and + `A` is an `N` by `N` symmetric matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower + triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( xbuf ); + + > var ybuf = [ 2.0, 1.0, 3.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float64}}( ybuf ); + + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float64}}( abuf ); + + > var uplo = {{alias:@stdlib/ndarray/from-scalar}}( 'upper' ); + + > var opts = { 'dtype': 'float64' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 2.0, opts ); + + > {{alias}}( [ x, y, A, uplo, alpha ] ); + > A + [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/docs/types/index.d.ts new file mode 100644 index 000000000000..6c41fec03889 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/docs/types/index.d.ts @@ -0,0 +1,69 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float64Vector( [ 2.0, 1.0, 3.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 2.0, { +* 'dtype': 'float64' +* }); +* +* var z = dsyr2( [ x, y, A, uplo, alpha ] ); +* // returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +declare function dsyr2( arrays: [ float64ndarray, float64ndarray, float64ndarray, ndarray, float64ndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dsyr2; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/docs/types/test.ts new file mode 100644 index 000000000000..f599943dac15 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/docs/types/test.ts @@ -0,0 +1,81 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dsyr2 = require( '@stdlib/blas/base/ndarray/dsyr2' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'float64' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + + dsyr2( [ x, y, A, uplo, alpha ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dsyr2( '10' ); // $ExpectError + dsyr2( 10 ); // $ExpectError + dsyr2( true ); // $ExpectError + dsyr2( false ); // $ExpectError + dsyr2( null ); // $ExpectError + dsyr2( undefined ); // $ExpectError + dsyr2( [] ); // $ExpectError + dsyr2( {} ); // $ExpectError + dsyr2( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 3 ], { + 'dtype': 'float64' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'float64' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float64' + }); + + dsyr2(); // $ExpectError + dsyr2( [ x, y, A, uplo, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/examples/index.js new file mode 100644 index 000000000000..1ef1d6b6a947 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/examples/index.js @@ -0,0 +1,42 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dsyr2 = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = dsyr2( [ x, y, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/lib/index.js new file mode 100644 index 000000000000..5eb97fd400be --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`. +* +* @module @stdlib/blas/base/ndarray/dsyr2 +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var dsyr2 = require( '@stdlib/blas/base/ndarray/dsyr2' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float64Vector( [ 2.0, 1.0, 3.0 ] ); +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* +* var alpha = scalar2ndarray( 2.0, { +* 'dtype': 'float64' +* }); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var out = dsyr2( [ x, y, A, uplo, alpha ] ); +* // returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] +* +* var bool = ( out === A ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/lib/main.js new file mode 100644 index 000000000000..67c36d3d9fe9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/lib/main.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/dsyr2' ).ndarray; + + +// MAIN // + +/** +* Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float64Matrix = require( '@stdlib/ndarray/matrix/float64' ); +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var A = new Float64Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* var x = new Float64Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float64Vector( [ 2.0, 1.0, 3.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 2.0, { +* 'dtype': 'float64' +* }); +* +* var z = dsyr2( [ x, y, A, uplo, alpha ] ); +* // returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +function dsyr2( arrays ) { + var alpha; + var uplo; + var st; + var A; + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + A = arrays[ 2 ]; + + uplo = ndarraylike2scalar( arrays[ 3 ] ); + alpha = ndarraylike2scalar( arrays[ 4 ] ); + + st = getStrides( A, false ); + + strided( uplo, numelDimension( A, 0 ), alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ), getData( A ), st[ 0 ], st[ 1 ], getOffset( A ) ); // eslint-disable-line max-len + + return A; +} + + +// EXPORTS // + +module.exports = dsyr2; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/package.json new file mode 100644 index 000000000000..60a1123518dd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/base/ndarray/dsyr2", + "version": "0.0.0", + "description": "Perform the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "dsyr2", + "linear", + "algebra", + "subroutines", + "symmetric", + "rank-2", + "update", + "vector", + "matrix", + "array", + "ndarray", + "float64", + "double", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/test/test.js new file mode 100644 index 000000000000..562760f0d430 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dsyr2/test/test.js @@ -0,0 +1,360 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var dsyr2 = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} N - number of rows and columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, N, stride0, stride1, offset ) { + return new ndarray( 'float64', buffer, [ N, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dsyr2, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( dsyr2.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A` (upper)', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + ybuf = new Float64Array( [ 2.0, 1.0, 3.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = dsyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float64Array( [ 9.0, 12.0, 21.0, 2.0, 9.0, 20.0, 3.0, 2.0, 37.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float64Array( [ 1.0, 1.0, 1.0 ] ); + ybuf = new Float64Array( [ 1.0, 1.0, 1.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 1, 3, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = dsyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float64Array( [ 5.0, 2.0, 3.0, 6.0, 5.0, 2.0, 7.0, 6.0, 5.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A` (lower)', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + ybuf = new Float64Array( [ 2.0, 1.0, 3.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'lower' ), { + 'dtype': 'int32' + }); + v = dsyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float64Array( [ 9.0, 2.0, 3.0, 12.0, 9.0, 2.0, 21.0, 20.0, 37.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + ybuf = new Float64Array( [ 2.0, 1.0, 3.0 ] ); + Abuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = dsyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 0 ); + + ybuf = new Float64Array([ + 2.0, // 0 + 0.0, + 1.0, // 1 + 0.0, + 3.0 // 2 + ]); + y = vector( ybuf, 3, 2, 0 ); + + Abuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = dsyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float64Array( [ 8.0, 10.0, 18.0, 0.0, 8.0, 18.0, 0.0, 0.0, 36.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 3.0, // 2 + 2.0, // 1 + 1.0 // 0 + ]); + x = vector( xbuf, 3, -1, 2 ); + + ybuf = new Float64Array([ + 3.0, // 2 + 1.0, // 1 + 2.0 // 0 + ]); + y = vector( ybuf, 3, -1, 2 ); + + Abuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = dsyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float64Array( [ 8.0, 10.0, 18.0, 0.0, 8.0, 18.0, 0.0, 0.0, 36.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float64Array([ + 0.0, + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 1 ); + + ybuf = new Float64Array([ + 0.0, + 2.0, // 0 + 0.0, + 1.0, // 1 + 0.0, + 3.0 // 2 + ]); + y = vector( ybuf, 3, 2, 1 ); + + Abuf = new Float64Array([ + 999.0, + 999.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + A = matrix( Abuf, 3, 3, 1, 2 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = dsyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float64Array([ + 999.0, + 999.0, + 8.0, + 10.0, + 18.0, + 0.0, + 8.0, + 18.0, + 0.0, + 0.0, + 36.0 + ]); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat64Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dzasum/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/dzasum/README.md index 728cec93cf3b..b47552cf2e7b 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/dzasum/README.md +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dzasum/README.md @@ -33,7 +33,7 @@ The [_L1_ norm][l1norm] is defined as ``` @@ -66,9 +66,7 @@ var y = dzasum( [ x ] ); The function has the following parameters: -- **arrays**: array-like object containing the following ndarrays: - - - a one-dimensional input ndarray. +- **arrays**: array-like object containing a one-dimensional input ndarray. diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/dznrm2/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/dznrm2/README.md index d0f06536c7bb..6f771a690234 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/dznrm2/README.md +++ b/lib/node_modules/@stdlib/blas/base/ndarray/dznrm2/README.md @@ -33,7 +33,7 @@ The [L2-norm][l2-norm] is defined as ``` @@ -66,9 +66,7 @@ var y = dznrm2( [ x ] ); The function has the following parameters: -- **arrays**: array-like object containing the following ndarrays: - - - a one-dimensional input ndarray. +- **arrays**: array-like object containing a one-dimensional input ndarray. diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/README.md new file mode 100644 index 000000000000..12bee725d562 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/README.md @@ -0,0 +1,146 @@ + + +# ggemm + +> Perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var ggemm = require( '@stdlib/blas/base/ndarray/ggemm' ); +``` + +#### ggemm( arrays ) + +Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. + +```javascript +var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + +var A = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); +var B = matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ], 'generic' ); +var C = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); + +var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' +}); +var beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' +}); + +var out = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); +// returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] + +var bool = ( out === C ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a two-dimensional input ndarray corresponding to `B`. + - a two-dimensional input/output ndarray corresponding to `C`. + - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ggemm = require( '@stdlib/blas/base/ndarray/ggemm' ); + +var opts = { + 'dtype': 'generic' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var B = discreteUniform( [ 4, 2 ], 0, 10, opts ); +var C = discreteUniform( [ 3, 2 ], 0, 10, opts ); + +var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/benchmark/benchmark.js new file mode 100644 index 000000000000..ec88e8053ef5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/benchmark/benchmark.js @@ -0,0 +1,125 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var ggemm = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var transA; + var transB; + var alpha; + var beta; + var A; + var B; + var C; + + A = uniform( [ len, len ], -100.0, 100.0, options ); + B = uniform( [ len, len ], -100.0, 100.0, options ); + C = uniform( [ len, len ], -100.0, 100.0, options ); + + alpha = scalar2ndarray( 1.0, options ); + beta = scalar2ndarray( 1.0, options ); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( i%len, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/docs/repl.txt new file mode 100644 index 000000000000..6a4676450cf1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/docs/repl.txt @@ -0,0 +1,54 @@ + +{{alias}}( arrays ) + Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, + where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` + are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` + matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a two-dimensional input ndarray corresponding to `B`. + - a two-dimensional input/output ndarray corresponding to `C`. + - a zero-dimensional ndarray specifying whether `A` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray specifying whether `B` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `beta`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var abuf = [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ]; + > var A = {{alias:@stdlib/ndarray/matrix/ctor}}( abuf, 'generic' ); + + > var bbuf = [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ]; + > var B = {{alias:@stdlib/ndarray/matrix/ctor}}( bbuf, 'generic' ); + + > var cbuf = [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ]; + > var C = {{alias:@stdlib/ndarray/matrix/ctor}}( cbuf, 'generic' ); + + > var opts = { 'dtype': 'generic' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + > var beta = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > var transA = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + > var transB = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + + > {{alias}}( [ A, B, C, transA, transB, alpha, beta ] ); + > C + [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/docs/types/index.d.ts new file mode 100644 index 000000000000..7c2196b143b1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/docs/types/index.d.ts @@ -0,0 +1,76 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a two-dimensional input ndarray corresponding to `B`. +* - a two-dimensional input/output ndarray corresponding to `C`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); +* var B = matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ], 'generic' ); +* var C = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); +* +* var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var z = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); +* // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] +* +* var bool = ( z === C ); +* // returns true +*/ +declare function ggemm = typedndarray>( arrays: [ typedndarray, typedndarray, T, ndarray, ndarray, typedndarray, typedndarray ] ): T; + + +// EXPORTS // + +export = ggemm; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/docs/types/test.ts new file mode 100644 index 000000000000..0a8d67c099e1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/docs/types/test.ts @@ -0,0 +1,93 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import ggemm = require( '@stdlib/blas/base/ndarray/ggemm' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const A = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + const B = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + const C = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + const transA = zeros( [], { + 'dtype': 'int32' + }); + const transB = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'generic' + }); + const beta = zeros( [], { + 'dtype': 'generic' + }); + + ggemm( [ A, B, C, transA, transB, alpha, beta ] ); // $ExpectType genericndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + ggemm( '10' ); // $ExpectError + ggemm( 10 ); // $ExpectError + ggemm( true ); // $ExpectError + ggemm( false ); // $ExpectError + ggemm( null ); // $ExpectError + ggemm( undefined ); // $ExpectError + ggemm( [] ); // $ExpectError + ggemm( {} ); // $ExpectError + ggemm( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + const B = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + const C = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + const transA = zeros( [], { + 'dtype': 'int32' + }); + const transB = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'generic' + }); + const beta = zeros( [], { + 'dtype': 'generic' + }); + + ggemm(); // $ExpectError + ggemm( [ A, B, C, transA, transB, alpha, beta ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/examples/index.js new file mode 100644 index 000000000000..b06c5a45bf25 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/examples/index.js @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ggemm = require( './../lib' ); + +var opts = { + 'dtype': 'generic' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var B = discreteUniform( [ 4, 2 ], 0, 10, opts ); +var C = discreteUniform( [ 3, 2 ], 0, 10, opts ); + +var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/lib/index.js new file mode 100644 index 000000000000..147e8a4c4293 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/lib/index.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 3 routine to perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`. +* +* @module @stdlib/blas/base/ndarray/ggemm +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* var ggemm = require( '@stdlib/blas/base/ndarray/ggemm' ); +* +* var A = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); +* var B = matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ], 'generic' ); +* var C = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); +* +* var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var out = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); +* // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] +* +* var bool = ( out === C ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/lib/main.js new file mode 100644 index 000000000000..bf2c490a9afa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/lib/main.js @@ -0,0 +1,134 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var strided = require( '@stdlib/blas/base/ggemm' ).ndarray; + + +// VARIABLES // + +var NO_TRANSPOSE = resolveEnum( 'no-transpose' ); + + +// MAIN // + +/** +* Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a two-dimensional input ndarray corresponding to `B`. +* - a two-dimensional input/output ndarray corresponding to `C`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); +* var B = matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ], 'generic' ); +* var C = matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ], 'generic' ); +* +* var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var z = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); +* // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] +* +* var bool = ( z === C ); +* // returns true +*/ +function ggemm( arrays ) { + var transA; + var transB; + var alpha; + var beta; + var shA; + var shC; + var stA; + var stB; + var stC; + var A; + var B; + var C; + var M; + var N; + var K; + + A = arrays[ 0 ]; + B = arrays[ 1 ]; + C = arrays[ 2 ]; + + transA = ndarraylike2scalar( arrays[ 3 ] ); + transB = ndarraylike2scalar( arrays[ 4 ] ); + alpha = ndarraylike2scalar( arrays[ 5 ] ); + beta = ndarraylike2scalar( arrays[ 6 ] ); + + shA = getShape( A, false ); + shC = getShape( C, false ); + + stA = getStrides( A, false ); + stB = getStrides( B, false ); + stC = getStrides( C, false ); + + M = shC[ 0 ]; + N = shC[ 1 ]; + if ( resolveEnum( transA ) === NO_TRANSPOSE ) { + K = shA[ 1 ]; + } else { + K = shA[ 0 ]; + } + + strided( transA, transB, M, N, K, alpha, getData( A ), stA[ 0 ], stA[ 1 ], getOffset( A ), getData( B ), stB[ 0 ], stB[ 1 ], getOffset( B ), beta, getData( C ), stC[ 0 ], stC[ 1 ], getOffset( C ) ); // eslint-disable-line max-len + + return C; +} + + +// EXPORTS // + +module.exports = ggemm; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/package.json new file mode 100644 index 000000000000..c39a1b760c88 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/blas/base/ndarray/ggemm", + "version": "0.0.0", + "description": "Perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 3", + "ggemm", + "linear", + "algebra", + "subroutines", + "matrix-matrix", + "multiply", + "matrix", + "array", + "ndarray", + "typedndarray", + "generic", + "number" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/test/test.js new file mode 100644 index 000000000000..a4d10605616b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemm/test/test.js @@ -0,0 +1,440 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameArray = require( '@stdlib/assert/is-same-array' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var ggemm = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'generic', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof ggemm, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( ggemm.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (no-transpose, no-transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Bbuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Cbuf = [ 1.0, 1.0, 1.0, 1.0 ]; + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = [ 23.0, 29.0, 50.0, 65.0 ]; + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (transpose, no-transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Bbuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Cbuf = [ 1.0, 1.0, 1.0, 1.0 ]; + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + transA = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = [ 36.0, 45.0, 45.0, 57.0 ]; + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (no-transpose, transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Bbuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Cbuf = [ 1.0, 1.0, 1.0, 1.0 ]; + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 2, 3, 3, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int32' + }); + + v = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = [ 15.0, 33.0, 33.0, 78.0 ]; + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (conjugate-transpose, no-transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Bbuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Cbuf = [ 1.0, 1.0, 1.0, 1.0 ]; + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + transA = scalar2ndarray( resolveEnum( 'conjugate-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = [ 36.0, 45.0, 45.0, 57.0 ]; + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function correctly applies both `alpha` and `beta` scalars', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Bbuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Cbuf = [ 1.0, 2.0, 3.0, 4.0 ]; + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 3.0, { + 'dtype': 'generic' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = [ 47.0, 62.0, 107.0, 140.0 ]; + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `beta*C`', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Bbuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Cbuf = [ 1.0, 2.0, 3.0, 4.0 ]; + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = [ 2.0, 4.0, 6.0, 8.0 ]; + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports column-major ndarrays', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ]; + Bbuf = [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ]; + Cbuf = [ 1.0, 1.0, 1.0, 1.0 ]; + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + B = matrix( Bbuf, 3, 2, 1, 3, 0 ); + C = matrix( Cbuf, 2, 2, 1, 2, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = [ 23.0, 50.0, 29.0, 65.0 ]; + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = [ 4.0, 5.0, 6.0, 1.0, 2.0, 3.0 ]; + Bbuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Cbuf = [ 1.0, 1.0, 1.0, 1.0 ]; + A = matrix( Abuf, 2, 3, -3, 1, 3 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = [ 23.0, 29.0, 50.0, 65.0 ]; + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = [ 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Bbuf = [ 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + Cbuf = [ 0.0, 1.0, 1.0, 1.0, 1.0 ]; + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + B = matrix( Bbuf, 3, 2, 2, 1, 2 ); + C = matrix( Cbuf, 2, 2, 2, 1, 1 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = ggemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = [ 0.0, 23.0, 29.0, 50.0, 65.0 ]; + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/README.md new file mode 100644 index 000000000000..f20d25b61d58 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/README.md @@ -0,0 +1,140 @@ + + +# ggemv + +> Perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var ggemv = require( '@stdlib/blas/base/ndarray/ggemv' ); +``` + +#### ggemv( arrays ) + +Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + +```javascript +var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +var vector = require( '@stdlib/ndarray/vector/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + +var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); +var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); +var y = vector( [ 4.0, 5.0 ], 'generic' ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' +}); +var beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' +}); + +var out = ggemv( [ A, x, y, trans, alpha, beta ] ); +// returns [ 18.0, 37.0 ] + +var bool = ( out === y ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to `y`. + - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ggemv = require( '@stdlib/blas/base/ndarray/ggemv' ); + +var opts = { + 'dtype': 'generic' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = ggemv( [ A, x, y, trans, alpha, beta ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/benchmark/benchmark.js new file mode 100644 index 000000000000..1e25a8cf12b4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/benchmark/benchmark.js @@ -0,0 +1,121 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var ggemv = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var trans; + var alpha; + var beta; + var A; + var x; + var y; + + A = uniform( [ len, len ], -100.0, 100.0, options ); + x = uniform( [ len ], -100.0, 100.0, options ); + y = uniform( [ len ], -100.0, 100.0, options ); + + alpha = scalar2ndarray( 1.0, options ); + beta = scalar2ndarray( 1.0, options ); + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = ggemv( [ A, x, y, trans, alpha, beta ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/docs/repl.txt new file mode 100644 index 000000000000..dedc96905fdf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/docs/repl.txt @@ -0,0 +1,50 @@ + +{{alias}}( arrays ) + Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or + `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and + `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to `y`. + - a zero-dimensional ndarray specifying whether `A` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `beta`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ]; + > var A = {{alias:@stdlib/ndarray/matrix/ctor}}( abuf, 'generic' ); + + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = {{alias:@stdlib/ndarray/vector/ctor}}( xbuf, 'generic' ); + + > var ybuf = [ 4.0, 5.0 ]; + > var y = {{alias:@stdlib/ndarray/vector/ctor}}( ybuf, 'generic' ); + + > var opts = { 'dtype': 'generic' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + > var beta = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > var trans = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + + > {{alias}}( [ A, x, y, trans, alpha, beta ] ); + > y + [ 18.0, 37.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/docs/types/index.d.ts new file mode 100644 index 000000000000..e36816121d84 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/docs/types/index.d.ts @@ -0,0 +1,73 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to `y`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); +* var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); +* var y = vector( [ 4.0, 5.0 ], 'generic' ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var z = ggemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ 18.0, 37.0 ] +* +* var bool = ( z === y ); +* // returns true +*/ +declare function ggemv = typedndarray>( arrays: [ typedndarray, typedndarray, T, ndarray, typedndarray, typedndarray ] ): T; + + +// EXPORTS // + +export = ggemv; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/docs/types/test.ts new file mode 100644 index 000000000000..d9ef68af4f94 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/docs/types/test.ts @@ -0,0 +1,87 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import ggemv = require( '@stdlib/blas/base/ndarray/ggemv' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const A = zeros( [ 2, 3 ], { + 'dtype': 'generic' + }); + const x = zeros( [ 3 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 2 ], { + 'dtype': 'generic' + }); + const trans = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'generic' + }); + const beta = zeros( [], { + 'dtype': 'generic' + }); + + ggemv( [ A, x, y, trans, alpha, beta ] ); // $ExpectType genericndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + ggemv( '10' ); // $ExpectError + ggemv( 10 ); // $ExpectError + ggemv( true ); // $ExpectError + ggemv( false ); // $ExpectError + ggemv( null ); // $ExpectError + ggemv( undefined ); // $ExpectError + ggemv( [] ); // $ExpectError + ggemv( {} ); // $ExpectError + ggemv( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = zeros( [ 2, 3 ], { + 'dtype': 'generic' + }); + const x = zeros( [ 3 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 2 ], { + 'dtype': 'generic' + }); + const trans = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'generic' + }); + const beta = zeros( [], { + 'dtype': 'generic' + }); + + ggemv(); // $ExpectError + ggemv( [ A, x, y, trans, alpha, beta ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/examples/index.js new file mode 100644 index 000000000000..00741b085c15 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/examples/index.js @@ -0,0 +1,42 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ggemv = require( './../lib' ); + +var opts = { + 'dtype': 'generic' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = ggemv( [ A, x, y, trans, alpha, beta ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/lib/index.js new file mode 100644 index 000000000000..0d9cb255269f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/lib/index.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`. +* +* @module @stdlib/blas/base/ndarray/ggemv +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* var ggemv = require( '@stdlib/blas/base/ndarray/ggemv' ); +* +* var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); +* var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); +* var y = vector( [ 4.0, 5.0 ], 'generic' ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var out = ggemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ 18.0, 37.0 ] +* +* var bool = ( out === y ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/lib/main.js new file mode 100644 index 000000000000..7ecd6466efa7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/lib/main.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/ggemv' ).ndarray; + + +// MAIN // + +/** +* Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to `y`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); +* var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); +* var y = vector( [ 4.0, 5.0 ], 'generic' ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var z = ggemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ 18.0, 37.0 ] +* +* var bool = ( z === y ); +* // returns true +*/ +function ggemv( arrays ) { + var trans; + var alpha; + var beta; + var sh; + var st; + var A; + var x; + var y; + + A = arrays[ 0 ]; + x = arrays[ 1 ]; + y = arrays[ 2 ]; + + trans = ndarraylike2scalar( arrays[ 3 ] ); + alpha = ndarraylike2scalar( arrays[ 4 ] ); + beta = ndarraylike2scalar( arrays[ 5 ] ); + + sh = getShape( A, false ); + st = getStrides( A, false ); + + strided( trans, sh[ 0 ], sh[ 1 ], alpha, getData( A ), st[ 0 ], st[ 1 ], getOffset( A ), getData( x ), getStride( x, 0 ), getOffset( x ), beta, getData( y ), getStride( y, 0 ), getOffset( y ) ); + + return y; +} + + +// EXPORTS // + +module.exports = ggemv; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/package.json new file mode 100644 index 000000000000..28c61878e34d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/base/ndarray/ggemv", + "version": "0.0.0", + "description": "Perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "ggemv", + "linear", + "algebra", + "subroutines", + "matrix-vector", + "multiply", + "vector", + "matrix", + "array", + "ndarray", + "typedndarray", + "generic", + "number" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/test/test.js new file mode 100644 index 000000000000..c83d432671ba --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ggemv/test/test.js @@ -0,0 +1,411 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameArray = require( '@stdlib/assert/is-same-array' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var ggemv = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'generic', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'generic', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof ggemv, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( ggemv.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = [ + 1.0, // 0 + 2.0 // 1 + ]; + ybuf = [ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]; + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = ggemv( [ A, x, y, trans, alpha, beta ] ); + + expected = [ 6.0, 13.0, 20.0 ]; + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = [ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]; + ybuf = [ + 1.0, // 0 + 2.0 // 1 + ]; + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = ggemv( [ A, x, y, trans, alpha, beta ] ); + + expected = [ 46.0, 60.0 ]; + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A^T*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = [ + 1.0, // 0 + 2.0 // 1 + ]; + ybuf = [ + 1.0, // 0 + 2.0 // 1 + ]; + Abuf = [ 1.0, 2.0, 3.0, 4.0 ]; + A = matrix( Abuf, 2, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = ggemv( [ A, x, y, trans, alpha, beta ] ); + + expected = [ 8.0, 12.0 ]; + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = [ + 1.0, // 0 + 2.0 // 1 + ]; + ybuf = [ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]; + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = ggemv( [ A, x, y, trans, alpha, beta ] ); + + expected = [ 2.0, 4.0, 6.0 ]; + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides (transpose)', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + + xbuf = [ + 1.0, // 0 + 0.0, + 2.0 // 1 + ]; + x = vector( xbuf, 2, 2, 0 ); + + ybuf = [ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]; + y = vector( ybuf, 3, 2, 0 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = ggemv( [ A, x, y, trans, alpha, beta ] ); + + expected = [ 20.0, 0.0, 28.0, 0.0, 36.0 ]; + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides (transpose)', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + + xbuf = [ + 2.0, // 1 + 0.0, + 1.0 // 0 + ]; + x = vector( xbuf, 2, -2, 2 ); + + ybuf = [ + 3.0, // 2 + 0.0, + 2.0, // 1 + 0.0, + 1.0 // 0 + ]; + y = vector( ybuf, 3, -2, 4 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = ggemv( [ A, x, y, trans, alpha, beta ] ); + + expected = [ 36.0, 0.0, 28.0, 0.0, 20.0 ]; + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = [ + 0.0, + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]; + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + + xbuf = [ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]; + x = vector( xbuf, 3, 1, 2 ); + + ybuf = [ + 0.0, + 1.0, // 0 + 0.0, + 2.0 // 1 + ]; + y = vector( ybuf, 2, 2, 1 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = ggemv( [ A, x, y, trans, alpha, beta ] ); + + expected = [ + 0.0, + 30.0, + 0.0, + 68.0 + ]; + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/gger/README.md new file mode 100644 index 000000000000..955e293dd7d9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/README.md @@ -0,0 +1,126 @@ + + +# gger + +> Perform the rank 1 operation `A = alpha*x*y^T + A`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var gger = require( '@stdlib/blas/base/ndarray/gger' ); +``` + +#### gger( arrays ) + +Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + +```javascript +var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +var vector = require( '@stdlib/ndarray/vector/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = vector( [ 1.0, 2.0 ], 'generic' ); +var y = vector( [ 3.0, 4.0, 5.0 ], 'generic' ); +var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); + +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' +}); + +var z = gger( [ x, y, A, alpha ] ); +// returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] + +var bool = ( z === A ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gger = require( '@stdlib/blas/base/ndarray/gger' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 4 ], 0, 10, opts ); +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); + +var alpha = scalar2ndarray( 1.0, opts ); + +var out = gger( [ x, y, A, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/gger/benchmark/benchmark.js new file mode 100644 index 000000000000..f56468df742f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/benchmark/benchmark.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gger = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var x; + var y; + var A; + + x = uniform( [ len ], -100.0, 100.0, options ); + y = uniform( [ len ], -100.0, 100.0, options ); + A = uniform( [ len, len ], -100.0, 100.0, options ); + + alpha = scalar2ndarray( 1.0, options ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = gger( [ x, y, A, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( 0, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/gger/docs/repl.txt new file mode 100644 index 000000000000..155efd1e1618 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/docs/repl.txt @@ -0,0 +1,43 @@ + +{{alias}}( arrays ) + Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a + scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by + `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0 ]; + > var x = {{alias:@stdlib/ndarray/vector/ctor}}( xbuf, 'generic' ); + + > var ybuf = [ 3.0, 4.0, 5.0 ]; + > var y = {{alias:@stdlib/ndarray/vector/ctor}}( ybuf, 'generic' ); + + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ]; + > var A = {{alias:@stdlib/ndarray/matrix/ctor}}( abuf, 'generic' ); + + > var opts = { 'dtype': 'generic' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > {{alias}}( [ x, y, A, alpha ] ); + > A + [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/gger/docs/types/index.d.ts new file mode 100644 index 000000000000..65f430b07c60 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/docs/types/index.d.ts @@ -0,0 +1,64 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = vector( [ 1.0, 2.0 ], 'generic' ); +* var y = vector( [ 3.0, 4.0, 5.0 ], 'generic' ); +* var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); +* +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var z = gger( [ x, y, A, alpha ] ); +* // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +declare function gger = typedndarray>( arrays: [ typedndarray, typedndarray, T, typedndarray ] ): T; + + +// EXPORTS // + +export = gger; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/gger/docs/types/test.ts new file mode 100644 index 000000000000..5826cb55fc4e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/docs/types/test.ts @@ -0,0 +1,75 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import gger = require( '@stdlib/blas/base/ndarray/gger' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 2 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 3 ], { + 'dtype': 'generic' + }); + const A = zeros( [ 2, 3 ], { + 'dtype': 'generic' + }); + const alpha = zeros( [], { + 'dtype': 'generic' + }); + + gger( [ x, y, A, alpha ] ); // $ExpectType genericndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + gger( '10' ); // $ExpectError + gger( 10 ); // $ExpectError + gger( true ); // $ExpectError + gger( false ); // $ExpectError + gger( null ); // $ExpectError + gger( undefined ); // $ExpectError + gger( [] ); // $ExpectError + gger( {} ); // $ExpectError + gger( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 2 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 3 ], { + 'dtype': 'generic' + }); + const A = zeros( [ 2, 3 ], { + 'dtype': 'generic' + }); + const alpha = zeros( [], { + 'dtype': 'generic' + }); + + gger(); // $ExpectError + gger( [ x, y, A, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/gger/examples/index.js new file mode 100644 index 000000000000..cc6fe1b67407 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gger = require( './../lib' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 4 ], 0, 10, opts ); +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); + +var alpha = scalar2ndarray( 1.0, opts ); + +var out = gger( [ x, y, A, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/gger/lib/index.js new file mode 100644 index 000000000000..5b04df03f3fb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/lib/index.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the rank 1 operation `A = alpha*x*y^T + A`. +* +* @module @stdlib/blas/base/ndarray/gger +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var gger = require( '@stdlib/blas/base/ndarray/gger' ); +* +* var x = vector( [ 1.0, 2.0 ], 'generic' ); +* var y = vector( [ 3.0, 4.0, 5.0 ], 'generic' ); +* var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); +* +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var z = gger( [ x, y, A, alpha ] ); +* // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/gger/lib/main.js new file mode 100644 index 000000000000..cbccc29e93ab --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/lib/main.js @@ -0,0 +1,93 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/gger' ).ndarray; + + +// MAIN // + +/** +* Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = vector( [ 1.0, 2.0 ], 'generic' ); +* var y = vector( [ 3.0, 4.0, 5.0 ], 'generic' ); +* var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ], 'generic' ); +* +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var z = gger( [ x, y, A, alpha ] ); +* // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +function gger( arrays ) { + var alpha; + var sh; + var st; + var A; + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + A = arrays[ 2 ]; + + alpha = ndarraylike2scalar( arrays[ 3 ] ); + + sh = getShape( A, false ); + st = getStrides( A, false ); + + strided( sh[ 0 ], sh[ 1 ], alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ), getData( A ), st[ 0 ], st[ 1 ], getOffset( A ) ); + + return A; +} + + +// EXPORTS // + +module.exports = gger; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/gger/package.json new file mode 100644 index 000000000000..ece70b9afb36 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/blas/base/ndarray/gger", + "version": "0.0.0", + "description": "Perform the rank 1 operation `A = alpha*x*y^T + A`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "ger", + "linear", + "algebra", + "subroutines", + "rank-1", + "update", + "vector", + "matrix", + "array", + "ndarray" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gger/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/gger/test/test.js new file mode 100644 index 000000000000..3c5214d6675f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gger/test/test.js @@ -0,0 +1,323 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameArray = require( '@stdlib/assert/is-same-array' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var gger = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'generic', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'generic', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gger, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( gger.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the rank 1 operation `A = alpha*x*y^T + A`', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = [ 1.0, 2.0 ]; + ybuf = [ 1.0, 2.0, 3.0 ]; + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gger( [ x, y, A, alpha ] ); + + expected = [ 3.0, 6.0, 9.0, 8.0, 13.0, 18.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = [ 1.0, 1.0 ]; + ybuf = [ 1.0, 1.0, 1.0 ]; + Abuf = [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ]; + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gger( [ x, y, A, alpha ] ); + + expected = [ 3.0, 6.0, 4.0, 7.0, 5.0, 8.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided empty ndarrays, the function returns the output ndarray unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = []; + ybuf = []; + Abuf = []; + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + A = matrix( Abuf, 0, 0, 0, 0, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gger( [ x, y, A, alpha ] ); + + expected = []; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = [ 1.0, 2.0 ]; + ybuf = [ 3.0, 4.0, 5.0 ]; + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + + v = gger( [ x, y, A, alpha ] ); + + expected = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = [ + 1.0, // 0 + 0.0, + 2.0 // 1 + ]; + x = vector( xbuf, 2, 2, 0 ); + + ybuf = [ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]; + y = vector( ybuf, 3, 2, 0 ); + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gger( [ x, y, A, alpha ] ); + + expected = [ 3.0, 6.0, 9.0, 8.0, 13.0, 18.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = [ + 2.0, // 1 + 0.0, + 1.0 // 0 + ]; + x = vector( xbuf, 2, -2, 2 ); + + ybuf = [ + 3.0, // 2 + 0.0, + 2.0, // 1 + 0.0, + 1.0 // 0 + ]; + y = vector( ybuf, 3, -2, 4 ); + + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gger( [ x, y, A, alpha ] ); + + expected = [ 3.0, 6.0, 9.0, 8.0, 13.0, 18.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = [ + 0.0, + 1.0, // 0 + 0.0, + 2.0 // 1 + ]; + x = vector( xbuf, 2, 2, 1 ); + + ybuf = [ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]; + y = vector( ybuf, 3, 1, 2 ); + + Abuf = [ + 0.0, + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]; + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + + v = gger( [ x, y, A, alpha ] ); + + expected = [ + 0.0, + 0.0, + 2.0, + 4.0, + 6.0, + 6.0, + 9.0, + 12.0 + ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gnrm2/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/gnrm2/README.md index a95e2b6cd557..4830668a44c1 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/gnrm2/README.md +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gnrm2/README.md @@ -33,7 +33,7 @@ The [L2-norm][l2-norm] is defined as ``` @@ -66,9 +66,7 @@ var y = gnrm2( [ x ] ); The function has the following parameters: -- **arrays**: array-like object containing the following ndarrays: - - - a one-dimensional input ndarray. +- **arrays**: array-like object containing a one-dimensional input ndarray. diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/README.md new file mode 100644 index 000000000000..08585ae2d4ef --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/README.md @@ -0,0 +1,133 @@ + + +# gsyr + +> Perform the symmetric rank 1 operation `A = alpha*x*x^T + A`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var gsyr = require( '@stdlib/blas/base/ndarray/gsyr' ); +``` + +#### gsyr( arrays ) + +Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. + +```javascript +var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +var vector = require( '@stdlib/ndarray/vector/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + +var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); +var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ], 'generic' ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' +}); + +var y = gsyr( [ x, A, uplo, alpha ] ); +// returns [ [ 3.0, 6.0, 9.0 ], [ 2.0, 9.0, 14.0 ], [ 3.0, 2.0, 19.0 ] ] + +var bool = ( y === A ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a two-dimensional input ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gsyr = require( '@stdlib/blas/base/ndarray/gsyr' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = gsyr( [ x, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/benchmark/benchmark.js new file mode 100644 index 000000000000..d8cdf6f150b1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/benchmark/benchmark.js @@ -0,0 +1,118 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gsyr = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var uplo; + var x; + var A; + + x = uniform( [ len ], -100.0, 100.0, options ); + A = zeros( [ len, len ], options ); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + alpha = scalar2ndarray( 1.0, options ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = gsyr( [ x, A, uplo, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( z.get( 0, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/docs/repl.txt new file mode 100644 index 000000000000..b1ca2069bbe5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/docs/repl.txt @@ -0,0 +1,42 @@ + +{{alias}}( arrays ) + Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, + where `alpha` is a scalar, `x` is a one-dimensional ndarray, and + `A` is an `N` by `N` symmetric matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a two-dimensional input ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower + triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = {{alias:@stdlib/ndarray/vector/ctor}}( xbuf, 'generic' ); + + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ]; + > var A = {{alias:@stdlib/ndarray/matrix/ctor}}( abuf, 'generic' ); + + > var uplo = {{alias:@stdlib/ndarray/from-scalar}}( 'upper' ); + > var opts = { 'dtype': 'generic' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 2.0, opts ); + + > {{alias}}( [ x, A, uplo, alpha ] ); + > A + [ [ 3.0, 6.0, 9.0 ], [ 2.0, 9.0, 14.0 ], [ 3.0, 2.0, 19.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/docs/types/index.d.ts new file mode 100644 index 000000000000..834c4459e529 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/docs/types/index.d.ts @@ -0,0 +1,67 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a two-dimensional input ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); +* var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ], 'generic' ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 2.0, { +* 'dtype': 'generic' +* }); +* +* var y = gsyr( [ x, A, uplo, alpha ] ); +* // returns [ [ 3.0, 6.0, 9.0 ], [ 2.0, 9.0, 14.0 ], [ 3.0, 2.0, 19.0 ] ] +* +* var bool = ( y === A ); +* // returns true +*/ +declare function gsyr = typedndarray>( arrays: [ typedndarray, T, ndarray, typedndarray ] ): T; + + +// EXPORTS // + +export = gsyr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/docs/types/test.ts new file mode 100644 index 000000000000..7b96902f7678 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/docs/types/test.ts @@ -0,0 +1,75 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import gsyr = require( '@stdlib/blas/base/ndarray/gsyr' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 3 ], { + 'dtype': 'generic' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'generic' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'generic' + }); + + gsyr( [ x, A, uplo, alpha ] ); // $ExpectType genericndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + gsyr( '10' ); // $ExpectError + gsyr( 10 ); // $ExpectError + gsyr( true ); // $ExpectError + gsyr( false ); // $ExpectError + gsyr( null ); // $ExpectError + gsyr( undefined ); // $ExpectError + gsyr( [] ); // $ExpectError + gsyr( {} ); // $ExpectError + gsyr( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 3 ], { + 'dtype': 'generic' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'generic' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'generic' + }); + + gsyr(); // $ExpectError + gsyr( [ x, A, uplo, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/examples/index.js new file mode 100644 index 000000000000..731932d14569 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gsyr = require( './../lib' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = gsyr( [ x, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/lib/index.js new file mode 100644 index 000000000000..a17112a87340 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the symmetric rank 1 operation `A = alpha*x*x^T + A`. +* +* @module @stdlib/blas/base/ndarray/gsyr +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var gsyr = require( '@stdlib/blas/base/ndarray/gsyr' ); +* +* var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); +* var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ], 'generic' ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 2.0, { +* 'dtype': 'generic' +* }); +* +* var y = gsyr( [ x, A, uplo, alpha ] ); +* // returns [ [ 3.0, 6.0, 9.0 ], [ 2.0, 9.0, 14.0 ], [ 3.0, 2.0, 19.0 ] ] +* +* var bool = ( y === A ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/lib/main.js new file mode 100644 index 000000000000..e9343012f255 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/lib/main.js @@ -0,0 +1,90 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/gsyr' ).ndarray; + + +// MAIN // + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a two-dimensional input ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var matrix = require( '@stdlib/ndarray/matrix/ctor' ); +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = vector( [ 1.0, 2.0, 3.0 ], 'generic' ); +* var A = matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ], 'generic' ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 2.0, { +* 'dtype': 'generic' +* }); +* +* var y = gsyr( [ x, A, uplo, alpha ] ); +* // returns [ [ 3.0, 6.0, 9.0 ], [ 2.0, 9.0, 14.0 ], [ 3.0, 2.0, 19.0 ] ] +* +* var bool = ( y === A ); +* // returns true +*/ +function gsyr( arrays ) { + var alpha; + var uplo; + var x; + var A; + + x = arrays[ 0 ]; + A = arrays[ 1 ]; + + uplo = ndarraylike2scalar( arrays[ 2 ] ); + alpha = ndarraylike2scalar( arrays[ 3 ] ); + + strided( uplo, numelDimension( A, 0 ), alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( A ), getStride( A, 0 ), getStride( A, 1 ), getOffset( A ) ); + + return A; +} + + +// EXPORTS // + +module.exports = gsyr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/package.json new file mode 100644 index 000000000000..725d48f5e44d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/base/ndarray/gsyr", + "version": "0.0.0", + "description": "Perform the symmetric rank 1 operation `A = alpha*x*x^T + A`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "gsyr", + "linear", + "algebra", + "subroutines", + "symmetric", + "rank-1", + "update", + "vector", + "matrix", + "array", + "ndarray", + "generic", + "typedndarray" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/test/test.js new file mode 100644 index 000000000000..5151be74275c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/gsyr/test/test.js @@ -0,0 +1,283 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameArray = require( '@stdlib/assert/is-same-array' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var gsyr = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'generic', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} N - number of rows and columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, N, stride0, stride1, offset ) { + return new ndarray( 'generic', buffer, [ N, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gsyr, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( gsyr.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the symmetric rank 1 operation `A = alpha*x*x^T + A`', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = [ 1.0, 2.0, 3.0 ]; + Abuf = [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ]; + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gsyr( [ x, A, uplo, alpha ] ); + + expected = [ 3.0, 6.0, 9.0, 2.0, 9.0, 14.0, 3.0, 2.0, 19.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = [ 1.0, 1.0, 1.0 ]; + Abuf = [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ]; + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 1, 3, 0 ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gsyr( [ x, A, uplo, alpha ] ); + + expected = [ 3.0, 2.0, 3.0, 4.0, 3.0, 2.0, 5.0, 4.0, 3.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = [ 1.0, 2.0, 3.0 ]; + Abuf = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ]; + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + + v = gsyr( [ x, A, uplo, alpha ] ); + + expected = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = [ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]; + x = vector( xbuf, 3, 2, 0 ); + + Abuf = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + A = matrix( Abuf, 3, 3, 1, 0 ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gsyr( [ x, A, uplo, alpha ] ); + + expected = [ 2.0, 4.0, 6.0, 0.0, 8.0, 12.0, 0.0, 0.0, 18.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = [ + 3.0, // 2 + 2.0, // 1 + 1.0 // 0 + ]; + x = vector( xbuf, 3, -1, 2 ); + + Abuf = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + A = matrix( Abuf, 3, 3, 1, 0 ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gsyr( [ x, A, uplo, alpha ] ); + + expected = [ 2.0, 4.0, 6.0, 0.0, 8.0, 12.0, 0.0, 0.0, 18.0 ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = [ + 0.0, + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]; + x = vector( xbuf, 3, 2, 1 ); + + Abuf = [ + 999.0, + 999.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]; + A = matrix( Abuf, 3, 3, 1, 2 ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + v = gsyr( [ x, A, uplo, alpha ] ); + + expected = [ + 999.0, + 999.0, + 2.0, + 4.0, + 6.0, + 0.0, + 8.0, + 12.0, + 0.0, + 0.0, + 18.0 + ]; + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameArray( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/lib/index.js index 4646f1b68993..070e8c50c570 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/lib/index.js +++ b/lib/node_modules/@stdlib/blas/base/ndarray/lib/index.js @@ -54,6 +54,15 @@ setReadOnly( ns, 'caxpy', require( '@stdlib/blas/base/ndarray/caxpy' ) ); */ setReadOnly( ns, 'ccopy', require( '@stdlib/blas/base/ndarray/ccopy' ) ); +/** +* @name cgemv +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/cgemv} +*/ +setReadOnly( ns, 'cgemv', require( '@stdlib/blas/base/ndarray/cgemv' ) ); + /** * @name cscal * @memberof ns @@ -117,6 +126,33 @@ setReadOnly( ns, 'dcopy', require( '@stdlib/blas/base/ndarray/dcopy' ) ); */ setReadOnly( ns, 'ddot', require( '@stdlib/blas/base/ndarray/ddot' ) ); +/** +* @name dgemm +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/dgemm} +*/ +setReadOnly( ns, 'dgemm', require( '@stdlib/blas/base/ndarray/dgemm' ) ); + +/** +* @name dgemv +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/dgemv} +*/ +setReadOnly( ns, 'dgemv', require( '@stdlib/blas/base/ndarray/dgemv' ) ); + +/** +* @name dger +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/dger} +*/ +setReadOnly( ns, 'dger', require( '@stdlib/blas/base/ndarray/dger' ) ); + /** * @name dnrm2 * @memberof ns @@ -144,6 +180,15 @@ setReadOnly( ns, 'dscal', require( '@stdlib/blas/base/ndarray/dscal' ) ); */ setReadOnly( ns, 'dsdot', require( '@stdlib/blas/base/ndarray/dsdot' ) ); +/** +* @name dspr +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/dspr} +*/ +setReadOnly( ns, 'dspr', require( '@stdlib/blas/base/ndarray/dspr' ) ); + /** * @name dswap * @memberof ns @@ -153,6 +198,24 @@ setReadOnly( ns, 'dsdot', require( '@stdlib/blas/base/ndarray/dsdot' ) ); */ setReadOnly( ns, 'dswap', require( '@stdlib/blas/base/ndarray/dswap' ) ); +/** +* @name dsyr +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/dsyr} +*/ +setReadOnly( ns, 'dsyr', require( '@stdlib/blas/base/ndarray/dsyr' ) ); + +/** +* @name dsyr2 +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/dsyr2} +*/ +setReadOnly( ns, 'dsyr2', require( '@stdlib/blas/base/ndarray/dsyr2' ) ); + /** * @name dzasum * @memberof ns @@ -207,6 +270,33 @@ setReadOnly( ns, 'gcopy', require( '@stdlib/blas/base/ndarray/gcopy' ) ); */ setReadOnly( ns, 'gdot', require( '@stdlib/blas/base/ndarray/gdot' ) ); +/** +* @name ggemm +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/ggemm} +*/ +setReadOnly( ns, 'ggemm', require( '@stdlib/blas/base/ndarray/ggemm' ) ); + +/** +* @name ggemv +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/ggemv} +*/ +setReadOnly( ns, 'ggemv', require( '@stdlib/blas/base/ndarray/ggemv' ) ); + +/** +* @name gger +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/gger} +*/ +setReadOnly( ns, 'gger', require( '@stdlib/blas/base/ndarray/gger' ) ); + /** * @name gnrm2 * @memberof ns @@ -234,6 +324,15 @@ setReadOnly( ns, 'gscal', require( '@stdlib/blas/base/ndarray/gscal' ) ); */ setReadOnly( ns, 'gswap', require( '@stdlib/blas/base/ndarray/gswap' ) ); +/** +* @name gsyr +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/gsyr} +*/ +setReadOnly( ns, 'gsyr', require( '@stdlib/blas/base/ndarray/gsyr' ) ); + /** * @name idamax * @memberof ns @@ -324,6 +423,33 @@ setReadOnly( ns, 'sdot', require( '@stdlib/blas/base/ndarray/sdot' ) ); */ setReadOnly( ns, 'sdsdot', require( '@stdlib/blas/base/ndarray/sdsdot' ) ); +/** +* @name sgemm +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/sgemm} +*/ +setReadOnly( ns, 'sgemm', require( '@stdlib/blas/base/ndarray/sgemm' ) ); + +/** +* @name sgemv +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/sgemv} +*/ +setReadOnly( ns, 'sgemv', require( '@stdlib/blas/base/ndarray/sgemv' ) ); + +/** +* @name sger +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/sger} +*/ +setReadOnly( ns, 'sger', require( '@stdlib/blas/base/ndarray/sger' ) ); + /** * @name snrm2 * @memberof ns @@ -342,6 +468,15 @@ setReadOnly( ns, 'snrm2', require( '@stdlib/blas/base/ndarray/snrm2' ) ); */ setReadOnly( ns, 'sscal', require( '@stdlib/blas/base/ndarray/sscal' ) ); +/** +* @name sspr +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/sspr} +*/ +setReadOnly( ns, 'sspr', require( '@stdlib/blas/base/ndarray/sspr' ) ); + /** * @name sswap * @memberof ns @@ -351,6 +486,24 @@ setReadOnly( ns, 'sscal', require( '@stdlib/blas/base/ndarray/sscal' ) ); */ setReadOnly( ns, 'sswap', require( '@stdlib/blas/base/ndarray/sswap' ) ); +/** +* @name ssyr +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/ssyr} +*/ +setReadOnly( ns, 'ssyr', require( '@stdlib/blas/base/ndarray/ssyr' ) ); + +/** +* @name ssyr2 +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/base/ndarray/ssyr2} +*/ +setReadOnly( ns, 'ssyr2', require( '@stdlib/blas/base/ndarray/ssyr2' ) ); + /** * @name zaxpy * @memberof ns diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/scasum/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/scasum/README.md index 8b6a7500d6a8..4a35b457fa9b 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/scasum/README.md +++ b/lib/node_modules/@stdlib/blas/base/ndarray/scasum/README.md @@ -33,7 +33,7 @@ The [_L1_ norm][l1norm] is defined as ``` @@ -66,9 +66,7 @@ var y = scasum( [ x ] ); The function has the following parameters: -- **arrays**: array-like object containing the following ndarrays: - - - a one-dimensional input ndarray. +- **arrays**: array-like object containing a one-dimensional input ndarray. diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/scnrm2/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/scnrm2/README.md index 59c4034ad6c4..3192c36fb90d 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/scnrm2/README.md +++ b/lib/node_modules/@stdlib/blas/base/ndarray/scnrm2/README.md @@ -33,7 +33,7 @@ The [L2-norm][l2-norm] is defined as ``` @@ -66,9 +66,7 @@ var y = scnrm2( [ x ] ); The function has the following parameters: -- **arrays**: array-like object containing the following ndarrays: - - - a one-dimensional input ndarray. +- **arrays**: array-like object containing a one-dimensional input ndarray. diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/README.md new file mode 100644 index 000000000000..ae2443a75fc9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/README.md @@ -0,0 +1,146 @@ + + +# sgemm + +> Perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var sgemm = require( '@stdlib/blas/base/ndarray/sgemm' ); +``` + +#### sgemm( arrays ) + +Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. + +```javascript +var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + +var A = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +var B = new Float32Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); +var C = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); + +var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' +}); +var beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' +}); + +var out = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); +// returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] + +var bool = ( out === C ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a two-dimensional input ndarray corresponding to `B`. + - a two-dimensional input/output ndarray corresponding to `C`. + - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sgemm = require( '@stdlib/blas/base/ndarray/sgemm' ); + +var opts = { + 'dtype': 'float32' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var B = discreteUniform( [ 4, 2 ], 0, 10, opts ); +var C = discreteUniform( [ 3, 2 ], 0, 10, opts ); + +var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/benchmark/benchmark.js new file mode 100644 index 000000000000..c1a2f92350b6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/benchmark/benchmark.js @@ -0,0 +1,125 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sgemm = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var transA; + var transB; + var alpha; + var beta; + var A; + var B; + var C; + + A = uniform( [ len, len ], -100.0, 100.0, options ); + B = uniform( [ len, len ], -100.0, 100.0, options ); + C = uniform( [ len, len ], -100.0, 100.0, options ); + + alpha = scalar2ndarray( 1.0, options ); + beta = scalar2ndarray( 1.0, options ); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnanf( z.get( i%len, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/docs/repl.txt new file mode 100644 index 000000000000..fade23ad1514 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/docs/repl.txt @@ -0,0 +1,54 @@ + +{{alias}}( arrays ) + Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, + where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` + are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` + matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a two-dimensional input ndarray corresponding to `B`. + - a two-dimensional input/output ndarray corresponding to `C`. + - a zero-dimensional ndarray specifying whether `A` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray specifying whether `B` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `beta`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var abuf = [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float32}}( abuf ); + + > var bbuf = [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ]; + > var B = new {{alias:@stdlib/ndarray/matrix/float32}}( bbuf ); + + > var cbuf = [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ]; + > var C = new {{alias:@stdlib/ndarray/matrix/float32}}( cbuf ); + + > var opts = { 'dtype': 'float32' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + > var beta = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > var transA = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + > var transB = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + + > {{alias}}( [ A, B, C, transA, transB, alpha, beta ] ); + > C + [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/docs/types/index.d.ts new file mode 100644 index 000000000000..0109f1082a18 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/docs/types/index.d.ts @@ -0,0 +1,76 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a two-dimensional input ndarray corresponding to `B`. +* - a two-dimensional input/output ndarray corresponding to `C`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* var B = new Float32Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); +* var C = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* +* var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var z = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); +* // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] +* +* var bool = ( z === C ); +* // returns true +*/ +declare function sgemm( arrays: [ float32ndarray, float32ndarray, float32ndarray, ndarray, ndarray, float32ndarray, float32ndarray ] ): float32ndarray; + + +// EXPORTS // + +export = sgemm; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/docs/types/test.ts new file mode 100644 index 000000000000..5c8d26991e2e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/docs/types/test.ts @@ -0,0 +1,93 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import sgemm = require( '@stdlib/blas/base/ndarray/sgemm' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const A = zeros( [ 2, 2 ], { + 'dtype': 'float32' + }); + const B = zeros( [ 2, 2 ], { + 'dtype': 'float32' + }); + const C = zeros( [ 2, 2 ], { + 'dtype': 'float32' + }); + const transA = zeros( [], { + 'dtype': 'int32' + }); + const transB = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + const beta = zeros( [], { + 'dtype': 'float32' + }); + + sgemm( [ A, B, C, transA, transB, alpha, beta ] ); // $ExpectType float32ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + sgemm( '10' ); // $ExpectError + sgemm( 10 ); // $ExpectError + sgemm( true ); // $ExpectError + sgemm( false ); // $ExpectError + sgemm( null ); // $ExpectError + sgemm( undefined ); // $ExpectError + sgemm( [] ); // $ExpectError + sgemm( {} ); // $ExpectError + sgemm( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = zeros( [ 2, 2 ], { + 'dtype': 'float32' + }); + const B = zeros( [ 2, 2 ], { + 'dtype': 'float32' + }); + const C = zeros( [ 2, 2 ], { + 'dtype': 'float32' + }); + const transA = zeros( [], { + 'dtype': 'int32' + }); + const transB = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + const beta = zeros( [], { + 'dtype': 'float32' + }); + + sgemm(); // $ExpectError + sgemm( [ A, B, C, transA, transB, alpha, beta ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/examples/index.js new file mode 100644 index 000000000000..a9ab43b98c78 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/examples/index.js @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sgemm = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var B = discreteUniform( [ 4, 2 ], 0, 10, opts ); +var C = discreteUniform( [ 3, 2 ], 0, 10, opts ); + +var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/lib/index.js new file mode 100644 index 000000000000..fd7745b0ac0b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/lib/index.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 3 routine to perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`. +* +* @module @stdlib/blas/base/ndarray/sgemm +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* var sgemm = require( '@stdlib/blas/base/ndarray/sgemm' ); +* +* var A = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* var B = new Float32Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); +* var C = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* +* var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var out = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); +* // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] +* +* var bool = ( out === C ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/lib/main.js new file mode 100644 index 000000000000..6c8542547cf5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/lib/main.js @@ -0,0 +1,134 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var strided = require( '@stdlib/blas/base/sgemm' ).ndarray; + + +// VARIABLES // + +var NO_TRANSPOSE = resolveEnum( 'no-transpose' ); + + +// MAIN // + +/** +* Performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`, where `op(X)` is either `op(X) = X` or `op(X) = X^T`, `alpha` and `beta` are scalars, `A`, `B`, and `C` are matrices, with `op(A)` an `M` by `K` matrix, `op(B)` a `K` by `N` matrix, and `C` an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a two-dimensional input ndarray corresponding to `B`. +* - a two-dimensional input/output ndarray corresponding to `C`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray specifying whether `B` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* var B = new Float32Matrix( [ [ 1.0, 1.0 ], [ 0.0, 1.0 ] ] ); +* var C = new Float32Matrix( [ [ 1.0, 2.0 ], [ 3.0, 4.0 ] ] ); +* +* var transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var z = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); +* // returns [ [ 2.0, 5.0 ], [ 6.0, 11.0 ] ] +* +* var bool = ( z === C ); +* // returns true +*/ +function sgemm( arrays ) { + var transA; + var transB; + var alpha; + var beta; + var shA; + var shC; + var stA; + var stB; + var stC; + var A; + var B; + var C; + var M; + var N; + var K; + + A = arrays[ 0 ]; + B = arrays[ 1 ]; + C = arrays[ 2 ]; + + transA = ndarraylike2scalar( arrays[ 3 ] ); + transB = ndarraylike2scalar( arrays[ 4 ] ); + alpha = ndarraylike2scalar( arrays[ 5 ] ); + beta = ndarraylike2scalar( arrays[ 6 ] ); + + shA = getShape( A, false ); + shC = getShape( C, false ); + + stA = getStrides( A, false ); + stB = getStrides( B, false ); + stC = getStrides( C, false ); + + M = shC[ 0 ]; + N = shC[ 1 ]; + if ( resolveEnum( transA ) === NO_TRANSPOSE ) { + K = shA[ 1 ]; + } else { + K = shA[ 0 ]; + } + + strided( transA, transB, M, N, K, alpha, getData( A ), stA[ 0 ], stA[ 1 ], getOffset( A ), getData( B ), stB[ 0 ], stB[ 1 ], getOffset( B ), beta, getData( C ), stC[ 0 ], stC[ 1 ], getOffset( C ) ); // eslint-disable-line max-len + + return C; +} + + +// EXPORTS // + +module.exports = sgemm; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/package.json new file mode 100644 index 000000000000..3106e604b02a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/blas/base/ndarray/sgemm", + "version": "0.0.0", + "description": "Perform the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 3", + "sgemm", + "linear", + "algebra", + "subroutines", + "matrix-matrix", + "multiply", + "matrix", + "array", + "ndarray", + "float32", + "single", + "float32array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/test/test.js new file mode 100644 index 000000000000..527f05001b31 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemm/test/test.js @@ -0,0 +1,441 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var sgemm = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'float32', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sgemm, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( sgemm.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (no-transpose, no-transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float32Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float32Array( [ 23.0, 29.0, 50.0, 65.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (transpose, no-transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float32Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + transA = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float32Array( [ 36.0, 45.0, 45.0, 57.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (no-transpose, transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float32Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 2, 3, 3, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int32' + }); + + v = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float32Array( [ 15.0, 33.0, 33.0, 78.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-matrix operation `C = alpha*op(A)*op(B) + beta*C` (conjugate-transpose, no-transpose)', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float32Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + transA = scalar2ndarray( resolveEnum( 'conjugate-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float32Array( [ 36.0, 45.0, 45.0, 57.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function correctly applies both `alpha` and `beta` scalars', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 3.0, { + 'dtype': 'float32' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float32Array( [ 47.0, 62.0, 107.0, 140.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `beta*C`', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float32Array( [ 2.0, 4.0, 6.0, 8.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports column-major ndarrays', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float32Array( [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ] ); + Bbuf = new Float32Array( [ 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 ] ); + Cbuf = new Float32Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + B = matrix( Bbuf, 3, 2, 1, 3, 0 ); + C = matrix( Cbuf, 2, 2, 1, 2, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float32Array( [ 23.0, 50.0, 29.0, 65.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float32Array( [ 4.0, 5.0, 6.0, 1.0, 2.0, 3.0 ] ); + Bbuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float32Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, -3, 1, 3 ); + B = matrix( Bbuf, 3, 2, 2, 1, 0 ); + C = matrix( Cbuf, 2, 2, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float32Array( [ 23.0, 29.0, 50.0, 65.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var transA; + var transB; + var alpha; + var beta; + var Abuf; + var Bbuf; + var Cbuf; + var A; + var B; + var C; + var v; + + Abuf = new Float32Array( [ 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Bbuf = new Float32Array( [ 0.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + Cbuf = new Float32Array( [ 0.0, 1.0, 1.0, 1.0, 1.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + B = matrix( Bbuf, 3, 2, 2, 1, 2 ); + C = matrix( Cbuf, 2, 2, 2, 1, 1 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + transA = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + transB = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int32' + }); + + v = sgemm( [ A, B, C, transA, transB, alpha, beta ] ); + + expected = new Float32Array( [ 0.0, 23.0, 29.0, 50.0, 65.0 ] ); + t.strictEqual( v, C, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/README.md new file mode 100644 index 000000000000..b004fbbf6c54 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/README.md @@ -0,0 +1,140 @@ + + +# sgemv + +> Perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var sgemv = require( '@stdlib/blas/base/ndarray/sgemv' ); +``` + +#### sgemv( arrays ) + +Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + +```javascript +var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); + +var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +var y = new Float32Vector( [ 4.0, 5.0 ] ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' +}); +var beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' +}); + +var out = sgemv( [ A, x, y, trans, alpha, beta ] ); +// returns [ 18.0, 37.0 ] + +var bool = ( out === y ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to `y`. + - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sgemv = require( '@stdlib/blas/base/ndarray/sgemv' ); + +var opts = { + 'dtype': 'float32' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = sgemv( [ A, x, y, trans, alpha, beta ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/benchmark/benchmark.js new file mode 100644 index 000000000000..31090b6b36c9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/benchmark/benchmark.js @@ -0,0 +1,121 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sgemv = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var trans; + var alpha; + var beta; + var A; + var x; + var y; + + A = uniform( [ len, len ], -100.0, 100.0, options ); + x = uniform( [ len ], -100.0, 100.0, options ); + y = uniform( [ len ], -100.0, 100.0, options ); + + alpha = scalar2ndarray( 1.0, options ); + beta = scalar2ndarray( 1.0, options ); + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = sgemv( [ A, x, y, trans, alpha, beta ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnanf( z.get( i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/docs/repl.txt new file mode 100644 index 000000000000..1edf61c96226 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/docs/repl.txt @@ -0,0 +1,50 @@ + +{{alias}}( arrays ) + Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` + or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` + and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a two-dimensional input ndarray corresponding to `A`. + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to `y`. + - a zero-dimensional ndarray specifying whether `A` should be + transposed, conjugate-transposed, or not transposed. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `beta`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float32}}( abuf ); + + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float32}}( xbuf ); + + > var ybuf = [ 4.0, 5.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float32}}( ybuf ); + + > var opts = { 'dtype': 'float32' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + > var beta = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > var trans = {{alias:@stdlib/ndarray/from-scalar}}( 'no-transpose' ); + + > {{alias}}( [ A, x, y, trans, alpha, beta ] ); + > y + [ 18.0, 37.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/docs/types/index.d.ts new file mode 100644 index 000000000000..a805fa041187 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/docs/types/index.d.ts @@ -0,0 +1,73 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to `y`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float32Vector( [ 4.0, 5.0 ] ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var z = sgemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ 18.0, 37.0 ] +* +* var bool = ( z === y ); +* // returns true +*/ +declare function sgemv( arrays: [ float32ndarray, float32ndarray, float32ndarray, ndarray, float32ndarray, float32ndarray ] ): float32ndarray; + + +// EXPORTS // + +export = sgemv; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/docs/types/test.ts new file mode 100644 index 000000000000..9ccf9c531ed9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/docs/types/test.ts @@ -0,0 +1,87 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import sgemv = require( '@stdlib/blas/base/ndarray/sgemv' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const A = zeros( [ 2, 3 ], { + 'dtype': 'float32' + }); + const x = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 2 ], { + 'dtype': 'float32' + }); + const trans = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + const beta = zeros( [], { + 'dtype': 'float32' + }); + + sgemv( [ A, x, y, trans, alpha, beta ] ); // $ExpectType float32ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + sgemv( '10' ); // $ExpectError + sgemv( 10 ); // $ExpectError + sgemv( true ); // $ExpectError + sgemv( false ); // $ExpectError + sgemv( null ); // $ExpectError + sgemv( undefined ); // $ExpectError + sgemv( [] ); // $ExpectError + sgemv( {} ); // $ExpectError + sgemv( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const A = zeros( [ 2, 3 ], { + 'dtype': 'float32' + }); + const x = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 2 ], { + 'dtype': 'float32' + }); + const trans = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + const beta = zeros( [], { + 'dtype': 'float32' + }); + + sgemv(); // $ExpectError + sgemv( [ A, x, y, trans, alpha, beta ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/examples/index.js new file mode 100644 index 000000000000..fd24fb8c4034 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/examples/index.js @@ -0,0 +1,42 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sgemv = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); + +var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, opts ); +var beta = scalar2ndarray( 1.0, opts ); + +var out = sgemv( [ A, x, y, trans, alpha, beta ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/lib/index.js new file mode 100644 index 000000000000..16afa54131ab --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/lib/index.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`. +* +* @module @stdlib/blas/base/ndarray/sgemv +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* var sgemv = require( '@stdlib/blas/base/ndarray/sgemv' ); +* +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float32Vector( [ 4.0, 5.0 ] ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var out = sgemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ 18.0, 37.0 ] +* +* var bool = ( out === y ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/lib/main.js new file mode 100644 index 000000000000..897ee87d459b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/lib/main.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/sgemv' ).ndarray; + + +// MAIN // + +/** +* Performs one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`, where `alpha` and `beta` are scalars, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a two-dimensional input ndarray corresponding to `A`. +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to `y`. +* - a zero-dimensional ndarray specifying whether `A` should be transposed, conjugate-transposed, or not transposed. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `beta`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +* +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float32Vector( [ 4.0, 5.0 ] ); +* +* var trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* var beta = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var z = sgemv( [ A, x, y, trans, alpha, beta ] ); +* // returns [ 18.0, 37.0 ] +* +* var bool = ( z === y ); +* // returns true +*/ +function sgemv( arrays ) { + var trans; + var alpha; + var beta; + var sh; + var st; + var A; + var x; + var y; + + A = arrays[ 0 ]; + x = arrays[ 1 ]; + y = arrays[ 2 ]; + + trans = ndarraylike2scalar( arrays[ 3 ] ); + alpha = ndarraylike2scalar( arrays[ 4 ] ); + beta = ndarraylike2scalar( arrays[ 5 ] ); + + sh = getShape( A, false ); + st = getStrides( A, false ); + + strided( trans, sh[ 0 ], sh[ 1 ], alpha, getData( A ), st[ 0 ], st[ 1 ], getOffset( A ), getData( x ), getStride( x, 0 ), getOffset( x ), beta, getData( y ), getStride( y, 0 ), getOffset( y ) ); + + return y; +} + + +// EXPORTS // + +module.exports = sgemv; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/package.json new file mode 100644 index 000000000000..8f0d0e7113fd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/base/ndarray/sgemv", + "version": "0.0.0", + "description": "Perform one of the matrix-vector operations `y = alpha*A*x + beta*y` or `y = alpha*A^T*x + beta*y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "sgemv", + "linear", + "algebra", + "subroutines", + "matrix-vector", + "multiply", + "vector", + "matrix", + "array", + "ndarray", + "float32", + "single", + "float32array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/test/test.js new file mode 100644 index 000000000000..fe81627296d6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sgemv/test/test.js @@ -0,0 +1,457 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/transpose-operation-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var sgemv = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float32', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'float32', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sgemv, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( sgemv.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = sgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float32Array( [ 6.0, 13.0, 20.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + ybuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = sgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float32Array( [ 46.0, 60.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A^T*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + A = matrix( Abuf, 2, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = sgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float32Array( [ 8.0, 12.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the matrix-vector operation `y = alpha*A^H*x + beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + A = matrix( Abuf, 2, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + trans = scalar2ndarray( resolveEnum( 'conjugate-transpose' ), { + 'dtype': 'int8' + }); + + v = sgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float32Array( [ 8.0, 12.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `beta*y`', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 3, 2, 2, 1, 0 ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = sgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float32Array( [ 2.0, 4.0, 6.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides (transpose)', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + + xbuf = new Float32Array([ + 1.0, // 0 + 0.0, + 2.0 // 1 + ]); + x = vector( xbuf, 2, 2, 0 ); + + ybuf = new Float32Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + y = vector( ybuf, 3, 2, 0 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = sgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float32Array( [ 20.0, 0.0, 28.0, 0.0, 36.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides (transpose)', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + + xbuf = new Float32Array([ + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + x = vector( xbuf, 2, -2, 2 ); + + ybuf = new Float32Array([ + 3.0, // 2 + 0.0, + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + y = vector( ybuf, 3, -2, 4 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + trans = scalar2ndarray( resolveEnum( 'transpose' ), { + 'dtype': 'int8' + }); + + v = sgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float32Array( [ 36.0, 0.0, 28.0, 0.0, 20.0 ] ); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var trans; + var alpha; + var beta; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + Abuf = new Float32Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + + xbuf = new Float32Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + x = vector( xbuf, 3, 1, 2 ); + + ybuf = new Float32Array([ + 0.0, + 1.0, // 0 + 0.0, + 2.0 // 1 + ]); + y = vector( ybuf, 2, 2, 1 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + beta = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + trans = scalar2ndarray( resolveEnum( 'no-transpose' ), { + 'dtype': 'int8' + }); + + v = sgemv( [ A, x, y, trans, alpha, beta ] ); + + expected = new Float32Array([ + 0.0, + 30.0, + 0.0, + 68.0 + ]); + t.strictEqual( v, y, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/sger/README.md new file mode 100644 index 000000000000..b7f4c0eaa46e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/README.md @@ -0,0 +1,126 @@ + + +# sger + +> Perform the rank 1 operation `A = alpha*x*y^T + A`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var sger = require( '@stdlib/blas/base/ndarray/sger' ); +``` + +#### sger( arrays ) + +Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. + +```javascript +var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = new Float32Vector( [ 1.0, 2.0 ] ); +var y = new Float32Vector( [ 3.0, 4.0, 5.0 ] ); +var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); + +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' +}); + +var out = sger( [ x, y, A, alpha ] ); +// returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] + +var bool = ( out === A ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sger = require( '@stdlib/blas/base/ndarray/sger' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 4 ], 0, 10, opts ); +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); + +var alpha = scalar2ndarray( 1.0, opts ); + +var out = sger( [ x, y, A, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/sger/benchmark/benchmark.js new file mode 100644 index 000000000000..5b817e2194a6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/benchmark/benchmark.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sger = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var x; + var y; + var A; + + x = uniform( [ len ], -100.0, 100.0, options ); + y = uniform( [ len ], -100.0, 100.0, options ); + A = uniform( [ len, len ], -100.0, 100.0, options ); + + alpha = scalar2ndarray( 1.0, options ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = sger( [ x, y, A, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnanf( z.get( 0, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/sger/docs/repl.txt new file mode 100644 index 000000000000..bee50d76e12a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/docs/repl.txt @@ -0,0 +1,43 @@ + +{{alias}}( arrays ) + Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a + scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by + `N` matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float32}}( xbuf ); + + > var ybuf = [ 3.0, 4.0, 5.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float32}}( ybuf ); + + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float32}}( abuf ); + + > var opts = { 'dtype': 'float32' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > {{alias}}( [ x, y, A, alpha ] ); + > A + [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/sger/docs/types/index.d.ts new file mode 100644 index 000000000000..24c3cd0ff76e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/docs/types/index.d.ts @@ -0,0 +1,64 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float32Vector( [ 1.0, 2.0 ] ); +* var y = new Float32Vector( [ 3.0, 4.0, 5.0 ] ); +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var z = sger( [ x, y, A, alpha ] ); +* // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +declare function sger( arrays: [ float32ndarray, float32ndarray, float32ndarray, float32ndarray ] ): float32ndarray; + + +// EXPORTS // + +export = sger; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/sger/docs/types/test.ts new file mode 100644 index 000000000000..0bdeaf608342 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/docs/types/test.ts @@ -0,0 +1,75 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import sger = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 2 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const A = zeros( [ 2, 3 ], { + 'dtype': 'float32' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + + sger( [ x, y, A, alpha ] ); // $ExpectType float32ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + sger( '10' ); // $ExpectError + sger( 10 ); // $ExpectError + sger( true ); // $ExpectError + sger( false ); // $ExpectError + sger( null ); // $ExpectError + sger( undefined ); // $ExpectError + sger( [] ); // $ExpectError + sger( {} ); // $ExpectError + sger( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 2 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const A = zeros( [ 2, 3 ], { + 'dtype': 'float32' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + + sger(); // $ExpectError + sger( [ x, y, A, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/sger/examples/index.js new file mode 100644 index 000000000000..77d0373ed83b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sger = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 4 ], 0, 10, opts ); +var A = discreteUniform( [ 3, 4 ], 0, 10, opts ); + +var alpha = scalar2ndarray( 1.0, opts ); + +var out = sger( [ x, y, A, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/sger/lib/index.js new file mode 100644 index 000000000000..05beb6368f5b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/lib/index.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the rank 1 operation `A = alpha*x*y^T + A`. +* +* @module @stdlib/blas/base/ndarray/sger +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var sger = require( '@stdlib/blas/base/ndarray/sger' ); +* +* var x = new Float32Vector( [ 1.0, 2.0 ] ); +* var y = new Float32Vector( [ 3.0, 4.0, 5.0 ] ); +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var out = sger( [ x, y, A, alpha ] ); +* // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] +* +* var bool = ( out === A ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/sger/lib/main.js new file mode 100644 index 000000000000..619ecddfe796 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/lib/main.js @@ -0,0 +1,93 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var getShape = require( '@stdlib/ndarray/base/shape' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/sger' ).ndarray; + + +// MAIN // + +/** +* Performs the rank 1 operation `A = alpha*x*y^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `M` by `N` matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float32Vector( [ 1.0, 2.0 ] ); +* var y = new Float32Vector( [ 3.0, 4.0, 5.0 ] ); +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 4.0, 5.0, 6.0 ] ] ); +* +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var z = sger( [ x, y, A, alpha ] ); +* // returns [ [ 4.0, 6.0, 8.0 ], [ 10.0, 13.0, 16.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +function sger( arrays ) { + var alpha; + var sh; + var st; + var A; + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + A = arrays[ 2 ]; + + alpha = ndarraylike2scalar( arrays[ 3 ] ); + + sh = getShape( A, false ); + st = getStrides( A, false ); + + strided( sh[ 0 ], sh[ 1 ], alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ), getData( A ), st[ 0 ], st[ 1 ], getOffset( A ) ); + + return A; +} + + +// EXPORTS // + +module.exports = sger; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/sger/package.json new file mode 100644 index 000000000000..7384175240ca --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/base/ndarray/sger", + "version": "0.0.0", + "description": "Perform the rank 1 operation `A = alpha*x*y^T + A`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "sger", + "linear", + "algebra", + "subroutines", + "rank-1", + "update", + "vector", + "matrix", + "array", + "ndarray", + "float32", + "single", + "float32array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sger/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/sger/test/test.js new file mode 100644 index 000000000000..ddb17e41c1a5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sger/test/test.js @@ -0,0 +1,315 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var sger = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float32', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} M - number of rows +* @param {NonNegativeInteger} N - number of columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, M, N, stride0, stride1, offset ) { + return new ndarray( 'float32', buffer, [ M, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sger, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( sger.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the rank 1 operation `A = alpha*x*y^T + A`', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + v = sger( [ x, y, A, alpha ] ); + + expected = new Float32Array( [ 2.0, 4.0, 6.0, 6.0, 9.0, 12.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 2, 3, 1, 2, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + v = sger( [ x, y, A, alpha ] ); + + expected = new Float32Array( [ 2.0, 4.0, 5.0, 8.0, 8.0, 12.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 1.0, // 0 + 2.0 // 1 + ]); + ybuf = new Float32Array([ + 3.0, // 0 + 4.0, // 1 + 5.0 // 2 + ]); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + + v = sger( [ x, y, A, alpha ] ); + + expected = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 1.0, // 0 + 0.0, + 2.0 // 1 + ]); + x = vector( xbuf, 2, 2, 0 ); + + ybuf = new Float32Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + y = vector( ybuf, 3, 2, 0 ); + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + v = sger( [ x, y, A, alpha ] ); + + expected = new Float32Array( [ 3.0, 6.0, 9.0, 8.0, 13.0, 18.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + x = vector( xbuf, 2, -2, 2 ); + + ybuf = new Float32Array([ + 3.0, // 2 + 0.0, + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + y = vector( ybuf, 3, -2, 4 ); + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + A = matrix( Abuf, 2, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + v = sger( [ x, y, A, alpha ] ); + + expected = new Float32Array( [ 3.0, 6.0, 9.0, 8.0, 13.0, 18.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 0.0, + 1.0, // 0 + 0.0, + 2.0 // 1 + ]); + x = vector( xbuf, 2, 2, 1 ); + + ybuf = new Float32Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + y = vector( ybuf, 3, 1, 2 ); + + Abuf = new Float32Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + A = matrix( Abuf, 2, 3, 3, 1, 2 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + v = sger( [ x, y, A, alpha ] ); + + expected = new Float32Array([ + 0.0, + 0.0, + 2.0, + 4.0, + 6.0, + 6.0, + 9.0, + 12.0 + ]); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/snrm2/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/snrm2/README.md index 847e89b13662..cdec05fd54fd 100644 --- a/lib/node_modules/@stdlib/blas/base/ndarray/snrm2/README.md +++ b/lib/node_modules/@stdlib/blas/base/ndarray/snrm2/README.md @@ -33,7 +33,7 @@ The [L2-norm][l2-norm] is defined as ``` @@ -66,9 +66,7 @@ var y = snrm2( [ x ] ); The function has the following parameters: -- **arrays**: array-like object containing the following ndarrays: - - - a one-dimensional input ndarray. +- **arrays**: array-like object containing a one-dimensional input ndarray. diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/README.md new file mode 100644 index 000000000000..c2a71bc49a26 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/README.md @@ -0,0 +1,131 @@ + + +# sspr + +> Perform the symmetric rank 1 operation `A = alpha*x*x^T + A` for a symmetric matrix `A` supplied in packed form. + +
+ +
+ + + +
+ +## Usage + +```javascript +var sspr = require( '@stdlib/blas/base/ndarray/sspr' ); +``` + +#### sspr( arrays ) + +Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is a symmetric `N` by `N` matrix supplied in packed form. + +```javascript +var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + +var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +var AP = new Float32Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' +}); + +var y = sspr( [ x, AP, uplo, alpha ] ); +// returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] + +var bool = ( y === AP ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to the packed form of `A`. + - a zero-dimensional ndarray specifying whether the upper or lower triangular part of `A` is supplied. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sspr = require( '@stdlib/blas/base/ndarray/sspr' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var AP = discreteUniform( [ 10 ], 0, 10, opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 3.0, opts ); + +var out = sspr( [ x, AP, uplo, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/benchmark/benchmark.js new file mode 100644 index 000000000000..720112ea4344 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/benchmark/benchmark.js @@ -0,0 +1,117 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sspr = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var uplo; + var AP; + var x; + + AP = uniform( [ ( len * ( len+1 ) ) / 2 ], -100.0, 100.0, options ); + x = uniform( [ len ], -100.0, 100.0, options ); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + alpha = scalar2ndarray( 1.0, options ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = sspr( [ x, AP, uplo, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnanf( z.get( i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/docs/repl.txt new file mode 100644 index 000000000000..72db86935cde --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/docs/repl.txt @@ -0,0 +1,43 @@ + +{{alias}}( arrays ) + Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` + is a scalar, `x` is a one-dimensional ndarray, and `A` is a symmetric `N` by + `N` matrix supplied in packed form. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input/output ndarray corresponding to the packed + form of `A`. + - a zero-dimensional ndarray specifying whether the upper or lower + triangular part of `A` is supplied. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float32}}( xbuf ); + + > var apbuf = [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ]; + > var AP = new {{alias:@stdlib/ndarray/vector/float32}}( apbuf ); + + > var uplo = {{alias:@stdlib/ndarray/from-scalar}}( 'upper' ); + > var opts = { 'dtype': 'float32' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > {{alias}}( [ x, AP, uplo, alpha ] ); + > AP + [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/docs/types/index.d.ts new file mode 100644 index 000000000000..c6c8a683970a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/docs/types/index.d.ts @@ -0,0 +1,66 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is a symmetric `N` by `N` matrix supplied in packed form. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to the packed form of `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of `A` is supplied. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var AP = new Float32Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var y = sspr( [ x, AP, uplo, alpha ] ); +* // returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] +* +* var bool = ( y === AP ); +* // returns true +*/ +declare function sspr( arrays: [ float32ndarray, float32ndarray, ndarray, float32ndarray ] ): float32ndarray; + + +// EXPORTS // + +export = sspr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/docs/types/test.ts new file mode 100644 index 000000000000..d88028c4e85a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/docs/types/test.ts @@ -0,0 +1,75 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import sspr = require( '@stdlib/blas/base/ndarray/sspr' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const AP = zeros( [ 6 ], { + 'dtype': 'float32' + }); + const x = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const uplo = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + + sspr( [ x, AP, uplo, alpha ] ); // $ExpectType float32ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + sspr( '10' ); // $ExpectError + sspr( 10 ); // $ExpectError + sspr( true ); // $ExpectError + sspr( false ); // $ExpectError + sspr( null ); // $ExpectError + sspr( undefined ); // $ExpectError + sspr( [] ); // $ExpectError + sspr( {} ); // $ExpectError + sspr( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const AP = zeros( [ 6 ], { + 'dtype': 'float32' + }); + const x = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const uplo = zeros( [], { + 'dtype': 'int8' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + + sspr(); // $ExpectError + sspr( [ x, AP, uplo, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/examples/index.js new file mode 100644 index 000000000000..ba73978b07f8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/examples/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sspr = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 4 ], 0, 10, opts ); +var AP = discreteUniform( [ 10 ], 0, 10, opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' +}); +var alpha = scalar2ndarray( 3.0, opts ); + +var out = sspr( [ x, AP, uplo, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/lib/index.js new file mode 100644 index 000000000000..cf9d2cc864c1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/lib/index.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the symmetric rank 1 operation `A = alpha*x*x^T + A` for a symmetric matrix `A` supplied in packed form. +* +* @module @stdlib/blas/base/ndarray/sspr +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var sspr = require( '@stdlib/blas/base/ndarray/sspr' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var AP = new Float32Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var out = sspr( [ x, AP, uplo, alpha ] ); +* // returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] +* +* var bool = ( out === AP ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/lib/main.js new file mode 100644 index 000000000000..3ed8497499fe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/lib/main.js @@ -0,0 +1,90 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getOrder = require( '@stdlib/ndarray/base/order' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/sspr' ).ndarray; + + +// MAIN // + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix supplied in packed form. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input/output ndarray corresponding to the packed form of `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of `A` is supplied. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var AP = new Float32Vector( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int8' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var y = sspr( [ x, AP, uplo, alpha ] ); +* // returns [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] +* +* var bool = ( y === AP ); +* // returns true +*/ +function sspr( arrays ) { + var alpha; + var uplo; + var AP; + var x; + + x = arrays[ 0 ]; + AP = arrays[ 1 ]; + + uplo = ndarraylike2scalar( arrays[ 2 ] ); + alpha = ndarraylike2scalar( arrays[ 3 ] ); + + strided( getOrder( AP ), uplo, numelDimension( x, 0 ), alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( AP ), getStride( AP, 0 ), getOffset( AP ) ); // eslint-disable-line max-len + + return AP; +} + + +// EXPORTS // + +module.exports = sspr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/package.json new file mode 100644 index 000000000000..73d67eada97e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/base/ndarray/sspr", + "version": "0.0.0", + "description": "Perform the symmetric rank 1 operation `A = alpha*x*x^T + A` for a symmetric matrix `A` supplied in packed form.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "sspr", + "linear", + "algebra", + "subroutines", + "rank 1", + "symmetric", + "update", + "vector", + "matrix", + "array", + "ndarray", + "float32", + "single", + "float32array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/sspr/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/test/test.js new file mode 100644 index 000000000000..5fce2eddce11 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/sspr/test/test.js @@ -0,0 +1,304 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var sspr = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float32', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sspr, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( sspr.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the symmetric rank 1 operation `A = alpha*x*x^T + A` (upper)', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + x = vector( xbuf, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = sspr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float32Array( [ 1.0, 1.0, 1.0 ] ); + Abuf = new Float32Array( [ 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + x = vector( xbuf, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = sspr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 3.0, 6.0, 4.0, 7.0, 5.0, 8.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the symmetric rank 1 operation `A = alpha*x*x^T + A` (lower)', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 1.0, 3.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + x = vector( xbuf, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'lower' ), { + 'dtype': 'int8' + }); + + v = sspr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 2.0, 4.0, 5.0, 6.0, 8.0, 10.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + x = vector( xbuf, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = sspr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + + xbuf = new Float32Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 0 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = sspr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 3.0, 6.0, 9.0, 9.0, 14.0, 19.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 1.0, 2.0, 1.0 ] ); + A = vector( Abuf, 6, 1, 0 ); + + xbuf = new Float32Array([ + 3.0, // 2 + 0.0, + 2.0, // 1 + 0.0, + 1.0 // 0 + ]); + x = vector( xbuf, 3, -2, 4 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = sspr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 3.0, 6.0, 9.0, 9.0, 14.0, 19.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + Abuf = new Float32Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 3.0, + 1.0, + 2.0, + 1.0 + ]); + A = vector( Abuf, 6, 1, 2 ); + + xbuf = new Float32Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + x = vector( xbuf, 3, 1, 2 ); + + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int8' + }); + + v = sspr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array([ + 0.0, + 0.0, + 3.0, + 6.0, + 9.0, + 9.0, + 14.0, + 19.0 + ]); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/README.md new file mode 100644 index 000000000000..37c3abe99855 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/README.md @@ -0,0 +1,135 @@ + + +# ssyr + +> Perform the symmetric rank 1 operation `A = alpha*x*x^T + A`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var ssyr = require( '@stdlib/blas/base/ndarray/ssyr' ); +``` + +#### ssyr( arrays ) + +Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. + + + +```javascript +var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); + +var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' +}); + +var y = ssyr( [ x, A, uplo, alpha ] ); +// returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] + +var bool = ( y === A ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ssyr = require( '@stdlib/blas/base/ndarray/ssyr' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = ssyr( [ x, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/benchmark/benchmark.js new file mode 100644 index 000000000000..014d50b8d406 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/benchmark/benchmark.js @@ -0,0 +1,118 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var ssyr = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var uplo; + var x; + var A; + + x = uniform( [ len ], -100.0, 100.0, options ); + A = zeros( [ len, len ], options ); + + alpha = scalar2ndarray( 1.0, options ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = ssyr( [ x, A, uplo, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnanf( z.get( 0, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/docs/repl.txt new file mode 100644 index 000000000000..fc5d9c09da96 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/docs/repl.txt @@ -0,0 +1,43 @@ + +{{alias}}( arrays ) + Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where + `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an + `N` by `N` symmetric matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower + triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float32}}( xbuf ); + + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float32}}( abuf ); + + > var opts = { 'dtype': 'float32' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, opts ); + + > var uplo = {{alias:@stdlib/ndarray/from-scalar}}( 'upper' ); + + > {{alias}}( [ x, A, uplo, alpha ] ); + > A + [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/docs/types/index.d.ts new file mode 100644 index 000000000000..9b5396f06a62 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/docs/types/index.d.ts @@ -0,0 +1,67 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var y = ssyr( [ x, A, uplo, alpha ] ); +* // returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] +* +* var bool = ( y === A ); +* // returns true +*/ +declare function ssyr( arrays: [ float32ndarray, float32ndarray, ndarray, float32ndarray ] ): float32ndarray; + + +// EXPORTS // + +export = ssyr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/docs/types/test.ts new file mode 100644 index 000000000000..4046e13404ed --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/docs/types/test.ts @@ -0,0 +1,75 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import ssyr = require( '@stdlib/blas/base/ndarray/ssyr' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'float32' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + + ssyr( [ x, A, uplo, alpha ] ); // $ExpectType float32ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + ssyr( '10' ); // $ExpectError + ssyr( 10 ); // $ExpectError + ssyr( true ); // $ExpectError + ssyr( false ); // $ExpectError + ssyr( null ); // $ExpectError + ssyr( undefined ); // $ExpectError + ssyr( [] ); // $ExpectError + ssyr( {} ); // $ExpectError + ssyr( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'float32' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + + ssyr(); // $ExpectError + ssyr( [ x, A, uplo, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/examples/index.js new file mode 100644 index 000000000000..325de028f29f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ssyr = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = ssyr( [ x, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/lib/index.js new file mode 100644 index 000000000000..04d62683908b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the symmetric rank 1 operation `A = alpha*x*x^T + A`. +* +* @module @stdlib/blas/base/ndarray/ssyr +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var ssyr = require( '@stdlib/blas/base/ndarray/ssyr' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var y = ssyr( [ x, A, uplo, alpha ] ); +* // returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] +* +* var bool = ( y === A ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/lib/main.js new file mode 100644 index 000000000000..b4c47b748ace --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/lib/main.js @@ -0,0 +1,94 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/ssyr' ).ndarray; + + +// MAIN // + +/** +* Performs the symmetric rank 1 operation `A = alpha*x*x^T + A`, where `alpha` is a scalar, `x` is a one-dimensional ndarray, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 1.0, { +* 'dtype': 'float32' +* }); +* +* var y = ssyr( [ x, A, uplo, alpha ] ); +* // returns [ [ 2.0, 4.0, 6.0 ], [ 2.0, 5.0, 8.0 ], [ 3.0, 2.0, 10.0 ] ] +* +* var bool = ( y === A ); +* // returns true +*/ +function ssyr( arrays ) { + var alpha; + var uplo; + var st; + var x; + var A; + + x = arrays[ 0 ]; + A = arrays[ 1 ]; + + uplo = ndarraylike2scalar( arrays[ 2 ] ); + alpha = ndarraylike2scalar( arrays[ 3 ] ); + + st = getStrides( A, false ); + + strided( uplo, numelDimension( A, 0 ), alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( A ), st[ 0 ], st[ 1 ], getOffset( A ) ); + + return A; +} + + +// EXPORTS // + +module.exports = ssyr; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/package.json new file mode 100644 index 000000000000..7c06d2deef06 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/base/ndarray/ssyr", + "version": "0.0.0", + "description": "Perform the symmetric rank 1 operation `A = alpha*x*x^T + A`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "ssyr", + "linear", + "algebra", + "subroutines", + "symmetric", + "rank-1", + "update", + "vector", + "matrix", + "array", + "ndarray", + "float32", + "single", + "float32array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/test/test.js new file mode 100644 index 000000000000..6c79fda3079f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr/test/test.js @@ -0,0 +1,321 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var ssyr = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float32', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} N - number of rows and columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, N, stride0, stride1, offset ) { + return new ndarray( 'float32', buffer, [ N, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof ssyr, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( ssyr.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the symmetric rank 1 operation `A = alpha*x*x^T + A` (upper)', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = ssyr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 2.0, 4.0, 6.0, 2.0, 5.0, 8.0, 3.0, 2.0, 10.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float32Array( [ 1.0, 1.0, 1.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 1, 3, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = ssyr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 2.0, 2.0, 3.0, 3.0, 2.0, 2.0, 4.0, 3.0, 2.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the symmetric rank 1 operation `A = alpha*x*x^T + A` (lower)', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'lower' ), { + 'dtype': 'int32' + }); + + v = ssyr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 2.0, 2.0, 3.0, 4.0, 5.0, 2.0, 6.0, 8.0, 10.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = ssyr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float32Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 0 ); + + Abuf = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = ssyr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 1.0, 2.0, 3.0, 0.0, 4.0, 6.0, 0.0, 0.0, 9.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float32Array([ + 3.0, // 2 + 2.0, // 1 + 1.0 // 0 + ]); + x = vector( xbuf, 3, -1, 2 ); + + Abuf = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 1.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = ssyr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array( [ 1.0, 2.0, 3.0, 0.0, 4.0, 6.0, 0.0, 0.0, 9.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var Abuf; + var uplo; + var x; + var A; + var v; + + xbuf = new Float32Array([ + 0.0, + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 1 ); + + Abuf = new Float32Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0 + ]); + A = matrix( Abuf, 3, 3, 1, 2 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + v = ssyr( [ x, A, uplo, alpha ] ); + + expected = new Float32Array([ + 1.0, + 2.0, + 5.0, + 8.0, + 11.0, + 6.0, + 15.0, + 20.0, + 9.0, + 10.0, + 29.0 + ]); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/README.md b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/README.md new file mode 100644 index 000000000000..3e36df0c3dd0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/README.md @@ -0,0 +1,138 @@ + + +# ssyr2 + +> Perform the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`. + +
+ +
+ + + +
+ +## Usage + +```javascript +var ssyr2 = require( '@stdlib/blas/base/ndarray/ssyr2' ); +``` + +#### ssyr2( arrays ) + +Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `N` by `N` symmetric matrix. + + + +```javascript +var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +var y = new Float32Vector( [ 2.0, 1.0, 3.0 ] ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' +}); + +var z = ssyr2( [ x, y, A, uplo, alpha ] ); +// returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] + +var bool = ( z === A ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. + +
+ + + +
+ +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ssyr2 = require( '@stdlib/blas/base/ndarray/ssyr2' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = ssyr2( [ x, y, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/benchmark/benchmark.js new file mode 100644 index 000000000000..c2d71a2641b8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/benchmark/benchmark.js @@ -0,0 +1,120 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var ssyr2 = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var uplo; + var x; + var y; + var A; + + x = uniform( [ len ], -100.0, 100.0, options ); + y = uniform( [ len ], -100.0, 100.0, options ); + A = zeros( [ len, len ], options ); + + alpha = scalar2ndarray( 1.0, options ); + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = ssyr2( [ x, y, A, uplo, alpha ] ); + if ( typeof z !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnanf( z.get( 0, i%len ) ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 3; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/docs/repl.txt new file mode 100644 index 000000000000..bd2f211cacaf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/docs/repl.txt @@ -0,0 +1,47 @@ + +{{alias}}( arrays ) + Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, + where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and + `A` is an `N` by `N` symmetric matrix. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray corresponding to `x`. + - a one-dimensional input ndarray corresponding to `y`. + - a two-dimensional input/output ndarray corresponding to `A`. + - a zero-dimensional ndarray specifying whether the upper or lower + triangular part of the symmetric matrix `A` should be referenced. + - a zero-dimensional ndarray containing a scalar constant corresponding + to `alpha`. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float32}}( xbuf ); + + > var ybuf = [ 2.0, 1.0, 3.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float32}}( ybuf ); + + > var abuf = [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ]; + > var A = new {{alias:@stdlib/ndarray/matrix/float32}}( abuf ); + + > var uplo = {{alias:@stdlib/ndarray/from-scalar}}( 'upper' ); + + > var opts = { 'dtype': 'float32' }; + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 2.0, opts ); + + > {{alias}}( [ x, y, A, uplo, alpha ] ); + > A + [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/docs/types/index.d.ts new file mode 100644 index 000000000000..215b6bc21668 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/docs/types/index.d.ts @@ -0,0 +1,69 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray, ndarray } from '@stdlib/types/ndarray'; + +/** +* Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float32Vector( [ 2.0, 1.0, 3.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 2.0, { +* 'dtype': 'float32' +* }); +* +* var z = ssyr2( [ x, y, A, uplo, alpha ] ); +* // returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +declare function ssyr2( arrays: [ float32ndarray, float32ndarray, float32ndarray, ndarray, float32ndarray ] ): float32ndarray; + + +// EXPORTS // + +export = ssyr2; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/docs/types/test.ts new file mode 100644 index 000000000000..6b5d6a2f7bef --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/docs/types/test.ts @@ -0,0 +1,81 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import ssyr2 = require( '@stdlib/blas/base/ndarray/ssyr2' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'float32' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + + ssyr2( [ x, y, A, uplo, alpha ] ); // $ExpectType float32ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + ssyr2( '10' ); // $ExpectError + ssyr2( 10 ); // $ExpectError + ssyr2( true ); // $ExpectError + ssyr2( false ); // $ExpectError + ssyr2( null ); // $ExpectError + ssyr2( undefined ); // $ExpectError + ssyr2( [] ); // $ExpectError + ssyr2( {} ); // $ExpectError + ssyr2( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 3 ], { + 'dtype': 'float32' + }); + const A = zeros( [ 3, 3 ], { + 'dtype': 'float32' + }); + const uplo = zeros( [], { + 'dtype': 'int32' + }); + const alpha = zeros( [], { + 'dtype': 'float32' + }); + + ssyr2(); // $ExpectError + ssyr2( [ x, y, A, uplo, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/examples/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/examples/index.js new file mode 100644 index 000000000000..7c39c35a1eb6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/examples/index.js @@ -0,0 +1,42 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ssyr2 = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 3 ], 0, 10, opts ); +var y = discreteUniform( [ 3 ], 0, 10, opts ); +var A = zeros( [ 3, 3 ], opts ); + +var uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' +}); +var alpha = scalar2ndarray( 1.0, opts ); + +var out = ssyr2( [ x, y, A, uplo, alpha ] ); +console.log( ndarray2array( out ) ); diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/lib/index.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/lib/index.js new file mode 100644 index 000000000000..338398685e4a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/lib/index.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* BLAS level 2 routine to perform the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`. +* +* @module @stdlib/blas/base/ndarray/ssyr2 +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var ssyr2 = require( '@stdlib/blas/base/ndarray/ssyr2' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float32Vector( [ 2.0, 1.0, 3.0 ] ); +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* +* var alpha = scalar2ndarray( 2.0, { +* 'dtype': 'float32' +* }); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var out = ssyr2( [ x, y, A, uplo, alpha ] ); +* // returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] +* +* var bool = ( out === A ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/lib/main.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/lib/main.js new file mode 100644 index 000000000000..842451782acc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/lib/main.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStrides = require( '@stdlib/ndarray/base/strides' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/base/ssyr2' ).ndarray; + + +// MAIN // + +/** +* Performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`, where `alpha` is a scalar, `x` and `y` are one-dimensional ndarrays, and `A` is an `N` by `N` symmetric matrix. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray corresponding to `x`. +* - a one-dimensional input ndarray corresponding to `y`. +* - a two-dimensional input/output ndarray corresponding to `A`. +* - a zero-dimensional ndarray specifying whether the upper or lower triangular part of the symmetric matrix `A` should be referenced. +* - a zero-dimensional ndarray containing a scalar constant corresponding to `alpha`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {Object} output ndarray +* +* @example +* var Float32Matrix = require( '@stdlib/ndarray/matrix/float32' ); +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var A = new Float32Matrix( [ [ 1.0, 2.0, 3.0 ], [ 2.0, 1.0, 2.0 ], [ 3.0, 2.0, 1.0 ] ] ); +* var x = new Float32Vector( [ 1.0, 2.0, 3.0 ] ); +* var y = new Float32Vector( [ 2.0, 1.0, 3.0 ] ); +* +* var uplo = scalar2ndarray( resolveEnum( 'upper' ), { +* 'dtype': 'int32' +* }); +* var alpha = scalar2ndarray( 2.0, { +* 'dtype': 'float32' +* }); +* +* var z = ssyr2( [ x, y, A, uplo, alpha ] ); +* // returns [ [ 9.0, 12.0, 21.0 ], [ 2.0, 9.0, 20.0 ], [ 3.0, 2.0, 37.0 ] ] +* +* var bool = ( z === A ); +* // returns true +*/ +function ssyr2( arrays ) { + var alpha; + var uplo; + var st; + var A; + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + A = arrays[ 2 ]; + + uplo = ndarraylike2scalar( arrays[ 3 ] ); + alpha = ndarraylike2scalar( arrays[ 4 ] ); + + st = getStrides( A, false ); + + strided( uplo, numelDimension( A, 0 ), alpha, getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ), getData( A ), st[ 0 ], st[ 1 ], getOffset( A ) ); // eslint-disable-line max-len + + return A; +} + + +// EXPORTS // + +module.exports = ssyr2; diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/package.json b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/package.json new file mode 100644 index 000000000000..094a63371320 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/base/ndarray/ssyr2", + "version": "0.0.0", + "description": "Perform the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 2", + "ssyr2", + "linear", + "algebra", + "subroutines", + "symmetric", + "rank-2", + "update", + "vector", + "matrix", + "array", + "ndarray", + "float32", + "single", + "float32array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/test/test.js b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/test/test.js new file mode 100644 index 000000000000..6d10173d0030 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/ndarray/ssyr2/test/test.js @@ -0,0 +1,360 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var resolveEnum = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var ssyr2 = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float32', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + +/** +* Returns a two-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} N - number of rows and columns +* @param {integer} stride0 - stride of the first dimension +* @param {integer} stride1 - stride of the second dimension +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} two-dimensional ndarray +*/ +function matrix( buffer, N, stride0, stride1, offset ) { + return new ndarray( 'float32', buffer, [ N, N ], [ stride0, stride1 ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof ssyr2, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( ssyr2.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A` (upper)', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + ybuf = new Float32Array( [ 2.0, 1.0, 3.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = ssyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float32Array( [ 9.0, 12.0, 21.0, 2.0, 9.0, 20.0, 3.0, 2.0, 37.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + xbuf = new Float32Array( [ 1.0, 1.0, 1.0 ] ); + ybuf = new Float32Array( [ 1.0, 1.0, 1.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 1, 3, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = ssyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float32Array( [ 5.0, 2.0, 3.0, 6.0, 5.0, 2.0, 7.0, 6.0, 5.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs the symmetric rank 2 operation `A = alpha*x*y^T + alpha*y*x^T + A` (lower)', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + ybuf = new Float32Array( [ 2.0, 1.0, 3.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 2.0, 1.0, 2.0, 3.0, 2.0, 1.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'lower' ), { + 'dtype': 'int32' + }); + v = ssyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float32Array( [ 9.0, 2.0, 3.0, 12.0, 9.0, 2.0, 21.0, 20.0, 37.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` is `0`, the function returns `A` unchanged', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + ybuf = new Float32Array( [ 2.0, 1.0, 3.0 ] ); + Abuf = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = ssyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-unit strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 0 ); + + ybuf = new Float32Array([ + 2.0, // 0 + 0.0, + 1.0, // 1 + 0.0, + 3.0 // 2 + ]); + y = vector( ybuf, 3, 2, 0 ); + + Abuf = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = ssyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float32Array( [ 8.0, 10.0, 18.0, 0.0, 8.0, 18.0, 0.0, 0.0, 36.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 3.0, // 2 + 2.0, // 1 + 1.0 // 0 + ]); + x = vector( xbuf, 3, -1, 2 ); + + ybuf = new Float32Array([ + 3.0, // 2 + 1.0, // 1 + 2.0 // 0 + ]); + y = vector( ybuf, 3, -1, 2 ); + + Abuf = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + A = matrix( Abuf, 3, 3, 1, 0 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = ssyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float32Array( [ 8.0, 10.0, 18.0, 0.0, 8.0, 18.0, 0.0, 0.0, 36.0 ] ); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var alpha; + var xbuf; + var ybuf; + var Abuf; + var uplo; + var x; + var y; + var A; + var v; + + xbuf = new Float32Array([ + 0.0, + 1.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 3.0 // 2 + ]); + x = vector( xbuf, 3, 2, 1 ); + + ybuf = new Float32Array([ + 0.0, + 2.0, // 0 + 0.0, + 1.0, // 1 + 0.0, + 3.0 // 2 + ]); + y = vector( ybuf, 3, 2, 1 ); + + Abuf = new Float32Array([ + 999.0, + 999.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + A = matrix( Abuf, 3, 3, 1, 2 ); + alpha = scalar2ndarray( 2.0, { + 'dtype': 'float32' + }); + + uplo = scalar2ndarray( resolveEnum( 'upper' ), { + 'dtype': 'int32' + }); + v = ssyr2( [ x, y, A, uplo, alpha ] ); + + expected = new Float32Array([ + 999.0, + 999.0, + 8.0, + 10.0, + 18.0, + 0.0, + 8.0, + 18.0, + 0.0, + 0.0, + 36.0 + ]); + t.strictEqual( v, A, 'returns expected value' ); + t.strictEqual( isSameFloat32Array( getData( v ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/operation-sides/test/test.js b/lib/node_modules/@stdlib/blas/base/operation-sides/test/test.js index c5f0d3ea7cf0..a2bf3a065a9e 100644 --- a/lib/node_modules/@stdlib/blas/base/operation-sides/test/test.js +++ b/lib/node_modules/@stdlib/blas/base/operation-sides/test/test.js @@ -66,7 +66,7 @@ tape( 'attached to the main function is an `enum` method to return an object map ]; for ( i = 0; i < o.length; i++ ) { t.strictEqual( hasOwnProp( obj, o[ i ] ), true, 'has property `' + o[ i ] + '`' ); - t.strictEqual( isNonNegativeInteger( obj[ o[i] ] ), true, 'returns expected value' ); + t.strictEqual( isNonNegativeInteger( obj[ o[ i ] ] ), true, 'returns expected value' ); } t.end(); diff --git a/lib/node_modules/@stdlib/blas/base/sspmv/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/sspmv/lib/ndarray.js index 2b88c58748cd..a287a0107e83 100644 --- a/lib/node_modules/@stdlib/blas/base/sspmv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/sspmv/lib/ndarray.js @@ -24,7 +24,7 @@ var sfill = require( '@stdlib/blas/ext/base/sfill' ).ndarray; var sscal = require( '@stdlib/blas/base/sscal' ).ndarray; var f32 = require( '@stdlib/number/float64/base/to-float32' ); var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major-string' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); @@ -35,7 +35,7 @@ var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string * Performs the matrix-vector operation `y = alpha*A*x + beta*y` where `alpha` and `beta` are scalars, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} AP - packed form of a symmetric matrix `A` @@ -75,11 +75,13 @@ function sspmv( order, uplo, N, alpha, AP, x, strideX, offsetX, beta, y, strideY var ky; var j; var k; + var u; if ( !isLayout( order ) ) { throw new TypeError( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ); } if ( N < 0 ) { @@ -110,8 +112,8 @@ function sspmv( order, uplo, N, alpha, AP, x, strideX, offsetX, beta, y, strideY ky = offsetY; kk = 0; if ( - ( isRowMajor( order ) && uplo === 'upper' ) || - ( isColumnMajor( order ) && uplo === 'lower' ) + ( isRowMajor( order ) && u === 'upper' ) || + ( isColumnMajor( order ) && u === 'lower' ) ) { jx = kx; jy = ky; @@ -134,7 +136,7 @@ function sspmv( order, uplo, N, alpha, AP, x, strideX, offsetX, beta, y, strideY } return y; } - // ( order === 'row-major' && uplo === 'lower') || ( order === 'column-major' && uplo === 'upper' ) + // ( order === 'row-major' && u === 'lower') || ( order === 'column-major' && u === 'upper' ) jx = kx; jy = ky; for ( j = 0; j < N; j++ ) { diff --git a/lib/node_modules/@stdlib/blas/base/sspmv/lib/sspmv.js b/lib/node_modules/@stdlib/blas/base/sspmv/lib/sspmv.js index 112cbce9d642..b734c42af285 100644 --- a/lib/node_modules/@stdlib/blas/base/sspmv/lib/sspmv.js +++ b/lib/node_modules/@stdlib/blas/base/sspmv/lib/sspmv.js @@ -24,7 +24,7 @@ var sfill = require( '@stdlib/blas/ext/base/sfill' ); var sscal = require( '@stdlib/blas/base/sscal' ); var f32 = require( '@stdlib/number/float64/base/to-float32' ); var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var isRowMajor = require( '@stdlib/ndarray/base/assert/is-row-major-string' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); @@ -35,7 +35,7 @@ var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string * Performs the matrix-vector operation `y = alpha*A*x + beta*y` where `alpha` and `beta` are scalars, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} AP - packed form of a symmetric matrix `A` @@ -74,11 +74,13 @@ function sspmv( order, uplo, N, alpha, AP, x, strideX, beta, y, strideY ) { var sy; var j; var k; + var u; if ( !isLayout( order ) ) { throw new TypeError( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ); } if ( N < 0 ) { @@ -121,8 +123,8 @@ function sspmv( order, uplo, N, alpha, AP, x, strideX, beta, y, strideY ) { // Form: y = alpha*A*x + y kk = 0; if ( - ( isRowMajor( order ) && uplo === 'upper' ) || - ( isColumnMajor( order ) && uplo === 'lower' ) + ( isRowMajor( order ) && u === 'upper' ) || + ( isColumnMajor( order ) && u === 'lower' ) ) { jx = kx; jy = ky; @@ -145,7 +147,7 @@ function sspmv( order, uplo, N, alpha, AP, x, strideX, beta, y, strideY ) { } return y; } - // ( order === 'row-major' && uplo === 'lower') || ( order === 'column-major' && uplo === 'upper' ) + // ( order === 'row-major' && u === 'lower') || ( order === 'column-major' && u === 'upper' ) jx = kx; jy = ky; for ( j = 0; j < N; j++ ) { diff --git a/lib/node_modules/@stdlib/blas/base/sspr/README.md b/lib/node_modules/@stdlib/blas/base/sspr/README.md index 85bd2f57a9e7..5f8184fe4f14 100644 --- a/lib/node_modules/@stdlib/blas/base/sspr/README.md +++ b/lib/node_modules/@stdlib/blas/base/sspr/README.md @@ -86,7 +86,7 @@ sspr( 'row-major', 'upper', 3, 1.0, x1, -1, AP ); // AP => [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] ``` -#### sspr.ndarray( uplo, N, α, x, sx, ox, AP, sap, oap ) +#### sspr.ndarray( order, uplo, N, α, x, sx, ox, AP, sap, oap ) Performs the symmetric rank 1 operation `A = α*x*x^T + A`, using alternative indexing semantics and where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix supplied in packed form. diff --git a/lib/node_modules/@stdlib/blas/base/sspr/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/sspr/lib/ndarray.js index 0a67a5c58018..e355807f54de 100644 --- a/lib/node_modules/@stdlib/blas/base/sspr/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/sspr/lib/ndarray.js @@ -21,7 +21,7 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -32,7 +32,7 @@ var base = require( './base.js' ); * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - input vector @@ -58,10 +58,12 @@ var base = require( './base.js' ); * // AP => [ 2.0, 4.0, 6.0, 5.0, 8.0, 10.0 ] */ function sspr( order, uplo, N, alpha, x, strideX, offsetX, AP, strideAP, offsetAP ) { // eslint-disable-line max-len + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -76,7 +78,7 @@ function sspr( order, uplo, N, alpha, x, strideX, offsetX, AP, strideAP, offsetA if ( N === 0 || alpha === 0.0 ) { return AP; } - return base( order, uplo, N, alpha, x, strideX, offsetX, AP, strideAP, offsetAP ); // eslint disable-line max-len + return base( order, u, N, alpha, x, strideX, offsetX, AP, strideAP, offsetAP ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/sspr/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/base/sspr/lib/ndarray.native.js index e19ef9c171e4..e0caf6be2dc1 100644 --- a/lib/node_modules/@stdlib/blas/base/sspr/lib/ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/base/sspr/lib/ndarray.native.js @@ -28,7 +28,7 @@ var addon = require( './../src/addon.node' ); * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - input vector diff --git a/lib/node_modules/@stdlib/blas/base/sspr/lib/sspr.js b/lib/node_modules/@stdlib/blas/base/sspr/lib/sspr.js index d54e1746bea8..5a67f53b6f26 100644 --- a/lib/node_modules/@stdlib/blas/base/sspr/lib/sspr.js +++ b/lib/node_modules/@stdlib/blas/base/sspr/lib/sspr.js @@ -21,7 +21,7 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -33,7 +33,7 @@ var base = require( './base.js' ); * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - input vector @@ -56,11 +56,13 @@ var base = require( './base.js' ); */ function sspr( order, uplo, N, alpha, x, strideX, AP ) { var ox; + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -73,7 +75,7 @@ function sspr( order, uplo, N, alpha, x, strideX, AP ) { return AP; } ox = stride2offset( N, strideX ); - return base( order, uplo, N, alpha, x, strideX, ox, AP, 1, 0 ); + return base( order, u, N, alpha, x, strideX, ox, AP, 1, 0 ); } diff --git a/lib/node_modules/@stdlib/blas/base/sspr/lib/sspr.native.js b/lib/node_modules/@stdlib/blas/base/sspr/lib/sspr.native.js index 61350c1570cf..a32f636b2326 100644 --- a/lib/node_modules/@stdlib/blas/base/sspr/lib/sspr.native.js +++ b/lib/node_modules/@stdlib/blas/base/sspr/lib/sspr.native.js @@ -31,7 +31,7 @@ var addon = require( './../src/addon.node' ); * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix supplied in packed form. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` is supplied * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - input vector diff --git a/lib/node_modules/@stdlib/blas/base/ssymv/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/ssymv/lib/ndarray.js index ff55bce5210a..905b41d6e3bf 100644 --- a/lib/node_modules/@stdlib/blas/base/ssymv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/ssymv/lib/ndarray.js @@ -20,7 +20,7 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -30,7 +30,7 @@ var base = require( './base.js' ); /** * Performs the matrix-vector operation `y = α*A*x + β*y` where `α` and `β` are scalars, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} A - input matrix @@ -63,7 +63,10 @@ var base = require( './base.js' ); * // y => [ 10.0, 12.0, 14.0 ] */ function ssymv( uplo, N, alpha, A, strideA1, strideA2, offsetA, x, strideX, offsetX, beta, y, strideY, offsetY ) { // eslint-disable-line max-params, max-len - if ( !isMatrixTriangle( uplo ) ) { + var u; + + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -84,7 +87,7 @@ function ssymv( uplo, N, alpha, A, strideA1, strideA2, offsetA, x, strideX, offs if ( N === 0 || ( alpha === 0.0 && beta === 1.0 ) ) { return y; } - return base( uplo, N, alpha, A, strideA1, strideA2, offsetA, x, strideX, offsetX, beta, y, strideY, offsetY ); // eslint-disable-line max-len + return base( u, N, alpha, A, strideA1, strideA2, offsetA, x, strideX, offsetX, beta, y, strideY, offsetY ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/ssymv/lib/ssymv.js b/lib/node_modules/@stdlib/blas/base/ssymv/lib/ssymv.js index e1e3d39938c4..66eff3554196 100644 --- a/lib/node_modules/@stdlib/blas/base/ssymv/lib/ssymv.js +++ b/lib/node_modules/@stdlib/blas/base/ssymv/lib/ssymv.js @@ -23,7 +23,7 @@ var max = require( '@stdlib/math/base/special/max' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -34,7 +34,7 @@ var base = require( './base.js' ); * Performs the matrix-vector operation `y = α*A*x + β*y` where `α` and `β` are scalars, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} A - input matrix @@ -67,11 +67,13 @@ function ssymv( order, uplo, N, alpha, A, LDA, x, strideX, beta, y, strideY ) { var sa2; var ox; var oy; + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -98,7 +100,7 @@ function ssymv( order, uplo, N, alpha, A, LDA, x, strideX, beta, y, strideY ) { sa1 = LDA; sa2 = 1; } - return base( uplo, N, alpha, A, sa1, sa2, 0, x, strideX, ox, beta, y, strideY, oy ); // eslint-disable-line max-len + return base( u, N, alpha, A, sa1, sa2, 0, x, strideX, ox, beta, y, strideY, oy ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/ssyr/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/ssyr/lib/ndarray.js index 80b84bc65b05..ececa216170f 100644 --- a/lib/node_modules/@stdlib/blas/base/ssyr/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/ssyr/lib/ndarray.js @@ -20,7 +20,7 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -30,7 +30,7 @@ var base = require( './base.js' ); /** * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix. * -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - input vector @@ -57,7 +57,8 @@ var base = require( './base.js' ); * // A => [ 2.0, 4.0, 6.0, 2.0, 5.0, 8.0, 3.0, 2.0, 10.0 ] */ function ssyr( uplo, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-len - if ( !isMatrixTriangle( uplo ) ) { + var u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -76,7 +77,7 @@ function ssyr( uplo, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offse if ( N === 0 || alpha === 0.0 ) { return A; } - return base( uplo, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len + return base( u, N, alpha, x, strideX, offsetX, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/ssyr/lib/ssyr.js b/lib/node_modules/@stdlib/blas/base/ssyr/lib/ssyr.js index f10d3974de3d..07c0921ba811 100644 --- a/lib/node_modules/@stdlib/blas/base/ssyr/lib/ssyr.js +++ b/lib/node_modules/@stdlib/blas/base/ssyr/lib/ssyr.js @@ -22,7 +22,7 @@ var max = require( '@stdlib/math/base/special/fast/max' ); var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var format = require( '@stdlib/string/format' ); @@ -35,7 +35,7 @@ var base = require( './base.js' ); * Performs the symmetric rank 1 operation `A = α*x*x^T + A` where `α` is a scalar, `x` is an `N` element vector, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - input vector @@ -62,11 +62,13 @@ function ssyr( order, uplo, N, alpha, x, strideX, A, LDA ) { var sa1; var sa2; var ox; + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -90,7 +92,7 @@ function ssyr( order, uplo, N, alpha, x, strideX, A, LDA ) { sa2 = 1; } ox = stride2offset( N, strideX ); - return base( uplo, N, alpha, x, strideX, ox, A, sa1, sa2, 0 ); + return base( u, N, alpha, x, strideX, ox, A, sa1, sa2, 0 ); } diff --git a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.js index a1470161f30c..f0d382620e35 100644 --- a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.js @@ -20,7 +20,7 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -30,7 +30,7 @@ var base = require( './base.js' ); /** * Performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` where `α` is a scalar, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - first input vector @@ -62,7 +62,8 @@ var base = require( './base.js' ); * // A => [ 3.0, 6.0, 9.0, 2.0, 9.0, 14.0, 3.0, 2.0, 19.0 ] */ function ssyr2( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-len, max-params - if ( !isMatrixTriangle( uplo ) ) { + var u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -84,7 +85,7 @@ function ssyr2( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, str if ( N === 0 || alpha === 0.0 ) { return A; } - return base( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len + return base( u, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.native.js index ef9df3da10df..072b9ecfdbe4 100644 --- a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ndarray.native.js @@ -20,7 +20,6 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); var format = require( '@stdlib/string/format' ); var addon = require( './../src/addon.node' ); @@ -31,7 +30,7 @@ var addon = require( './../src/addon.node' ); /** * Performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` where `α` is a scalar, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - first input vector @@ -63,7 +62,8 @@ var addon = require( './../src/addon.node' ); * // A => [ 3.0, 6.0, 9.0, 2.0, 9.0, 14.0, 3.0, 2.0, 19.0 ] */ function ssyr2( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ) { // eslint-disable-line max-len, max-params - if ( !isMatrixTriangle( uplo ) ) { + var u = resolveUplo( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -85,7 +85,7 @@ function ssyr2( uplo, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, str if ( N === 0 || alpha === 0.0 ) { return A; } - addon.ndarray( resolveUplo( uplo ), N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len + addon.ndarray( u, N, alpha, x, strideX, offsetX, y, strideY, offsetY, A, strideA1, strideA2, offsetA ); // eslint-disable-line max-len return A; } diff --git a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ssyr2.js b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ssyr2.js index 306c6aa9f764..4dbee27fd1ce 100644 --- a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ssyr2.js +++ b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ssyr2.js @@ -21,7 +21,7 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); +var resolveStr = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var max = require( '@stdlib/math/base/special/fast/max' ); @@ -35,7 +35,7 @@ var base = require( './base.js' ); * Performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` where `α` is a scalar, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - first input vector @@ -67,11 +67,13 @@ function ssyr2( order, uplo, N, alpha, x, strideX, y, strideY, A, LDA ) { var sa2; var ox; var oy; + var u; if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveStr( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -99,7 +101,7 @@ function ssyr2( order, uplo, N, alpha, x, strideX, y, strideY, A, LDA ) { } ox = stride2offset( N, strideX ); oy = stride2offset( N, strideY ); - return base( uplo, N, alpha, x, strideX, ox, y, strideY, oy, A, sa1, sa2, 0 ); // eslint-disable-line max-len + return base( u, N, alpha, x, strideX, ox, y, strideY, oy, A, sa1, sa2, 0 ); } diff --git a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ssyr2.native.js b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ssyr2.native.js index b5f2eb296daf..7d8bfbc95949 100644 --- a/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ssyr2.native.js +++ b/lib/node_modules/@stdlib/blas/base/ssyr2/lib/ssyr2.native.js @@ -21,7 +21,6 @@ // MODULES // var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); var resolveOrder = require( '@stdlib/blas/base/layout-resolve-enum' ); var resolveUplo = require( '@stdlib/blas/base/matrix-triangle-resolve-enum' ); var max = require( '@stdlib/math/base/special/fast/max' ); @@ -35,7 +34,7 @@ var addon = require( './../src/addon.node' ); * Performs the symmetric rank 2 operation `A = α*x*y^T + α*y*x^T + A` where `α` is a scalar, `x` and `y` are `N` element vectors, and `A` is an `N` by `N` symmetric matrix. * * @param {string} order - storage layout -* @param {string} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced +* @param {(integer|string)} uplo - specifies whether the upper or lower triangular part of the symmetric matrix `A` should be referenced * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {number} alpha - scalar constant * @param {Float32Array} x - first input vector @@ -63,10 +62,13 @@ var addon = require( './../src/addon.node' ); * // A => [ 3.0, 6.0, 9.0, 2.0, 9.0, 14.0, 3.0, 2.0, 19.0 ] */ function ssyr2( order, uplo, N, alpha, x, strideX, y, strideY, A, LDA ) { + var u; + if ( !isLayout( order ) ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveUplo( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.', uplo ) ); } if ( N < 0 ) { @@ -85,7 +87,7 @@ function ssyr2( order, uplo, N, alpha, x, strideX, y, strideY, A, LDA ) { if ( N === 0 || alpha === 0.0 ) { return A; } - addon( resolveOrder( order ), resolveUplo( uplo ), N, alpha, x, strideX, y, strideY, A, LDA ); // eslint-disable-line max-len + addon( resolveOrder( order ), u, N, alpha, x, strideX, y, strideY, A, LDA ); return A; } diff --git a/lib/node_modules/@stdlib/blas/base/strmv/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/strmv/lib/ndarray.js index 8feb20cb6ee3..ac44f00bcc88 100644 --- a/lib/node_modules/@stdlib/blas/base/strmv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/strmv/lib/ndarray.js @@ -20,9 +20,9 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); -var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' ); -var isDiagonal = require( '@stdlib/blas/base/assert/is-diagonal-type' ); +var resolveTriangle = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); +var resolveTranspose = require( '@stdlib/blas/base/transpose-operation-resolve-str' ); +var resolveDiagonal = require( '@stdlib/blas/base/diagonal-type-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -32,9 +32,9 @@ var base = require( './base.js' ); /** * Performs one of the matrix-vector operations `x = A*x` or `x = A^T*x`, where `x` is an `N` element vector and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix. * -* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix -* @param {string} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed -* @param {string} diag - specifies whether `A` has a unit diagonal +* @param {(integer|string)} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {(integer|string)} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed +* @param {(integer|string)} diag - specifies whether `A` has a unit diagonal * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {Float32Array} A - input matrix * @param {integer} strideA1 - stride of the first dimension of `A` @@ -62,13 +62,20 @@ var base = require( './base.js' ); * // x => [ 14.0, 8.0, 3.0 ] */ function strmv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX, offsetX ) { // eslint-disable-line max-params, max-len - if ( !isMatrixTriangle( uplo ) ) { + var u; + var t; + var d; + + u = resolveTriangle( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } - if ( !isTransposeOperation( trans ) ) { + t = resolveTranspose( trans ); + if ( t === null ) { throw new TypeError( format( 'invalid argument. Second argument must be a valid transpose operation. Value: `%s`.', trans ) ); } - if ( !isDiagonal( diag ) ) { + d = resolveDiagonal( diag ); + if ( d === null ) { throw new TypeError( format( 'invalid argument. Third argument must be a valid diagonal type. Value: `%s`.', diag ) ); } if ( N < 0 ) { @@ -86,7 +93,7 @@ function strmv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX if ( N === 0 ) { return x; } - return base( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX, offsetX ); // eslint-disable-line max-len + return base( u, t, d, N, A, strideA1, strideA2, offsetA, x, strideX, offsetX ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/strmv/lib/strmv.js b/lib/node_modules/@stdlib/blas/base/strmv/lib/strmv.js index d321a893d281..6d5d5bd33ef1 100644 --- a/lib/node_modules/@stdlib/blas/base/strmv/lib/strmv.js +++ b/lib/node_modules/@stdlib/blas/base/strmv/lib/strmv.js @@ -21,10 +21,10 @@ // MODULES // var max = require( '@stdlib/math/base/special/fast/max' ); -var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); -var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' ); -var isDiagonal = require( '@stdlib/blas/base/assert/is-diagonal-type' ); +var resolveLayout = require( '@stdlib/blas/base/layout-resolve-str' ); +var resolveTriangle = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); +var resolveTranspose = require( '@stdlib/blas/base/transpose-operation-resolve-str' ); +var resolveDiagonal = require( '@stdlib/blas/base/diagonal-type-resolve-str' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var format = require( '@stdlib/string/format' ); @@ -36,10 +36,10 @@ var base = require( './base.js' ); /** * Performs one of the matrix-vector operations `x = A*x` or `x = A^T*x`, where `x` is an `N` element vector and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix. * -* @param {string} order - storage layout -* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix -* @param {string} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed -* @param {string} diag - specifies whether `A` has a unit diagonal +* @param {(integer|string)} order - storage layout +* @param {(integer|string)} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {(integer|string)} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed +* @param {(integer|string)} diag - specifies whether `A` has a unit diagonal * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {Float32Array} A - input matrix * @param {integer} LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`) @@ -67,17 +67,25 @@ function strmv( order, uplo, trans, diag, N, A, LDA, x, strideX ) { var sa1; var sa2; var ox; + var l; + var u; + var t; + var d; - if ( !isLayout( order ) ) { + l = resolveLayout( order ); + if ( l === null ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveTriangle( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } - if ( !isTransposeOperation( trans ) ) { + t = resolveTranspose( trans ); + if ( t === null ) { throw new TypeError( format( 'invalid argument. Third argument must be a valid transpose operation. Value: `%s`.', trans ) ); } - if ( !isDiagonal( diag ) ) { + d = resolveDiagonal( diag ); + if ( d === null ) { throw new TypeError( format( 'invalid argument. Fourth argument must be a valid diagonal type. Value: `%s`.', diag ) ); } if ( N < 0 ) { @@ -92,7 +100,7 @@ function strmv( order, uplo, trans, diag, N, A, LDA, x, strideX ) { if ( N === 0 ) { return x; } - if ( isColumnMajor( order ) ) { + if ( isColumnMajor( l ) ) { sa1 = 1; sa2 = LDA; } else { // order === 'row-major' @@ -100,7 +108,7 @@ function strmv( order, uplo, trans, diag, N, A, LDA, x, strideX ) { sa2 = 1; } ox = stride2offset( N, strideX ); - return base( uplo, trans, diag, N, A, sa1, sa2, 0, x, strideX, ox ); + return base( u, t, d, N, A, sa1, sa2, 0, x, strideX, ox ); } diff --git a/lib/node_modules/@stdlib/blas/base/strsv/lib/ndarray.js b/lib/node_modules/@stdlib/blas/base/strsv/lib/ndarray.js index 51a34b8a0a82..7799e1d43e99 100644 --- a/lib/node_modules/@stdlib/blas/base/strsv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/strsv/lib/ndarray.js @@ -20,9 +20,9 @@ // MODULES // -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); -var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' ); -var isDiagonal = require( '@stdlib/blas/base/assert/is-diagonal-type' ); +var resolveTriangle = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); +var resolveTranspose = require( '@stdlib/blas/base/transpose-operation-resolve-str' ); +var resolveDiagonal = require( '@stdlib/blas/base/diagonal-type-resolve-str' ); var format = require( '@stdlib/string/format' ); var base = require( './base.js' ); @@ -32,9 +32,9 @@ var base = require( './base.js' ); /** * Solves one of the systems of equations `A*x = b` or `A^T*x = b` where `b` and `x` are `N` element vectors and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix. * -* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix -* @param {string} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed -* @param {string} diag - specifies whether `A` has a unit diagonal +* @param {(integer|string)} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {(integer|string)} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed +* @param {(integer|string)} diag - specifies whether `A` has a unit diagonal * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {Float32Array} A - input matrix * @param {integer} strideA1 - stride of the first dimension of `A` @@ -62,13 +62,20 @@ var base = require( './base.js' ); * // x => [ 0.0, -4.0, 3.0 ] */ function strsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX, offsetX ) { // eslint-disable-line max-params, max-len - if ( !isMatrixTriangle( uplo ) ) { + var u; + var t; + var d; + + u = resolveTriangle( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. First argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } - if ( !isTransposeOperation( trans ) ) { + t = resolveTranspose( trans ); + if ( t === null ) { throw new TypeError( format( 'invalid argument. Second argument must be a valid transpose operation. Value: `%s`.', trans ) ); } - if ( !isDiagonal( diag ) ) { + d = resolveDiagonal( diag ); + if ( d === null ) { throw new TypeError( format( 'invalid argument. Third argument must be a valid diagonal type. Value: `%s`.', diag ) ); } if ( N < 0 ) { @@ -86,7 +93,7 @@ function strsv( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX if ( N === 0 ) { return x; } - return base( uplo, trans, diag, N, A, strideA1, strideA2, offsetA, x, strideX, offsetX ); // eslint-disable-line max-len + return base( u, t, d, N, A, strideA1, strideA2, offsetA, x, strideX, offsetX ); // eslint-disable-line max-len } diff --git a/lib/node_modules/@stdlib/blas/base/strsv/lib/strsv.js b/lib/node_modules/@stdlib/blas/base/strsv/lib/strsv.js index bfe29914df4d..b760f0b0b76f 100644 --- a/lib/node_modules/@stdlib/blas/base/strsv/lib/strsv.js +++ b/lib/node_modules/@stdlib/blas/base/strsv/lib/strsv.js @@ -21,10 +21,10 @@ // MODULES // var max = require( '@stdlib/math/base/special/fast/max' ); -var isLayout = require( '@stdlib/blas/base/assert/is-layout' ); -var isMatrixTriangle = require( '@stdlib/blas/base/assert/is-matrix-triangle' ); -var isTransposeOperation = require( '@stdlib/blas/base/assert/is-transpose-operation' ); -var isDiagonal = require( '@stdlib/blas/base/assert/is-diagonal-type' ); +var resolveLayout = require( '@stdlib/blas/base/layout-resolve-str' ); +var resolveTriangle = require( '@stdlib/blas/base/matrix-triangle-resolve-str' ); +var resolveTranspose = require( '@stdlib/blas/base/transpose-operation-resolve-str' ); +var resolveDiagonal = require( '@stdlib/blas/base/diagonal-type-resolve-str' ); var isColumnMajor = require( '@stdlib/ndarray/base/assert/is-column-major-string' ); var stride2offset = require( '@stdlib/strided/base/stride2offset' ); var format = require( '@stdlib/string/format' ); @@ -36,10 +36,10 @@ var base = require( './base.js' ); /** * Solves one of the systems of equations `A*x = b` or `A^T*x = b` where `b` and `x` are `N` element vectors and `A` is an `N` by `N` unit, or non-unit, upper or lower triangular matrix. * -* @param {string} order - storage layout -* @param {string} uplo - specifies whether `A` is an upper or lower triangular matrix -* @param {string} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed -* @param {string} diag - specifies whether `A` has a unit diagonal +* @param {(integer|string)} order - storage layout +* @param {(integer|string)} uplo - specifies whether `A` is an upper or lower triangular matrix +* @param {(integer|string)} trans - specifies whether `A` should be transposed, conjugate-transposed, or not transposed +* @param {(integer|string)} diag - specifies whether `A` has a unit diagonal * @param {NonNegativeInteger} N - number of elements along each dimension of `A` * @param {Float32Array} A - input matrix * @param {integer} LDA - stride of the first dimension of `A` (a.k.a., leading dimension of the matrix `A`) @@ -67,17 +67,25 @@ function strsv( order, uplo, trans, diag, N, A, LDA, x, strideX ) { var sa1; var sa2; var ox; + var l; + var u; + var t; + var d; - if ( !isLayout( order ) ) { + l = resolveLayout( order ); + if ( l === null ) { throw new TypeError( format( 'invalid argument. First argument must be a valid order. Value: `%s`.', order ) ); } - if ( !isMatrixTriangle( uplo ) ) { + u = resolveTriangle( uplo ); + if ( u === null ) { throw new TypeError( format( 'invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.', uplo ) ); } - if ( !isTransposeOperation( trans ) ) { + t = resolveTranspose( trans ); + if ( t === null ) { throw new TypeError( format( 'invalid argument. Third argument must be a valid transpose operation. Value: `%s`.', trans ) ); } - if ( !isDiagonal( diag ) ) { + d = resolveDiagonal( diag ); + if ( d === null ) { throw new TypeError( format( 'invalid argument. Fourth argument must be a valid diagonal type. Value: `%s`.', diag ) ); } if ( N < 0 ) { @@ -92,7 +100,7 @@ function strsv( order, uplo, trans, diag, N, A, LDA, x, strideX ) { if ( N === 0 ) { return x; } - if ( isColumnMajor( order ) ) { + if ( isColumnMajor( l ) ) { sa1 = 1; sa2 = LDA; } else { // order === 'row-major' @@ -100,7 +108,7 @@ function strsv( order, uplo, trans, diag, N, A, LDA, x, strideX ) { sa2 = 1; } ox = stride2offset( N, strideX ); - return base( uplo, trans, diag, N, A, sa1, sa2, 0, x, strideX, ox ); + return base( u, t, d, N, A, sa1, sa2, 0, x, strideX, ox ); } diff --git a/lib/node_modules/@stdlib/blas/base/transpose-operations/test/test.js b/lib/node_modules/@stdlib/blas/base/transpose-operations/test/test.js index 9e0879e6a724..f4a6e1ac644c 100644 --- a/lib/node_modules/@stdlib/blas/base/transpose-operations/test/test.js +++ b/lib/node_modules/@stdlib/blas/base/transpose-operations/test/test.js @@ -68,7 +68,7 @@ tape( 'attached to the main function is an `enum` method to return an object map ]; for ( i = 0; i < o.length; i++ ) { t.strictEqual( hasOwnProp( obj, o[ i ] ), true, 'has property `' + o[ i ] + '`' ); - t.strictEqual( isNonNegativeInteger( obj[ o[i] ] ), true, 'returns expected value' ); + t.strictEqual( isNonNegativeInteger( obj[ o[ i ] ] ), true, 'returns expected value' ); } t.end(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/ccopy/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/ccopy/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/ccopy/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/ccopy/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/ccopy/src/Makefile index 87bc9420e487..ed87bc7e1f19 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/ccopy/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/ccopy/src/Makefile @@ -194,6 +194,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/cscal/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/cscal/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/cscal/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/cscal/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/cscal/src/Makefile index 87bc9420e487..ed87bc7e1f19 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/cscal/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/cscal/src/Makefile @@ -194,6 +194,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/csrot/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/csrot/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/csrot/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/csrot/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/csrot/src/Makefile index 87bc9420e487..ed87bc7e1f19 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/csrot/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/csrot/src/Makefile @@ -194,6 +194,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/cswap/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/cswap/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/cswap/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/cswap/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/cswap/src/Makefile index 87bc9420e487..ed87bc7e1f19 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/cswap/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/cswap/src/Makefile @@ -194,6 +194,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dasum/README.md b/lib/node_modules/@stdlib/blas/base/wasm/dasum/README.md index e438827327d1..e84674e31b31 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/dasum/README.md +++ b/lib/node_modules/@stdlib/blas/base/wasm/dasum/README.md @@ -30,7 +30,7 @@ limitations under the License. var dasum = require( '@stdlib/blas/base/wasm/dasum' ); ``` -#### dasum.main( N, x, stride ) +#### dasum.main( N, x, strideX ) Computes the sum of absolute values. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dasum/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/dasum/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/dasum/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dasum/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/dasum/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/dasum/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/dasum/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/daxpy/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/daxpy/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/daxpy/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/daxpy/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/daxpy/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/daxpy/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/daxpy/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dcopy/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/dcopy/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/dcopy/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dcopy/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/dcopy/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/dcopy/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/dcopy/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/ddot/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/ddot/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/ddot/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/ddot/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/ddot/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/ddot/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/ddot/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dnrm2/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/dnrm2/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/dnrm2/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dnrm2/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/dnrm2/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/dnrm2/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/dnrm2/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/drot/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/drot/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/drot/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/drot/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/drot/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/drot/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/drot/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/drotm/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/drotm/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/drotm/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/drotm/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/drotm/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/drotm/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/drotm/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dscal/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/dscal/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/dscal/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dscal/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/dscal/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/dscal/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/dscal/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dsdot/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/dsdot/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/dsdot/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dsdot/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/dsdot/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/dsdot/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/dsdot/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dswap/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/dswap/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/dswap/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dswap/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/dswap/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/dswap/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/dswap/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dznrm2/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/dznrm2/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/dznrm2/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/dznrm2/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/dznrm2/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/dznrm2/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/dznrm2/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/idamax/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/idamax/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/idamax/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/idamax/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/idamax/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/idamax/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/idamax/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/isamax/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sasum/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/sasum/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/sasum/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sasum/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/sasum/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/sasum/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/sasum/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/saxpy/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/saxpy/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/saxpy/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/saxpy/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/saxpy/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/saxpy/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/saxpy/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/scasum/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/scasum/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/scasum/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/scasum/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/scasum/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/scasum/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/scasum/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/package.json b/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/package.json index f9f2ea997f27..e3c55404dd8f 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/package.json +++ b/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/base/wasm/scnrm2", "version": "0.0.0", - "description": "Multiply a vector `x` by a scalar `alpha`.", + "description": "Calculate the L2-norm of a single-precision complex floating-point vector.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/scnrm2/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/scopy/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/scopy/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/scopy/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/scopy/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/scopy/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/scopy/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/scopy/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sdot/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/sdot/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/sdot/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sdot/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/sdot/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/sdot/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/sdot/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sdsdot/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/sdsdot/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/sdsdot/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sdsdot/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/sdsdot/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/sdsdot/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/sdsdot/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/snrm2/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/snrm2/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/snrm2/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/snrm2/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/snrm2/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/snrm2/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/snrm2/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/srot/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/srot/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/srot/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/srot/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/srot/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/srot/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/srot/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/srotm/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/srotm/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/srotm/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/srotm/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/srotm/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/srotm/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/srotm/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sscal/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/sscal/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/sscal/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sscal/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/sscal/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/sscal/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/sscal/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sswap/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/sswap/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/sswap/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/sswap/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/sswap/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/sswap/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/sswap/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zcopy/lib/main.js b/lib/node_modules/@stdlib/blas/base/wasm/zcopy/lib/main.js index a1fed48b37f4..01e577b08f5f 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zcopy/lib/main.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/zcopy/lib/main.js @@ -42,7 +42,7 @@ var Module = require( './module.js' ); * * // Perform operation: * zcopy.main( x.length, x, 1, y, 1 ); -// y => [ -1.0, -2.0, -3.0, -4.0, -5.0, -6.0 ] +* // y => [ -1.0, -2.0, -3.0, -4.0, -5.0, -6.0 ] * * @example * var Complex128Array = require( '@stdlib/array/complex128' ); @@ -53,7 +53,7 @@ var Module = require( './module.js' ); * * // Perform operation: * zcopy.ndarray( x.length, x, 1, 0, y, -1, 2 ); -// y => [ -5.0, -6.0, -3.0, -4.0, -1.0, -2.0 ] +* // y => [ -5.0, -6.0, -3.0, -4.0, -1.0, -2.0 ] */ var zcopy = new Routine(); zcopy.initializeSync(); // eslint-disable-line n/no-sync diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zcopy/lib/routine.js b/lib/node_modules/@stdlib/blas/base/wasm/zcopy/lib/routine.js index c0b9ff6f77b7..b0f40fa742b2 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zcopy/lib/routine.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/zcopy/lib/routine.js @@ -56,7 +56,7 @@ var Module = require( './module.js' ); * * // Perform operation: * zcopy.main( x.length, x, 1, y, 1 ); -// y => [ -1.0, -2.0, -3.0, -4.0, -5.0, -6.0 ] +* // y => [ -1.0, -2.0, -3.0, -4.0, -5.0, -6.0 ] * * @example * var Complex128Array = require( '@stdlib/array/complex128' ); @@ -73,7 +73,7 @@ var Module = require( './module.js' ); * * // Perform operation: * zcopy.ndarray( x.length, x, 1, 0, y, 1, 0 ); -// y => [ -1.0, -2.0, -3.0, -4.0, -5.0, -6.0 ] +* // y => [ -1.0, -2.0, -3.0, -4.0, -5.0, -6.0 ] */ function Routine() { if ( !( this instanceof Routine ) ) { @@ -117,7 +117,7 @@ inherits( Routine, Module ); * * // Perform operation: * zcopy.main( x.length, x, 1, y, -1 ); -// y => [ -5.0, -6.0, -3.0, -4.0, -1.0, -2.0 ] +* // y => [ -5.0, -6.0, -3.0, -4.0, -1.0, -2.0 ] */ setReadOnly( Routine.prototype, 'main', function zcopy( N, x, strideX, y, strideY ) { return this.ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len @@ -154,7 +154,7 @@ setReadOnly( Routine.prototype, 'main', function zcopy( N, x, strideX, y, stride * * // Perform operation: * zcopy.ndarray( x.length, x, 1, 0, y, 1, 0 ); -// y => [ -1.0, -2.0, -3.0, -4.0, -5.0, -6.0 ] +* // y => [ -1.0, -2.0, -3.0, -4.0, -5.0, -6.0 ] */ setReadOnly( Routine.prototype, 'ndarray', function zcopy( N, x, strideX, offsetX, y, strideY, offsetY ) { var ptrs; diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zcopy/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/zcopy/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/zcopy/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zcopy/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/zcopy/src/Makefile index c6976e9d0f03..33e623af65b8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zcopy/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/zcopy/src/Makefile @@ -194,6 +194,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/index.js b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/index.js index ca25ee4f12fa..777c9a4f30fd 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/index.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/index.js @@ -33,8 +33,8 @@ * * // Perform operation: * zdrot.main( zx.length, zx, 1, zy, 1, 0.8, 0.6 ); -// zx => [ 5.0, 6.4, 7.8, 9.2, 10.6, 12.0 ] -// zy => [ ~5.0, 5.2, 5.4, ~5.6, ~5.8, ~6.0 ] +* // zx => [ 5.0, 6.4, 7.8, 9.2, 10.6, 12.0 ] +* // zy => [ ~5.0, 5.2, 5.4, ~5.6, ~5.8, ~6.0 ] * * @example * var Complex128Array = require( '@stdlib/array/complex128' ); @@ -46,8 +46,8 @@ * * // Perform operation: * zdrot.ndarray( zx.length, zx, 1, 0, zy, 1, 0, 0.8, 0.6 ); -// zx => [ 5.0, 6.4, 7.8, 9.2, 10.6, 12.0 ] -// zy => [ ~5.0, 5.2, 5.4, ~5.6, ~5.8, ~6.0 ] +* // zx => [ 5.0, 6.4, 7.8, 9.2, 10.6, 12.0 ] +* // zy => [ ~5.0, 5.2, 5.4, ~5.6, ~5.8, ~6.0 ] * * @example * var Memory = require( '@stdlib/wasm/memory' ); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/main.js b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/main.js index 5bbb1a6ddf19..028a68dc00c4 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/main.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/main.js @@ -42,8 +42,8 @@ var Module = require( './module.js' ); * * // Perform operation: * zdrot.main( zx.length, zx, 1, zy, 1, 0.8, 0.6 ); -// zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] -// zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] +* // zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] +* // zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] * * @example * var Complex128Array = require( '@stdlib/array/complex128' ); @@ -54,8 +54,8 @@ var Module = require( './module.js' ); * * // Perform operation: * zdrot.ndarray( zx.length, zx, 1, 0, zy, 1, 0, 0.8, 0.6 ); -// zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] -// zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] +* // zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] +* // zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] */ var zdrot = new Routine(); zdrot.initializeSync(); // eslint-disable-line n/no-sync diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/routine.js b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/routine.js index 225abcc7f47d..86101f0c7736 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/routine.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/lib/routine.js @@ -56,8 +56,8 @@ var Module = require( './module.js' ); * * // Perform operation: * zdrot.main( zx.length, zx, 1, zy, 1, 0.8, 0.6 ); -// zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] -// zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] +* // zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] +* // zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] * * @example * var Complex128Array = require( '@stdlib/array/complex128' ); @@ -74,8 +74,8 @@ var Module = require( './module.js' ); * * // Perform operation: * zdrot.ndarray( zx.length, zx, 1, 0, zy, 1, 0, 0.8, 0.6 ); -// zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] -// zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] +* // zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] +* // zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] */ function Routine() { if ( !( this instanceof Routine ) ) { @@ -121,8 +121,8 @@ inherits( Routine, Module ); * * // Perform operation: * zdrot.main( zx.length, zx, 1, zy, 1, 0.8, 0.6 ); -// zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] -// zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] +* // zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] +* // zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] */ setReadOnly( Routine.prototype, 'main', function zdrot( N, zx, strideX, zy, strideY, c, s ) { return this.ndarray( N, zx, strideX, stride2offset( N, strideX ), zy, strideY, stride2offset( N, strideY ), c, s ); // eslint-disable-line max-len @@ -161,8 +161,8 @@ setReadOnly( Routine.prototype, 'main', function zdrot( N, zx, strideX, zy, stri * * // Perform operation: * zdrot.ndarray( zx.length, zx, 1, 0, zy, 1, 0, 0.8, 0.6 ); -// zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] -// zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] +* // zx => [ ~-0.2, ~-0.4, ~-0.6, ~-0.8, -1.0, ~-1.2 ] +* // zy => [ 1.4, 2.8, 4.2, 5.6, 7.0, 8.4 ] */ setReadOnly( Routine.prototype, 'ndarray', function zdrot( N, zx, strideX, offsetX, zy, strideY, offsetY, c, s ) { var ptrs; diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zdrot/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zdrot/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/src/Makefile index c6976e9d0f03..33e623af65b8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zdrot/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/zdrot/src/Makefile @@ -194,6 +194,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zscal/lib/module.js b/lib/node_modules/@stdlib/blas/base/wasm/zscal/lib/module.js index 90a34a16c59e..8a739be8fd20 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zscal/lib/module.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/zscal/lib/module.js @@ -127,7 +127,7 @@ inherits( Module, WasmModule ); * @param {PositiveInteger} N - number of indexed elements * @param {NonNegativeInteger} aptr - scalar constant pointer (i.e., byte offset) * @param {NonNegativeInteger} xptr - input array pointer (i.e., byte offset) -* @param {integer} strideX - stride length for `x` +* @param {integer} strideX - `x` stride length * @returns {NonNegativeInteger} input array pointer (i.e., byte offset) * * @example @@ -202,7 +202,7 @@ setReadOnly( Module.prototype, 'main', function zscal( N, aptr, xptr, strideX ) * @param {PositiveInteger} N - number of indexed elements * @param {NonNegativeInteger} aptr - scalar constant pointer (i.e., byte offset) * @param {NonNegativeInteger} xptr - input array pointer (i.e., byte offset) -* @param {integer} strideX - stride length for `x` +* @param {integer} strideX - `x` stride length * @param {NonNegativeInteger} offsetX - starting `x` index * @returns {NonNegativeInteger} input array pointer (i.e., byte offset) * diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zscal/lib/routine.js b/lib/node_modules/@stdlib/blas/base/wasm/zscal/lib/routine.js index a56e0396d971..fbb9db587ab1 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zscal/lib/routine.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/zscal/lib/routine.js @@ -105,7 +105,7 @@ inherits( Routine, Module ); * @param {PositiveInteger} N - number of indexed elements * @param {Complex128} alpha - scalar constant * @param {Complex128Array} x - input array -* @param {integer} strideX - stride length for `x` +* @param {integer} strideX - `x` stride length * @returns {Complex128Array} input array * * @example @@ -142,7 +142,7 @@ setReadOnly( Routine.prototype, 'main', function zscal( N, alpha, x, strideX ) { * @param {PositiveInteger} N - number of indexed elements * @param {Complex128} alpha - scalar constant * @param {Complex128Array} x - input array -* @param {integer} strideX - stride length for `x` +* @param {integer} strideX - `x` stride length * @param {NonNegativeInteger} offsetX - starting index for `x` * @returns {Complex128Array} input array * diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zscal/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/zscal/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/zscal/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zscal/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/zscal/src/Makefile index c6976e9d0f03..33e623af65b8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zscal/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/zscal/src/Makefile @@ -194,6 +194,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zswap/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/base/wasm/zswap/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/wasm/zswap/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/zswap/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/zswap/src/Makefile index c6976e9d0f03..33e623af65b8 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/zswap/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/wasm/zswap/src/Makefile @@ -194,6 +194,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/docs/types/index.d.ts index a42dcddbafb6..ccebeeb547de 100644 --- a/lib/node_modules/@stdlib/blas/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/blas/docs/types/index.d.ts @@ -20,12 +20,14 @@ /* eslint-disable max-lines */ +import asum = require( '@stdlib/blas/asum' ); import base = require( '@stdlib/blas/base' ); import ddot = require( '@stdlib/blas/ddot' ); import dswap = require( '@stdlib/blas/dswap' ); import ext = require( '@stdlib/blas/ext' ); import gdot = require( '@stdlib/blas/gdot' ); import gswap = require( '@stdlib/blas/gswap' ); +import nrm2 = require( '@stdlib/blas/nrm2' ); import sdot = require( '@stdlib/blas/sdot' ); import sswap = require( '@stdlib/blas/sswap' ); @@ -33,6 +35,36 @@ import sswap = require( '@stdlib/blas/sswap' ); * Interface describing the `blas` namespace. */ interface Namespace { + /** + * Computes the sum of absolute values (L1 norm) along one or more ndarray dimensions. + * + * @param x - input ndarray + * @param options - function options + * @returns output ndarray + * + * @example + * var array = require( '@stdlib/ndarray/array' ); + * + * var x = array( [ 1.0, -2.0, 2.0 ] ); + * + * var y = ns.asum( x ); + * // returns [ 5.0 ] + * + * @example + * var array = require( '@stdlib/ndarray/array' ); + * var zeros = require( '@stdlib/ndarray/zeros' ); + * + * var x = array( [ 1.0, -2.0, 2.0 ] ); + * var y = zeros( [] ); + * + * var out = ns.asum.assign( x, y ); + * // returns [ 5.0 ] + * + * var bool = ( out === y ); + * // returns true + */ + asum: typeof asum; + /** * Base (i.e., lower-level) basic linear algebra subprograms (BLAS). */ @@ -158,6 +190,36 @@ interface Namespace { */ gswap: typeof gswap; + /** + * Computes the L2-norm along one or more ndarray dimensions. + * + * @param x - input ndarray + * @param options - function options + * @returns output ndarray + * + * @example + * var array = require( '@stdlib/ndarray/array' ); + * + * var x = array( [ 1.0, -2.0, 2.0 ] ); + * + * var y = ns.nrm2( x ); + * // returns [ 3.0 ] + * + * @example + * var array = require( '@stdlib/ndarray/array' ); + * var zeros = require( '@stdlib/ndarray/zeros' ); + * + * var x = array( [ 1.0, -2.0, 2.0 ] ); + * var y = zeros( [] ); + * + * var out = ns.nrm2.assign( x, y ); + * // returns [ 3.0 ] + * + * var bool = ( out === y ); + * // returns true + */ + nrm2: typeof nrm2; + /** * Computes the dot product of two single-precision floating-point vectors. * diff --git a/lib/node_modules/@stdlib/blas/ext/base/README.md b/lib/node_modules/@stdlib/blas/ext/base/README.md index b489f61c66ec..f9db3347aab1 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/README.md @@ -53,12 +53,15 @@ var o = ns; - [`cindexOf( N, searchElement, x, strideX )`][@stdlib/blas/ext/base/cindex-of]: return the first index of a specified search element in a single-precision complex floating-point strided array. - [`clastIndexOfRow( order, M, N, A, LDA, x, strideX, workspace, strideW )`][@stdlib/blas/ext/base/clast-index-of-row]: return the index of the last row in a single-precision complex floating-point input matrix which has the same elements as a provided search vector. - [`coneTo( N, x, strideX )`][@stdlib/blas/ext/base/cone-to]: fill a single-precision complex floating-point strided array with linearly spaced numeric elements which increment by `1` starting from one. +- [`creplicate( N, k, x, strideX, out, strideOut )`][@stdlib/blas/ext/base/creplicate]: replicate each element in a single-precision complex floating-point strided array a specified number of times. - [`csum( N, x, strideX )`][@stdlib/blas/ext/base/csum]: calculate the sum of single-precision complex floating-point strided array elements. - [`csumkbn( N, x, strideX )`][@stdlib/blas/ext/base/csumkbn]: calculate the sum of single-precision complex floating-point strided array elements using an improved Kahan–Babuška algorithm. - [`cunitspace( N, start, x, strideX )`][@stdlib/blas/ext/base/cunitspace]: fill a single-precision complex floating-point strided array with linearly spaced numeric elements which increment by `1` starting from a specified value. - [`cwapx( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/cwapx]: add a scalar constant to each element in a single-precision complex floating-point strided array `x` and assign the results to elements in a single-precision complex floating-point strided array `w`. +- [`cwax( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/cwax]: multiply each element in a single-precision complex floating-point strided array `x` by a scalar constant and assign the results to elements in a single-precision complex floating-point strided array `w`. - [`cwhere( N, condition, strideC, x, strideX, y, strideY, out, strideOut )`][@stdlib/blas/ext/base/cwhere]: take elements from one of two single-precision complex floating-point strided arrays depending on a condition. - [`cwxsa( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/cwxsa]: subtract a scalar constant from each element in a single-precision complex floating-point strided array `x` and assign the results to elements in a single-precision complex floating-point strided array `w`. +- [`cxmy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/cxmy]: multiply elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assign the results to `y`. - [`cxpy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/cxpy]: add elements of a single-precision complex floating-point strided array `x` to the corresponding elements of a single-precision complex floating-point strided array `y` and assign the results to `y`. - [`cxsa( N, alpha, x, strideX )`][@stdlib/blas/ext/base/cxsa]: subtract a scalar constant from each element in a single-precision complex floating-point strided array. - [`cxsy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/cxsy]: subtract elements of a single-precision complex floating-point strided array `y` from the corresponding elements of a single-precision complex floating-point strided array `x` and assign the results to `y`. @@ -88,9 +91,15 @@ var o = ns; - [`dcusumpw( N, sum, x, strideX, y, strideY )`][@stdlib/blas/ext/base/dcusumpw]: calculate the cumulative sum of double-precision floating-point strided array elements using pairwise summation. - [`ddiff( N, k, x, strideX, N1, prepend, strideP, N2, append, strideA, out, strideOut, workspace, strideW )`][@stdlib/blas/ext/base/ddiff]: calculate the k-th discrete forward difference of a double-precision floating-point strided array. - [`dediff( N, x, strideX, N1, prepend, strideP, N2, append, strideA, out, strideOut )`][@stdlib/blas/ext/base/dediff]: calculate the differences between consecutive elements of a double-precision floating-point strided array. +- [`dfillEqual( N, searchElement, alpha, x, strideX )`][@stdlib/blas/ext/base/dfill-equal]: replace double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +- [`dfillNaN( N, alpha, x, strideX )`][@stdlib/blas/ext/base/dfill-nan]: replace double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +- [`dfillNotEqual( N, searchElement, alpha, x, strideX )`][@stdlib/blas/ext/base/dfill-not-equal]: replace double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. - [`dfill( N, alpha, x, strideX )`][@stdlib/blas/ext/base/dfill]: fill a double-precision floating-point strided array with a specified scalar constant. +- [`dfirstIndexEqual( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/dfirst-index-equal]: return the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array. +- [`dfirstIndexLessThan( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/dfirst-index-less-than]: return the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array. - [`dindexOfColumn( order, M, N, A, LDA, x, strideX, workspace, strideW )`][@stdlib/blas/ext/base/dindex-of-column]: return the index of the first column in a double-precision floating-point input matrix which has the same elements as a provided search vector. - [`dindexOfFalsy( N, x, strideX )`][@stdlib/blas/ext/base/dindex-of-falsy]: return the index of the first falsy element in a double-precision floating-point strided array. +- [`dindexOfNotEqual( N, searchElement, x, strideX )`][@stdlib/blas/ext/base/dindex-of-not-equal]: return the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element. - [`dindexOfRow( order, M, N, A, LDA, x, strideX, workspace, strideW )`][@stdlib/blas/ext/base/dindex-of-row]: return the index of the first row in a double-precision floating-point input matrix which has the same elements as a provided search vector. - [`dindexOfTruthy( N, x, strideX )`][@stdlib/blas/ext/base/dindex-of-truthy]: return the index of the first truthy element in a double-precision floating-point strided array. - [`dindexOf( N, searchElement, x, strideX )`][@stdlib/blas/ext/base/dindex-of]: return the first index of a specified search element in a double-precision floating-point strided array. @@ -119,6 +128,7 @@ var o = ns; - [`dnone( N, x, strideX )`][@stdlib/blas/ext/base/dnone]: test whether every element in a double-precision floating-point strided array is falsy. - [`doneTo( N, x, strideX )`][@stdlib/blas/ext/base/done-to]: fill a double-precision floating-point strided array with linearly spaced numeric elements which increment by `1` starting from one. - [`dones( N, x, strideX )`][@stdlib/blas/ext/base/dones]: fill a double-precision floating-point strided array with ones. +- [`dreplicate( N, k, x, strideX, out, strideOut )`][@stdlib/blas/ext/base/dreplicate]: replicate each element in a double-precision floating-point strided array a specified number of times. - [`drev( N, x, strideX )`][@stdlib/blas/ext/base/drev]: reverse a double-precision floating-point strided array in-place. - [`drrss( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/drrss]: calculate the square root of the residual sum of squares of two double-precision floating-point strided arrays. - [`drss( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/drss]: calculate the residual sum of squares of two double-precision floating-point strided arrays. @@ -149,8 +159,10 @@ var o = ns; - [`dunitspace( N, start, x, strideX )`][@stdlib/blas/ext/base/dunitspace]: fill a double-precision floating-point strided array with linearly spaced numeric elements which increment by `1` starting from a specified value. - [`dvander( order, mode, M, N, x, strideX, out, ldo )`][@stdlib/blas/ext/base/dvander]: generate a double-precision floating-point Vandermonde matrix. - [`dwapx( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/dwapx]: add a scalar constant to each element in a double-precision floating-point strided array `x` and assign the results to elements in a double-precision floating-point strided array `w`. +- [`dwax( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/dwax]: multiply each element in a double-precision floating-point strided array `x` by a scalar constant and assign the results to elements in a double-precision floating-point strided array `w`. - [`dwhere( N, condition, strideC, x, strideX, y, strideY, out, strideOut )`][@stdlib/blas/ext/base/dwhere]: take elements from one of two double-precision floating-point strided arrays depending on a condition. - [`dwxsa( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/dwxsa]: subtract a scalar constant from each element in a double-precision floating-point strided array `x` and assign the results to elements in a double-precision floating-point strided array `w`. +- [`dxdy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/dxdy]: divide elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assign the results to `y`. - [`dxmy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/dxmy]: multiply elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assign the results to `y`. - [`dxpy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/dxpy]: add elements of a double-precision floating-point strided array `x` to the corresponding elements of a double-precision floating-point strided array `y` and assign the results to `y`. - [`dxsa( N, alpha, x, strideX )`][@stdlib/blas/ext/base/dxsa]: subtract a scalar constant from each element in a double-precision floating-point strided array. @@ -185,16 +197,27 @@ var o = ns; - [`gediff( N, x, strideX, N1, prepend, strideP, N2, append, strideA, out, strideOut )`][@stdlib/blas/ext/base/gediff]: calculate the differences between consecutive elements of a strided array. - [`gevery( N, x, strideX )`][@stdlib/blas/ext/base/gevery]: test whether every element in a strided array is truthy. - [`gfillBy( N, x, strideX, clbk[, thisArg] )`][@stdlib/blas/ext/base/gfill-by]: fill a strided array according to a provided callback function. +- [`gfillEqual( N, searchElement, alpha, x, strideX )`][@stdlib/blas/ext/base/gfill-equal]: replace strided array elements equal to a provided search element with a specified scalar constant. +- [`gfillLessThan( N, searchElement, alpha, x, strideX )`][@stdlib/blas/ext/base/gfill-less-than]: replace strided array elements less than a provided search element with a specified scalar constant. +- [`gfillNaN( N, alpha, x, strideX )`][@stdlib/blas/ext/base/gfill-nan]: replace strided array elements equal to `NaN` with a specified scalar constant. +- [`gfillNotEqual( N, searchElement, alpha, x, strideX )`][@stdlib/blas/ext/base/gfill-not-equal]: replace strided array elements not equal to a provided search element with a specified scalar constant. - [`gfill( N, alpha, x, strideX )`][@stdlib/blas/ext/base/gfill]: fill a strided array with a specified scalar constant. - [`gfindIndex( N, x, strideX, clbk[, thisArg] )`][@stdlib/blas/ext/base/gfind-index]: return the index of the first element which passes a test implemented by a predicate function. - [`gfindLastIndex( N, x, strideX, clbk[, thisArg] )`][@stdlib/blas/ext/base/gfind-last-index]: return the index of the last element which passes a test implemented by a predicate function. +- [`gfirstIndexEqual( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/gfirst-index-equal]: return the index of the first element in a strided array equal to a corresponding element in another strided array. +- [`gfirstIndexGreaterThan( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/gfirst-index-greater-than]: return the index of the first element in a strided array which is greater than a corresponding element in another strided array. +- [`gfirstIndexLessThan( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/gfirst-index-less-than]: return the index of the first element in a strided array which is less than a corresponding element in another strided array. +- [`gfirstIndexNotEqual( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/gfirst-index-not-equal]: return the index of the first element in a strided array which is not equal to the corresponding element in another strided array. - [`gindexOfColumn( order, M, N, A, LDA, x, strideX )`][@stdlib/blas/ext/base/gindex-of-column]: return the index of the first column in an input matrix which has the same elements as a provided search vector. - [`gindexOfFalsy( N, x, strideX )`][@stdlib/blas/ext/base/gindex-of-falsy]: return the index of the first falsy element in a strided array. +- [`gindexOfNotEqual( N, searchElement, x, strideX )`][@stdlib/blas/ext/base/gindex-of-not-equal]: return the first index of an element in a strided array which is not equal to a specified search element. - [`gindexOfRow( order, M, N, A, LDA, x, strideX )`][@stdlib/blas/ext/base/gindex-of-row]: return the index of the first row in an input matrix which has the same elements as a provided search vector. +- [`gindexOfSameValue( N, searchElement, x, strideX )`][@stdlib/blas/ext/base/gindex-of-same-value]: return the index of the first element in a strided array which has the same value as a provided search element. - [`gindexOfTruthy( N, x, strideX )`][@stdlib/blas/ext/base/gindex-of-truthy]: return the index of the first truthy element in a strided array. - [`gindexOf( N, searchElement, x, strideX )`][@stdlib/blas/ext/base/gindex-of]: return the first index of a specified search element in a strided array. - [`gjoinBetween( N, prefix, suffix, x, strideX, separators, strideS )`][@stdlib/blas/ext/base/gjoin-between]: return a string by joining strided array elements using a specified separator for each pair of consecutive elements. - [`gjoin( N, separator, x, strideX )`][@stdlib/blas/ext/base/gjoin]: return a string created by joining strided array elements using a specified separator. +- [`glastIndexEqual( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/glast-index-equal]: return the index of the last element in a strided array equal to a corresponding element in another strided array. - [`glastIndexOfFalsy( N, x, strideX )`][@stdlib/blas/ext/base/glast-index-of-falsy]: return the index of the last falsy element in a strided array. - [`glastIndexOfRow( order, M, N, A, LDA, x, strideX, workspace, strideW )`][@stdlib/blas/ext/base/glast-index-of-row]: return the index of the last row in an input matrix which has the same elements as a provided search vector. - [`glastIndexOfTruthy( N, x, strideX )`][@stdlib/blas/ext/base/glast-index-of-truthy]: return the index of the last truthy element in a strided array. @@ -238,6 +261,7 @@ var o = ns; - [`gwxpy( N, x, strideX, y, strideY, w, strideW )`][@stdlib/blas/ext/base/gwxpy]: add elements of a strided array `x` to the corresponding elements of a strided array `y` and assign the results to elements in a strided array `w`. - [`gwxsa( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/gwxsa]: subtract a scalar constant from each element in a strided array `x` and assign the results to elements in a strided array `w`. - [`gwxsy( N, x, strideX, y, strideY, w, strideW )`][@stdlib/blas/ext/base/gwxsy]: subtract elements of a strided array `y` from the corresponding elements of a strided array `x` and assign the results to elements in a strided array `w`. +- [`gxdy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/gxdy]: divide elements of a strided array `x` by the corresponding elements of a strided array `y` and assign the results to `y`. - [`gxmy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/gxmy]: multiply elements of a strided array `x` by the corresponding elements of a strided array `y` and assign the results to `y`. - [`gxpy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/gxpy]: add elements of a strided array `x` to the corresponding elements of a strided array `y` and assign the results to `y`. - [`gxsa( N, alpha, x, strideX )`][@stdlib/blas/ext/base/gxsa]: subtract a scalar constant from each element in a strided array. @@ -275,7 +299,12 @@ var o = ns; - [`sdssum( N, x, strideX )`][@stdlib/blas/ext/base/sdssum]: calculate the sum of single-precision floating-point strided array elements using extended accumulation. - [`sdssumpw( N, x, strideX )`][@stdlib/blas/ext/base/sdssumpw]: calculate the sum of single-precision floating-point strided array elements using pairwise summation with extended accumulation. - [`sediff( N, x, strideX, N1, prepend, strideP, N2, append, strideA, out, strideOut )`][@stdlib/blas/ext/base/sediff]: calculate the differences between consecutive elements of a single-precision floating-point strided array. +- [`sfillEqual( N, searchElement, alpha, x, strideX )`][@stdlib/blas/ext/base/sfill-equal]: replace single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +- [`sfillNaN( N, alpha, x, strideX )`][@stdlib/blas/ext/base/sfill-nan]: replace single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +- [`sfillNotEqual( N, searchElement, alpha, x, strideX )`][@stdlib/blas/ext/base/sfill-not-equal]: replace single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. - [`sfill( N, alpha, x, strideX )`][@stdlib/blas/ext/base/sfill]: fill a single-precision floating-point strided array with a specified scalar constant. +- [`sfirstIndexEqual( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/sfirst-index-equal]: return the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array. +- [`sfirstIndexLessThan( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/sfirst-index-less-than]: return the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array. - [`sindexOfColumn( order, M, N, A, LDA, x, strideX, workspace, strideW )`][@stdlib/blas/ext/base/sindex-of-column]: return the index of the first column in a single-precision floating-point input matrix which has the same elements as a provided search vector. - [`sindexOfFalsy( N, x, strideX )`][@stdlib/blas/ext/base/sindex-of-falsy]: return the index of the first falsy element in a single-precision floating-point strided array. - [`sindexOfRow( order, M, N, A, LDA, x, strideX, workspace, strideW )`][@stdlib/blas/ext/base/sindex-of-row]: return the index of the first row in a single-precision floating-point input matrix which has the same elements as a provided search vector. @@ -298,6 +327,7 @@ var o = ns; - [`snone( N, x, strideX )`][@stdlib/blas/ext/base/snone]: test whether every element in a single-precision floating-point strided array is falsy. - [`soneTo( N, x, strideX )`][@stdlib/blas/ext/base/sone-to]: fill a single-precision floating-point strided array with linearly spaced numeric elements which increment by `1` starting from one. - [`sones( N, x, strideX )`][@stdlib/blas/ext/base/sones]: fill a single-precision floating-point strided array with ones. +- [`sreplicate( N, k, x, strideX, out, strideOut )`][@stdlib/blas/ext/base/sreplicate]: replicate each single-precision floating-point strided array element a specified number of times. - [`srev( N, x, strideX )`][@stdlib/blas/ext/base/srev]: reverse a single-precision floating-point strided array in-place. - [`ssome( N, k, x, strideX )`][@stdlib/blas/ext/base/ssome]: test whether a single-precision floating-point strided array contains at least `k` truthy elements. - [`ssort( N, order, x, strideX )`][@stdlib/blas/ext/base/ssort]: sort a single-precision floating-point strided array. @@ -315,8 +345,10 @@ var o = ns; - [`sunitspace( N, start, x, strideX )`][@stdlib/blas/ext/base/sunitspace]: fill a single-precision floating-point strided array with linearly spaced numeric elements which increment by `1` starting from a specified value. - [`svander( order, mode, M, N, x, strideX, out, ldo )`][@stdlib/blas/ext/base/svander]: generate a single-precision floating-point Vandermonde matrix. - [`swapx( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/swapx]: add a scalar constant to each element in a single-precision floating-point strided array `x` and assign the results to elements in a single-precision floating-point strided array `w`. +- [`swax( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/swax]: multiply each element in a single-precision floating-point strided array `x` by a scalar constant and assign the results to elements in a single-precision floating-point strided array `w`. - [`swhere( N, condition, strideC, x, strideX, y, strideY, out, strideOut )`][@stdlib/blas/ext/base/swhere]: take elements from one of two single-precision floating-point strided arrays depending on a condition. - [`swxsa( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/swxsa]: subtract a scalar constant from each element in a single-precision floating-point strided array `x` and assign the results to elements in a single-precision floating-point strided array `w`. +- [`sxdy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/sxdy]: divide elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assign the results to `y`. - [`sxmy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/sxmy]: multiply elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assign the results to `y`. - [`sxpy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/sxpy]: add elements of a single-precision floating-point strided array `x` to the corresponding elements of a single-precision floating-point strided array `y` and assign the results to `y`. - [`sxsa( N, alpha, x, strideX )`][@stdlib/blas/ext/base/sxsa]: subtract a scalar constant from each element in a single-precision floating-point strided array. @@ -331,16 +363,21 @@ var o = ns; - [`zfill( N, alpha, x, strideX )`][@stdlib/blas/ext/base/zfill]: fill a double-precision complex floating-point strided array with a specified scalar constant. - [`zindexOfColumn( order, M, N, A, LDA, x, strideX, workspace, strideW )`][@stdlib/blas/ext/base/zindex-of-column]: return the index of the first column in a double-precision complex floating-point input matrix which has the same elements as a provided search vector. - [`zindexOfRow( order, M, N, A, LDA, x, strideX, workspace, strideW )`][@stdlib/blas/ext/base/zindex-of-row]: return the index of the first row in a double-precision complex floating-point input matrix which has the same elements as a provided search vector. +- [`zindexOfTruthy( N, x, strideX )`][@stdlib/blas/ext/base/zindex-of-truthy]: return the index of the first truthy element in a double-precision complex floating-point strided array. - [`zindexOf( N, searchElement, x, strideX )`][@stdlib/blas/ext/base/zindex-of]: return the first index of a specified search element in a double-precision complex floating-point strided array. - [`zlastIndexOfRow( order, M, N, A, LDA, x, strideX, workspace, strideW )`][@stdlib/blas/ext/base/zlast-index-of-row]: return the index of the last row in a double-precision complex floating-point input matrix which has the same elements as a provided search vector. - [`znancount( N, x, strideX )`][@stdlib/blas/ext/base/znancount]: calculate the number of non-`NaN` elements in a double-precision complex floating-point strided array. - [`zoneTo( N, x, strideX )`][@stdlib/blas/ext/base/zone-to]: fill a double-precision complex floating-point strided array with linearly spaced numeric elements which increment by `1` starting from one. +- [`zreplicate( N, k, x, strideX, out, strideOut )`][@stdlib/blas/ext/base/zreplicate]: replicate each element in a double-precision complex floating-point strided array a specified number of times. - [`zsum( N, x, strideX )`][@stdlib/blas/ext/base/zsum]: calculate the sum of double-precision complex floating-point strided array elements. - [`zsumkbn( N, x, strideX )`][@stdlib/blas/ext/base/zsumkbn]: calculate the sum of double-precision complex floating-point strided array elements using an improved Kahan–Babuška algorithm. - [`zunitspace( N, start, x, strideX )`][@stdlib/blas/ext/base/zunitspace]: fill a double-precision complex floating-point strided array with linearly spaced numeric elements which increment by `1` starting from a specified value. - [`zwapx( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/zwapx]: add a scalar constant to each element in a double-precision complex floating-point strided array `x` and assign the results to elements in a double-precision complex floating-point strided array `w`. +- [`zwax( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/zwax]: multiply each element in a double-precision complex floating-point strided array `x` by a scalar constant and assign the results to elements in a double-precision complex floating-point strided array `w`. - [`zwhere( N, condition, strideC, x, strideX, y, strideY, out, strideOut )`][@stdlib/blas/ext/base/zwhere]: take elements from one of two double-precision complex floating-point strided arrays depending on a condition. - [`zwxsa( N, alpha, x, strideX, w, strideW )`][@stdlib/blas/ext/base/zwxsa]: subtract a scalar constant from each element in a double-precision complex floating-point strided array `x` and assign the results to elements in a double-precision complex floating-point strided array `w`. +- [`zxdy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/zxdy]: divide elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assign the results to `y`. +- [`zxmy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/zxmy]: multiply elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assign the results to `y`. - [`zxpy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/zxpy]: add elements of a double-precision complex floating-point strided array `x` to the corresponding elements of a double-precision complex floating-point strided array `y` and assign the results to `y`. - [`zxsa( N, alpha, x, strideX )`][@stdlib/blas/ext/base/zxsa]: subtract a scalar constant from each element in a double-precision complex floating-point strided array. - [`zxsy( N, x, strideX, y, strideY )`][@stdlib/blas/ext/base/zxsy]: subtract elements of a double-precision complex floating-point strided array `y` from the corresponding elements of a double-precision complex floating-point strided array `x` and assign the results to `y`. @@ -415,6 +452,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/cone-to]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/cone-to +[@stdlib/blas/ext/base/creplicate]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/creplicate + [@stdlib/blas/ext/base/csum]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/csum [@stdlib/blas/ext/base/csumkbn]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/csumkbn @@ -423,10 +462,14 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/cwapx]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/cwapx +[@stdlib/blas/ext/base/cwax]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/cwax + [@stdlib/blas/ext/base/cwhere]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/cwhere [@stdlib/blas/ext/base/cwxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/cwxsa +[@stdlib/blas/ext/base/cxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/cxmy + [@stdlib/blas/ext/base/cxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/cxpy [@stdlib/blas/ext/base/cxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/cxsa @@ -485,12 +528,24 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/dediff]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dediff +[@stdlib/blas/ext/base/dfill-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dfill-equal + +[@stdlib/blas/ext/base/dfill-nan]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dfill-nan + +[@stdlib/blas/ext/base/dfill-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dfill-not-equal + [@stdlib/blas/ext/base/dfill]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dfill +[@stdlib/blas/ext/base/dfirst-index-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dfirst-index-equal + +[@stdlib/blas/ext/base/dfirst-index-less-than]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dfirst-index-less-than + [@stdlib/blas/ext/base/dindex-of-column]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dindex-of-column [@stdlib/blas/ext/base/dindex-of-falsy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dindex-of-falsy +[@stdlib/blas/ext/base/dindex-of-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dindex-of-not-equal + [@stdlib/blas/ext/base/dindex-of-row]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dindex-of-row [@stdlib/blas/ext/base/dindex-of-truthy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dindex-of-truthy @@ -547,6 +602,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/dones]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dones +[@stdlib/blas/ext/base/dreplicate]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dreplicate + [@stdlib/blas/ext/base/drev]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/drev [@stdlib/blas/ext/base/drrss]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/drrss @@ -607,10 +664,14 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/dwapx]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dwapx +[@stdlib/blas/ext/base/dwax]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dwax + [@stdlib/blas/ext/base/dwhere]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dwhere [@stdlib/blas/ext/base/dwxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dwxsa +[@stdlib/blas/ext/base/dxdy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dxdy + [@stdlib/blas/ext/base/dxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dxmy [@stdlib/blas/ext/base/dxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/dxpy @@ -679,18 +740,38 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/gfill-by]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfill-by +[@stdlib/blas/ext/base/gfill-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfill-equal + +[@stdlib/blas/ext/base/gfill-less-than]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfill-less-than + +[@stdlib/blas/ext/base/gfill-nan]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfill-nan + +[@stdlib/blas/ext/base/gfill-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfill-not-equal + [@stdlib/blas/ext/base/gfill]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfill [@stdlib/blas/ext/base/gfind-index]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfind-index [@stdlib/blas/ext/base/gfind-last-index]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfind-last-index +[@stdlib/blas/ext/base/gfirst-index-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfirst-index-equal + +[@stdlib/blas/ext/base/gfirst-index-greater-than]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfirst-index-greater-than + +[@stdlib/blas/ext/base/gfirst-index-less-than]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfirst-index-less-than + +[@stdlib/blas/ext/base/gfirst-index-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gfirst-index-not-equal + [@stdlib/blas/ext/base/gindex-of-column]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gindex-of-column [@stdlib/blas/ext/base/gindex-of-falsy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gindex-of-falsy +[@stdlib/blas/ext/base/gindex-of-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gindex-of-not-equal + [@stdlib/blas/ext/base/gindex-of-row]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gindex-of-row +[@stdlib/blas/ext/base/gindex-of-same-value]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gindex-of-same-value + [@stdlib/blas/ext/base/gindex-of-truthy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gindex-of-truthy [@stdlib/blas/ext/base/gindex-of]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gindex-of @@ -699,6 +780,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/gjoin]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gjoin +[@stdlib/blas/ext/base/glast-index-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/glast-index-equal + [@stdlib/blas/ext/base/glast-index-of-falsy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/glast-index-of-falsy [@stdlib/blas/ext/base/glast-index-of-row]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/glast-index-of-row @@ -785,6 +868,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/gwxsy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gwxsy +[@stdlib/blas/ext/base/gxdy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gxdy + [@stdlib/blas/ext/base/gxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gxmy [@stdlib/blas/ext/base/gxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/gxpy @@ -859,8 +944,18 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/sediff]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sediff +[@stdlib/blas/ext/base/sfill-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sfill-equal + +[@stdlib/blas/ext/base/sfill-nan]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sfill-nan + +[@stdlib/blas/ext/base/sfill-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sfill-not-equal + [@stdlib/blas/ext/base/sfill]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sfill +[@stdlib/blas/ext/base/sfirst-index-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sfirst-index-equal + +[@stdlib/blas/ext/base/sfirst-index-less-than]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sfirst-index-less-than + [@stdlib/blas/ext/base/sindex-of-column]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sindex-of-column [@stdlib/blas/ext/base/sindex-of-falsy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sindex-of-falsy @@ -905,6 +1000,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/sones]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sones +[@stdlib/blas/ext/base/sreplicate]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sreplicate + [@stdlib/blas/ext/base/srev]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/srev [@stdlib/blas/ext/base/ssome]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ssome @@ -939,10 +1036,14 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/swapx]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/swapx +[@stdlib/blas/ext/base/swax]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/swax + [@stdlib/blas/ext/base/swhere]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/swhere [@stdlib/blas/ext/base/swxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/swxsa +[@stdlib/blas/ext/base/sxdy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sxdy + [@stdlib/blas/ext/base/sxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sxmy [@stdlib/blas/ext/base/sxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/sxpy @@ -971,6 +1072,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/zindex-of-row]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zindex-of-row +[@stdlib/blas/ext/base/zindex-of-truthy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zindex-of-truthy + [@stdlib/blas/ext/base/zindex-of]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zindex-of [@stdlib/blas/ext/base/zlast-index-of-row]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zlast-index-of-row @@ -979,6 +1082,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/zone-to]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zone-to +[@stdlib/blas/ext/base/zreplicate]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zreplicate + [@stdlib/blas/ext/base/zsum]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zsum [@stdlib/blas/ext/base/zsumkbn]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zsumkbn @@ -987,10 +1092,16 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/zwapx]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zwapx +[@stdlib/blas/ext/base/zwax]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zwax + [@stdlib/blas/ext/base/zwhere]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zwhere [@stdlib/blas/ext/base/zwxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zwxsa +[@stdlib/blas/ext/base/zxdy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zxdy + +[@stdlib/blas/ext/base/zxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zxmy + [@stdlib/blas/ext/base/zxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zxpy [@stdlib/blas/ext/base/zxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/zxsa diff --git a/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.cindex_of.js b/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.cindex_of.js index 25e74c89a92c..4eaa52ffbdff 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.cindex_of.js +++ b/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.cindex_of.js @@ -82,7 +82,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { var actual; var x; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.cindex_of.native.js b/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.cindex_of.native.js index 6f15c71f970e..9dce9436b253 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.cindex_of.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.cindex_of.native.js @@ -91,7 +91,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; var x; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.ndarray.js index 2ab40706a516..8ee27573db63 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.ndarray.js @@ -82,7 +82,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { var actual; var x; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.ndarray.native.js index 9c5a1bd2c013..341e3cd9da8f 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/cindex-of/test/test.ndarray.native.js @@ -91,7 +91,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', opts, function test( t ) { var actual; var x; diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/README.md b/lib/node_modules/@stdlib/blas/ext/base/creplicate/README.md new file mode 100644 index 000000000000..6238b1f67486 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/README.md @@ -0,0 +1,327 @@ + + +# creplicate + +> Replicate each element in a single-precision complex floating-point strided array a specified number of times. + +
+ +
+ + + +
+ +## Usage + +```javascript +var creplicate = require( '@stdlib/blas/ext/base/creplicate' ); +``` + +#### creplicate( N, k, x, strideX, out, strideOut ) + +Replicates each element in a single-precision complex floating-point strided array a specified number of times. + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var out = new Complex64Array( 4 ); + +creplicate( x.length, 2, x, 1, out, 1 ); +// out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **k**: number of times to replicate each element. +- **x**: input [`Complex64Array`][@stdlib/array/complex64]. +- **strideX**: stride length for `x`. +- **out**: output [`Complex64Array`][@stdlib/array/complex64]. +- **strideOut**: stride length for `out`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to replicate every other element: + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out = new Complex64Array( 4 ); + +creplicate( 2, 2, x, 2, out, 1 ); +// out => [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +// Initial arrays... +var x0 = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out0 = new Complex64Array( 3 ); + +// Create offset views... +var x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var out1 = new Complex64Array( out0.buffer, out0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +creplicate( 1, 2, x1, 2, out1, 1 ); +// out0 => [ 0.0, 0.0, 3.0, 4.0, 3.0, 4.0 ] +``` + +#### creplicate.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) + +Replicates each element in a single-precision complex floating-point strided array a specified number of times using alternative indexing semantics. + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var out = new Complex64Array( 4 ); + +creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +// out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetOut**: starting index for `out`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, offset parameters support indexing semantics based on starting indices. For example, to replicate every element starting from the second element and to store in the last `N*k` elements of the output array starting from the last element: + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var out = new Complex64Array( 2 ); + +creplicate.ndarray( 1, 2, x, 1, 1, out, 1, 0 ); +// out => [ 3.0, 4.0, 3.0, 4.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0` or `k <= 0`, both functions return `out` unchanged. +- Both functions assume that the output array supports `N*k` indexed elements. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var creplicate = require( '@stdlib/blas/ext/base/creplicate' ); + +var xbuf = discreteUniform( 10, -100, 100, { + 'dtype': 'float32' +}); +var x = new Complex64Array( xbuf.buffer ); +console.log( x ); + +var out = new Complex64Array( x.length * 5 ); +console.log( out ); + +creplicate( x.length, 5, x, 1, out, 1 ); +console.log( out ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/creplicate.h" +``` + +#### stdlib_strided_creplicate( N, k, \*X, strideX, \*Out, strideOut ) + +Replicates each element in a single-precision complex floating-point strided array a specified number of times. + +```c +#include "stdlib/complex/float32/ctor.h" + +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; +float out[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + +stdlib_strided_creplicate( 2, 2, (stdlib_complex64_t *)x, 1, (stdlib_complex64_t *)out, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **k**: `[in] CBLAS_INT` number of times to replicate each element. +- **X**: `[in] stdlib_complex64_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Out**: `[out] stdlib_complex64_t*` output array. +- **strideOut**: `[in] CBLAS_INT` stride length for `Out`. + +```c +void stdlib_strided_creplicate( const CBLAS_INT N, const CBLAS_INT k, const stdlib_complex64_t *X, const CBLAS_INT strideX, stdlib_complex64_t *Out, const CBLAS_INT strideOut ); +``` + + + +#### stdlib_strided_creplicate_ndarray( N, k, \*X, strideX, offsetX, \*Out, strideOut, offsetOut ) + + + +Replicates each element in a single-precision complex floating-point strided array a specified number of times using alternative indexing semantics. + +```c +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; +float out[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + +stdlib_strided_creplicate_ndarray( 2, 2, (stdlib_complex64_t *)x, 1, 0, (stdlib_complex64_t *)out, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **k**: `[in] CBLAS_INT` number of times to replicate each element. +- **X**: `[in] stdlib_complex64_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Out**: `[out] stdlib_complex64_t*` output array. +- **strideOut**: `[in] CBLAS_INT` stride length for `Out`. +- **offsetOut**: `[in] CBLAS_INT` starting index for `Out`. + +```c +void stdlib_strided_creplicate_ndarray( const CBLAS_INT N, const CBLAS_INT k, const stdlib_complex64_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex64_t *Out, const CBLAS_INT strideOut, const CBLAS_INT offsetOut ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/creplicate.h" +#include "stdlib/complex/float32/ctor.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; + float out[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + + // Specify the number of indexed elements: + const int N = 2; + + // Specify the number of times to replicate each element: + const int k = 2; + + // Specify strides: + const int strideX = 1; + const int strideOut = 1; + + // Replicate each element: + stdlib_strided_creplicate( N, k, (stdlib_complex64_t *)x, strideX, (stdlib_complex64_t *)out, strideOut ); + + // Print the results: + for ( int i = 0; i < 8; i++ ) { + printf( "out[ %i ] = %f\n", i, out[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.js new file mode 100644 index 000000000000..6aa6748672c4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var Float32Array = require( '@stdlib/array/float32' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var creplicate = require( './../lib/creplicate.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var obuf; + var xbuf; + var out; + var x; + + xbuf = uniform( len * 2, -100.0, 100.0, options ); + obuf = new Float32Array( len * 4 ); + x = new Complex64Array( xbuf.buffer ); + out = new Complex64Array( obuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + xbuf[ 0 ] += 1.0; + creplicate( x.length, 2, x, 1, out, 1 ); + if ( isnanf( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.native.js new file mode 100644 index 000000000000..d9e567b5ef9c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.native.js @@ -0,0 +1,119 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Float32Array = require( '@stdlib/array/float32' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var creplicate = tryRequire( resolve( __dirname, './../lib/creplicate.native.js' ) ); +var opts = { + 'skip': ( creplicate instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var obuf; + var xbuf; + var out; + var x; + + xbuf = uniform( len * 2, -100.0, 100.0, options ); + obuf = new Float32Array( len * 4 ); + x = new Complex64Array( xbuf.buffer ); + out = new Complex64Array( obuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + xbuf[ 0 ] += 1.0; + creplicate( x.length, 2, x, 1, out, 1 ); + if ( isnanf( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..84b236ca7d8a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.ndarray.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Float32Array = require( '@stdlib/array/float32' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var creplicate = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var obuf; + var xbuf; + var out; + var x; + + xbuf = uniform( len * 2, -100.0, 100.0, options ); + obuf = new Float32Array( len * 4 ); + x = new Complex64Array( xbuf.buffer ); + out = new Complex64Array( obuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + xbuf[ 0 ] += 1.0; + creplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + if ( isnanf( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..61d69509cbf6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,119 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Float32Array = require( '@stdlib/array/float32' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var creplicate = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( creplicate instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var obuf; + var xbuf; + var out; + var x; + + xbuf = uniform( len * 2, -100.0, 100.0, options ); + obuf = new Float32Array( len * 4 ); + x = new Complex64Array( xbuf.buffer ); + out = new Complex64Array( obuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + xbuf[ 0 ] += 1.0; + creplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + if ( isnanf( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/creplicate/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..1f664aac213f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/benchmark/c/benchmark.length.c @@ -0,0 +1,206 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/creplicate.h" +#include "stdlib/complex/float32/ctor.h" +#include +#include +#include +#include +#include + +#define NAME "creplicate" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length (number of complex elements) +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + float *out; + float *x; + double t; + int i; + + x = (float *) malloc( len * 2 * sizeof( float ) ); + out = (float *) malloc( len * 4 * sizeof( float ) ); + for ( i = 0; i < len * 2; i++ ) { + x[ i ] = ( rand_float()*99.0f ) + 1.0f; + } + for ( i = 0; i < len * 4; i++ ) { + out[ i ] = 0.0f; + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ 0 ] += 1.0f; + stdlib_strided_creplicate( len, 2, (stdlib_complex64_t *)x, 1, (stdlib_complex64_t *)out, 1 ); + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + } + free( x ); + free( out ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length (number of complex elements) +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + float *out; + float *x; + double t; + int i; + + x = (float *) malloc( len * 2 * sizeof( float ) ); + out = (float *) malloc( len * 4 * sizeof( float ) ); + for ( i = 0; i < len * 2; i++ ) { + x[ i ] = ( rand_float()*99.0f ) + 1.0f; + } + for ( i = 0; i < len * 4; i++ ) { + out[ i ] = 0.0f; + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ 0 ] += 1.0f; + stdlib_strided_creplicate_ndarray( len, 2, (stdlib_complex64_t *)x, 1, 0, (stdlib_complex64_t *)out, 1, 0 ); + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + } + free( x ); + free( out ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/creplicate/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/creplicate/docs/repl.txt new file mode 100644 index 000000000000..d65688b256e3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/docs/repl.txt @@ -0,0 +1,118 @@ + +{{alias}}( N, k, x, strideX, out, strideOut ) + Replicates each element in a single-precision complex floating-point strided + array a specified number of times. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0` or `k <= 0`, the function returns `out` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + k: integer + Number of times to replicate each element. + + x: Complex64Array + Input array. + + strideX: integer + Stride length for `x`. + + out: Complex64Array + Output array. + + strideOut: integer + Stride length for `out`. + + Returns + ------- + out: Complex64Array + Output array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/complex64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var out = new {{alias:@stdlib/array/complex64}}( 4 ); + > {{alias}}( x.length, 2, x, 1, out, 1 ) + [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/complex64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > out = new {{alias:@stdlib/array/complex64}}( 4 ); + > {{alias}}( 2, 2, x, 2, out, 1 ) + [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/complex64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > var out0 = new {{alias:@stdlib/array/complex64}}( 3 ); + > var x1 = new {{alias:@stdlib/array/complex64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var out1 = new {{alias:@stdlib/array/complex64}}( out0.buffer, out0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 1, 2, x1, 2, out1, 1 ) + [ 3.0, 4.0, 3.0, 4.0 ] + > out0 + [ 0.0, 0.0, 3.0, 4.0, 3.0, 4.0 ] + + +{{alias}}.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) + Replicates each element in a single-precision complex floating-point strided + array a specified number of times using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + k: integer + Number of times to replicate each element. + + x: Complex64Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + out: Complex64Array + Output array. + + strideOut: integer + Stride length for `out`. + + offsetOut: integer + Starting index for `out`. + + Returns + ------- + out: Complex64Array + Output array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/complex64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var out = new {{alias:@stdlib/array/complex64}}( 4 ); + > {{alias}}.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ) + [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0 ] + + // Advanced indexing: + > x = new {{alias:@stdlib/array/complex64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > out = new {{alias:@stdlib/array/complex64}}( 2 ); + > {{alias}}.ndarray( 1, 2, x, 1, 1, out, 1, 0 ) + [ 3.0, 4.0, 3.0, 4.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/creplicate/docs/types/index.d.ts new file mode 100644 index 000000000000..25bd9de1f9eb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/docs/types/index.d.ts @@ -0,0 +1,110 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/// + +// TypeScript Version: 4.1 + +import { Complex64Array } from '@stdlib/types/array'; + +/** +* Interface describing `creplicate`. +*/ +interface Routine { + /** + * Replicates each element in a single-precision complex floating-point strided array a specified number of times. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var out = new Complex64Array( 6 ); + * + * creplicate( x.length, 2, x, 1, out, 1 ); + * // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] + */ + ( N: number, k: number, x: Complex64Array, strideX: number, out: Complex64Array, strideOut: number ): Complex64Array; + + /** + * Replicates each element in a single-precision complex floating-point strided array a specified number of times using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @param offsetOut - starting index for `out` + * @returns output array + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var out = new Complex64Array( 6 ); + * + * creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); + * // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] + */ + ndarray( N: number, k: number, x: Complex64Array, strideX: number, offsetX: number, out: Complex64Array, strideOut: number, offsetOut: number ): Complex64Array; +} + +/** +* Replicates each element in a single-precision complex floating-point strided array a specified number of times. +* +* @param N - number of indexed elements +* @param k - number of times to replicate each element +* @param x - input array +* @param strideX - stride length for `x` +* @param out - output array +* @param strideOut - stride length for `out` +* @returns output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex64Array( 6 ); +* +* creplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex64Array( 6 ); +* +* creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +declare var creplicate: Routine; + + +// EXPORTS // + +export = creplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/creplicate/docs/types/test.ts new file mode 100644 index 000000000000..2b3cd2bb5ed0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/docs/types/test.ts @@ -0,0 +1,281 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import Complex64Array = require( '@stdlib/array/complex64' ); +import creplicate = require( './index' ); + + +// TESTS // + +// The function returns a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate( x.length, 2, x, 1, out, 1 ); // $ExpectType Complex64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate( '10', 2, x, 1, out, 1 ); // $ExpectError + creplicate( true, 2, x, 1, out, 1 ); // $ExpectError + creplicate( false, 2, x, 1, out, 1 ); // $ExpectError + creplicate( null, 2, x, 1, out, 1 ); // $ExpectError + creplicate( undefined, 2, x, 1, out, 1 ); // $ExpectError + creplicate( [], 2, x, 1, out, 1 ); // $ExpectError + creplicate( {}, 2, x, 1, out, 1 ); // $ExpectError + creplicate( ( x: number ): number => x, 2, x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate( x.length, '10', x, 1, out, 1 ); // $ExpectError + creplicate( x.length, true, x, 1, out, 1 ); // $ExpectError + creplicate( x.length, false, x, 1, out, 1 ); // $ExpectError + creplicate( x.length, null, x, 1, out, 1 ); // $ExpectError + creplicate( x.length, undefined, x, 1, out, 1 ); // $ExpectError + creplicate( x.length, [], x, 1, out, 1 ); // $ExpectError + creplicate( x.length, {}, x, 1, out, 1 ); // $ExpectError + creplicate( x.length, ( x: number ): number => x, x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate( x.length, 2, 10, 1, out, 1 ); // $ExpectError + creplicate( x.length, 2, '10', 1, out, 1 ); // $ExpectError + creplicate( x.length, 2, true, 1, out, 1 ); // $ExpectError + creplicate( x.length, 2, false, 1, out, 1 ); // $ExpectError + creplicate( x.length, 2, null, 1, out, 1 ); // $ExpectError + creplicate( x.length, 2, undefined, 1, out, 1 ); // $ExpectError + creplicate( x.length, 2, [ '1' ], 1, out, 1 ); // $ExpectError + creplicate( x.length, 2, {}, 1, out, 1 ); // $ExpectError + creplicate( x.length, 2, ( x: number ): number => x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate( x.length, 2, x, '10', out, 1 ); // $ExpectError + creplicate( x.length, 2, x, true, out, 1 ); // $ExpectError + creplicate( x.length, 2, x, false, out, 1 ); // $ExpectError + creplicate( x.length, 2, x, null, out, 1 ); // $ExpectError + creplicate( x.length, 2, x, undefined, out, 1 ); // $ExpectError + creplicate( x.length, 2, x, [], out, 1 ); // $ExpectError + creplicate( x.length, 2, x, {}, out, 1 ); // $ExpectError + creplicate( x.length, 2, x, ( x: number ): number => x, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a Complex64Array... +{ + const x = new Complex64Array( 10 ); + + creplicate( x.length, 2, x, 1, 10, 1 ); // $ExpectError + creplicate( x.length, 2, x, 1, '10', 1 ); // $ExpectError + creplicate( x.length, 2, x, 1, true, 1 ); // $ExpectError + creplicate( x.length, 2, x, 1, false, 1 ); // $ExpectError + creplicate( x.length, 2, x, 1, null, 1 ); // $ExpectError + creplicate( x.length, 2, x, 1, undefined, 1 ); // $ExpectError + creplicate( x.length, 2, x, 1, [ '1' ], 1 ); // $ExpectError + creplicate( x.length, 2, x, 1, {}, 1 ); // $ExpectError + creplicate( x.length, 2, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate( x.length, 2, x, 1, out, '10' ); // $ExpectError + creplicate( x.length, 2, x, 1, out, true ); // $ExpectError + creplicate( x.length, 2, x, 1, out, false ); // $ExpectError + creplicate( x.length, 2, x, 1, out, null ); // $ExpectError + creplicate( x.length, 2, x, 1, out, undefined ); // $ExpectError + creplicate( x.length, 2, x, 1, out, [] ); // $ExpectError + creplicate( x.length, 2, x, 1, out, {} ); // $ExpectError + creplicate( x.length, 2, x, 1, out, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate(); // $ExpectError + creplicate( x.length ); // $ExpectError + creplicate( x.length, 2 ); // $ExpectError + creplicate( x.length, 2, x ); // $ExpectError + creplicate( x.length, 2, x, 1 ); // $ExpectError + creplicate( x.length, 2, x, 1, out ); // $ExpectError + creplicate( x.length, 2, x, 1, out, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); // $ExpectType Complex64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate.ndarray( '10', 2, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( true, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( false, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( null, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( undefined, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( [], 2, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( {}, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( ( x: number ): number => x, 2, x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate.ndarray( x.length, '10', x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, true, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, false, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, null, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, undefined, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, [], x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, {}, x, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, ( x: number ): number => x, x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate.ndarray( x.length, 2, 10, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, '10', 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, true, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, false, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, null, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, undefined, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, [ '1' ], 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, {}, 1, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, ( x: number ): number => x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate.ndarray( x.length, 2, x, '10', 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, true, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, false, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, null, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, undefined, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, [], 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, {}, 0, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, ( x: number ): number => x, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate.ndarray( x.length, 2, x, 1, '10', out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, true, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, false, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, null, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, undefined, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, [], out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, {}, out, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, ( x: number ): number => x, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a Complex64Array... +{ + const x = new Complex64Array( 10 ); + + creplicate.ndarray( x.length, 2, x, 1, 0, 10, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, '10', 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, true, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, false, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, null, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, undefined, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, {}, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate.ndarray( x.length, 2, x, 1, 0, out, '10', 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, true, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, false, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, null, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, undefined, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, [], 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, {}, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, '10' ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, true ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, false ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, null ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, undefined ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, [] ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, {} ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Complex64Array( 10 ); + const out = new Complex64Array( 20 ); + + creplicate.ndarray(); // $ExpectError + creplicate.ndarray( x.length ); // $ExpectError + creplicate.ndarray( x.length, 2 ); // $ExpectError + creplicate.ndarray( x.length, 2, x ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1 ); // $ExpectError + creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/creplicate/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/creplicate/examples/c/example.c new file mode 100644 index 000000000000..de5195e8b32d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/examples/c/example.c @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/creplicate.h" +#include "stdlib/complex/float32/ctor.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; + float out[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + + // Specify the number of indexed elements: + const int N = 2; + + // Specify the number of times to replicate each element: + const int k = 2; + + // Specify strides: + const int strideX = 1; + const int strideOut = 1; + + // Replicate each element: + stdlib_strided_creplicate( N, k, (stdlib_complex64_t *)x, strideX, (stdlib_complex64_t *)out, strideOut ); + + // Print the results: + for ( int i = 0; i < 8; i++ ) { + printf( "out[ %i ] = %f\n", i, out[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/examples/index.js new file mode 100644 index 000000000000..4366db3b08ff --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var creplicate = require( './../lib' ); + +var xbuf = discreteUniform( 10, -100, 100, { + 'dtype': 'float32' +}); +var x = new Complex64Array( xbuf.buffer ); +console.log( x ); + +var out = new Complex64Array( x.length * 5 ); +console.log( out ); + +creplicate( x.length, 5, x, 1, out, 1 ); +console.log( out ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/creplicate/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +function creplicate( N, k, x, strideX, out, strideOut ) { + var ox = stride2offset( N, strideX ); + var oo = stride2offset( N * k, strideOut ); + return ndarray( N, k, x, strideX, ox, out, strideOut, oo ); +} + + +// EXPORTS // + +module.exports = creplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/creplicate.native.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/creplicate.native.js new file mode 100644 index 000000000000..f233a058189e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/creplicate.native.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replicates each element in a single-precision complex floating-point strided array a specified number of times. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Complex64Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {Complex64Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @returns {Complex64Array} output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex64Array( 6 ); +* +* creplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +function creplicate( N, k, x, strideX, out, strideOut ) { + var viewOut; + var viewX; + + viewX = reinterpret( x, 0 ); + viewOut = reinterpret( out, 0 ); + addon( N, k, viewX, strideX, viewOut, strideOut ); + return out; +} + + +// EXPORTS // + +module.exports = creplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/index.js new file mode 100644 index 000000000000..e4b688c3419c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/index.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replicate each element in a single-precision complex floating-point strided array a specified number of times. +* +* @module @stdlib/blas/ext/base/creplicate +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var creplicate = require( '@stdlib/blas/ext/base/creplicate' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex64Array( 6 ); +* +* creplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var creplicate = require( '@stdlib/blas/ext/base/creplicate' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex64Array( 6 ); +* +* creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var creplicate; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + creplicate = main; +} else { + creplicate = tmp; +} + + +// EXPORTS // + +module.exports = creplicate; + +// exports: { "ndarray": "creplicate.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/main.js new file mode 100644 index 000000000000..af3ffb36e18e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var creplicate = require( './creplicate.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( creplicate, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = creplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/native.js new file mode 100644 index 000000000000..bc58eaa44c07 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var creplicate = require( './creplicate.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( creplicate, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = creplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/ndarray.js new file mode 100644 index 000000000000..ce1b37a1ad5b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/ndarray.js @@ -0,0 +1,85 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); + + +// MAIN // + +/** +* Replicates each element in a single-precision complex floating-point strided array a specified number of times using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Complex64Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Complex64Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @param {NonNegativeInteger} offsetOut - starting index for `out` +* @returns {Complex64Array} output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex64Array( 6 ); +* +* creplicate( 3, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +function creplicate( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) { + var viewX; + var viewO; + var re; + var im; + var ix; + var io; + var i; + var j; + + if ( N <= 0 || k <= 0 ) { + return out; + } + viewX = reinterpret( x, 0 ); + viewO = reinterpret( out, 0 ); + ix = offsetX * 2; + io = offsetOut * 2; + strideX *= 2; + strideOut *= 2; + for ( i = 0; i < N; i++ ) { + re = viewX[ ix ]; + im = viewX[ ix+1 ]; + for ( j = 0; j < k; j++ ) { + viewO[ io ] = re; + viewO[ io+1 ] = im; + io += strideOut; + } + ix += strideX; + } + return out; +} + + +// EXPORTS // + +module.exports = creplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/ndarray.native.js new file mode 100644 index 000000000000..597dedacc3f0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/lib/ndarray.native.js @@ -0,0 +1,64 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replicates each element in a single-precision complex floating-point strided array a specified number of times using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Complex64Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Complex64Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @param {NonNegativeInteger} offsetOut - starting index for `out` +* @returns {Complex64Array} output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex64Array( 6 ); +* +* creplicate( 3, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +function creplicate( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) { + var viewOut; + var viewX; + + viewX = reinterpret( x, 0 ); + viewOut = reinterpret( out, 0 ); + addon.ndarray( N, k, viewX, strideX, offsetX, viewOut, strideOut, offsetOut ); + return out; +} + + +// EXPORTS // + +module.exports = creplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/creplicate/manifest.json new file mode 100644 index 000000000000..a659b6360e05 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/manifest.json @@ -0,0 +1,81 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-complex64array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/package.json b/lib/node_modules/@stdlib/blas/ext/base/creplicate/package.json new file mode 100644 index 000000000000..28abc3507129 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/package.json @@ -0,0 +1,77 @@ +{ + "name": "@stdlib/blas/ext/base/creplicate", + "version": "0.0.0", + "description": "Replicate each element in a single-precision complex floating-point strided array a specified number of times.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "replicate", + "repeat", + "copy", + "strided", + "array", + "ndarray", + "complex", + "complex64", + "complex64array", + "single-precision", + "creplicate" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/creplicate/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/creplicate/src/addon.c new file mode 100644 index 000000000000..a14c2c9b6ec7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/src/addon.c @@ -0,0 +1,68 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/creplicate.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/complex/float32/ctor.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_complex64array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, k, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideOut, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, Out, N * k, strideOut, argv, 4 ); + API_SUFFIX(stdlib_strided_creplicate)( N, k, (stdlib_complex64_t *)X, strideX, (stdlib_complex64_t *)Out, strideOut ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 8 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, k, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, strideOut, argv, 6 ); + STDLIB_NAPI_ARGV_INT64( env, offsetOut, argv, 7 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, Out, N * k, strideOut, argv, 5 ); + API_SUFFIX(stdlib_strided_creplicate_ndarray)( N, k, (stdlib_complex64_t *)X, strideX, offsetX, (stdlib_complex64_t *)Out, strideOut, offsetOut ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/creplicate/src/main.c new file mode 100644 index 000000000000..ef478e50cf12 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/src/main.c @@ -0,0 +1,73 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/creplicate.h" +#include "stdlib/complex/float32/ctor.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Replicates each element in a single-precision complex floating-point strided array a specified number of times. +* +* @param N number of indexed elements +* @param k number of times to replicate each element +* @param X input array +* @param strideX stride length for X +* @param Out output array +* @param strideOut stride length for Out +*/ +void API_SUFFIX(stdlib_strided_creplicate)( const CBLAS_INT N, const CBLAS_INT k, const stdlib_complex64_t *X, const CBLAS_INT strideX, stdlib_complex64_t *Out, const CBLAS_INT strideOut ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oo = stdlib_strided_stride2offset( N * k, strideOut ); + API_SUFFIX(stdlib_strided_creplicate_ndarray)( N, k, X, strideX, ox, Out, strideOut, oo ); +} + +/** +* Replicates each element in a single-precision complex floating-point strided array a specified number of times using alternative indexing semantics. +* +* @param N number of indexed elements +* @param k number of times to replicate each element +* @param X input array +* @param strideX stride length for X +* @param offsetX starting index for X +* @param Out output array +* @param strideOut stride length for Out +* @param offsetOut starting index for Out +*/ +void API_SUFFIX(stdlib_strided_creplicate_ndarray)( const CBLAS_INT N, const CBLAS_INT k, const stdlib_complex64_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex64_t *Out, const CBLAS_INT strideOut, const CBLAS_INT offsetOut ) { + stdlib_complex64_t v; + CBLAS_INT ix; + CBLAS_INT io; + CBLAS_INT i; + CBLAS_INT j; + + if ( N <= 0 || k <= 0 ) { + return; + } + ix = offsetX; + io = offsetOut; + for ( i = 0; i < N; i++ ) { + v = X[ ix ]; + for ( j = 0; j < k; j++ ) { + Out[ io ] = v; + io += strideOut; + } + ix += strideX; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.creplicate.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.creplicate.js new file mode 100644 index 000000000000..981222d602bd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.creplicate.js @@ -0,0 +1,501 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var creplicate = require( './../lib/creplicate.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof creplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( creplicate.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array( 6 ); + + creplicate( x.length, 2, x, 1, out, 1 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( x.length, 3, x, 1, out, 1 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 3 ); + + creplicate( x.length, 1, x, 1, out, 1 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 5.0, 6.0 ] ); + out = new Complex64Array( 3 ); + + creplicate( 1, 3, x, 1, out, 1 ); + expected = new Complex64Array( [ 5.0, 6.0, 5.0, 6.0, 5.0, 6.0 ] ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var v; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array( 6 ); + + v = creplicate( x.length, 2, x, 1, out, 1 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + creplicate( -1, 2, x, 1, out, 1 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + creplicate( 0, 2, x, 1, out, 1 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + creplicate( x.length, -1, x, 1, out, 1 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + creplicate( x.length, 0, x, 1, out, 1 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + creplicate( 3, 2, x, 2, out, 1 ); + + expected = new Complex64Array( [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0, 9.0, 10.0, 9.0, 10.0 ] ); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + creplicate( 3, 2, x, 1, out, 2 ); + + expected = new Complex64Array([ + 1.0, + 2.0, + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + creplicate( 3, 2, x, -2, out, -1 ); + + expected = new Complex64Array( [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0, 9.0, 10.0, 9.0, 10.0 ] ); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + creplicate( 3, 2, x, 2, out, -1 ); + + expected = new Complex64Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var out0; + var out1; + var x0; + var x1; + + // Initial arrays... + x0 = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0 + ]); + out0 = new Complex64Array( 9 ); + + // Create offset views... + x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + out1 = new Complex64Array( out0.buffer, out0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + creplicate( 3, 2, x1, 2, out1, 1 ); + expected = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 3.0, + 4.0, + 3.0, + 4.0, + 7.0, + 8.0, + 7.0, + 8.0, + 11.0, + 12.0, + 11.0, + 12.0 + ]); + + t.strictEqual( isSameComplex64Array( out0, expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.creplicate.native.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.creplicate.native.js new file mode 100644 index 000000000000..85ab17118630 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.creplicate.native.js @@ -0,0 +1,497 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); + + +// VARIABLES // + +var creplicate = tryRequire( resolve( __dirname, './../lib/creplicate.native.js' ) ); +var opts = { + 'skip': ( creplicate instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof creplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( creplicate.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array( 6 ); + + creplicate( x.length, 2, x, 1, out, 1 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( x.length, 3, x, 1, out, 1 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 3 ); + + creplicate( x.length, 1, x, 1, out, 1 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 5.0, 6.0 ] ); + out = new Complex64Array( 3 ); + + creplicate( 1, 3, x, 1, out, 1 ); + expected = new Complex64Array( [ 5.0, 6.0, 5.0, 6.0, 5.0, 6.0 ] ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var v; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array( 6 ); + + v = creplicate( x.length, 2, x, 1, out, 1 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + creplicate( -1, 2, x, 1, out, 1 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + creplicate( 0, 2, x, 1, out, 1 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + creplicate( x.length, -1, x, 1, out, 1 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + creplicate( x.length, 0, x, 1, out, 1 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + creplicate( 3, 2, x, 2, out, 1 ); + + expected = new Complex64Array( [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0, 9.0, 10.0, 9.0, 10.0 ] ); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + creplicate( 3, 2, x, 1, out, 2 ); + + expected = new Complex64Array([ + 1.0, + 2.0, + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + creplicate( 3, 2, x, -2, out, -1 ); + + expected = new Complex64Array( [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0, 9.0, 10.0, 9.0, 10.0 ] ); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + creplicate( 3, 2, x, 2, out, -1 ); + + expected = new Complex64Array( [ 9.0, 10.0, 9.0, 10.0, 5.0, 6.0, 5.0, 6.0, 1.0, 2.0, 1.0, 2.0 ] ); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var out0; + var out1; + var x0; + var x1; + + // Initial arrays... + x0 = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0 + ]); + out0 = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + // Create offset views... + x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + out1 = new Complex64Array( out0.buffer, out0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + creplicate( 3, 2, x1, 2, out1, 1 ); + expected = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 4.0, 3.0, 4.0, 7.0, 8.0, 7.0, 8.0, 11.0, 12.0, 11.0, 12.0 ] ); + + t.strictEqual( isSameComplex64Array( out0, expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.js new file mode 100644 index 000000000000..790f2915ec92 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var creplicate = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof creplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof creplicate.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var creplicate = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( creplicate, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var creplicate; + var main; + + main = require( './../lib/creplicate.js' ); + + creplicate = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( creplicate, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.ndarray.js new file mode 100644 index 000000000000..097260207283 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.ndarray.js @@ -0,0 +1,542 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var creplicate = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof creplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', function test( t ) { + t.strictEqual( creplicate.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array( 6 ); + + creplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( x.length, 3, x, 1, 0, out, 1, 0 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 3 ); + + creplicate( x.length, 1, x, 1, 0, out, 1, 0 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 5.0, 6.0 ] ); + out = new Complex64Array( 3 ); + + creplicate( 1, 3, x, 1, 0, out, 1, 0 ); + expected = new Complex64Array([ + 5.0, + 6.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var v; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array( 6 ); + + v = creplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + creplicate( -1, 2, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + creplicate( 0, 2, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + creplicate( x.length, -1, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + creplicate( x.length, 0, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( 3, 2, x, 2, 0, out, 1, 0 ); + + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 5.0, + 6.0, + 5.0, + 6.0, + 9.0, + 10.0, + 9.0, + 10.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 12 ); + + creplicate( 3, 2, x, 1, 0, out, 2, 0 ); + + expected = new Complex64Array([ + 1.0, + 2.0, + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( 3, 2, x, -2, 4, out, 1, 0 ); + + expected = new Complex64Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 7.0, + 8.0 + ]); + out = new Complex64Array( 8 ); + + creplicate( 4, 2, x, 2, 1, out, 1, 0 ); + + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 8.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output offset', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 8 ); + + creplicate( 3, 2, x, 1, 0, out, 1, 2 ); + + expected = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a zero `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( 3, 2, x, 0, 1, out, 1, 0 ); + + expected = new Complex64Array([ + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( 3, 2, x, 2, 0, out, -1, 5 ); + + expected = new Complex64Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.ndarray.native.js new file mode 100644 index 000000000000..7723ed53b811 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/creplicate/test/test.ndarray.native.js @@ -0,0 +1,551 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); + + +// VARIABLES // + +var creplicate = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( creplicate instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof creplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', opts, function test( t ) { + t.strictEqual( creplicate.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array( 6 ); + + creplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( x.length, 3, x, 1, 0, out, 1, 0 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 3 ); + + creplicate( x.length, 1, x, 1, 0, out, 1, 0 ); + expected = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 5.0, 6.0 ] ); + out = new Complex64Array( 3 ); + + creplicate( 1, 3, x, 1, 0, out, 1, 0 ); + expected = new Complex64Array([ + 5.0, + 6.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var v; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array( 6 ); + + v = creplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + creplicate( -1, 2, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + creplicate( 0, 2, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex64Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + creplicate( x.length, -1, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + creplicate( x.length, 0, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( 3, 2, x, 2, 0, out, 1, 0 ); + + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 5.0, + 6.0, + 5.0, + 6.0, + 9.0, + 10.0, + 9.0, + 10.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 12 ); + + creplicate( 3, 2, x, 1, 0, out, 2, 0 ); + + expected = new Complex64Array([ + 1.0, + 2.0, + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( 3, 2, x, -2, 4, out, 1, 0 ); + + expected = new Complex64Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 7.0, + 8.0 + ]); + out = new Complex64Array( 8 ); + + creplicate( 4, 2, x, 2, 1, out, 1, 0 ); + + expected = new Complex64Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 8.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output offset', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 8 ); + + creplicate( 3, 2, x, 1, 0, out, 1, 2 ); + + expected = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a zero `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( 3, 2, x, 0, 1, out, 1, 0 ); + + expected = new Complex64Array([ + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex64Array( 6 ); + + creplicate( 3, 2, x, 2, 0, out, -1, 5 ); + + expected = new Complex64Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex64Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/README.md b/lib/node_modules/@stdlib/blas/ext/base/cwax/README.md new file mode 100644 index 000000000000..d6bf9bdee73a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/README.md @@ -0,0 +1,374 @@ + + +# cwax + +> Multiply each element in a single-precision complex floating-point strided array `x` by a scalar constant and assign the results to elements in a single-precision complex floating-point strided array `w`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{w} = \alpha \cdot \mathbf{x} +``` + + + +This API is complementary to the package [`@stdlib/blas/base/cscal`][@stdlib/blas/base/cscal], which performs an in-place update. + +
+ + + +
+ +## Usage + +```javascript +var cwax = require( '@stdlib/blas/ext/base/cwax' ); +``` + +#### cwax( N, alpha, x, strideX, w, strideW ) + +Multiplies each element in a single-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `w`. + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +var alpha = new Complex64( 5.0, 3.0 ); + +cwax( x.length, alpha, x, 1, w, 1 ); +// w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **alpha**: scalar constant. +- **x**: input [`Complex64Array`][@stdlib/array/complex64]. +- **strideX**: stride length for `x`. +- **w**: output [`Complex64Array`][@stdlib/array/complex64]. +- **strideW**: stride length for `w`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to multiply every other element in `x` by `alpha` and assign the results to every other element in `w`: + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +var alpha = new Complex64( 5.0, 3.0 ); + +cwax( 2, alpha, x, 2, w, 2 ); +// w => [ -1.0, 13.0, 0.0, 0.0, 7.0, 45.0, 0.0, 0.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); + +// Initial arrays... +var x0 = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); +var w0 = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +// Create offset views... +var x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var w1 = new Complex64Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +var alpha = new Complex64( 5.0, 3.0 ); + +cwax( 3, alpha, x1, 1, w1, 1 ); +// w0 => [ 0.0, 0.0, 0.0, 0.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +``` + +#### cwax.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) + +Multiplies each element in a single-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `w` using alternative indexing semantics. + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +var alpha = new Complex64( 5.0, 3.0 ); + +cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); +// w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetW**: starting index for `w`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to multiply the last three elements of `x` by `alpha` and assign the results to the last three elements of `w`: + + + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); +var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +var alpha = new Complex64( 5.0, 3.0 ); + +cwax.ndarray( 3, alpha, x, 1, x.length-3, w, 1, w.length-3 ); +// w => [ 0.0, 0.0, 0.0, 0.0, 7.0, 45.0, 11.0, 61.0, 15.0, 77.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `w` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var logEach = require( '@stdlib/console/log-each' ); +var cwax = require( '@stdlib/blas/ext/base/cwax' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float32' +}); +var wbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float32' +}); +var x = new Complex64Array( xbuf.buffer ); +var w = new Complex64Array( wbuf.buffer ); +var alpha = new Complex64( 5.0, 3.0 ); + +cwax( x.length, alpha, x, 1, w, 1 ); +logEach( '%s', w ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/cwax.h" +``` + +#### stdlib_strided_cwax( N, alpha, \*X, strideX, \*W, strideW ) + +Multiplies each element in a single-precision complex floating-point strided array `X` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `W`. + +```c +#include "stdlib/complex/float32/ctor.h" + +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; +float w[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; +const stdlib_complex64_t alpha = stdlib_complex64( 5.0f, 3.0f ); + +stdlib_strided_cwax( 4, alpha, (const stdlib_complex64_t *)x, 1, (stdlib_complex64_t *)w, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] stdlib_complex64_t` scalar constant. +- **X**: `[in] stdlib_complex64_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **W**: `[out] stdlib_complex64_t*` output array. +- **strideW**: `[in] CBLAS_INT` stride length for `W`. + +```c +void stdlib_strided_cwax( const CBLAS_INT N, const stdlib_complex64_t alpha, const stdlib_complex64_t *X, const CBLAS_INT strideX, stdlib_complex64_t *W, const CBLAS_INT strideW ); +``` + + + +#### stdlib_strided_cwax_ndarray( N, alpha, \*X, strideX, offsetX, \*W, strideW, offsetW ) + + + +Multiplies each element in a single-precision complex floating-point strided array `X` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `W` using alternative indexing semantics. + +```c +#include "stdlib/complex/float32/ctor.h" + +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; +float w[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; +const stdlib_complex64_t alpha = stdlib_complex64( 5.0f, 3.0f ); + +stdlib_strided_cwax_ndarray( 4, alpha, (const stdlib_complex64_t *)x, 1, 0, (stdlib_complex64_t *)w, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] stdlib_complex64_t` scalar constant. +- **X**: `[in] stdlib_complex64_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **W**: `[out] stdlib_complex64_t*` output array. +- **strideW**: `[in] CBLAS_INT` stride length for `W`. +- **offsetW**: `[in] CBLAS_INT` starting index for `W`. + +```c +void stdlib_strided_cwax_ndarray( const CBLAS_INT N, const stdlib_complex64_t alpha, const stdlib_complex64_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex64_t *W, const CBLAS_INT strideW, const CBLAS_INT offsetW ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/cwax.h" +#include "stdlib/complex/float32/ctor.h" +#include "stdlib/complex/float32/real.h" +#include "stdlib/complex/float32/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex64_t x[] = { + stdlib_complex64( 1.0f, 2.0f ), + stdlib_complex64( 3.0f, 4.0f ), + stdlib_complex64( 5.0f, 6.0f ), + stdlib_complex64( 7.0f, 8.0f ) + }; + stdlib_complex64_t w[] = { + stdlib_complex64( 0.0f, 0.0f ), + stdlib_complex64( 0.0f, 0.0f ), + stdlib_complex64( 0.0f, 0.0f ), + stdlib_complex64( 0.0f, 0.0f ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideW = 1; + + // Define a scalar constant: + stdlib_complex64_t alpha = stdlib_complex64( 5.0f, 3.0f ); + + // Multiply each element in `x` by a constant and assign to `w`: + stdlib_strided_cwax( N, alpha, x, strideX, w, strideW ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "w[ %i ] = %f + %fi\n", i, stdlib_complex64_real( w[ i ] ), stdlib_complex64_imag( w[ i ] ) ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.js new file mode 100644 index 000000000000..45af8a63661e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.js @@ -0,0 +1,116 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var cwax = require( './../lib/cwax.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var xbuf; + var wbuf; + var x; + var w; + + xbuf = uniform( len*2, -100.0, 100.0, options ); + wbuf = uniform( len*2, -100.0, 100.0, options ); + x = new Complex64Array( xbuf.buffer ); + w = new Complex64Array( wbuf.buffer ); + + alpha = new Complex64( 5.0, 3.0 ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + cwax( x.length, alpha, x, 1, w, 1 ); + if ( isnanf( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.native.js new file mode 100644 index 000000000000..14bbf6740060 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.native.js @@ -0,0 +1,121 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var cwax = tryRequire( resolve( __dirname, './../lib/cwax.native.js' ) ); +var opts = { + 'skip': ( cwax instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var xbuf; + var wbuf; + var x; + var w; + + xbuf = uniform( len*2, -100.0, 100.0, options ); + wbuf = uniform( len*2, -100.0, 100.0, options ); + x = new Complex64Array( xbuf.buffer ); + w = new Complex64Array( wbuf.buffer ); + + alpha = new Complex64( 5.0, 3.0 ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + cwax( x.length, alpha, x, 1, w, 1 ); + if ( isnanf( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..f8e355375d55 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.ndarray.js @@ -0,0 +1,116 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var cwax = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var xbuf; + var wbuf; + var x; + var w; + + xbuf = uniform( len*2, -100.0, 100.0, options ); + wbuf = uniform( len*2, -100.0, 100.0, options ); + x = new Complex64Array( xbuf.buffer ); + w = new Complex64Array( wbuf.buffer ); + + alpha = new Complex64( 5.0, 3.0 ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + if ( isnanf( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..9e1197e7ddf3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,121 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var cwax = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( cwax instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var xbuf; + var wbuf; + var x; + var w; + + xbuf = uniform( len*2, -100.0, 100.0, options ); + wbuf = uniform( len*2, -100.0, 100.0, options ); + x = new Complex64Array( xbuf.buffer ); + w = new Complex64Array( wbuf.buffer ); + + alpha = new Complex64( 5.0, 3.0 ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + if ( isnanf( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/cwax/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..c971a0844aea --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/benchmark/c/benchmark.length.c @@ -0,0 +1,214 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/cwax.h" +#include "stdlib/complex/float32/ctor.h" +#include +#include +#include +#include +#include + +#define NAME "cwax" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, 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. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + stdlib_complex64_t alpha; + double elapsed; + double t; + float *x; + float *w; + int i; + + x = (float *)malloc( len * 2 * sizeof( float ) ); + w = (float *)malloc( len * 2 * sizeof( float ) ); + + alpha = stdlib_complex64( 5.0f, 3.0f ); + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -100.0f, 100.0f ); + w[ i ] = random_uniform( -100.0f, 100.0f ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_cwax( len, alpha, (const stdlib_complex64_t *)x, 1, (stdlib_complex64_t *)w, 1 ); + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( w ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + stdlib_complex64_t alpha; + double elapsed; + double t; + float *x; + float *w; + int i; + + x = (float *)malloc( len * 2 * sizeof( float ) ); + w = (float *)malloc( len * 2 * sizeof( float ) ); + + alpha = stdlib_complex64( 5.0f, 3.0f ); + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -100.0f, 100.0f ); + w[ i ] = random_uniform( -100.0f, 100.0f ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_cwax_ndarray( len, alpha, (const stdlib_complex64_t *)x, 1, 0, (stdlib_complex64_t *)w, 1, 0 ); + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( w ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/cwax/binding.gyp new file mode 100644 index 000000000000..60dce9d0b31a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/binding.gyp @@ -0,0 +1,265 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Fortran compiler (to override -Dfortran_compiler=): + 'fortran_compiler%': 'gfortran', + + # Fortran compiler flags: + 'fflags': [ + # Specify the Fortran standard to which a program is expected to conform: + '-std=f95', + + # Indicate that the layout is free-form source code: + '-ffree-form', + + # Aggressive optimization: + '-O3', + + # Enable commonly used warning options: + '-Wall', + + # Warn if source code contains problematic language features: + '-Wextra', + + # Warn if a procedure is called without an explicit interface: + '-Wimplicit-interface', + + # Do not transform names of entities specified in Fortran source files by appending underscores (i.e., don't mangle names, thus allowing easier usage in C wrappers): + '-fno-underscoring', + + # Warn if source code contains Fortran 95 extensions and C-language constructs: + '-pedantic', + + # Compile but do not link (output is an object file): + '-c', + ], + + # 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 + + # Define custom build actions for particular inputs: + 'rules': [ + { + # Define a rule for processing Fortran files: + 'extension': 'f', + + # Define the pathnames to be used as inputs when performing processing: + 'inputs': [ + # Full path of the current input: + '<(RULE_INPUT_PATH)' + ], + + # Define the outputs produced during processing: + 'outputs': [ + # Store an output object file in a directory for placing intermediate results (only accessible within a single target): + '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).<(obj)' + ], + + # Define the rule for compiling Fortran based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + + # Rule to compile Fortran on Windows: + { + 'rule_name': 'compile_fortran_windows', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Windows...', + + 'process_outputs_as_sources': 0, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + }, + + # Rule to compile Fortran on non-Windows: + { + 'rule_name': 'compile_fortran_linux', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Linux...', + + 'process_outputs_as_sources': 1, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '-fPIC', # generate platform-independent code + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + } + ], # end condition (OS=="win") + ], # end conditions + }, # end rule (extension=="f") + ], # end rules + }, # 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/blas/ext/base/cwax/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/cwax/docs/repl.txt new file mode 100644 index 000000000000..20c3ce378d9f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/docs/repl.txt @@ -0,0 +1,138 @@ + +{{alias}}( N, alpha, x, strideX, w, strideW ) + Multiplies each element in a single-precision complex floating-point strided + array `x` by a scalar constant and assigns the results to elements in a + single-precision complex floating-point strided array `w`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `w` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: Complex64 + Scalar constant. + + x: Complex64Array + Input array. + + strideX: integer + Stride length for `x`. + + w: Complex64Array + Output array. + + strideW: integer + Stride length for `w`. + + Returns + ------- + w: Complex64Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x = new {{alias:@stdlib/array/complex64}}( bufX ); + > var w = new {{alias:@stdlib/array/complex64}}( bufW ); + > var alpha = new {{alias:@stdlib/complex/float32/ctor}}( 5.0, 3.0 ); + > {{alias}}( x.length, alpha, x, 1, w, 1 ) + [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] + + // Using `N` and stride parameters: + > bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ]; + > x = new {{alias:@stdlib/array/complex64}}( bufX ); + > bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > w = new {{alias:@stdlib/array/complex64}}( bufW ); + > alpha = new {{alias:@stdlib/complex/float32/ctor}}( 5.0, 3.0 ); + > {{alias}}( 2, alpha, x, 2, w, 2 ) + [ -1.0, 13.0, 0.0, 0.0, 7.0, 45.0, 0.0, 0.0 ] + + // Using view offsets: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x0 = new {{alias:@stdlib/array/complex64}}( bufX ); + > var w0 = new {{alias:@stdlib/array/complex64}}( bufW ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetW = w0.BYTES_PER_ELEMENT * 2; + > var x1 = new {{alias:@stdlib/array/complex64}}( x0.buffer, offsetX ); + > var w1 = new {{alias:@stdlib/array/complex64}}( w0.buffer, offsetW ); + > alpha = new {{alias:@stdlib/complex/float32/ctor}}( 5.0, 3.0 ); + > {{alias}}( 3, alpha, x1, 1, w1, 1 ) + [ 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + > w0 + [ 0.0, 0.0, 0.0, 0.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + + +{{alias}}.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) + Multiplies each element in a single-precision complex floating-point strided + array `x` by a scalar constant and assigns the results to elements in a + single-precision complex floating-point strided array `w` using alternative + indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: Complex64 + Scalar constant. + + x: Complex64Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + w: Complex64Array + Output array. + + strideW: integer + Stride length for `w`. + + offsetW: integer + Starting index for `w`. + + Returns + ------- + w: Complex64Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x = new {{alias:@stdlib/array/complex64}}( bufX ); + > var w = new {{alias:@stdlib/array/complex64}}( bufW ); + > var alpha = new {{alias:@stdlib/complex/float32/ctor}}( 5.0, 3.0 ); + > {{alias}}.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ) + [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] + + // Using index offsets: + > bufX = [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0, 4.0, 0.0, 5.0, 0.0 ]; + > x = new {{alias:@stdlib/array/complex64}}( bufX ); + > bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > w = new {{alias:@stdlib/array/complex64}}( bufW ); + > alpha = new {{alias:@stdlib/complex/float32/ctor}}( 2.0, 1.0 ); + > {{alias}}.ndarray( 3, alpha, x, 1, x.length-3, w, 1, w.length-3 ) + [ 0.0, 0.0, 0.0, 0.0, 6.0, 3.0, 8.0, 4.0, 10.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/cwax/docs/types/index.d.ts new file mode 100644 index 000000000000..7f6ec1758966 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/docs/types/index.d.ts @@ -0,0 +1,123 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Complex64Array } from '@stdlib/types/array'; +import { Complex64 } from '@stdlib/types/complex'; + +/** +* Interface describing `cwax`. +*/ +interface Routine { + /** + * Multiplies each element in a single-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `w`. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param w - output array + * @param strideW - `w` stride length + * @returns `w` + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * var Complex64 = require( '@stdlib/complex/float32/ctor' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + * var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * var alpha = new Complex64( 5.0, 3.0 ); + * + * cwax( x.length, alpha, x, 1, w, 1 ); + * // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + */ + ( N: number, alpha: Complex64, x: Complex64Array, strideX: number, w: Complex64Array, strideW: number ): Complex64Array; + + /** + * Multiplies each element in a single-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `w` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting index for `x` + * @param w - output array + * @param strideW - `w` stride length + * @param offsetW - starting index for `w` + * @returns `w` + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * var Complex64 = require( '@stdlib/complex/float32/ctor' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + * var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * var alpha = new Complex64( 5.0, 3.0 ); + * + * cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); + * // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + */ + ndarray( N: number, alpha: Complex64, x: Complex64Array, strideX: number, offsetX: number, w: Complex64Array, strideW: number, offsetW: number ): Complex64Array; +} + +/** +* Multiplies each element in a single-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `w`. +* +* @param N - number of indexed elements +* @param alpha - scalar constant +* @param x - input array +* @param strideX - `x` stride length +* @param w - output array +* @param strideW - `w` stride length +* @returns `w` +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +* var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* var alpha = new Complex64( 5.0, 3.0 ); +* +* cwax( x.length, alpha, x, 1, w, 1 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +* var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* var alpha = new Complex64( 5.0, 3.0 ); +* +* cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +*/ +declare var cwax: Routine; + + +// EXPORTS // + +export = cwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/cwax/docs/types/test.ts new file mode 100644 index 000000000000..f610e9f180e6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/docs/types/test.ts @@ -0,0 +1,298 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import Complex64Array = require( '@stdlib/array/complex64' ); +import Complex64 = require( '@stdlib/complex/float32/ctor' ); +import cwax = require( './index' ); + + +// TESTS // + +// The function returns a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax( x.length, alpha, x, 1, w, 1 ); // $ExpectType Complex64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax( '10', alpha, x, 1, w, 1 ); // $ExpectError + cwax( true, alpha, x, 1, w, 1 ); // $ExpectError + cwax( false, alpha, x, 1, w, 1 ); // $ExpectError + cwax( null, alpha, x, 1, w, 1 ); // $ExpectError + cwax( undefined, alpha, x, 1, w, 1 ); // $ExpectError + cwax( [], alpha, x, 1, w, 1 ); // $ExpectError + cwax( {}, alpha, x, 1, w, 1 ); // $ExpectError + cwax( ( x: number ): number => x, alpha, x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a complex-like... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + + cwax( x.length, 10, x, 1, w, 1 ); // $ExpectError + cwax( x.length, '10', x, 1, w, 1 ); // $ExpectError + cwax( x.length, true, x, 1, w, 1 ); // $ExpectError + cwax( x.length, false, x, 1, w, 1 ); // $ExpectError + cwax( x.length, null, x, 1, w, 1 ); // $ExpectError + cwax( x.length, undefined, x, 1, w, 1 ); // $ExpectError + cwax( x.length, [], x, 1, w, 1 ); // $ExpectError + cwax( x.length, {}, x, 1, w, 1 ); // $ExpectError + cwax( x.length, ( x: number ): number => x, x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Complex64Array... +{ + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax( 10, alpha, 10, 1, w, 1 ); // $ExpectError + cwax( 10, alpha, '10', 1, w, 1 ); // $ExpectError + cwax( 10, alpha, true, 1, w, 1 ); // $ExpectError + cwax( 10, alpha, false, 1, w, 1 ); // $ExpectError + cwax( 10, alpha, null, 1, w, 1 ); // $ExpectError + cwax( 10, alpha, undefined, 1, w, 1 ); // $ExpectError + cwax( 10, alpha, [ '1' ], 1, w, 1 ); // $ExpectError + cwax( 10, alpha, {}, 1, w, 1 ); // $ExpectError + cwax( 10, alpha, ( x: number ): number => x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax( x.length, alpha, x, '10', w, 1 ); // $ExpectError + cwax( x.length, alpha, x, true, w, 1 ); // $ExpectError + cwax( x.length, alpha, x, false, w, 1 ); // $ExpectError + cwax( x.length, alpha, x, null, w, 1 ); // $ExpectError + cwax( x.length, alpha, x, undefined, w, 1 ); // $ExpectError + cwax( x.length, alpha, x, [], w, 1 ); // $ExpectError + cwax( x.length, alpha, x, {}, w, 1 ); // $ExpectError + cwax( x.length, alpha, x, ( x: number ): number => x, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax( x.length, alpha, x, 1, 10, 1 ); // $ExpectError + cwax( x.length, alpha, x, 1, '10', 1 ); // $ExpectError + cwax( x.length, alpha, x, 1, true, 1 ); // $ExpectError + cwax( x.length, alpha, x, 1, false, 1 ); // $ExpectError + cwax( x.length, alpha, x, 1, null, 1 ); // $ExpectError + cwax( x.length, alpha, x, 1, undefined, 1 ); // $ExpectError + cwax( x.length, alpha, x, 1, [ '1' ], 1 ); // $ExpectError + cwax( x.length, alpha, x, 1, {}, 1 ); // $ExpectError + cwax( x.length, alpha, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax( x.length, alpha, x, 1, w, '10' ); // $ExpectError + cwax( x.length, alpha, x, 1, w, true ); // $ExpectError + cwax( x.length, alpha, x, 1, w, false ); // $ExpectError + cwax( x.length, alpha, x, 1, w, null ); // $ExpectError + cwax( x.length, alpha, x, 1, w, undefined ); // $ExpectError + cwax( x.length, alpha, x, 1, w, [] ); // $ExpectError + cwax( x.length, alpha, x, 1, w, {} ); // $ExpectError + cwax( x.length, alpha, x, 1, w, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax(); // $ExpectError + cwax( x.length ); // $ExpectError + cwax( x.length, alpha ); // $ExpectError + cwax( x.length, alpha, x ); // $ExpectError + cwax( x.length, alpha, x, 1 ); // $ExpectError + cwax( x.length, alpha, x, 1, w ); // $ExpectError + cwax( x.length, alpha, x, 1, w, 1, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); // $ExpectType Complex64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax.ndarray( '10', alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( true, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( false, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( null, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( undefined, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( [], alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( {}, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( ( x: number ): number => x, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a complex-like... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + + cwax.ndarray( x.length, 10, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, '10', x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, true, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, false, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, null, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, undefined, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, [], x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, {}, x, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, ( x: number ): number => x, x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Complex64Array... +{ + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax.ndarray( 10, alpha, 10, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( 10, alpha, '10', 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( 10, alpha, true, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( 10, alpha, false, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( 10, alpha, null, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( 10, alpha, undefined, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( 10, alpha, [ '1' ], 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( 10, alpha, {}, 1, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( 10, alpha, ( x: number ): number => x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax.ndarray( x.length, alpha, x, '10', 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, true, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, false, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, null, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, undefined, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, [], 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, {}, 0, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, ( x: number ): number => x, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax.ndarray( x.length, alpha, x, 1, '10', w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, true, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, false, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, null, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, undefined, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, [], w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, {}, w, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, ( x: number ): number => x, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax.ndarray( x.length, alpha, x, 1, 0, 10, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, '10', 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, true, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, false, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, null, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, undefined, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, {}, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax.ndarray( x.length, alpha, x, 1, 0, w, '10', 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, true, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, false, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, null, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, undefined, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, [], 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, {}, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, '10' ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, true ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, false ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, null ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, undefined ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, [] ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, {} ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Complex64Array( 10 ); + const w = new Complex64Array( 10 ); + const alpha = new Complex64( 5.0, 3.0 ); + + cwax.ndarray(); // $ExpectError + cwax.ndarray( x.length ); // $ExpectError + cwax.ndarray( x.length, alpha ); // $ExpectError + cwax.ndarray( x.length, alpha, x ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1 ); // $ExpectError + cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/cwax/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/cwax/examples/c/example.c new file mode 100644 index 000000000000..3a1ff9c797d1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/examples/c/example.c @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/cwax.h" +#include "stdlib/complex/float32/ctor.h" +#include "stdlib/complex/float32/real.h" +#include "stdlib/complex/float32/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex64_t x[] = { + stdlib_complex64( 1.0f, 2.0f ), + stdlib_complex64( 3.0f, 4.0f ), + stdlib_complex64( 5.0f, 6.0f ), + stdlib_complex64( 7.0f, 8.0f ) + }; + stdlib_complex64_t w[] = { + stdlib_complex64( 0.0f, 0.0f ), + stdlib_complex64( 0.0f, 0.0f ), + stdlib_complex64( 0.0f, 0.0f ), + stdlib_complex64( 0.0f, 0.0f ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideW = 1; + + // Define a scalar constant: + stdlib_complex64_t alpha = stdlib_complex64( 5.0f, 3.0f ); + + // Multiply each element in `x` by a constant and assign to `w`: + stdlib_strided_cwax( N, alpha, x, strideX, w, strideW ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "w[ %i ] = %f + %fi\n", i, stdlib_complex64_real( w[ i ] ), stdlib_complex64_imag( w[ i ] ) ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/examples/index.js new file mode 100644 index 000000000000..687048696d31 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/examples/index.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var logEach = require( '@stdlib/console/log-each' ); +var cwax = require( './../lib' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float32' +}); +var wbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float32' +}); +var x = new Complex64Array( xbuf.buffer ); +var w = new Complex64Array( wbuf.buffer ); +var alpha = new Complex64( 5.0, 3.0 ); + +cwax( x.length, alpha, x, 1, w, 1 ); +logEach( '%s', w ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/cwax/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] +*/ +function cwax( N, alpha, x, strideX, w, strideW ) { + return ndarray( N, alpha, x, strideX, stride2offset( N, strideX ), w, strideW, stride2offset( N, strideW ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = cwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/cwax.native.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/cwax.native.js new file mode 100644 index 000000000000..09b90f51d4aa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/cwax.native.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies each element in a single-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `w`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex64} alpha - scalar constant +* @param {Complex64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Complex64Array} w - output array +* @param {integer} strideW - `w` stride length +* @returns {Complex64Array} output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex64( 5.0, 3.0 ); +* +* cwax( x.length, alpha, x, 1, w, 1 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] +*/ +function cwax( N, alpha, x, strideX, w, strideW ) { + var viewX = reinterpret( x, 0 ); + var viewW = reinterpret( w, 0 ); + addon( N, alpha, viewX, strideX, viewW, strideW ); + return w; +} + + +// EXPORTS // + +module.exports = cwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/index.js new file mode 100644 index 000000000000..3fb65ed7f334 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/index.js @@ -0,0 +1,74 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Multiply each element in a single-precision complex floating-point strided array `x` by a scalar constant and assign the results to elements in a single-precision complex floating-point strided array `w`. +* +* @module @stdlib/blas/ext/base/cwax +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* var cwax = require( '@stdlib/blas/ext/base/cwax' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +* var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex64( 2.0, 2.0 ); +* +* cwax( x.length, alpha, x, 1, w, 1 ); +* // w => [ -2.0, 6.0, -2.0, 14.0, -2.0, 22.0, -2.0, 30.0 ] +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* var cwax = require( '@stdlib/blas/ext/base/cwax' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +* var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex64( 2.0, 2.0 ); +* +* cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); +* // w => [ -2.0, 6.0, -2.0, 14.0, -2.0, 22.0, -2.0, 30.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var cwax; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + cwax = main; +} else { + cwax = tmp; +} + + +// EXPORTS // + +module.exports = cwax; + +// exports: { "ndarray": "cwax.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/main.js new file mode 100644 index 000000000000..be559cc128d6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var cwax = require( './cwax.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( cwax, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = cwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/native.js new file mode 100644 index 000000000000..04fd20da89fd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var cwax = require( './cwax.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( cwax, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = cwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/ndarray.js new file mode 100644 index 000000000000..b34e3ecf566a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/ndarray.js @@ -0,0 +1,133 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); +var realf = require( '@stdlib/complex/float32/real' ); +var imagf = require( '@stdlib/complex/float32/imag' ); +var ccopy = require( '@stdlib/blas/base/ccopy' ).ndarray; +var cmulf = require( '@stdlib/complex/float32/base/mul' ).assign; + + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Multiplies each element in a single-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `w` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex64} alpha - scalar constant +* @param {Complex64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex64Array} w - output array +* @param {integer} strideW - `w` stride length +* @param {NonNegativeInteger} offsetW - starting `w` index +* @returns {Complex64Array} output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex64( 5.0, 3.0 ); +* +* cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] +*/ +function cwax( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) { + var xview; + var wview; + var are; + var aim; + var ix; + var iw; + var sx; + var sw; + var m; + var i; + + if ( N <= 0 ) { + return w; + } + + // Decompose the constant into its real and imaginary components: + are = realf( alpha ); + aim = imagf( alpha ); + + // Fast path: when alpha = 1+0i, delegate to ccopy (w = x) + if ( are === 1.0 && aim === 0.0 ) { + return ccopy( N, x, strideX, offsetX, w, strideW, offsetW ); + } + + // Reinterpret the complex input arrays as real-valued arrays: + xview = reinterpret( x, 0 ); + wview = reinterpret( w, 0 ); + + // Adjust the strides and offsets according to the real-valued arrays: + ix = offsetX * 2; + iw = offsetW * 2; + sx = strideX * 2; + sw = strideW * 2; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideW === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + cmulf( are, aim, xview[ ix ], xview[ ix+1 ], wview, 1, iw ); + ix += sx; + iw += sw; + } + } + if ( N < M ) { + return w; + } + for ( i = m; i < N; i += M ) { + cmulf( are, aim, xview[ ix ], xview[ ix+1 ], wview, 1, iw ); + cmulf( are, aim, xview[ ix+2 ], xview[ ix+3 ], wview, 1, iw+2 ); + cmulf( are, aim, xview[ ix+4 ], xview[ ix+5 ], wview, 1, iw+4 ); + cmulf( are, aim, xview[ ix+6 ], xview[ ix+7 ], wview, 1, iw+6 ); + cmulf( are, aim, xview[ ix+8 ], xview[ ix+9 ], wview, 1, iw+8 ); + ix += M * 2; + iw += M * 2; + } + return w; + } + for ( i = 0; i < N; i++ ) { + cmulf( are, aim, xview[ ix ], xview[ ix+1 ], wview, 1, iw ); + ix += sx; + iw += sw; + } + return w; +} + + +// EXPORTS // + +module.exports = cwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/ndarray.native.js new file mode 100644 index 000000000000..4c87acdf9505 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/lib/ndarray.native.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies each element in a single-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `w` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex64} alpha - scalar constant +* @param {Complex64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex64Array} w - output array +* @param {integer} strideW - `w` stride length +* @param {NonNegativeInteger} offsetW - starting `w` index +* @returns {Complex64Array} output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var Complex64 = require( '@stdlib/complex/float32/ctor' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex64( 5.0, 3.0 ); +* +* cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] +*/ +function cwax( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) { + var viewX = reinterpret( x, 0 ); + var viewW = reinterpret( w, 0 ); + addon.ndarray( N, alpha, viewX, strideX, offsetX, viewW, strideW, offsetW ); + return w; +} + + +// EXPORTS // + +module.exports = cwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/cwax/manifest.json new file mode 100644 index 000000000000..df4fbe38c349 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/manifest.json @@ -0,0 +1,94 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/blas/base/ccopy", + "@stdlib/complex/float32/base/mul", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-complex64", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-complex64array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/blas/base/ccopy", + "@stdlib/complex/float32/base/mul", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/blas/base/ccopy", + "@stdlib/complex/float32/base/mul", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/package.json b/lib/node_modules/@stdlib/blas/ext/base/cwax/package.json new file mode 100644 index 000000000000..e33579b08638 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/blas/ext/base/cwax", + "version": "0.0.0", + "description": "Multiply each element in a single-precision complex floating-point strided array `x` by a scalar constant and assign the results to elements in a single-precision complex floating-point strided array `w`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "multiply", + "multiplication", + "scale", + "scaling", + "strided", + "array", + "ndarray", + "cwax", + "complex", + "complex64", + "complex64array", + "float32" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/cwax/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/cwax/src/addon.c new file mode 100644 index 000000000000..08e31ec27f51 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/src/addon.c @@ -0,0 +1,69 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/cwax.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_complex64.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_complex64array.h" +#include "stdlib/complex/float32/ctor.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_COMPLEX64( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideW, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, W, N, strideW, argv, 4 ); + API_SUFFIX(stdlib_strided_cwax)( N, alpha, (const stdlib_complex64_t *)X, strideX, (stdlib_complex64_t *)W, strideW ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 8 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_COMPLEX64( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, strideW, argv, 6 ); + STDLIB_NAPI_ARGV_INT64( env, offsetW, argv, 7 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, W, N, strideW, argv, 5 ); + API_SUFFIX(stdlib_strided_cwax_ndarray)( N, alpha, (const stdlib_complex64_t *)X, strideX, offsetX, (stdlib_complex64_t *)W, strideW, offsetW ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/cwax/src/main.c new file mode 100644 index 000000000000..e11edba46ac2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/src/main.c @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/cwax.h" +#include "stdlib/blas/base/ccopy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/complex/float32/real.h" +#include "stdlib/complex/float32/imag.h" +#include "stdlib/complex/float32/base/mul.h" +#include "stdlib/strided/base/stride2offset.h" + +static const CBLAS_INT M = 5; + +/** +* Multiplies each element in a single-precision complex floating-point strided array `X` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `W`. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length for `X` +* @param W output array +* @param strideW stride length for `W` +*/ +void API_SUFFIX(stdlib_strided_cwax)( const CBLAS_INT N, const stdlib_complex64_t alpha, const stdlib_complex64_t *X, const CBLAS_INT strideX, stdlib_complex64_t *W, const CBLAS_INT strideW ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT ow = stdlib_strided_stride2offset( N, strideW ); + API_SUFFIX(stdlib_strided_cwax_ndarray)( N, alpha, X, strideX, ox, W, strideW, ow ); +} + +/** +* Multiplies each element in a single-precision complex floating-point strided array `X` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `W` using alternative indexing semantics. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length for `X` +* @param offsetX starting index for `X` +* @param W output array +* @param strideW stride length for `W` +* @param offsetW starting index for `W` +*/ +void API_SUFFIX(stdlib_strided_cwax_ndarray)( const CBLAS_INT N, const stdlib_complex64_t alpha, const stdlib_complex64_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex64_t *W, const CBLAS_INT strideW, const CBLAS_INT offsetW ) { + CBLAS_INT ix; + CBLAS_INT iw; + CBLAS_INT m; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + // Fast path: when alpha = 1+0i, delegate to ccopy (w = x) + if ( stdlib_complex64_real( alpha ) == 1.0f && stdlib_complex64_imag( alpha ) == 0.0f ) { + API_SUFFIX(c_ccopy_ndarray)( N, X, strideX, offsetX, W, strideW, offsetW ); + return; + } + ix = offsetX; + iw = offsetW; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX == 1 && strideW == 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + W[ iw ] = stdlib_base_complex64_mul( alpha, X[ ix ] ); + ix += strideX; + iw += strideW; + } + } + if ( N < M ) { + return; + } + for ( i = m; i < N; i += M ) { + W[ iw ] = stdlib_base_complex64_mul( alpha, X[ ix ] ); + W[ iw+1 ] = stdlib_base_complex64_mul( alpha, X[ ix+1 ] ); + W[ iw+2 ] = stdlib_base_complex64_mul( alpha, X[ ix+2 ] ); + W[ iw+3 ] = stdlib_base_complex64_mul( alpha, X[ ix+3 ] ); + W[ iw+4 ] = stdlib_base_complex64_mul( alpha, X[ ix+4 ] ); + ix += M; + iw += M; + } + return; + } + for ( i = 0; i < N; i++ ) { + W[ iw ] = stdlib_base_complex64_mul( alpha, X[ ix ] ); + ix += strideX; + iw += strideW; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.cwax.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.cwax.js new file mode 100644 index 000000000000..65c1559ae29f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.cwax.js @@ -0,0 +1,372 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var mul = require( '@stdlib/complex/float32/base/mul' ); +var cwax = require( './../lib/cwax.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( cwax.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Complex64Array( x.length ); + expected = new Complex64Array([ + // (5.0+3.0i) * (4.0+2.0i) + 14.0, + 22.0, + // (5.0+3.0i) * (-3.0+5.0i) + -30.0, + 16.0, + // (5.0+3.0i) * (-1.0+2.0i) + -11.0, + 7.0, + // (5.0+3.0i) * (-5.0+6.0i) + -43.0, + 15.0 + ]); + + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + w = new Complex64Array( x.length ); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0 + ]); + + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var alpha; + var out; + var x; + var w; + + alpha = new Complex64( 3.0, 2.0 ); + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); // eslint-disable-line max-len + w = new Complex64Array( x.length ); + out = cwax( x.length, alpha, x, 1, w, 1 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + x = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + expected = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + + cwax( 0, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + cwax( -4, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 1.0, 0.0 ); + x = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex64Array( x.length ); + expected = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, + 4.0, + 5.0, // 1 + 6.0, // 1 + 7.0, + 8.0, + 9.0, // 2 + 10.0 // 2 + ]); + w = new Complex64Array( 3 ); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (9.0+10.0i) + 15.0, + 77.0 + ]); + + cwax( 3, alpha, x, 2, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + w = new Complex64Array([ + 0.0, // 0 + 0.0, // 0 + 30.0, + 40.0, + 0.0, // 1 + 0.0, // 1 + 10.0, + 20.0, + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + 30.0, + 40.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + 10.0, + 20.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + cwax( 3, alpha, x, 1, w, 2 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 2.0, // 2 + 3.0, // 2 + 4.0, + 5.0, + -5.0, // 1 + -6.0, // 1 + 7.0, + 8.0, + 6.0, // 0 + 9.0 // 0 + ]); + w = new Complex64Array( 5 ); + expected = new Complex64Array([ + // (5.0+3.0i) * (2.0+3.0i) + 1.0, + 21.0, + 0.0, + 0.0, + // (5.0+3.0i) * (-5.0-6.0i) + -7.0, + -45.0, + 0.0, + 0.0, + // (5.0+3.0i) * (6.0+9.0i) + 3.0, + 63.0 + ]); + + cwax( 3, alpha, x, -2, w, -2 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var alpha; + var x0; + var w0; + var x1; + var w1; + + alpha = new Complex64( 5.0, 3.0 ); + + x0 = new Complex64Array([ + 1.0, + 2.0, + 3.0, // 0 + 4.0, // 0 + 5.0, // 1 + 6.0, // 1 + 7.0, // 2 + 8.0, // 2 + 9.0, + 10.0 + ]); + w0 = new Complex64Array([ + 10.0, + 11.0, + 12.0, + 13.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + w1 = new Complex64Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex64Array([ + 10.0, + 11.0, + 12.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (7.0+8.0i) + 11.0, + 61.0 + ]); + + cwax( 3, alpha, x1, 1, w1, 1 ); + t.strictEqual( isSameComplex64Array( w0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', function test( t ) { + var expected; + var alpha; + var x; + var w; + var z; + var i; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array( 100 ); + w = new Complex64Array( 100 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex64( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + x = new Complex64Array( 240 ); + w = new Complex64Array( 240 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex64( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.cwax.native.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.cwax.native.js new file mode 100644 index 000000000000..328d6e6e2dcd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.cwax.native.js @@ -0,0 +1,381 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var mul = require( '@stdlib/complex/float32/base/mul' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var cwax = tryRequire( resolve( __dirname, './../lib/cwax.native.js' ) ); +var opts = { + 'skip': ( cwax instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( cwax.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Complex64Array( x.length ); + expected = new Complex64Array([ + // (5.0+3.0i) * (4.0+2.0i) + 14.0, + 22.0, + // (5.0+3.0i) * (-3.0+5.0i) + -30.0, + 16.0, + // (5.0+3.0i) * (-1.0+2.0i) + -11.0, + 7.0, + // (5.0+3.0i) * (-5.0+6.0i) + -43.0, + 15.0 + ]); + + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + w = new Complex64Array( x.length ); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0 + ]); + + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var alpha; + var out; + var x; + var w; + + alpha = new Complex64( 3.0, 2.0 ); + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); // eslint-disable-line max-len + w = new Complex64Array( x.length ); + out = cwax( x.length, alpha, x, 1, w, 1 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + x = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + expected = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + + cwax( 0, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + cwax( -4, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 1.0, 0.0 ); + x = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex64Array( x.length ); + expected = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, + 4.0, + 5.0, // 1 + 6.0, // 1 + 7.0, + 8.0, + 9.0, // 2 + 10.0 // 2 + ]); + w = new Complex64Array( 3 ); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (9.0+10.0i) + 15.0, + 77.0 + ]); + + cwax( 3, alpha, x, 2, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + w = new Complex64Array([ + 0.0, // 0 + 0.0, // 0 + 30.0, + 40.0, + 0.0, // 1 + 0.0, // 1 + 10.0, + 20.0, + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + 30.0, + 40.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + 10.0, + 20.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + cwax( 3, alpha, x, 1, w, 2 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 2.0, // 2 + 3.0, // 2 + 4.0, + 5.0, + -5.0, // 1 + -6.0, // 1 + 7.0, + 8.0, + 6.0, // 0 + 9.0 // 0 + ]); + w = new Complex64Array( 5 ); + expected = new Complex64Array([ + // (5.0+3.0i) * (2.0+3.0i) + 1.0, + 21.0, + 0.0, + 0.0, + // (5.0+3.0i) * (-5.0-6.0i) + -7.0, + -45.0, + 0.0, + 0.0, + // (5.0+3.0i) * (6.0+9.0i) + 3.0, + 63.0 + ]); + + cwax( 3, alpha, x, -2, w, -2 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var alpha; + var x0; + var w0; + var x1; + var w1; + + alpha = new Complex64( 5.0, 3.0 ); + + x0 = new Complex64Array([ + 1.0, + 2.0, + 3.0, // 0 + 4.0, // 0 + 5.0, // 1 + 6.0, // 1 + 7.0, // 2 + 8.0, // 2 + 9.0, + 10.0 + ]); + w0 = new Complex64Array([ + 10.0, + 11.0, + 12.0, + 13.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + w1 = new Complex64Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex64Array([ + 10.0, + 11.0, + 12.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (7.0+8.0i) + 11.0, + 61.0 + ]); + + cwax( 3, alpha, x1, 1, w1, 1 ); + t.strictEqual( isSameComplex64Array( w0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + var z; + var i; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array( 100 ); + w = new Complex64Array( 100 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex64( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + x = new Complex64Array( 240 ); + w = new Complex64Array( 240 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex64( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + cwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.js new file mode 100644 index 000000000000..a6849f482959 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.js @@ -0,0 +1,77 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var cwax = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof cwax.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var cwax = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( cwax, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var cwax = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( cwax, require( './../lib/main.js' ), 'returns JS implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.ndarray.js new file mode 100644 index 000000000000..e776f087d5f0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.ndarray.js @@ -0,0 +1,462 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var mul = require( '@stdlib/complex/float32/base/mul' ); +var cwax = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', function test( t ) { + t.strictEqual( cwax.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Complex64Array( x.length ); + expected = new Complex64Array([ + // (5.0+3.0i) * (4.0+2.0i) + 14.0, + 22.0, + // (5.0+3.0i) * (-3.0+5.0i) + -30.0, + 16.0, + // (5.0+3.0i) * (-1.0+2.0i) + -11.0, + 7.0, + // (5.0+3.0i) * (-5.0+6.0i) + -43.0, + 15.0 + ]); + + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + w = new Complex64Array( x.length ); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0 + ]); + + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var alpha; + var out; + var x; + var w; + + alpha = new Complex64( 3.0, 2.0 ); + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); // eslint-disable-line max-len + w = new Complex64Array( x.length ); + out = cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + x = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + expected = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + + cwax( 0, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + cwax( -4, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 1.0, 0.0 ); + x = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex64Array( x.length ); + expected = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, + 4.0, + 5.0, // 1 + 6.0, // 1 + 7.0, + 8.0, + 9.0, // 2 + 10.0 // 2 + ]); + w = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (9.0+10.0i) + 15.0, + 77.0 + ]); + + cwax( 3, alpha, x, 2, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + w = new Complex64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, + 0.0, + 0.0, // 1 + 0.0, // 1 + 0.0, + 0.0, + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + 0.0, + 0.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + 0.0, + 0.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + cwax( 3, alpha, x, 1, 0, w, 2, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 2.0, // 2 + 3.0, // 2 + 4.0, + 5.0, + -5.0, // 1 + -6.0, // 1 + 7.0, + 8.0, + 6.0, // 0 + 9.0 // 0 + ]); + w = new Complex64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + expected = new Complex64Array([ + // (5.0+3.0i) * (2.0+3.0i) + 1.0, + 21.0, + // (5.0+3.0i) * (-5.0-6.0i) + -7.0, + -45.0, + // (5.0+3.0i) * (6.0+9.0i) + 3.0, + 63.0 + ]); + + cwax( 3, alpha, x, -2, x.length-1, w, -1, w.length-1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 2 + 6.0 // 2 + ]); + w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + cwax( 3, alpha, x, 2, 1, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` offset', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + w = new Complex64Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex64Array([ + 0.0, + 0.0, + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + cwax( 3, alpha, x, 1, 0, w, 1, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 2 + 6.0, // 2 + 0.0, + 0.0 + ]); + w = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0, // 2 + 0.0, + 0.0 + ]); + expected = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + 0.0, + 0.0 + ]); + + cwax( 3, alpha, x, 2, 1, w, 1, 2 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', function test( t ) { + var expected; + var alpha; + var x; + var w; + var z; + var i; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array( 100 ); + w = new Complex64Array( 100 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex64( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + x = new Complex64Array( 240 ); + w = new Complex64Array( 240 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex64( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.ndarray.native.js new file mode 100644 index 000000000000..ce7570eb47d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cwax/test/test.ndarray.native.js @@ -0,0 +1,471 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var mul = require( '@stdlib/complex/float32/base/mul' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var cwax = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( cwax instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', opts, function test( t ) { + t.strictEqual( cwax.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Complex64Array( x.length ); + expected = new Complex64Array([ + // (5.0+3.0i) * (4.0+2.0i) + 14.0, + 22.0, + // (5.0+3.0i) * (-3.0+5.0i) + -30.0, + 16.0, + // (5.0+3.0i) * (-1.0+2.0i) + -11.0, + 7.0, + // (5.0+3.0i) * (-5.0+6.0i) + -43.0, + 15.0 + ]); + + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + w = new Complex64Array( x.length ); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0 + ]); + + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var alpha; + var out; + var x; + var w; + + alpha = new Complex64( 3.0, 2.0 ); + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); // eslint-disable-line max-len + w = new Complex64Array( x.length ); + out = cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + x = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + expected = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + + cwax( 0, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + cwax( -4, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 1.0, 0.0 ); + x = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex64Array( x.length ); + expected = new Complex64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, + 4.0, + 5.0, // 1 + 6.0, // 1 + 7.0, + 8.0, + 9.0, // 2 + 10.0 // 2 + ]); + w = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (9.0+10.0i) + 15.0, + 77.0 + ]); + + cwax( 3, alpha, x, 2, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + w = new Complex64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, + 0.0, + 0.0, // 1 + 0.0, // 1 + 0.0, + 0.0, + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + 0.0, + 0.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + 0.0, + 0.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + cwax( 3, alpha, x, 1, 0, w, 2, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 2.0, // 2 + 3.0, // 2 + 4.0, + 5.0, + -5.0, // 1 + -6.0, // 1 + 7.0, + 8.0, + 6.0, // 0 + 9.0 // 0 + ]); + w = new Complex64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + expected = new Complex64Array([ + // (5.0+3.0i) * (2.0+3.0i) + 1.0, + 21.0, + // (5.0+3.0i) * (-5.0-6.0i) + -7.0, + -45.0, + // (5.0+3.0i) * (6.0+9.0i) + 3.0, + 63.0 + ]); + + cwax( 3, alpha, x, -2, x.length-1, w, -1, w.length-1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 2 + 6.0 // 2 + ]); + w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + expected = new Complex64Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + cwax( 3, alpha, x, 2, 1, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` offset', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + w = new Complex64Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex64Array([ + 0.0, + 0.0, + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + cwax( 3, alpha, x, 1, 0, w, 1, 1 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 2 + 6.0, // 2 + 0.0, + 0.0 + ]); + w = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0, // 2 + 0.0, + 0.0 + ]); + expected = new Complex64Array([ + 0.0, + 0.0, + 0.0, + 0.0, + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + 0.0, + 0.0 + ]); + + cwax( 3, alpha, x, 2, 1, w, 1, 2 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + var z; + var i; + + alpha = new Complex64( 5.0, 3.0 ); + + x = new Complex64Array( 100 ); + w = new Complex64Array( 100 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex64( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + x = new Complex64Array( 240 ); + w = new Complex64Array( 240 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex64( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + cwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex64Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/README.md b/lib/node_modules/@stdlib/blas/ext/base/cxmy/README.md new file mode 100644 index 000000000000..d2298098f91c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/README.md @@ -0,0 +1,347 @@ + + +# cxmy + +> Multiply elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assign the results to `y`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \odot \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var cxmy = require( '@stdlib/blas/ext/base/cxmy' ); +``` + +#### cxmy( N, x, strideX, y, strideY ) + +Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y`. + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + +cxmy( x.length, x, 1, y, 1 ); +// y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: input [`Complex64Array`][@stdlib/array/complex64]. +- **strideX**: stride length for `x`. +- **y**: output [`Complex64Array`][@stdlib/array/complex64]. +- **strideY**: stride length for `y`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to multiply every other element of `x` by every other element of `y`: + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +var y = new Complex64Array( [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0 ] ); + +cxmy( 2, x, 2, y, 2 ); +// y => [ -9.0, 22.0, 9.0, 10.0, -17.0, 126.0, 13.0, 14.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +// Initial arrays... +var x0 = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); +var y0 = new Complex64Array( [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0 ] ); + +// Create offset views... +var x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Complex64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +cxmy( 3, x1, 1, y1, 1 ); +// y0 => [ 7.0, 8.0, 9.0, 10.0, -15.0, 80.0, -19.0, 148.0, -23.0, 232.0 ] +``` + +#### cxmy.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + +cxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to multiply the last three elements of `x` by the last three elements of `y`: + + + +```javascript +var Complex64Array = require( '@stdlib/array/complex64' ); + +var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); +var y = new Complex64Array( [ 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0 ] ); + +cxmy.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// y => [ 11.0, 12.0, 13.0, 14.0, -21.0, 170.0, -25.0, 262.0, -29.0, 370.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `y` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var logEach = require( '@stdlib/console/log-each' ); +var cxmy = require( '@stdlib/blas/ext/base/cxmy' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float32' +}); +var ybuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float32' +}); +var x = new Complex64Array( xbuf.buffer ); +var y = new Complex64Array( ybuf.buffer ); + +cxmy( x.length, x, 1, y, 1 ); +logEach( '%s', y ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/cxmy.h" +``` + +#### stdlib_strided_cxmy( N, \*X, strideX, \*Y, strideY ) + +Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y`. + +```c +#include "stdlib/complex/float32/ctor.h" + +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f }; +float y[] = { 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f }; + +stdlib_strided_cxmy( 3, (stdlib_complex64_t *)x, 1, (stdlib_complex64_t *)y, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] stdlib_complex64_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Y**: `[inout] stdlib_complex64_t*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. + +```c +void stdlib_strided_cxmy( const CBLAS_INT N, const stdlib_complex64_t *X, const CBLAS_INT strideX, stdlib_complex64_t *Y, const CBLAS_INT strideY ); +``` + + + +#### stdlib_strided_cxmy_ndarray( N, \*X, strideX, offsetX, \*Y, strideY, offsetY ) + + + +Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```c +#include "stdlib/complex/float32/ctor.h" + +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f }; +float y[] = { 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f }; + +stdlib_strided_cxmy_ndarray( 3, (stdlib_complex64_t *)x, 1, 0, (stdlib_complex64_t *)y, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] stdlib_complex64_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Y**: `[inout] stdlib_complex64_t*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. +- **offsetY**: `[in] CBLAS_INT` starting index for `Y`. + +```c +void stdlib_strided_cxmy_ndarray( const CBLAS_INT N, const stdlib_complex64_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex64_t *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/cxmy.h" +#include "stdlib/complex/float32/ctor.h" +#include "stdlib/complex/float32/real.h" +#include "stdlib/complex/float32/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex64_t x[] = { + stdlib_complex64( 1.0f, 2.0f ), + stdlib_complex64( 3.0f, 4.0f ), + stdlib_complex64( 5.0f, 6.0f ), + stdlib_complex64( 7.0f, 8.0f ) + }; + stdlib_complex64_t y[] = { + stdlib_complex64( 2.0f, 3.0f ), + stdlib_complex64( 4.0f, 5.0f ), + stdlib_complex64( 6.0f, 7.0f ), + stdlib_complex64( 8.0f, 9.0f ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Multiply `x` by `y` and assign the results to `y`: + stdlib_strided_cxmy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "y[ %i ] = %f + %fi\n", i, stdlib_complex64_real( y[ i ] ), stdlib_complex64_imag( y[ i ] ) ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.js new file mode 100644 index 000000000000..21645ebe0f56 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.js @@ -0,0 +1,112 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var cxmy = require( './../lib/cxmy.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, -0.5, 0.5, options ); + x = new Complex64Array( xbuf.buffer ); + y = new Complex64Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + cxmy( x.length, x, 1, y, 1 ); + if ( isnanf( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.native.js new file mode 100644 index 000000000000..80992590210e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.native.js @@ -0,0 +1,117 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var cxmy = tryRequire( resolve( __dirname, './../lib/cxmy.native.js' ) ); +var opts = { + 'skip': ( cxmy instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, -0.5, 0.5, options ); + x = new Complex64Array( xbuf.buffer ); + y = new Complex64Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + cxmy( x.length, x, 1, y, 1 ); + if ( isnanf( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..216df00b388b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.ndarray.js @@ -0,0 +1,112 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var cxmy = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, -0.5, 0.5, options ); + x = new Complex64Array( xbuf.buffer ); + y = new Complex64Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + cxmy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnanf( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..5b59008034f2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,117 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var cxmy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( cxmy instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, -0.5, 0.5, options ); + x = new Complex64Array( xbuf.buffer ); + y = new Complex64Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + cxmy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnanf( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/cxmy/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..f9351b652dff --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/benchmark/c/benchmark.length.c @@ -0,0 +1,210 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/cxmy.h" +#include "stdlib/complex/float32/ctor.h" +#include +#include +#include +#include +#include + +#define NAME "cxmy" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, 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. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double t; + float *x; + float *y; + int i; + + x = (float *)malloc( len * 2 * sizeof( float ) ); + y = (float *)malloc( len * 2 * sizeof( float ) ); + + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -0.5f, 0.5f ); + y[ i ] = random_uniform( -0.5f, 0.5f ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_cxmy( len, (stdlib_complex64_t *)x, 1, (stdlib_complex64_t *)y, 1 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double t; + float *x; + float *y; + int i; + + x = (float *)malloc( len * 2 * sizeof( float ) ); + y = (float *)malloc( len * 2 * sizeof( float ) ); + + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -0.5f, 0.5f ); + y[ i ] = random_uniform( -0.5f, 0.5f ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_cxmy_ndarray( len, (stdlib_complex64_t *)x, 1, 0, (stdlib_complex64_t *)y, 1, 0 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/cxmy/binding.gyp new file mode 100644 index 000000000000..60dce9d0b31a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/binding.gyp @@ -0,0 +1,265 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Fortran compiler (to override -Dfortran_compiler=): + 'fortran_compiler%': 'gfortran', + + # Fortran compiler flags: + 'fflags': [ + # Specify the Fortran standard to which a program is expected to conform: + '-std=f95', + + # Indicate that the layout is free-form source code: + '-ffree-form', + + # Aggressive optimization: + '-O3', + + # Enable commonly used warning options: + '-Wall', + + # Warn if source code contains problematic language features: + '-Wextra', + + # Warn if a procedure is called without an explicit interface: + '-Wimplicit-interface', + + # Do not transform names of entities specified in Fortran source files by appending underscores (i.e., don't mangle names, thus allowing easier usage in C wrappers): + '-fno-underscoring', + + # Warn if source code contains Fortran 95 extensions and C-language constructs: + '-pedantic', + + # Compile but do not link (output is an object file): + '-c', + ], + + # 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 + + # Define custom build actions for particular inputs: + 'rules': [ + { + # Define a rule for processing Fortran files: + 'extension': 'f', + + # Define the pathnames to be used as inputs when performing processing: + 'inputs': [ + # Full path of the current input: + '<(RULE_INPUT_PATH)' + ], + + # Define the outputs produced during processing: + 'outputs': [ + # Store an output object file in a directory for placing intermediate results (only accessible within a single target): + '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).<(obj)' + ], + + # Define the rule for compiling Fortran based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + + # Rule to compile Fortran on Windows: + { + 'rule_name': 'compile_fortran_windows', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Windows...', + + 'process_outputs_as_sources': 0, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + }, + + # Rule to compile Fortran on non-Windows: + { + 'rule_name': 'compile_fortran_linux', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Linux...', + + 'process_outputs_as_sources': 1, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '-fPIC', # generate platform-independent code + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + } + ], # end condition (OS=="win") + ], # end conditions + }, # end rule (extension=="f") + ], # end rules + }, # 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/blas/ext/base/cxmy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/cxmy/docs/repl.txt new file mode 100644 index 000000000000..748d7d7ef7d1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/docs/repl.txt @@ -0,0 +1,127 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Multiplies elements of a single-precision complex floating-point strided + array `x` by the corresponding elements of a single-precision complex + floating-point strided array `y` and assigns the results to `y`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `y` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Complex64Array + Input array. + + strideX: integer + Stride length for `x`. + + y: Complex64Array + Output array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + y: Complex64Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var bufY = [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]; + > var x = new {{alias:@stdlib/array/complex64}}( bufX ); + > var y = new {{alias:@stdlib/array/complex64}}( bufY ); + > {{alias}}( x.length, x, 1, y, 1 ) + [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + + // Using `N` and stride parameters: + > bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ]; + > x = new {{alias:@stdlib/array/complex64}}( bufX ); + > bufY = [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0 ]; + > y = new {{alias:@stdlib/array/complex64}}( bufY ); + > {{alias}}( 2, x, 2, y, 2 ) + [ -9.0, 22.0, 9.0, 10.0, -17.0, 126.0, 13.0, 14.0 ] + + // Using view offsets: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ]; + > var bufY = [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0 ]; + > var x0 = new {{alias:@stdlib/array/complex64}}( bufX ); + > var y0 = new {{alias:@stdlib/array/complex64}}( bufY ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetY = y0.BYTES_PER_ELEMENT * 2; + > var x1 = new {{alias:@stdlib/array/complex64}}( x0.buffer, offsetX ); + > var y1 = new {{alias:@stdlib/array/complex64}}( y0.buffer, offsetY ); + > {{alias}}( 3, x1, 1, y1, 1 ) + [ -15.0, 80.0, -19.0, 148.0, -23.0, 232.0 ] + > y0 + [ 7, 8, 9, 10, -15, 80, -19, 148, -23, 232 ] + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Multiplies elements of a single-precision complex floating-point strided + array `x` by the corresponding elements of a single-precision complex + floating-point strided array `y` and assigns the results to `y` using + alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Complex64Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Complex64Array + Output array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + y: Complex64Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var bufY = [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]; + > var x = new {{alias:@stdlib/array/complex64}}( bufX ); + > var y = new {{alias:@stdlib/array/complex64}}( bufY ); + > {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + + // Using index offsets: + > bufX = [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0, 4.0, 0.0, 5.0, 0.0 ]; + > x = new {{alias:@stdlib/array/complex64}}( bufX ); + > bufY = [ 6.0, 0.0, 7.0, 0.0, 8.0, 0.0, 9.0, 0.0, 10.0, 0.0 ]; + > y = new {{alias:@stdlib/array/complex64}}( bufY ); + > {{alias}}.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ) + [ 6.0, 0.0, 7.0, 0.0, 24.0, 0.0, 36.0, 0.0, 50.0, 0.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/cxmy/docs/types/index.d.ts new file mode 100644 index 000000000000..ee4a2b943d4b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/docs/types/index.d.ts @@ -0,0 +1,107 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Complex64Array } from '@stdlib/types/array'; + +/** +* Interface describing `cxmy`. +*/ +interface Routine { + /** + * Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + * + * cxmy( x.length, x, 1, y, 1 ); + * // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + */ + ( N: number, x: Complex64Array, strideX: number, y: Complex64Array, strideY: number ): Complex64Array; + + /** + * Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting `x` index + * @param y - output array + * @param strideY - `y` stride length + * @param offsetY - starting `y` index + * @returns output array + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + * + * cxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + */ + ndarray( N: number, x: Complex64Array, strideX: number, offsetX: number, y: Complex64Array, strideY: number, offsetY: number ): Complex64Array; +} + +/** +* Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param N - number of indexed elements +* @param x - input array +* @param strideX - `x` stride length +* @param y - output array +* @param strideY - `y` stride length +* @returns output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* cxmy( x.length, x, 1, y, 1 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* cxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +declare var cxmy: Routine; + + +// EXPORTS // + +export = cxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/cxmy/docs/types/test.ts new file mode 100644 index 000000000000..8d45e0d87b12 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/docs/types/test.ts @@ -0,0 +1,247 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import Complex64Array = require( '@stdlib/array/complex64' ); +import cxmy = require( './index' ); + + +// TESTS // + +// The function returns a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy( x.length, x, 1, y, 1 ); // $ExpectType Complex64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy( '10', x, 1, y, 1 ); // $ExpectError + cxmy( true, x, 1, y, 1 ); // $ExpectError + cxmy( false, x, 1, y, 1 ); // $ExpectError + cxmy( null, x, 1, y, 1 ); // $ExpectError + cxmy( undefined, x, 1, y, 1 ); // $ExpectError + cxmy( [], x, 1, y, 1 ); // $ExpectError + cxmy( {}, x, 1, y, 1 ); // $ExpectError + cxmy( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Complex64Array... +{ + const y = new Complex64Array( 10 ); + + cxmy( 10, 10, 1, y, 1 ); // $ExpectError + cxmy( 10, '10', 1, y, 1 ); // $ExpectError + cxmy( 10, true, 1, y, 1 ); // $ExpectError + cxmy( 10, false, 1, y, 1 ); // $ExpectError + cxmy( 10, null, 1, y, 1 ); // $ExpectError + cxmy( 10, undefined, 1, y, 1 ); // $ExpectError + cxmy( 10, [ '1' ], 1, y, 1 ); // $ExpectError + cxmy( 10, {}, 1, y, 1 ); // $ExpectError + cxmy( 10, ( x: number ): number => x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy( x.length, x, '10', y, 1 ); // $ExpectError + cxmy( x.length, x, true, y, 1 ); // $ExpectError + cxmy( x.length, x, false, y, 1 ); // $ExpectError + cxmy( x.length, x, null, y, 1 ); // $ExpectError + cxmy( x.length, x, undefined, y, 1 ); // $ExpectError + cxmy( x.length, x, [], y, 1 ); // $ExpectError + cxmy( x.length, x, {}, y, 1 ); // $ExpectError + cxmy( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Complex64Array... +{ + const x = new Complex64Array( 10 ); + + cxmy( 10, x, 1, 10, 1 ); // $ExpectError + cxmy( 10, x, 1, '10', 1 ); // $ExpectError + cxmy( 10, x, 1, true, 1 ); // $ExpectError + cxmy( 10, x, 1, false, 1 ); // $ExpectError + cxmy( 10, x, 1, null, 1 ); // $ExpectError + cxmy( 10, x, 1, undefined, 1 ); // $ExpectError + cxmy( 10, x, 1, [ '1' ], 1 ); // $ExpectError + cxmy( 10, x, 1, {}, 1 ); // $ExpectError + cxmy( 10, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy( x.length, x, 1, y, '10' ); // $ExpectError + cxmy( x.length, x, 1, y, true ); // $ExpectError + cxmy( x.length, x, 1, y, false ); // $ExpectError + cxmy( x.length, x, 1, y, null ); // $ExpectError + cxmy( x.length, x, 1, y, undefined ); // $ExpectError + cxmy( x.length, x, 1, y, [] ); // $ExpectError + cxmy( x.length, x, 1, y, {} ); // $ExpectError + cxmy( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy(); // $ExpectError + cxmy( x.length ); // $ExpectError + cxmy( x.length, x ); // $ExpectError + cxmy( x.length, x, 1 ); // $ExpectError + cxmy( x.length, x, 1, y ); // $ExpectError + cxmy( x.length, x, 1, y, 1, 10 ); // $ExpectError +} + +// Attached to the main export is an `ndarray` method which returns a Complex64Array... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType Complex64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy.ndarray( '10', x, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Complex64Array... +{ + const y = new Complex64Array( 10 ); + + cxmy.ndarray( 10, 10, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, '10', 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, true, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, false, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, null, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, undefined, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, [ '1' ], 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, {}, 1, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, ( x: number ): number => x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy.ndarray( x.length, x, '10', 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy.ndarray( x.length, x, 1, '10', y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a Complex64Array... +{ + const x = new Complex64Array( 10 ); + + cxmy.ndarray( 10, x, 1, 0, 10, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, x, 1, 0, '10', 1, 0 ); // $ExpectError + cxmy.ndarray( 10, x, 1, 0, true, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, x, 1, 0, false, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, x, 1, 0, null, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, x, 1, 0, undefined, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + cxmy.ndarray( 10, x, 1, 0, {}, 1, 0 ); // $ExpectError + cxmy.ndarray( 10, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy.ndarray( x.length, x, 1, 0, y, '10', 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy.ndarray( x.length, x, 1, 0, y, 1, '10' ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Complex64Array( 10 ); + const y = new Complex64Array( 10 ); + + cxmy.ndarray(); // $ExpectError + cxmy.ndarray( x.length ); // $ExpectError + cxmy.ndarray( x.length, x ); // $ExpectError + cxmy.ndarray( x.length, x, 1 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + cxmy.ndarray( x.length, x, 1, 0, y, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/cxmy/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/cxmy/examples/c/example.c new file mode 100644 index 000000000000..c9ec95c71ce9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/examples/c/example.c @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/cxmy.h" +#include "stdlib/complex/float32/ctor.h" +#include "stdlib/complex/float32/real.h" +#include "stdlib/complex/float32/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex64_t x[] = { + stdlib_complex64( 1.0f, 2.0f ), + stdlib_complex64( 3.0f, 4.0f ), + stdlib_complex64( 5.0f, 6.0f ), + stdlib_complex64( 7.0f, 8.0f ) + }; + stdlib_complex64_t y[] = { + stdlib_complex64( 2.0f, 3.0f ), + stdlib_complex64( 4.0f, 5.0f ), + stdlib_complex64( 6.0f, 7.0f ), + stdlib_complex64( 8.0f, 9.0f ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Multiply `x` by `y` and assign the results to `y`: + stdlib_strided_cxmy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "y[ %i ] = %f + %fi\n", i, stdlib_complex64_real( y[ i ] ), stdlib_complex64_imag( y[ i ] ) ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/examples/index.js new file mode 100644 index 000000000000..32112d2d4720 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/examples/index.js @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var logEach = require( '@stdlib/console/log-each' ); +var cxmy = require( './../lib' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float32' +}); +var ybuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float32' +}); +var x = new Complex64Array( xbuf.buffer ); +var y = new Complex64Array( ybuf.buffer ); + +cxmy( x.length, x, 1, y, 1 ); +logEach( '%s', y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/cxmy/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +function cxmy( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = cxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/cxmy.native.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/cxmy.native.js new file mode 100644 index 000000000000..dd502f11fb3b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/cxmy.native.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Complex64Array} y - output array +* @param {integer} strideY - `y` stride length +* @returns {Complex64Array} output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* cxmy( x.length, x, 1, y, 1 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +function cxmy( N, x, strideX, y, strideY ) { + var viewX = reinterpret( x, 0 ); + var viewY = reinterpret( y, 0 ); + addon( N, viewX, strideX, viewY, strideY ); + return y; +} + + +// EXPORTS // + +module.exports = cxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/index.js new file mode 100644 index 000000000000..125633acb3a3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/index.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Multiply elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assign the results to `y`. +* +* @module @stdlib/blas/ext/base/cxmy +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var cxmy = require( '@stdlib/blas/ext/base/cxmy' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* cxmy( x.length, x, 1, y, 1 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* var cxmy = require( '@stdlib/blas/ext/base/cxmy' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* cxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var cxmy; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + cxmy = main; +} else { + cxmy = tmp; +} + + +// EXPORTS // + +module.exports = cxmy; + +// exports: { "ndarray": "cxmy.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/main.js new file mode 100644 index 000000000000..657c2064b997 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var cxmy = require( './cxmy.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( cxmy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = cxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/native.js new file mode 100644 index 000000000000..24a219fbef6b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var cxmy = require( './cxmy.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( cxmy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = cxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/ndarray.js new file mode 100644 index 000000000000..9709892e4f45 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/ndarray.js @@ -0,0 +1,118 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable max-len */ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); +var cmulf = require( '@stdlib/complex/float32/base/mul' ).assign; + + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex64Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Complex64Array} output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* cxmy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +function cxmy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var xview; + var yview; + var ix; + var iy; + var sx; + var sy; + var m; + var i; + + if ( N <= 0 ) { + return y; + } + + // Reinterpret the complex input arrays as real-valued arrays: + xview = reinterpret( x, 0 ); + yview = reinterpret( y, 0 ); + + // Adjust the strides and offsets according to the real-valued arrays: + ix = offsetX * 2; + iy = offsetY * 2; + sx = strideX * 2; + sy = strideY * 2; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideY === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + cmulf( xview[ ix ], xview[ ix+1 ], yview[ iy ], yview[ iy+1 ], yview, 1, iy ); + ix += sx; + iy += sy; + } + } + if ( N < M ) { + return y; + } + for ( i = m; i < N; i += M ) { + cmulf( xview[ ix ], xview[ ix+1 ], yview[ iy ], yview[ iy+1 ], yview, 1, iy ); + cmulf( xview[ ix+2 ], xview[ ix+3 ], yview[ iy+2 ], yview[ iy+3 ], yview, 1, iy+2 ); + cmulf( xview[ ix+4 ], xview[ ix+5 ], yview[ iy+4 ], yview[ iy+5 ], yview, 1, iy+4 ); + cmulf( xview[ ix+6 ], xview[ ix+7 ], yview[ iy+6 ], yview[ iy+7 ], yview, 1, iy+6 ); + cmulf( xview[ ix+8 ], xview[ ix+9 ], yview[ iy+8 ], yview[ iy+9 ], yview, 1, iy+8 ); + ix += M * 2; + iy += M * 2; + } + return y; + } + for ( i = 0; i < N; i++ ) { + cmulf( xview[ ix ], xview[ ix+1 ], yview[ iy ], yview[ iy+1 ], yview, 1, iy ); + ix += sx; + iy += sy; + } + return y; +} + + +// EXPORTS // + +module.exports = cxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/ndarray.native.js new file mode 100644 index 000000000000..dc48457aa6ed --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/lib/ndarray.native.js @@ -0,0 +1,60 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex64Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Complex64Array} output array +* +* @example +* var Complex64Array = require( '@stdlib/array/complex64' ); +* +* var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* cxmy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +function cxmy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var viewX = reinterpret( x, 0 ); + var viewY = reinterpret( y, 0 ); + addon.ndarray( N, viewX, strideX, offsetX, viewY, strideY, offsetY ); + return y; +} + + +// EXPORTS // + +module.exports = cxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/cxmy/manifest.json new file mode 100644 index 000000000000..8f6292546164 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/manifest.json @@ -0,0 +1,108 @@ +{ + "options": { + "task": "build", + "wasm": false + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float32/base/mul", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-complex64array" + ] + }, + { + "task": "benchmark", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float32/base/mul", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float32/base/mul", + "@stdlib/complex/float32/real", + "@stdlib/complex/float32/imag", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "build", + "wasm": true, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float32/base/mul", + "@stdlib/complex/float32/ctor", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/package.json b/lib/node_modules/@stdlib/blas/ext/base/cxmy/package.json new file mode 100644 index 000000000000..0af9260528b2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/package.json @@ -0,0 +1,82 @@ +{ + "name": "@stdlib/blas/ext/base/cxmy", + "version": "0.0.0", + "description": "Multiply elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assign the results to `y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "linear", + "algebra", + "subroutines", + "multiply", + "transform", + "strided", + "array", + "ndarray", + "vector", + "xmy", + "cxmy", + "complex", + "complex64", + "complex64array", + "float32", + "single" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/cxmy/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/cxmy/src/addon.c new file mode 100644 index 000000000000..7ff628896864 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/src/addon.c @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/cxmy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_complex64array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, Y, N, strideY, argv, 3 ); + API_SUFFIX(stdlib_strided_cxmy)( N, (stdlib_complex64_t *)X, strideX, (stdlib_complex64_t *)Y, strideY ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 7 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_INT64( env, offsetY, argv, 6 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX64ARRAY( env, Y, N, strideY, argv, 4 ); + API_SUFFIX(stdlib_strided_cxmy_ndarray)( N, (stdlib_complex64_t *)X, strideX, offsetX, (stdlib_complex64_t *)Y, strideY, offsetY ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/cxmy/src/main.c new file mode 100644 index 000000000000..9fc2c08cba00 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/src/main.c @@ -0,0 +1,96 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/cxmy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/complex/float32/base/mul.h" +#include "stdlib/strided/base/stride2offset.h" + +static const CBLAS_INT M = 5; + +/** +* Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param Y output array +* @param strideY stride length for `Y` +*/ +void API_SUFFIX(stdlib_strided_cxmy)( const CBLAS_INT N, const stdlib_complex64_t *X, const CBLAS_INT strideX, stdlib_complex64_t *Y, const CBLAS_INT strideY ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oy = stdlib_strided_stride2offset( N, strideY ); + API_SUFFIX(stdlib_strided_cxmy_ndarray)( N, X, strideX, ox, Y, strideY, oy ); +} + +/** +* Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param offsetX starting index for `X` +* @param Y output array +* @param strideY stride length for `Y` +* @param offsetY starting index for `Y` +*/ +void API_SUFFIX(stdlib_strided_cxmy_ndarray)( const CBLAS_INT N, const stdlib_complex64_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex64_t *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ) { + CBLAS_INT ix; + CBLAS_INT iy; + CBLAS_INT m; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + iy = offsetY; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX == 1 && strideY == 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + Y[ iy ] = stdlib_base_complex64_mul( X[ ix ], Y[ iy ] ); + ix += strideX; + iy += strideY; + } + } + if ( N < M ) { + return; + } + for ( i = m; i < N; i += M ) { + Y[ iy ] = stdlib_base_complex64_mul( X[ ix ], Y[ iy ] ); + Y[ iy+1 ] = stdlib_base_complex64_mul( X[ ix+1 ], Y[ iy+1 ] ); + Y[ iy+2 ] = stdlib_base_complex64_mul( X[ ix+2 ], Y[ iy+2 ] ); + Y[ iy+3 ] = stdlib_base_complex64_mul( X[ ix+3 ], Y[ iy+3 ] ); + Y[ iy+4 ] = stdlib_base_complex64_mul( X[ ix+4 ], Y[ iy+4 ] ); + ix += M; + iy += M; + } + return; + } + for ( i = 0; i < N; i++ ) { + Y[ iy ] = stdlib_base_complex64_mul( X[ ix ], Y[ iy ] ); + ix += strideX; + iy += strideY; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.cxmy.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.cxmy.js new file mode 100644 index 000000000000..803d5bc09c86 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.cxmy.js @@ -0,0 +1,321 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var cmulf = require( '@stdlib/complex/float32/base/mul' ); +var cxmy = require( './../lib/cxmy.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( cxmy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + cxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex64Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + expected = new Complex64Array([ + // (1.0*5.0-2.0*6.0) + (1.0*6.0+2.0*5.0)i + -7.0, + 16.0, + // (3.0*7.0-4.0*8.0) + (3.0*8.0+4.0*7.0)i + -11.0, + 52.0 + ]); + + cxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + out = cxmy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + cxmy( 0, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + cxmy( -4, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 5.0, // 1 + 6.0, // 1 + 0.0, + 0.0, + 9.0, // 2 + 10.0 // 2 + ]); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (5.0*4.0-6.0*5.0) + (5.0*5.0+6.0*4.0)i + -10.0, + 49.0, + // (9.0*6.0-10.0*7.0) + (9.0*7.0+10.0*6.0)i + -16.0, + 123.0 + ]); + + cxmy( 3, x, 2, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array([ + 2.0, // 0 + 3.0, // 0 + 4.0, + 5.0, + 6.0, // 1 + 7.0, // 1 + 8.0, + 9.0, + 10.0, // 2 + 11.0 // 2 + ]); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + 4.0, + 5.0, + // (3.0*6.0-4.0*7.0) + (3.0*7.0+4.0*6.0)i + -10.0, + 45.0, + 8.0, + 9.0, + // (5.0*10.0-6.0*11.0) + (5.0*11.0+6.0*10.0)i + -16.0, + 115.0 + ]); + + cxmy( 3, x, 1, y, 2 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + y = new Complex64Array([ + 4.0, // 2 + 5.0, // 2 + 3.0, // 1 + 4.0, // 1 + 2.0, // 0 + 3.0 // 0 + ]); + expected = new Complex64Array([ + // (1.0*4.0-2.0*5.0) + (1.0*5.0+2.0*4.0)i + -6.0, + 13.0, + // (3.0*3.0-4.0*4.0) + (3.0*4.0+4.0*3.0)i + -7.0, + 24.0, + // (5.0*2.0-6.0*3.0) + (5.0*3.0+6.0*2.0)i + -8.0, + 27.0 + ]); + + cxmy( 3, x, -2, y, -1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex64Array([ + 10.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + y0 = new Complex64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 2.0, // 0 + 3.0, // 0 + 4.0, // 1 + 5.0, // 1 + 6.0, // 2 + 7.0 // 2 + ]); + + x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + cxmy( 3, x1, 1, y1, 1 ); + t.strictEqual( isSameComplex64Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex64Array( 100 ); + y = new Complex64Array( 100 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex64( i, 0.0 ); + yv = new Complex64( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmulf( xv, yv ), i ); + } + cxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + x = new Complex64Array( 240 ); + y = new Complex64Array( 240 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex64( i, 0.0 ); + yv = new Complex64( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmulf( xv, yv ), i ); + } + cxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.cxmy.native.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.cxmy.native.js new file mode 100644 index 000000000000..07fc3f969852 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.cxmy.native.js @@ -0,0 +1,330 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var cmulf = require( '@stdlib/complex/float32/base/mul' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var cxmy = tryRequire( resolve( __dirname, './../lib/cxmy.native.js' ) ); +var opts = { + 'skip': ( cxmy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( cxmy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + cxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex64Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + expected = new Complex64Array([ + // (1.0*5.0-2.0*6.0) + (1.0*6.0+2.0*5.0)i + -7.0, + 16.0, + // (3.0*7.0-4.0*8.0) + (3.0*8.0+4.0*7.0)i + -11.0, + 52.0 + ]); + + cxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + out = cxmy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + cxmy( 0, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + cxmy( -4, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 5.0, // 1 + 6.0, // 1 + 0.0, + 0.0, + 9.0, // 2 + 10.0 // 2 + ]); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (5.0*4.0-6.0*5.0) + (5.0*5.0+6.0*4.0)i + -10.0, + 49.0, + // (9.0*6.0-10.0*7.0) + (9.0*7.0+10.0*6.0)i + -16.0, + 123.0 + ]); + + cxmy( 3, x, 2, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array([ + 2.0, // 0 + 3.0, // 0 + 4.0, + 5.0, + 6.0, // 1 + 7.0, // 1 + 8.0, + 9.0, + 10.0, // 2 + 11.0 // 2 + ]); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + 4.0, + 5.0, + // (3.0*6.0-4.0*7.0) + (3.0*7.0+4.0*6.0)i + -10.0, + 45.0, + 8.0, + 9.0, + // (5.0*10.0-6.0*11.0) + (5.0*11.0+6.0*10.0)i + -16.0, + 115.0 + ]); + + cxmy( 3, x, 1, y, 2 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + y = new Complex64Array([ + 4.0, // 2 + 5.0, // 2 + 3.0, // 1 + 4.0, // 1 + 2.0, // 0 + 3.0 // 0 + ]); + expected = new Complex64Array([ + // (1.0*4.0-2.0*5.0) + (1.0*5.0+2.0*4.0)i + -6.0, + 13.0, + // (3.0*3.0-4.0*4.0) + (3.0*4.0+4.0*3.0)i + -7.0, + 24.0, + // (5.0*2.0-6.0*3.0) + (5.0*3.0+6.0*2.0)i + -8.0, + 27.0 + ]); + + cxmy( 3, x, -2, y, -1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex64Array([ + 10.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + y0 = new Complex64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 2.0, // 0 + 3.0, // 0 + 4.0, // 1 + 5.0, // 1 + 6.0, // 2 + 7.0 // 2 + ]); + + x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + cxmy( 3, x1, 1, y1, 1 ); + t.strictEqual( isSameComplex64Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex64Array( 100 ); + y = new Complex64Array( 100 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex64( i, 0.0 ); + yv = new Complex64( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmulf( xv, yv ), i ); + } + cxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + x = new Complex64Array( 240 ); + y = new Complex64Array( 240 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex64( i, 0.0 ); + yv = new Complex64( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmulf( xv, yv ), i ); + } + cxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.js new file mode 100644 index 000000000000..172868a9a2fb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var cxmy = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof cxmy.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var cxmy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( cxmy, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var cxmy; + var main; + + main = require( './../lib/cxmy.js' ); + + cxmy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( cxmy, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.ndarray.js new file mode 100644 index 000000000000..336080015e82 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.ndarray.js @@ -0,0 +1,321 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var cmulf = require( '@stdlib/complex/float32/base/mul' ); +var cxmy = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( cxmy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + cxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex64Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + expected = new Complex64Array([ + // (1.0*5.0-2.0*6.0) + (1.0*6.0+2.0*5.0)i + -7.0, + 16.0, + // (3.0*7.0-4.0*8.0) + (3.0*8.0+4.0*7.0)i + -11.0, + 52.0 + ]); + + cxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + out = cxmy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + cxmy( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + cxmy( -4, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 5.0, // 1 + 6.0, // 1 + 0.0, + 0.0, + 9.0, // 2 + 10.0 // 2 + ]); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (5.0*4.0-6.0*5.0) + (5.0*5.0+6.0*4.0)i + -10.0, + 49.0, + // (9.0*6.0-10.0*7.0) + (9.0*7.0+10.0*6.0)i + -16.0, + 123.0 + ]); + + cxmy( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array([ + 2.0, // 0 + 3.0, // 0 + 4.0, + 5.0, + 6.0, // 1 + 7.0, // 1 + 8.0, + 9.0, + 10.0, // 2 + 11.0 // 2 + ]); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + 4.0, + 5.0, + // (3.0*6.0-4.0*7.0) + (3.0*7.0+4.0*6.0)i + -10.0, + 45.0, + 8.0, + 9.0, + // (5.0*10.0-6.0*11.0) + (5.0*11.0+6.0*10.0)i + -16.0, + 115.0 + ]); + + cxmy( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + y = new Complex64Array([ + 4.0, // 2 + 5.0, // 2 + 3.0, // 1 + 4.0, // 1 + 2.0, // 0 + 3.0 // 0 + ]); + expected = new Complex64Array([ + // (1.0*4.0-2.0*5.0) + (1.0*5.0+2.0*4.0)i + -6.0, + 13.0, + // (3.0*3.0-4.0*4.0) + (3.0*4.0+4.0*3.0)i + -7.0, + 24.0, + // (5.0*2.0-6.0*3.0) + (5.0*3.0+6.0*2.0)i + -8.0, + 27.0 + ]); + + cxmy( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex64Array([ + 10.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + y0 = new Complex64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 2.0, // 0 + 3.0, // 0 + 4.0, // 1 + 5.0, // 1 + 6.0, // 2 + 7.0 // 2 + ]); + + x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + cxmy( 3, x1, 1, 0, y1, 1, 0 ); + t.strictEqual( isSameComplex64Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex64Array( 100 ); + y = new Complex64Array( 100 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex64( i, 0.0 ); + yv = new Complex64( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmulf( xv, yv ), i ); + } + cxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + x = new Complex64Array( 240 ); + y = new Complex64Array( 240 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex64( i, 0.0 ); + yv = new Complex64( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmulf( xv, yv ), i ); + } + cxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.ndarray.native.js new file mode 100644 index 000000000000..20acca59aa89 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/cxmy/test/test.ndarray.native.js @@ -0,0 +1,330 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var Complex64 = require( '@stdlib/complex/float32/ctor' ); +var cmulf = require( '@stdlib/complex/float32/base/mul' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var cxmy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( cxmy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', opts, function test( t ) { + t.strictEqual( cxmy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + cxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex64Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + expected = new Complex64Array([ + // (1.0*5.0-2.0*6.0) + (1.0*6.0+2.0*5.0)i + -7.0, + 16.0, + // (3.0*7.0-4.0*8.0) + (3.0*8.0+4.0*7.0)i + -11.0, + 52.0 + ]); + + cxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + out = cxmy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + cxmy( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + cxmy( -4, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 5.0, // 1 + 6.0, // 1 + 0.0, + 0.0, + 9.0, // 2 + 10.0 // 2 + ]); + y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (5.0*4.0-6.0*5.0) + (5.0*5.0+6.0*4.0)i + -10.0, + 49.0, + // (9.0*6.0-10.0*7.0) + (9.0*7.0+10.0*6.0)i + -16.0, + 123.0 + ]); + + cxmy( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex64Array([ + 2.0, // 0 + 3.0, // 0 + 4.0, + 5.0, + 6.0, // 1 + 7.0, // 1 + 8.0, + 9.0, + 10.0, // 2 + 11.0 // 2 + ]); + expected = new Complex64Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + 4.0, + 5.0, + // (3.0*6.0-4.0*7.0) + (3.0*7.0+4.0*6.0)i + -10.0, + 45.0, + 8.0, + 9.0, + // (5.0*10.0-6.0*11.0) + (5.0*11.0+6.0*10.0)i + -16.0, + 115.0 + ]); + + cxmy( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex64Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + y = new Complex64Array([ + 4.0, // 2 + 5.0, // 2 + 3.0, // 1 + 4.0, // 1 + 2.0, // 0 + 3.0 // 0 + ]); + expected = new Complex64Array([ + // (1.0*4.0-2.0*5.0) + (1.0*5.0+2.0*4.0)i + -6.0, + 13.0, + // (3.0*3.0-4.0*4.0) + (3.0*4.0+4.0*3.0)i + -7.0, + 24.0, + // (5.0*2.0-6.0*3.0) + (5.0*3.0+6.0*2.0)i + -8.0, + 27.0 + ]); + + cxmy( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex64Array([ + 10.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + y0 = new Complex64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 2.0, // 0 + 3.0, // 0 + 4.0, // 1 + 5.0, // 1 + 6.0, // 2 + 7.0 // 2 + ]); + + x1 = new Complex64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex64Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + cxmy( 3, x1, 1, 0, y1, 1, 0 ); + t.strictEqual( isSameComplex64Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex64Array( 100 ); + y = new Complex64Array( 100 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex64( i, 0.0 ); + yv = new Complex64( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmulf( xv, yv ), i ); + } + cxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + x = new Complex64Array( 240 ); + y = new Complex64Array( 240 ); + expected = new Complex64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex64( i, 0.0 ); + yv = new Complex64( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmulf( xv, yv ), i ); + } + cxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex64Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dcartesian-power/README.md b/lib/node_modules/@stdlib/blas/ext/base/dcartesian-power/README.md index 5ffba9146ba6..375e6c5a5b81 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dcartesian-power/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/dcartesian-power/README.md @@ -110,8 +110,8 @@ The function has the following parameters: - **strideX**: stride length for `x`. - **offsetX**: starting index for `x`. - **out**: output [`Float64Array`][@stdlib/array/float64]. -- **strideOut1**: stride length of the first dimension of `out`. -- **strideOut2**: stride length of the second dimension of `out`. +- **strideOut1**: stride length for the first dimension of `out`. +- **strideOut2**: stride length for the second dimension of `out`. - **offsetOut**: starting index for `out`. While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to access only the last two elements: @@ -247,8 +247,8 @@ The function accepts the following arguments: - **strideX**: `[in] CBLAS_INT` stride length for `X`. - **offsetX**: `[in] CBLAS_INT` starting index for `X`. - **Out**: `[out] double*` output array. -- **strideOut1**: `[in] CBLAS_INT` stride length of the first dimension of `Out`. -- **strideOut2**: `[in] CBLAS_INT` stride length of the second dimension of `Out`. +- **strideOut1**: `[in] CBLAS_INT` stride length for the first dimension of `Out`. +- **strideOut2**: `[in] CBLAS_INT` stride length for the second dimension of `Out`. - **offsetOut**: `[in] CBLAS_INT` starting index for `Out`. ```c diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/README.md new file mode 100644 index 000000000000..3df4eb351194 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/README.md @@ -0,0 +1,294 @@ + + +# dfillEqual + +> Replace double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + +
+ +## Usage + +```javascript +var dfillEqual = require( '@stdlib/blas/ext/base/dfill-equal' ); +``` + +#### dfillEqual( N, searchElement, alpha, x, strideX ) + +Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] ); + +dfillEqual( x.length, 0.0, 5.0, x, 1 ); +// x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **alpha**: scalar constant. +- **x**: input [`Float64Array`][@stdlib/array/float64]. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 0.0, 1.0, 0.0, -5.0, 4.0, 0.0, -1.0, 0.0 ] ); + +dfillEqual( 4, 0.0, 5.0, x, 2 ); +// x => [ 5.0, 1.0, 5.0, -5.0, 4.0, 0.0, -1.0, 0.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array: +var x0 = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, -5.0, 0.0 ] ); + +// Create an offset view: +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +dfillEqual( 3, 0.0, 5.0, x1, 2 ); +// x0 => [ 1.0, 5.0, 3.0, 5.0, -5.0, 5.0 ] +``` + +#### dfillEqual.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + +Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] ); + +dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +// x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] ); + +dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, x.length-3 ); +// x => [ -2.0, 0.0, 3.0, 0.0, 4.0, 5.0, -1.0, -3.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. +- When comparing elements, both functions check for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct, and `-0` and `+0` are considered the same. To replace `NaN` values, use [`@stdlib/blas/ext/base/dfill-nan`][@stdlib/blas/ext/base/dfill-nan]. + +
+ + + +
+ +## Examples + + + +```javascript +var zeros = require( '@stdlib/array/zeros' ); +var dfillEqual = require( '@stdlib/blas/ext/base/dfill-equal' ); + +var x = zeros( 10, 'float64' ); +console.log( x ); + +dfillEqual( x.length, 0.0, 5.0, x, 1 ); +console.log( x ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/dfill_equal.h" +``` + +#### stdlib_strided_dfill_equal( N, searchElement, alpha, \*X, strideX ) + +Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + +```c +double x[] = { -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 }; + +stdlib_strided_dfill_equal( 8, 0.0, 5.0, x, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] double` search element. +- **alpha**: `[in] double` scalar constant. +- **X**: `[inout] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. + +```c +void stdlib_strided_dfill_equal( const CBLAS_INT N, const double searchElement, const double alpha, double *X, const CBLAS_INT strideX ); +``` + + + +#### stdlib_strided_dfill_equal_ndarray( N, searchElement, alpha, \*X, strideX, offsetX ) + + + +Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```c +double x[] = { -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 }; + +stdlib_strided_dfill_equal_ndarray( 8, 0.0, 5.0, x, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] double` search element. +- **alpha**: `[in] double` scalar constant. +- **X**: `[inout] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **offsetX**: `[in] CBLAS_INT` starting index. + +```c +void stdlib_strided_dfill_equal_ndarray( const CBLAS_INT N, const double searchElement, const double alpha, double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/dfill_equal.h" +#include + +int main( void ) { + // Create a strided array: + double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace equal elements: + stdlib_strided_dfill_equal( N, 5.0, 10.0, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %lf\n", i, x[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..0037ef0bbb98 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfillEqual = require( './../lib/dfill_equal.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillEqual( x.length, i, i+1, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.native.js new file mode 100644 index 000000000000..ef13b653bea1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfillEqual = tryRequire( resolve( __dirname, './../lib/dfill_equal.native.js' ) ); +var opts = { + 'skip': ( dfillEqual instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillEqual( x.length, i, i+1, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..97dc4fe12052 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfillEqual = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..b8eea7279610 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfillEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfillEqual instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/dfill-equal/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..a9ce7bcb5e74 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/benchmark/c/benchmark.length.c @@ -0,0 +1,199 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_equal.h" +#include +#include +#include +#include +#include + +#define NAME "dfill-equal" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double t; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0; + } else { + x[ i ] = ( rand_double()*200.0 ) - 100.0; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_dfill_equal( len, (double)i, (double)(i+1), x, 1 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double t; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0; + } else { + x[ i ] = ( rand_double()*200.0 ) - 100.0; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_dfill_equal_ndarray( len, (double)i, (double)(i+1), x, 1, 0 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/docs/repl.txt new file mode 100644 index 000000000000..736a3bd1fd70 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/docs/repl.txt @@ -0,0 +1,104 @@ + +{{alias}}( N, searchElement, alpha, x, strideX ) + Replaces double-precision floating-point strided array elements equal to a + provided search element with a specified scalar constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + alpha: number + Scalar constant. + + x: Float64Array + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: Float64Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > {{alias}}( x.length, 0.0, 5.0, x, 1 ) + [ 5.0, 5.0, 1.0, 5.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > {{alias}}( 2, 0.0, 5.0, x, 2 ) + [ 5.0, 0.0, 1.0, 0.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 2, 0.0, 5.0, x1, 2 ) + [ 5.0, 1.0, 5.0 ] + > x0 + [ 0.0, 5.0, 1.0, 5.0 ] + + +{{alias}}.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + Replaces double-precision floating-point strided array elements equal to a + provided search element with a specified scalar constant using alternative + indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + alpha: number + Scalar constant. + + x: Float64Array + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: Float64Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > {{alias}}.ndarray( x.length, 0.0, 5.0, x, 1, 0 ) + [ 5.0, 5.0, 1.0, 5.0 ] + + // Using an index offset: + > var x = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > {{alias}}.ndarray( 2, 0.0, 5.0, x, 2, 1 ) + [ 0.0, 5.0, 1.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..66a4a4f8437e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/docs/types/index.d.ts @@ -0,0 +1,98 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `dfillEqual`. +*/ +interface Routine { + /** + * Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * dfillEqual( x.length, 0.0, 5.0, x, 1 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + */ + ( N: number, searchElement: number, alpha: number, x: Float64Array, strideX: number ): Float64Array; + + /** + * Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + */ + ndarray( N: number, searchElement: number, alpha: number, x: Float64Array, strideX: number, offsetX: number ): Float64Array; +} + +/** +* Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* dfillEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +declare var dfillEqual: Routine; + + +// EXPORTS // + +export = dfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/docs/types/test.ts new file mode 100644 index 000000000000..4a6c75ccbab8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/docs/types/test.ts @@ -0,0 +1,217 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dfillEqual = require( './index' ); + + +// TESTS // + +// The function returns a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillEqual( x.length, 0.0, 5.0, x, 1 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillEqual( '10', 0.0, 5.0, x, 1 ); // $ExpectError + dfillEqual( true, 0.0, 5.0, x, 1 ); // $ExpectError + dfillEqual( false, 0.0, 5.0, x, 1 ); // $ExpectError + dfillEqual( null, 0.0, 5.0, x, 1 ); // $ExpectError + dfillEqual( undefined, 0.0, 5.0, x, 1 ); // $ExpectError + dfillEqual( [], 0.0, 5.0, x, 1 ); // $ExpectError + dfillEqual( {}, 0.0, 5.0, x, 1 ); // $ExpectError + dfillEqual( ( x: number ): number => x, 0.0, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillEqual( x.length, '10', 5.0, x, 1 ); // $ExpectError + dfillEqual( x.length, true, 5.0, x, 1 ); // $ExpectError + dfillEqual( x.length, false, 5.0, x, 1 ); // $ExpectError + dfillEqual( x.length, null, 5.0, x, 1 ); // $ExpectError + dfillEqual( x.length, undefined, 5.0, x, 1 ); // $ExpectError + dfillEqual( x.length, [], 5.0, x, 1 ); // $ExpectError + dfillEqual( x.length, {}, 5.0, x, 1 ); // $ExpectError + dfillEqual( x.length, ( x: number ): number => x, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillEqual( x.length, 0.0, '10', x, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, true, x, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, false, x, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, null, x, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, undefined, x, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, [], x, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, {}, x, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, ( x: number ): number => x, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillEqual( x.length, 0.0, 5.0, 10, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, '10', 1 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, true, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, false, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, null, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, undefined, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, [], 1 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, {}, 1 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillEqual( x.length, 0.0, 5.0, x, '10' ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, x, true ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, x, false ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, x, null ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, x, undefined ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, x, [] ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, x, {} ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + dfillEqual(); // $ExpectError + dfillEqual( x.length ); // $ExpectError + dfillEqual( x.length, 0.0 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0 ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, x ); // $ExpectError + dfillEqual( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillEqual.ndarray( '10', 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( true, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( false, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( null, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( undefined, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( [], 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( {}, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( ( x: number ): number => x, 0.0, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillEqual.ndarray( x.length, '10', 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, true, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, false, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, null, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, undefined, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, [], 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, {}, 5.0, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, ( x: number ): number => x, x, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillEqual.ndarray( x.length, 0.0, '10', x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, true, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, false, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, null, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, undefined, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, [], x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, {}, x, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, ( x: number ): number => x, x, 1, 0 ); // $ExpectError +} + + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillEqual.ndarray( x.length, 0.0, 5.0, 10, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, '10', 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, true, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, false, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, null, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, undefined, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, [], 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, {}, 1, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillEqual.ndarray( x.length, 0.0, 5.0, x, '10', 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, true, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, false, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, null, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, undefined, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, [], 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, {}, 0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, ( x: number ): number => x, x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, '10' ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, true ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, false ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, null ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, undefined ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, [] ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + dfillEqual.ndarray(); // $ExpectError + dfillEqual.ndarray( x.length ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, x ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1 ); // $ExpectError + dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/examples/c/example.c new file mode 100644 index 000000000000..f42bf684529d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_equal.h" +#include + +int main( void ) { + // Create a strided array: + double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace equal elements: + stdlib_strided_dfill_equal( N, 5.0, 10.0, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %lf\n", i, x[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/examples/index.js new file mode 100644 index 000000000000..3133e56bd8ca --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/examples/index.js @@ -0,0 +1,28 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var zeros = require( '@stdlib/array/zeros' ); +var dfillEqual = require( './../lib' ); + +var x = zeros( 10, 'float64' ); +console.log( x ); + +dfillEqual( x.length, 0.0, 5.0, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function dfillEqual( N, searchElement, alpha, x, strideX ) { + return ndarray( N, searchElement, alpha, x, strideX, stride2offset( N, strideX ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/dfill_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/dfill_equal.native.js new file mode 100644 index 000000000000..88ba9c690617 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/dfill_equal.native.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length +* @returns {Float64Array} input array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* dfillEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function dfillEqual( N, searchElement, alpha, x, strideX ) { + addon( N, searchElement, alpha, x, strideX ); + return x; +} + + +// EXPORTS // + +module.exports = dfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/index.js new file mode 100644 index 000000000000..c48e39392547 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/index.js @@ -0,0 +1,68 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/dfill-equal +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dfillEqual = require( '@stdlib/blas/ext/base/dfill-equal' ); +* +* var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* dfillEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dfillEqual = require( '@stdlib/blas/ext/base/dfill-equal' ); +* +* var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var dfillEqual; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + dfillEqual = main; +} else { + dfillEqual = tmp; +} + + +// EXPORTS // + +module.exports = dfillEqual; + +// exports: { "ndarray": "dfillEqual.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/main.js new file mode 100644 index 000000000000..3ef5f189d4da --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dfillEqual = require( './dfill_equal.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( dfillEqual, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/native.js new file mode 100644 index 000000000000..568899122f11 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dfillEqual = require( './dfill_equal.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( dfillEqual, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/ndarray.js new file mode 100644 index 000000000000..25a25e9f5f6e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/ndarray.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length +* @param {integer} offsetX - starting index +* @returns {Float64Array} input array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* dfillEqual( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function dfillEqual( N, searchElement, alpha, x, strideX, offsetX ) { + var ix; + var i; + + if ( N <= 0 ) { + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] === searchElement ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = dfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/ndarray.native.js new file mode 100644 index 000000000000..3feaed5b57c4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/lib/ndarray.native.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length +* @param {integer} offsetX - starting index +* @returns {Float64Array} input array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* dfillEqual( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function dfillEqual( N, searchElement, alpha, x, strideX, offsetX ) { + addon.ndarray( N, searchElement, alpha, x, strideX, offsetX ); + return x; +} + + +// EXPORTS // + +module.exports = dfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/manifest.json new file mode 100644 index 000000000000..13cc0c24361f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/manifest.json @@ -0,0 +1,79 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-double", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float64array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/package.json new file mode 100644 index 000000000000..7b950b945b96 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/blas/ext/base/dfill-equal", + "version": "0.0.0", + "description": "Replace double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "equal", + "same", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "float64", + "double", + "float64array" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/src/addon.c new file mode 100644 index 000000000000..f081a7ed24a1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/src/addon.c @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_double.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 3 ); + API_SUFFIX(stdlib_strided_dfill_equal)( N, searchElement, alpha, X, strideX ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 3 ); + API_SUFFIX(stdlib_strided_dfill_equal_ndarray)( N, searchElement, alpha, X, strideX, offsetX ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/src/main.c new file mode 100644 index 000000000000..4da679d84f04 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/src/main.c @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/strided/base/stride2offset.h" + +/** +* Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +* +* @param N number of indexed elements +* @param searchElement search element +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +*/ +void API_SUFFIX(stdlib_strided_dfill_equal)( const CBLAS_INT N, const double searchElement, const double alpha, double *X, const CBLAS_INT strideX ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + API_SUFFIX(stdlib_strided_dfill_equal_ndarray)( N, searchElement, alpha, X, strideX, ox ); +} + +/** +* Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param N number of indexed elements +* @param searchElement search element +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +* @param offsetX starting index +*/ +void API_SUFFIX(stdlib_strided_dfill_equal_ndarray)( const CBLAS_INT N, const double searchElement, const double alpha, double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { + CBLAS_INT ix; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( X[ ix ] == searchElement ) { + X[ ix ] = alpha; + } + ix += strideX; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.dfill_equal.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.dfill_equal.js new file mode 100644 index 000000000000..9ac246a0531f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.dfill_equal.js @@ -0,0 +1,183 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfillEqual = require( './../lib/dfill_equal.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( dfillEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces values equal to the provided `searchElement` in a strided array', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, + 2.0, + 1.0, + 5.0, + -1.0, + 1.0, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 5.0, + 2.0, + 5.0, + 5.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]); + + dfillEqual( x.length, 1.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0 ] ); + expected = new Float64Array( [ 5.0, 2.0 ] ); + + dfillEqual( x.length, 1.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float64Array( [ 0.0, 1.0, 3.0, 1.0, 5.0 ] ); + out = dfillEqual( x.length, 1.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, -4.0, 1.0 ] ); + expected = new Float64Array( [ 1.0, -4.0, 1.0 ] ); + + out = dfillEqual( 0, 1.0, 5.0, x, 1 ); + t.strictEqual( out, x, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]); + + dfillEqual( 3, 1.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 0 + ]); + expected = new Float64Array([ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]); + + dfillEqual( 3, 1.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 1.0, + 1.0, // 0 + 3.0, + 1.0, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 5.0, + 6.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + dfillEqual( 3, 1.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.dfill_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.dfill_equal.native.js new file mode 100644 index 000000000000..ced017ead037 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.dfill_equal.native.js @@ -0,0 +1,192 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfillEqual = tryRequire( resolve( __dirname, './../lib/dfill_equal.native.js' ) ); +var opts = { + 'skip': ( dfillEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( dfillEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces values equal to the provided `searchElement` in a strided array', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, + 2.0, + 1.0, + 5.0, + -1.0, + 1.0, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 5.0, + 2.0, + 5.0, + 5.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]); + + dfillEqual( x.length, 1.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0 ] ); + expected = new Float64Array( [ 5.0, 2.0 ] ); + + dfillEqual( x.length, 1.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float64Array( [ 0.0, 1.0, 3.0, 1.0, 5.0 ] ); + out = dfillEqual( x.length, 1.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, -4.0, 1.0 ] ); + expected = new Float64Array( [ 1.0, -4.0, 1.0 ] ); + + out = dfillEqual( 0, 1.0, 5.0, x, 1 ); + t.strictEqual( out, x, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]); + + dfillEqual( 3, 1.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 0 + ]); + expected = new Float64Array([ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]); + + dfillEqual( 3, 1.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 1.0, + 1.0, // 0 + 3.0, + 1.0, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 5.0, + 6.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + dfillEqual( 3, 1.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.js new file mode 100644 index 000000000000..356ee46e7bf1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dfillEqual = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dfillEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dfillEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfillEqual, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dfillEqual; + var main; + + main = require( './../lib/dfill_equal.js' ); + + dfillEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfillEqual, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.ndarray.js new file mode 100644 index 000000000000..dc0cf8b1a8c6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.ndarray.js @@ -0,0 +1,179 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfillEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( dfillEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces values equal to the provided `searchElement` in a strided array', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, + 2.0, + 1.0, + 5.0, + -1.0, + 1.0, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 5.0, + 2.0, + 5.0, + 5.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]); + + dfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0 ] ); + expected = new Float64Array( [ 5.0, 2.0 ] ); + + dfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, 1.0, 3.0, 1.0, 5.0 ] ); + out = dfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, -4.0, 1.0 ] ); + expected = new Float64Array( [ 1.0, -4.0, 1.0 ] ); + + out = dfillEqual( 0, 1.0, 5.0, x, 1, 0 ); + t.strictEqual( out, x, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]); + + dfillEqual( 3, 1.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 0 + ]); + expected = new Float64Array([ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]); + + dfillEqual( 3, 1.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, + 1.0, // 0 + 3.0, + 1.0, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 5.0, + 6.0 // 2 + ]); + + dfillEqual( 3, 1.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.ndarray.native.js new file mode 100644 index 000000000000..ef2c317587cc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-equal/test/test.ndarray.native.js @@ -0,0 +1,188 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfillEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfillEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( dfillEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces values equal to the provided `searchElement` in a strided array', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, + 2.0, + 1.0, + 5.0, + -1.0, + 1.0, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 5.0, + 2.0, + 5.0, + 5.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]); + + dfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0 ] ); + expected = new Float64Array( [ 5.0, 2.0 ] ); + + dfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, 1.0, 3.0, 1.0, 5.0 ] ); + out = dfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, -4.0, 1.0 ] ); + expected = new Float64Array( [ 1.0, -4.0, 1.0 ] ); + + out = dfillEqual( 0, 1.0, 5.0, x, 1, 0 ); + t.strictEqual( out, x, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]); + + dfillEqual( 3, 1.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 0 + ]); + expected = new Float64Array([ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]); + + dfillEqual( 3, 1.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, + 1.0, // 0 + 3.0, + 1.0, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 5.0, + 6.0 // 2 + ]); + + dfillEqual( 3, 1.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/README.md b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/README.md new file mode 100644 index 000000000000..9679fe77d7c4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/README.md @@ -0,0 +1,284 @@ + + +# dfillNaN + +> Replace double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + +
+ +## Usage + +```javascript +var dfillNaN = require( '@stdlib/blas/ext/base/dfill-nan' ); +``` + +#### dfillNaN( N, alpha, x, strideX ) + +Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + +dfillNaN( x.length, 0.0, x, 1 ); +// x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **alpha**: scalar constant. +- **x**: input [`Float64Array`][@stdlib/array/float64]. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ NaN, 1.0, NaN, -5.0, NaN, 0.0, -1.0, -3.0 ] ); + +dfillNaN( 4, 0.0, x, 2 ); +// x => [ 0.0, 1.0, 0.0, -5.0, 0.0, 0.0, -1.0, -3.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array: +var x0 = new Float64Array( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + +// Create an offset view: +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +dfillNaN( 3, 0.0, x1, 2 ); +// x0 => [ 1.0, 0.0, 3.0, 0.0, 5.0, -6.0 ] +``` + +#### dfillNaN.ndarray( N, alpha, x, strideX, offsetX ) + +Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + +dfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); +// x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + +dfillNaN.ndarray( 3, 0.0, x, 1, x.length-3 ); +// x => [ 1.0, NaN, 3.0, 0.0, 5.0, -6.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var nans = require( '@stdlib/array/nans' ); +var dfillNaN = require( '@stdlib/blas/ext/base/dfill-nan' ); + +var x = nans( 10, 'float64' ); +console.log( x ); + +dfillNaN( x.length, 0.0, x, 1 ); +console.log( x ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/dfill_nan.h" +``` + +#### stdlib_strided_dfill_nan( N, alpha, \*X, strideX ) + +Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + +```c +double x[] = { 1.0, 0.0/0.0, 3.0, 0.0/0.0 }; + +stdlib_strided_dfill_nan( 4, 0.0, x, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] double` scalar constant. +- **X**: `[inout] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. + +```c +void stdlib_strided_dfill_nan( const CBLAS_INT N, const double alpha, double *X, const CBLAS_INT strideX ); +``` + +#### stdlib_strided_dfill_nan_ndarray( N, alpha, \*X, strideX, offsetX ) + +Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. + +```c +double x[] = { 1.0, 0.0/0.0, 3.0, 0.0/0.0 }; + +stdlib_strided_dfill_nan_ndarray( 4, 0.0, x, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] double` scalar constant. +- **X**: `[inout] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **offsetX**: `[in] CBLAS_INT` starting index. + +```c +void stdlib_strided_dfill_nan_ndarray( const CBLAS_INT N, const double alpha, double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/dfill_nan.h" +#include + +int main( void ) { + // Create a strided array: + double x[] = { 1.0, 0.0/0.0, 3.0, 0.0/0.0, 5.0, -6.0, 7.0, 0.0/0.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace elements equal to `NaN`: + stdlib_strided_dfill_nan( N, 0.0, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %lf\n", i, x[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.js new file mode 100644 index 000000000000..6f39de7f7eed --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfillNaN = require( './../lib/dfill_nan.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillNaN( x.length, 0.0, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.native.js new file mode 100644 index 000000000000..71a63405fada --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfillNaN = tryRequire( resolve( __dirname, './../lib/dfill_nan.native.js' ) ); +var opts = { + 'skip': ( dfillNaN instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillNaN( x.length, 0.0, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..352f5d62553d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.ndarray.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfillNaN = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillNaN( x.length, 0.0, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..cf6c688bc9bf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfillNaN = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfillNaN instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillNaN( x.length, 0.0, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/dfill-nan/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..7ffc683135f9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/benchmark/c/benchmark.length.c @@ -0,0 +1,199 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_nan.h" +#include +#include +#include +#include +#include + +#define NAME "dfill-nan" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double t; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0 / 0.0; + } else { + x[ i ] = ( rand_double()*200.0 ) - 100.0; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_dfill_nan( len, 0.0, x, 1 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double t; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0 / 0.0; + } else { + x[ i ] = ( rand_double()*200.0 ) - 100.0; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_dfill_nan_ndarray( len, 0.0, x, 1, 0 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/docs/repl.txt new file mode 100644 index 000000000000..0d9ccb622c0e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/docs/repl.txt @@ -0,0 +1,97 @@ + +{{alias}}( N, alpha, x, strideX ) + Replaces double-precision floating-point strided array elements equal to + `NaN` with a specified scalar constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: number + Scalar constant. + + x: Float64Array + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: Float64Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float64}}( [ NaN, 1.0, 3.0, NaN ] ); + > {{alias}}( x.length, 0.0, x, 1 ) + [ 0.0, 1.0, 3.0, 0.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float64}}( [ NaN, 1.0, NaN, -5.0, NaN ] ); + > {{alias}}( 3, 0.0, x, 2 ) + [ 0.0, 1.0, 0.0, -5.0, 0.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 2, 0.0, x1, 2 ) + [ 0.0, 3.0, 0.0, 5.0, -6.0 ] + > x0 + [ 1.0, 0.0, 3.0, 0.0, 5.0, -6.0 ] + + +{{alias}}.ndarray( N, alpha, x, strideX, offsetX ) + Replaces double-precision floating-point strided array elements equal to + `NaN` with a specified scalar constant using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: number + Scalar constant. + + x: Float64Array + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: Float64Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float64}}( [ NaN, 1.0, 3.0, NaN ] ); + > {{alias}}.ndarray( x.length, 0.0, x, 1, 0 ) + [ 0.0, 1.0, 3.0, 0.0 ] + + // Using an index offset: + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + > {{alias}}.ndarray( 3, 0.0, x, 2, 1 ) + [ 1.0, 0.0, 3.0, 0.0, 5.0, -6.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/docs/types/index.d.ts new file mode 100644 index 000000000000..a59e21fee9ca --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/docs/types/index.d.ts @@ -0,0 +1,95 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `dfillNaN`. +*/ +interface Routine { + /** + * Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + * + * dfillNaN( x.length, 0.0, x, 1 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + */ + ( N: number, alpha: number, x: Float64Array, strideX: number ): Float64Array; + + /** + * Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + * + * dfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + */ + ndarray( N: number, alpha: number, x: Float64Array, strideX: number, offsetX: number ): Float64Array; +} + +/** +* Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param N - number of indexed elements +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); +* +* dfillNaN( x.length, 0.0, x, 1 ); +* // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); +* +* dfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); +* // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +*/ +declare var dfillNaN: Routine; + + +// EXPORTS // + +export = dfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/docs/types/test.ts new file mode 100644 index 000000000000..cfbfd2fbf806 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/docs/types/test.ts @@ -0,0 +1,187 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dfillNaN = require( './index' ); + + +// TESTS // + +// The function returns a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillNaN( x.length, 0.0, x, 1 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNaN( '10', 0.0, x, 1 ); // $ExpectError + dfillNaN( true, 0.0, x, 1 ); // $ExpectError + dfillNaN( false, 0.0, x, 1 ); // $ExpectError + dfillNaN( null, 0.0, x, 1 ); // $ExpectError + dfillNaN( undefined, 0.0, x, 1 ); // $ExpectError + dfillNaN( [], 0.0, x, 1 ); // $ExpectError + dfillNaN( {}, 0.0, x, 1 ); // $ExpectError + dfillNaN( ( x: number ): number => x, 0.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNaN( x.length, '10', x, 1 ); // $ExpectError + dfillNaN( x.length, true, x, 1 ); // $ExpectError + dfillNaN( x.length, false, x, 1 ); // $ExpectError + dfillNaN( x.length, null, x, 1 ); // $ExpectError + dfillNaN( x.length, undefined, x, 1 ); // $ExpectError + dfillNaN( x.length, [], x, 1 ); // $ExpectError + dfillNaN( x.length, {}, x, 1 ); // $ExpectError + dfillNaN( x.length, ( x: number ): number => x, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillNaN( x.length, 0.0, 10, 1 ); // $ExpectError + dfillNaN( x.length, 0.0, '10', 1 ); // $ExpectError + dfillNaN( x.length, 0.0, true, 1 ); // $ExpectError + dfillNaN( x.length, 0.0, false, 1 ); // $ExpectError + dfillNaN( x.length, 0.0, null, 1 ); // $ExpectError + dfillNaN( x.length, 0.0, undefined, 1 ); // $ExpectError + dfillNaN( x.length, 0.0, [], 1 ); // $ExpectError + dfillNaN( x.length, 0.0, {}, 1 ); // $ExpectError + dfillNaN( x.length, 0.0, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNaN( x.length, 0.0, x, '10' ); // $ExpectError + dfillNaN( x.length, 0.0, x, true ); // $ExpectError + dfillNaN( x.length, 0.0, x, false ); // $ExpectError + dfillNaN( x.length, 0.0, x, null ); // $ExpectError + dfillNaN( x.length, 0.0, x, undefined ); // $ExpectError + dfillNaN( x.length, 0.0, x, [] ); // $ExpectError + dfillNaN( x.length, 0.0, x, {} ); // $ExpectError + dfillNaN( x.length, 0.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + dfillNaN(); // $ExpectError + dfillNaN( x.length ); // $ExpectError + dfillNaN( x.length, 0.0 ); // $ExpectError + dfillNaN( x.length, 0.0, x ); // $ExpectError + dfillNaN( x.length, 0.0, x, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNaN.ndarray( '10', 0.0, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( true, 0.0, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( false, 0.0, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( null, 0.0, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( undefined, 0.0, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( [], 0.0, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( {}, 0.0, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( ( x: number ): number => x, 0.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNaN.ndarray( x.length, '10', x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, true, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, false, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, null, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, undefined, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, [], x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, {}, x, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, ( x: number ): number => x, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillNaN.ndarray( x.length, 0.0, 10, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, '10', 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, true, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, false, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, null, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, undefined, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, [], 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, {}, 1, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNaN.ndarray( x.length, 0.0, x, '10', 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, true, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, false, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, null, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, undefined, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, [], 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, {}, 0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNaN.ndarray( x.length, 0.0, x, 1, '10' ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, 1, true ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, 1, false ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, 1, null ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, 1, undefined ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, 1, [] ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, 1, {} ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + dfillNaN.ndarray(); // $ExpectError + dfillNaN.ndarray( x.length ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, 1 ); // $ExpectError + dfillNaN.ndarray( x.length, 0.0, x, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/examples/c/example.c new file mode 100644 index 000000000000..05ddcc8f558b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_nan.h" +#include + +int main( void ) { + // Create a strided array: + double x[] = { 1.0, 0.0/0.0, 3.0, 0.0/0.0, 5.0, -6.0, 7.0, 0.0/0.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace elements equal to `NaN`: + stdlib_strided_dfill_nan( N, 0.0, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %lf\n", i, x[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/examples/index.js new file mode 100644 index 000000000000..429af0997221 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/examples/index.js @@ -0,0 +1,28 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var nans = require( '@stdlib/array/nans' ); +var dfillNaN = require( './../lib' ); + +var x = nans( 10, 'float64' ); +console.log( x ); + +dfillNaN( x.length, 0.0, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 0.0, 0.0, 1.0, 0.0 ] +*/ +function dfillNaN( N, alpha, x, strideX ) { + return ndarray( N, alpha, x, strideX, stride2offset( N, strideX ) ); +} + + +// EXPORTS // + +module.exports = dfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/dfill_nan.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/dfill_nan.native.js new file mode 100644 index 000000000000..7ca4b8933c8d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/dfill_nan.native.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length +* @returns {Float64Array} input array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ NaN, NaN, 1.0, NaN ] ); +* +* dfillNaN( x.length, 0.0, x, 1 ); +* // x => [ 0.0, 0.0, 1.0, 0.0 ] +*/ +function dfillNaN( N, alpha, x, strideX ) { + addon( N, alpha, x, strideX ); + return x; +} + + +// EXPORTS // + +module.exports = dfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/index.js new file mode 100644 index 000000000000..7bc29a8a1475 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/index.js @@ -0,0 +1,68 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/dfill-nan +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dfillNaN = require( '@stdlib/blas/ext/base/dfill-nan' ); +* +* var x = new Float64Array( [ NaN, NaN, 1.0, NaN ] ); +* +* dfillNaN( x.length, 0.0, x, 1 ); +* // x => [ 0.0, 0.0, 1.0, 0.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dfillNaN = require( '@stdlib/blas/ext/base/dfill-nan' ); +* +* var x = new Float64Array( [ NaN, NaN, 1.0, NaN ] ); +* +* dfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); +* // x => [ 0.0, 0.0, 1.0, 0.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var dfillNaN; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + dfillNaN = main; +} else { + dfillNaN = tmp; +} + + +// EXPORTS // + +module.exports = dfillNaN; + +// exports: { "ndarray": "dfillNaN.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/main.js new file mode 100644 index 000000000000..fafb181de993 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dfillNaN = require( './dfill_nan.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( dfillNaN, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/native.js new file mode 100644 index 000000000000..a1fb5ef5791d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dfillNaN = require( './dfill_nan.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( dfillNaN, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/ndarray.js new file mode 100644 index 000000000000..90ffad419d7b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/ndarray.js @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isnan = require( '@stdlib/math/base/assert/is-nan' ); + + +// MAIN // + +/** +* Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Float64Array} input array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ NaN, -2.0, 3.0, NaN, 5.0, -6.0 ] ); +* +* dfillNaN( 6, 0.0, x, 1, 0 ); +* // x => [ 0.0, -2.0, 3.0, 0.0, 5.0, -6.0 ] +*/ +function dfillNaN( N, alpha, x, strideX, offsetX ) { + var ix; + var i; + + if ( N <= 0 ) { + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( isnan( x[ ix ] ) ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = dfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/ndarray.native.js new file mode 100644 index 000000000000..becdb80c65da --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/lib/ndarray.native.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Float64Array} input array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ NaN, -2.0, 3.0, NaN, 5.0, -6.0 ] ); +* +* dfillNaN( 6, 0.0, x, 1, 0 ); +* // x => [ 0.0, -2.0, 3.0, 0.0, 5.0, -6.0 ] +*/ +function dfillNaN( N, alpha, x, strideX, offsetX ) { + addon.ndarray( N, alpha, x, strideX, offsetX ); + return x; +} + + +// EXPORTS // + +module.exports = dfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/manifest.json new file mode 100644 index 000000000000..ec2b36570dcc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/manifest.json @@ -0,0 +1,82 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/math/base/assert/is-nan", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-double", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float64array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/math/base/assert/is-nan" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/math/base/assert/is-nan" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/package.json b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/package.json new file mode 100644 index 000000000000..d29e910d4ba5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/blas/ext/base/dfill-nan", + "version": "0.0.0", + "description": "Replace double-precision floating-point strided array elements equal to NaN with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "nan", + "not-a-number", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "float64", + "double", + "float64array" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/src/addon.c new file mode 100644 index 000000000000..bbe891ab4c25 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/src/addon.c @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_nan.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_double.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 4 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 2 ); + API_SUFFIX(stdlib_strided_dfill_nan)( N, alpha, X, strideX ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 2 ); + API_SUFFIX(stdlib_strided_dfill_nan_ndarray)( N, alpha, X, strideX, offsetX ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/src/main.c new file mode 100644 index 000000000000..4414d1aa596c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/src/main.c @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_nan.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/math/base/assert/is_nan.h" + +/** +* Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +*/ +void API_SUFFIX(stdlib_strided_dfill_nan)( const CBLAS_INT N, const double alpha, double *X, const CBLAS_INT strideX ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + API_SUFFIX(stdlib_strided_dfill_nan_ndarray)( N, alpha, X, strideX, ox ); +} + +/** +* Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +* @param offsetX starting index +*/ +void API_SUFFIX(stdlib_strided_dfill_nan_ndarray)( const CBLAS_INT N, const double alpha, double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { + CBLAS_INT ix; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( stdlib_base_is_nan( X[ ix ] ) ) { + X[ ix ] = alpha; + } + ix += strideX; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.dfill_nan.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.dfill_nan.js new file mode 100644 index 000000000000..59bde9581a7d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.dfill_nan.js @@ -0,0 +1,184 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfillNaN = require( './../lib/dfill_nan.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( dfillNaN.length, 4, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + + dfillNaN( x.length, 0.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ NaN, 2.0 ] ); + expected = new Float64Array( [ 5.0, 2.0 ] ); + + dfillNaN( x.length, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, NaN, 3.0, NaN, 5.0 ] ); + out = dfillNaN( x.length, 0.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var x; + + x = new Float64Array( [ NaN, -4.0, 1.0 ] ); + + dfillNaN( 0, 0.0, x, 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = new Float64Array( [ NaN, -4.0, 1.0 ] ); + dfillNaN( -4, 0.0, x, 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]); + expected = new Float64Array([ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]); + + dfillNaN( 3, 0.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]); + expected = new Float64Array([ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]); + + dfillNaN( 3, 0.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + dfillNaN( 3, 0.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.dfill_nan.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.dfill_nan.native.js new file mode 100644 index 000000000000..13c7f26c5508 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.dfill_nan.native.js @@ -0,0 +1,193 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfillNaN = tryRequire( resolve( __dirname, './../lib/dfill_nan.native.js' ) ); +var opts = { + 'skip': ( dfillNaN instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', opts, function test( t ) { + t.strictEqual( dfillNaN.length, 4, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + + dfillNaN( x.length, 0.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ NaN, 2.0 ] ); + expected = new Float64Array( [ 5.0, 2.0 ] ); + + dfillNaN( x.length, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, NaN, 3.0, NaN, 5.0 ] ); + out = dfillNaN( x.length, 0.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var x; + + x = new Float64Array( [ NaN, -4.0, 1.0 ] ); + + dfillNaN( 0, 0.0, x, 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = new Float64Array( [ NaN, -4.0, 1.0 ] ); + dfillNaN( -4, 0.0, x, 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]); + expected = new Float64Array([ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]); + + dfillNaN( 3, 0.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]); + expected = new Float64Array([ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]); + + dfillNaN( 3, 0.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + dfillNaN( 3, 0.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.js new file mode 100644 index 000000000000..f07d28c31d1e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dfillNaN = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dfillNaN.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dfillNaN = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfillNaN, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dfillNaN; + var main; + + main = require( './../lib/dfill_nan.js' ); + + dfillNaN = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfillNaN, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.ndarray.js new file mode 100644 index 000000000000..6885e196b4f4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.ndarray.js @@ -0,0 +1,181 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfillNaN = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( dfillNaN.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + + dfillNaN( x.length, 0.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ NaN, 2.0 ] ); + expected = new Float64Array( [ 5.0, 2.0 ] ); + + dfillNaN( x.length, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, NaN, 3.0, NaN, 5.0 ] ); + out = dfillNaN( x.length, 0.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var x; + + x = new Float64Array( [ NaN, -4.0, 1.0 ] ); + + dfillNaN( 0, 0.0, x, 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = new Float64Array( [ NaN, -4.0, 1.0 ] ); + dfillNaN( -4, 0.0, x, 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]); + expected = new Float64Array([ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]); + + dfillNaN( 3, 0.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]); + expected = new Float64Array([ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]); + + dfillNaN( 3, 0.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]); + + dfillNaN( 3, 0.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.ndarray.native.js new file mode 100644 index 000000000000..b7fe79b5a36a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-nan/test/test.ndarray.native.js @@ -0,0 +1,190 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfillNaN = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfillNaN instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( dfillNaN.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + + dfillNaN( x.length, 0.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ NaN, 2.0 ] ); + expected = new Float64Array( [ 5.0, 2.0 ] ); + + dfillNaN( x.length, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, NaN, 3.0, NaN, 5.0 ] ); + out = dfillNaN( x.length, 0.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var x; + + x = new Float64Array( [ NaN, -4.0, 1.0 ] ); + + dfillNaN( 0, 0.0, x, 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = new Float64Array( [ NaN, -4.0, 1.0 ] ); + dfillNaN( -4, 0.0, x, 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]); + expected = new Float64Array([ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]); + + dfillNaN( 3, 0.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]); + expected = new Float64Array([ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]); + + dfillNaN( 3, 0.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]); + + dfillNaN( 3, 0.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/README.md new file mode 100644 index 000000000000..0ad9822aeb9a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/README.md @@ -0,0 +1,294 @@ + + +# dfillNotEqual + +> Replace double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + +
+ +## Usage + +```javascript +var dfillNotEqual = require( '@stdlib/blas/ext/base/dfill-not-equal' ); +``` + +#### dfillNotEqual( N, searchElement, alpha, x, strideX ) + +Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); +// x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **alpha**: scalar constant. +- **x**: input [`Float64Array`][@stdlib/array/float64]. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +dfillNotEqual( 3, 0.0, 5.0, x, 2 ); +// x => [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array: +var x0 = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +// Create an offset view: +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +dfillNotEqual( 3, 0.0, 5.0, x1, 2 ); +// x0 => [ 0.0, 5.0, 3.0, 0.0, 4.0, 5.0 ] +``` + +#### dfillNotEqual.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + +Replaces strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +// x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +dfillNotEqual.ndarray( 3, 0.0, 5.0, x, 1, x.length-3 ); +// x => [ 0.0, -2.0, 3.0, 0.0, 5.0, 5.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. +- When comparing elements, both functions check for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dfillNotEqual = require( '@stdlib/blas/ext/base/dfill-not-equal' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'float64' +}); +console.log( x ); + +dfillNotEqual( x.length, 1, 5, x, 1 ); +console.log( x ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/dfill_not_equal.h" +``` + +#### stdlib_strided_dfill_not_equal( N, searchElement, alpha, \*X, strideX ) + +Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + +```c +double x[] = { 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 }; + +stdlib_strided_dfill_not_equal( 6, 0.0, 5.0, x, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] double` search element. +- **alpha**: `[in] double` scalar constant. +- **X**: `[inout] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. + +```c +void stdlib_strided_dfill_not_equal( const CBLAS_INT N, const double searchElement, const double alpha, double *X, const CBLAS_INT strideX ); +``` + + + +#### stdlib_strided_dfill_not_equal_ndarray( N, searchElement, alpha, \*X, strideX, offsetX ) + + + +Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```c +double x[] = { 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 }; + +stdlib_strided_dfill_not_equal_ndarray( 6, 0.0, 5.0, x, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] double` search element. +- **alpha**: `[in] double` scalar constant. +- **X**: `[inout] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **offsetX**: `[in] CBLAS_INT` starting index. + +```c +void stdlib_strided_dfill_not_equal_ndarray( const CBLAS_INT N, const double searchElement, const double alpha, double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/dfill_not_equal.h" +#include + +int main( void ) { + // Create a strided array: + double x[] = { 0.0, -2.0, 3.0, 0.0, 4.0, -6.0, 0.0, 8.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace elements not equal to `0.0`: + stdlib_strided_dfill_not_equal( N, 0.0, 5.0, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %lf\n", i, x[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..5439b2f2e3e0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfillNotEqual = require( './../lib/dfill_not_equal.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillNotEqual( x.length, i, i+1, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.native.js new file mode 100644 index 000000000000..63cd9dd0f391 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfillNotEqual = tryRequire( resolve( __dirname, './../lib/dfill_not_equal.native.js' ) ); +var opts = { + 'skip': ( dfillNotEqual instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillNotEqual( x.length, i, i+1, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..1ef6cf599634 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfillNotEqual = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillNotEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..76236384fd88 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfillNotEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfillNotEqual instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = dfillNotEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/dfill-not-equal/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..1e8dac240ca7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/benchmark/c/benchmark.length.c @@ -0,0 +1,199 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_not_equal.h" +#include +#include +#include +#include +#include + +#define NAME "dfill-not-equal" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double t; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0; + } else { + x[ i ] = ( rand_double()*200.0 ) - 100.0; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_dfill_not_equal( len, (double)i, (double)(i+1), x, 1 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double t; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0; + } else { + x[ i ] = ( rand_double()*200.0 ) - 100.0; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_dfill_not_equal_ndarray( len, (double)i, (double)(i+1), x, 1, 0 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/docs/repl.txt new file mode 100644 index 000000000000..3607ac581d5d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/docs/repl.txt @@ -0,0 +1,104 @@ + +{{alias}}( N, searchElement, alpha, x, strideX ) + Replaces double-precision floating-point strided array elements not equal to + a provided search element with a specified scalar constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + alpha: number + Scalar constant. + + x: Float64Array + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: Float64Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > {{alias}}( x.length, 0.0, 5.0, x, 1 ) + [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float64}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > {{alias}}( 3, 0.0, 5.0, x, 2 ) + [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 3, 0.0, 5.0, x1, 2 ) + [ 5.0, 3.0, 0.0, 4.0, 5.0 ] + > x0 + [ 0.0, 5.0, 3.0, 0.0, 4.0, 5.0 ] + + +{{alias}}.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + Replaces double-precision floating-point strided array elements not equal to + a provided search element with a specified scalar constant using alternative + indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + alpha: number + Scalar constant. + + x: Float64Array + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: Float64Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > {{alias}}.ndarray( x.length, 0.0, 5.0, x, 1, 0 ) + [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + + // Using an index offset: + > x = new {{alias:@stdlib/array/float64}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > {{alias}}.ndarray( 3, 0.0, 5.0, x, 2, 1 ) + [ 0.0, 5.0, 3.0, 0.0, 4.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..e97d8f9c4ade --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/docs/types/index.d.ts @@ -0,0 +1,98 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `dfillNotEqual`. +*/ +interface Routine { + /** + * Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * dfillNotEqual( 6, 0.0, 5.0, x, 1 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + ( N: number, searchElement: number, alpha: number, x: Float64Array, strideX: number ): Float64Array; + + /** + * Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * dfillNotEqual.ndarray( 6, 0.0, 5.0, x, 1, 0 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + ndarray( N: number, searchElement: number, alpha: number, x: Float64Array, strideX: number, offsetX: number ): Float64Array; +} + +/** +* Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* dfillNotEqual( 6, 0.0, 5.0, x, 1 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* dfillNotEqual.ndarray( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +declare var dfillNotEqual: Routine; + + +// EXPORTS // + +export = dfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..7f399f4f6fa8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/docs/types/test.ts @@ -0,0 +1,214 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dfillNotEqual = require( './index' ); + + +// TESTS // + +// The function returns a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual( '10', 0.0, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( true, 0.0, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( false, 0.0, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( null, 0.0, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( undefined, 0.0, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( [], 0.0, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( {}, 0.0, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( ( x: number ): number => x, 0.0, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual( x.length, '10', 5.0, x, 1 ); // $ExpectError + dfillNotEqual( x.length, true, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( x.length, false, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( x.length, null, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( x.length, undefined, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( x.length, [], 5.0, x, 1 ); // $ExpectError + dfillNotEqual( x.length, {}, 5.0, x, 1 ); // $ExpectError + dfillNotEqual( x.length, ( x: number ): number => x, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual( x.length, 0.0, '10', x, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, true, x, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, false, x, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, null, x, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, undefined, x, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, [], x, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, {}, x, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, ( x: number ): number => x, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual( x.length, 0.0, 5.0, '10', 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, true, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, false, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, null, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, undefined, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, [], 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, {}, 1 ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual( x.length, 0.0, 5.0, x, '10' ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, x, true ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, x, false ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, x, null ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, x, undefined ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, x, [] ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, x, {} ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual(); // $ExpectError + dfillNotEqual( x.length ); // $ExpectError + dfillNotEqual( x.length, 0.0 ); // $ExpectError + dfillNotEqual( x.length, 0.0, x ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, x ); // $ExpectError + dfillNotEqual( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual.ndarray( '10', 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( true, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( false, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( null, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( undefined, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( [], 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( {}, 0.0, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( ( x: number ): number => x, 0.0, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual.ndarray( x.length, '10', 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, true, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, false, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, null, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, undefined, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, [], 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, {}, 5.0, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, ( x: number ): number => x, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual.ndarray( x.length, 0.0, '10', x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, true, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, false, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, null, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, undefined, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, [], x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, {}, x, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, ( x: number ): number => x, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual.ndarray( x.length, 0.0, 5.0, '10', 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, true, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, false, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, null, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, undefined, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, [], 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, {}, 1, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, '10', 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, true, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, false, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, null, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, undefined, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, [], 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, {}, 0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, '10' ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, true ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, false ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, null ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, undefined ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, [] ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + dfillNotEqual.ndarray(); // $ExpectError + dfillNotEqual.ndarray( x.length ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1 ); // $ExpectError + dfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/examples/c/example.c new file mode 100644 index 000000000000..aa6593941534 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_not_equal.h" +#include + +int main( void ) { + // Create a strided array: + double x[] = { 0.0, -2.0, 3.0, 0.0, 4.0, -6.0, 0.0, 8.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace elements not equal to `0.0`: + stdlib_strided_dfill_not_equal( N, 0.0, 5.0, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %lf\n", i, x[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/examples/index.js new file mode 100644 index 000000000000..8e601073ee34 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dfillNotEqual = require( './../lib' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'float64' +}); +console.log( x ); + +dfillNotEqual( x.length, 1, 5, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function dfillNotEqual( N, searchElement, alpha, x, strideX ) { + return ndarray( N, searchElement, alpha, x, strideX, stride2offset( N, strideX ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/dfill_not_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/dfill_not_equal.native.js new file mode 100644 index 000000000000..26fe2ca06de4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/dfill_not_equal.native.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length +* @returns {Float64Array} input array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* dfillNotEqual( 6, 0.0, 5.0, x, 1 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function dfillNotEqual( N, searchElement, alpha, x, strideX ) { + addon( N, searchElement, alpha, x, strideX ); + return x; +} + + +// EXPORTS // + +module.exports = dfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/index.js new file mode 100644 index 000000000000..dbdd8996eaa5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/index.js @@ -0,0 +1,68 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/dfill-not-equal +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dfillNotEqual = require( '@stdlib/blas/ext/base/dfill-not-equal' ); +* +* var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* dfillNotEqual( 6, 0.0, 5.0, x, 1 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dfillNotEqual = require( '@stdlib/blas/ext/base/dfill-not-equal' ); +* +* var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* dfillNotEqual.ndarray( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var dfillNotEqual; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + dfillNotEqual = main; +} else { + dfillNotEqual = tmp; +} + + +// EXPORTS // + +module.exports = dfillNotEqual; + +// exports: { "ndarray": "dfillNotEqual.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/main.js new file mode 100644 index 000000000000..6adbed472d75 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dfillNotEqual = require( './dfill_not_equal.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( dfillNotEqual, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/native.js new file mode 100644 index 000000000000..cf082487bd8a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dfillNotEqual = require( './dfill_not_equal.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( dfillNotEqual, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/ndarray.js new file mode 100644 index 000000000000..4a41975c8528 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/ndarray.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Float64Array} input array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* dfillNotEqual( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function dfillNotEqual( N, searchElement, alpha, x, strideX, offsetX ) { + var ix; + var i; + + if ( N <= 0 ) { + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] !== searchElement ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = dfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/ndarray.native.js new file mode 100644 index 000000000000..6a3a43de3a35 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/lib/ndarray.native.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Float64Array} input array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* dfillNotEqual( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function dfillNotEqual( N, searchElement, alpha, x, strideX, offsetX ) { + addon.ndarray( N, searchElement, alpha, x, strideX, offsetX ); + return x; +} + + +// EXPORTS // + +module.exports = dfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/manifest.json new file mode 100644 index 000000000000..13cc0c24361f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/manifest.json @@ -0,0 +1,79 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-double", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float64array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/package.json new file mode 100644 index 000000000000..d58fdad4cce1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/blas/ext/base/dfill-not-equal", + "version": "0.0.0", + "description": "Replace double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "not equal", + "unequal", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "float64", + "double", + "float64array" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/src/addon.c new file mode 100644 index 000000000000..f9c4166f4a33 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/src/addon.c @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_not_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_double.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 3 ); + API_SUFFIX(stdlib_strided_dfill_not_equal)( N, searchElement, alpha, X, strideX ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 3 ); + API_SUFFIX(stdlib_strided_dfill_not_equal_ndarray)( N, searchElement, alpha, X, strideX, offsetX ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/src/main.c new file mode 100644 index 000000000000..6bca64b44f14 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/src/main.c @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfill_not_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/strided/base/stride2offset.h" + +/** +* Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. +* +* @param N number of indexed elements +* @param searchElement search element +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +*/ +void API_SUFFIX(stdlib_strided_dfill_not_equal)( const CBLAS_INT N, const double searchElement, const double alpha, double *X, const CBLAS_INT strideX ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + API_SUFFIX(stdlib_strided_dfill_not_equal_ndarray)( N, searchElement, alpha, X, strideX, ox ); +} + +/** +* Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param N number of indexed elements +* @param searchElement search element +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +* @param offsetX starting index +*/ +void API_SUFFIX(stdlib_strided_dfill_not_equal_ndarray)( const CBLAS_INT N, const double searchElement, const double alpha, double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { + CBLAS_INT ix; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( X[ ix ] != searchElement ) { + X[ ix ] = alpha; + } + ix += strideX; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.dfill_not_equal.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.dfill_not_equal.js new file mode 100644 index 000000000000..13f6ada29a73 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.dfill_not_equal.js @@ -0,0 +1,247 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfillNotEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( dfillNotEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 0.0, 2.0 ] ); + expected = new Float64Array( [ 0.0, 5.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ 4.0, 4.0, 4.0 ] ); + expected = new Float64Array( [ 4.0, 4.0, 4.0 ] ); + + dfillNotEqual( x.length, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ NaN, 1.0, NaN ] ); + expected = new Float64Array( [ 5.0, 5.0, 5.0 ] ); + + dfillNotEqual( x.length, NaN, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ NaN, 0.0, NaN ] ); + expected = new Float64Array( [ 5.0, 0.0, 5.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + expected = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + + dfillNotEqual( 0, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + dfillNotEqual( -4, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.strictEqual( isSameFloat64Array( x, expected ), true, 'returns expected value' ); + + x = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + dfillNotEqual( x.length, -0.0, 5.0, x, 1 ); + t.strictEqual( isSameFloat64Array( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]); + expected = new Float64Array([ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]); + expected = new Float64Array([ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]); + expected = new Float64Array([ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + dfillNotEqual( 3, 0.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.dfill_not_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.dfill_not_equal.native.js new file mode 100644 index 000000000000..d09c559f5f64 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.dfill_not_equal.native.js @@ -0,0 +1,256 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfillNotEqual = tryRequire( resolve( __dirname, './../lib/dfill_not_equal.native.js' ) ); +var opts = { + 'skip': ( dfillNotEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( dfillNotEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 0.0, 2.0 ] ); + expected = new Float64Array( [ 0.0, 5.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ 4.0, 4.0, 4.0 ] ); + expected = new Float64Array( [ 4.0, 4.0, 4.0 ] ); + + dfillNotEqual( x.length, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ NaN, 1.0, NaN ] ); + expected = new Float64Array( [ 5.0, 5.0, 5.0 ] ); + + dfillNotEqual( x.length, NaN, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ NaN, 0.0, NaN ] ); + expected = new Float64Array( [ 5.0, 0.0, 5.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + expected = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + + dfillNotEqual( 0, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + dfillNotEqual( -4, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.strictEqual( isSameFloat64Array( x, expected ), true, 'returns expected value' ); + + x = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + dfillNotEqual( x.length, -0.0, 5.0, x, 1 ); + t.strictEqual( isSameFloat64Array( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]); + expected = new Float64Array([ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]); + expected = new Float64Array([ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]); + expected = new Float64Array([ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + dfillNotEqual( 3, 0.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.js new file mode 100644 index 000000000000..b86895d1a9c8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dfillNotEqual = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dfillNotEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dfillNotEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfillNotEqual, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dfillNotEqual; + var main; + + main = require( './../lib/dfill_not_equal.js' ); + + dfillNotEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfillNotEqual, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.ndarray.js new file mode 100644 index 000000000000..65ff7bb5df2e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.ndarray.js @@ -0,0 +1,241 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfillNotEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( dfillNotEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 0.0, 2.0 ] ); + expected = new Float64Array( [ 0.0, 5.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ 4.0, 4.0, 4.0 ] ); + expected = new Float64Array( [ 4.0, 4.0, 4.0 ] ); + + dfillNotEqual( x.length, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ NaN, 1.0, NaN ] ); + expected = new Float64Array( [ 5.0, 5.0, 5.0 ] ); + + dfillNotEqual( x.length, NaN, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ NaN, 0.0, NaN ] ); + expected = new Float64Array( [ 5.0, 0.0, 5.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameFloat64Array( x, expected ), true, 'returns expected value' ); + + x = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + dfillNotEqual( x.length, -0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameFloat64Array( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + expected = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + + dfillNotEqual( 0, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + dfillNotEqual( -4, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]); + expected = new Float64Array([ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]); + expected = new Float64Array([ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]); + expected = new Float64Array([ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.ndarray.native.js new file mode 100644 index 000000000000..bf330de084ec --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfill-not-equal/test/test.ndarray.native.js @@ -0,0 +1,250 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfillNotEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfillNotEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( dfillNotEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + expected = new Float64Array([ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 0.0, 2.0 ] ); + expected = new Float64Array( [ 0.0, 5.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ 4.0, 4.0, 4.0 ] ); + expected = new Float64Array( [ 4.0, 4.0, 4.0 ] ); + + dfillNotEqual( x.length, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ NaN, 1.0, NaN ] ); + expected = new Float64Array( [ 5.0, 5.0, 5.0 ] ); + + dfillNotEqual( x.length, NaN, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ NaN, 0.0, NaN ] ); + expected = new Float64Array( [ 5.0, 0.0, 5.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + dfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameFloat64Array( x, expected ), true, 'returns expected value' ); + + x = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + dfillNotEqual( x.length, -0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameFloat64Array( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + expected = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + + dfillNotEqual( 0, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float64Array( [ 0.0, -4.0, 1.0 ] ); + dfillNotEqual( -4, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]); + expected = new Float64Array([ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]); + expected = new Float64Array([ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter', opts, function test( t ) { + var expected; + var x; + + x = new Float64Array([ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]); + expected = new Float64Array([ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]); + + dfillNotEqual( 3, 0.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/README.md new file mode 100644 index 000000000000..bd4969f05811 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/README.md @@ -0,0 +1,341 @@ + + +# dfirstIndexEqual + +> Return the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var dfirstIndexEqual = require( '@stdlib/blas/ext/base/dfirst-index-equal' ); +``` + +#### dfirstIndexEqual( N, x, strideX, y, strideY ) + +Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + +var idx = dfirstIndexEqual( 4, x, 1, y, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: first input [`Float64Array`][@stdlib/array/float64]. +- **strideX**: stride length for `x`. +- **y**: second input [`Float64Array`][@stdlib/array/float64]. +- **strideY**: stride length for `y`. + +If the function is unable to find a match, the function returns `-1`. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y = new Float64Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + +var idx = dfirstIndexEqual( 4, x, 1, y, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to search every other element: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 5.0, 0.0 ] ); + +var idx = dfirstIndexEqual( 3, x, 2, y, 2 ); +// returns 2 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y0 = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = dfirstIndexEqual( 2, x1, 1, y1, 1 ); +// returns 1 +``` + +#### dfirstIndexEqual.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + +var idx = dfirstIndexEqual.ndarray( 4, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on a starting index. For example, to access only the last three elements of the strided arrays: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 6.0 ] ); + +var idx = dfirstIndexEqual.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// returns 2 +``` + +
+ + + + + +
+ +## Notes + +- When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct, and `-0` and `+0` are considered the same. + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dfirstIndexEqual = require( '@stdlib/blas/ext/base/dfirst-index-equal' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'float64' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'float64' +}); +console.log( y ); + +var idx = dfirstIndexEqual( x.length, x, 1, y, 1 ); +console.log( idx ); + +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/dfirst_index_equal.h" +``` + +#### stdlib_strided_dfirst_index_equal( N, \*X, strideX, \*Y, strideY ) + +Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array. + +```c +double x[] = { 1.0, 2.0, 3.0, 4.0 }; +double y[] = { 0.0, 0.0, 3.0, 0.0 }; + +int idx = stdlib_strided_dfirst_index_equal( 4, x, 1, y, 1 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] double*` first input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Y**: `[in] double*` second input array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. + +```c +CBLAS_INT stdlib_strided_dfirst_index_equal( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const double *Y, const CBLAS_INT strideY ); +``` + + + +#### stdlib_strided_dfirst_index_equal_ndarray( N, \*X, strideX, offsetX, \*Y, strideY, offsetY ) + + + +Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array using alternative indexing semantics. + +```c +double x[] = { 1.0, 2.0, 3.0, 4.0 }; +double y[] = { 0.0, 0.0, 3.0, 0.0 }; + +int idx = stdlib_strided_dfirst_index_equal_ndarray( 4, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] double*` first input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Y**: `[in] double*` second input array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. +- **offsetY**: `[in] CBLAS_INT` starting index for `Y`. + +```c +CBLAS_INT stdlib_strided_dfirst_index_equal_ndarray( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, const double *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/dfirst_index_equal.h" +#include + +int main( void ) { + // Create strided arrays: + double x[] = { 1.0, -2.0, 3.0, -4.0, 5.0, -6.0, 7.0, -8.0 }; + double y[] = { 0.0, 0.0, 3.0, 0.0, 5.0, 0.0, 7.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Find the first index of a match: + int idx = stdlib_strided_dfirst_index_equal( N, x, strideX, y, strideY ); + + // Print the result: + printf( "first index: %d\n", idx ); +} +``` + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..924080c11b54 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfirstIndexEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfirstIndexEqual( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.native.js new file mode 100644 index 000000000000..479fe234279d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.native.js @@ -0,0 +1,108 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfirstIndexEqual = tryRequire( resolve( __dirname, './../lib/dfirst_index_equal.native.js' ) ); +var opts = { + 'skip': ( dfirstIndexEqual instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfirstIndexEqual( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..f91dc1a281e6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfirstIndexEqual = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..91e9d73b8e32 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,108 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfirstIndexEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfirstIndexEqual instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/dfirst-index-equal/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..c13362dc8c14 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/benchmark/c/benchmark.length.c @@ -0,0 +1,205 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfirst_index_equal.h" +#include +#include +#include +#include +#include + +#define NAME "dfirst_index_equal" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int idx; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + y = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_double()*20000.0 ) - 10000.0; + y[ i ] = -10001.0; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_dfirst_index_equal( len, x, 1, y, 1 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int idx; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + y = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_double()*20000.0 ) - 10000.0; + y[ i ] = -10001.0; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_dfirst_index_equal_ndarray( len, x, 1, 0, y, 1, 0 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/docs/repl.txt new file mode 100644 index 000000000000..649441ce9b41 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/docs/repl.txt @@ -0,0 +1,112 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Returns the index of the first element in a double-precision floating-point + strided array equal to a corresponding element in another double-precision + floating-point strided array. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float64Array + First input array. + + strideX: integer + Stride length for `x`. + + y: Float64Array + Second input array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var y = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 3.0, 0.0 ] ); + > var idx = {{alias}}( x.length, x, 1, y, 1 ) + 2 + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > y = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 0.0, 0.0, 5.0, 0.0 ] ); + > idx = {{alias}}( 3, x, 2, y, 2 ) + 2 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var y0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 3.0, 0.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); + > idx = {{alias}}( 2, x1, 1, y1, 1 ) + 1 + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Returns the index of the first element in a double-precision floating-point + strided array equal to a corresponding element in another double-precision + floating-point strided array using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float64Array + First input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Float64Array + Second input array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var y = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 3.0, 0.0 ] ); + > var idx = {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + 2 + + // Using offsets: + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > y = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0 ] ); + > idx = {{alias}}.ndarray( 3, x, 2, 1, y, 2, 2 ) + -1 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..834ebef251fa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/docs/types/index.d.ts @@ -0,0 +1,111 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `dfirstIndexEqual`. +*/ +interface Routine { + /** + * Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array. + * + * ## Notes + * + * - If the function is unable to find a match, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + * + * var idx = dfirstIndexEqual( 4, x, 1, y, 1 ); + * // returns 2 + */ + ( N: number, x: Float64Array, strideX: number, y: Float64Array, strideY: number ): number; + + /** + * Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array using alternative indexing semantics. + * + * ## Notes + * + * - If the function is unable to find a match, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param offsetY - starting index for `y` + * @returns index + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + * + * var idx = dfirstIndexEqual.ndarray( 4, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, x: Float64Array, strideX: number, offsetX: number, y: Float64Array, strideY: number, offsetY: number ): number; +} + +/** +* Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array. +* +* @param N - number of indexed elements +* @param x - first input array +* @param strideX - stride length for `x` +* @param y - second input array +* @param strideY - stride length for `y` +* @returns index +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +* var y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); +* +* var idx = dfirstIndexEqual( 4, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +* var y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); +* +* var idx = dfirstIndexEqual.ndarray( 4, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +declare var dfirstIndexEqual: Routine; + + +// EXPORTS // + +export = dfirstIndexEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/docs/types/test.ts new file mode 100644 index 000000000000..b16ef3584fa3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/docs/types/test.ts @@ -0,0 +1,206 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dfirstIndexEqual = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual( x.length, x, 1, y, 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual( '1', x, 1, y, 1 ); // $ExpectError + dfirstIndexEqual( true, x, 1, y, 1 ); // $ExpectError + dfirstIndexEqual( false, x, 1, y, 1 ); // $ExpectError + dfirstIndexEqual( null, x, 1, y, 1 ); // $ExpectError + dfirstIndexEqual( {}, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Float64Array... +{ + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual( 3, '1', 1, y, 1 ); // $ExpectError + dfirstIndexEqual( 3, true, 1, y, 1 ); // $ExpectError + dfirstIndexEqual( 3, false, 1, y, 1 ); // $ExpectError + dfirstIndexEqual( 3, null, 1, y, 1 ); // $ExpectError + dfirstIndexEqual( 3, {}, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual( x.length, x, '1', y, 1 ); // $ExpectError + dfirstIndexEqual( x.length, x, true, y, 1 ); // $ExpectError + dfirstIndexEqual( x.length, x, false, y, 1 ); // $ExpectError + dfirstIndexEqual( x.length, x, null, y, 1 ); // $ExpectError + dfirstIndexEqual( x.length, x, {}, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float64Array... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexEqual( x.length, x, 1, '1', 1 ); // $ExpectError + dfirstIndexEqual( x.length, x, 1, true, 1 ); // $ExpectError + dfirstIndexEqual( x.length, x, 1, false, 1 ); // $ExpectError + dfirstIndexEqual( x.length, x, 1, null, 1 ); // $ExpectError + dfirstIndexEqual( x.length, x, 1, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual( x.length, x, 1, y, '1' ); // $ExpectError + dfirstIndexEqual( x.length, x, 1, y, true ); // $ExpectError + dfirstIndexEqual( x.length, x, 1, y, false ); // $ExpectError + dfirstIndexEqual( x.length, x, 1, y, null ); // $ExpectError + dfirstIndexEqual( x.length, x, 1, y, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual(); // $ExpectError + dfirstIndexEqual( 3 ); // $ExpectError + dfirstIndexEqual( 3, x ); // $ExpectError + dfirstIndexEqual( 3, x, 1 ); // $ExpectError + dfirstIndexEqual( 3, x, 1, y ); // $ExpectError + dfirstIndexEqual( 3, x, 1, y, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual.ndarray( '1', x, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Float64Array... +{ + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual.ndarray( 3, '1', 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( 3, true, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( 3, false, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( 3, null, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( 3, {}, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual.ndarray( x.length, x, '1', 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual.ndarray( x.length, x, 1, '1', y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a Float64Array... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexEqual.ndarray( x.length, x, 1, 0, '1', 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, true, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, false, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, null, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, '1', 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, '1' ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + dfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 0.0, 2.0, 0.0 ] ); + + dfirstIndexEqual.ndarray(); // $ExpectError + dfirstIndexEqual.ndarray( 3 ); // $ExpectError + dfirstIndexEqual.ndarray( 3, x ); // $ExpectError + dfirstIndexEqual.ndarray( 3, x, 1 ); // $ExpectError + dfirstIndexEqual.ndarray( 3, x, 1, 0 ); // $ExpectError + dfirstIndexEqual.ndarray( 3, x, 1, 0, y ); // $ExpectError + dfirstIndexEqual.ndarray( 3, x, 1, 0, y, 1 ); // $ExpectError + dfirstIndexEqual.ndarray( 3, x, 1, 0, y, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/examples/c/example.c new file mode 100644 index 000000000000..ddc5695e011f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfirst_index_equal.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, -2.0, 3.0, -4.0, 5.0, -6.0, 7.0, -8.0 }; + const double y[] = { 0.0, 0.0, 3.0, 0.0, 5.0, 0.0, 7.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Find the first index of a match: + int idx = stdlib_strided_dfirst_index_equal( N, x, strideX, y, strideY ); + + // Print the result: + printf( "first index: %d\n", idx ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/examples/index.js new file mode 100644 index 000000000000..c092f2d9ff82 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dfirstIndexEqual = require( './../lib' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'float64' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'float64' +}); +console.log( y ); + +var idx = dfirstIndexEqual( x.length, x, 1, y, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "blas", + "find", + "index", + "search", + "element", + "equal", + "compare", + "array", + "ndarray", + "strided", + "double", + "float", + "float64", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/src/addon.c new file mode 100644 index 000000000000..787a6d7760e8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/src/addon.c @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfirst_index_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include "stdlib/napi/create_int32.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, Y, N, strideY, argv, 3 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_dfirst_index_equal)( N, X, strideX, Y, strideY ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 7 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_INT64( env, offsetY, argv, 6 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, Y, N, strideY, argv, 4 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_dfirst_index_equal_ndarray)( N, X, strideX, offsetX, Y, strideY, offsetY ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/src/main.c new file mode 100644 index 000000000000..5371749d4e3d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/src/main.c @@ -0,0 +1,69 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfirst_index_equal.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array. +* +* @param N number of indexed elements +* @param X first input array +* @param strideX stride length for X +* @param Y second input array +* @param strideY stride length for Y +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_dfirst_index_equal)( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const double *Y, const CBLAS_INT strideY ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oy = stdlib_strided_stride2offset( N, strideY ); + return API_SUFFIX(stdlib_strided_dfirst_index_equal_ndarray)( N, X, strideX, ox, Y, strideY, oy ); +} + +/** +* Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X first input array +* @param strideX stride length for X +* @param offsetX starting index for X +* @param Y second input array +* @param strideY stride length for Y +* @param offsetY starting index for Y +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_dfirst_index_equal_ndarray)( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, const double *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ) { + CBLAS_INT ix; + CBLAS_INT iy; + CBLAS_INT i; + + if ( N <= 0 ) { + return -1; + } + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( X[ ix ] == Y[ iy ] ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.dfirst_index_equal.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.dfirst_index_equal.js new file mode 100644 index 000000000000..2c0353416ab5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.dfirst_index_equal.js @@ -0,0 +1,239 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfirstIndexEqual = require( './../lib/dfirst_index_equal.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( dfirstIndexEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = dfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( 3, x, 2, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 3.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = dfirstIndexEqual( 0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexEqual( -1, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided elements equal to `NaN`', function test( t ) { + var actual; + + actual = dfirstIndexEqual( 1, new Float64Array( [ NaN ] ), 1, new Float64Array( [ NaN ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = dfirstIndexEqual( 1, new Float64Array( [ -0.0 ] ), 1, new Float64Array( [ 0.0 ] ), 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float64Array([ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, 2, y, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]); + y = new Float64Array([ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]); + + actual = dfirstIndexEqual( 3, x, 1, y, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float64Array([ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, -2, y, -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]); + y = new Float64Array([ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, 2, y, -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.dfirst_index_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.dfirst_index_equal.native.js new file mode 100644 index 000000000000..6b1e78b9a70e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.dfirst_index_equal.native.js @@ -0,0 +1,248 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfirstIndexEqual = tryRequire( resolve( __dirname, './../lib/dfirst_index_equal.native.js' ) ); +var opts = { + 'skip': ( dfirstIndexEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( dfirstIndexEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = dfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( 3, x, 2, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 3.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { + var actual; + + actual = dfirstIndexEqual( 0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexEqual( -1, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided elements equal to `NaN`', opts, function test( t ) { + var actual; + + actual = dfirstIndexEqual( 1, new Float64Array( [ NaN ] ), 1, new Float64Array( [ NaN ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', opts, function test( t ) { + var actual; + + actual = dfirstIndexEqual( 1, new Float64Array( [ -0.0 ] ), 1, new Float64Array( [ 0.0 ] ), 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float64Array([ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, 2, y, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]); + y = new Float64Array([ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]); + + actual = dfirstIndexEqual( 3, x, 1, y, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float64Array([ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, -2, y, -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]); + y = new Float64Array([ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, 2, y, -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.js new file mode 100644 index 000000000000..d67398f06c27 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dfirstIndexEqual = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dfirstIndexEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dfirstIndexEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfirstIndexEqual, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dfirstIndexEqual; + var main; + + main = require( './../lib/dfirst_index_equal.js' ); + + dfirstIndexEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfirstIndexEqual, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.ndarray.js new file mode 100644 index 000000000000..f236de9a4f42 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.ndarray.js @@ -0,0 +1,239 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfirstIndexEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( dfirstIndexEqual.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = dfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length-1, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = dfirstIndexEqual( 0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexEqual( -1, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided elements equal to `NaN`', function test( t ) { + var actual; + + actual = dfirstIndexEqual( 1, new Float64Array( [ NaN ] ), 1, 0, new Float64Array( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = dfirstIndexEqual( 1, new Float64Array( [ -0.0 ] ), 1, 0, new Float64Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float64Array([ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]); + y = new Float64Array([ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]); + + actual = dfirstIndexEqual( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float64Array([ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]); + y = new Float64Array([ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.ndarray.native.js new file mode 100644 index 000000000000..3d08120524fb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-equal/test/test.ndarray.native.js @@ -0,0 +1,248 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfirstIndexEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfirstIndexEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', opts, function test( t ) { + t.strictEqual( dfirstIndexEqual.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = dfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length-1, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = dfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { + var actual; + + actual = dfirstIndexEqual( 0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexEqual( -1, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided elements equal to `NaN`', opts, function test( t ) { + var actual; + + actual = dfirstIndexEqual( 1, new Float64Array( [ NaN ] ), 1, 0, new Float64Array( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', opts, function test( t ) { + var actual; + + actual = dfirstIndexEqual( 1, new Float64Array( [ -0.0 ] ), 1, 0, new Float64Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float64Array([ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]); + y = new Float64Array([ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]); + + actual = dfirstIndexEqual( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float64Array([ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]); + y = new Float64Array([ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = dfirstIndexEqual( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/README.md b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/README.md new file mode 100644 index 000000000000..6f18d1a15e71 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/README.md @@ -0,0 +1,344 @@ + + +# dfirstIndexLessThan + +> Return the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var dfirstIndexLessThan = require( '@stdlib/blas/ext/base/dfirst-index-less-than' ); +``` + +#### dfirstIndexLessThan( N, x, strideX, y, strideY ) + +Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); +var y = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + +var idx = dfirstIndexLessThan( x.length, x, 1, y, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: first input [`Float64Array`][@stdlib/array/float64]. +- **strideX**: stride length for `x`. +- **y**: second input [`Float64Array`][@stdlib/array/float64]. +- **strideY**: stride length for `y`. + +If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 5.0, 6.0, 7.0, 8.0 ] ); +var y = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + +var idx = dfirstIndexLessThan( x.length, x, 1, y, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compare every other element: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Float64Array( [ 0.0, 9.0, 0.0, 9.0, 9.0, 9.0 ] ); + +var idx = dfirstIndexLessThan( 3, x, 2, y, 2 ); +// returns 2 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y0 = new Float64Array( [ 9.0, 0.0, 9.0, 9.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = dfirstIndexLessThan( 2, x1, 1, y1, 1 ); +// returns 1 +``` + + + +#### dfirstIndexLessThan.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + + + +Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); +var y = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + +var idx = dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to access only the last three elements of each strided array: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Float64Array( [ 9.0, 9.0, 9.0, 0.0, 9.0, 9.0 ] ); + +var idx = dfirstIndexLessThan.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// returns 1 +``` + +
+ + + + + +
+ +## Notes + +- When comparing elements, the function checks whether an element in `x` is less than a corresponding element in `y` using the less-than operator `<`. As a consequence, comparisons involving `NaN` always evaluate to `false`. + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dfirstIndexLessThan = require( '@stdlib/blas/ext/base/dfirst-index-less-than' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'float64' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'float64' +}); +console.log( y ); + +var idx = dfirstIndexLessThan( x.length, x, 1, y, 1 ); +console.log( idx ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/dfirst_index_less_than.h" +``` + +#### stdlib_strided_dfirst_index_less_than( N, \*X, strideX, \*Y, strideY ) + +Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array. + +```c +double x[] = { 0.0, 0.0, 0.0, 0.0 }; +double y[] = { 0.0, 0.0, 1.0, 0.0 }; + +int idx = stdlib_strided_dfirst_index_less_than( 4, x, 1, y, 1 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] double*` first input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **Y**: `[in] double*` second input array. +- **strideY**: `[in] CBLAS_INT` stride length. + +```c +CBLAS_INT stdlib_strided_dfirst_index_less_than( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const double *Y, const CBLAS_INT strideY ); +``` + + + +#### stdlib_strided_dfirst_index_less_than_ndarray( N, \*X, strideX, offsetX, \*Y, strideY, offsetY ) + + + +Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array using alternative indexing semantics. + +```c +double x[] = { 0.0, 0.0, 0.0, 0.0 }; +double y[] = { 0.0, 0.0, 1.0, 0.0 }; + +int idx = stdlib_strided_dfirst_index_less_than_ndarray( 4, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] double*` first input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **offsetX**: `[in] CBLAS_INT` starting index. +- **Y**: `[in] double*` second input array. +- **strideY**: `[in] CBLAS_INT` stride length. +- **offsetY**: `[in] CBLAS_INT` starting index. + +```c +CBLAS_INT stdlib_strided_dfirst_index_less_than_ndarray( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, const double *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/dfirst_index_less_than.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0 }; + const double y[] = { 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify stride lengths: + const int strideX = 1; + const int strideY = 1; + + // Perform a search: + int idx = stdlib_strided_dfirst_index_less_than( N, x, strideX, y, strideY ); + + // Print the result: + printf( "index value: %d\n", idx ); +} +``` + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.js new file mode 100644 index 000000000000..06ba9bf937ac --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfirstIndexLessThan = require( './../lib/dfirst_index_less_than.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float64' ); + var y = ones( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfirstIndexLessThan( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.native.js new file mode 100644 index 000000000000..f448a1da535c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.native.js @@ -0,0 +1,107 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfirstIndexLessThan = tryRequire( resolve( __dirname, './../lib/dfirst_index_less_than.native.js' ) ); +var opts = { + 'skip': ( dfirstIndexLessThan instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float64' ); + var y = ones( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfirstIndexLessThan( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..ba3bdc717810 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.ndarray.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfirstIndexLessThan = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float64' ); + var y = ones( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..15b342711c79 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,107 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dfirstIndexLessThan = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfirstIndexLessThan instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float64' ); + var y = ones( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/dfirst-index-less-than/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..49231c9f7f74 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/benchmark/c/benchmark.length.c @@ -0,0 +1,205 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfirst_index_less_than.h" +#include +#include +#include +#include +#include + +#define NAME "dfirst_index_less_than" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int idx; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + y = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_double()*20000.0 ) - 10000.0; + y[ i ] = -10001.0; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_dfirst_index_less_than( len, x, 1, y, 1 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int idx; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + y = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_double()*20000.0 ) - 10000.0; + y[ i ] = -10001.0; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_dfirst_index_less_than_ndarray( len, x, 1, 0, y, 1, 0 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/docs/repl.txt new file mode 100644 index 000000000000..4f8e1407a594 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/docs/repl.txt @@ -0,0 +1,118 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Returns the index of the first element in a double-precision floating-point + strided array which is less than a corresponding element in another double- + precision floating-point strided array. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float64Array + First input array. + + strideX: integer + Stride length for `x`. + + y: Float64Array + Second input array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 0.0, 0.0 ] ); + > var y = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > var idx = {{alias}}( x.length, x, 1, y, 1 ) + 2 + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > y = new {{alias:@stdlib/array/float64}}( [ 0.0, 9.0, 0.0, 9.0, 9.0, 9.0 ] ); + > idx = {{alias}}( 3, x, 2, y, 2 ) + 2 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var y0 = new {{alias:@stdlib/array/float64}}( [ 9.0, 0.0, 9.0, 9.0 ] ); + > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); + > var idx = {{alias}}( 2, x1, 1, y1, 1 ) + 1 + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Returns the index of the first element in a double-precision floating-point + strided array which is less than a corresponding element in another double- + precision floating-point strided array using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on + starting indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float64Array + First input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Float64Array + Second input array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 0.0, 0.0 ] ); + > var y = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > var idx = {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + 2 + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > y = new {{alias:@stdlib/array/float64}}( [ 0.0, 9.0, 0.0, 9.0, 9.0, 9.0 ] ); + > idx = {{alias}}.ndarray( 3, x, 2, 0, y, 2, 0 ) + 2 + + // Using an index offset: + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > y = new {{alias:@stdlib/array/float64}}( [ 9.0, 2.0, 9.0, 9.0 ] ); + > idx = {{alias}}.ndarray( 2, x, 1, 1, y, 1, 1 ) + 1 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/docs/types/index.d.ts new file mode 100644 index 000000000000..c9e459927f55 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/docs/types/index.d.ts @@ -0,0 +1,115 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `dfirstIndexLessThan`. +*/ +interface Routine { + /** + * Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + * var y = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * var idx = dfirstIndexLessThan( x.length, x, 1, y, 1 ); + * // returns 2 + */ + ( N: number, x: Float64Array, strideX: number, y: Float64Array, strideY: number ): number; + + /** + * Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array using alternative indexing semantics. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param offsetY - starting index for `y` + * @returns index + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + * var y = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * var idx = dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, x: Float64Array, strideX: number, offsetX: number, y: Float64Array, strideY: number, offsetY: number ): number; +} + +/** +* Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array. +* +* ## Notes +* +* - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. +* +* @param N - number of indexed elements +* @param x - first input array +* @param strideX - stride length for `x` +* @param y - second input array +* @param strideY - stride length for `y` +* @returns index +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); +* var y = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* var idx = dfirstIndexLessThan( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); +* var y = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* var idx = dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +declare var dfirstIndexLessThan: Routine; + + +// EXPORTS // + +export = dfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/docs/types/test.ts new file mode 100644 index 000000000000..2d3f8236839b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/docs/types/test.ts @@ -0,0 +1,207 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dfirstIndexLessThan = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan( x.length, x, 1, y, 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan( '1', x, 1, y, 1 ); // $ExpectError + dfirstIndexLessThan( true, x, 1, y, 1 ); // $ExpectError + dfirstIndexLessThan( false, x, 1, y, 1 ); // $ExpectError + dfirstIndexLessThan( null, x, 1, y, 1 ); // $ExpectError + dfirstIndexLessThan( {}, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Float64Array... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan( x.length, '1', 1, y, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, true, 1, y, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, false, 1, y, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, null, 1, y, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, {}, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan( x.length, x, '1', y, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, x, true, y, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, x, false, y, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, x, null, y, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, x, {}, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float64Array... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan( x.length, x, 1, '1', 1 ); // $ExpectError + dfirstIndexLessThan( x.length, x, 1, true, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, x, 1, false, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, x, 1, null, 1 ); // $ExpectError + dfirstIndexLessThan( x.length, x, 1, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan( x.length, x, 1, y, '1' ); // $ExpectError + dfirstIndexLessThan( x.length, x, 1, y, true ); // $ExpectError + dfirstIndexLessThan( x.length, x, 1, y, false ); // $ExpectError + dfirstIndexLessThan( x.length, x, 1, y, null ); // $ExpectError + dfirstIndexLessThan( x.length, x, 1, y, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan(); // $ExpectError + dfirstIndexLessThan( 3, x ); // $ExpectError + dfirstIndexLessThan( 3, x, 1 ); // $ExpectError + dfirstIndexLessThan( 3, x, 1, y ); // $ExpectError + dfirstIndexLessThan( 3, x, 1, y, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan.ndarray( '1', x, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Float64Array... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan.ndarray( x.length, '1', 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, true, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, false, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, null, 1, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, {}, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan.ndarray( x.length, x, '1', 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan.ndarray( x.length, x, 1, '1', y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a Float64Array... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, '1', 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, true, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, false, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, null, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, '1', 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, '1' ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError +} + + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dfirstIndexLessThan.ndarray(); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/examples/c/example.c new file mode 100644 index 000000000000..73c81b87173c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfirst_index_less_than.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0 }; + const double y[] = { 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify stride lengths: + const int strideX = 1; + const int strideY = 1; + + // Perform a search: + int idx = stdlib_strided_dfirst_index_less_than( N, x, strideX, y, strideY ); + + // Print the result: + printf( "index value: %d\n", idx ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/examples/index.js new file mode 100644 index 000000000000..c909a8aeb0a6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dfirstIndexLessThan = require( './../lib' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'float64' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'float64' +}); +console.log( y ); + +var idx = dfirstIndexLessThan( x.length, x, 1, y, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "blas", + "find", + "index", + "search", + "element", + "array", + "ndarray", + "strided", + "double", + "float", + "float64", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/src/addon.c new file mode 100644 index 000000000000..f36dbdb54446 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/src/addon.c @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfirst_index_less_than.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include "stdlib/napi/create_int32.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, Y, N, strideY, argv, 3 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_dfirst_index_less_than)( N, X, strideX, Y, strideY ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 7 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_INT64( env, offsetY, argv, 6 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, Y, N, strideY, argv, 4 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_dfirst_index_less_than_ndarray)( N, X, strideX, offsetX, Y, strideY, offsetY ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/src/main.c new file mode 100644 index 000000000000..a0232c3da79e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/src/main.c @@ -0,0 +1,69 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dfirst_index_less_than.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array. +* +* @param N number of indexed elements +* @param X first input array +* @param strideX stride length for X +* @param Y second input array +* @param strideY stride length for Y +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_dfirst_index_less_than)( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const double *Y, const CBLAS_INT strideY ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oy = stdlib_strided_stride2offset( N, strideY ); + return API_SUFFIX(stdlib_strided_dfirst_index_less_than_ndarray)( N, X, strideX, ox, Y, strideY, oy ); +} + +/** +* Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X first input array +* @param strideX stride length for X +* @param offsetX starting index for X +* @param Y second input array +* @param strideY stride length for Y +* @param offsetY starting index for Y +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_dfirst_index_less_than_ndarray)( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, const double *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ) { + CBLAS_INT ix; + CBLAS_INT iy; + CBLAS_INT i; + + if ( N <= 0 ) { + return -1; + } + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( X[ ix ] < Y[ iy ] ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.dfirst_index_less_than.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.dfirst_index_less_than.js new file mode 100644 index 000000000000..7c95a2a21eb7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.dfirst_index_less_than.js @@ -0,0 +1,270 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfirstIndexLessThan = require( './../lib/dfirst_index_less_than.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + // Nonnegative stride... + actual = dfirstIndexLessThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 2, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 1, y, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 2, y, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = new Float64Array( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = dfirstIndexLessThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = new Float64Array( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -2, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = new Float64Array( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -1, y, -2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -2, y, -2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + actual = dfirstIndexLessThan( 0, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexLessThan( -1, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', function test( t ) { + var actual; + + actual = dfirstIndexLessThan( 1, new Float64Array( [ NaN ] ), 1, new Float64Array( [ 0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexLessThan( 1, new Float64Array( [ 0.0 ] ), 1, new Float64Array( [ NaN ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', function test( t ) { + var actual; + + actual = dfirstIndexLessThan( 1, new Float64Array( [ -0.0 ] ), 1, new Float64Array( [ 0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float64Array([ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, 2, y, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]); + y = new Float64Array([ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]); + + actual = dfirstIndexLessThan( 3, x, 1, y, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float64Array([ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, -2, y, -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]); + y = new Float64Array([ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, 2, y, -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float64Array([ + 6.0, + 0.0, // 2 + 5.0, + 1.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float64Array([ + 0.0, + 0.0, + 0.0, + 5.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + + // Create offset views... + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = dfirstIndexLessThan( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.dfirst_index_less_than.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.dfirst_index_less_than.native.js new file mode 100644 index 000000000000..01af96a0fc89 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.dfirst_index_less_than.native.js @@ -0,0 +1,279 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfirstIndexLessThan = tryRequire( resolve( __dirname, './../lib/dfirst_index_less_than.native.js' ) ); +var opts = { + 'skip': ( dfirstIndexLessThan instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + // Nonnegative stride... + actual = dfirstIndexLessThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 2, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 1, y, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 2, y, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = new Float64Array( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = dfirstIndexLessThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = new Float64Array( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -2, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = new Float64Array( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -1, y, -2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -2, y, -2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + actual = dfirstIndexLessThan( 0, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexLessThan( -1, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', opts, function test( t ) { + var actual; + + actual = dfirstIndexLessThan( 1, new Float64Array( [ NaN ] ), 1, new Float64Array( [ 0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexLessThan( 1, new Float64Array( [ 0.0 ] ), 1, new Float64Array( [ NaN ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', opts, function test( t ) { + var actual; + + actual = dfirstIndexLessThan( 1, new Float64Array( [ -0.0 ] ), 1, new Float64Array( [ 0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float64Array([ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, 2, y, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]); + y = new Float64Array([ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]); + + actual = dfirstIndexLessThan( 3, x, 1, y, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float64Array([ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, -2, y, -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]); + y = new Float64Array([ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, 2, y, -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float64Array([ + 6.0, + 0.0, // 2 + 5.0, + 1.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float64Array([ + 0.0, + 0.0, + 0.0, + 5.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + + // Create offset views... + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = dfirstIndexLessThan( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.js new file mode 100644 index 000000000000..04cddc54da24 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dfirstIndexLessThan = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dfirstIndexLessThan.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dfirstIndexLessThan = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfirstIndexLessThan, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dfirstIndexLessThan; + var main; + + main = require( './../lib/dfirst_index_less_than.js' ); + + dfirstIndexLessThan = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dfirstIndexLessThan, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.ndarray.js new file mode 100644 index 000000000000..11b1ebdf9046 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.ndarray.js @@ -0,0 +1,284 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfirstIndexLessThan = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + // Nonnegative stride... + actual = dfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = new Float64Array( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = dfirstIndexLessThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = new Float64Array( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = new Float64Array( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -1, 2, y, -2, 4 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -2, 4, y, -2, 4 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + actual = dfirstIndexLessThan( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexLessThan( -1, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', function test( t ) { + var actual; + + actual = dfirstIndexLessThan( 1, new Float64Array( [ NaN ] ), 1, 0, new Float64Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexLessThan( 1, new Float64Array( [ 0.0 ] ), 1, 0, new Float64Array( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', function test( t ) { + var actual; + + actual = dfirstIndexLessThan( 1, new Float64Array( [ -0.0 ] ), 1, 0, new Float64Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float64Array([ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]); + y = new Float64Array([ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]); + + actual = dfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float64Array([ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 5.0, + 5.0, + 5.0, // 0 + 1.0, // 1 + 5.0 // 2 + ]); + y = new Float64Array([ + 5.0, // 0 + 2.0, // 1 + 4.0 // 2 + ]); + + actual = dfirstIndexLessThan( 3, x, 1, 2, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, // 1 + 5.0 // 2 + ]); + y = new Float64Array([ + 0.0, + 0.0, + 5.0, // 0 + 2.0, // 1 + 4.0 // 2 + ]); + + actual = dfirstIndexLessThan( 3, x, 1, 0, y, 1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]); + y = new Float64Array([ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.ndarray.native.js new file mode 100644 index 000000000000..0aff544155b6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dfirst-index-less-than/test/test.ndarray.native.js @@ -0,0 +1,293 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dfirstIndexLessThan = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dfirstIndexLessThan instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + // Nonnegative stride... + actual = dfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float64Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float64Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = new Float64Array( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = dfirstIndexLessThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float64Array( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = new Float64Array( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float64Array( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = new Float64Array( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -1, 2, y, -2, 4 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float64Array( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float64Array( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = dfirstIndexLessThan( 3, x, -2, 4, y, -2, 4 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + actual = dfirstIndexLessThan( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexLessThan( -1, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', opts, function test( t ) { + var actual; + + actual = dfirstIndexLessThan( 1, new Float64Array( [ NaN ] ), 1, 0, new Float64Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dfirstIndexLessThan( 1, new Float64Array( [ 0.0 ] ), 1, 0, new Float64Array( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', opts, function test( t ) { + var actual; + + actual = dfirstIndexLessThan( 1, new Float64Array( [ -0.0 ] ), 1, 0, new Float64Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float64Array([ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]); + y = new Float64Array([ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]); + + actual = dfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float64Array([ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 5.0, + 5.0, + 5.0, // 0 + 1.0, // 1 + 5.0 // 2 + ]); + y = new Float64Array([ + 5.0, // 0 + 2.0, // 1 + 4.0 // 2 + ]); + + actual = dfirstIndexLessThan( 3, x, 1, 2, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, // 1 + 5.0 // 2 + ]); + y = new Float64Array([ + 0.0, + 0.0, + 5.0, // 0 + 2.0, // 1 + 4.0 // 2 + ]); + + actual = dfirstIndexLessThan( 3, x, 1, 0, y, 1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]); + y = new Float64Array([ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = dfirstIndexLessThan( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/README.md new file mode 100644 index 000000000000..62662a531dbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/README.md @@ -0,0 +1,319 @@ + + +# dindexOfNotEqual + +> Return the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var dindexOfNotEqual = require( '@stdlib/blas/ext/base/dindex-of-not-equal' ); +``` + +#### dindexOfNotEqual( N, searchElement, x, strideX ) + +Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 1.0, 0.0, 1.0 ] ); + +var idx = dindexOfNotEqual( x.length, 1.0, x, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **x**: input [`Float64Array`][@stdlib/array/float64]. +- **strideX**: stride length. + +If all elements in the array are equal to the search element, the function returns `-1`. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 1.0, 1.0, 1.0 ] ); + +var idx = dindexOfNotEqual( x.length, 1.0, x, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to search every other element: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 9.0, 0.0, 9.0, 1.0, 9.0 ] ); + +var idx = dindexOfNotEqual( 3, 1.0, x, 2 ); +// returns 1 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +// Create an offset view... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = dindexOfNotEqual( 3, 2.0, x1, 2 ); +// returns 1 +``` + +#### dindexOfNotEqual.ndarray( N, searchElement, x, strideX, offsetX ) + +Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 1.0, 0.0, 1.0 ] ); + +var idx = dindexOfNotEqual.ndarray( x.length, 1.0, x, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements of the strided array: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 1.0, 0.0, 1.0 ] ); + +var idx = dindexOfNotEqual.ndarray( 3, 1.0, x, 1, 1 ); +// returns 1 +``` + +
+ + + + + +
+ +## Notes + +- When searching for a search element, the function checks for inequality using the strict inequality operator `!==`. As a consequence, `NaN` values are considered distinct from all values (including other `NaN` values), and `-0` and `+0` are considered the same. + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dindexOfNotEqual = require( '@stdlib/blas/ext/base/dindex-of-not-equal' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'float64' +}); +console.log( x ); + +var idx = dindexOfNotEqual( x.length, 0.0, x, 1 ); +console.log( idx ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/dindex_of_not_equal.h" +``` + +#### stdlib_strided_dindex_of_not_equal( N, searchElement, \*X, strideX ) + +Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element. + +```c +double x[] = { 1.0, 1.0, 0.0, 1.0 }; + +int idx = stdlib_strided_dindex_of_not_equal( 4, 1.0, x, 1 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] double` search element. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. + +```c +CBLAS_INT stdlib_strided_dindex_of_not_equal( const CBLAS_INT N, const double searchElement, const double *X, const CBLAS_INT strideX ); +``` + + + +#### stdlib_strided_dindex_of_not_equal_ndarray( N, searchElement, \*X, strideX, offsetX ) + + + +Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element using alternative indexing semantics. + +```c +double x[] = { 1.0, 1.0, 0.0, 1.0 }; + +int idx = stdlib_strided_dindex_of_not_equal_ndarray( 4, 1.0, x, 1, 0 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] double` search element. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **offsetX**: `[in] CBLAS_INT` starting index. + +```c +CBLAS_INT stdlib_strided_dindex_of_not_equal_ndarray( const CBLAS_INT N, const double searchElement, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/dindex_of_not_equal.h" +#include + +int main( void ) { + // Create a strided array: + double x[] = { 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Perform a search: + int idx = stdlib_strided_dindex_of_not_equal( N, 1.0, x, strideX ); + + // Print the result: + printf( "index value: %d\n", idx ); +} +``` + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..86f59748f1a2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dindexOfNotEqual = require( './../lib/dindex_of_not_equal.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dindexOfNotEqual( x.length, 0.0, x, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.native.js new file mode 100644 index 000000000000..89a3d4c89204 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.native.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dindexOfNotEqual = tryRequire( resolve( __dirname, './../lib/dindex_of_not_equal.native.js' ) ); +var opts = { + 'skip': ( dindexOfNotEqual instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dindexOfNotEqual( x.length, 0.0, x, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..9b7c17a3766b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dindexOfNotEqual = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dindexOfNotEqual( x.length, 0.0, x, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..41d6b462c33a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dindexOfNotEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dindexOfNotEqual instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dindexOfNotEqual( x.length, 0.0, x, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/dindex-of-not-equal/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..7824ed0490c8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/benchmark/c/benchmark.length.c @@ -0,0 +1,197 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dindex_of_not_equal.h" +#include +#include +#include +#include +#include + +#define NAME "dindex_of_not_equal" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double t; + int idx; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = 0.0; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_dindex_of_not_equal( len, 0.0, x, 1 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double t; + int idx; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = 0.0; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_dindex_of_not_equal_ndarray( len, 0.0, x, 1, 0 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/docs/repl.txt new file mode 100644 index 000000000000..25a5b034fb96 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/docs/repl.txt @@ -0,0 +1,96 @@ + +{{alias}}( N, searchElement, x, strideX ) + Returns the first index of an element in a double-precision floating-point + strided array which is not equal to a specified search element. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + x: Float64Array + Input array. + + strideX: integer + Stride length. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, 1.0, 0.0, 1.0 ] ); + > var idx = {{alias}}( x.length, 1.0, x, 1 ) + 2 + + // Using `N` and stride parameters: + > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, 9.0, 0.0, 9.0, 1.0, 9.0 ] ); + > var idx = {{alias}}( 3, 1.0, x, 2 ) + 1 + + // View offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 1.0, 1.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var idx = {{alias}}( 2, 1.0, x1, 1 ) + 0 + + +{{alias}}.ndarray( N, searchElement, x, strideX, offsetX ) + Returns the first index of an element in a double-precision floating-point + strided array which is not equal to a specified search element using + alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a + starting index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + x: Float64Array + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, 1.0, 0.0, 1.0 ] ); + > var idx = {{alias}}.ndarray( x.length, 1.0, x, 1, 0 ) + 2 + + // Advanced indexing: + > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 1.0, 3.0, 1.0, 4.0 ] ); + > var idx = {{alias}}.ndarray( 3, 1.0, x, 2, 1 ) + 0 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..ac700a017a3e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/docs/types/index.d.ts @@ -0,0 +1,107 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `dindexOfNotEqual`. +*/ +interface Routine { + /** + * Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element. + * + * ## Notes + * + * - If all elements are equal to the search element, the function returns `-1`. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param x - input array + * @param strideX - stride length + * @returns index + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 1.0, 0.0, 1.0 ] ); + * + * var idx = dindexOfNotEqual( x.length, 1.0, x, 1 ); + * // returns 2 + */ + ( N: number, searchElement: number, x: Float64Array, strideX: number ): number; + + /** + * Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element using alternative indexing semantics. + * + * ## Notes + * + * - If all elements are equal to the search element, the function returns `-1`. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns index + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 1.0, 0.0, 1.0 ] ); + * + * var idx = dindexOfNotEqual.ndarray( x.length, 1.0, x, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, searchElement: number, x: Float64Array, strideX: number, offsetX: number ): number; +} + +/** +* Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element. +* +* ## Notes +* +* - If all elements are equal to the search element, the function returns `-1`. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param x - input array +* @param strideX - stride length +* @returns index +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 1.0, 0.0, 1.0 ] ); +* +* var idx = dindexOfNotEqual( x.length, 1.0, x, 1 ); +* // returns 2 +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 1.0, 0.0, 1.0 ] ); +* +* var idx = dindexOfNotEqual.ndarray( x.length, 1.0, x, 1, 0 ); +* // returns 2 +*/ +declare var dindexOfNotEqual: Routine; + + +// EXPORTS // + +export = dindexOfNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..fff8d364263d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/docs/types/test.ts @@ -0,0 +1,148 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dindexOfNotEqual = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dindexOfNotEqual( x.length, 2.0, x, 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dindexOfNotEqual( '1', 2.0, x, 1 ); // $ExpectError + dindexOfNotEqual( true, 2.0, x, 1 ); // $ExpectError + dindexOfNotEqual( false, 2.0, x, 1 ); // $ExpectError + dindexOfNotEqual( null, 2.0, x, 1 ); // $ExpectError + dindexOfNotEqual( {}, 2.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dindexOfNotEqual( x.length, '1', x, 1 ); // $ExpectError + dindexOfNotEqual( x.length, true, x, 1 ); // $ExpectError + dindexOfNotEqual( x.length, false, x, 1 ); // $ExpectError + dindexOfNotEqual( x.length, null, x, 1 ); // $ExpectError + dindexOfNotEqual( x.length, {}, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Float64Array... +{ + dindexOfNotEqual( x.length, 1.0, '1', 1 ); // $ExpectError + dindexOfNotEqual( x.length, 1.0, true, 1 ); // $ExpectError + dindexOfNotEqual( x.length, 1.0, false, 1 ); // $ExpectError + dindexOfNotEqual( x.length, 1.0, null, 1 ); // $ExpectError + dindexOfNotEqual( x.length, 1.0, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dindexOfNotEqual( x.length, 2.0, x, '1' ); // $ExpectError + dindexOfNotEqual( x.length, 2.0, x, true ); // $ExpectError + dindexOfNotEqual( x.length, 2.0, x, false ); // $ExpectError + dindexOfNotEqual( x.length, 2.0, x, null ); // $ExpectError + dindexOfNotEqual( x.length, 2.0, x, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + dindexOfNotEqual(); // $ExpectError + dindexOfNotEqual( 3, 2.0 ); // $ExpectError + dindexOfNotEqual( 3, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ) ); // $ExpectError + dindexOfNotEqual( 3, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dindexOfNotEqual.ndarray( x.length, 2.0, x, 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dindexOfNotEqual.ndarray( '1', 2.0, x, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( true, 2.0, x, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( false, 2.0, x, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( null, 2.0, x, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( {}, 2.0, x, 1, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dindexOfNotEqual.ndarray( x.length, '1', x, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, true, x, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, false, x, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, null, x, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, {}, x, 1, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Float64Array... +{ + dindexOfNotEqual.ndarray( x.length, 1.0, '1', 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 1.0, true, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 1.0, false, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 1.0, null, 1, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 1.0, {}, 1, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dindexOfNotEqual.ndarray( x.length, 2.0, x, '1', 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 2.0, x, true, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 2.0, x, false, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 2.0, x, null, 1 ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 2.0, x, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + dindexOfNotEqual.ndarray( x.length, 2.0, x, 1, '1' ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 2.0, x, 1, true ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 2.0, x, 1, false ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 2.0, x, 1, null ); // $ExpectError + dindexOfNotEqual.ndarray( x.length, 2.0, x, 1, {} ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + dindexOfNotEqual.ndarray(); // $ExpectError + dindexOfNotEqual.ndarray( 3, 2.0 ); // $ExpectError + dindexOfNotEqual.ndarray( 3, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ) ); // $ExpectError + dindexOfNotEqual.ndarray( 3, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1 ); // $ExpectError + dindexOfNotEqual.ndarray( 3, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/examples/c/example.c new file mode 100644 index 000000000000..eb2e1cb1bec4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/examples/c/example.c @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dindex_of_not_equal.h" +#include + +int main( void ) { + // Create a strided array: + const double x[] = { 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Perform a search: + int idx = stdlib_strided_dindex_of_not_equal( N, 1.0, x, strideX ); + + // Print the result: + printf( "index value: %d\n", idx ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/examples/index.js new file mode 100644 index 000000000000..c8d106292fa1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dindexOfNotEqual = require( './../lib' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'float64' +}); +console.log( x ); + +var idx = dindexOfNotEqual( x.length, 0.0, x, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "blas", + "find", + "index", + "search", + "element", + "array", + "ndarray", + "strided", + "double", + "float", + "float64", + "float64array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/src/addon.c new file mode 100644 index 000000000000..3233b34bdedb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/src/addon.c @@ -0,0 +1,64 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dindex_of_not_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_double.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include "stdlib/napi/create_int32.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 4 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_dindex_of_not_equal)( N, searchElement, X, strideX ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_dindex_of_not_equal_ndarray)( N, searchElement, X, strideX, offsetX ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/src/main.c new file mode 100644 index 000000000000..3e20e3be1e43 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/src/main.c @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dindex_of_not_equal.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element. +* +* @param N number of indexed elements +* @param searchElement search element +* @param X input array +* @param strideX stride length +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_dindex_of_not_equal)( const CBLAS_INT N, const double searchElement, const double *X, const CBLAS_INT strideX ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + return API_SUFFIX(stdlib_strided_dindex_of_not_equal_ndarray)( N, searchElement, X, strideX, ox ); +} + +/** +* Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element using alternative indexing semantics. +* +* @param N number of indexed elements +* @param searchElement search element +* @param X input array +* @param strideX stride length +* @param offsetX starting index +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_dindex_of_not_equal_ndarray)( const CBLAS_INT N, const double searchElement, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { + CBLAS_INT ix; + CBLAS_INT i; + + if ( N <= 0 ) { + return -1; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( X[ ix ] != searchElement ) { + return i; + } + ix += strideX; + } + return -1; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.dindex_of_not_equal.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.dindex_of_not_equal.js new file mode 100644 index 000000000000..031bcd089736 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.dindex_of_not_equal.js @@ -0,0 +1,176 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dindexOfNotEqual = require( './../lib/dindex_of_not_equal.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( dindexOfNotEqual.length, 4, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a strided array which is not equal to a provided search element', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + // Nonnegative stride... + actual = dindexOfNotEqual( x.length, 1.0, x, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 2.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 3.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 4.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + actual = dindexOfNotEqual( x.length, 1.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 2.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 3.0, x, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 4.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in the array is equal to the search element', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 2.0, 2.0, 2.0 ] ); + + actual = dindexOfNotEqual( x.length, 2.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + actual = dindexOfNotEqual( 0, 2.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dindexOfNotEqual( -1, 2.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided `searchElement` is `NaN`', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ NaN, 1.0 ] ); + + actual = dindexOfNotEqual( 2, NaN, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 1.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 1.0, x, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 1.0, 1.0, 1.0, 0.0, 1.0 ] ); + + actual = dindexOfNotEqual( x.length, 1.0, x, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 1.0, // 0 + 9.0, + 1.0, // 1 + 9.0, + 0.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 1.0, x, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var x1; + + x0 = new Float64Array( [ 9.0, 0.0, 1.0, 0.0, 0.0 ] ); + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + actual = dindexOfNotEqual( 3, 0.0, x1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.dindex_of_not_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.dindex_of_not_equal.native.js new file mode 100644 index 000000000000..7b5ee6595253 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.dindex_of_not_equal.native.js @@ -0,0 +1,185 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dindexOfNotEqual = tryRequire( resolve( __dirname, './../lib/dindex_of_not_equal.native.js' ) ); +var opts = { + 'skip': ( dindexOfNotEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', opts, function test( t ) { + t.strictEqual( dindexOfNotEqual.length, 4, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a strided array which is not equal to a provided search element', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + // Nonnegative stride... + actual = dindexOfNotEqual( x.length, 1.0, x, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 2.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 3.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 4.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + actual = dindexOfNotEqual( x.length, 1.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 2.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 3.0, x, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 4.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in the array is equal to the search element', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 2.0, 2.0, 2.0 ] ); + + actual = dindexOfNotEqual( x.length, 2.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + actual = dindexOfNotEqual( 0, 2.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dindexOfNotEqual( -1, 2.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided `searchElement` is `NaN`', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ NaN, 1.0 ] ); + + actual = dindexOfNotEqual( 2, NaN, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 1.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 1.0, x, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 1.0, 1.0, 1.0, 0.0, 1.0 ] ); + + actual = dindexOfNotEqual( x.length, 1.0, x, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 1.0, // 0 + 9.0, + 1.0, // 1 + 9.0, + 0.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 1.0, x, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var actual; + var x0; + var x1; + + x0 = new Float64Array( [ 9.0, 0.0, 1.0, 0.0, 0.0 ] ); + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + actual = dindexOfNotEqual( 3, 0.0, x1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.js new file mode 100644 index 000000000000..c81c9a7c4bd3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dindexOfNotEqual = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dindexOfNotEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dindexOfNotEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dindexOfNotEqual, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dindexOfNotEqual; + var main; + + main = require( './../lib/dindex_of_not_equal.js' ); + + dindexOfNotEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dindexOfNotEqual, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.ndarray.js new file mode 100644 index 000000000000..ecd2cdab08aa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.ndarray.js @@ -0,0 +1,182 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dindexOfNotEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( dindexOfNotEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a strided array which is not equal to a provided search element', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + // Nonnegative stride... + actual = dindexOfNotEqual( x.length, 1.0, x, 1, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 2.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 3.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 4.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + actual = dindexOfNotEqual( x.length, 1.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 2.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 3.0, x, -1, x.length-1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 4.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in the array is equal to the search element', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 2.0, 2.0, 2.0 ] ); + + actual = dindexOfNotEqual( x.length, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + actual = dindexOfNotEqual( 0, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dindexOfNotEqual( -1, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided `searchElement` is `NaN`', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ NaN, 1.0 ] ); + + actual = dindexOfNotEqual( 2, NaN, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 0.0, x, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 0.0, x, 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 5.0, 4.0, 3.0, 2.0, 1.0, 0.0 ] ); + + actual = dindexOfNotEqual( x.length, 0.0, x, -1, x.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 0.0, x, 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.ndarray.native.js new file mode 100644 index 000000000000..2d2cfb19eaa6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of-not-equal/test/test.ndarray.native.js @@ -0,0 +1,191 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dindexOfNotEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dindexOfNotEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( dindexOfNotEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a strided array which is not equal to a provided search element', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + // Nonnegative stride... + actual = dindexOfNotEqual( x.length, 1.0, x, 1, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 2.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 3.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 4.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + // Negative stride... + x = new Float64Array( [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + actual = dindexOfNotEqual( x.length, 1.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 2.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 3.0, x, -1, x.length-1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = dindexOfNotEqual( x.length, 4.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in the array is equal to the search element', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 2.0, 2.0, 2.0 ] ); + + actual = dindexOfNotEqual( x.length, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + + actual = dindexOfNotEqual( 0, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = dindexOfNotEqual( -1, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided `searchElement` is `NaN`', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ NaN, 1.0 ] ); + + actual = dindexOfNotEqual( 2, NaN, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 0.0, x, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 0.0, x, 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array( [ 5.0, 4.0, 3.0, 2.0, 1.0, 0.0 ] ); + + actual = dindexOfNotEqual( x.length, 0.0, x, -1, x.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + + x = new Float64Array([ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]); + + actual = dindexOfNotEqual( 3, 0.0, x, 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/docs/repl.txt index aba41e1e989f..524a31cce7dc 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/docs/repl.txt @@ -37,7 +37,7 @@ 1 -{{alias}}( N, searchElement, x, strideX, offsetX ) +{{alias}}.ndarray( N, searchElement, x, strideX, offsetX ) Returns the first index of a specified search element in a double-precision floating-point strided array using alternative indexing semantics. diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.dindex_of.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.dindex_of.js index 2918d8060815..5d0238a31de1 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.dindex_of.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.dindex_of.js @@ -68,7 +68,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { var actual; actual = dindexOf( 0, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.dindex_of.native.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.dindex_of.native.js index 2053cd306916..581e8806dc6c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.dindex_of.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.dindex_of.native.js @@ -77,7 +77,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; actual = dindexOf( 0, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.ndarray.js index 53afe4bfc888..839d9b94f244 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.ndarray.js @@ -68,7 +68,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { var actual; actual = dindexOf( 0, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.ndarray.native.js index f4679eae5f3d..fc8274101c79 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dindex-of/test/test.ndarray.native.js @@ -77,7 +77,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; actual = dindexOf( 0, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/lib/ndarray.js index 82bdac9c0131..c56004585907 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/lib/ndarray.js @@ -58,8 +58,7 @@ function dlastIndexOf( N, searchElement, x, strideX, offsetX ) { return idx; } // Convert the index from reversed "view" to an index in the original "view": - idx = N - 1 - idx; - return idx; + return N - 1 - idx; } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.dlast_index_of.js b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.dlast_index_of.js index a97f3c8354a3..ab7675d06166 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.dlast_index_of.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.dlast_index_of.js @@ -68,7 +68,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { var actual; actual = dlastIndexOf( 0, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.dlast_index_of.native.js b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.dlast_index_of.native.js index bc4dda495805..40294f80972c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.dlast_index_of.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.dlast_index_of.native.js @@ -77,7 +77,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; actual = dlastIndexOf( 0, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.ndarray.js index 6d843ef4f5e4..e057f6d6ddd1 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.ndarray.js @@ -68,7 +68,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { var actual; actual = dlastIndexOf( 0, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); // eslint-disable-line max-len diff --git a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.ndarray.native.js index 8e6a168ecb1c..0113dae2e25e 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/dlast-index-of/test/test.ndarray.native.js @@ -77,7 +77,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; actual = dlastIndexOf( 0, 2.0, new Float64Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); // eslint-disable-line max-len diff --git a/lib/node_modules/@stdlib/blas/ext/base/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/docs/types/index.d.ts index dcd3eb30cfd0..5e874001469f 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/blas/ext/base/docs/types/index.d.ts @@ -30,12 +30,15 @@ import cindexOfColumn = require( '@stdlib/blas/ext/base/cindex-of-column' ); import cindexOfRow = require( '@stdlib/blas/ext/base/cindex-of-row' ); import clastIndexOfRow = require( '@stdlib/blas/ext/base/clast-index-of-row' ); import coneTo = require( '@stdlib/blas/ext/base/cone-to' ); +import creplicate = require( '@stdlib/blas/ext/base/creplicate' ); import csum = require( '@stdlib/blas/ext/base/csum' ); import csumkbn = require( '@stdlib/blas/ext/base/csumkbn' ); import cunitspace = require( '@stdlib/blas/ext/base/cunitspace' ); import cwapx = require( '@stdlib/blas/ext/base/cwapx' ); +import cwax = require( '@stdlib/blas/ext/base/cwax' ); import cwhere = require( '@stdlib/blas/ext/base/cwhere' ); import cwxsa = require( '@stdlib/blas/ext/base/cwxsa' ); +import cxmy = require( '@stdlib/blas/ext/base/cxmy' ); import cxpy = require( '@stdlib/blas/ext/base/cxpy' ); import cxsa = require( '@stdlib/blas/ext/base/cxsa' ); import cxsy = require( '@stdlib/blas/ext/base/cxsy' ); @@ -66,9 +69,15 @@ import dcusumpw = require( '@stdlib/blas/ext/base/dcusumpw' ); import ddiff = require( '@stdlib/blas/ext/base/ddiff' ); import dediff = require( '@stdlib/blas/ext/base/dediff' ); import dfill = require( '@stdlib/blas/ext/base/dfill' ); +import dfillEqual = require( '@stdlib/blas/ext/base/dfill-equal' ); +import dfillNaN = require( '@stdlib/blas/ext/base/dfill-nan' ); +import dfillNotEqual = require( '@stdlib/blas/ext/base/dfill-not-equal' ); +import dfirstIndexEqual = require( '@stdlib/blas/ext/base/dfirst-index-equal' ); +import dfirstIndexLessThan = require( '@stdlib/blas/ext/base/dfirst-index-less-than' ); import dindexOf = require( '@stdlib/blas/ext/base/dindex-of' ); import dindexOfColumn = require( '@stdlib/blas/ext/base/dindex-of-column' ); import dindexOfFalsy = require( '@stdlib/blas/ext/base/dindex-of-falsy' ); +import dindexOfNotEqual = require( '@stdlib/blas/ext/base/dindex-of-not-equal' ); import dindexOfRow = require( '@stdlib/blas/ext/base/dindex-of-row' ); import dindexOfTruthy = require( '@stdlib/blas/ext/base/dindex-of-truthy' ); import dlastIndexOf = require( '@stdlib/blas/ext/base/dlast-index-of' ); @@ -96,6 +105,7 @@ import dnansumpw = require( '@stdlib/blas/ext/base/dnansumpw' ); import dnone = require( '@stdlib/blas/ext/base/dnone' ); import doneTo = require( '@stdlib/blas/ext/base/done-to' ); import dones = require( '@stdlib/blas/ext/base/dones' ); +import dreplicate = require( '@stdlib/blas/ext/base/dreplicate' ); import drev = require( '@stdlib/blas/ext/base/drev' ); import drrss = require( '@stdlib/blas/ext/base/drrss' ); import drss = require( '@stdlib/blas/ext/base/drss' ); @@ -126,8 +136,10 @@ import dsumpw = require( '@stdlib/blas/ext/base/dsumpw' ); import dunitspace = require( '@stdlib/blas/ext/base/dunitspace' ); import dvander = require( '@stdlib/blas/ext/base/dvander' ); import dwapx = require( '@stdlib/blas/ext/base/dwapx' ); +import dwax = require( '@stdlib/blas/ext/base/dwax' ); import dwhere = require( '@stdlib/blas/ext/base/dwhere' ); import dwxsa = require( '@stdlib/blas/ext/base/dwxsa' ); +import dxdy = require( '@stdlib/blas/ext/base/dxdy' ); import dxmy = require( '@stdlib/blas/ext/base/dxmy' ); import dxpy = require( '@stdlib/blas/ext/base/dxpy' ); import dxsa = require( '@stdlib/blas/ext/base/dxsa' ); @@ -163,15 +175,26 @@ import gediff = require( '@stdlib/blas/ext/base/gediff' ); import gevery = require( '@stdlib/blas/ext/base/gevery' ); import gfill = require( '@stdlib/blas/ext/base/gfill' ); import gfillBy = require( '@stdlib/blas/ext/base/gfill-by' ); +import gfillEqual = require( '@stdlib/blas/ext/base/gfill-equal' ); +import gfillLessThan = require( '@stdlib/blas/ext/base/gfill-less-than' ); +import gfillNaN = require( '@stdlib/blas/ext/base/gfill-nan' ); +import gfillNotEqual = require( '@stdlib/blas/ext/base/gfill-not-equal' ); import gfindIndex = require( '@stdlib/blas/ext/base/gfind-index' ); import gfindLastIndex = require( '@stdlib/blas/ext/base/gfind-last-index' ); +import gfirstIndexEqual = require( '@stdlib/blas/ext/base/gfirst-index-equal' ); +import gfirstIndexGreaterThan = require( '@stdlib/blas/ext/base/gfirst-index-greater-than' ); +import gfirstIndexLessThan = require( '@stdlib/blas/ext/base/gfirst-index-less-than' ); +import gfirstIndexNotEqual = require( '@stdlib/blas/ext/base/gfirst-index-not-equal' ); import gindexOf = require( '@stdlib/blas/ext/base/gindex-of' ); import gindexOfColumn = require( '@stdlib/blas/ext/base/gindex-of-column' ); import gindexOfFalsy = require( '@stdlib/blas/ext/base/gindex-of-falsy' ); +import gindexOfNotEqual = require( '@stdlib/blas/ext/base/gindex-of-not-equal' ); import gindexOfRow = require( '@stdlib/blas/ext/base/gindex-of-row' ); +import gindexOfSameValue = require( '@stdlib/blas/ext/base/gindex-of-same-value' ); import gindexOfTruthy = require( '@stdlib/blas/ext/base/gindex-of-truthy' ); import gjoin = require( '@stdlib/blas/ext/base/gjoin' ); import gjoinBetween = require( '@stdlib/blas/ext/base/gjoin-between' ); +import glastIndexEqual = require( '@stdlib/blas/ext/base/glast-index-equal' ); import glastIndexOf = require( '@stdlib/blas/ext/base/glast-index-of' ); import glastIndexOfFalsy = require( '@stdlib/blas/ext/base/glast-index-of-falsy' ); import glastIndexOfRow = require( '@stdlib/blas/ext/base/glast-index-of-row' ); @@ -215,6 +238,7 @@ import gwhere = require( '@stdlib/blas/ext/base/gwhere' ); import gwxpy = require( '@stdlib/blas/ext/base/gwxpy' ); import gwxsa = require( '@stdlib/blas/ext/base/gwxsa' ); import gwxsy = require( '@stdlib/blas/ext/base/gwxsy' ); +import gxdy = require( '@stdlib/blas/ext/base/gxdy' ); import gxmy = require( '@stdlib/blas/ext/base/gxmy' ); import gxpy = require( '@stdlib/blas/ext/base/gxpy' ); import gxsa = require( '@stdlib/blas/ext/base/gxsa' ); @@ -253,6 +277,11 @@ import sdssum = require( '@stdlib/blas/ext/base/sdssum' ); import sdssumpw = require( '@stdlib/blas/ext/base/sdssumpw' ); import sediff = require( '@stdlib/blas/ext/base/sediff' ); import sfill = require( '@stdlib/blas/ext/base/sfill' ); +import sfillEqual = require( '@stdlib/blas/ext/base/sfill-equal' ); +import sfillNaN = require( '@stdlib/blas/ext/base/sfill-nan' ); +import sfillNotEqual = require( '@stdlib/blas/ext/base/sfill-not-equal' ); +import sfirstIndexEqual = require( '@stdlib/blas/ext/base/sfirst-index-equal' ); +import sfirstIndexLessThan = require( '@stdlib/blas/ext/base/sfirst-index-less-than' ); import sindexOf = require( '@stdlib/blas/ext/base/sindex-of' ); import sindexOfColumn = require( '@stdlib/blas/ext/base/sindex-of-column' ); import sindexOfFalsy = require( '@stdlib/blas/ext/base/sindex-of-falsy' ); @@ -275,6 +304,7 @@ import snansumpw = require( '@stdlib/blas/ext/base/snansumpw' ); import snone = require( '@stdlib/blas/ext/base/snone' ); import soneTo = require( '@stdlib/blas/ext/base/sone-to' ); import sones = require( '@stdlib/blas/ext/base/sones' ); +import sreplicate = require( '@stdlib/blas/ext/base/sreplicate' ); import srev = require( '@stdlib/blas/ext/base/srev' ); import ssome = require( '@stdlib/blas/ext/base/ssome' ); import ssort = require( '@stdlib/blas/ext/base/ssort' ); @@ -292,8 +322,10 @@ import ssumpw = require( '@stdlib/blas/ext/base/ssumpw' ); import sunitspace = require( '@stdlib/blas/ext/base/sunitspace' ); import svander = require( '@stdlib/blas/ext/base/svander' ); import swapx = require( '@stdlib/blas/ext/base/swapx' ); +import swax = require( '@stdlib/blas/ext/base/swax' ); import swhere = require( '@stdlib/blas/ext/base/swhere' ); import swxsa = require( '@stdlib/blas/ext/base/swxsa' ); +import sxdy = require( '@stdlib/blas/ext/base/sxdy' ); import sxmy = require( '@stdlib/blas/ext/base/sxmy' ); import sxpy = require( '@stdlib/blas/ext/base/sxpy' ); import sxsa = require( '@stdlib/blas/ext/base/sxsa' ); @@ -309,15 +341,20 @@ import zfill = require( '@stdlib/blas/ext/base/zfill' ); import zindexOf = require( '@stdlib/blas/ext/base/zindex-of' ); import zindexOfColumn = require( '@stdlib/blas/ext/base/zindex-of-column' ); import zindexOfRow = require( '@stdlib/blas/ext/base/zindex-of-row' ); +import zindexOfTruthy = require( '@stdlib/blas/ext/base/zindex-of-truthy' ); import zlastIndexOfRow = require( '@stdlib/blas/ext/base/zlast-index-of-row' ); import znancount = require( '@stdlib/blas/ext/base/znancount' ); import zoneTo = require( '@stdlib/blas/ext/base/zone-to' ); +import zreplicate = require( '@stdlib/blas/ext/base/zreplicate' ); import zsum = require( '@stdlib/blas/ext/base/zsum' ); import zsumkbn = require( '@stdlib/blas/ext/base/zsumkbn' ); import zunitspace = require( '@stdlib/blas/ext/base/zunitspace' ); import zwapx = require( '@stdlib/blas/ext/base/zwapx' ); +import zwax = require( '@stdlib/blas/ext/base/zwax' ); import zwhere = require( '@stdlib/blas/ext/base/zwhere' ); import zwxsa = require( '@stdlib/blas/ext/base/zwxsa' ); +import zxdy = require( '@stdlib/blas/ext/base/zxdy' ); +import zxmy = require( '@stdlib/blas/ext/base/zxmy' ); import zxpy = require( '@stdlib/blas/ext/base/zxpy' ); import zxsa = require( '@stdlib/blas/ext/base/zxsa' ); import zxsy = require( '@stdlib/blas/ext/base/zxsy' ); @@ -709,6 +746,37 @@ interface Namespace { */ coneTo: typeof coneTo; + /** + * Replicates each element in a single-precision complex floating-point strided array a specified number of times. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var out = new Complex64Array( 6 ); + * + * ns.creplicate( x.length, 2, x, 1, out, 1 ); + * // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var out = new Complex64Array( 6 ); + * + * ns.creplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); + * // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] + */ + creplicate: typeof creplicate; + /** * Computes the sum of single-precision complex floating-point strided array elements. * @@ -827,6 +895,43 @@ interface Namespace { */ cwapx: typeof cwapx; + /** + * Multiplies each element in a single-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision complex floating-point strided array `w`. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param w - output array + * @param strideW - `w` stride length + * @returns `w` + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * var Complex64 = require( '@stdlib/complex/float32/ctor' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + * var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * var alpha = new Complex64( 5.0, 3.0 ); + * + * ns.cwax( x.length, alpha, x, 1, w, 1 ); + * // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * var Complex64 = require( '@stdlib/complex/float32/ctor' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + * var w = new Complex64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * var alpha = new Complex64( 5.0, 3.0 ); + * + * ns.cwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); + * // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + */ + cwax: typeof cwax; + /** * Takes elements from one of two single-precision complex floating-point strided arrays depending on a condition. * @@ -904,6 +1009,36 @@ interface Namespace { */ cwxsa: typeof cwxsa; + /** + * Multiplies elements of a single-precision complex floating-point strided array `x` by the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + * + * ns.cxmy( x.length, x, 1, y, 1 ); + * // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + * + * @example + * var Complex64Array = require( '@stdlib/array/complex64' ); + * + * var x = new Complex64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var y = new Complex64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + * + * ns.cxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + */ + cxmy: typeof cxmy; + /** * Adds elements of a single-precision complex floating-point strided array `x` to the corresponding elements of a single-precision complex floating-point strided array `y` and assigns the results to `y`. * @@ -1836,6 +1971,153 @@ interface Namespace { */ dfill: typeof dfill; + /** + * Replaces double-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * ns.dfillEqual( x.length, 0.0, 5.0, x, 1 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * ns.dfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + */ + dfillEqual: typeof dfillEqual; + + /** + * Replaces double-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + * + * ns.dfillNaN( x.length, 0.0, x, 1 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + * + * ns.dfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + */ + dfillNaN: typeof dfillNaN; + + /** + * Replaces double-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * ns.dfillNotEqual( 6, 0.0, 5.0, x, 1 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * ns.dfillNotEqual.ndarray( 6, 0.0, 5.0, x, 1, 0 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + dfillNotEqual: typeof dfillNotEqual; + + /** + * Returns the index of the first element in a double-precision floating-point strided array equal to a corresponding element in another double-precision floating-point strided array. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + * + * var idx = ns.dfirstIndexEqual( 4, x, 1, y, 1 ); + * // returns 2 + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var y = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + * + * var idx = ns.dfirstIndexEqual.ndarray( 4, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + dfirstIndexEqual: typeof dfirstIndexEqual; + + /** + * Returns the index of the first element in a double-precision floating-point strided array which is less than a corresponding element in another double-precision floating-point strided array. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + * var y = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * var idx = ns.dfirstIndexLessThan( x.length, x, 1, y, 1 ); + * // returns 2 + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + * var y = new Float64Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * var idx = ns.dfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + dfirstIndexLessThan: typeof dfirstIndexLessThan; + /** * Returns the first index of a specified search element in a double-precision floating-point strided array. * @@ -1941,6 +2223,37 @@ interface Namespace { */ dindexOfFalsy: typeof dindexOfFalsy; + /** + * Returns the first index of an element in a double-precision floating-point strided array which is not equal to a specified search element. + * + * ## Notes + * + * - If all elements are equal to the search element, the function returns `-1`. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param x - input array + * @param strideX - stride length + * @returns index + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 1.0, 0.0, 1.0 ] ); + * + * var idx = ns.dindexOfNotEqual( x.length, 1.0, x, 1 ); + * // returns 2 + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 1.0, 0.0, 1.0 ] ); + * + * var idx = ns.dindexOfNotEqual.ndarray( x.length, 1.0, x, 1, 0 ); + * // returns 2 + */ + dindexOfNotEqual: typeof dindexOfNotEqual; + /** * Returns the index of the first row in a double-precision floating-point input matrix which has the same elements as a provided search vector. * @@ -2778,6 +3091,37 @@ interface Namespace { */ dones: typeof dones; + /** + * Replicates each element in a double-precision floating-point strided array a specified number of times. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + * var out = new Float64Array( 6 ); + * + * ns.dreplicate( x.length, 2, x, 1, out, 1 ); + * // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + * var out = new Float64Array( 6 ); + * + * ns.dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); + * // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + */ + dreplicate: typeof dreplicate; + /** * Reverses a double-precision floating-point strided array in-place. * @@ -3646,21 +3990,52 @@ interface Namespace { dwapx: typeof dwapx; /** - * Takes elements from one of two double-precision floating-point strided arrays depending on a condition. + * Multiplies each element in a double-precision floating-point strided array `x` by a scalar constant and assigns the results to a double-precision floating-point strided array `w`. * * @param N - number of indexed elements - * @param condition - condition array - * @param strideC - stride length for `condition` - * @param x - first input array - * @param strideX - stride length for `x` - * @param y - second input array - * @param strideY - stride length for `y` - * @param out - output array - * @param strideOut - stride length for `out` - * @returns output array + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param w - output array + * @param strideW - `w` stride length + * @returns `w` * * @example - * var BooleanArray = require( '@stdlib/array/bool' ); + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * ns.dwax( x.length, 5.0, x, 1, w, 1 ); + * // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * ns.dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); + * // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + */ + dwax: typeof dwax; + + /** + * Takes elements from one of two double-precision floating-point strided arrays depending on a condition. + * + * @param N - number of indexed elements + * @param condition - condition array + * @param strideC - stride length for `condition` + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var BooleanArray = require( '@stdlib/array/bool' ); * * var condition = new BooleanArray( [ true, false, true ] ); * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); @@ -3714,6 +4089,36 @@ interface Namespace { */ dwxsa: typeof dwxsa; + /** + * Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + * var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * ns.dxdy( x.length, x, 1, y, 1 ); + * // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + * var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * ns.dxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] + */ + dxdy: typeof dxdy; + /** * Multiplies elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y`. * @@ -4667,6 +5072,101 @@ interface Namespace { */ gfillBy: typeof gfillBy; + /** + * Replaces strided array elements equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; + * + * ns.gfillEqual( x.length, 0.0, 5.0, x, 1 ); + * // x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] + * + * @example + * var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; + * + * ns.gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); + * // x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] + */ + gfillEqual: typeof gfillEqual; + + /** + * Replaces strided array elements less than a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var x = [ 0.0, 0.0, 1.0, 0.0 ]; + * + * ns.gfillLessThan( x.length, 0.5, 5.0, x, 1 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + * + * @example + * var x = [ 0.0, 0.0, 1.0, 0.0 ]; + * + * ns.gfillLessThan.ndarray( x.length, 0.5, 5.0, x, 1, 0 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + */ + gfillLessThan: typeof gfillLessThan; + + /** + * Replaces strided array elements equal to `NaN` with a specified scalar constant. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var x = [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ]; + * + * ns.gfillNaN( x.length, 0.0, x, 1 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + * + * @example + * var x = [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ]; + * + * ns.gfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + */ + gfillNaN: typeof gfillNaN; + + /** + * Replaces strided array elements not equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + * + * ns.gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + * + * @example + * var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + * + * ns.gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + gfillNotEqual: typeof gfillNotEqual; + /** * Returns the index of the first element which passes a test implemented by a predicate function. * @@ -4753,6 +5253,126 @@ interface Namespace { */ gfindLastIndex: typeof gfindLastIndex; + /** + * Returns the index of the first element in a strided array equal to a corresponding element in another strided array. + * + * ## Notes + * + * - If the function is unable to find matching elements, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 0.0, 0.0, 3.0, 0.0 ]; + * + * var idx = ns.gfirstIndexEqual( x.length, x, 1, y, 1 ); + * // returns 2 + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 0.0, 0.0, 3.0, 0.0 ]; + * + * var idx = ns.gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + gfirstIndexEqual: typeof gfirstIndexEqual; + + /** + * Returns the index of the first element in a strided array which is greater than a corresponding element in another strided array. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is greater than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 2.0, 2.0, 2.0, 2.0 ]; + * + * var idx = ns.gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + * // returns 2 + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 2.0, 2.0, 2.0, 2.0 ]; + * + * var idx = ns.gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + gfirstIndexGreaterThan: typeof gfirstIndexGreaterThan; + + /** + * Returns the index of the first element in a strided array which is less than a corresponding element in another strided array. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 0.0, 0.0, 0.0, 0.0 ]; + * var y = [ 0.0, 0.0, 1.0, 0.0 ]; + * + * var idx = ns.gfirstIndexLessThan( x.length, x, 1, y, 1 ); + * // returns 2 + * + * @example + * var x = [ 0.0, 0.0, 0.0, 0.0 ]; + * var y = [ 0.0, 0.0, 1.0, 0.0 ]; + * + * var idx = ns.gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + gfirstIndexLessThan: typeof gfirstIndexLessThan; + + /** + * Returns the index of the first element in a strided array which is not equal to the corresponding element in another strided array. + * + * ## Notes + * + * - If unable to find an element in `x` which is not equal to the corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 0, 0, 1, 0 ]; + * var y = [ 0, 0, 0, 0 ]; + * + * var idx = ns.gfirstIndexNotEqual( x.length, x, 1, y, 1 ); + * // returns 2 + * + * @example + * var x = [ 0, 0, 1, 0 ]; + * var y = [ 0, 0, 0, 0 ]; + * + * var idx = ns.gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + gfirstIndexNotEqual: typeof gfirstIndexNotEqual; + /** * Returns the first index of a specified search element in a strided array. * @@ -4838,6 +5458,33 @@ interface Namespace { */ gindexOfFalsy: typeof gindexOfFalsy; + /** + * Returns the first index of an element in a strided array which is not equal to a specified search element. + * + * ## Notes + * + * - If all elements are equal to the search element, the function returns `-1`. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param x - input array + * @param strideX - stride length + * @returns index + * + * @example + * var x = [ 1.0, 1.0, 0.0, 1.0 ]; + * + * var idx = ns.gindexOfNotEqual( x.length, 1.0, x, 1 ); + * // returns 2 + * + * @example + * var x = [ 1.0, 1.0, 0.0, 1.0 ]; + * + * var idx = ns.gindexOfNotEqual.ndarray( x.length, 1.0, x, 1, 0 ); + * // returns 2 + */ + gindexOfNotEqual: typeof gindexOfNotEqual; + /** * Returns the index of the first row in an input matrix which has the same elements as a provided search vector. * @@ -4870,6 +5517,33 @@ interface Namespace { */ gindexOfRow: typeof gindexOfRow; + /** + * Returns the index of the first element in a strided array which has the same value as a provided search element. + * + * ## Notes + * + * - If the function is unable to find a search element, the function returns `-1`. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param x - input array + * @param strideX - stride length + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * + * var idx = ns.gindexOfSameValue( x.length, 2.0, x, 1 ); + * // returns 1 + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * + * var idx = ns.gindexOfSameValue.ndarray( x.length, 2.0, x, 1, 0 ); + * // returns 1 + */ + gindexOfSameValue: typeof gindexOfSameValue; + /** * Returns the index of the first truthy element in a strided array. * @@ -4947,6 +5621,36 @@ interface Namespace { */ gjoinBetween: typeof gjoinBetween; + /** + * Returns the index of the last element in a strided array equal to a corresponding element in another strided array. + * + * ## Notes + * + * - If the function is unable to find matching elements, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 0.0, 0.0, 3.0, 0.0 ]; + * + * var idx = ns.glastIndexEqual( x.length, x, 1, y, 1 ); + * // returns 2 + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 0.0, 0.0, 3.0, 0.0 ]; + * + * var idx = ns.glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + glastIndexEqual: typeof glastIndexEqual; + /** * Returns the last index of a specified search element in a strided array. * @@ -6087,6 +6791,32 @@ interface Namespace { */ gwxsy: typeof gwxsy; + /** + * Divides elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns `y` + * + * @example + * var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + * var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + * + * ns.gxdy( x.length, x, 1, y, 1 ); + * // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] + * + * @example + * var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + * var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + * + * ns.gxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] + */ + gxdy: typeof gxdy; + /** * Multiplies elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y`. * @@ -7120,71 +7850,222 @@ interface Namespace { sdssumpw: typeof sdssumpw; /** - * Calculates the differences between consecutive elements of a single-precision floating-point strided array. + * Calculates the differences between consecutive elements of a single-precision floating-point strided array. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - stride length for `x` + * @param N1 - number of indexed elements to prepend + * @param prepend - prepend array + * @param strideP - stride length for `prepend` + * @param N2 - number of indexed elements to append + * @param append - append array + * @param strideA - stride length for `append` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 2.0, 4.0, 7.0, 11.0, 16.0 ] ); + * var p = new Float32Array( [ 1.0 ] ); + * var a = new Float32Array( [ 22.0 ] ); + * var out = new Float32Array( 6 ); + * + * ns.sediff( x.length, x, 1, 1, p, 1, 1, a, 1, out, 1 ); + * // out => [ 1.0, 2.0, 3.0, 4.0, 5.0, 22.0 ] + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 2.0, 4.0, 7.0, 11.0, 16.0 ] ); + * var p = new Float32Array( [ 1.0 ] ); + * var a = new Float32Array( [ 22.0 ] ); + * var out = new Float32Array( 6 ); + * + * ns.sediff.ndarray( x.length, x, 1, 0, 1, p, 1, 0, 1, a, 1, 0, out, 1, 0 ); + * // out => [ 1.0, 2.0, 3.0, 4.0, 5.0, 22.0 ] + */ + sediff: typeof sediff; + + /** + * Fills a single-precision floating-point strided array with a specified scalar value. + * + * @param N - number of indexed elements + * @param alpha - constant + * @param x - input array + * @param strideX - stride length + * @returns input array + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * + * ns.sfill( x.length, 5.0, x, 1 ); + * // x => [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * + * ns.sfill.ndarray( x.length, 5.0, x, 1, 0 ); + * // x => [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] + */ + sfill: typeof sfill; + + /** + * Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * ns.sfillEqual( x.length, 0.0, 5.0, x, 1 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * ns.sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + */ + sfillEqual: typeof sfillEqual; + + /** + * Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + * + * ns.sfillNaN( x.length, 0.0, x, 1 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + * + * ns.sfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + */ + sfillNaN: typeof sfillNaN; + + /** + * Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * ns.sfillNotEqual( 6, 0.0, 5.0, x, 1 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * ns.sfillNotEqual.ndarray( 6, 0.0, 5.0, x, 1, 0 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + sfillNotEqual: typeof sfillNotEqual; + + /** + * Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array. + * + * ## Notes + * + * - If the function is unable to find a match, the function returns `-1`. * * @param N - number of indexed elements - * @param x - input array + * @param x - first input array * @param strideX - stride length for `x` - * @param N1 - number of indexed elements to prepend - * @param prepend - prepend array - * @param strideP - stride length for `prepend` - * @param N2 - number of indexed elements to append - * @param append - append array - * @param strideA - stride length for `append` - * @param out - output array - * @param strideOut - stride length for `out` - * @returns output array + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index * * @example * var Float32Array = require( '@stdlib/array/float32' ); * - * var x = new Float32Array( [ 2.0, 4.0, 7.0, 11.0, 16.0 ] ); - * var p = new Float32Array( [ 1.0 ] ); - * var a = new Float32Array( [ 22.0 ] ); - * var out = new Float32Array( 6 ); + * var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0 ] ); * - * ns.sediff( x.length, x, 1, 1, p, 1, 1, a, 1, out, 1 ); - * // out => [ 1.0, 2.0, 3.0, 4.0, 5.0, 22.0 ] + * var idx = ns.sfirstIndexEqual( x.length, x, 1, y, 1 ); + * // returns 2 * * @example * var Float32Array = require( '@stdlib/array/float32' ); * - * var x = new Float32Array( [ 2.0, 4.0, 7.0, 11.0, 16.0 ] ); - * var p = new Float32Array( [ 1.0 ] ); - * var a = new Float32Array( [ 22.0 ] ); - * var out = new Float32Array( 6 ); + * var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0 ] ); * - * ns.sediff.ndarray( x.length, x, 1, 0, 1, p, 1, 0, 1, a, 1, 0, out, 1, 0 ); - * // out => [ 1.0, 2.0, 3.0, 4.0, 5.0, 22.0 ] + * var idx = ns.sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 */ - sediff: typeof sediff; + sfirstIndexEqual: typeof sfirstIndexEqual; /** - * Fills a single-precision floating-point strided array with a specified scalar value. + * Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. * * @param N - number of indexed elements - * @param alpha - constant - * @param x - input array - * @param strideX - stride length - * @returns input array + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index * * @example * var Float32Array = require( '@stdlib/array/float32' ); * - * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var x = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + * var y = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); * - * ns.sfill( x.length, 5.0, x, 1 ); - * // x => [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] + * var idx = ns.sfirstIndexLessThan( x.length, x, 1, y, 1 ); + * // returns 2 * * @example * var Float32Array = require( '@stdlib/array/float32' ); * - * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var x = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + * var y = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); * - * ns.sfill.ndarray( x.length, 5.0, x, 1, 0 ); - * // x => [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] + * var idx = ns.sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 */ - sfill: typeof sfill; + sfirstIndexLessThan: typeof sfirstIndexLessThan; /** * Returns the first index of a specified search element in a single-precision floating-point strided array. @@ -7895,6 +8776,37 @@ interface Namespace { */ sones: typeof sones; + /** + * Replicates each single-precision floating-point strided array element a specified number of times. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + * var out = new Float32Array( 6 ); + * + * ns.sreplicate( x.length, 2, x, 1, out, 1 ); + * // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + * var out = new Float32Array( 6 ); + * + * ns.sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); + * // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + */ + sreplicate: typeof sreplicate; + /** * Reverses a single-precision floating-point strided array in-place. * @@ -8400,6 +9312,37 @@ interface Namespace { */ swapx: typeof swapx; + /** + * Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to a single-precision floating-point strided array `w`. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param w - output array + * @param strideW - `w` stride length + * @returns `w` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * ns.swax( x.length, 5.0, x, 1, w, 1 ); + * // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * ns.swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); + * // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + */ + swax: typeof swax; + /** * Takes elements from one of two single-precision floating-point strided arrays depending on a condition. * @@ -8471,6 +9414,36 @@ interface Namespace { */ swxsa: typeof swxsa; + /** + * Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + * var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * ns.sxdy( x.length, x, 1, y, 1 ); + * // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + * var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * ns.sxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] + */ + sxdy: typeof sxdy; + /** * Multiplies elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y`. * @@ -8945,6 +9918,38 @@ interface Namespace { */ zindexOfRow: typeof zindexOfRow; + /** + * Returns the index of the first truthy element in a double-precision complex floating-point strided array. + * + * ## Notes + * + * - A complex number is truthy when at least one of its real or imaginary components is truthy. + * - If unable to find a truthy element, the function returns `-1`. + * - The function explicitly treats `NaN` values as falsy. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - stride length + * @returns index + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 0.0, 0.0, 1.0, 2.0 ] ); + * + * var idx = ns.zindexOfTruthy( x.length, x, 1 ); + * // returns 1 + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 0.0, 0.0, 1.0, 2.0 ] ); + * + * var idx = ns.zindexOfTruthy.ndarray( x.length, x, 1, 0 ); + * // returns 1 + */ + zindexOfTruthy: typeof zindexOfTruthy; + /** * Returns the index of the last row in a double-precision complex floating-point input matrix which has the same elements as a provided search vector. * @@ -9042,6 +10047,37 @@ interface Namespace { */ zoneTo: typeof zoneTo; + /** + * Replicates each element in a double-precision complex floating-point strided array a specified number of times. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var out = new Complex128Array( 6 ); + * + * ns.zreplicate( x.length, 2, x, 1, out, 1 ); + * // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var out = new Complex128Array( 6 ); + * + * ns.zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); + * // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] + */ + zreplicate: typeof zreplicate; + /** * Computes the sum of double-precision complex floating-point strided array elements. * @@ -9160,6 +10196,43 @@ interface Namespace { */ zwapx: typeof zwapx; + /** + * Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w`. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param w - output array + * @param strideW - `w` stride length + * @returns `w` + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * var Complex128 = require( '@stdlib/complex/float64/ctor' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + * var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * var alpha = new Complex128( 5.0, 3.0 ); + * + * ns.zwax( x.length, alpha, x, 1, w, 1 ); + * // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * var Complex128 = require( '@stdlib/complex/float64/ctor' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + * var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * var alpha = new Complex128( 5.0, 3.0 ); + * + * ns.zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); + * // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + */ + zwax: typeof zwax; + /** * Takes elements from one of two double-precision complex floating-point strided arrays depending on a condition. * @@ -9237,6 +10310,66 @@ interface Namespace { */ zwxsa: typeof zwxsa; + /** + * Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + * var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + * + * ns.zxdy( x.length, x, 1, y, 1 ); + * // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + * var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + * + * ns.zxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] + */ + zxdy: typeof zxdy; + + /** + * Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + * + * ns.zxmy( x.length, x, 1, y, 1 ); + * // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + * + * ns.zxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + */ + zxmy: typeof zxmy; + /** * Adds elements of a double-precision complex floating-point strided array `x` to the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. * diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/README.md b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/README.md new file mode 100644 index 000000000000..f11e4bfd6bf0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/README.md @@ -0,0 +1,323 @@ + + +# dreplicate + +> Replicate each element in a double-precision floating-point strided array a specified number of times. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dreplicate = require( '@stdlib/blas/ext/base/dreplicate' ); +``` + +#### dreplicate( N, k, x, strideX, out, strideOut ) + +Replicates each element in a double-precision floating-point strided array a specified number of times. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +var out = new Float64Array( 6 ); + +dreplicate( x.length, 2, x, 1, out, 1 ); +// out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **k**: number of times to replicate each element. +- **x**: input [`Float64Array`][@stdlib/array/float64]. +- **strideX**: stride length for `x`. +- **out**: output [`Float64Array`][@stdlib/array/float64]. +- **strideOut**: stride length for `out`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to replicate every other element: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out = new Float64Array( 6 ); + +dreplicate( 3, 2, x, 2, out, 1 ); +// out => [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out0 = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var out1 = new Float64Array( out0.buffer, out0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +dreplicate( 3, 2, x1, 2, out1, 1 ); +// out0 => [ 0.0, 0.0, 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ] +``` + +#### dreplicate.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) + +Replicates each element in a double-precision floating-point strided array a specified number of times using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +var out = new Float64Array( 6 ); + +dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +// out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetOut**: starting index for `out`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, offset parameters support indexing semantics based on starting indices. For example, to replicate every other element in the strided input array starting from the second element and to store in the last `N*k` elements of the strided output array starting from the last element: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +dreplicate.ndarray( 3, 2, x, 2, 1, out, -1, out.length-1 ); +// out => [ 0.0, 0.0, 6.0, 6.0, 4.0, 4.0, 2.0, 2.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0` or `k <= 0`, both functions return `out` unchanged. +- Both functions assume that the output array supports `N*k` indexed elements. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dreplicate = require( '@stdlib/blas/ext/base/dreplicate' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +var out = new Float64Array( x.length * 3 ); +console.log( out ); + +dreplicate( x.length, 3, x, 1, out, 1 ); +console.log( out ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/dreplicate.h" +``` + +#### stdlib_strided_dreplicate( N, k, \*X, strideX, \*Out, strideOut ) + +Replicates each element in a double-precision floating-point strided array a specified number of times. + +```c +const double x[] = { 1.0, 2.0, 3.0 }; +double out[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + +stdlib_strided_dreplicate( 3, 2, x, 1, out, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **k**: `[in] CBLAS_INT` number of times to replicate each element. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Out**: `[out] double*` output array. +- **strideOut**: `[in] CBLAS_INT` stride length for `Out`. + +```c +void stdlib_strided_dreplicate( const CBLAS_INT N, const CBLAS_INT k, const double *X, const CBLAS_INT strideX, double *Out, const CBLAS_INT strideOut ); +``` + + + +#### stdlib_strided_dreplicate_ndarray( N, k, \*X, strideX, offsetX, \*Out, strideOut, offsetOut ) + + + +Replicates each element in a double-precision floating-point strided array a specified number of times using alternative indexing semantics. + +```c +const double x[] = { 1.0, 2.0, 3.0 }; +double out[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + +stdlib_strided_dreplicate_ndarray( 3, 2, x, 1, 0, out, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **k**: `[in] CBLAS_INT` number of times to replicate each element. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Out**: `[out] double*` output array. +- **strideOut**: `[in] CBLAS_INT` stride length for `Out`. +- **offsetOut**: `[in] CBLAS_INT` starting index for `Out`. + +```c +void stdlib_strided_dreplicate_ndarray( const CBLAS_INT N, const CBLAS_INT k, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, double *Out, const CBLAS_INT strideOut, const CBLAS_INT offsetOut ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/dreplicate.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, 2.0, 3.0, 4.0 }; + double out[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify the number of times to replicate each element: + const int k = 2; + + // Specify strides: + const int strideX = 1; + const int strideOut = 1; + + // Replicate each element: + stdlib_strided_dreplicate( N, k, x, strideX, out, strideOut ); + + // Print the results: + for ( int i = 0; i < 8; i++ ) { + printf( "Out[ %i ] = %lf\n", i, out[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.js new file mode 100644 index 000000000000..2e417a5ffaab --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dreplicate = require( './../lib/dreplicate.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( len * 2, options.dtype ); + var x = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x[ 0 ] += 1.0; + v = dreplicate( x.length, 2, x, 1, out, 1 ); + if ( isnan( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.native.js new file mode 100644 index 000000000000..8c3828b79575 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.native.js @@ -0,0 +1,111 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dreplicate = tryRequire( resolve( __dirname, './../lib/dreplicate.native.js' ) ); +var opts = { + 'skip': ( dreplicate instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( len * 2, options.dtype ); + var x = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x[ 0 ] += 1.0; + v = dreplicate( x.length, 2, x, 1, out, 1 ); + if ( isnan( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..254f58e0593c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.ndarray.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dreplicate = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( len * 2, options.dtype ); + var x = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x[ 0 ] += 1.0; + v = dreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + if ( isnan( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..e692b15e78b5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,111 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dreplicate = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dreplicate instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( len * 2, options.dtype ); + var x = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x[ 0 ] += 1.0; + v = dreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + if ( isnan( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/dreplicate/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..f0cceee3b598 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/benchmark/c/benchmark.length.c @@ -0,0 +1,205 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dreplicate.h" +#include +#include +#include +#include +#include + +#define NAME "dreplicate" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *out; + double *x; + double t; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + out = (double *) malloc( len * 2 * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_double()*99.0 ) + 1.0; + } + for ( i = 0; i < len*2; i++ ) { + out[ i ] = 0.0; + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ 0 ] += 1.0; + stdlib_strided_dreplicate( len, 2, x, 1, out, 1 ); + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + } + free( x ); + free( out ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *out; + double *x; + double t; + int i; + + x = (double *) malloc( len * sizeof( double ) ); + out = (double *) malloc( len * 2 * sizeof( double ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_double()*99.0 ) + 1.0; + } + for ( i = 0; i < len*2; i++ ) { + out[ i ] = 0.0; + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ 0 ] += 1.0; + stdlib_strided_dreplicate_ndarray( len, 2, x, 1, 0, out, 1, 0 ); + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + } + free( x ); + free( out ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/docs/repl.txt new file mode 100644 index 000000000000..9258543e18bb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/docs/repl.txt @@ -0,0 +1,118 @@ + +{{alias}}( N, k, x, strideX, out, strideOut ) + Replicates each element in a double-precision floating-point strided array a + specified number of times. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0` or `k <= 0`, the function returns `out` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + k: integer + Number of times to replicate each element. + + x: Float64Array + Input array. + + strideX: integer + Stride length for `x`. + + out: Float64Array + Output array. + + strideOut: integer + Stride length for `out`. + + Returns + ------- + out: Float64Array + Output array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0 ] ); + > var out = new {{alias:@stdlib/array/float64}}( 6 ); + > {{alias}}( x.length, 2, x, 1, out, 1 ) + [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > out = new {{alias:@stdlib/array/float64}}( 6 ); + > {{alias}}( 3, 2, x, 2, out, 1 ) + [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > var out0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var out1 = new {{alias:@stdlib/array/float64}}( out0.buffer, out0.BYTES_PER_ELEMENT*2 ); + > {{alias}}( 3, 2, x1, 2, out1, 1 ) + [ 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ] + > out0 + [ 0.0, 0.0, 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ] + + +{{alias}}.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) + Replicates each element in a double-precision floating-point strided array a + specified number of times using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + k: integer + Number of times to replicate each element. + + x: Float64Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + out: Float64Array + Output array. + + strideOut: integer + Stride length for `out`. + + offsetOut: integer + Starting index for `out`. + + Returns + ------- + out: Float64Array + Output array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0 ] ); + > var out = new {{alias:@stdlib/array/float64}}( 6 ); + > {{alias}}.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ) + [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + + // Advanced indexing: + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > out = new {{alias:@stdlib/array/float64}}( 6 ); + > {{alias}}.ndarray( 3, 2, x, 2, 1, out, -1, out.length-1 ) + [ 6.0, 6.0, 4.0, 4.0, 2.0, 2.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/docs/types/index.d.ts new file mode 100644 index 000000000000..38fbe0047921 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/docs/types/index.d.ts @@ -0,0 +1,106 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `dreplicate`. +*/ +interface Routine { + /** + * Replicates each element in a double-precision floating-point strided array a specified number of times. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + * var out = new Float64Array( 6 ); + * + * dreplicate( x.length, 2, x, 1, out, 1 ); + * // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + */ + ( N: number, k: number, x: Float64Array, strideX: number, out: Float64Array, strideOut: number ): Float64Array; + + /** + * Replicates each element in a double-precision floating-point strided array a specified number of times using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @param offsetOut - starting index for `out` + * @returns output array + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + * var out = new Float64Array( 6 ); + * + * dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); + * // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + */ + ndarray( N: number, k: number, x: Float64Array, strideX: number, offsetX: number, out: Float64Array, strideOut: number, offsetOut: number ): Float64Array; +} + +/** +* Replicates each element in a double-precision floating-point strided array a specified number of times. +* +* @param N - number of indexed elements +* @param k - number of times to replicate each element +* @param x - input array +* @param strideX - stride length for `x` +* @param out - output array +* @param strideOut - stride length for `out` +* @returns output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float64Array( 6 ); +* +* dreplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float64Array( 6 ); +* +* dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +declare var dreplicate: Routine; + + +// EXPORTS // + +export = dreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/docs/types/test.ts new file mode 100644 index 000000000000..468086d4ecda --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/docs/types/test.ts @@ -0,0 +1,280 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dreplicate = require( './index' ); + + +// TESTS // + +// The function returns a Float64Array... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate( x.length, 2, x, 1, out, 1 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate( '10', 2, x, 1, out, 1 ); // $ExpectError + dreplicate( true, 2, x, 1, out, 1 ); // $ExpectError + dreplicate( false, 2, x, 1, out, 1 ); // $ExpectError + dreplicate( null, 2, x, 1, out, 1 ); // $ExpectError + dreplicate( undefined, 2, x, 1, out, 1 ); // $ExpectError + dreplicate( [], 2, x, 1, out, 1 ); // $ExpectError + dreplicate( {}, 2, x, 1, out, 1 ); // $ExpectError + dreplicate( ( x: number ): number => x, 2, x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate( x.length, '10', x, 1, out, 1 ); // $ExpectError + dreplicate( x.length, true, x, 1, out, 1 ); // $ExpectError + dreplicate( x.length, false, x, 1, out, 1 ); // $ExpectError + dreplicate( x.length, null, x, 1, out, 1 ); // $ExpectError + dreplicate( x.length, undefined, x, 1, out, 1 ); // $ExpectError + dreplicate( x.length, [], x, 1, out, 1 ); // $ExpectError + dreplicate( x.length, {}, x, 1, out, 1 ); // $ExpectError + dreplicate( x.length, ( x: number ): number => x, x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate( x.length, 2, 10, 1, out, 1 ); // $ExpectError + dreplicate( x.length, 2, '10', 1, out, 1 ); // $ExpectError + dreplicate( x.length, 2, true, 1, out, 1 ); // $ExpectError + dreplicate( x.length, 2, false, 1, out, 1 ); // $ExpectError + dreplicate( x.length, 2, null, 1, out, 1 ); // $ExpectError + dreplicate( x.length, 2, undefined, 1, out, 1 ); // $ExpectError + dreplicate( x.length, 2, [ '1' ], 1, out, 1 ); // $ExpectError + dreplicate( x.length, 2, {}, 1, out, 1 ); // $ExpectError + dreplicate( x.length, 2, ( x: number ): number => x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate( x.length, 2, x, '10', out, 1 ); // $ExpectError + dreplicate( x.length, 2, x, true, out, 1 ); // $ExpectError + dreplicate( x.length, 2, x, false, out, 1 ); // $ExpectError + dreplicate( x.length, 2, x, null, out, 1 ); // $ExpectError + dreplicate( x.length, 2, x, undefined, out, 1 ); // $ExpectError + dreplicate( x.length, 2, x, [], out, 1 ); // $ExpectError + dreplicate( x.length, 2, x, {}, out, 1 ); // $ExpectError + dreplicate( x.length, 2, x, ( x: number ): number => x, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dreplicate( x.length, 2, x, 1, 10, 1 ); // $ExpectError + dreplicate( x.length, 2, x, 1, '10', 1 ); // $ExpectError + dreplicate( x.length, 2, x, 1, true, 1 ); // $ExpectError + dreplicate( x.length, 2, x, 1, false, 1 ); // $ExpectError + dreplicate( x.length, 2, x, 1, null, 1 ); // $ExpectError + dreplicate( x.length, 2, x, 1, undefined, 1 ); // $ExpectError + dreplicate( x.length, 2, x, 1, [ '1' ], 1 ); // $ExpectError + dreplicate( x.length, 2, x, 1, {}, 1 ); // $ExpectError + dreplicate( x.length, 2, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate( x.length, 2, x, 1, out, '10' ); // $ExpectError + dreplicate( x.length, 2, x, 1, out, true ); // $ExpectError + dreplicate( x.length, 2, x, 1, out, false ); // $ExpectError + dreplicate( x.length, 2, x, 1, out, null ); // $ExpectError + dreplicate( x.length, 2, x, 1, out, undefined ); // $ExpectError + dreplicate( x.length, 2, x, 1, out, [] ); // $ExpectError + dreplicate( x.length, 2, x, 1, out, {} ); // $ExpectError + dreplicate( x.length, 2, x, 1, out, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate(); // $ExpectError + dreplicate( x.length ); // $ExpectError + dreplicate( x.length, 2 ); // $ExpectError + dreplicate( x.length, 2, x ); // $ExpectError + dreplicate( x.length, 2, x, 1 ); // $ExpectError + dreplicate( x.length, 2, x, 1, out ); // $ExpectError + dreplicate( x.length, 2, x, 1, out, 1, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float64Array... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate.ndarray( '10', 2, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( true, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( false, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( null, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( undefined, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( [], 2, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( {}, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( ( x: number ): number => x, 2, x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate.ndarray( x.length, '10', x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, true, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, false, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, null, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, undefined, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, [], x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, {}, x, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, ( x: number ): number => x, x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate.ndarray( x.length, 2, 10, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, '10', 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, true, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, false, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, null, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, undefined, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, [ '1' ], 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, {}, 1, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, ( x: number ): number => x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate.ndarray( x.length, 2, x, '10', 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, true, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, false, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, null, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, undefined, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, [], 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, {}, 0, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, ( x: number ): number => x, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate.ndarray( x.length, 2, x, 1, '10', out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, true, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, false, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, null, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, undefined, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, [], out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, {}, out, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, ( x: number ): number => x, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dreplicate.ndarray( x.length, 2, x, 1, 0, 10, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, '10', 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, true, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, false, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, null, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, undefined, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, {}, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate.ndarray( x.length, 2, x, 1, 0, out, '10', 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, true, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, false, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, null, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, undefined, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, [], 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, {}, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, '10' ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, true ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, false ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, null ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, undefined ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, [] ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, {} ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + const out = new Float64Array( 20 ); + + dreplicate.ndarray(); // $ExpectError + dreplicate.ndarray( x.length ); // $ExpectError + dreplicate.ndarray( x.length, 2 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1 ); // $ExpectError + dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/examples/c/example.c new file mode 100644 index 000000000000..ad1d3d0dfa76 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/examples/c/example.c @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dreplicate.h" +#include + +int main( void ) { + // Create a strided array: + const double x[] = { 1.0, 2.0, 3.0, 4.0 }; + double out[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify the number of times to replicate each element: + const int k = 2; + + // Specify strides: + const int strideX = 1; + const int strideOut = 1; + + // Replicate each element: + stdlib_strided_dreplicate( N, k, x, strideX, out, strideOut ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "Out[ %i ] = %lf\n", i, out[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/examples/index.js new file mode 100644 index 000000000000..8684e1be7f78 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/examples/index.js @@ -0,0 +1,34 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dreplicate = require( './../lib' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +var out = new Float64Array( x.length * 3 ); +console.log( out ); + +dreplicate( x.length, 3, x, 1, out, 1 ); +console.log( out ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +function dreplicate( N, k, x, strideX, out, strideOut ) { + var ox = stride2offset( N, strideX ); + var oo = stride2offset( N * k, strideOut ); + return ndarray( N, k, x, strideX, ox, out, strideOut, oo ); +} + + +// EXPORTS // + +module.exports = dreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/dreplicate.native.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/dreplicate.native.js new file mode 100644 index 000000000000..cb4e46a979c0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/dreplicate.native.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replicates each element in a double-precision floating-point strided array a specified number of times. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {Float64Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @returns {Float64Array} output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float64Array( 6 ); +* +* dreplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +function dreplicate( N, k, x, strideX, out, strideOut ) { + addon( N, k, x, strideX, out, strideOut ); + return out; +} + + +// EXPORTS // + +module.exports = dreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/index.js new file mode 100644 index 000000000000..e6349ca2eb5e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/index.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replicate each element in a double-precision floating-point strided array a specified number of times. +* +* @module @stdlib/blas/ext/base/dreplicate +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dreplicate = require( '@stdlib/blas/ext/base/dreplicate' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float64Array( 6 ); +* +* dreplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dreplicate = require( '@stdlib/blas/ext/base/dreplicate' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float64Array( 6 ); +* +* dreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var dreplicate; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + dreplicate = main; +} else { + dreplicate = tmp; +} + + +// EXPORTS // + +module.exports = dreplicate; + +// exports: { "ndarray": "dreplicate.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/main.js new file mode 100644 index 000000000000..fed60ff90a50 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dreplicate = require( './dreplicate.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( dreplicate, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/native.js new file mode 100644 index 000000000000..5fa9d86367e2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dreplicate = require( './dreplicate.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( dreplicate, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/ndarray.js new file mode 100644 index 000000000000..565de29c5095 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/ndarray.js @@ -0,0 +1,71 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Replicates each element in a double-precision floating-point strided array a specified number of times using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Float64Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @param {NonNegativeInteger} offsetOut - starting index for `out` +* @returns {Float64Array} output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float64Array( 6 ); +* +* dreplicate( 3, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +function dreplicate( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) { + var ix; + var io; + var v; + var i; + var j; + + if ( N <= 0 || k <= 0 ) { + return out; + } + ix = offsetX; + io = offsetOut; + for ( i = 0; i < N; i++ ) { + v = x[ ix ]; + for ( j = 0; j < k; j++ ) { + out[ io ] = v; + io += strideOut; + } + ix += strideX; + } + return out; +} + + +// EXPORTS // + +module.exports = dreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/ndarray.native.js new file mode 100644 index 000000000000..eb79ed92f5a4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/lib/ndarray.native.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replicates each element in a double-precision floating-point strided array a specified number of times using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Float64Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Float64Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @param {NonNegativeInteger} offsetOut - starting index for `out` +* @returns {Float64Array} output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float64Array( 6 ); +* +* dreplicate( 3, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +function dreplicate( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) { + addon.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ); + return out; +} + + +// EXPORTS // + +module.exports = dreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/manifest.json new file mode 100644 index 000000000000..fb41f9fb7ad5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/manifest.json @@ -0,0 +1,78 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float64array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/package.json b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/package.json new file mode 100644 index 000000000000..d6f0d198aadf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/package.json @@ -0,0 +1,76 @@ +{ + "name": "@stdlib/blas/ext/base/dreplicate", + "version": "0.0.0", + "description": "Replicate each element in a double-precision floating-point strided array a specified number of times.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "replicate", + "repeat", + "copy", + "strided", + "array", + "ndarray", + "float64", + "double", + "float64array", + "dreplicate" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/src/addon.c new file mode 100644 index 000000000000..08a06acf6a2d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/src/addon.c @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dreplicate.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, k, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideOut, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, Out, N * k, strideOut, argv, 4 ); + API_SUFFIX(stdlib_strided_dreplicate)( N, k, X, strideX, Out, strideOut ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 8 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, k, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, strideOut, argv, 6 ); + STDLIB_NAPI_ARGV_INT64( env, offsetOut, argv, 7 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, Out, N * k, strideOut, argv, 5 ); + API_SUFFIX(stdlib_strided_dreplicate_ndarray)( N, k, X, strideX, offsetX, Out, strideOut, offsetOut ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/src/main.c new file mode 100644 index 000000000000..1b2762b2c190 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/src/main.c @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dreplicate.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/strided/base/stride2offset.h" + +/** +* Replicates each element in a double-precision floating-point strided array a specified number of times. +* +* @param N number of indexed elements +* @param k number of times to replicate each element +* @param X input array +* @param strideX stride length for X +* @param Out output array +* @param strideOut stride length for Out +*/ +void API_SUFFIX(stdlib_strided_dreplicate)( const CBLAS_INT N, const CBLAS_INT k, const double *X, const CBLAS_INT strideX, double *Out, const CBLAS_INT strideOut ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oo = stdlib_strided_stride2offset( N * k, strideOut ); + API_SUFFIX(stdlib_strided_dreplicate_ndarray)( N, k, X, strideX, ox, Out, strideOut, oo ); +} + +/** +* Replicates each element in a double-precision floating-point strided array a specified number of times using alternative indexing semantics. +* +* @param N number of indexed elements +* @param k number of times to replicate each element +* @param X input array +* @param strideX stride length for X +* @param offsetX starting index for X +* @param Out output array +* @param strideOut stride length for Out +* @param offsetOut starting index for Out +*/ +void API_SUFFIX(stdlib_strided_dreplicate_ndarray)( const CBLAS_INT N, const CBLAS_INT k, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, double *Out, const CBLAS_INT strideOut, const CBLAS_INT offsetOut ) { + CBLAS_INT ix; + CBLAS_INT io; + CBLAS_INT i; + CBLAS_INT j; + double v; + + if ( N <= 0 || k <= 0 ) { + return; + } + ix = offsetX; + io = offsetOut; + for ( i = 0; i < N; i++ ) { + v = X[ ix ]; + for ( j = 0; j < k; j++ ) { + Out[ io ] = v; + io += strideOut; + } + ix += strideX; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.dreplicate.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.dreplicate.js new file mode 100644 index 000000000000..53b69dd74973 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.dreplicate.js @@ -0,0 +1,302 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dreplicate = require( './../lib/dreplicate.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( dreplicate.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 6 ); + + dreplicate( x.length, 2, x, 1, out, 1 ); + expected = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + out = new Float64Array( 12 ); + + dreplicate( x.length, 3, x, 1, out, 1 ); + expected = new Float64Array( [ 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 3 ); + + dreplicate( x.length, 1, x, 1, out, 1 ); + expected = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 5.0 ] ); + out = new Float64Array( 3 ); + + dreplicate( 1, 3, x, 1, out, 1 ); + expected = new Float64Array( [ 5.0, 5.0, 5.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var v; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 6 ); + + v = dreplicate( x.length, 2, x, 1, out, 1 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + dreplicate( -1, 2, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + dreplicate( 0, 2, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + dreplicate( x.length, -1, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + dreplicate( x.length, 0, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + dreplicate( 3, 2, x, 2, out, 1 ); + + expected = new Float64Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, + 0.0, // 0 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 2 + 0.0, + 0.0, // 2 + 0.0 + ]); + + dreplicate( 3, 2, x, 1, out, 2 ); + + expected = new Float64Array( [ 1.0, 0.0, 1.0, 0.0, 2.0, 0.0, 2.0, 0.0, 3.0, 0.0, 3.0, 0.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + out = new Float64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + dreplicate( 3, 2, x, -2, out, -1 ); + + expected = new Float64Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + dreplicate( 3, 2, x, 2, out, -1 ); + + expected = new Float64Array( [ 5.0, 5.0, 3.0, 3.0, 1.0, 1.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var out0; + var out1; + var x0; + var x1; + + // Initial arrays... + x0 = new Float64Array([ + 1.0, + 2.0, // 0 + 3.0, + 4.0, // 1 + 5.0, + 6.0 // 2 + ]); + out0 = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + // Create offset views... + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + out1 = new Float64Array( out0.buffer, out0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + dreplicate( 3, 2, x1, 2, out1, 1 ); + expected = new Float64Array( [ 0.0, 0.0, 0.0, 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ] ); + + t.deepEqual( out0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.dreplicate.native.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.dreplicate.native.js new file mode 100644 index 000000000000..1749d6328b4d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.dreplicate.native.js @@ -0,0 +1,311 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var Float64Array = require( '@stdlib/array/float64' ); + + +// VARIABLES // + +var dreplicate = tryRequire( resolve( __dirname, './../lib/dreplicate.native.js' ) ); +var opts = { + 'skip': ( dreplicate instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( dreplicate.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 6 ); + + dreplicate( x.length, 2, x, 1, out, 1 ); + expected = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + out = new Float64Array( 12 ); + + dreplicate( x.length, 3, x, 1, out, 1 ); + expected = new Float64Array( [ 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 3 ); + + dreplicate( x.length, 1, x, 1, out, 1 ); + expected = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 5.0 ] ); + out = new Float64Array( 3 ); + + dreplicate( 1, 3, x, 1, out, 1 ); + expected = new Float64Array( [ 5.0, 5.0, 5.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var v; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 6 ); + + v = dreplicate( x.length, 2, x, 1, out, 1 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + dreplicate( -1, 2, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + dreplicate( 0, 2, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + dreplicate( x.length, -1, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + dreplicate( x.length, 0, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + dreplicate( 3, 2, x, 2, out, 1 ); + + expected = new Float64Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, + 0.0, // 0 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 2 + 0.0, + 0.0, // 2 + 0.0 + ]); + + dreplicate( 3, 2, x, 1, out, 2 ); + + expected = new Float64Array( [ 1.0, 0.0, 1.0, 0.0, 2.0, 0.0, 2.0, 0.0, 3.0, 0.0, 3.0, 0.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + out = new Float64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + dreplicate( 3, 2, x, -2, out, -1 ); + + expected = new Float64Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + dreplicate( 3, 2, x, 2, out, -1 ); + + expected = new Float64Array( [ 5.0, 5.0, 3.0, 3.0, 1.0, 1.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var out0; + var out1; + var x0; + var x1; + + // Initial arrays... + x0 = new Float64Array([ + 1.0, + 2.0, // 0 + 3.0, + 4.0, // 1 + 5.0, + 6.0 // 2 + ]); + out0 = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + // Create offset views... + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + out1 = new Float64Array( out0.buffer, out0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + dreplicate( 3, 2, x1, 2, out1, 1 ); + expected = new Float64Array( [ 0.0, 0.0, 0.0, 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ] ); + + t.deepEqual( out0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.js new file mode 100644 index 000000000000..72416dba9fa9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dreplicate = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dreplicate.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dreplicate = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dreplicate, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dreplicate; + var main; + + main = require( './../lib/dreplicate.js' ); + + dreplicate = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dreplicate, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.ndarray.js new file mode 100644 index 000000000000..1ddb33146b16 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.ndarray.js @@ -0,0 +1,353 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dreplicate = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', function test( t ) { + t.strictEqual( dreplicate.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 6 ); + + dreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + expected = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + out = new Float64Array( 12 ); + + dreplicate( x.length, 3, x, 1, 0, out, 1, 0 ); + expected = new Float64Array( [ 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 3 ); + + dreplicate( x.length, 1, x, 1, 0, out, 1, 0 ); + expected = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 5.0 ] ); + out = new Float64Array( 3 ); + + dreplicate( 1, 3, x, 1, 0, out, 1, 0 ); + expected = new Float64Array( [ 5.0, 5.0, 5.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var v; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 6 ); + + v = dreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + dreplicate( -1, 2, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + dreplicate( 0, 2, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + dreplicate( x.length, -1, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + dreplicate( x.length, 0, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + dreplicate( 3, 2, x, 2, 0, out, 1, 0 ); + + expected = new Float64Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, + 0.0, // 0 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 2 + 0.0, + 0.0, // 2 + 0.0 + ]); + + dreplicate( 3, 2, x, 1, 0, out, 2, 0 ); + + expected = new Float64Array( [ 1.0, 0.0, 1.0, 0.0, 2.0, 0.0, 2.0, 0.0, 3.0, 0.0, 3.0, 0.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + out = new Float64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + dreplicate( 3, 2, x, -2, 4, out, -1, 5 ); + + expected = new Float64Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0, // 2 + 0.0, // 3 + 0.0 // 3 + ]); + + dreplicate( 4, 2, x, 2, 1, out, 1, 0 ); + + expected = new Float64Array( [ 1.0, 1.0, -2.0, -2.0, 2.0, 2.0, 4.0, 4.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output offset', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float64Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + dreplicate( 3, 2, x, 1, 0, out, 1, 2 ); + + expected = new Float64Array( [ 0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a zero `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, + 2.0, // 0, 1, 2 + 3.0 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + dreplicate( 3, 2, x, 0, 1, out, 1, 0 ); + + expected = new Float64Array( [ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + dreplicate( 3, 2, x, 2, 0, out, -1, 5 ); + + expected = new Float64Array( [ 5.0, 5.0, 3.0, 3.0, 1.0, 1.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.ndarray.native.js new file mode 100644 index 000000000000..c7821f94fb99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dreplicate/test/test.ndarray.native.js @@ -0,0 +1,362 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var Float64Array = require( '@stdlib/array/float64' ); + + +// VARIABLES // + +var dreplicate = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dreplicate instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', opts, function test( t ) { + t.strictEqual( dreplicate.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 6 ); + + dreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + expected = new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + out = new Float64Array( 12 ); + + dreplicate( x.length, 3, x, 1, 0, out, 1, 0 ); + expected = new Float64Array( [ 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 3 ); + + dreplicate( x.length, 1, x, 1, 0, out, 1, 0 ); + expected = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 5.0 ] ); + out = new Float64Array( 3 ); + + dreplicate( 1, 3, x, 1, 0, out, 1, 0 ); + expected = new Float64Array( [ 5.0, 5.0, 5.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var v; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( 6 ); + + v = dreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + dreplicate( -1, 2, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + dreplicate( 0, 2, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float64Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + dreplicate( x.length, -1, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + dreplicate( x.length, 0, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + dreplicate( 3, 2, x, 2, 0, out, 1, 0 ); + + expected = new Float64Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, + 0.0, // 0 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 2 + 0.0, + 0.0, // 2 + 0.0 + ]); + + dreplicate( 3, 2, x, 1, 0, out, 2, 0 ); + + expected = new Float64Array( [ 1.0, 0.0, 1.0, 0.0, 2.0, 0.0, 2.0, 0.0, 3.0, 0.0, 3.0, 0.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + out = new Float64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + dreplicate( 3, 2, x, -2, 4, out, -1, 5 ); + + expected = new Float64Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0, // 2 + 0.0, // 3 + 0.0 // 3 + ]); + + dreplicate( 4, 2, x, 2, 1, out, 1, 0 ); + + expected = new Float64Array( [ 1.0, 1.0, -2.0, -2.0, 2.0, 2.0, 4.0, 4.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output offset', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float64Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + dreplicate( 3, 2, x, 1, 0, out, 1, 2 ); + + expected = new Float64Array( [ 0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a zero `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, + 2.0, // 0, 1, 2 + 3.0 + ]); + out = new Float64Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + dreplicate( 3, 2, x, 0, 1, out, 1, 0 ); + + expected = new Float64Array( [ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float64Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + dreplicate( 3, 2, x, 2, 0, out, -1, 5 ); + + expected = new Float64Array( [ 5.0, 5.0, 3.0, 3.0, 1.0, 1.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dsome/README.md b/lib/node_modules/@stdlib/blas/ext/base/dsome/README.md index cd7f63b8cd87..158478bba25a 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/dsome/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/dsome/README.md @@ -58,8 +58,6 @@ The function has the following parameters: The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to test every other element: - - ```javascript var Float64Array = require( '@stdlib/array/float64' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/README.md b/lib/node_modules/@stdlib/blas/ext/base/dwax/README.md new file mode 100644 index 000000000000..21a21790184d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/README.md @@ -0,0 +1,332 @@ + + +# dwax + +> Multiply each element in a double-precision floating-point strided array `x` by a scalar constant and assign the results to elements in a double-precision floating-point strided array `w`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{w} = \alpha \cdot \mathbf{x} +``` + + + +This API is complementary to the package [`@stdlib/blas/base/dscal`][@stdlib/blas/base/dscal], which performs an in-place update. + +
+ + + +
+ +## Usage + +```javascript +var dwax = require( '@stdlib/blas/ext/base/dwax' ); +``` + +#### dwax( N, alpha, x, strideX, w, strideW ) + +Multiplies each element in a double-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision floating-point strided array `w`. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +dwax( x.length, 5.0, x, 1, w, 1 ); +// w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **alpha**: scalar constant. +- **x**: input [`Float64Array`][@stdlib/array/float64]. +- **strideX**: stride length for `x`. +- **w**: output [`Float64Array`][@stdlib/array/float64]. +- **strideW**: stride length for `w`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to multiply every other element in `x` by `alpha` and assign the results to every other element in `w`: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +dwax( 3, 5.0, x, 2, w, 2 ); +// w => [ 5.0, 0.0, 15.0, 0.0, 25.0, 0.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var w0 = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var w1 = new Float64Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +dwax( 3, 5.0, x1, 1, w1, 1 ); +// w0 => [ 0.0, 0.0, 10.0, 15.0, 20.0, 0.0 ] +``` + +#### dwax.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) + +Multiplies each element in a double-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision floating-point strided array `w` using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); +// w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetW**: starting index for `w`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to multiply the last three elements of `x` by `alpha` and assign the results to the last three elements of `w`: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +dwax.ndarray( 3, 5.0, x, 1, x.length-3, w, 1, w.length-3 ); +// w => [ 0.0, 0.0, 15.0, 20.0, 25.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `w` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dwax = require( '@stdlib/blas/ext/base/dwax' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +var w = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( w ); + +dwax( x.length, 5.0, x, 1, w, 1 ); +console.log( w ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/dwax.h" +``` + +#### stdlib_strided_dwax( N, alpha, \*X, strideX, \*W, strideW ) + +Multiplies each element in a double-precision floating-point strided array `X` by a scalar constant and assigns the results to elements in a double-precision floating-point strided array `W`. + +```c +const double x[] = { 1.0, 2.0, 3.0, 4.0 }; +double w[] = { 0.0, 0.0, 0.0, 0.0 }; + +stdlib_strided_dwax( 4, 5.0, x, 1, w, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] double` scalar constant. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **W**: `[out] double*` output array. +- **strideW**: `[in] CBLAS_INT` stride length for `W`. + +```c +void stdlib_strided_dwax( const CBLAS_INT N, const double alpha, const double *X, const CBLAS_INT strideX, double *W, const CBLAS_INT strideW ); +``` + + + +#### stdlib_strided_dwax_ndarray( N, alpha, \*X, strideX, offsetX, \*W, strideW, offsetW ) + + + +Multiplies each element in a double-precision floating-point strided array `X` by a scalar constant and assigns the results to elements in a double-precision floating-point strided array `W` using alternative indexing semantics. + +```c +const double x[] = { 1.0, 2.0, 3.0, 4.0 }; +double w[] = { 0.0, 0.0, 0.0, 0.0 }; + +stdlib_strided_dwax_ndarray( 4, 5.0, x, 1, 0, w, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] double` scalar constant. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **W**: `[out] double*` output array. +- **strideW**: `[in] CBLAS_INT` stride length for `W`. +- **offsetW**: `[in] CBLAS_INT` starting index for `W`. + +```c +void stdlib_strided_dwax_ndarray( const CBLAS_INT N, const double alpha, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, double *W, const CBLAS_INT strideW, const CBLAS_INT offsetW ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/dwax.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, -2.0, 3.0, -4.0, 5.0, -6.0, 7.0, -8.0 }; + double w[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideW = 1; + + // Multiply each element in `x` by a constant and assign to `w`: + stdlib_strided_dwax( N, 5.0, x, strideX, w, strideW ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "w[ %i ] = %lf\n", i, w[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.js new file mode 100644 index 000000000000..6290f31a5761 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dwax = require( './../lib/dwax.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var w = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dwax( x.length, 5.0, x, 1, w, 1 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.native.js new file mode 100644 index 000000000000..41d0c6aaa63d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.native.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dwax = tryRequire( resolve( __dirname, './../lib/dwax.native.js' ) ); +var opts = { + 'skip': ( dwax instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var w = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dwax( x.length, 5.0, x, 1, w, 1 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..0169c3889090 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.ndarray.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dwax = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var w = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dwax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..388c4f33c64b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dwax = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dwax instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var w = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dwax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/dwax/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..43dce26b067c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/benchmark/c/benchmark.length.c @@ -0,0 +1,207 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dwax.h" +#include +#include +#include +#include +#include + +#define NAME "dwax" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, 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 double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double *w; + double t; + int i; + + x = (double *)malloc( len * sizeof(double) ); + w = (double *)malloc( len * sizeof(double) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = random_uniform( -100.0, 100.0 ); + w[ i ] = random_uniform( -100.0, 100.0 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_dwax( len, 5.0, x, 1, w, 1 ); + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( w ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double *w; + double t; + int i; + + x = (double *)malloc( len * sizeof(double) ); + w = (double *)malloc( len * sizeof(double) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = random_uniform( -100.0, 100.0 ); + w[ i ] = random_uniform( -100.0, 100.0 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_dwax_ndarray( len, 5.0, x, 1, 0, w, 1, 0 ); + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( w ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/dwax/binding.gyp new file mode 100644 index 000000000000..60dce9d0b31a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/binding.gyp @@ -0,0 +1,265 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Fortran compiler (to override -Dfortran_compiler=): + 'fortran_compiler%': 'gfortran', + + # Fortran compiler flags: + 'fflags': [ + # Specify the Fortran standard to which a program is expected to conform: + '-std=f95', + + # Indicate that the layout is free-form source code: + '-ffree-form', + + # Aggressive optimization: + '-O3', + + # Enable commonly used warning options: + '-Wall', + + # Warn if source code contains problematic language features: + '-Wextra', + + # Warn if a procedure is called without an explicit interface: + '-Wimplicit-interface', + + # Do not transform names of entities specified in Fortran source files by appending underscores (i.e., don't mangle names, thus allowing easier usage in C wrappers): + '-fno-underscoring', + + # Warn if source code contains Fortran 95 extensions and C-language constructs: + '-pedantic', + + # Compile but do not link (output is an object file): + '-c', + ], + + # 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 + + # Define custom build actions for particular inputs: + 'rules': [ + { + # Define a rule for processing Fortran files: + 'extension': 'f', + + # Define the pathnames to be used as inputs when performing processing: + 'inputs': [ + # Full path of the current input: + '<(RULE_INPUT_PATH)' + ], + + # Define the outputs produced during processing: + 'outputs': [ + # Store an output object file in a directory for placing intermediate results (only accessible within a single target): + '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).<(obj)' + ], + + # Define the rule for compiling Fortran based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + + # Rule to compile Fortran on Windows: + { + 'rule_name': 'compile_fortran_windows', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Windows...', + + 'process_outputs_as_sources': 0, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + }, + + # Rule to compile Fortran on non-Windows: + { + 'rule_name': 'compile_fortran_linux', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Linux...', + + 'process_outputs_as_sources': 1, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '-fPIC', # generate platform-independent code + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + } + ], # end condition (OS=="win") + ], # end conditions + }, # end rule (extension=="f") + ], # end rules + }, # 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/blas/ext/base/dwax/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dwax/docs/repl.txt new file mode 100644 index 000000000000..baf4ca92c1cc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/docs/repl.txt @@ -0,0 +1,131 @@ + +{{alias}}( N, alpha, x, strideX, w, strideW ) + Multiplies each element in a double-precision floating-point strided array + `x` by a scalar constant and assigns the results to elements in a double- + precision floating-point strided array `w`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `w` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: number + Scalar constant. + + x: Float64Array + Input array. + + strideX: integer + Stride length for `x`. + + w: Float64Array + Output array. + + strideW: integer + Stride length for `w`. + + Returns + ------- + w: Float64Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x = new {{alias:@stdlib/array/float64}}( bufX ); + > var w = new {{alias:@stdlib/array/float64}}( bufW ); + > {{alias}}( x.length, 5.0, x, 1, w, 1 ) + [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float64}}( bufX ); + > w = new {{alias:@stdlib/array/float64}}( bufW ); + > {{alias}}( 4, 5.0, x, 2, w, 2 ) + [ -10.0, 0.0, 15.0, 0.0, 20.0, 0.0, -5.0, 0.0 ] + + // Using view offsets: + > var bufX0 = [ 1.0, -2.0, 3.0, -4.0, 5.0, -6.0 ]; + > var bufW0 = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x0 = new {{alias:@stdlib/array/float64}}( bufX0 ); + > var w0 = new {{alias:@stdlib/array/float64}}( bufW0 ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetW = w0.BYTES_PER_ELEMENT * 1; + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, offsetX ); + > var w1 = new {{alias:@stdlib/array/float64}}( w0.buffer, offsetW ); + > {{alias}}( 3, 5.0, x1, 2, w1, 2 ) + [ -10.0, 0.0, -20.0, 0.0, -30.0 ] + > w0 + [ 0.0, -10.0, 0.0, -20.0, 0.0, -30.0 ] + + +{{alias}}.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) + Multiplies each element in a double-precision floating-point strided array + `x` by a scalar constant and assigns the results to elements in a double- + precision floating-point strided array `w` using alternative indexing + semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: number + Scalar constant. + + x: Float64Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + w: Float64Array + Output array. + + strideW: integer + Stride length for `w`. + + offsetW: integer + Starting index for `w`. + + Returns + ------- + w: Float64Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x = new {{alias:@stdlib/array/float64}}( bufX ); + > var w = new {{alias:@stdlib/array/float64}}( bufW ); + > {{alias}}.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ) + [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + + // Using index offsets: + > bufX = [ 1.0, -2.0, 3.0, -4.0, 5.0, -6.0 ]; + > bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > x = new {{alias:@stdlib/array/float64}}( bufX ); + > w = new {{alias:@stdlib/array/float64}}( bufW ); + > {{alias}}.ndarray( 3, 5.0, x, 1, x.length-3, w, 1, w.length-3 ) + [ 0.0, 0.0, 0.0, -20.0, 25.0, -30.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/dwax/docs/types/index.d.ts new file mode 100644 index 000000000000..9c8db318019a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/docs/types/index.d.ts @@ -0,0 +1,106 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `dwax`. +*/ +interface Routine { + /** + * Multiplies each element in a double-precision floating-point strided array `x` by a scalar constant and assigns the results to a double-precision floating-point strided array `w`. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param w - output array + * @param strideW - `w` stride length + * @returns `w` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * dwax( x.length, 5.0, x, 1, w, 1 ); + * // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + */ + ( N: number, alpha: number, x: Float64Array, strideX: number, w: Float64Array, strideW: number ): Float64Array; + + /** + * Multiplies each element in a double-precision floating-point strided array `x` by a scalar constant and assigns the results to a double-precision floating-point strided array `w` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting index for `x` + * @param w - output array + * @param strideW - `w` stride length + * @param offsetW - starting index for `w` + * @returns `w` + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); + * // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + */ + ndarray( N: number, alpha: number, x: Float64Array, strideX: number, offsetX: number, w: Float64Array, strideW: number, offsetW: number ): Float64Array; +} + +/** +* Multiplies each element in a double-precision floating-point strided array `x` by a scalar constant and assigns the results to a double-precision floating-point strided array `w`. +* +* @param N - number of indexed elements +* @param alpha - scalar constant +* @param x - input array +* @param strideX - `x` stride length +* @param w - output array +* @param strideW - `w` stride length +* @returns `w` +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); +* var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* dwax( x.length, 5.0, x, 1, w, 1 ); +* // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); +* var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); +* // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] +*/ +declare var dwax: Routine; + + +// EXPORTS // + +export = dwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/dwax/docs/types/test.ts new file mode 100644 index 000000000000..c5664936b7e1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/docs/types/test.ts @@ -0,0 +1,278 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dwax = require( './index' ); + + +// TESTS // + +// The function returns a Float64Array... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax( x.length, 5.0, x, 1, w, 1 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax( '10', 5.0, x, 1, w, 1 ); // $ExpectError + dwax( true, 5.0, x, 1, w, 1 ); // $ExpectError + dwax( false, 5.0, x, 1, w, 1 ); // $ExpectError + dwax( null, 5.0, x, 1, w, 1 ); // $ExpectError + dwax( undefined, 5.0, x, 1, w, 1 ); // $ExpectError + dwax( [], 5.0, x, 1, w, 1 ); // $ExpectError + dwax( {}, 5.0, x, 1, w, 1 ); // $ExpectError + dwax( ( x: number ): number => x, 5.0, x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax( x.length, '10', x, 1, w, 1 ); // $ExpectError + dwax( x.length, true, x, 1, w, 1 ); // $ExpectError + dwax( x.length, false, x, 1, w, 1 ); // $ExpectError + dwax( x.length, null, x, 1, w, 1 ); // $ExpectError + dwax( x.length, undefined, x, 1, w, 1 ); // $ExpectError + dwax( x.length, [], x, 1, w, 1 ); // $ExpectError + dwax( x.length, {}, x, 1, w, 1 ); // $ExpectError + dwax( x.length, ( x: number ): number => x, x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Float64Array... +{ + const w = new Float64Array( 10 ); + + dwax( 10, 5.0, 10, 1, w, 1 ); // $ExpectError + dwax( 10, 5.0, '10', 1, w, 1 ); // $ExpectError + dwax( 10, 5.0, true, 1, w, 1 ); // $ExpectError + dwax( 10, 5.0, false, 1, w, 1 ); // $ExpectError + dwax( 10, 5.0, null, 1, w, 1 ); // $ExpectError + dwax( 10, 5.0, undefined, 1, w, 1 ); // $ExpectError + dwax( 10, 5.0, [], 1, w, 1 ); // $ExpectError + dwax( 10, 5.0, {}, 1, w, 1 ); // $ExpectError + dwax( 10, 5.0, ( x: number ): number => x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax( x.length, 5.0, x, '10', w, 1 ); // $ExpectError + dwax( x.length, 5.0, x, true, w, 1 ); // $ExpectError + dwax( x.length, 5.0, x, false, w, 1 ); // $ExpectError + dwax( x.length, 5.0, x, null, w, 1 ); // $ExpectError + dwax( x.length, 5.0, x, undefined, w, 1 ); // $ExpectError + dwax( x.length, 5.0, x, [], w, 1 ); // $ExpectError + dwax( x.length, 5.0, x, {}, w, 1 ); // $ExpectError + dwax( x.length, 5.0, x, ( x: number ): number => x, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dwax( 10, 5.0, x, 1, 10, 1 ); // $ExpectError + dwax( 10, 5.0, x, 1, '10', 1 ); // $ExpectError + dwax( 10, 5.0, x, 1, true, 1 ); // $ExpectError + dwax( 10, 5.0, x, 1, false, 1 ); // $ExpectError + dwax( 10, 5.0, x, 1, null, 1 ); // $ExpectError + dwax( 10, 5.0, x, 1, undefined, 1 ); // $ExpectError + dwax( 10, 5.0, x, 1, [], 1 ); // $ExpectError + dwax( 10, 5.0, x, 1, {}, 1 ); // $ExpectError + dwax( 10, 5.0, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax( x.length, 5.0, x, 1, w, '10' ); // $ExpectError + dwax( x.length, 5.0, x, 1, w, true ); // $ExpectError + dwax( x.length, 5.0, x, 1, w, false ); // $ExpectError + dwax( x.length, 5.0, x, 1, w, null ); // $ExpectError + dwax( x.length, 5.0, x, 1, w, undefined ); // $ExpectError + dwax( x.length, 5.0, x, 1, w, [] ); // $ExpectError + dwax( x.length, 5.0, x, 1, w, {} ); // $ExpectError + dwax( x.length, 5.0, x, 1, w, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax(); // $ExpectError + dwax( x.length ); // $ExpectError + dwax( x.length, 5.0 ); // $ExpectError + dwax( x.length, 5.0, x ); // $ExpectError + dwax( x.length, 5.0, x, 1 ); // $ExpectError + dwax( x.length, 5.0, x, 1, w ); // $ExpectError + dwax( x.length, 5.0, x, 1, w, 1, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float64Array... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax.ndarray( '10', 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( true, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( false, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( null, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( undefined, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( [], 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( {}, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( ( x: number ): number => x, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax.ndarray( x.length, '10', x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, true, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, false, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, null, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, undefined, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, [], x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, {}, x, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, ( x: number ): number => x, x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Float64Array... +{ + const w = new Float64Array( 10 ); + + dwax.ndarray( 10, 5.0, 10, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, '10', 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, true, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, false, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, null, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, undefined, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, [], 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, {}, 1, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, ( x: number ): number => x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax.ndarray( x.length, 5.0, x, '10', 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, true, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, false, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, null, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, undefined, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, [], 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, {}, 0, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, ( x: number ): number => x, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax.ndarray( x.length, 5.0, x, 1, '10', w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, true, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, false, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, null, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, undefined, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, [], w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, {}, w, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, ( x: number ): number => x, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dwax.ndarray( 10, 5.0, x, 1, 0, 10, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, x, 1, 0, '10', 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, x, 1, 0, true, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, x, 1, 0, false, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, x, 1, 0, null, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, x, 1, 0, undefined, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, x, 1, 0, [], 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, x, 1, 0, {}, 1, 0 ); // $ExpectError + dwax.ndarray( 10, 5.0, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax.ndarray( x.length, 5.0, x, 1, 0, w, '10', 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, true, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, false, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, null, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, undefined, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, [], 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, {}, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, '10' ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, true ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, false ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, null ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, undefined ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, [] ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, {} ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + const w = new Float64Array( 10 ); + + dwax.ndarray(); // $ExpectError + dwax.ndarray( x.length ); // $ExpectError + dwax.ndarray( x.length, 5.0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1 ); // $ExpectError + dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dwax/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/dwax/examples/c/example.c new file mode 100644 index 000000000000..6374ea3d1dd0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/examples/c/example.c @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dwax.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, -2.0, 3.0, -4.0, 5.0, -6.0, 7.0, -8.0 }; + double w[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideW = 1; + + // Multiply each element in `x` by a constant and assign to `w`: + stdlib_strided_dwax( N, 5.0, x, strideX, w, strideW ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "w[ %i ] = %lf\n", i, w[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/examples/index.js new file mode 100644 index 000000000000..3be08e5c58fd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dwax = require( './../lib' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +var w = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( w ); + +dwax( x.length, 5.0, x, 1, w, 1 ); +console.log( w ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dwax/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +*/ +function dwax( N, alpha, x, strideX, w, strideW ) { + return ndarray( N, alpha, x, strideX, stride2offset( N, strideX ), w, strideW, stride2offset( N, strideW ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/dwax.native.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/dwax.native.js new file mode 100644 index 000000000000..c5cbd96e77d9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/dwax.native.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies each element in a double-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision floating-point strided array `w`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Float64Array} w - output array +* @param {integer} strideW - `w` stride length +* @returns {Float64Array} output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* dwax( x.length, 5.0, x, 1, w, 1 ); +* // w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +*/ +function dwax( N, alpha, x, strideX, w, strideW ) { + addon( N, alpha, x, strideX, w, strideW ); + return w; +} + + +// EXPORTS // + +module.exports = dwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/index.js new file mode 100644 index 000000000000..a5337b550a2d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/index.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Multiply each element in a double-precision floating-point strided array `x` by a scalar constant and assign the results to elements in a double-precision floating-point strided array `w`. +* +* @module @stdlib/blas/ext/base/dwax +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dwax = require( '@stdlib/blas/ext/base/dwax' ); +* +* var x = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); +* var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* dwax( x.length, 5.0, x, 1, w, 1 ); +* // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dwax = require( '@stdlib/blas/ext/base/dwax' ); +* +* var x = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); +* var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* dwax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); +* // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var dwax; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + dwax = main; +} else { + dwax = tmp; +} + + +// EXPORTS // + +module.exports = dwax; + +// exports: { "ndarray": "dwax.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/main.js new file mode 100644 index 000000000000..7d2d5c6bb069 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dwax = require( './dwax.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( dwax, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/native.js new file mode 100644 index 000000000000..08628b9c888c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dwax = require( './dwax.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( dwax, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/ndarray.js new file mode 100644 index 000000000000..77804d3802d3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/ndarray.js @@ -0,0 +1,108 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var dcopy = require( '@stdlib/blas/base/dcopy' ).ndarray; + + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Multiplies each element in a double-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision floating-point strided array `w` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Float64Array} w - output array +* @param {integer} strideW - `w` stride length +* @param {NonNegativeInteger} offsetW - starting `w` index +* @returns {Float64Array} output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* dwax( x.length, 5.0, x, 1, 0, w, 1, 0 ); +* // w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +*/ +function dwax( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) { + var ix; + var iw; + var m; + var i; + + if ( N <= 0 ) { + return w; + } + // Fast path: when alpha = 1.0, delegate to dcopy (w = x) + if ( alpha === 1.0 ) { + return dcopy( N, x, strideX, offsetX, w, strideW, offsetW ); + } + ix = offsetX; + iw = offsetW; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideW === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + w[ iw ] = alpha * x[ ix ]; + ix += strideX; + iw += strideW; + } + } + if ( N < M ) { + return w; + } + for ( i = m; i < N; i += M ) { + w[ iw ] = alpha * x[ ix ]; + w[ iw+1 ] = alpha * x[ ix+1 ]; + w[ iw+2 ] = alpha * x[ ix+2 ]; + w[ iw+3 ] = alpha * x[ ix+3 ]; + w[ iw+4 ] = alpha * x[ ix+4 ]; + ix += M; + iw += M; + } + return w; + } + for ( i = 0; i < N; i++ ) { + w[ iw ] = alpha * x[ ix ]; + ix += strideX; + iw += strideW; + } + return w; +} + + +// EXPORTS // + +module.exports = dwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/ndarray.native.js new file mode 100644 index 000000000000..39d0781c0b8d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/lib/ndarray.native.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies each element in a double-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision floating-point strided array `w` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Float64Array} w - output array +* @param {integer} strideW - `w` stride length +* @param {NonNegativeInteger} offsetW - starting `w` index +* @returns {Float64Array} output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var w = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* dwax( x.length, 5.0, x, 1, 0, w, 1, 0 ); +* // w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +*/ +function dwax( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) { + addon.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ); + return w; +} + + +// EXPORTS // + +module.exports = dwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/dwax/manifest.json new file mode 100644 index 000000000000..6b7da160198a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/manifest.json @@ -0,0 +1,82 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-double", + "@stdlib/napi/argv-strided-float64array", + "@stdlib/blas/base/dcopy", + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/dcopy", + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/dcopy", + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/package.json b/lib/node_modules/@stdlib/blas/ext/base/dwax/package.json new file mode 100644 index 000000000000..5e57cc40d5c5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/package.json @@ -0,0 +1,75 @@ +{ + "name": "@stdlib/blas/ext/base/dwax", + "version": "0.0.0", + "description": "Multiply each element in a double-precision floating-point strided array `x` by a scalar constant and assign the results to elements in a double-precision floating-point strided array `w`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "multiply", + "scale", + "strided", + "array", + "ndarray", + "float64", + "double", + "float64array", + "dwax" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dwax/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dwax/src/addon.c new file mode 100644 index 000000000000..64ce1370fb30 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/src/addon.c @@ -0,0 +1,68 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dwax.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_double.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideW, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, W, N, strideW, argv, 4 ); + API_SUFFIX(stdlib_strided_dwax)( N, alpha, X, strideX, W, strideW ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 8 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, strideW, argv, 6 ); + STDLIB_NAPI_ARGV_INT64( env, offsetW, argv, 7 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, W, N, strideW, argv, 5 ); + API_SUFFIX(stdlib_strided_dwax_ndarray)( N, alpha, X, strideX, offsetX, W, strideW, offsetW ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/dwax/src/main.c new file mode 100644 index 000000000000..fcc260eab6b3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/src/main.c @@ -0,0 +1,100 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dwax.h" +#include "stdlib/blas/base/dcopy.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Multiplies each element in a double-precision floating-point strided array `X` by a scalar constant and assigns the results to elements in a double-precision floating-point strided array `W`. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length for `X` +* @param W output array +* @param strideW stride length for `W` +*/ +void API_SUFFIX(stdlib_strided_dwax)( const CBLAS_INT N, const double alpha, const double *X, const CBLAS_INT strideX, double *W, const CBLAS_INT strideW ) { + const CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + const CBLAS_INT ow = stdlib_strided_stride2offset( N, strideW ); + API_SUFFIX(stdlib_strided_dwax_ndarray)( N, alpha, X, strideX, ox, W, strideW, ow ); +} + +/** +* Multiplies each element in a double-precision floating-point strided array `X` by a scalar constant and assigns the results to elements in a double-precision floating-point strided array `W` using alternative indexing semantics. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length for `X` +* @param offsetX starting index for `X` +* @param W output array +* @param strideW stride length for `W` +* @param offsetW starting index for `W` +*/ +void API_SUFFIX(stdlib_strided_dwax_ndarray)( const CBLAS_INT N, const double alpha, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, double *W, const CBLAS_INT strideW, const CBLAS_INT offsetW ) { + CBLAS_INT ix; + CBLAS_INT iw; + CBLAS_INT m; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + if ( alpha == 1.0 ) { + API_SUFFIX(c_dcopy_ndarray)( N, X, strideX, offsetX, W, strideW, offsetW ); + return; + } + ix = offsetX; + iw = offsetW; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX == 1 && strideW == 1 ) { + m = N % 5; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + W[ iw ] = alpha * X[ ix ]; + ix += strideX; + iw += strideW; + } + } + if ( N < 5 ) { + return; + } + for ( i = m; i < N; i += 5 ) { + W[ iw ] = alpha * X[ ix ]; + W[ iw+1 ] = alpha * X[ ix+1 ]; + W[ iw+2 ] = alpha * X[ ix+2 ]; + W[ iw+3 ] = alpha * X[ ix+3 ]; + W[ iw+4 ] = alpha * X[ ix+4 ]; + ix += 5; + iw += 5; + } + return; + } + for ( i = 0; i < N; i++ ) { + W[ iw ] = alpha * X[ ix ]; + ix += strideX; + iw += strideW; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.dwax.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.dwax.js new file mode 100644 index 000000000000..51390852b647 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.dwax.js @@ -0,0 +1,269 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dwax = require( './../lib/dwax.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( dwax.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Float64Array( x.length ); + expected = new Float64Array([ + 20.0, // 4.0 * 5.0 + 10.0, // 2.0 * 5.0 + -15.0, // -3.0 * 5.0 + 25.0, // 5.0 * 5.0 + -5.0, // -1.0 * 5.0 + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + dwax( x.length, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0 ] ); + w = new Float64Array( x.length ); + expected = new Float64Array( [ 5.0, 10.0 ] ); + + dwax( x.length, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + w = new Float64Array( x.length ); + out = dwax( x.length, 3.0, x, 1, w, 1 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 3.0, -4.0, 1.0 ] ); + w = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + + dwax( 0, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + dwax( -4, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Float64Array( x.length ); + expected = new Float64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + dwax( x.length, 1.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + w = new Float64Array( 3 ); + expected = new Float64Array([ + 5.0, // 1.0 * 5.0 + 15.0, // 3.0 * 5.0 + 25.0 // 5.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 2, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float64Array([ + 0.0, // 0 + 30.0, + 0.0, // 1 + 10.0, + 0.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 1.0 * 5.0 + 30.0, + 10.0, // 2.0 * 5.0 + 10.0, + 15.0 // 3.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 1, w, 2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 2.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 0 + ]); + w = new Float64Array( 5 ); + expected = new Float64Array([ + 10.0, // 2.0 * 5.0 + 0.0, + -25.0, // -5.0 * 5.0 + 0.0, + 30.0 // 6.0 * 5.0 + ]); + + dwax( 3, 5.0, x, -2, w, -2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var w0; + var x1; + var w1; + + x0 = new Float64Array([ + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 5.0 + ]); + w0 = new Float64Array([ + 10.0, + 10.0, + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + w1 = new Float64Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, // 2.0 * 5.0 + 15.0, // 3.0 * 5.0 + 20.0 // 4.0 * 5.0 + ]); + + dwax( 3, 5.0, x1, 1, w1, 1 ); + t.deepEqual( w0, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', function test( t ) { + var expected; + var alpha; + var x; + var w; + var i; + + alpha = 3.0; + x = new Float64Array( 100 ); + w = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + dwax( x.length, alpha, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + w = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + dwax( x.length, alpha, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.dwax.native.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.dwax.native.js new file mode 100644 index 000000000000..146b67cf6349 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.dwax.native.js @@ -0,0 +1,278 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dwax = tryRequire( resolve( __dirname, './../lib/dwax.native.js' ) ); +var opts = { + 'skip': ( dwax instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( dwax.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Float64Array( x.length ); + expected = new Float64Array([ + 20.0, // 4.0 * 5.0 + 10.0, // 2.0 * 5.0 + -15.0, // -3.0 * 5.0 + 25.0, // 5.0 * 5.0 + -5.0, // -1.0 * 5.0 + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + dwax( x.length, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0 ] ); + w = new Float64Array( x.length ); + expected = new Float64Array( [ 5.0, 10.0 ] ); + + dwax( x.length, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + w = new Float64Array( x.length ); + out = dwax( x.length, 3.0, x, 1, w, 1 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 3.0, -4.0, 1.0 ] ); + w = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + + dwax( 0, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + dwax( -4, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Float64Array( x.length ); + expected = new Float64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + dwax( x.length, 1.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + w = new Float64Array( 3 ); + expected = new Float64Array([ + 5.0, // 1.0 * 5.0 + 15.0, // 3.0 * 5.0 + 25.0 // 5.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 2, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float64Array([ + 0.0, // 0 + 30.0, + 0.0, // 1 + 10.0, + 0.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 1.0 * 5.0 + 30.0, + 10.0, // 2.0 * 5.0 + 10.0, + 15.0 // 3.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 1, w, 2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 2.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 0 + ]); + w = new Float64Array( 5 ); + expected = new Float64Array([ + 10.0, // 2.0 * 5.0 + 0.0, + -25.0, // -5.0 * 5.0 + 0.0, + 30.0 // 6.0 * 5.0 + ]); + + dwax( 3, 5.0, x, -2, w, -2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var w0; + var x1; + var w1; + + x0 = new Float64Array([ + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 5.0 + ]); + w0 = new Float64Array([ + 10.0, + 10.0, + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + w1 = new Float64Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); + + expected = new Float64Array([ + 10.0, + 10.0, + 10.0, // 2.0 * 5.0 + 15.0, // 3.0 * 5.0 + 20.0 // 4.0 * 5.0 + ]); + + dwax( 3, 5.0, x1, 1, w1, 1 ); + t.deepEqual( w0, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + var i; + + alpha = 3.0; + x = new Float64Array( 100 ); + w = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + dwax( x.length, alpha, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + w = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + dwax( x.length, alpha, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.js new file mode 100644 index 000000000000..a94697595361 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.js @@ -0,0 +1,77 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dwax = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dwax.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dwax = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dwax, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dwax = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dwax, require( './../lib/main.js' ), 'returns JS implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.ndarray.js new file mode 100644 index 000000000000..4d3adb7eea01 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.ndarray.js @@ -0,0 +1,285 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dwax = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', function test( t ) { + t.strictEqual( dwax.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Float64Array( x.length ); + expected = new Float64Array([ + 20.0, // 4.0 * 5.0 + 10.0, // 2.0 * 5.0 + -15.0, // -3.0 * 5.0 + 25.0, // 5.0 * 5.0 + -5.0, // -1.0 * 5.0 + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + dwax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0 ] ); + w = new Float64Array( x.length ); + expected = new Float64Array( [ 5.0, 10.0 ] ); + + dwax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + w = new Float64Array( x.length ); + out = dwax( x.length, 3.0, x, 1, 0, w, 1, 0 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 3.0, -4.0, 1.0 ] ); + w = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + + dwax( 0, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + dwax( -4, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Float64Array( x.length ); + expected = new Float64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + dwax( x.length, 1.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 2.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 2 + ]); + w = new Float64Array( 3 ); + expected = new Float64Array([ + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 2, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float64Array([ + 0.0, // 0 + 30.0, + 0.0, // 1 + 10.0, + 0.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 1.0 * 5.0 + 30.0, + 10.0, // 2.0 * 5.0 + 10.0, + 15.0 // 3.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 1, 0, w, 2, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 2.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 0 + ]); + w = new Float64Array([ + 0.0, // 2 + 0.0, // 1 + 0.0 // 0 + ]); + expected = new Float64Array([ + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + dwax( 3, 5.0, x, -2, x.length-1, w, -1, w.length-1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 5.0 + ]); + w = new Float64Array( 5 ); + expected = new Float64Array([ + 10.0, // 2.0 * 5.0 + 15.0, // 3.0 * 5.0 + 20.0, // 4.0 * 5.0 + 0.0, + 0.0 + ]); + + dwax( 3, 5.0, x, 1, 1, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` offset', function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float64Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]); + expected = new Float64Array([ + 0.0, + 0.0, + 5.0, // 1.0 * 5.0 + 10.0, // 2.0 * 5.0 + 15.0 // 3.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 1, 0, w, 1, 2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', function test( t ) { + var expected; + var alpha; + var x; + var w; + var i; + + alpha = 3.0; + x = new Float64Array( 100 ); + w = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + dwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + w = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + dwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.ndarray.native.js new file mode 100644 index 000000000000..32e744f95713 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dwax/test/test.ndarray.native.js @@ -0,0 +1,294 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dwax = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dwax instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', opts, function test( t ) { + t.strictEqual( dwax.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Float64Array( x.length ); + expected = new Float64Array([ + 20.0, // 4.0 * 5.0 + 10.0, // 2.0 * 5.0 + -15.0, // -3.0 * 5.0 + 25.0, // 5.0 * 5.0 + -5.0, // -1.0 * 5.0 + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + dwax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 2.0 ] ); + w = new Float64Array( x.length ); + expected = new Float64Array( [ 5.0, 10.0 ] ); + + dwax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + w = new Float64Array( x.length ); + out = dwax( x.length, 3.0, x, 1, 0, w, 1, 0 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 3.0, -4.0, 1.0 ] ); + w = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + + dwax( 0, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + dwax( -4, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Float64Array( x.length ); + expected = new Float64Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + dwax( x.length, 1.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 2.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 2 + ]); + w = new Float64Array( 3 ); + expected = new Float64Array([ + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 2, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float64Array([ + 0.0, // 0 + 30.0, + 0.0, // 1 + 10.0, + 0.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 1.0 * 5.0 + 30.0, + 10.0, // 2.0 * 5.0 + 10.0, + 15.0 // 3.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 1, 0, w, 2, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 2.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 0 + ]); + w = new Float64Array([ + 0.0, // 2 + 0.0, // 1 + 0.0 // 0 + ]); + expected = new Float64Array([ + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + dwax( 3, 5.0, x, -2, x.length-1, w, -1, w.length-1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array([ + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 5.0 + ]); + w = new Float64Array( 5 ); + expected = new Float64Array([ + 10.0, // 2.0 * 5.0 + 15.0, // 3.0 * 5.0 + 20.0, // 4.0 * 5.0 + 0.0, + 0.0 + ]); + + dwax( 3, 5.0, x, 1, 1, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` offset', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float64Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]); + expected = new Float64Array([ + 0.0, + 0.0, + 5.0, // 1.0 * 5.0 + 10.0, // 2.0 * 5.0 + 15.0 // 3.0 * 5.0 + ]); + + dwax( 3, 5.0, x, 1, 0, w, 1, 2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + var i; + + alpha = 3.0; + x = new Float64Array( 100 ); + w = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + dwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + w = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + dwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/README.md b/lib/node_modules/@stdlib/blas/ext/base/dxdy/README.md new file mode 100644 index 000000000000..9acaadaf557b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/README.md @@ -0,0 +1,317 @@ + + +# dxdy + +> Divide elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assign the results to `y`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \oslash \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var dxdy = require( '@stdlib/blas/ext/base/dxdy' ); +``` + +#### dxdy( N, x, strideX, y, strideY ) + +Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y`. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +dxdy( x.length, x, 1, y, 1 ); +// y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: input [`Float64Array`][@stdlib/array/float64]. +- **strideX**: stride length for `x`. +- **y**: output [`Float64Array`][@stdlib/array/float64]. +- **strideY**: stride length for `y`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to divide every other element of `x` by every other element of `y`: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 6.0, 1.0, 20.0, 1.0, 42.0, 1.0 ] ); +var y = new Float64Array( [ 2.0, 1.0, 4.0, 1.0, 6.0, 1.0 ] ); + +dxdy( 3, x, 2, y, 2 ); +// y => [ 3.0, 1.0, 5.0, 1.0, 7.0, 1.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 6.0, 12.0, 20.0, 1.0, 1.0 ] ); +var y0 = new Float64Array( [ 1.0, 1.0, 2.0, 3.0, 4.0, 1.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +dxdy( 3, x1, 1, y1, 1 ); +// y0 => [ 1.0, 1.0, 3.0, 4.0, 5.0, 1.0 ] +``` + +#### dxdy.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +dxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to divide the last three elements of `x` by the last three elements of `y`: + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var x = new Float64Array( [ 1.0, 2.0, 6.0, 20.0, 42.0 ] ); +var y = new Float64Array( [ 1.0, 2.0, 2.0, 4.0, 6.0 ] ); + +dxdy.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// y => [ 1.0, 2.0, 3.0, 5.0, 7.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `y` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dxdy = require( '@stdlib/blas/ext/base/dxdy' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +var y = discreteUniform( 10, 1, 100, { + 'dtype': 'float64' +}); +console.log( y ); + +dxdy( x.length, x, 1, y, 1 ); +console.log( y ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + +
+ +
+ + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/dxdy.h" +``` + +#### stdlib_strided_dxdy( N, \*X, strideX, \*Y, strideY ) + +Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y`. + +```c +const double x[] = { 6.0, 12.0, 20.0, 30.0 }; +double y[] = { 2.0, 3.0, 4.0, 5.0 }; + +stdlib_strided_dxdy( 4, x, 1, y, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Y**: `[inout] double*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. + +```c +void stdlib_strided_dxdy( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, double *Y, const CBLAS_INT strideY ); +``` + + + +#### stdlib_strided_dxdy_ndarray( N, \*X, strideX, offsetX, \*Y, strideY, offsetY ) + + + +Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```c +const double x[] = { 6.0, 12.0, 20.0, 30.0 }; +double y[] = { 2.0, 3.0, 4.0, 5.0 }; + +stdlib_strided_dxdy_ndarray( 4, x, 1, 0, y, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Y**: `[inout] double*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. +- **offsetY**: `[in] CBLAS_INT` starting index for `Y`. + +```c +void stdlib_strided_dxdy_ndarray( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, double *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ); +``` + +
+ + + +
+ +
+ + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/dxdy.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, -2.0, 3.0, -4.0, 5.0, -6.0, 7.0, -8.0 }; + double y[] = { 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Divide elements of `x` by the corresponding elements of `y`: + stdlib_strided_dxdy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "y[ %i ] = %lf\n", i, y[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.js new file mode 100644 index 000000000000..f818d458dcc2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dxdy = require( './../lib/dxdy.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -10.0, 10.0, options ); + var y = uniform( len, 1.0, 10.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dxdy( x.length, x, 1, y, 1 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.native.js new file mode 100644 index 000000000000..ac20bd2104f3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.native.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dxdy = tryRequire( resolve( __dirname, './../lib/dxdy.native.js' ) ); +var opts = { + 'skip': ( dxdy instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -10.0, 10.0, options ); + var y = uniform( len, 1.0, 10.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dxdy( x.length, x, 1, y, 1 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..450f5b71ced6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.ndarray.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dxdy = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -10.0, 10.0, options ); + var y = uniform( len, 1.0, 10.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dxdy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..e3f0801d9e59 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var dxdy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dxdy instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -10.0, 10.0, options ); + var y = uniform( len, 1.0, 10.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = dxdy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/dxdy/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..d3ab86f989f4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/benchmark/c/benchmark.length.c @@ -0,0 +1,207 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dxdy.h" +#include +#include +#include +#include +#include + +#define NAME "dxdy" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, 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 double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int i; + + x = (double *)malloc( len * sizeof(double) ); + y = (double *)malloc( len * sizeof(double) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = random_uniform( -100.0, 100.0 ); + y[ i ] = random_uniform( 1.0, 100.0 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_dxdy( len, x, 1, y, 1 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int i; + + x = (double *)malloc( len * sizeof(double) ); + y = (double *)malloc( len * sizeof(double) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = random_uniform( -100.0, 100.0 ); + y[ i ] = random_uniform( 1.0, 100.0 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_dxdy_ndarray( len, x, 1, 0, y, 1, 0 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/dxdy/binding.gyp new file mode 100644 index 000000000000..60dce9d0b31a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/binding.gyp @@ -0,0 +1,265 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Fortran compiler (to override -Dfortran_compiler=): + 'fortran_compiler%': 'gfortran', + + # Fortran compiler flags: + 'fflags': [ + # Specify the Fortran standard to which a program is expected to conform: + '-std=f95', + + # Indicate that the layout is free-form source code: + '-ffree-form', + + # Aggressive optimization: + '-O3', + + # Enable commonly used warning options: + '-Wall', + + # Warn if source code contains problematic language features: + '-Wextra', + + # Warn if a procedure is called without an explicit interface: + '-Wimplicit-interface', + + # Do not transform names of entities specified in Fortran source files by appending underscores (i.e., don't mangle names, thus allowing easier usage in C wrappers): + '-fno-underscoring', + + # Warn if source code contains Fortran 95 extensions and C-language constructs: + '-pedantic', + + # Compile but do not link (output is an object file): + '-c', + ], + + # 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 + + # Define custom build actions for particular inputs: + 'rules': [ + { + # Define a rule for processing Fortran files: + 'extension': 'f', + + # Define the pathnames to be used as inputs when performing processing: + 'inputs': [ + # Full path of the current input: + '<(RULE_INPUT_PATH)' + ], + + # Define the outputs produced during processing: + 'outputs': [ + # Store an output object file in a directory for placing intermediate results (only accessible within a single target): + '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).<(obj)' + ], + + # Define the rule for compiling Fortran based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + + # Rule to compile Fortran on Windows: + { + 'rule_name': 'compile_fortran_windows', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Windows...', + + 'process_outputs_as_sources': 0, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + }, + + # Rule to compile Fortran on non-Windows: + { + 'rule_name': 'compile_fortran_linux', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Linux...', + + 'process_outputs_as_sources': 1, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '-fPIC', # generate platform-independent code + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + } + ], # end condition (OS=="win") + ], # end conditions + }, # end rule (extension=="f") + ], # end rules + }, # 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/blas/ext/base/dxdy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/dxdy/docs/repl.txt new file mode 100644 index 000000000000..3fefaebd8f63 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/docs/repl.txt @@ -0,0 +1,125 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Divides elements of a double-precision floating-point strided array `x` by + the corresponding elements of a double-precision floating-point strided + array `y` and assigns the results to `y`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `y` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float64Array + Input array. + + strideX: integer + Stride length for `x`. + + y: Float64Array + Output array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + y: Float64Array + Output array. + + Examples + -------- + // Standard Usage: + > var buf = [ 6.0, 12.0, 20.0, 30.0, 42.0 ]; + > var x = new {{alias:@stdlib/array/float64}}( buf ); + > buf = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var y = new {{alias:@stdlib/array/float64}}( buf ); + > {{alias}}( x.length, x, 1, y, 1 ) + [ 3.0, 4.0, 5.0, 6.0, 7.0 ] + + // Using `N` and stride parameters: + > buf = [ 6.0, 1.0, 20.0, 1.0, 42.0, 1.0 ]; + > x = new {{alias:@stdlib/array/float64}}( buf ); + > buf = [ 2.0, 1.0, 4.0, 1.0, 6.0, 1.0 ]; + > y = new {{alias:@stdlib/array/float64}}( buf ); + > {{alias}}( 3, x, 2, y, 2 ) + [ 3.0, 1.0, 5.0, 1.0, 7.0, 1.0 ] + + // Using view offsets: + > var bufX = [ 1.0, 6.0, 12.0, 20.0, 1.0, 1.0 ]; + > var bufY = [ 1.0, 1.0, 2.0, 3.0, 4.0, 1.0 ]; + > var x0 = new {{alias:@stdlib/array/float64}}( bufX ); + > var y0 = new {{alias:@stdlib/array/float64}}( bufY ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetY = y0.BYTES_PER_ELEMENT * 2; + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, offsetX ); + > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, offsetY ); + > {{alias}}( 3, x1, 1, y1, 1 ) + [ 3.0, 4.0, 5.0, 1.0 ] + > y0 + [ 1.0, 1.0, 3.0, 4.0, 5.0, 1.0 ] + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Divides elements of a double-precision floating-point strided array `x` by + the corresponding elements of a double-precision floating-point strided + array `y` and assigns the results to `y` using alternative indexing + semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float64Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Float64Array + Output array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + y: Float64Array + Output array. + + Examples + -------- + // Standard Usage: + > var buf = [ 6.0, 12.0, 20.0, 30.0, 42.0 ]; + > var x = new {{alias:@stdlib/array/float64}}( buf ); + > buf = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var y = new {{alias:@stdlib/array/float64}}( buf ); + > {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + [ 3.0, 4.0, 5.0, 6.0, 7.0 ] + + // Using index offsets: + > x = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 6.0, 20.0, 42.0 ] ); + > y = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 2.0, 4.0, 6.0 ] ); + > {{alias}}.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ) + [ 1.0, 2.0, 3.0, 5.0, 7.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/dxdy/docs/types/index.d.ts new file mode 100644 index 000000000000..830d0efc748f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/docs/types/index.d.ts @@ -0,0 +1,103 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `dxdy`. +*/ +interface Routine { + /** + * Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + * var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * dxdy( x.length, x, 1, y, 1 ); + * // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] + */ + ( N: number, x: Float64Array, strideX: number, y: Float64Array, strideY: number ): Float64Array; + + /** + * Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting `x` index + * @param y - output array + * @param strideY - `y` stride length + * @param offsetY - starting `y` index + * @returns output array + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + * var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * dxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] + */ + ndarray( N: number, x: Float64Array, strideX: number, offsetX: number, y: Float64Array, strideY: number, offsetY: number ): Float64Array; +} + +/** +* Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y`. +* +* @param N - number of indexed elements +* @param x - input array +* @param strideX - `x` stride length +* @param y - output array +* @param strideY - `y` stride length +* @returns output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* dxdy( x.length, x, 1, y, 1 ); +* // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* dxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +*/ +declare var dxdy: Routine; + + +// EXPORTS // + +export = dxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/dxdy/docs/types/test.ts new file mode 100644 index 000000000000..5141a44bd42e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/docs/types/test.ts @@ -0,0 +1,250 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import dxdy = require( './index' ); + + +// TESTS // + +// The function returns a Float64Array... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy( x.length, x, 1, y, 1 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy( '10', x, 1, y, 1 ); // $ExpectError + dxdy( true, x, 1, y, 1 ); // $ExpectError + dxdy( false, x, 1, y, 1 ); // $ExpectError + dxdy( null, x, 1, y, 1 ); // $ExpectError + dxdy( undefined, x, 1, y, 1 ); // $ExpectError + dxdy( [], x, 1, y, 1 ); // $ExpectError + dxdy( {}, x, 1, y, 1 ); // $ExpectError + dxdy( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Float64Array... +{ + const y = new Float64Array( 10 ); + + dxdy( 10, 10, 1, y, 1 ); // $ExpectError + dxdy( 10, '10', 1, y, 1 ); // $ExpectError + dxdy( 10, true, 1, y, 1 ); // $ExpectError + dxdy( 10, false, 1, y, 1 ); // $ExpectError + dxdy( 10, null, 1, y, 1 ); // $ExpectError + dxdy( 10, undefined, 1, y, 1 ); // $ExpectError + dxdy( 10, [ '1' ], 1, y, 1 ); // $ExpectError + dxdy( 10, {}, 1, y, 1 ); // $ExpectError + dxdy( 10, ( x: number ): number => x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy( x.length, x, '10', y, 1 ); // $ExpectError + dxdy( x.length, x, true, y, 1 ); // $ExpectError + dxdy( x.length, x, false, y, 1 ); // $ExpectError + dxdy( x.length, x, null, y, 1 ); // $ExpectError + dxdy( x.length, x, undefined, y, 1 ); // $ExpectError + dxdy( x.length, x, [], y, 1 ); // $ExpectError + dxdy( x.length, x, {}, y, 1 ); // $ExpectError + dxdy( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dxdy( 10, x, 1, 10, 1 ); // $ExpectError + dxdy( 10, x, 1, '10', 1 ); // $ExpectError + dxdy( 10, x, 1, true, 1 ); // $ExpectError + dxdy( 10, x, 1, false, 1 ); // $ExpectError + dxdy( 10, x, 1, null, 1 ); // $ExpectError + dxdy( 10, x, 1, undefined, 1 ); // $ExpectError + dxdy( 10, x, 1, [ '1' ], 1 ); // $ExpectError + dxdy( 10, x, 1, {}, 1 ); // $ExpectError + dxdy( 10, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy( x.length, x, 1, y, '10' ); // $ExpectError + dxdy( x.length, x, 1, y, true ); // $ExpectError + dxdy( x.length, x, 1, y, false ); // $ExpectError + dxdy( x.length, x, 1, y, null ); // $ExpectError + dxdy( x.length, x, 1, y, undefined ); // $ExpectError + dxdy( x.length, x, 1, y, [] ); // $ExpectError + dxdy( x.length, x, 1, y, {} ); // $ExpectError + dxdy( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy(); // $ExpectError + dxdy( x.length ); // $ExpectError + dxdy( x.length ); // $ExpectError + dxdy( x.length, x ); // $ExpectError + dxdy( x.length, x, 1 ); // $ExpectError + dxdy( x.length, x, 1, y ); // $ExpectError + dxdy( x.length, x, 1, y ); // $ExpectError + dxdy( x.length, x, 1, y, 1, 10 ); // $ExpectError +} + +// Attached to the main export is an `ndarray` method which returns a Float64Array... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy.ndarray( '10', x, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Float64Array... +{ + const y = new Float64Array( 10 ); + + dxdy.ndarray( 10, 10, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, '10', 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, true, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, false, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, null, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, undefined, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, [ '1' ], 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, {}, 1, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, ( x: number ): number => x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy.ndarray( x.length, x, '10', 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy.ndarray( x.length, x, 1, '10', y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a Float64Array... +{ + const x = new Float64Array( 10 ); + + dxdy.ndarray( 10, x, 1, 0, 10, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, x, 1, 0, '10', 1, 0 ); // $ExpectError + dxdy.ndarray( 10, x, 1, 0, true, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, x, 1, 0, false, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, x, 1, 0, null, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, x, 1, 0, undefined, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + dxdy.ndarray( 10, x, 1, 0, {}, 1, 0 ); // $ExpectError + dxdy.ndarray( 10, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy.ndarray( x.length, x, 1, 0, y, '10', 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy.ndarray( x.length, x, 1, 0, y, 1, '10' ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + dxdy.ndarray(); // $ExpectError + dxdy.ndarray( x.length ); // $ExpectError + dxdy.ndarray( x.length ); // $ExpectError + dxdy.ndarray( x.length, x ); // $ExpectError + dxdy.ndarray( x.length, x, 1 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + dxdy.ndarray( x.length, x, 1, 0, y, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dxdy/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/dxdy/examples/c/example.c new file mode 100644 index 000000000000..e81cd4c9dfd7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/examples/c/example.c @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dxdy.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, -2.0, 3.0, -4.0, 5.0, -6.0, 7.0, -8.0 }; + double y[] = { 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Divide elements of `x` by the corresponding elements of `y`: + stdlib_strided_dxdy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "y[ %i ] = %lf\n", i, y[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/examples/index.js new file mode 100644 index 000000000000..92e4f38a79fe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dxdy = require( './../lib' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +var y = discreteUniform( 10, 1, 100, { + 'dtype': 'float64' +}); +console.log( y ); + +dxdy( x.length, x, 1, y, 1 ); +console.log( y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/dxdy/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +*/ +function dxdy( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/dxdy.native.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/dxdy.native.js new file mode 100644 index 000000000000..2a879d1426d2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/dxdy.native.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Float64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Float64Array} y - output array +* @param {integer} strideY - `y` stride length +* @returns {Float64Array} output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* dxdy( x.length, x, 1, y, 1 ); +* // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +*/ +function dxdy( N, x, strideX, y, strideY ) { + addon( N, x, strideX, y, strideY ); + return y; +} + + +// EXPORTS // + +module.exports = dxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/index.js new file mode 100644 index 000000000000..ca82cd20f87e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/index.js @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Divide elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assign the results to `y`. +* +* @module @stdlib/blas/ext/base/dxdy +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dxdy = require( '@stdlib/blas/ext/base/dxdy' ); +* +* var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* dxdy( x.length, x, 1, y, 1 ); +* // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var dxdy = require( '@stdlib/blas/ext/base/dxdy' ); +* +* var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* dxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var dxdy; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + dxdy = main; +} else { + dxdy = tmp; +} + + +// EXPORTS // + +module.exports = dxdy; + +// exports: { "ndarray": "dxdy.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/main.js new file mode 100644 index 000000000000..6beafc839b54 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dxdy = require( './dxdy.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( dxdy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/native.js new file mode 100644 index 000000000000..39f6eb41b341 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var dxdy = require( './dxdy.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( dxdy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = dxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/ndarray.js new file mode 100644 index 000000000000..fd525ff2d0ef --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/ndarray.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Float64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Float64Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Float64Array} output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* dxdy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +*/ +function dxdy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var ix; + var iy; + var m; + var i; + + if ( N <= 0 ) { + return y; + } + ix = offsetX; + iy = offsetY; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideY === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + y[ iy ] = x[ ix ] / y[ iy ]; + ix += strideX; + iy += strideY; + } + } + if ( N < M ) { + return y; + } + for ( i = m; i < N; i += M ) { + y[ iy ] = x[ ix ] / y[ iy ]; + y[ iy+1 ] = x[ ix+1 ] / y[ iy+1 ]; + y[ iy+2 ] = x[ ix+2 ] / y[ iy+2 ]; + y[ iy+3 ] = x[ ix+3 ] / y[ iy+3 ]; + y[ iy+4 ] = x[ ix+4 ] / y[ iy+4 ]; + ix += M; + iy += M; + } + return y; + } + for ( i = 0; i < N; i++ ) { + y[ iy ] = x[ ix ] / y[ iy ]; + ix += strideX; + iy += strideY; + } + return y; +} + + +// EXPORTS // + +module.exports = dxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/ndarray.native.js new file mode 100644 index 000000000000..b37ca3b14c9e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/lib/ndarray.native.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Float64Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Float64Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Float64Array} output array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* dxdy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +*/ +function dxdy( N, x, strideX, offsetX, y, strideY, offsetY ) { + addon.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ); + return y; +} + + +// EXPORTS // + +module.exports = dxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/dxdy/manifest.json new file mode 100644 index 000000000000..6070dc50b80c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/manifest.json @@ -0,0 +1,98 @@ +{ + "options": { + "task": "build", + "wasm": false + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float64array" + ] + }, + { + "task": "benchmark", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "build", + "wasm": true, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/package.json b/lib/node_modules/@stdlib/blas/ext/base/dxdy/package.json new file mode 100644 index 000000000000..7b1e0b347909 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/package.json @@ -0,0 +1,80 @@ +{ + "name": "@stdlib/blas/ext/base/dxdy", + "version": "0.0.0", + "description": "Divide elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assign the results to `y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "linear", + "algebra", + "subroutines", + "divide", + "division", + "quotient", + "transform", + "strided", + "array", + "ndarray", + "vector", + "xdy", + "dxdy", + "float64", + "double", + "float64array" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/dxdy/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/dxdy/src/addon.c new file mode 100644 index 000000000000..5c190fb057c4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/src/addon.c @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dxdy.h" +#include "stdlib/napi/export.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float64array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, Y, N, strideY, argv, 3 ); + API_SUFFIX(stdlib_strided_dxdy)( N, X, strideX, Y, strideY ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 7 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_INT64( env, offsetY, argv, 6 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT64ARRAY( env, Y, N, strideY, argv, 4 ); + API_SUFFIX(stdlib_strided_dxdy_ndarray)( N, X, strideX, offsetX, Y, strideY, offsetY ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/dxdy/src/main.c new file mode 100644 index 000000000000..d8fa9d756936 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/src/main.c @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/dxdy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/strided/base/stride2offset.h" + +static const CBLAS_INT M = 5; + +/** +* Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y`. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param Y output array +* @param strideY stride length for `Y` +*/ +void API_SUFFIX(stdlib_strided_dxdy)( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, double *Y, const CBLAS_INT strideY ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oy = stdlib_strided_stride2offset( N, strideY ); + API_SUFFIX(stdlib_strided_dxdy_ndarray)( N, X, strideX, ox, Y, strideY, oy ); +} + +/** +* Divides elements of a double-precision floating-point strided array `x` by the corresponding elements of a double-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param offsetX starting index for `X` +* @param Y output array +* @param strideY stride length for `Y` +* @param offsetY starting index for `Y` +*/ +void API_SUFFIX(stdlib_strided_dxdy_ndarray)( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, double *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ) { + CBLAS_INT ix; + CBLAS_INT iy; + CBLAS_INT m; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + iy = offsetY; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX == 1 && strideY == 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + Y[ iy ] = X[ ix ] / Y[ iy ]; + ix += strideX; + iy += strideY; + } + } + if ( N < M ) { + return; + } + for ( i = m; i < N; i += M ) { + Y[ iy ] = X[ ix ] / Y[ iy ]; + Y[ iy+1 ] = X[ ix+1 ] / Y[ iy+1 ]; + Y[ iy+2 ] = X[ ix+2 ] / Y[ iy+2 ]; + Y[ iy+3 ] = X[ ix+3 ] / Y[ iy+3 ]; + Y[ iy+4 ] = X[ ix+4 ] / Y[ iy+4 ]; + ix += M; + iy += M; + } + return; + } + for ( i = 0; i < N; i++ ) { + Y[ iy ] = X[ ix ] / Y[ iy ]; + ix += strideX; + iy += strideY; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.dxdy.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.dxdy.js new file mode 100644 index 000000000000..a63ef7df97b2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.dxdy.js @@ -0,0 +1,245 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dxdy = require( './../lib/dxdy.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( dxdy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0, // 20.0 / 4.0 + 6.0, // 30.0 / 5.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( [ 10.0, 24.0 ] ); + y = new Float64Array( [ 5.0, 6.0 ] ); + expected = new Float64Array( [ 2.0, 4.0 ] ); + + dxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = dxdy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + + dxdy( 0, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + dxdy( -4, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, + 20.0, // 1 + 1.0, + 42.0 // 2 + ]); + y = new Float64Array( [ 2.0, 4.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 5.0, // 20.0 / 4.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( 3, x, 2, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 10.0, 15.0, 20.0 ] ); + y = new Float64Array([ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 10.0 / 2.0 + 30.0, + 5.0, // 15.0 / 3.0 + 10.0, + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, 1, y, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 1.0, + 12.0, // 1 + 1.0, + 20.0 // 0 + ]); + y = new Float64Array([ + 2.0, // 2 + 3.0, // 1 + 4.0 // 0 + ]); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, -2, y, -1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Float64Array([ + 1.0, + 6.0, // 0 + 12.0, // 1 + 20.0, // 2 + 1.0 + ]); + y0 = new Float64Array([ + 1.0, + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Float64Array([ + 1.0, + 1.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x1, 1, y1, 1 ); + t.deepEqual( y0, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float64Array( 100 ); + y = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + dxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + y = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + dxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.dxdy.native.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.dxdy.native.js new file mode 100644 index 000000000000..27151ee04b56 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.dxdy.native.js @@ -0,0 +1,254 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dxdy = tryRequire( resolve( __dirname, './../lib/dxdy.native.js' ) ); +var opts = { + 'skip': ( dxdy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( dxdy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0, // 20.0 / 4.0 + 6.0, // 30.0 / 5.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( [ 10.0, 24.0 ] ); + y = new Float64Array( [ 5.0, 6.0 ] ); + expected = new Float64Array( [ 2.0, 4.0 ] ); + + dxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = dxdy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + + dxdy( 0, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + dxdy( -4, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, + 20.0, // 1 + 1.0, + 42.0 // 2 + ]); + y = new Float64Array( [ 2.0, 4.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 5.0, // 20.0 / 4.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( 3, x, 2, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ 10.0, 15.0, 20.0 ]); + y = new Float64Array([ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 10.0 / 2.0 + 30.0, + 5.0, // 15.0 / 3.0 + 10.0, + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, 1, y, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 1.0, + 12.0, // 1 + 1.0, + 20.0 // 0 + ]); + y = new Float64Array([ + 2.0, // 2 + 3.0, // 1 + 4.0 // 0 + ]); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, -2, y, -1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Float64Array([ + 1.0, + 6.0, // 0 + 12.0, // 1 + 20.0, // 2 + 1.0 + ]); + y0 = new Float64Array([ + 1.0, + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Float64Array([ + 1.0, + 1.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x1, 1, y1, 1 ); + t.deepEqual( y0, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float64Array( 100 ); + y = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + dxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + y = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + dxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.js new file mode 100644 index 000000000000..2565cc9df497 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var dxdy = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof dxdy.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var dxdy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dxdy, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var dxdy; + var main; + + main = require( './../lib/main.js' ); + + dxdy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( dxdy, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.ndarray.js new file mode 100644 index 000000000000..9e8ebe8a48e5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.ndarray.js @@ -0,0 +1,291 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dxdy = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( dxdy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0, // 20.0 / 4.0 + 6.0, // 30.0 / 5.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( [ 10.0, 24.0 ] ); + y = new Float64Array( [ 5.0, 6.0 ] ); + expected = new Float64Array( [ 2.0, 4.0 ] ); + + dxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = dxdy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + + dxdy( 0, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + dxdy( -4, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, + 20.0, // 1 + 1.0, + 42.0 // 2 + ]); + y = new Float64Array( [ 2.0, 4.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 5.0, // 20.0 / 4.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( 3, x, 2, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 10.0, 15.0, 20.0 ] ); + y = new Float64Array([ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 10.0 / 2.0 + 30.0, + 5.0, // 15.0 / 3.0 + 10.0, + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, 1, 0, y, 2, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 1.0, + 12.0, // 1 + 1.0, + 20.0 // 0 + ]); + y = new Float64Array([ + 2.0, // 2 + 3.0, // 1 + 4.0 // 0 + ]); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, -2, x.length-1, y, -1, y.length-1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 0.0, + 6.0, // 0 + 1.0, + 20.0, // 1 + 1.0, + 42.0 // 2 + ]); + y = new Float64Array( [ 2.0, 4.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 5.0, // 20.0 / 4.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( 3, x, 2, 1, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0 ] ); + y = new Float64Array([ + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]); + expected = new Float64Array([ + 0.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, 1, 0, y, 1, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 0.0, + 6.0, // 0 + 0.0, + 12.0, // 1 + 0.0, + 20.0 // 2 + ]); + y = new Float64Array([ + 0.0, + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 0.0 + ]); + expected = new Float64Array([ + 0.0, + 0.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0, // 20.0 / 4.0 + 0.0 + ]); + + dxdy( 3, x, 2, 1, y, 1, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float64Array( 100 ); + y = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + dxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + y = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + dxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.ndarray.native.js new file mode 100644 index 000000000000..249a7c6150af --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/dxdy/test/test.ndarray.native.js @@ -0,0 +1,300 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var dxdy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( dxdy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', opts, function test( t ) { + t.strictEqual( dxdy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0, // 20.0 / 4.0 + 6.0, // 30.0 / 5.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( [ 10.0, 24.0 ] ); + y = new Float64Array( [ 5.0, 6.0 ] ); + expected = new Float64Array( [ 2.0, 4.0 ] ); + + dxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + y = new Float64Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = dxdy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float64Array( [ 4.0, 5.0, 6.0 ] ); + + dxdy( 0, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + dxdy( -4, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 0 + 1.0, + 20.0, // 1 + 1.0, + 42.0 // 2 + ]); + y = new Float64Array( [ 2.0, 4.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 5.0, // 20.0 / 4.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( 3, x, 2, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 10.0, 15.0, 20.0 ] ); + y = new Float64Array([ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]); + expected = new Float64Array([ + 5.0, // 10.0 / 2.0 + 30.0, + 5.0, // 15.0 / 3.0 + 10.0, + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, 1, 0, y, 2, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 1.0, + 12.0, // 1 + 1.0, + 20.0 // 0 + ]); + y = new Float64Array([ + 2.0, // 2 + 3.0, // 1 + 4.0 // 0 + ]); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, -2, x.length-1, y, -1, y.length-1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 0.0, + 6.0, // 0 + 1.0, + 20.0, // 1 + 1.0, + 42.0 // 2 + ]); + y = new Float64Array( [ 2.0, 4.0, 6.0 ] ); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 5.0, // 20.0 / 4.0 + 7.0 // 42.0 / 6.0 + ]); + + dxdy( 3, x, 2, 1, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array( [ 6.0, 12.0, 20.0 ] ); + y = new Float64Array([ + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]); + expected = new Float64Array([ + 0.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + dxdy( 3, x, 1, 0, y, 1, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 0.0, + 6.0, // 0 + 0.0, + 12.0, // 1 + 0.0, + 20.0 // 2 + ]); + y = new Float64Array([ + 0.0, + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 0.0 + ]); + expected = new Float64Array([ + 0.0, + 0.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0, // 20.0 / 4.0 + 0.0 + ]); + + dxdy( 3, x, 2, 1, y, 1, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float64Array( 100 ); + y = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + dxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + y = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + dxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gcartesian-power/README.md b/lib/node_modules/@stdlib/blas/ext/base/gcartesian-power/README.md index d89ace2acf77..40b2b3d5f485 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/gcartesian-power/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/gcartesian-power/README.md @@ -104,8 +104,8 @@ The function has the following parameters: - **strideX**: stride length for `x`. - **offsetX**: starting index for `x`. - **out**: output [`Array`][mdn-array] or [`typed array`][mdn-typed-array]. -- **strideOut1**: stride length of the first dimension of `out`. -- **strideOut2**: stride length of the second dimension of `out`. +- **strideOut1**: stride length for the first dimension of `out`. +- **strideOut2**: stride length for the second dimension of `out`. - **offsetOut**: starting index for `out`. While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to access only the last two elements: diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/README.md new file mode 100644 index 000000000000..596dc7707fa0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/README.md @@ -0,0 +1,162 @@ + + +# gfillEqual + +> Replace strided array elements equal to a provided search element with a specified scalar constant. + +
+ +## Usage + +```javascript +var gfillEqual = require( '@stdlib/blas/ext/base/gfill-equal' ); +``` + +#### gfillEqual( N, searchElement, alpha, x, strideX ) + +Replaces strided array elements equal to a provided search element with a specified scalar constant. + +```javascript +var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; + +gfillEqual( x.length, 0.0, 5.0, x, 1 ); +// x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **alpha**: scalar constant. +- **x**: input array. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var x = [ 0.0, 1.0, 0.0, -5.0, 4.0, 0.0, -1.0, 0.0 ]; + +gfillEqual( 4, 0.0, 5.0, x, 2 ); +// x => [ 5.0, 1.0, 5.0, -5.0, 4.0, 0.0, -1.0, 0.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array: +var x0 = new Float64Array( [ 1.0, 0.0, 3.0, 0.0, -5.0, 0.0 ] ); + +// Create an offset view: +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +gfillEqual( 3, 0.0, 5.0, x1, 2 ); +// x0 => [ 1.0, 5.0, 3.0, 5.0, -5.0, 5.0 ] +``` + +#### gfillEqual.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + +Replaces strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```javascript +var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; + +gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +// x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var x = [ 1.0, 0.0, 3.0, 0.0, -5.0, 0.0 ]; + +gfillEqual.ndarray( 3, 0.0, 5.0, x, 1, x.length-3 ); +// x => [ 1.0, 0.0, 3.0, 5.0, -5.0, 5.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. +- When comparing elements, both functions check for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct, and `-0` and `+0` are considered the same. To replace `NaN` values, use [`@stdlib/blas/ext/base/gfill-nan`][@stdlib/blas/ext/base/gfill-nan]. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + +
+ +## Examples + + + +```javascript +var zeros = require( '@stdlib/array/zeros' ); +var gfillEqual = require( '@stdlib/blas/ext/base/gfill-equal' ); + +var x = zeros( 10, 'generic' ); +console.log( x ); + +gfillEqual( x.length, 0.0, 5.0, x, 1 ); +console.log( x ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..e7192d34e1b4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfillEqual = require( './../lib/main.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gfillEqual( x.length, i, i+1, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..26f9c9b6b2b1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfillEqual = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gfillEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/docs/repl.txt new file mode 100644 index 000000000000..5b0873a0bafb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/docs/repl.txt @@ -0,0 +1,103 @@ + +{{alias}}( N, searchElement, alpha, x, strideX ) + Replaces strided array elements equal to a provided search element with a + specified scalar constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + alpha: any + Scalar constant. + + x: ArrayLikeObject + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: ArrayLikeObject + Input array. + + Examples + -------- + // Standard Usage: + > var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; + > {{alias}}( x.length, 0.0, 5.0, x, 1 ) + [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] + + // Using `N` and stride parameters: + > x = [ 0.0, 1.0, 0.0, -5.0, 4.0, 0.0, -1.0, 0.0 ]; + > {{alias}}( 4, 0.0, 5.0, x, 2 ) + [ 5.0, 1.0, 5.0, -5.0, 4.0, 0.0, -1.0, 0.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 0.0, 3.0, 0.0, -5.0, 0.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 3, 0.0, 5.0, x1, 2 ) + [ 5.0, 3.0, 5.0, -5.0, 5.0 ] + > x0 + [ 1.0, 5.0, 3.0, 5.0, -5.0, 5.0 ] + + +{{alias}}.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + Replaces strided array elements equal to a provided search element with a + specified scalar constant using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + alpha: any + Scalar constant. + + x: ArrayLikeObject + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: ArrayLikeObject + Input array. + + Examples + -------- + // Standard Usage: + > var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; + > {{alias}}.ndarray( x.length, 0.0, 5.0, x, 1, 0 ) + [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] + + // Using an index offset: + > x = [ 1.0, 0.0, 3.0, 0.0, -5.0, 0.0 ]; + > {{alias}}.ndarray( 3, 0.0, 5.0, x, 2, 1 ) + [ 1.0, 5.0, 3.0, 5.0, -5.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..6d8d66158255 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/docs/types/index.d.ts @@ -0,0 +1,99 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gfillEqual`. +*/ +interface Routine { + /** + * Replaces strided array elements equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; + * + * gfillEqual( x.length, 0.0, 5.0, x, 1 ); + * // x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] + */ + = InputArray>( N: number, searchElement: T, alpha: U, x: V, strideX: number ): V; + + /** + * Replaces strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; + * + * gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); + * // x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] + */ + ndarray = InputArray>( N: number, searchElement: T, alpha: U, x: V, strideX: number, offsetX: number ): V; +} + +/** +* Replaces strided array elements equal to a provided search element with a specified scalar constant. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; +* +* gfillEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] +* +* @example +* var x = [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; +* +* gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] +*/ +declare var gfillEqual: Routine; + + +// EXPORTS // + +export = gfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/docs/types/test.ts new file mode 100644 index 000000000000..019908c283b6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/docs/types/test.ts @@ -0,0 +1,158 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gfillEqual = require( './index' ); + + +// TESTS // + +// The function returns a collection... +{ + const x = new Float64Array( 10 ); + + gfillEqual( x.length, 0.0, 5.0, x, 1 ); // $ExpectType Float64Array + gfillEqual( x.length, 0.0, 5.0, new AccessorArray( x ), 1 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillEqual( '10', 0.0, 5.0, x, 1 ); // $ExpectError + gfillEqual( true, 0.0, 5.0, x, 1 ); // $ExpectError + gfillEqual( false, 0.0, 5.0, x, 1 ); // $ExpectError + gfillEqual( null, 0.0, 5.0, x, 1 ); // $ExpectError + gfillEqual( undefined, 0.0, 5.0, x, 1 ); // $ExpectError + gfillEqual( [], 0.0, 5.0, x, 1 ); // $ExpectError + gfillEqual( {}, 0.0, 5.0, x, 1 ); // $ExpectError + gfillEqual( ( x: number ): number => x, 0.0, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a collection... +{ + const x = new Float64Array( 10 ); + + gfillEqual( x.length, 0.0, 5.0, 10, 1 ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, true, 1 ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, false, 1 ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, null, 1 ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, undefined, 1 ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillEqual( x.length, 0.0, 5.0, x, '10' ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, x, true ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, x, false ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, x, null ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, x, undefined ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, x, [] ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, x, {} ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + gfillEqual(); // $ExpectError + gfillEqual( x.length ); // $ExpectError + gfillEqual( x.length, 0.0 ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0 ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, x ); // $ExpectError + gfillEqual( x.length, 0.0, 5.0, x, 1, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a collection... +{ + const x = new Float64Array( 10 ); + + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); // $ExpectType Float64Array + gfillEqual.ndarray( x.length, 0.0, 5.0, new AccessorArray( x ), 1, 0 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillEqual.ndarray( '10', 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillEqual.ndarray( true, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillEqual.ndarray( false, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillEqual.ndarray( null, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillEqual.ndarray( undefined, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillEqual.ndarray( [], 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillEqual.ndarray( {}, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillEqual.ndarray( ( x: number ): number => x, 0.0, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a collection... +{ + const x = new Float64Array( 10 ); + + gfillEqual.ndarray( x.length, 0.0, 5.0, 10, 1, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, true, 1, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, false, 1, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, null, 1, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, undefined, 1, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillEqual.ndarray( x.length, 0.0, 5.0, x, '10', 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, true, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, false, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, null, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, undefined, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, [], 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, {}, 0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, '10' ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, true ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, false ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, null ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, undefined ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, [] ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + gfillEqual.ndarray(); // $ExpectError + gfillEqual.ndarray( x.length ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1 ); // $ExpectError + gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/examples/index.js new file mode 100644 index 000000000000..73dacbce7e81 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/examples/index.js @@ -0,0 +1,28 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var zeros = require( '@stdlib/array/zeros' ); +var gfillEqual = require( './../lib' ); + +var x = zeros( 10, 'generic' ); +console.log( x ); + +gfillEqual( x.length, 0.0, 5.0, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/accessors.js new file mode 100644 index 000000000000..a48004123a09 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/accessors.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Replaces strided array elements equal to a provided search element with a specified scalar constant. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {*} alpha - scalar constant +* @param {Object} x - input array object +* @param {Collection} x.data - input array data +* @param {Array} x.accessors - array element accessors +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Object} input array object +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ]; +* +* gfillEqual( x.length, 0.0, 5.0, arraylike2object( toAccessorArray( x ) ), 1, 0 ); +* // x => [ 5.0, 1.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] +*/ +function gfillEqual( N, searchElement, alpha, x, strideX, offsetX ) { + var xbuf; + var get; + var set; + var ix; + var i; + var v; + + // Cache reference to array data: + xbuf = x.data; + + // Cache references to the element accessors: + get = x.accessors[ 0 ]; + set = x.accessors[ 1 ]; + + ix = offsetX; + for ( i = 0; i < N; i++ ) { + v = get( xbuf, ix ); + if ( v === searchElement ) { + set( xbuf, ix, alpha ); + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = gfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/index.js new file mode 100644 index 000000000000..982389697a3f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace strided array elements equal to a provided search element with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/gfill-equal +* +* @example +* var gfillEqual = require( '@stdlib/blas/ext/base/gfill-equal' ); +* +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +* +* @example +* var gfillEqual = require( '@stdlib/blas/ext/base/gfill-equal' ); +* +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/main.js new file mode 100644 index 000000000000..9f081bce52e4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/main.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Replaces strided array elements equal to a provided search element with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {*} alpha - scalar constant +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @returns {Collection} input array +* +* @example +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function gfillEqual( N, searchElement, alpha, x, strideX ) { + return ndarray( N, searchElement, alpha, x, strideX, stride2offset( N, strideX ) ); +} + + +// EXPORTS // + +module.exports = gfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/ndarray.js new file mode 100644 index 000000000000..61f1604c4de9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/lib/ndarray.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Replaces strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {*} alpha - scalar constant +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Collection} input array +* +* @example +* var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; +* +* gfillEqual( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, -2.0, 3.0, 5.0, 4.0, -6.0 ] +*/ +function gfillEqual( N, searchElement, alpha, x, strideX, offsetX ) { + var ix; + var o; + var i; + + if ( N <= 0 ) { + return x; + } + o = arraylike2object( x ); + if ( o.accessorProtocol ) { + accessors( N, searchElement, alpha, o, strideX, offsetX ); + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] === searchElement ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = gfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/package.json new file mode 100644 index 000000000000..5f126d86d69f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/package.json @@ -0,0 +1,68 @@ +{ + "name": "@stdlib/blas/ext/base/gfill-equal", + "version": "0.0.0", + "description": "Replace strided array elements equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "equal", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/test/test.js new file mode 100644 index 000000000000..790cf31a6201 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gfillEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gfillEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/test/test.main.js new file mode 100644 index 000000000000..1582e719b17a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/test/test.main.js @@ -0,0 +1,379 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfillEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gfillEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements equal to a provided search element', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, + 2.0, + 5.0, + 4.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]; + + gfillEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 5.0, 2.0 ]; + + gfillEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces strided array elements equal to a provided search element (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, + 2.0, + 5.0, + 4.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]; + + gfillEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 5.0, 2.0 ]; + + gfillEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if no elements are equal to a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 1.0, 2.0, 3.0 ]; + expected = [ 1.0, 2.0, 3.0 ]; + + gfillEqual( x.length, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if no elements are equal to a provided search element, the function returns `x` unchanged (accessors)', function test( t ) { + var expected; + var x; + + x = [ 1.0, 2.0, 3.0 ]; + expected = [ 1.0, 2.0, 3.0 ]; + + gfillEqual( x.length, 4.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function returns `x` unchanged', function test( t ) { + var x = [ NaN, 1.0, NaN ]; + + gfillEqual( x.length, NaN, 5.0, x, 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], 1.0, 'returns expected value' ); + t.ok( isnan( x[ 2 ] ), 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function returns `x` unchanged (accessors)', function test( t ) { + var x = [ NaN, 1.0, NaN ]; + + gfillEqual( x.length, NaN, 5.0, toAccessorArray( x ), 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], 1.0, 'returns expected value' ); + t.ok( isnan( x[ 2 ] ), 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ 5.0, 1.0, 5.0, 5.0 ]; + + gfillEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ 5.0, 1.0, 5.0, 5.0 ]; + + gfillEqual( x.length, -0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value (accessors)', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ 5.0, 1.0, 5.0, 5.0 ]; + + gfillEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ 5.0, 1.0, 5.0, 5.0 ]; + + gfillEqual( x.length, -0.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = [ 1.0, 0.0, 3.0, 0.0, 5.0 ]; + out = gfillEqual( x.length, 0.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'the function returns a reference to the input array (accessors)', function test( t ) { + var out; + var x; + + x = toAccessorArray( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = gfillEqual( x.length, 0.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 0.0, -4.0, 1.0 ]; + expected = [ 0.0, -4.0, 1.0 ]; + + gfillEqual( 0, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, -4.0, 1.0 ]; + gfillEqual( -4, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]; + expected = [ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]; + + gfillEqual( 3, 0.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + 2.0, + -3.0, + 4.0, + 0.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, // 0 + 2.0, + -3.0, + 4.0, + 5.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + + gfillEqual( 2, 0.0, 5.0, toAccessorArray( x ), 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]; + expected = [ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]; + + gfillEqual( 3, 0.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 1 + 2.0, + -3.0, + 4.0, + 0.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, // 1 + 2.0, + -3.0, + 4.0, + 5.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + + gfillEqual( 2, 0.0, 5.0, toAccessorArray( x ), -4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 4.0, + 6.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + gfillEqual( 3, 0.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/test/test.ndarray.js new file mode 100644 index 000000000000..f01bbac786a3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-equal/test/test.ndarray.js @@ -0,0 +1,401 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfillEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( gfillEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements equal to a provided search element', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, + 2.0, + 5.0, + 4.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]; + + gfillEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 5.0, 2.0 ]; + + gfillEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces strided array elements equal to a provided search element (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, + 2.0, + 5.0, + 4.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]; + + gfillEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 5.0, 2.0 ]; + + gfillEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if no elements are equal to a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 1.0, 2.0, 3.0 ]; + expected = [ 1.0, 2.0, 3.0 ]; + + gfillEqual( x.length, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if no elements are equal to a provided search element, the function returns `x` unchanged (accessors)', function test( t ) { + var expected; + var x; + + x = [ 1.0, 2.0, 3.0 ]; + expected = [ 1.0, 2.0, 3.0 ]; + + gfillEqual( x.length, 4.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function returns `x` unchanged', function test( t ) { + var x = [ NaN, 1.0, NaN ]; + + gfillEqual( x.length, NaN, 5.0, x, 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], 1.0, 'returns expected value' ); + t.ok( isnan( x[ 2 ] ), 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function returns `x` unchanged (accessors)', function test( t ) { + var x = [ NaN, 1.0, NaN ]; + + gfillEqual( x.length, NaN, 5.0, toAccessorArray( x ), 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], 1.0, 'returns expected value' ); + t.ok( isnan( x[ 2 ] ), 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ 5.0, 1.0, 5.0, 5.0 ]; + + gfillEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ 5.0, 1.0, 5.0, 5.0 ]; + + gfillEqual( x.length, -0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value (accessors)', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ 5.0, 1.0, 5.0, 5.0 ]; + + gfillEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ 5.0, 1.0, 5.0, 5.0 ]; + + gfillEqual( x.length, -0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = [ 1.0, 0.0, 3.0, 0.0, 5.0 ]; + out = gfillEqual( x.length, 0.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'the function returns a reference to the input array (accessors)', function test( t ) { + var out; + var x; + + x = toAccessorArray( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = gfillEqual( x.length, 0.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 0.0, -4.0, 1.0 ]; + expected = [ 0.0, -4.0, 1.0 ]; + + gfillEqual( 0, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, -4.0, 1.0 ]; + gfillEqual( -4, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]; + expected = [ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]; + + gfillEqual( 3, 0.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + 2.0, + -3.0, + 4.0, + 0.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, // 0 + 2.0, + -3.0, + 4.0, + 5.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + + gfillEqual( 2, 0.0, 5.0, toAccessorArray( x ), 4, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]; + expected = [ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]; + + gfillEqual( 3, 0.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 1 + 2.0, + -3.0, + 4.0, + 0.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, // 1 + 2.0, + -3.0, + 4.0, + 5.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + + gfillEqual( 2, 0.0, 5.0, toAccessorArray( x ), -4, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = [ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 6.0 // 2 + ]; + expected = [ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 4.0, + 6.0 // 2 + ]; + + gfillEqual( 3, 0.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 6.0 // 2 + ]; + expected = [ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 4.0, + 6.0 // 2 + ]; + + gfillEqual( 3, 0.0, 5.0, toAccessorArray( x ), 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/README.md b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/README.md new file mode 100644 index 000000000000..dc07e89b8ff6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/README.md @@ -0,0 +1,164 @@ + + +# gfillLessThan + +> Replace strided array elements less than a provided search element with a specified scalar constant. + +
+ +## Usage + +```javascript +var gfillLessThan = require( '@stdlib/blas/ext/base/gfill-less-than' ); +``` + +#### gfillLessThan( N, searchElement, alpha, x, strideX ) + +Replaces strided array elements less than a provided search element with a specified scalar constant. + +```javascript +var x = [ 0.0, 0.0, 1.0, 0.0 ]; + +gfillLessThan( x.length, 0.5, 5.0, x, 1 ); +// x => [ 5.0, 5.0, 1.0, 5.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **alpha**: scalar constant. +- **x**: input array. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var x = [ 0.0, 0.0, 1.0, 0.0 ]; + +gfillLessThan( 2, 0.5, 5.0, x, 2 ); +// x => [ 5.0, 0.0, 1.0, 0.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array: +var x0 = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ] ); + +// Create an offset view: +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +gfillLessThan( 3, 0.5, 5.0, x1, 2 ); +// x0 => [ 0.0, 5.0, 0.0, 5.0, 1.0, 5.0 ] +``` + +#### gfillLessThan.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + +Replaces strided array elements less than a provided search element with a specified scalar constant using alternative indexing semantics. + +```javascript +var x = [ 0.0, 0.0, 1.0, 0.0 ]; + +gfillLessThan.ndarray( x.length, 0.5, 5.0, x, 1, 0 ); +// x => [ 5.0, 5.0, 1.0, 5.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var x = [ 0.0, 0.0, 1.0, 0.0 ]; + +gfillLessThan.ndarray( 3, 0.5, 5.0, x, 1, x.length-3 ); +// x => [ 0.0, 5.0, 1.0, 5.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. +- When comparing elements, both functions use the less-than operator `<`. As a consequence, `NaN` values are never less than any value, and `-0` and `+0` are considered equal. To replace `NaN` values, use [`@stdlib/blas/ext/base/gfill-nan`][@stdlib/blas/ext/base/gfill-nan]. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfillLessThan = require( '@stdlib/blas/ext/base/gfill-less-than' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +gfillLessThan( x.length, 0.0, 5.0, x, 1 ); +console.log( x ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/benchmark/benchmark.js new file mode 100644 index 000000000000..9c998dd4f0a8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/benchmark/benchmark.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfillLessThan = require( './../lib/main.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, 0.0, 100.0, options ); + gfill( x.length, -1.0, x, 3 ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gfillLessThan( x.length, i, i+1, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..b95fec25f3eb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/benchmark/benchmark.ndarray.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var gfill = require( '@stdlib/blas/ext/base/gfill' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfillLessThan = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, 0.0, 100.0, options ); + gfill( x.length, -1.0, x, 3 ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gfillLessThan( x.length, i, i+1, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/docs/repl.txt new file mode 100644 index 000000000000..ad07cdc1a8ab --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/docs/repl.txt @@ -0,0 +1,103 @@ + +{{alias}}( N, searchElement, alpha, x, strideX ) + Replaces strided array elements less than a provided search element with a + specified scalar constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + alpha: any + Scalar constant. + + x: ArrayLikeObject + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: ArrayLikeObject + Input array. + + Examples + -------- + // Standard Usage: + > var x = [ 0.0, 0.0, 1.0, 0.0 ]; + > {{alias}}( x.length, 0.5, 5.0, x, 1 ) + [ 5.0, 5.0, 1.0, 5.0 ] + + // Using `N` and stride parameters: + > x = [ 0.0, 0.0, 1.0, 0.0 ]; + > {{alias}}( 2, 0.5, 5.0, x, 2 ) + [ 5.0, 0.0, 1.0, 0.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 3, 0.5, 5.0, x1, 2 ) + [ 5.0, 0.0, 5.0, 1.0, 5.0 ] + > x0 + [ 0.0, 5.0, 0.0, 5.0, 1.0, 5.0 ] + + +{{alias}}.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + Replaces strided array elements less than a provided search element with a + specified scalar constant using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + alpha: any + Scalar constant. + + x: ArrayLikeObject + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: ArrayLikeObject + Input array. + + Examples + -------- + // Standard Usage: + > var x = [ 0.0, 0.0, 1.0, 0.0 ]; + > {{alias}}.ndarray( x.length, 0.5, 5.0, x, 1, 0 ) + [ 5.0, 5.0, 1.0, 5.0 ] + + // Using an index offset: + > x = [ 0.0, 0.0, 1.0, 0.0 ]; + > {{alias}}.ndarray( 2, 0.5, 5.0, x, 2, 1 ) + [ 0.0, 5.0, 1.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/docs/types/index.d.ts new file mode 100644 index 000000000000..804ea96fa3c5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/docs/types/index.d.ts @@ -0,0 +1,99 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gfillLessThan`. +*/ +interface Routine { + /** + * Replaces strided array elements less than a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var x = [ 0.0, 0.0, 1.0, 0.0 ]; + * + * gfillLessThan( x.length, 0.5, 5.0, x, 1 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + */ + = InputArray>( N: number, searchElement: T, alpha: U, x: V, strideX: number ): V; + + /** + * Replaces strided array elements less than a provided search element with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var x = [ 0.0, 0.0, 1.0, 0.0 ]; + * + * gfillLessThan.ndarray( x.length, 0.5, 5.0, x, 1, 0 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + */ + ndarray = InputArray>( N: number, searchElement: T, alpha: U, x: V, strideX: number, offsetX: number ): V; +} + +/** +* Replaces strided array elements less than a provided search element with a specified scalar constant. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillLessThan( x.length, 0.5, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +* +* @example +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillLessThan.ndarray( x.length, 0.5, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +declare var gfillLessThan: Routine; + + +// EXPORTS // + +export = gfillLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/docs/types/test.ts new file mode 100644 index 000000000000..b9e99611912f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/docs/types/test.ts @@ -0,0 +1,158 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gfillLessThan = require( './index' ); + + +// TESTS // + +// The function returns a collection... +{ + const x = new Float64Array( 10 ); + + gfillLessThan( x.length, 0.0, 5.0, x, 1 ); // $ExpectType Float64Array + gfillLessThan( x.length, 0.0, 5.0, new AccessorArray( x ), 1 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillLessThan( '10', 0.0, 5.0, x, 1 ); // $ExpectError + gfillLessThan( true, 0.0, 5.0, x, 1 ); // $ExpectError + gfillLessThan( false, 0.0, 5.0, x, 1 ); // $ExpectError + gfillLessThan( null, 0.0, 5.0, x, 1 ); // $ExpectError + gfillLessThan( undefined, 0.0, 5.0, x, 1 ); // $ExpectError + gfillLessThan( [], 0.0, 5.0, x, 1 ); // $ExpectError + gfillLessThan( {}, 0.0, 5.0, x, 1 ); // $ExpectError + gfillLessThan( ( x: number ): number => x, 0.0, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a collection... +{ + const x = new Float64Array( 10 ); + + gfillLessThan( x.length, 0.0, 5.0, 10, 1 ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, true, 1 ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, false, 1 ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, null, 1 ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, undefined, 1 ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillLessThan( x.length, 0.0, 5.0, x, '10' ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, x, true ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, x, false ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, x, null ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, x, undefined ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, x, [] ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, x, {} ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + gfillLessThan(); // $ExpectError + gfillLessThan( x.length ); // $ExpectError + gfillLessThan( x.length, 0.0 ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0 ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, x ); // $ExpectError + gfillLessThan( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a collection... +{ + const x = new Float64Array( 10 ); + + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); // $ExpectType Float64Array + gfillLessThan.ndarray( x.length, 0.0, 5.0, new AccessorArray( x ), 1, 0 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillLessThan.ndarray( '10', 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( true, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( false, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( null, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( undefined, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( [], 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( {}, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( ( x: number ): number => x, 0.0, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a collection... +{ + const x = new Float64Array( 10 ); + + gfillLessThan.ndarray( x.length, 0.0, 5.0, 10, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, true, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, false, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, null, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, undefined, 1, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, '10', 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, true, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, false, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, null, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, undefined, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, [], 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, {}, 0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, '10' ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, true ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, false ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, null ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, undefined ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, [] ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + gfillLessThan.ndarray(); // $ExpectError + gfillLessThan.ndarray( x.length ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1 ); // $ExpectError + gfillLessThan.ndarray( x.length, 0.0, 5.0, x, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/examples/index.js new file mode 100644 index 000000000000..31992a0ff7f8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfillLessThan = require( './../lib' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +gfillLessThan( x.length, 0.0, 5.0, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/accessors.js new file mode 100644 index 000000000000..a41b506dcc1e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/accessors.js @@ -0,0 +1,73 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Replaces strided array elements less than a provided search element with a specified scalar constant. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {*} alpha - scalar constant +* @param {Object} x - input array object +* @param {Collection} x.data - input array data +* @param {Array} x.accessors - array element accessors +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Object} input array object +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillLessThan( x.length, 0.5, 5.0, arraylike2object( toAccessorArray( x ) ), 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function gfillLessThan( N, searchElement, alpha, x, strideX, offsetX ) { + var xbuf; + var get; + var set; + var ix; + var i; + + // Cache reference to array data: + xbuf = x.data; + + // Cache references to the element accessors: + get = x.accessors[ 0 ]; + set = x.accessors[ 1 ]; + + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( get( xbuf, ix ) < searchElement ) { + set( xbuf, ix, alpha ); + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = gfillLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/index.js new file mode 100644 index 000000000000..f6e77feef919 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace strided array elements less than a provided search element with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/gfill-less-than +* +* @example +* var gfillLessThan = require( '@stdlib/blas/ext/base/gfill-less-than' ); +* +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillLessThan( x.length, 0.5, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +* +* @example +* var gfillLessThan = require( '@stdlib/blas/ext/base/gfill-less-than' ); +* +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillLessThan.ndarray( x.length, 0.5, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/main.js new file mode 100644 index 000000000000..9e06ee3d63a1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/main.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Replaces strided array elements less than a provided search element with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {*} alpha - scalar constant +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @returns {Collection} input array +* +* @example +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillLessThan( x.length, 0.5, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function gfillLessThan( N, searchElement, alpha, x, strideX ) { + return ndarray( N, searchElement, alpha, x, strideX, stride2offset( N, strideX ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gfillLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/ndarray.js new file mode 100644 index 000000000000..dacb25b1d166 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/lib/ndarray.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Replaces strided array elements less than a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {*} alpha - scalar constant +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Collection} input array +* +* @example +* var x = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* gfillLessThan( x.length, 0.5, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function gfillLessThan( N, searchElement, alpha, x, strideX, offsetX ) { + var ix; + var o; + var i; + + if ( N <= 0 ) { + return x; + } + o = arraylike2object( x ); + if ( o.accessorProtocol ) { + accessors( N, searchElement, alpha, o, strideX, offsetX ); + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] < searchElement ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = gfillLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/package.json b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/package.json new file mode 100644 index 000000000000..3b659df5dc0b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/package.json @@ -0,0 +1,68 @@ +{ + "name": "@stdlib/blas/ext/base/gfill-less-than", + "version": "0.0.0", + "description": "Replace strided array elements less than a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "less-than", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/test/test.js new file mode 100644 index 000000000000..cfa46997fed4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gfillLessThan = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gfillLessThan.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/test/test.main.js new file mode 100644 index 000000000000..a39a6237aeba --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/test/test.main.js @@ -0,0 +1,379 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfillLessThan = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gfillLessThan.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements less than a provided search element', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, + 5.0, + 5.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0 + ]; + + gfillLessThan( x.length, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 5.0, 5.0 ]; + + gfillLessThan( x.length, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces strided array elements less than a provided search element (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, + 5.0, + 5.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0 + ]; + + gfillLessThan( x.length, 4.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 5.0, 5.0 ]; + + gfillLessThan( x.length, 4.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if no elements are less than a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 1.0, 2.0, 3.0 ]; + expected = [ 1.0, 2.0, 3.0 ]; + + gfillLessThan( x.length, 1.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if no elements are less than a provided search element, the function returns `x` unchanged (accessors)', function test( t ) { + var expected; + var x; + + x = [ 1.0, 2.0, 3.0 ]; + expected = [ 1.0, 2.0, 3.0 ]; + + gfillLessThan( x.length, 1.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function returns `x` unchanged', function test( t ) { + var x = [ NaN, 1.0, NaN ]; + + gfillLessThan( x.length, NaN, 5.0, x, 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], 1.0, 'returns expected value' ); + t.ok( isnan( x[ 2 ] ), 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function returns `x` unchanged (accessors)', function test( t ) { + var x = [ NaN, 1.0, NaN ]; + + gfillLessThan( x.length, NaN, 5.0, toAccessorArray( x ), 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], 1.0, 'returns expected value' ); + t.ok( isnan( x[ 2 ] ), 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 1.0, 0.0, -0.0 ]; + + gfillLessThan( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 1.0, 0.0, -0.0 ]; + + gfillLessThan( x.length, -0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value (accessors)', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 1.0, 0.0, -0.0 ]; + + gfillLessThan( x.length, 0.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 1.0, 0.0, -0.0 ]; + + gfillLessThan( x.length, -0.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = [ 1.0, 0.0, 3.0, 0.0, 5.0 ]; + out = gfillLessThan( x.length, 4.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'the function returns a reference to the input array (accessors)', function test( t ) { + var out; + var x; + + x = toAccessorArray( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = gfillLessThan( x.length, 4.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 0.0, -4.0, 1.0 ]; + expected = [ 0.0, -4.0, 1.0 ]; + + gfillLessThan( 0, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, -4.0, 1.0 ]; + gfillLessThan( -4, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]; + expected = [ + 5.0, // 0 + -3.0, + 5.0, // 1 + 7.0, + 5.0 // 2 + ]; + + gfillLessThan( 3, 4.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + 2.0, + -3.0, + 4.0, + 0.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, // 0 + 2.0, + -3.0, + 4.0, + 5.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + + gfillLessThan( 2, 4.0, 5.0, toAccessorArray( x ), 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]; + expected = [ + 5.0, // 2 + -3.0, + 5.0, // 1 + 7.0, + 5.0 // 0 + ]; + + gfillLessThan( 3, 4.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 1 + 2.0, + -3.0, + 4.0, + 0.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, // 1 + 2.0, + -3.0, + 4.0, + 5.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + + gfillLessThan( 2, 4.0, 5.0, toAccessorArray( x ), -4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 4.0, + 6.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + gfillLessThan( 3, 4.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/test/test.ndarray.js new file mode 100644 index 000000000000..e8bccc5515c4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-less-than/test/test.ndarray.js @@ -0,0 +1,401 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfillLessThan = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( gfillLessThan.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements less than a provided search element', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, + 5.0, + 5.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0 + ]; + + gfillLessThan( x.length, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 5.0, 5.0 ]; + + gfillLessThan( x.length, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces strided array elements less than a provided search element (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, + 5.0, + 5.0, + 4.0, + 5.0, + 5.0, + 5.0, + 6.0 + ]; + + gfillLessThan( x.length, 4.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 5.0, 5.0 ]; + + gfillLessThan( x.length, 4.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if no elements are less than a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 1.0, 2.0, 3.0 ]; + expected = [ 1.0, 2.0, 3.0 ]; + + gfillLessThan( x.length, 1.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if no elements are less than a provided search element, the function returns `x` unchanged (accessors)', function test( t ) { + var expected; + var x; + + x = [ 1.0, 2.0, 3.0 ]; + expected = [ 1.0, 2.0, 3.0 ]; + + gfillLessThan( x.length, 1.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function returns `x` unchanged', function test( t ) { + var x = [ NaN, 1.0, NaN ]; + + gfillLessThan( x.length, NaN, 5.0, x, 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], 1.0, 'returns expected value' ); + t.ok( isnan( x[ 2 ] ), 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function returns `x` unchanged (accessors)', function test( t ) { + var x = [ NaN, 1.0, NaN ]; + + gfillLessThan( x.length, NaN, 5.0, toAccessorArray( x ), 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], 1.0, 'returns expected value' ); + t.ok( isnan( x[ 2 ] ), 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 1.0, 0.0, -0.0 ]; + + gfillLessThan( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 1.0, 0.0, -0.0 ]; + + gfillLessThan( x.length, -0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value (accessors)', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 1.0, 0.0, -0.0 ]; + + gfillLessThan( x.length, 0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 1.0, 0.0, -0.0 ]; + + gfillLessThan( x.length, -0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = [ 1.0, 0.0, 3.0, 0.0, 5.0 ]; + out = gfillLessThan( x.length, 4.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'the function returns a reference to the input array (accessors)', function test( t ) { + var out; + var x; + + x = toAccessorArray( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = gfillLessThan( x.length, 4.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 0.0, -4.0, 1.0 ]; + expected = [ 0.0, -4.0, 1.0 ]; + + gfillLessThan( 0, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, -4.0, 1.0 ]; + gfillLessThan( -4, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]; + expected = [ + 5.0, // 0 + -3.0, + 5.0, // 1 + 7.0, + 5.0 // 2 + ]; + + gfillLessThan( 3, 4.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + 2.0, + -3.0, + 4.0, + 0.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, // 0 + 2.0, + -3.0, + 4.0, + 5.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + + gfillLessThan( 2, 4.0, 5.0, toAccessorArray( x ), 4, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]; + expected = [ + 5.0, // 2 + -3.0, + 5.0, // 1 + 7.0, + 5.0 // 0 + ]; + + gfillLessThan( 3, 4.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 1 + 2.0, + -3.0, + 4.0, + 0.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 5.0, // 1 + 2.0, + -3.0, + 4.0, + 5.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + + gfillLessThan( 2, 4.0, 5.0, toAccessorArray( x ), -4, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = [ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 6.0 // 2 + ]; + expected = [ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 4.0, + 6.0 // 2 + ]; + + gfillLessThan( 3, 4.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 6.0 // 2 + ]; + expected = [ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 4.0, + 6.0 // 2 + ]; + + gfillLessThan( 3, 4.0, 5.0, toAccessorArray( x ), 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/README.md b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/README.md new file mode 100644 index 000000000000..d75078a511b6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/README.md @@ -0,0 +1,158 @@ + + +# gfillNaN + +> Replace strided array elements equal to `NaN` with a specified scalar constant. + +
+ +## Usage + +```javascript +var gfillNaN = require( '@stdlib/blas/ext/base/gfill-nan' ); +``` + +#### gfillNaN( N, alpha, x, strideX ) + +Replaces strided array elements equal to `NaN` with a specified scalar constant. + +```javascript +var x = [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ]; + +gfillNaN( x.length, 0.0, x, 1 ); +// x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **alpha**: scalar constant. +- **x**: input array. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var x = [ NaN, 1.0, NaN, -5.0, NaN, 0.0, -1.0, -3.0 ]; + +gfillNaN( 4, 0.0, x, 2 ); +// x => [ 0.0, 1.0, 0.0, -5.0, 0.0, 0.0, -1.0, -3.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array: +var x0 = new Float64Array( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + +// Create an offset view: +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +gfillNaN( 3, 0.0, x1, 2 ); +// x0 => [ 1.0, 0.0, 3.0, 0.0, 5.0, -6.0 ] +``` + +#### gfillNaN.ndarray( N, alpha, x, strideX, offsetX ) + +Replaces strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. + +```javascript +var x = [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ]; + +gfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); +// x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var x = [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ]; + +gfillNaN.ndarray( 3, 0.0, x, 1, x.length-3 ); +// x => [ 1.0, NaN, 3.0, 0.0, 5.0, -6.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + +
+ +## Examples + + + +```javascript +var nans = require( '@stdlib/array/nans' ); +var gfillNaN = require( '@stdlib/blas/ext/base/gfill-nan' ); + +var x = nans( 10 ); +console.log( x ); + +gfillNaN( x.length, 0.0, x, 1 ); +console.log( x ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/benchmark/benchmark.js new file mode 100644 index 000000000000..0bdef7edd7d5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfillNaN = require( './../lib/main.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gfillNaN( x.length, 0.0, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..7b08b9301892 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/benchmark/benchmark.ndarray.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfillNaN = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gfillNaN( x.length, 0.0, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/docs/repl.txt new file mode 100644 index 000000000000..72f5446a9ea0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/docs/repl.txt @@ -0,0 +1,97 @@ + +{{alias}}( N, alpha, x, strideX ) + Replaces strided array elements equal to `NaN` with a specified scalar + constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: any + Scalar constant. + + x: ArrayLikeObject + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: ArrayLikeObject + Input array. + + Examples + -------- + // Standard Usage: + > var x = [ NaN, 1.0, 3.0, NaN, 4.0, -1.0, -3.0 ]; + > {{alias}}( x.length, 0.0, x, 1 ) + [ 0.0, 1.0, 3.0, 0.0, 4.0, -1.0, -3.0 ] + + // Using `N` and stride parameters: + > x = [ NaN, 1.0, NaN, -5.0, NaN, -1.0, -3.0 ]; + > {{alias}}( 4, 0.0, x, 2 ) + [ 0.0, 1.0, 0.0, -5.0, 0.0, -1.0, -3.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 2, 0.0, x1, 2 ) + [ 0.0, 3.0, 0.0, 5.0, -6.0 ] + > x0 + [ 1.0, 0.0, 3.0, 0.0, 5.0, -6.0 ] + + +{{alias}}.ndarray( N, alpha, x, strideX, offsetX ) + Replaces strided array elements equal to `NaN` with a specified scalar + constant using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: any + Scalar constant. + + x: ArrayLikeObject + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: ArrayLikeObject + Input array. + + Examples + -------- + // Standard Usage: + > var x = [ NaN, 1.0, 3.0, NaN, 4.0, -1.0, -3.0 ]; + > {{alias}}.ndarray( x.length, 0.0, x, 1, 0 ) + [ 0.0, 1.0, 3.0, 0.0, 4.0, -1.0, -3.0 ] + + // Using an index offset: + > x = [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ]; + > {{alias}}.ndarray( 3, 0.0, x, 2, 1 ) + [ 1.0, 0.0, 3.0, 0.0, 5.0, -6.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/docs/types/index.d.ts new file mode 100644 index 000000000000..74bb0cb060c6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/docs/types/index.d.ts @@ -0,0 +1,96 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gfillNaN`. +*/ +interface Routine { + /** + * Replaces strided array elements equal to `NaN` with a specified scalar constant. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var x = [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ]; + * + * gfillNaN( x.length, 0.0, x, 1 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + */ + = InputArray>( N: number, alpha: T, x: V, strideX: number ): V; + + /** + * Replaces strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var x = [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ]; + * + * gfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + */ + ndarray = InputArray>( N: number, alpha: T, x: V, strideX: number, offsetX: number ): V; +} + +/** +* Replaces strided array elements equal to `NaN` with a specified scalar constant. +* +* @param N - number of indexed elements +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var x = [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ]; +* +* gfillNaN( x.length, 0.0, x, 1 ); +* // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +* +* @example +* var x = [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ]; +* +* gfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); +* // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +*/ +declare var gfillNaN: Routine; + + +// EXPORTS // + +export = gfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/docs/types/test.ts new file mode 100644 index 000000000000..5ac16e8f4683 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/docs/types/test.ts @@ -0,0 +1,156 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gfillNaN = require( './index' ); + + +// TESTS // + +// The function returns a collection... +{ + const x = new Float64Array( 10 ); + + gfillNaN( x.length, 0.0, x, 1 ); // $ExpectType Float64Array + gfillNaN( x.length, 0.0, new AccessorArray( x ), 1 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNaN( '10', 0.0, x, 1 ); // $ExpectError + gfillNaN( true, 0.0, x, 1 ); // $ExpectError + gfillNaN( false, 0.0, x, 1 ); // $ExpectError + gfillNaN( null, 0.0, x, 1 ); // $ExpectError + gfillNaN( undefined, 0.0, x, 1 ); // $ExpectError + gfillNaN( [], 0.0, x, 1 ); // $ExpectError + gfillNaN( {}, 0.0, x, 1 ); // $ExpectError + gfillNaN( ( x: number ): number => x, 0.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a collection... +{ + const x = new Float64Array( 10 ); + + gfillNaN( x.length, 0.0, 10, 1 ); // $ExpectError + gfillNaN( x.length, 0.0, true, 1 ); // $ExpectError + gfillNaN( x.length, 0.0, false, 1 ); // $ExpectError + gfillNaN( x.length, 0.0, null, 1 ); // $ExpectError + gfillNaN( x.length, 0.0, undefined, 1 ); // $ExpectError + gfillNaN( x.length, 0.0, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNaN( x.length, 0.0, x, '10' ); // $ExpectError + gfillNaN( x.length, 0.0, x, true ); // $ExpectError + gfillNaN( x.length, 0.0, x, false ); // $ExpectError + gfillNaN( x.length, 0.0, x, null ); // $ExpectError + gfillNaN( x.length, 0.0, x, undefined ); // $ExpectError + gfillNaN( x.length, 0.0, x, [] ); // $ExpectError + gfillNaN( x.length, 0.0, x, {} ); // $ExpectError + gfillNaN( x.length, 0.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + gfillNaN(); // $ExpectError + gfillNaN( x.length ); // $ExpectError + gfillNaN( x.length, 0.0 ); // $ExpectError + gfillNaN( x.length, 0.0, x ); // $ExpectError + gfillNaN( x.length, 0.0, x, 1, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a collection... +{ + const x = new Float64Array( 10 ); + + gfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); // $ExpectType Float64Array + gfillNaN.ndarray( x.length, 0.0, new AccessorArray( x ), 1, 0 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNaN.ndarray( '10', 0.0, x, 1, 0 ); // $ExpectError + gfillNaN.ndarray( true, 0.0, x, 1, 0 ); // $ExpectError + gfillNaN.ndarray( false, 0.0, x, 1, 0 ); // $ExpectError + gfillNaN.ndarray( null, 0.0, x, 1, 0 ); // $ExpectError + gfillNaN.ndarray( undefined, 0.0, x, 1, 0 ); // $ExpectError + gfillNaN.ndarray( [], 0.0, x, 1, 0 ); // $ExpectError + gfillNaN.ndarray( {}, 0.0, x, 1, 0 ); // $ExpectError + gfillNaN.ndarray( ( x: number ): number => x, 0.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a collection... +{ + const x = new Float64Array( 10 ); + + gfillNaN.ndarray( x.length, 0.0, 10, 1, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, true, 1, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, false, 1, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, null, 1, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, undefined, 1, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNaN.ndarray( x.length, 0.0, x, '10', 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, true, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, false, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, null, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, undefined, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, [], 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, {}, 0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNaN.ndarray( x.length, 0.0, x, 1, '10' ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, 1, true ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, 1, false ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, 1, null ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, 1, undefined ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, 1, [] ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, 1, {} ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + gfillNaN.ndarray(); // $ExpectError + gfillNaN.ndarray( x.length ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, 1 ); // $ExpectError + gfillNaN.ndarray( x.length, 0.0, x, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/examples/index.js new file mode 100644 index 000000000000..6b1653475ba6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/examples/index.js @@ -0,0 +1,28 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var nans = require( '@stdlib/array/nans' ); +var gfillNaN = require( './../lib' ); + +var x = nans( 10 ); +console.log( x ); + +gfillNaN( x.length, 0.0, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/accessors.js new file mode 100644 index 000000000000..6151dcbb4846 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/accessors.js @@ -0,0 +1,79 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isnan = require( '@stdlib/math/base/assert/is-nan' ); + + +// MAIN // + +/** +* Replaces strided array elements equal to `NaN` with a specified scalar constant. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {*} alpha - scalar constant +* @param {Object} x - input array object +* @param {Collection} x.data - input array data +* @param {Array} x.accessors - array element accessors +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Object} input array object +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ]; +* +* gfillNaN( x.length, 0.0, arraylike2object( toAccessorArray( x ) ), 1, 0 ); +* // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +*/ +function gfillNaN( N, alpha, x, strideX, offsetX ) { + var xbuf; + var get; + var set; + var ix; + var i; + var v; + + // Cache reference to array data: + xbuf = x.data; + + // Cache references to the element accessors: + get = x.accessors[ 0 ]; + set = x.accessors[ 1 ]; + + ix = offsetX; + for ( i = 0; i < N; i++ ) { + v = get( xbuf, ix ); + if ( isnan( v ) ) { + set( xbuf, ix, alpha ); + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = gfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/index.js new file mode 100644 index 000000000000..9d232d20da65 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace strided array elements equal to `NaN` with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/gfill-nan +* +* @example +* var gfillNaN = require( '@stdlib/blas/ext/base/gfill-nan' ); +* +* var x = [ NaN, NaN, 1.0, NaN ]; +* +* gfillNaN( x.length, 0.0, x, 1 ); +* // x => [ 0.0, 0.0, 1.0, 0.0 ] +* +* @example +* var gfillNaN = require( '@stdlib/blas/ext/base/gfill-nan' ); +* +* var x = [ NaN, NaN, 1.0, NaN ]; +* +* gfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); +* // x => [ 0.0, 0.0, 1.0, 0.0 ] +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/main.js new file mode 100644 index 000000000000..2fc31ba152cb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/main.js @@ -0,0 +1,51 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Replaces strided array elements equal to `NaN` with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} alpha - scalar constant +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @returns {Collection} input array +* +* @example +* var x = [ NaN, NaN, 1.0, NaN ]; +* +* gfillNaN( x.length, 0.0, x, 1 ); +* // x => [ 0.0, 0.0, 1.0, 0.0 ] +*/ +function gfillNaN( N, alpha, x, strideX ) { + return ndarray( N, alpha, x, strideX, stride2offset( N, strideX ) ); +} + + +// EXPORTS // + +module.exports = gfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/ndarray.js new file mode 100644 index 000000000000..8ac52887d65f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/lib/ndarray.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Replaces strided array elements equal to `NaN` with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} alpha - scalar constant +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Collection} input array +* +* @example +* var x = [ NaN, -2.0, 3.0, NaN, 5.0, -6.0 ]; +* +* gfillNaN( 6, 0.0, x, 1, 0 ); +* // x => [ 0.0, -2.0, 3.0, 0.0, 5.0, -6.0 ] +*/ +function gfillNaN( N, alpha, x, strideX, offsetX ) { + var ix; + var o; + var i; + + if ( N <= 0 ) { + return x; + } + o = arraylike2object( x ); + if ( o.accessorProtocol ) { + accessors( N, alpha, o, strideX, offsetX ); + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( isnan( x[ ix ] ) ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = gfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/package.json b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/package.json new file mode 100644 index 000000000000..4b82c89a1ac0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/blas/ext/base/gfill-nan", + "version": "0.0.0", + "description": "Replace strided array elements equal to NaN with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "nan", + "not-a-number", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/test/test.js new file mode 100644 index 000000000000..496b0b764a7f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gfillNaN = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gfillNaN.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/test/test.main.js new file mode 100644 index 000000000000..addf10f3af8c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/test/test.main.js @@ -0,0 +1,278 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfillNaN = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( gfillNaN.length, 4, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', function test( t ) { + var expected; + var x; + + x = [ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]; + expected = [ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + + gfillNaN( x.length, 0.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ NaN, 2.0 ]; + expected = [ 5.0, 2.0 ]; + + gfillNaN( x.length, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array (accessors)', function test( t ) { + var expected; + var x; + + x = [ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]; + expected = [ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + + gfillNaN( x.length, 0.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = [ 1.0, NaN, 3.0, NaN, 5.0 ]; + out = gfillNaN( x.length, 0.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var x; + + x = [ NaN, -4.0, 1.0 ]; + + gfillNaN( 0, 0.0, x, 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = [ NaN, -4.0, 1.0 ]; + gfillNaN( -4, 0.0, x, 1 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = [ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]; + expected = [ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]; + + gfillNaN( 3, 0.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + NaN, // 0 + 2.0, + -3.0, + 5.0, + NaN, // 1 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 0.0, // 0 + 2.0, + -3.0, + 5.0, + 0.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + + gfillNaN( 2, 0.0, toAccessorArray( x ), 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = [ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]; + expected = [ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]; + + gfillNaN( 3, 0.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + NaN, // 1 + 2.0, + -3.0, + 5.0, + NaN, // 0 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 0.0, // 1 + 2.0, + -3.0, + 5.0, + 0.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + + gfillNaN( 2, 0.0, toAccessorArray( x ), -4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float64Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + gfillNaN( 3, 0.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/test/test.ndarray.js new file mode 100644 index 000000000000..197b6e28d00e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-nan/test/test.ndarray.js @@ -0,0 +1,300 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfillNaN = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gfillNaN.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', function test( t ) { + var expected; + var x; + + x = [ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]; + expected = [ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + + gfillNaN( x.length, 0.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ NaN, 2.0 ]; + expected = [ 5.0, 2.0 ]; + + gfillNaN( x.length, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array (accessors)', function test( t ) { + var expected; + var x; + + x = [ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]; + expected = [ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + + gfillNaN( x.length, 0.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = [ 1.0, NaN, 3.0, NaN, 5.0 ]; + out = gfillNaN( x.length, 0.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var x; + + x = [ NaN, -4.0, 1.0 ]; + + gfillNaN( 0, 0.0, x, 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = [ NaN, -4.0, 1.0 ]; + gfillNaN( -4, 0.0, x, 1, 0 ); + t.ok( isnan( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = [ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]; + expected = [ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]; + + gfillNaN( 3, 0.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + NaN, // 0 + 2.0, + -3.0, + 5.0, + NaN, // 1 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 0.0, // 0 + 2.0, + -3.0, + 5.0, + 0.0, // 1 + 2.0, + -5.0, + 6.0 + ]; + + gfillNaN( 2, 0.0, toAccessorArray( x ), 4, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = [ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]; + expected = [ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]; + + gfillNaN( 3, 0.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + NaN, // 1 + 2.0, + -3.0, + 5.0, + NaN, // 0 + 2.0, + -5.0, + 6.0 + ]; + expected = [ + 0.0, // 1 + 2.0, + -3.0, + 5.0, + 0.0, // 0 + 2.0, + -5.0, + 6.0 + ]; + + gfillNaN( 2, 0.0, toAccessorArray( x ), -4, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = [ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]; + expected = [ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]; + + gfillNaN( 3, 0.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]; + expected = [ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]; + + gfillNaN( 3, 0.0, toAccessorArray( x ), 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/README.md new file mode 100644 index 000000000000..31b43dc81f6b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/README.md @@ -0,0 +1,162 @@ + + +# gfillNotEqual + +> Replace strided array elements not equal to a provided search element with a specified scalar constant. + +
+ +## Usage + +```javascript +var gfillNotEqual = require( '@stdlib/blas/ext/base/gfill-not-equal' ); +``` + +#### gfillNotEqual( N, searchElement, alpha, x, strideX ) + +Replaces strided array elements not equal to a provided search element with a specified scalar constant. + +```javascript +var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + +gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); +// x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **alpha**: scalar constant. +- **x**: input array. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + +gfillNotEqual( 3, 0.0, 5.0, x, 2 ); +// x => [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array: +var x0 = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +// Create an offset view: +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +gfillNotEqual( 3, 0.0, 5.0, x1, 2 ); +// x0 => [ 0.0, 5.0, 3.0, 0.0, 4.0, 5.0 ] +``` + +#### gfillNotEqual.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + +Replaces strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```javascript +var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + +gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +// x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + +gfillNotEqual.ndarray( 3, 0.0, 5.0, x, 1, x.length-3 ); +// x => [ 0.0, -2.0, 3.0, 0.0, 5.0, 5.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. +- When comparing elements, both functions check for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfillNotEqual = require( '@stdlib/blas/ext/base/gfill-not-equal' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'generic' +}); +console.log( x ); + +gfillNotEqual( x.length, 1, 5, x, 1 ); +console.log( x ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..214426315e32 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfillNotEqual = require( './../lib/main.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gfillNotEqual( x.length, i, i+1, x, 1 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..8195a6c5acfb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfillNotEqual = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = gfillNotEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/docs/repl.txt new file mode 100644 index 000000000000..2b29e4de922a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/docs/repl.txt @@ -0,0 +1,103 @@ + +{{alias}}( N, searchElement, alpha, x, strideX ) + Replaces strided array elements not equal to a provided search element with + a specified scalar constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + alpha: any + Scalar constant. + + x: ArrayLikeObject + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: ArrayLikeObject + Input array. + + Examples + -------- + // Standard Usage: + > var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + > {{alias}}( x.length, 0.0, 5.0, x, 1 ) + [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + + // Using `N` and stride parameters: + > x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + > {{alias}}( 3, 0.0, 5.0, x, 2 ) + [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 3, 0.0, 5.0, x1, 2 ) + [ 5.0, 3.0, 0.0, 4.0, 5.0 ] + > x0 + [ 0.0, 5.0, 3.0, 0.0, 4.0, 5.0 ] + + +{{alias}}.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + Replaces strided array elements not equal to a provided search element with + a specified scalar constant using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + alpha: any + Scalar constant. + + x: ArrayLikeObject + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: ArrayLikeObject + Input array. + + Examples + -------- + // Standard Usage: + > var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + > {{alias}}.ndarray( x.length, 0.0, 5.0, x, 1, 0 ) + [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + + // Using an index offset: + > x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + > {{alias}}.ndarray( 3, 0.0, 5.0, x, 2, 1 ) + [ 0.0, 5.0, 3.0, 0.0, 4.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..0fe5a22f5141 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/docs/types/index.d.ts @@ -0,0 +1,99 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gfillNotEqual`. +*/ +interface Routine { + /** + * Replaces strided array elements not equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + * + * gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + = InputArray>( N: number, searchElement: T, alpha: U, x: V, strideX: number ): V; + + /** + * Replaces strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + * + * gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + ndarray = InputArray>( N: number, searchElement: T, alpha: U, x: V, strideX: number, offsetX: number ): V; +} + +/** +* Replaces strided array elements not equal to a provided search element with a specified scalar constant. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; +* +* gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +* +* @example +* var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; +* +* gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +declare var gfillNotEqual: Routine; + + +// EXPORTS // + +export = gfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..376097285cee --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/docs/types/test.ts @@ -0,0 +1,158 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gfillNotEqual = require( './index' ); + + +// TESTS // + +// The function returns a collection... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); // $ExpectType Float64Array + gfillNotEqual( x.length, 0.0, 5.0, new AccessorArray( x ), 1 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual( '10', 0.0, 5.0, x, 1 ); // $ExpectError + gfillNotEqual( true, 0.0, 5.0, x, 1 ); // $ExpectError + gfillNotEqual( false, 0.0, 5.0, x, 1 ); // $ExpectError + gfillNotEqual( null, 0.0, 5.0, x, 1 ); // $ExpectError + gfillNotEqual( undefined, 0.0, 5.0, x, 1 ); // $ExpectError + gfillNotEqual( [], 0.0, 5.0, x, 1 ); // $ExpectError + gfillNotEqual( {}, 0.0, 5.0, x, 1 ); // $ExpectError + gfillNotEqual( ( x: number ): number => x, 0.0, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a collection... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual( x.length, 0.0, 5.0, 10, 1 ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, true, 1 ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, false, 1 ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, null, 1 ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, undefined, 1 ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual( x.length, 0.0, 5.0, x, '10' ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, x, true ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, x, false ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, x, null ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, x, undefined ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, x, [] ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, x, {} ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual(); // $ExpectError + gfillNotEqual( x.length ); // $ExpectError + gfillNotEqual( x.length, 0.0 ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0 ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, x ); // $ExpectError + gfillNotEqual( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a collection... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); // $ExpectType Float64Array + gfillNotEqual.ndarray( x.length, 0.0, 5.0, new AccessorArray( x ), 1, 0 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual.ndarray( '10', 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( true, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( false, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( null, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( undefined, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( [], 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( {}, 0.0, 5.0, x, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( ( x: number ): number => x, 0.0, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a collection... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual.ndarray( x.length, 0.0, 5.0, 10, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, true, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, false, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, null, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, undefined, 1, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, '10', 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, true, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, false, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, null, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, undefined, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, [], 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, {}, 0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, '10' ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, true ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, false ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, null ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, undefined ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, [] ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + + gfillNotEqual.ndarray(); // $ExpectError + gfillNotEqual.ndarray( x.length ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1 ); // $ExpectError + gfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/examples/index.js new file mode 100644 index 000000000000..8e94b4c9960b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfillNotEqual = require( './../lib' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'generic' +}); +console.log( x ); + +gfillNotEqual( x.length, 1, 5, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/accessors.js new file mode 100644 index 000000000000..d84b5e46e96d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/accessors.js @@ -0,0 +1,73 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Replaces strided array elements not equal to a provided search element with a specified scalar constant. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {*} alpha - scalar constant +* @param {Object} x - input array object +* @param {Collection} x.data - input array data +* @param {Array} x.accessors - array element accessors +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Object} input array object +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; +* +* gfillNotEqual( 6, 0.0, 5.0, arraylike2object( toAccessorArray( x ) ), 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function gfillNotEqual( N, searchElement, alpha, x, strideX, offsetX ) { + var xbuf; + var get; + var set; + var ix; + var i; + + // Cache reference to array data: + xbuf = x.data; + + // Cache references to the element accessors: + get = x.accessors[ 0 ]; + set = x.accessors[ 1 ]; + + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( get( xbuf, ix ) !== searchElement ) { + set( xbuf, ix, alpha ); + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = gfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/index.js new file mode 100644 index 000000000000..0f54d104454b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace strided array elements not equal to a provided search element with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/gfill-not-equal +* +* @example +* var gfillNotEqual = require( '@stdlib/blas/ext/base/gfill-not-equal' ); +* +* var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; +* +* gfillNotEqual( 6, 0.0, 5.0, x, 1 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +* +* @example +* var gfillNotEqual = require( '@stdlib/blas/ext/base/gfill-not-equal' ); +* +* var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; +* +* gfillNotEqual.ndarray( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/main.js new file mode 100644 index 000000000000..cff23e157471 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/main.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Replaces strided array elements not equal to a provided search element with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {*} alpha - scalar constant +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @returns {Collection} input array +* +* @example +* var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; +* +* gfillNotEqual( 6, 0.0, 5.0, x, 1 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function gfillNotEqual( N, searchElement, alpha, x, strideX ) { + return ndarray( N, searchElement, alpha, x, strideX, stride2offset( N, strideX ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/ndarray.js new file mode 100644 index 000000000000..4ae7578ddced --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/lib/ndarray.js @@ -0,0 +1,72 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Replaces strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {*} alpha - scalar constant +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Collection} input array +* +* @example +* var x = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; +* +* gfillNotEqual( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function gfillNotEqual( N, searchElement, alpha, x, strideX, offsetX ) { + var ix; + var o; + var i; + + if ( N <= 0 ) { + return x; + } + o = arraylike2object( x ); + if ( o.accessorProtocol ) { + accessors( N, searchElement, alpha, o, strideX, offsetX ); + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] !== searchElement ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = gfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/package.json new file mode 100644 index 000000000000..c29fa94db92d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/blas/ext/base/gfill-not-equal", + "version": "0.0.0", + "description": "Replace strided array elements not equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "not equal", + "unequal", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/test/test.js new file mode 100644 index 000000000000..b649b48022be --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gfillNotEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gfillNotEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/test/test.main.js new file mode 100644 index 000000000000..8ae585edc092 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/test/test.main.js @@ -0,0 +1,405 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameArray = require( '@stdlib/assert/is-same-array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfillNotEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gfillNotEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]; + + gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 0.0, 5.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]; + + gfillNotEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 0.0, 5.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 4.0, 4.0, 4.0 ]; + expected = [ 4.0, 4.0, 4.0 ]; + + gfillNotEqual( x.length, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged (accessors)', function test( t ) { + var expected; + var x; + + x = [ 4.0, 4.0, 4.0 ]; + expected = [ 4.0, 4.0, 4.0 ]; + + gfillNotEqual( x.length, 4.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', function test( t ) { + var expected; + var x; + + x = [ NaN, 1.0, NaN ]; + expected = [ 5.0, 5.0, 5.0 ]; + + gfillNotEqual( x.length, NaN, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements (accessors)', function test( t ) { + var expected; + var x; + + x = [ NaN, 1.0, NaN ]; + expected = [ 5.0, 5.0, 5.0 ]; + + gfillNotEqual( x.length, NaN, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', function test( t ) { + var expected; + var x; + + x = [ NaN, 0.0, NaN ]; + expected = [ 5.0, 0.0, 5.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements (accessors)', function test( t ) { + var expected; + var x; + + x = [ NaN, 0.0, NaN ]; + expected = [ 5.0, 0.0, 5.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.strictEqual( isSameArray( x, expected ), true, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + + gfillNotEqual( x.length, -0.0, 5.0, x, 1 ); + t.strictEqual( isSameArray( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value (accessors)', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1 ); + t.strictEqual( isSameArray( x, expected ), true, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + + gfillNotEqual( x.length, -0.0, 5.0, toAccessorArray( x ), 1 ); + t.strictEqual( isSameArray( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = [ 1.0, 0.0, 3.0, 0.0, 5.0 ]; + out = gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'the function returns a reference to the input array (accessors)', function test( t ) { + var out; + var x; + + x = toAccessorArray( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = gfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 0.0, -4.0, 1.0 ]; + expected = [ 0.0, -4.0, 1.0 ]; + + gfillNotEqual( 0, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, -4.0, 1.0 ]; + gfillNotEqual( -4, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]; + expected = [ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]; + + gfillNotEqual( 3, 0.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]; + expected = [ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]; + + gfillNotEqual( 3, 0.0, 5.0, toAccessorArray( x ), 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]; + expected = [ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]; + + gfillNotEqual( 3, 0.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]; + expected = [ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]; + + gfillNotEqual( 3, 0.0, 5.0, toAccessorArray( x ), -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float64Array([ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]); + expected = new Float64Array([ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + gfillNotEqual( 3, 0.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/test/test.ndarray.js new file mode 100644 index 000000000000..222088d8e0e0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfill-not-equal/test/test.ndarray.js @@ -0,0 +1,427 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameArray = require( '@stdlib/assert/is-same-array' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfillNotEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( gfillNotEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]; + + gfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 0.0, 5.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]; + expected = [ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]; + + gfillNotEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, 2.0 ]; + expected = [ 0.0, 5.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 4.0, 4.0, 4.0 ]; + expected = [ 4.0, 4.0, 4.0 ]; + + gfillNotEqual( x.length, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged (accessors)', function test( t ) { + var expected; + var x; + + x = [ 4.0, 4.0, 4.0 ]; + expected = [ 4.0, 4.0, 4.0 ]; + + gfillNotEqual( x.length, 4.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', function test( t ) { + var expected; + var x; + + x = [ NaN, 1.0, NaN ]; + expected = [ 5.0, 5.0, 5.0 ]; + + gfillNotEqual( x.length, NaN, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements (accessors)', function test( t ) { + var expected; + var x; + + x = [ NaN, 1.0, NaN ]; + expected = [ 5.0, 5.0, 5.0 ]; + + gfillNotEqual( x.length, NaN, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', function test( t ) { + var expected; + var x; + + x = [ NaN, 0.0, NaN ]; + expected = [ 5.0, 0.0, 5.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements (accessors)', function test( t ) { + var expected; + var x; + + x = [ NaN, 0.0, NaN ]; + expected = [ 5.0, 0.0, 5.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameArray( x, expected ), true, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + + gfillNotEqual( x.length, -0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameArray( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value (accessors)', function test( t ) { + var expected; + var x; + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + + gfillNotEqual( x.length, 0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.strictEqual( isSameArray( x, expected ), true, 'returns expected value' ); + + x = [ -0.0, 1.0, 0.0, -0.0 ]; + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + + gfillNotEqual( x.length, -0.0, 5.0, toAccessorArray( x ), 1, 0 ); + t.strictEqual( isSameArray( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = [ 1.0, 0.0, 3.0, 0.0, 5.0 ]; + out = gfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'the function returns a reference to the input array (accessors)', function test( t ) { + var out; + var x; + + x = toAccessorArray( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = gfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = [ 0.0, -4.0, 1.0 ]; + expected = [ 0.0, -4.0, 1.0 ]; + + gfillNotEqual( 0, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = [ 0.0, -4.0, 1.0 ]; + gfillNotEqual( -4, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]; + expected = [ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]; + + gfillNotEqual( 3, 0.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]; + expected = [ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]; + + gfillNotEqual( 3, 0.0, 5.0, toAccessorArray( x ), 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]; + expected = [ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]; + + gfillNotEqual( 3, 0.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]; + expected = [ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]; + + gfillNotEqual( 3, 0.0, 5.0, toAccessorArray( x ), -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]; + expected = [ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]; + + gfillNotEqual( 3, 0.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter (accessors)', function test( t ) { + var expected; + var x; + + x = [ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]; + expected = [ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]; + + gfillNotEqual( 3, 0.0, 5.0, toAccessorArray( x ), 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfind-last-index/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfind-last-index/lib/ndarray.js index 8ebf19af4e9e..ddd30561008d 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/gfind-last-index/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/gfind-last-index/lib/ndarray.js @@ -62,8 +62,7 @@ function gfindLastIndex( N, x, strideX, offsetX, clbk, thisArg ) { return idx; } // Convert the index from the reversed "view" to an index in the original "view": - idx = N - 1 - idx; - return idx; + return N - 1 - idx; } diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/README.md new file mode 100644 index 000000000000..e3e72fdbac37 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/README.md @@ -0,0 +1,201 @@ + + +# gfirstIndexEqual + +> Return the index of the first element in a strided array equal to a corresponding element in another strided array. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var gfirstIndexEqual = require( '@stdlib/blas/ext/base/gfirst-index-equal' ); +``` + +#### gfirstIndexEqual( N, x, strideX, y, strideY ) + +Returns the index of the first element in a strided array equal to a corresponding element in another strided array. + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0 ]; +var y = [ 0.0, 0.0, 3.0, 0.0 ]; + +var idx = gfirstIndexEqual( x.length, x, 1, y, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: first input array. +- **strideX**: stride length for `x`. +- **y**: second input array. +- **strideY**: stride length for `y`. + +If the function is unable to find matching elements, the function returns `-1`. + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0 ]; +var y = [ 5.0, 6.0, 7.0, 8.0 ]; + +var idx = gfirstIndexEqual( x.length, x, 1, y, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compare every other element: + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; +var y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + +var idx = gfirstIndexEqual( 3, x, 2, y, 2 ); +// returns 1 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y0 = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = gfirstIndexEqual( 2, x1, 1, y1, 1 ); +// returns 1 +``` + +#### gfirstIndexEqual.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Returns the index of the first element in a strided array equal to a corresponding element in another strided array using alternative indexing semantics. + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0 ]; +var y = [ 0.0, 0.0, 3.0, 0.0 ]; + +var idx = gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to access only the last three elements of each strided array: + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; +var y = [ 0.0, 0.0, 0.0, 4.0, 5.0, 6.0 ]; + +var idx = gfirstIndexEqual.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// returns 0 +``` + +
+ + + + + +
+ +## Notes + +- When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct, and `-0` and `+0` are considered the same. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfirstIndexEqual = require( '@stdlib/blas/ext/base/gfirst-index-equal' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = gfirstIndexEqual( x.length, x, 1, y, 1 ); +console.log( idx ); +``` + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..7bdb57c00288 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/benchmark/benchmark.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfirstIndexEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfirstIndexEqual( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..62c17322655f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfirstIndexEqual = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/docs/repl.txt new file mode 100644 index 000000000000..8af16549ed83 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/docs/repl.txt @@ -0,0 +1,111 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Returns the index of the first element in a strided array equal to a + corresponding element in another strided array. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 1.0, 2.0, 3.0, 4.0 ]; + > var y = [ 0.0, 0.0, 3.0, 0.0 ]; + > var idx = {{alias}}( x.length, x, 1, y, 1 ) + 2 + + // Using `N` and stride parameters: + > x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + > idx = {{alias}}( 3, x, 2, y, 2 ) + 1 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > var y0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + > idx = {{alias}}( 3, x1, 2, y1, 2 ) + -1 + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Returns the index of the first element in a strided array equal to a + corresponding element in another strided array using alternative indexing + semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on + starting indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 1.0, 2.0, 3.0, 4.0 ]; + > var y = [ 0.0, 0.0, 3.0, 0.0 ]; + > var idx = {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + 2 + + // Using offsets: + > x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + > idx = {{alias}}.ndarray( 3, x, 2, 1, y, 2, 2 ) + -1 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..39894631667c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/docs/types/index.d.ts @@ -0,0 +1,116 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gfirstIndexEqual`. +*/ +interface Routine { + /** + * Returns the index of the first element in a strided array equal to a corresponding element in another strided array. + * + * ## Notes + * + * - If the function is unable to find matching elements, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 0.0, 0.0, 3.0, 0.0 ]; + * + * var idx = gfirstIndexEqual( x.length, x, 1, y, 1 ); + * // returns 2 + */ + ( N: number, x: InputArray, strideX: number, y: InputArray, strideY: number ): number; + + /** + * Returns the index of the first element in a strided array equal to a corresponding element in another strided array using alternative indexing semantics. + * + * ## Notes + * + * - If the function is unable to find matching elements, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param offsetY - starting index for `y` + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 0.0, 0.0, 3.0, 0.0 ]; + * + * var idx = gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, x: InputArray, strideX: number, offsetX: number, y: InputArray, strideY: number, offsetY: number ): number; +} + +/** +* Returns the index of the first element in a strided array equal to a corresponding element in another strided array. +* +* ## Notes +* +* - If the function is unable to find matching elements, the function returns `-1`. +* +* @param N - number of indexed elements +* @param x - first input array +* @param strideX - stride length for `x` +* @param y - second input array +* @param strideY - stride length for `y` +* @returns index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 0.0, 0.0, 3.0, 0.0 ]; +* +* var idx = gfirstIndexEqual( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 0.0, 0.0, 3.0, 0.0 ]; +* +* var idx = gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +declare var gfirstIndexEqual: Routine; + + +// EXPORTS // + +export = gfirstIndexEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/docs/types/test.ts new file mode 100644 index 000000000000..cb544495117f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/docs/types/test.ts @@ -0,0 +1,237 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gfirstIndexEqual = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual( x.length, x, 1, y, 1 ); // $ExpectType number + gfirstIndexEqual( x.length, new AccessorArray( x ), 1, new AccessorArray( y ), 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual( '1', x, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( true, x, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( false, x, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( null, x, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( undefined, x, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( [], x, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( {}, x, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a collection... +{ + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual( 3, 10, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( 3, true, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( 3, false, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( 3, null, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( 3, undefined, 1, y, 1 ); // $ExpectError + gfirstIndexEqual( 3, {}, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual( x.length, x, '1', y, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, true, y, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, false, y, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, null, y, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, undefined, y, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, [], y, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, {}, y, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a collection... +{ + const x = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual( x.length, x, 1, 10, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, true, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, false, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, null, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, undefined, 1 ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual( x.length, x, 1, y, '1' ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, y, true ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, y, false ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, y, null ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, y, undefined ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, y, [] ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, y, {} ); // $ExpectError + gfirstIndexEqual( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual(); // $ExpectError + gfirstIndexEqual( 3 ); // $ExpectError + gfirstIndexEqual( 3, x ); // $ExpectError + gfirstIndexEqual( 3, x, 1 ); // $ExpectError + gfirstIndexEqual( 3, x, 1, y ); // $ExpectError + gfirstIndexEqual( 3, x, 1, y, 1, 0 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType number + gfirstIndexEqual.ndarray( x.length, new AccessorArray( x ), 1, 0, new AccessorArray( y ), 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual.ndarray( '1', x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a collection... +{ + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual.ndarray( 3, 10, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( 3, true, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( 3, false, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( 3, null, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( 3, undefined, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( 3, {}, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual.ndarray( x.length, x, '1', 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual.ndarray( x.length, x, 1, '1', y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a collection... +{ + const x = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual.ndarray( x.length, x, 1, 0, 10, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, true, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, false, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, null, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, undefined, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, '1', 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, '1' ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexEqual.ndarray(); // $ExpectError + gfirstIndexEqual.ndarray( 3 ); // $ExpectError + gfirstIndexEqual.ndarray( 3, x ); // $ExpectError + gfirstIndexEqual.ndarray( 3, x, 1 ); // $ExpectError + gfirstIndexEqual.ndarray( 3, x, 1, 0 ); // $ExpectError + gfirstIndexEqual.ndarray( 3, x, 1, 0, y ); // $ExpectError + gfirstIndexEqual.ndarray( 3, x, 1, 0, y, 1 ); // $ExpectError + gfirstIndexEqual.ndarray( 3, x, 1, 0, y, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/examples/index.js new file mode 100644 index 000000000000..a6d1d1dec38c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfirstIndexEqual = require( './../lib' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = gfirstIndexEqual( x.length, x, 1, y, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/accessors.js new file mode 100644 index 000000000000..e9b7d1895c24 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/accessors.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns the index of the first element in a strided array equal to a corresponding element in another strided array. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {Object} x - first input array object +* @param {Collection} x.data - first input array data +* @param {Array} x.accessors - first array element accessors +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Object} y - second input array object +* @param {Collection} y.data - second input array data +* @param {Array} y.accessors - second array element accessors +* @param {integer} strideY - stride length for `y` +* @param {NonNegativeInteger} offsetY - starting index for `y` +* @returns {integer} index +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 0.0, 0.0, 3.0, 0.0 ]; +* +* var idx = gfirstIndexEqual( x.length, arraylike2object( toAccessorArray( x ) ), 1, 0, arraylike2object( toAccessorArray( y ) ), 1, 0 ); +* // returns 2 +*/ +function gfirstIndexEqual( N, x, strideX, offsetX, y, strideY, offsetY ) { + var xbuf; + var ybuf; + var xget; + var yget; + var ix; + var iy; + var i; + + // Cache reference to array data: + xbuf = x.data; + ybuf = y.data; + + // Cache a reference to the element accessors: + xget = x.accessors[ 0 ]; + yget = y.accessors[ 0 ]; + + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( xget( xbuf, ix ) === yget( ybuf, iy ) ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} + + +// EXPORTS // + +module.exports = gfirstIndexEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/index.js new file mode 100644 index 000000000000..2cd4f1690a06 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the index of the first element in a strided array equal to a corresponding element in another strided array. +* +* @module @stdlib/blas/ext/base/gfirst-index-equal +* +* @example +* var gfirstIndexEqual = require( '@stdlib/blas/ext/base/gfirst-index-equal' ); +* +* var x = [ 1.0, 2.0, 3.0, 4.0, 5.0 ]; +* var y = [ 5.0, 4.0, 3.0, 2.0, 1.0 ]; +* +* var idx = gfirstIndexEqual( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var gfirstIndexEqual = require( '@stdlib/blas/ext/base/gfirst-index-equal' ); +* +* var x = [ 1.0, 2.0, 3.0, 4.0, 5.0 ]; +* var y = [ 5.0, 4.0, 3.0, 2.0, 1.0 ]; +* +* var idx = gfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/main.js new file mode 100644 index 000000000000..6880c0cef142 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/main.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array equal to a corresponding element in another strided array. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @returns {integer} index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 0.0, 0.0, 3.0, 0.0 ]; +* +* var idx = gfirstIndexEqual( x.length, x, 1, y, 1 ); +* // returns 2 +*/ +function gfirstIndexEqual( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gfirstIndexEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/ndarray.js new file mode 100644 index 000000000000..d835f9601dbb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/lib/ndarray.js @@ -0,0 +1,78 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array equal to a corresponding element in another strided array using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @param {NonNegativeInteger} offsetY - starting index for `y` +* @returns {integer} index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 0.0, 0.0, 3.0, 0.0 ]; +* +* var idx = gfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +function gfirstIndexEqual( N, x, strideX, offsetX, y, strideY, offsetY ) { + var ix; + var iy; + var ox; + var oy; + var i; + + if ( N <= 0 ) { + return -1; + } + ox = arraylike2object( x ); + oy = arraylike2object( y ); + if ( ox.accessorProtocol || oy.accessorProtocol ) { + return accessors( N, ox, strideX, offsetX, oy, strideY, offsetY ); + } + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] === y[ iy ] ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} + + +// EXPORTS // + +module.exports = gfirstIndexEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/package.json new file mode 100644 index 000000000000..3dbcb361165c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/package.json @@ -0,0 +1,66 @@ +{ + "name": "@stdlib/blas/ext/base/gfirst-index-equal", + "version": "0.0.0", + "description": "Return the index of the first element in a strided array equal to a corresponding element in another strided array.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "equal", + "index", + "compare", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/test/test.js new file mode 100644 index 000000000000..39d2e573b87a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gfirstIndexEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gfirstIndexEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/test/test.main.js new file mode 100644 index 000000000000..e8f8c989ce8d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/test/test.main.js @@ -0,0 +1,440 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfirstIndexEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gfirstIndexEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ]; + + // Nonnegative stride... + actual = gfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( 3, x, 2, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 3.0 ]; + + actual = gfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = gfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 0.0, 3.0 ] ); + + actual = gfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 0, [ 1.0, 2.0, 3.0 ], 1, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexEqual( -1, [ 1.0, 2.0, 3.0 ], 1, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexEqual( -1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN`', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 1, [ NaN ], 1, [ NaN ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN` (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 1, toAccessorArray( [ NaN ] ), 1, toAccessorArray( [ NaN ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 1, [ -0.0 ], 1, [ 0.0 ], 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 1, toAccessorArray( [ -0.0 ] ), 1, toAccessorArray( [ 0.0 ] ), 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, x, 2, y, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, toAccessorArray( x ), 2, toAccessorArray( y ), 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]; + + actual = gfirstIndexEqual( 3, x, 1, y, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]; + + actual = gfirstIndexEqual( 3, toAccessorArray( x ), 1, toAccessorArray( y ), 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, x, -2, y, -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, toAccessorArray( x ), -2, toAccessorArray( y ), -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]; + y = [ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, x, 2, y, -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float64Array([ + 1.0, + 2.0, // 2 + 3.0, + 4.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 4.0, // 1 + 0.0 // 2 + ]); + + // Create offset views... + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = gfirstIndexEqual( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/test/test.ndarray.js new file mode 100644 index 000000000000..654f26045608 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-equal/test/test.ndarray.js @@ -0,0 +1,405 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfirstIndexEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( gfirstIndexEqual.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ]; + + // Nonnegative stride... + actual = gfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length-1, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = gfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = gfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = gfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = gfirstIndexEqual( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = gfirstIndexEqual( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = toAccessorArray( [ 5.0, 6.0, 7.0, 8.0 ] ); + + actual = gfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 0, [ 1.0, 2.0, 3.0 ], 1, 0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexEqual( -1, [ 1.0, 2.0, 3.0 ], 1, 0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexEqual( -1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN`', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 1, [ NaN ], 1, 0, [ NaN ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN` (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 1, toAccessorArray( [ NaN ] ), 1, 0, toAccessorArray( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 1, [ -0.0 ], 1, 0, [ 0.0 ], 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexEqual( 1, toAccessorArray( [ -0.0 ] ), 1, 0, toAccessorArray( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, toAccessorArray( x ), 2, 0, toAccessorArray( y ), 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]; + + actual = gfirstIndexEqual( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]; + + actual = gfirstIndexEqual( 3, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, toAccessorArray( x ), -2, 4, toAccessorArray( y ), -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]; + y = [ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]; + + actual = gfirstIndexEqual( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/README.md b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/README.md new file mode 100644 index 000000000000..87b03420cbdf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/README.md @@ -0,0 +1,207 @@ + + +# gfirstIndexGreaterThan + +> Return the index of the first element in a strided array which is greater than a corresponding element in another strided array. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var gfirstIndexGreaterThan = require( '@stdlib/blas/ext/base/gfirst-index-greater-than' ); +``` + +#### gfirstIndexGreaterThan( N, x, strideX, y, strideY ) + +Returns the index of the first element in a strided array which is greater than a corresponding element in another strided array. + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0 ]; +var y = [ 2.0, 2.0, 2.0, 2.0 ]; + +var idx = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: first input array. +- **strideX**: stride length for `x`. +- **y**: second input array. +- **strideY**: stride length for `y`. + +If the function is unable to find an element in `x` which is greater than a corresponding element in `y`, the function returns `-1`. + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0 ]; +var y = [ 5.0, 6.0, 7.0, 8.0 ]; + +var idx = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compare every other element: + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; +var y = [ 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ]; + +var idx = gfirstIndexGreaterThan( 3, x, 2, y, 2 ); +// returns 1 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y0 = new Float64Array( [ 9.0, 9.0, 0.0, 9.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = gfirstIndexGreaterThan( 2, x1, 1, y1, 1 ); +// returns 1 +``` + + + +#### gfirstIndexGreaterThan.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + + + +Returns the index of the first element in a strided array which is greater than a corresponding element in another strided array using alternative indexing semantics. + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0 ]; +var y = [ 2.0, 2.0, 2.0, 2.0 ]; + +var idx = gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to access only the last three elements of each strided array: + + + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; +var y = [ 9.0, 9.0, 9.0, 0.0, 9.0, 9.0 ]; + +var idx = gfirstIndexGreaterThan.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// returns 0 +``` + +
+ + + + + +
+ +## Notes + +- When comparing elements, the function checks whether an element in `x` is greater than a corresponding element in `y` using the greater-than operator `>`. As a consequence, comparisons involving `NaN` always evaluate to `false`. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfirstIndexGreaterThan = require( '@stdlib/blas/ext/base/gfirst-index-greater-than' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); +console.log( idx ); +``` + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/benchmark/benchmark.js new file mode 100644 index 000000000000..851f28a2ceff --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/benchmark/benchmark.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfirstIndexGreaterThan = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float64' ); + var y = ones( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..25bda681442c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/benchmark/benchmark.ndarray.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfirstIndexGreaterThan = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float64' ); + var y = ones( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfirstIndexGreaterThan( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/docs/repl.txt new file mode 100644 index 000000000000..2786a7cb1ccb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/docs/repl.txt @@ -0,0 +1,111 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Returns the index of the first element in a strided array which is greater + than a corresponding element in another strided array. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 1.0, 2.0, 3.0, 4.0 ]; + > var y = [ 2.0, 2.0, 2.0, 2.0 ]; + > var idx = {{alias}}( x.length, x, 1, y, 1 ) + 2 + + // Using `N` and stride parameters: + > x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > y = [ 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ]; + > idx = {{alias}}( 3, x, 2, y, 2 ) + 1 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 0.0 ] ); + > var y0 = new {{alias:@stdlib/array/float64}}( [ 9.0, 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + > idx = {{alias}}( 3, x1, 2, y1, 2 ) + -1 + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Returns the index of the first element in a strided array which is greater + than a corresponding element in another strided array using alternative + indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on + starting indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 1.0, 2.0, 3.0, 4.0 ]; + > var y = [ 2.0, 2.0, 2.0, 2.0 ]; + > var idx = {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + 2 + + // Using offsets: + > x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 0.0 ]; + > y = [ 9.0, 9.0, 9.0, 0.0, 9.0, 9.0, 0.0 ]; + > idx = {{alias}}.ndarray( 3, x, 2, 1, y, 2, 2 ) + 2 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/docs/types/index.d.ts new file mode 100644 index 000000000000..60eeba2e4494 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/docs/types/index.d.ts @@ -0,0 +1,116 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gfirstIndexGreaterThan`. +*/ +interface Routine { + /** + * Returns the index of the first element in a strided array which is greater than a corresponding element in another strided array. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is greater than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 2.0, 2.0, 2.0, 2.0 ]; + * + * var idx = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + * // returns 2 + */ + ( N: number, x: InputArray, strideX: number, y: InputArray, strideY: number ): number; + + /** + * Returns the index of the first element in a strided array which is greater than a corresponding element in another strided array using alternative indexing semantics. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is greater than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param offsetY - starting index for `y` + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 2.0, 2.0, 2.0, 2.0 ]; + * + * var idx = gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, x: InputArray, strideX: number, offsetX: number, y: InputArray, strideY: number, offsetY: number ): number; +} + +/** +* Returns the index of the first element in a strided array which is greater than a corresponding element in another strided array. +* +* ## Notes +* +* - If the function is unable to find an element in `x` which is greater than a corresponding element in `y`, the function returns `-1`. +* +* @param N - number of indexed elements +* @param x - first input array +* @param strideX - stride length for `x` +* @param y - second input array +* @param strideY - stride length for `y` +* @returns index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 2.0, 2.0, 2.0, 2.0 ]; +* +* var idx = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 2.0, 2.0, 2.0, 2.0 ]; +* +* var idx = gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +declare var gfirstIndexGreaterThan: Routine; + + +// EXPORTS // + +export = gfirstIndexGreaterThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/docs/types/test.ts new file mode 100644 index 000000000000..fa8e84b4573d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/docs/types/test.ts @@ -0,0 +1,237 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gfirstIndexGreaterThan = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); // $ExpectType number + gfirstIndexGreaterThan( x.length, new AccessorArray( x ), 1, new AccessorArray( y ), 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan( '1', x, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( true, x, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( false, x, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( null, x, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( undefined, x, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( [], x, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( {}, x, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a collection... +{ + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan( 3, 10, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( 3, true, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( 3, false, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( 3, null, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( 3, undefined, 1, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( 3, {}, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan( x.length, x, '1', y, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, true, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, false, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, null, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, undefined, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, [], y, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, {}, y, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a collection... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan( x.length, x, 1, 10, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, true, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, false, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, null, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, undefined, 1 ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan( x.length, x, 1, y, '1' ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, y, true ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, y, false ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, y, null ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, y, undefined ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, y, [] ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, y, {} ); // $ExpectError + gfirstIndexGreaterThan( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan(); // $ExpectError + gfirstIndexGreaterThan( 3 ); // $ExpectError + gfirstIndexGreaterThan( 3, x ); // $ExpectError + gfirstIndexGreaterThan( 3, x, 1 ); // $ExpectError + gfirstIndexGreaterThan( 3, x, 1, y ); // $ExpectError + gfirstIndexGreaterThan( 3, x, 1, y, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType number + gfirstIndexGreaterThan.ndarray( x.length, new AccessorArray( x ), 1, 0, new AccessorArray( y ), 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan.ndarray( '1', x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a collection... +{ + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan.ndarray( 3, 10, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, true, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, false, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, null, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, undefined, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, {}, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan.ndarray( x.length, x, '1', 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan.ndarray( x.length, x, 1, '1', y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a collection... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, 10, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, true, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, false, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, null, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, undefined, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, '1', 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, '1' ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexGreaterThan.ndarray(); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, x ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, x, 1 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, x, 1, 0 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, x, 1, 0, y ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, x, 1, 0, y, 1 ); // $ExpectError + gfirstIndexGreaterThan.ndarray( 3, x, 1, 0, y, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/examples/index.js new file mode 100644 index 000000000000..556a22e391ee --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfirstIndexGreaterThan = require( './../lib' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/accessors.js new file mode 100644 index 000000000000..869c4f71aa53 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/accessors.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns the index of the first element in a strided array which is greater than a corresponding element in another strided array. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {Object} x - first input array object +* @param {Collection} x.data - first input array data +* @param {Array} x.accessors - first array element accessors +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Object} y - second input array object +* @param {Collection} y.data - second input array data +* @param {Array} y.accessors - second array element accessors +* @param {integer} strideY - stride length for `y` +* @param {NonNegativeInteger} offsetY - starting index for `y` +* @returns {integer} index +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 2.0, 2.0, 2.0, 2.0 ]; +* +* var idx = gfirstIndexGreaterThan( x.length, arraylike2object( toAccessorArray( x ) ), 1, 0, arraylike2object( toAccessorArray( y ) ), 1, 0 ); +* // returns 2 +*/ +function gfirstIndexGreaterThan( N, x, strideX, offsetX, y, strideY, offsetY ) { + var xbuf; + var ybuf; + var xget; + var yget; + var ix; + var iy; + var i; + + // Cache reference to array data: + xbuf = x.data; + ybuf = y.data; + + // Cache a reference to the element accessors: + xget = x.accessors[ 0 ]; + yget = y.accessors[ 0 ]; + + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( xget( xbuf, ix ) > yget( ybuf, iy ) ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} + + +// EXPORTS // + +module.exports = gfirstIndexGreaterThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/index.js new file mode 100644 index 000000000000..52cb30ee9d25 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the index of the first element in a strided array which is greater than a corresponding element in another strided array. +* +* @module @stdlib/blas/ext/base/gfirst-index-greater-than +* +* @example +* var gfirstIndexGreaterThan = require( '@stdlib/blas/ext/base/gfirst-index-greater-than' ); +* +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 2.0, 2.0, 2.0, 2.0 ]; +* +* var idx = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var gfirstIndexGreaterThan = require( '@stdlib/blas/ext/base/gfirst-index-greater-than' ); +* +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 2.0, 2.0, 2.0, 2.0 ]; +* +* var idx = gfirstIndexGreaterThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/main.js new file mode 100644 index 000000000000..a993d370c91b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/main.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array which is greater than a corresponding element in another strided array. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @returns {integer} index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 2.0, 2.0, 2.0, 2.0 ]; +* +* var idx = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); +* // returns 2 +*/ +function gfirstIndexGreaterThan( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gfirstIndexGreaterThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/ndarray.js new file mode 100644 index 000000000000..a0432966ab91 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/lib/ndarray.js @@ -0,0 +1,78 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array which is greater than a corresponding element in another strided array using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @param {NonNegativeInteger} offsetY - starting index for `y` +* @returns {integer} index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 2.0, 2.0, 2.0, 2.0 ]; +* +* var idx = gfirstIndexGreaterThan( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +function gfirstIndexGreaterThan( N, x, strideX, offsetX, y, strideY, offsetY ) { + var ix; + var iy; + var ox; + var oy; + var i; + + if ( N <= 0 ) { + return -1; + } + ox = arraylike2object( x ); + oy = arraylike2object( y ); + if ( ox.accessorProtocol || oy.accessorProtocol ) { + return accessors( N, ox, strideX, offsetX, oy, strideY, offsetY ); + } + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] > y[ iy ] ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} + + +// EXPORTS // + +module.exports = gfirstIndexGreaterThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/package.json b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/package.json new file mode 100644 index 000000000000..55556bed35e3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/package.json @@ -0,0 +1,66 @@ +{ + "name": "@stdlib/blas/ext/base/gfirst-index-greater-than", + "version": "0.0.0", + "description": "Return the index of the first element in a strided array which is greater than a corresponding element in another strided array.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "greater", + "index", + "compare", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/test/test.js new file mode 100644 index 000000000000..86b2d869257e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gfirstIndexGreaterThan = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexGreaterThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gfirstIndexGreaterThan.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/test/test.main.js new file mode 100644 index 000000000000..4289f03ef0ec --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/test/test.main.js @@ -0,0 +1,452 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfirstIndexGreaterThan = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexGreaterThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gfirstIndexGreaterThan.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is greater than a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 9.0, 9.0, 9.0, 9.0, 9.0 ]; + + // Nonnegative stride... + actual = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 9.0, 9.0, 0.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 9.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + y = [ 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( 3, x, 2, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 0.0, 9.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 9.0, 0.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 9.0, 9.0, 9.0, 0.0 ]; + + actual = gfirstIndexGreaterThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 9.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index of an element which is greater than a corresponding element in another array (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 9.0, 9.0, 9.0, 9.0, 9.0 ] ); + + // Nonnegative stride... + actual = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 9.0, 9.0, 0.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 9.0, 9.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( 3, x, 2, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 0.0, 9.0, 9.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 9.0, 0.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 9.0, 9.0, 9.0, 0.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 9.0, 9.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 0, [ 1.0, 2.0, 3.0 ], 1, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexGreaterThan( -1, [ 1.0, 2.0, 3.0 ], 1, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexGreaterThan( -1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 1, [ NaN ], 1, [ 0.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexGreaterThan( 1, [ 0.0 ], 1, [ NaN ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 1, toAccessorArray( [ NaN ] ), 1, toAccessorArray( [ 0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexGreaterThan( 1, toAccessorArray( [ 0.0 ] ), 1, toAccessorArray( [ NaN ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 1, [ 0.0 ], 1, [ -0.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 1, toAccessorArray( [ 0.0 ] ), 1, toAccessorArray( [ -0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 9.0, // 0 + 0.0, // 1 + 9.0, // 2 + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, x, 2, y, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 9.0, // 0 + 0.0, // 1 + 9.0, // 2 + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, toAccessorArray( x ), 2, toAccessorArray( y ), 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 9.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 9.0 // 2 + ]; + + actual = gfirstIndexGreaterThan( 3, x, 1, y, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 9.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 9.0 // 2 + ]; + + actual = gfirstIndexGreaterThan( 3, toAccessorArray( x ), 1, toAccessorArray( y ), 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 9.0, // 2 + 0.0, // 1 + 9.0, // 0 + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, x, -2, y, -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 9.0, // 2 + 0.0, // 1 + 9.0, // 0 + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, toAccessorArray( x ), -2, toAccessorArray( y ), -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]; + y = [ + 0.0, // 2 + 9.0, // 1 + 9.0, // 0 + 9.0, + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, x, 2, y, -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float64Array([ + 1.0, + 2.0, // 2 + 3.0, + 4.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float64Array([ + 9.0, + 9.0, + 9.0, + 9.0, // 0 + 0.0, // 1 + 9.0 // 2 + ]); + + // Create offset views... + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = gfirstIndexGreaterThan( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/test/test.ndarray.js new file mode 100644 index 000000000000..07e155ed20a9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-greater-than/test/test.ndarray.js @@ -0,0 +1,539 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfirstIndexGreaterThan = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexGreaterThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( gfirstIndexGreaterThan.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is greater than a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 9.0, 9.0, 9.0, 9.0, 9.0 ]; + + // Nonnegative stride... + actual = gfirstIndexGreaterThan( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length-1, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 9.0, 9.0, 0.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 9.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + y = [ 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 0.0, 9.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 9.0, 0.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 9.0, 9.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 9.0, 9.0, 9.0, 9.0, 9.0, 9.0 ]; + + actual = gfirstIndexGreaterThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index of an element which is greater than a corresponding element in another array (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 9.0, 9.0, 9.0, 9.0, 9.0 ] ); + + // Nonnegative stride... + actual = gfirstIndexGreaterThan( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 0.0, 9.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 9.0, 9.0, 0.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 9.0, 9.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 0.0, 9.0, 9.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 9.0, 9.0, 9.0, 0.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 9.0, 9.0, 9.0, 9.0, 9.0 ] ); + + actual = gfirstIndexGreaterThan( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = toAccessorArray( [ 5.0, 6.0, 7.0, 8.0 ] ); + + actual = gfirstIndexGreaterThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 0, [ 1.0, 2.0, 3.0 ], 1, 0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexGreaterThan( -1, [ 1.0, 2.0, 3.0 ], 1, 0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexGreaterThan( -1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 1, [ NaN ], 1, 0, [ 0.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexGreaterThan( 1, [ 0.0 ], 1, 0, [ NaN ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 1, toAccessorArray( [ NaN ] ), 1, 0, toAccessorArray( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexGreaterThan( 1, toAccessorArray( [ 0.0 ] ), 1, 0, toAccessorArray( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 1, [ 0.0 ], 1, 0, [ -0.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexGreaterThan( 1, toAccessorArray( [ 0.0 ] ), 1, 0, toAccessorArray( [ -0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 9.0, // 0 + 0.0, // 1 + 9.0, // 2 + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 9.0, // 0 + 0.0, // 1 + 9.0, // 2 + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, toAccessorArray( x ), 2, 0, toAccessorArray( y ), 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 9.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 9.0 // 2 + ]; + + actual = gfirstIndexGreaterThan( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 9.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 9.0 // 2 + ]; + + actual = gfirstIndexGreaterThan( 3, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 9.0, // 2 + 0.0, // 1 + 9.0, // 0 + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 9.0, // 2 + 0.0, // 1 + 9.0, // 0 + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, toAccessorArray( x ), -2, 4, toAccessorArray( y ), -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var actual; + var x; + var y; + + x = [ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]; + y = [ + 9.0, // 0 + 9.0, // 1 + 0.0, // 2 + 9.0, // 3 + 9.0, + 9.0, + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 4, x, 2, 1, y, 1, 0 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]; + y = [ + 9.0, // 0 + 9.0, // 1 + 0.0, // 2 + 9.0, // 3 + 9.0, + 9.0, + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 4, toAccessorArray( x ), 2, 1, toAccessorArray( y ), 1, 0 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', function test( t ) { + var actual; + var x; + var y; + + x = [ + 2.0, // 0 + 1.0, // 1 + 2.0, // 2 + -2.0, // 3 + -2.0, + 2.0, + 3.0, + 4.0 + ]; + y = [ + 9.0, + 9.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 9.0, // 2 + 9.0, + 9.0 // 3 + ]; + + actual = gfirstIndexGreaterThan( 4, x, 1, 0, y, 2, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 2.0, // 0 + 1.0, // 1 + 2.0, // 2 + -2.0, // 3 + -2.0, + 2.0, + 3.0, + 4.0 + ]; + y = [ + 9.0, + 9.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 9.0, // 2 + 9.0, + 9.0 // 3 + ]; + + actual = gfirstIndexGreaterThan( 4, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 2, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]; + y = [ + 0.0, // 2 + 9.0, // 1 + 9.0, // 0 + 9.0, + 9.0, + 9.0 + ]; + + actual = gfirstIndexGreaterThan( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/README.md b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/README.md new file mode 100644 index 000000000000..faa848dfae6e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/README.md @@ -0,0 +1,201 @@ + + +# gfirstIndexLessThan + +> Return the index of the first element in a strided array which is less than a corresponding element in another strided array. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var gfirstIndexLessThan = require( '@stdlib/blas/ext/base/gfirst-index-less-than' ); +``` + +#### gfirstIndexLessThan( N, x, strideX, y, strideY ) + +Returns the index of the first element in a strided array which is less than a corresponding element in another strided array. + +```javascript +var x = [ 0.0, 0.0, 0.0, 0.0 ]; +var y = [ 0.0, 0.0, 1.0, 0.0 ]; + +var idx = gfirstIndexLessThan( x.length, x, 1, y, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: first input array. +- **strideX**: stride length for `x`. +- **y**: second input array. +- **strideY**: stride length for `y`. + +If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + +```javascript +var x = [ 5.0, 6.0, 7.0, 8.0 ]; +var y = [ 1.0, 2.0, 3.0, 4.0 ]; + +var idx = gfirstIndexLessThan( x.length, x, 1, y, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compare every other element: + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; +var y = [ 0.0, 9.0, 0.0, 9.0, 9.0, 9.0 ]; + +var idx = gfirstIndexLessThan( 3, x, 2, y, 2 ); +// returns 2 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y0 = new Float64Array( [ 9.0, 0.0, 9.0, 9.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = gfirstIndexLessThan( 2, x1, 1, y1, 1 ); +// returns 1 +``` + +#### gfirstIndexLessThan.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Returns the index of the first element in a strided array which is less than a corresponding element in another strided array using alternative indexing semantics. + +```javascript +var x = [ 0.0, 0.0, 0.0, 0.0 ]; +var y = [ 0.0, 0.0, 1.0, 0.0 ]; + +var idx = gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to access only the last three elements of each strided array: + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; +var y = [ 9.0, 9.0, 9.0, 0.0, 9.0, 9.0 ]; + +var idx = gfirstIndexLessThan.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// returns 1 +``` + +
+ + + + + +
+ +## Notes + +- When comparing elements, the function checks whether an element in `x` is less than a corresponding element in `y` using the less-than operator `<`. As a consequence, comparisons involving `NaN` always evaluate to `false`. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfirstIndexLessThan = require( '@stdlib/blas/ext/base/gfirst-index-less-than' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = gfirstIndexLessThan( x.length, x, 1, y, 1 ); +console.log( idx ); +``` + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/benchmark/benchmark.js new file mode 100644 index 000000000000..8096c58932a0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/benchmark/benchmark.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfirstIndexLessThan = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float64' ); + var y = ones( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfirstIndexLessThan( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..9931a025082b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/benchmark/benchmark.ndarray.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfirstIndexLessThan = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float64' ); + var y = ones( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/docs/repl.txt new file mode 100644 index 000000000000..ea57498c005d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/docs/repl.txt @@ -0,0 +1,117 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Returns the index of the first element in a strided array which is less than + a corresponding element in another strided array. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 0.0, 0.0, 0.0, 0.0 ]; + > var y = [ 0.0, 0.0, 1.0, 0.0 ]; + > var idx = {{alias}}( x.length, x, 1, y, 1 ) + 2 + + // Using `N` and stride parameters: + > x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > y = [ 0.0, 9.0, 0.0, 9.0, 9.0, 9.0 ]; + > idx = {{alias}}( 3, x, 2, y, 2 ) + 2 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var y0 = new {{alias:@stdlib/array/float64}}( [ 9.0, 0.0, 9.0, 9.0 ] ); + > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); + > var idx = {{alias}}( 2, x1, 1, y1, 1 ) + 1 + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Returns the index of the first element in a strided array which is less than + a corresponding element in another strided array using alternative indexing + semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on + starting indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 0.0, 0.0, 0.0, 0.0 ]; + > var y = [ 0.0, 0.0, 1.0, 0.0 ]; + > var idx = {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + 2 + + // Using `N` and stride parameters: + > x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > y = [ 0.0, 9.0, 0.0, 9.0, 9.0, 9.0 ]; + > idx = {{alias}}.ndarray( 3, x, 2, 0, y, 2, 0 ) + 2 + + // Using an index offset: + > x = [ 1.0, 2.0, 3.0, 4.0 ]; + > y = [ 9.0, 2.0, 9.0, 9.0 ]; + > idx = {{alias}}.ndarray( 2, x, 1, 1, y, 1, 1 ) + 1 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/docs/types/index.d.ts new file mode 100644 index 000000000000..4b3fdd72c449 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/docs/types/index.d.ts @@ -0,0 +1,116 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gfirstIndexLessThan`. +*/ +interface Routine { + /** + * Returns the index of the first element in a strided array which is less than a corresponding element in another strided array. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 0.0, 0.0, 0.0, 0.0 ]; + * var y = [ 0.0, 0.0, 1.0, 0.0 ]; + * + * var idx = gfirstIndexLessThan( x.length, x, 1, y, 1 ); + * // returns 2 + */ + ( N: number, x: InputArray, strideX: number, y: InputArray, strideY: number ): number; + + /** + * Returns the index of the first element in a strided array which is less than a corresponding element in another strided array using alternative indexing semantics. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param offsetY - starting index for `y` + * @returns index + * + * @example + * var x = [ 0.0, 0.0, 0.0, 0.0 ]; + * var y = [ 0.0, 0.0, 1.0, 0.0 ]; + * + * var idx = gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, x: InputArray, strideX: number, offsetX: number, y: InputArray, strideY: number, offsetY: number ): number; +} + +/** +* Returns the index of the first element in a strided array which is less than a corresponding element in another strided array. +* +* ## Notes +* +* - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. +* +* @param N - number of indexed elements +* @param x - first input array +* @param strideX - stride length for `x` +* @param y - second input array +* @param strideY - stride length for `y` +* @returns index +* +* @example +* var x = [ 0.0, 0.0, 0.0, 0.0 ]; +* var y = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* var idx = gfirstIndexLessThan( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var x = [ 0.0, 0.0, 0.0, 0.0 ]; +* var y = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* var idx = gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +declare var gfirstIndexLessThan: Routine; + + +// EXPORTS // + +export = gfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/docs/types/test.ts new file mode 100644 index 000000000000..2c961c05495e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/docs/types/test.ts @@ -0,0 +1,237 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gfirstIndexLessThan = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan( x.length, x, 1, y, 1 ); // $ExpectType number + gfirstIndexLessThan( x.length, new AccessorArray( x ), 1, new AccessorArray( y ), 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan( '10', x, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( true, x, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( false, x, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( null, x, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( undefined, x, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( [], x, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( {}, x, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a collection... +{ + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan( 3, 10, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( 3, true, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( 3, false, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( 3, null, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( 3, undefined, 1, y, 1 ); // $ExpectError + gfirstIndexLessThan( 3, {}, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan( x.length, x, '10', y, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, true, y, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, false, y, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, null, y, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, undefined, y, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, [], y, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, {}, y, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a collection... +{ + const x = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexLessThan( x.length, x, 1, 10, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, true, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, false, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, null, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, undefined, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan( x.length, x, 1, y, '10' ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, y, true ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, y, false ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, y, null ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, y, undefined ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, y, [] ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, y, {} ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan(); // $ExpectError + gfirstIndexLessThan( x.length ); // $ExpectError + gfirstIndexLessThan( x.length, x ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1 ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, y ); // $ExpectError + gfirstIndexLessThan( x.length, x, 1, y, 1, 0 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType number + gfirstIndexLessThan.ndarray( x.length, new AccessorArray( x ), 1, 0, new AccessorArray( y ), 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan.ndarray( '10', x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a collection... +{ + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan.ndarray( 3, 10, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( 3, true, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( 3, false, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( 3, null, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( 3, undefined, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( 3, {}, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan.ndarray( x.length, x, '10', 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan.ndarray( x.length, x, 1, '10', y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a collection... +{ + const x = [ 1.0, 2.0, 3.0 ]; + + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, 10, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, true, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, false, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, null, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, undefined, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, '10', 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, '10' ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = [ 1.0, 2.0, 3.0 ]; + const y = [ 2.0, 1.0, 2.0 ]; + + gfirstIndexLessThan.ndarray(); // $ExpectError + gfirstIndexLessThan.ndarray( x.length ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0, 0 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/examples/index.js new file mode 100644 index 000000000000..b8835146b4ee --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfirstIndexLessThan = require( './../lib' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = gfirstIndexLessThan( x.length, x, 1, y, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/accessors.js new file mode 100644 index 000000000000..534eddd017b7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/accessors.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns the index of the first element in a strided array which is less than a corresponding element in another strided array. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {Object} x - first input array object +* @param {Collection} x.data - first input array data +* @param {Array} x.accessors - first array element accessors +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Object} y - second input array object +* @param {Collection} y.data - second input array data +* @param {Array} y.accessors - second array element accessors +* @param {integer} strideY - stride length for `y` +* @param {NonNegativeInteger} offsetY - starting index for `y` +* @returns {integer} index +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ 0.0, 0.0, 0.0, 0.0 ]; +* var y = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* var idx = gfirstIndexLessThan( x.length, arraylike2object( toAccessorArray( x ) ), 1, 0, arraylike2object( toAccessorArray( y ) ), 1, 0 ); +* // returns 2 +*/ +function gfirstIndexLessThan( N, x, strideX, offsetX, y, strideY, offsetY ) { + var xbuf; + var ybuf; + var xget; + var yget; + var ix; + var iy; + var i; + + // Cache reference to array data: + xbuf = x.data; + ybuf = y.data; + + // Cache a reference to the element accessors: + xget = x.accessors[ 0 ]; + yget = y.accessors[ 0 ]; + + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( xget( xbuf, ix ) < yget( ybuf, iy ) ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} + + +// EXPORTS // + +module.exports = gfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/index.js new file mode 100644 index 000000000000..e9020155fbad --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the index of the first element in a strided array which is less than a corresponding element in another strided array. +* +* @module @stdlib/blas/ext/base/gfirst-index-less-than +* +* @example +* var gfirstIndexLessThan = require( '@stdlib/blas/ext/base/gfirst-index-less-than' ); +* +* var x = [ 0.0, 0.0, 0.0, 0.0 ]; +* var y = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* var idx = gfirstIndexLessThan( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var gfirstIndexLessThan = require( '@stdlib/blas/ext/base/gfirst-index-less-than' ); +* +* var x = [ 0.0, 0.0, 0.0, 0.0 ]; +* var y = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* var idx = gfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/main.js new file mode 100644 index 000000000000..9f57a4e6cfdc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/main.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array which is less than a corresponding element in another strided array. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @returns {integer} index +* +* @example +* var x = [ 0.0, 0.0, 0.0, 0.0 ]; +* var y = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* var idx = gfirstIndexLessThan( x.length, x, 1, y, 1 ); +* // returns 2 +*/ +function gfirstIndexLessThan( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/ndarray.js new file mode 100644 index 000000000000..f93b5755d738 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/lib/ndarray.js @@ -0,0 +1,78 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array which is less than a corresponding element in another strided array using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @param {NonNegativeInteger} offsetY - starting index for `y` +* @returns {integer} index +* +* @example +* var x = [ 0.0, 0.0, 0.0, 0.0 ]; +* var y = [ 0.0, 0.0, 1.0, 0.0 ]; +* +* var idx = gfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +function gfirstIndexLessThan( N, x, strideX, offsetX, y, strideY, offsetY ) { + var ix; + var iy; + var ox; + var oy; + var i; + + if ( N <= 0 ) { + return -1; + } + ox = arraylike2object( x ); + oy = arraylike2object( y ); + if ( ox.accessorProtocol || oy.accessorProtocol ) { + return accessors( N, ox, strideX, offsetX, oy, strideY, offsetY ); + } + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] < y[ iy ] ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} + + +// EXPORTS // + +module.exports = gfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/package.json b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/package.json new file mode 100644 index 000000000000..22bb4cc4a2bc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/package.json @@ -0,0 +1,66 @@ +{ + "name": "@stdlib/blas/ext/base/gfirst-index-less-than", + "version": "0.0.0", + "description": "Return the index of the first element in a strided array which is less than a corresponding element in another strided array.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "less", + "index", + "compare", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/test/test.js new file mode 100644 index 000000000000..bcb63f4120b1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gfirstIndexLessThan = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gfirstIndexLessThan.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/test/test.main.js new file mode 100644 index 000000000000..45e02ab563ea --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/test/test.main.js @@ -0,0 +1,468 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfirstIndexLessThan = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gfirstIndexLessThan.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ]; + y = [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ]; + + // Nonnegative stride... + actual = gfirstIndexLessThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ]; + y = [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, 2, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ]; + y = [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, 1, y, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ]; + y = [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, 2, y, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ]; + y = [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ]; + + actual = gfirstIndexLessThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ]; + y = [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ]; + + actual = gfirstIndexLessThan( 3, x, -2, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ]; + y = [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, -1, y, -2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ]; + y = [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, -2, y, -2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = toAccessorArray( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + // Nonnegative stride... + actual = gfirstIndexLessThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = toAccessorArray( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, 2, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = toAccessorArray( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, 1, y, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = toAccessorArray( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = toAccessorArray( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, 2, y, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = toAccessorArray( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = gfirstIndexLessThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = toAccessorArray( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = gfirstIndexLessThan( 3, x, -2, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = toAccessorArray( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = toAccessorArray( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, -1, y, -2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = toAccessorArray( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, -2, y, -2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 0, [ 1.0, 2.0, 3.0 ], 1, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexLessThan( -1, [ 1.0, 2.0, 3.0 ], 1, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexLessThan( -1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 1, [ NaN ], 1, [ 0.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexLessThan( 1, [ 0.0 ], 1, [ NaN ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 1, toAccessorArray( [ NaN ] ), 1, toAccessorArray( [ 0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexLessThan( 1, toAccessorArray( [ 0.0 ] ), 1, toAccessorArray( [ NaN ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 1, [ 0.0 ], 1, [ -0.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 1, toAccessorArray( [ 0.0 ] ), 1, toAccessorArray( [ -0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, x, 2, y, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, toAccessorArray( x ), 2, toAccessorArray( y ), 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]; + + actual = gfirstIndexLessThan( 3, x, 1, y, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]; + + actual = gfirstIndexLessThan( 3, toAccessorArray( x ), 1, toAccessorArray( y ), 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, x, -2, y, -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, toAccessorArray( x ), -2, toAccessorArray( y ), -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]; + y = [ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, x, 2, y, -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]; + y = [ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, toAccessorArray( x ), 2, toAccessorArray( y ), -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float64Array([ + 6.0, + 0.0, // 2 + 5.0, + 1.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float64Array([ + 0.0, + 0.0, + 0.0, + 5.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + + // Create offset views... + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = gfirstIndexLessThan( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/test/test.ndarray.js new file mode 100644 index 000000000000..cb4f429eaf73 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-less-than/test/test.ndarray.js @@ -0,0 +1,433 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfirstIndexLessThan = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( gfirstIndexLessThan.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ]; + y = [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ]; + + // Nonnegative stride... + actual = gfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ]; + y = [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ]; + y = [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ]; + y = [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ]; + y = [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ]; + + actual = gfirstIndexLessThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ]; + y = [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ]; + + actual = gfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ]; + y = [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, -1, 2, y, -2, 4 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ]; + y = [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ]; + + actual = gfirstIndexLessThan( 3, x, -2, 4, y, -2, 4 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = toAccessorArray( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + // Nonnegative stride... + actual = gfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = toAccessorArray( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = toAccessorArray( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = toAccessorArray( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = toAccessorArray( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = toAccessorArray( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = gfirstIndexLessThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = toAccessorArray( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = gfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = toAccessorArray( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = toAccessorArray( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, -1, 2, y, -2, 4 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = toAccessorArray( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = gfirstIndexLessThan( 3, x, -2, 4, y, -2, 4 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 0, [ 1.0, 2.0, 3.0 ], 1, 0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexLessThan( -1, [ 1.0, 2.0, 3.0 ], 1, 0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexLessThan( -1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 1, [ NaN ], 1, 0, [ 0.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexLessThan( 1, [ 0.0 ], 1, 0, [ NaN ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 1, toAccessorArray( [ NaN ] ), 1, 0, toAccessorArray( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexLessThan( 1, toAccessorArray( [ 0.0 ] ), 1, 0, toAccessorArray( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 1, [ 0.0 ], 1, 0, [ -0.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexLessThan( 1, toAccessorArray( [ 0.0 ] ), 1, 0, toAccessorArray( [ -0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, toAccessorArray( x ), 2, 0, toAccessorArray( y ), 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]; + + actual = gfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]; + + actual = gfirstIndexLessThan( 3, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, toAccessorArray( x ), -2, 4, toAccessorArray( y ), -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]; + y = [ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]; + y = [ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]; + + actual = gfirstIndexLessThan( 3, toAccessorArray( x ), 2, 0, toAccessorArray( y ), -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/README.md new file mode 100644 index 000000000000..134951d415aa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/README.md @@ -0,0 +1,187 @@ + + +# gfirstIndexNotEqual + +> Return the index of the first element in a strided array which is not equal to the corresponding element in another strided array. + +
+ +
+ + + +
+ +## Usage + +```javascript +var gfirstIndexNotEqual = require( '@stdlib/blas/ext/base/gfirst-index-not-equal' ); +``` + +#### gfirstIndexNotEqual( N, x, strideX, y, strideY ) + +Returns the index of the first element in a strided array which is not equal to the corresponding element in another strided array. + +```javascript +var x = [ 0, 0, 1, 0 ]; +var y = [ 0, 0, 0, 0 ]; + +var idx = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: first input [`Array`][mdn-array] or [`typed array`][mdn-typed-array]. +- **strideX**: stride length for `x`. +- **y**: second input [`Array`][mdn-array] or [`typed array`][mdn-typed-array]. +- **strideY**: stride length for `y`. + +If unable to find an element in `x` which is not equal to the corresponding element in `y`, the function returns `-1`. + +```javascript +var x = [ 0, 0, 0, 0 ]; +var y = [ 0, 0, 0, 0 ]; + +var idx = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compare every other element in `x` to every other element in `y`: + +```javascript +var x = [ 0, 0, 1, 0, 0, 0 ]; +var y = [ 0, 0, 1, 0, 9, 0 ]; + +var idx = gfirstIndexNotEqual( 3, x, 2, y, 2 ); +// returns 2 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 0, 0, 0, 1, 0, 0 ] ); +var y0 = new Float64Array( [ 0, 0, 0, 0, 0, 0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +var idx = gfirstIndexNotEqual( x1.length, x1, 1, y1, 1 ); +// returns 2 +``` + +#### gfirstIndexNotEqual.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Returns the index of the first element in a strided array which is not equal to the corresponding element in another strided array using alternative indexing semantics. + +```javascript +var x = [ 0, 0, 1, 0 ]; +var y = [ 0, 0, 0, 0 ]; + +var idx = gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to compare the last three elements of `x` to the last three elements of `y`: + +```javascript +var x = [ 0, 0, 0, 1 ]; +var y = [ 1, 0, 0, 0 ]; + +var idx = gfirstIndexNotEqual.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// returns 2 +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `-1`. +- Both functions determine whether corresponding elements are equal using strict equality (i.e., the `===` operator). As a consequence, corresponding `NaN` elements are considered unequal (as `NaN !== NaN` always evaluates to `true`), while `-0` and `+0` are considered equal. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfirstIndexNotEqual = require( '@stdlib/blas/ext/base/gfirst-index-not-equal' ); + +var x = discreteUniform( 10, -5, 5, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, -5, 5, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); +console.log( idx ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..e12dde8c4f68 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/benchmark/benchmark.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfirstIndexNotEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = oneTo( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..6bcddbd9e06e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfirstIndexNotEqual = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = oneTo( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfirstIndexNotEqual( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/docs/repl.txt new file mode 100644 index 000000000000..fb1b3586817c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/docs/repl.txt @@ -0,0 +1,112 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Returns the index of the first element in a strided array which is not + equal to the corresponding element in another strided array. + + The `N` and stride parameters determine which elements in the strided + arrays are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use + typed array views. + + If `N <= 0` or if unable to find an element in `x` which is not equal to + the corresponding element in `y`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 0, 0, 1, 0 ]; + > var y = [ 0, 0, 0, 0 ]; + > var idx = {{alias}}( x.length, x, 1, y, 1 ) + 2 + + // Using `N` and stride parameters: + > var x = [ 2, 4, 6, 8, 10 ]; + > var y = [ 2, 3, 4, 5, 6 ]; + > var idx = {{alias}}( 3, x, 2, y, 1 ) + 1 + + // View offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 0, 0, 1, 0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var y = [ 0, 0, 0 ]; + > var idx = {{alias}}( x1.length, x1, 1, y, 1 ) + 1 + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Returns the index of the first element in a strided array which is not + equal to the corresponding element in another strided array using + alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on + starting indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 0, 0, 1, 0 ]; + > var y = [ 0, 0, 0, 0 ]; + > var idx = {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + 2 + + // Advanced indexing: + > var x = [ 2, 4, 6, 8, 10 ]; + > var y = [ 2, 3, 4, 5, 6 ]; + > var idx = {{alias}}.ndarray( 3, x, 2, 0, y, 1, 0 ) + 1 + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..d2912c974a27 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/docs/types/index.d.ts @@ -0,0 +1,116 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gfirstIndexNotEqual`. +*/ +interface Routine { + /** + * Returns the index of the first element in a strided array which is not equal to the corresponding element in another strided array. + * + * ## Notes + * + * - If unable to find an element in `x` which is not equal to the corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 0, 0, 1, 0 ]; + * var y = [ 0, 0, 0, 0 ]; + * + * var idx = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); + * // returns 2 + */ + ( N: number, x: InputArray, strideX: number, y: InputArray, strideY: number ): number; + + /** + * Returns the index of the first element in a strided array which is not equal to the corresponding element in another strided array using alternative indexing semantics. + * + * ## Notes + * + * - If unable to find an element in `x` which is not equal to the corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param offsetY - starting index for `y` + * @returns index + * + * @example + * var x = [ 0, 0, 1, 0 ]; + * var y = [ 0, 0, 0, 0 ]; + * + * var idx = gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, x: InputArray, strideX: number, offsetX: number, y: InputArray, strideY: number, offsetY: number ): number; +} + +/** +* Returns the index of the first element in a strided array which is not equal to the corresponding element in another strided array. +* +* ## Notes +* +* - If unable to find an element in `x` which is not equal to the corresponding element in `y`, the function returns `-1`. +* +* @param N - number of indexed elements +* @param x - first input array +* @param strideX - stride length for `x` +* @param y - second input array +* @param strideY - stride length for `y` +* @returns index +* +* @example +* var x = [ 0, 0, 1, 0 ]; +* var y = [ 0, 0, 0, 0 ]; +* +* var idx = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var x = [ 0, 0, 1, 0 ]; +* var y = [ 0, 0, 0, 0 ]; +* +* var idx = gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +declare var gfirstIndexNotEqual: Routine; + + +// EXPORTS // + +export = gfirstIndexNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..16ab0fbf3ed9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/docs/types/test.ts @@ -0,0 +1,215 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gfirstIndexNotEqual = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual( x.length, x, 1, y, 1 ); // $ExpectType number + gfirstIndexNotEqual( x.length, new AccessorArray( x ), 1, new AccessorArray( y ), 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual( '1', x, 1, y, 1 ); // $ExpectError + gfirstIndexNotEqual( true, x, 1, y, 1 ); // $ExpectError + gfirstIndexNotEqual( false, x, 1, y, 1 ); // $ExpectError + gfirstIndexNotEqual( null, x, 1, y, 1 ); // $ExpectError + gfirstIndexNotEqual( {}, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a collection... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual( x.length, 5, 1, y, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, true, 1, y, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, false, 1, y, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, null, 1, y, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, undefined, 1, y, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, {}, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual( x.length, x, '1', y, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, true, y, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, false, y, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, null, y, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, {}, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a collection... +{ + const x = [ 0, 0, 1, 0 ]; + + gfirstIndexNotEqual( x.length, x, 1, 5, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, true, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, false, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, null, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, undefined, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual( x.length, x, 1, y, '1' ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, y, true ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, y, false ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, y, null ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, y, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual(); // $ExpectError + gfirstIndexNotEqual( x.length ); // $ExpectError + gfirstIndexNotEqual( x.length, x ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1 ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, y ); // $ExpectError + gfirstIndexNotEqual( x.length, x, 1, y, 1, {} ); // $ExpectError +} + +// Attached to the main export is an `ndarray` method which returns a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType number + gfirstIndexNotEqual.ndarray( x.length, new AccessorArray( x ), 1, 0, new AccessorArray( y ), 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual.ndarray( '1', x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a collection... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual.ndarray( x.length, 5, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, true, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, false, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, null, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, undefined, 1, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, {}, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual.ndarray( x.length, x, '1', 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual.ndarray( x.length, x, 1, '1', y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a collection... +{ + const x = [ 0, 0, 1, 0 ]; + + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, 5, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, true, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, false, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, null, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, undefined, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, '1', 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, '1' ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = [ 0, 0, 1, 0 ]; + const y = [ 0, 0, 0, 0 ]; + + gfirstIndexNotEqual.ndarray(); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/examples/index.js new file mode 100644 index 000000000000..0126c17a60b6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gfirstIndexNotEqual = require( './../lib' ); + +var x = discreteUniform( 10, -5, 5, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, -5, 5, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/accessors.js new file mode 100644 index 000000000000..bdecb9046ac9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/accessors.js @@ -0,0 +1,79 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns the index of the first element in a strided array which is not equal to the corresponding element in another strided array. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {Object} x - first input array object +* @param {Collection} x.data - first input array data +* @param {Array} x.accessors - first array element accessors +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Object} y - second input array object +* @param {Collection} y.data - second input array data +* @param {Array} y.accessors - second array element accessors +* @param {integer} strideY - stride length for `y` +* @param {NonNegativeInteger} offsetY - starting index for `y` +* @returns {integer} index +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ 0, 0, 1, 0 ]; +* var y = [ 0, 0, 0, 0 ]; +* +* var idx = gfirstIndexNotEqual( x.length, arraylike2object( toAccessorArray( x ) ), 1, 0, arraylike2object( toAccessorArray( y ) ), 1, 0 ); +* // returns 2 +*/ +function gfirstIndexNotEqual( N, x, strideX, offsetX, y, strideY, offsetY ) { + var xbuf; + var ybuf; + var xget; + var yget; + var ix; + var iy; + var i; + + xbuf = x.data; + ybuf = y.data; + xget = x.accessors[ 0 ]; + yget = y.accessors[ 0 ]; + + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( xget( xbuf, ix ) !== yget( ybuf, iy ) ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} + + +// EXPORTS // + +module.exports = gfirstIndexNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/index.js new file mode 100644 index 000000000000..566db2a17318 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the index of the first element in a strided array which is not equal to the corresponding element in another strided array. +* +* @module @stdlib/blas/ext/base/gfirst-index-not-equal +* +* @example +* var gfirstIndexNotEqual = require( '@stdlib/blas/ext/base/gfirst-index-not-equal' ); +* +* var x = [ 0, 0, 1, 0 ]; +* var y = [ 0, 0, 0, 0 ]; +* +* var idx = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var gfirstIndexNotEqual = require( '@stdlib/blas/ext/base/gfirst-index-not-equal' ); +* +* var x = [ 0, 0, 1, 0 ]; +* var y = [ 0, 0, 0, 0 ]; +* +* var idx = gfirstIndexNotEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/main.js new file mode 100644 index 000000000000..4e4574936111 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/main.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array which is not equal to the corresponding element in another strided array. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @returns {integer} index +* +* @example +* var x = [ 0, 0, 1, 0 ]; +* var y = [ 0, 0, 0, 0 ]; +* +* var idx = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); +* // returns 2 +*/ +function gfirstIndexNotEqual( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gfirstIndexNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/ndarray.js new file mode 100644 index 000000000000..e8c244bbc23c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/lib/ndarray.js @@ -0,0 +1,78 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array which is not equal to the corresponding element in another strided array using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @param {NonNegativeInteger} offsetY - starting index for `y` +* @returns {integer} index +* +* @example +* var x = [ 0, 0, 1, 0 ]; +* var y = [ 0, 0, 0, 0 ]; +* +* var idx = gfirstIndexNotEqual( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +function gfirstIndexNotEqual( N, x, strideX, offsetX, y, strideY, offsetY ) { + var ix; + var iy; + var ox; + var oy; + var i; + + if ( N <= 0 ) { + return -1; + } + ox = arraylike2object( x ); + oy = arraylike2object( y ); + if ( ox.accessorProtocol || oy.accessorProtocol ) { + return accessors( N, ox, strideX, offsetX, oy, strideY, offsetY ); + } + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] !== y[ iy ] ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} + + +// EXPORTS // + +module.exports = gfirstIndexNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/package.json new file mode 100644 index 000000000000..60594a62cec3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/ext/base/gfirst-index-not-equal", + "version": "0.0.0", + "description": "Return the index of the first element in a strided array which is not equal to the corresponding element in another strided array.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "search", + "index", + "first", + "compare", + "comparison", + "equal", + "equality", + "not equal", + "unequal", + "mismatch", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/test/test.js new file mode 100644 index 000000000000..d107b9dcd33d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gfirstIndexNotEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gfirstIndexNotEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/test/test.main.js new file mode 100644 index 000000000000..1c040bfd9cb9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/test/test.main.js @@ -0,0 +1,339 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfirstIndexNotEqual = require( './../lib/main.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gfirstIndexNotEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in `x` which is not equal to the corresponding element in `y`', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 1.0, 1.0, 2.0, 5.0, 3.0, 3.0 ]; + + actual = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + x = [ 9.0, 1.0, 2.0 ]; + y = [ 1.0, 1.0, 2.0 ]; + + actual = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element in `x` which is not equal to the corresponding element in `y` (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 1.0, 2.0, 5.0, 3.0, 3.0 ] ); + + actual = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + x = toAccessorArray( [ 9.0, 1.0, 2.0 ] ); + y = toAccessorArray( [ 1.0, 1.0, 2.0 ] ); + + actual = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in `x` is equal to the corresponding element in `y`', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 2.0, 3.0 ]; + y = [ 1.0, 2.0, 3.0 ]; + + actual = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in `x` is equal to the corresponding element in `y` (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 2.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 2.0, 3.0 ] ); + + actual = gfirstIndexNotEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter less than or equal to zero', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 2.0, 3.0 ]; + y = [ 4.0, 5.0, 6.0 ]; + + actual = gfirstIndexNotEqual( 0, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexNotEqual( -1, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter less than or equal to zero (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 2.0, 3.0 ] ); + y = toAccessorArray( [ 4.0, 5.0, 6.0 ] ); + + actual = gfirstIndexNotEqual( 0, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexNotEqual( -1, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats corresponding `NaN` elements as unequal', function test( t ) { + var actual; + + actual = gfirstIndexNotEqual( 1, [ NaN ], 1, [ NaN ], 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats corresponding `NaN` elements as unequal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexNotEqual( 1, toAccessorArray( [ NaN ] ), 1, toAccessorArray( [ NaN ] ), 1 ); // eslint-disable-line max-len + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', function test( t ) { + var actual; + + actual = gfirstIndexNotEqual( 1, [ -0.0 ], 1, [ 0.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexNotEqual( 1, toAccessorArray( [ -0.0 ] ), 1, toAccessorArray( [ 0.0 ] ), 1 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + y = [ + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, x, 2, y, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + y = [ + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, toAccessorArray( x ), 2, toAccessorArray( y ), 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ 0.0, 0.0, 1.0 ]; + y = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, x, 1, y, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ 0.0, 0.0, 1.0 ]; + y = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, toAccessorArray( x ), 1, toAccessorArray( y ), 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ 5.0, 4.0, 3.0, 2.0, 1.0, 0.0 ]; + y = [ 5.0, 4.0, 3.0, 9.0, 1.0, 0.0 ]; + + actual = gfirstIndexNotEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ 5.0, 4.0, 3.0, 2.0, 1.0, 0.0 ]; + y = [ 5.0, 4.0, 3.0, 9.0, 1.0, 0.0 ]; + + actual = gfirstIndexNotEqual( x.length, toAccessorArray( x ), -1, toAccessorArray( y ), -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + y = [ + 0.0, // 2 + 0.0, // 1 + 0.0, // 0 + 9.0, + 9.0 + ]; + + actual = gfirstIndexNotEqual( 3, x, 2, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + x0 = new Float64Array( [ 9.0, 0.0, 1.0, 0.0, 0.0 ] ); + y0 = new Float64Array( [ 9.0, 9.0, 0.0, 0.0, 0.0 ] ); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + actual = gfirstIndexNotEqual( 3, x1, 1, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/test/test.ndarray.js new file mode 100644 index 000000000000..d93e337a660b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gfirst-index-not-equal/test/test.ndarray.js @@ -0,0 +1,437 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gfirstIndexNotEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( gfirstIndexNotEqual.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in `x` which is not equal to the corresponding element in `y`', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 1.0, 1.0, 2.0, 5.0, 3.0, 3.0 ]; + + actual = gfirstIndexNotEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + x = [ 9.0, 1.0, 2.0 ]; + y = [ 1.0, 1.0, 2.0 ]; + + actual = gfirstIndexNotEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element in `x` which is not equal to the corresponding element in `y` (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 1.0, 2.0, 5.0, 3.0, 3.0 ] ); + + actual = gfirstIndexNotEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + x = toAccessorArray( [ 9.0, 1.0, 2.0 ] ); + y = toAccessorArray( [ 1.0, 1.0, 2.0 ] ); + + actual = gfirstIndexNotEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in `x` is equal to the corresponding element in `y`', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 2.0, 3.0 ]; + y = [ 1.0, 2.0, 3.0 ]; + + actual = gfirstIndexNotEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in `x` is equal to the corresponding element in `y` (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 2.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 2.0, 3.0 ] ); + + actual = gfirstIndexNotEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter less than or equal to zero', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 2.0, 3.0 ]; + y = [ 4.0, 5.0, 6.0 ]; + + actual = gfirstIndexNotEqual( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexNotEqual( -1, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter less than or equal to zero (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 2.0, 3.0 ] ); + y = toAccessorArray( [ 4.0, 5.0, 6.0 ] ); + + actual = gfirstIndexNotEqual( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gfirstIndexNotEqual( -1, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats corresponding `NaN` elements as unequal', function test( t ) { + var actual; + + actual = gfirstIndexNotEqual( 1, [ NaN ], 1, 0, [ NaN ], 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats corresponding `NaN` elements as unequal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexNotEqual( 1, toAccessorArray( [ NaN ] ), 1, 0, toAccessorArray( [ NaN ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', function test( t ) { + var actual; + + actual = gfirstIndexNotEqual( 1, [ -0.0 ], 1, 0, [ 0.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal (accessors)', function test( t ) { + var actual; + + actual = gfirstIndexNotEqual( 1, toAccessorArray( [ -0.0 ] ), 1, 0, toAccessorArray( [ 0.0 ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + y = [ + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + y = [ + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, toAccessorArray( x ), 2, 0, toAccessorArray( y ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var actual; + var x; + var y; + + x = [ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + y = [ + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, x, 2, 1, y, 1, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` offset (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + y = [ + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, toAccessorArray( x ), 2, 1, toAccessorArray( y ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ 0.0, 0.0, 1.0 ]; + y = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ 0.0, 0.0, 1.0 ]; + y = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 2, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` offset', function test( t ) { + var actual; + var x; + var y; + + x = [ 0.0, 0.0, 1.0 ]; + y = [ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, x, 1, 0, y, 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` offset (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ 0.0, 0.0, 1.0 ]; + y = [ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 0.0 // 2 + ]; + + actual = gfirstIndexNotEqual( 3, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 2, 1 ); // eslint-disable-line max-len + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ 5.0, 4.0, 3.0, 2.0, 1.0, 0.0 ]; + y = [ 5.0, 4.0, 3.0, 9.0, 1.0, 0.0 ]; + + actual = gfirstIndexNotEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); // eslint-disable-line max-len + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ 5.0, 4.0, 3.0, 2.0, 1.0, 0.0 ]; + y = [ 5.0, 4.0, 3.0, 9.0, 1.0, 0.0 ]; + + actual = gfirstIndexNotEqual( x.length, toAccessorArray( x ), -1, x.length-1, toAccessorArray( y ), -1, y.length-1 ); // eslint-disable-line max-len + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + y = [ + 0.0, // 2 + 0.0, // 1 + 0.0, // 0 + 9.0, + 9.0 + ]; + + actual = gfirstIndexNotEqual( 3, x, 2, 0, y, -1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + y = [ + 0.0, // 2 + 0.0, // 1 + 0.0, // 0 + 9.0, + 9.0 + ]; + + actual = gfirstIndexNotEqual( 3, toAccessorArray( x ), 2, 0, toAccessorArray( y ), -1, 2 ); // eslint-disable-line max-len + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/README.md new file mode 100644 index 000000000000..06ca7496d2af --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/README.md @@ -0,0 +1,187 @@ + + +# gindexOfNotEqual + +> Return the first index of an element in a strided array which is not equal to a specified search element. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var gindexOfNotEqual = require( '@stdlib/blas/ext/base/gindex-of-not-equal' ); +``` + +#### gindexOfNotEqual( N, searchElement, x, strideX ) + +Returns the first index of an element in a strided array which is not equal to a specified search element. + +```javascript +var x = [ 1.0, 1.0, 0.0, 1.0 ]; + +var idx = gindexOfNotEqual( x.length, 1.0, x, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **x**: input array. +- **strideX**: stride length. + +If all elements in the array are equal to the search element, the function returns `-1`. + +```javascript +var x = [ 1.0, 1.0, 1.0, 1.0 ]; + +var idx = gindexOfNotEqual( x.length, 1.0, x, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to search every other element: + +```javascript +var x = [ 1.0, 9.0, 0.0, 9.0, 1.0, 9.0 ]; + +var idx = gindexOfNotEqual( 3, 1.0, x, 2 ); +// returns 1 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +// Create an offset view... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = gindexOfNotEqual( 3, 2.0, x1, 2 ); +// returns 1 +``` + +#### gindexOfNotEqual.ndarray( N, searchElement, x, strideX, offsetX ) + +Returns the first index of an element in a strided array which is not equal to a specified search element using alternative indexing semantics. + +```javascript +var x = [ 1.0, 1.0, 0.0, 1.0 ]; + +var idx = gindexOfNotEqual.ndarray( x.length, 1.0, x, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements of the strided array: + +```javascript +var x = [ 1.0, 1.0, 0.0, 1.0 ]; + +var idx = gindexOfNotEqual.ndarray( 3, 1.0, x, 1, 1 ); +// returns 1 +``` + +
+ + + + + +
+ +## Notes + +- When searching for a search element, the function checks for inequality using the strict inequality operator `!==`. As a consequence, `NaN` values are considered distinct from all values (including other `NaN` values), and `-0` and `+0` are considered the same. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gindexOfNotEqual = require( '@stdlib/blas/ext/base/gindex-of-not-equal' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'generic' +}); +console.log( x ); + +var idx = gindexOfNotEqual( x.length, 0.0, x, 1 ); +console.log( idx ); +``` + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..6c3748fcd92a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/benchmark/benchmark.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gindexOfNotEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gindexOfNotEqual( x.length, 0.0, x, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..116220a44b01 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gindexOfNotEqual = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gindexOfNotEqual( x.length, 0.0, x, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/docs/repl.txt new file mode 100644 index 000000000000..5bed55ccbb29 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/docs/repl.txt @@ -0,0 +1,95 @@ + +{{alias}}( N, searchElement, x, strideX ) + Returns the first index of an element in a strided array which is not equal + to a specified search element. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + x: Array|TypedArray + Input array. + + strideX: integer + Stride length. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 1.0, 1.0, 0.0, 1.0 ]; + > var idx = {{alias}}( x.length, 1.0, x, 1 ) + 2 + + // Using `N` and stride parameters: + > var x = [ 1.0, 9.0, 0.0, 9.0, 1.0, 9.0 ]; + > var idx = {{alias}}( 3, 1.0, x, 2 ) + 1 + + // View offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 1.0, 1.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var idx = {{alias}}( 2, 1.0, x1, 1 ) + 0 + + +{{alias}}.ndarray( N, searchElement, x, strideX, offsetX ) + Returns the first index of an element in a strided array which is not equal + to a specified search element using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a + starting index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + x: Array|TypedArray + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 1.0, 1.0, 0.0, 1.0 ]; + > var idx = {{alias}}.ndarray( x.length, 1.0, x, 1, 0 ) + 2 + + // Advanced indexing: + > var x = [ 1.0, 2.0, 1.0, 3.0, 1.0, 4.0 ]; + > var idx = {{alias}}.ndarray( 3, 1.0, x, 2, 1 ) + 0 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..2eef2727379f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/docs/types/index.d.ts @@ -0,0 +1,108 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gindexOfNotEqual`. +*/ +interface Routine { + /** + * Returns the first index of an element in a strided array which is not equal to a specified search element. + * + * ## Notes + * + * - If all elements are equal to the search element, the function returns `-1`. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param x - input array + * @param strideX - stride length + * @returns index + * + * @example + * var x = [ 1.0, 1.0, 0.0, 1.0 ]; + * + * var idx = gindexOfNotEqual( x.length, 1.0, x, 1 ); + * // returns 2 + */ + ( N: number, searchElement: unknown, x: InputArray, strideX: number ): number; + + /** + * Returns the first index of an element in a strided array which is not equal to a specified search element using alternative indexing semantics. + * + * ## Notes + * + * - If all elements are equal to the search element, the function returns `-1`. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns index + * + * @example + * var x = [ 1.0, 1.0, 0.0, 1.0 ]; + * + * var idx = gindexOfNotEqual.ndarray( x.length, 1.0, x, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, searchElement: unknown, x: InputArray, strideX: number, offsetX: number ): number; +} + +/** +* Returns the first index of an element in a strided array which is not equal to a specified search element. +* +* ## Notes +* +* - If all elements are equal to the search element, the function returns `-1`. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param x - input array +* @param strideX - stride length +* @returns index +* +* @example +* var x = [ 1.0, 1.0, 0.0, 1.0 ]; +* +* var idx = gindexOfNotEqual( x.length, 1.0, x, 1 ); +* // returns 2 +* +* @example +* var x = [ 1.0, 1.0, 0.0, 1.0 ]; +* +* var idx = gindexOfNotEqual.ndarray( x.length, 1.0, x, 1, 0 ); +* // returns 2 +*/ +declare var gindexOfNotEqual: Routine; + + +// EXPORTS // + +export = gindexOfNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..d58b9cf76888 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/docs/types/test.ts @@ -0,0 +1,129 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gindexOfNotEqual = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfNotEqual( x.length, 2.0, x, 1 ); // $ExpectType number + gindexOfNotEqual( x.length, 2.0, new AccessorArray( x ), 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfNotEqual( '1', 2.0, x, 1 ); // $ExpectError + gindexOfNotEqual( true, 2.0, x, 1 ); // $ExpectError + gindexOfNotEqual( false, 2.0, x, 1 ); // $ExpectError + gindexOfNotEqual( null, 2.0, x, 1 ); // $ExpectError + gindexOfNotEqual( {}, 2.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a collection... +{ + gindexOfNotEqual( x.length, 1.0, 1, 1 ); // $ExpectError + gindexOfNotEqual( x.length, 1.0, true, 1 ); // $ExpectError + gindexOfNotEqual( x.length, 1.0, false, 1 ); // $ExpectError + gindexOfNotEqual( x.length, 1.0, null, 1 ); // $ExpectError + gindexOfNotEqual( x.length, 1.0, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfNotEqual( x.length, 2.0, x, '1' ); // $ExpectError + gindexOfNotEqual( x.length, 2.0, x, true ); // $ExpectError + gindexOfNotEqual( x.length, 2.0, x, false ); // $ExpectError + gindexOfNotEqual( x.length, 2.0, x, null ); // $ExpectError + gindexOfNotEqual( x.length, 2.0, x, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + gindexOfNotEqual(); // $ExpectError + gindexOfNotEqual( 3, 2.0 ); // $ExpectError + gindexOfNotEqual( 3, 2.0, [ 1.0, 2.0, 3.0 ] ); // $ExpectError + gindexOfNotEqual( 3, 2.0, [ 1.0, 2.0, 3.0 ], 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfNotEqual.ndarray( x.length, 2.0, x, 1, 0 ); // $ExpectType number + gindexOfNotEqual.ndarray( x.length, 2.0, new AccessorArray( x ), 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfNotEqual.ndarray( '1', 2.0, x, 1, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( true, 2.0, x, 1, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( false, 2.0, x, 1, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( null, 2.0, x, 1, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( {}, 2.0, x, 1, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a collection... +{ + gindexOfNotEqual.ndarray( x.length, 1.0, 1, 1, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 1.0, true, 1, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 1.0, false, 1, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 1.0, null, 1, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 1.0, {}, 1, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfNotEqual.ndarray( x.length, 2.0, x, '1', 1 ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 2.0, x, true, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 2.0, x, false, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 2.0, x, null, 1 ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 2.0, x, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfNotEqual.ndarray( x.length, 2.0, x, 1, '1' ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 2.0, x, 1, true ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 2.0, x, 1, false ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 2.0, x, 1, null ); // $ExpectError + gindexOfNotEqual.ndarray( x.length, 2.0, x, 1, {} ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + gindexOfNotEqual.ndarray(); // $ExpectError + gindexOfNotEqual.ndarray( 3, 2.0 ); // $ExpectError + gindexOfNotEqual.ndarray( 3, 2.0, [ 1.0, 2.0, 3.0 ] ); // $ExpectError + gindexOfNotEqual.ndarray( 3, 2.0, [ 1.0, 2.0, 3.0 ], 1 ); // $ExpectError + gindexOfNotEqual.ndarray( 3, 2.0, [ 1.0, 2.0, 3.0 ], 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/examples/index.js new file mode 100644 index 000000000000..a35dd53376d6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gindexOfNotEqual = require( './../lib' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'generic' +}); +console.log( x ); + +var idx = gindexOfNotEqual( x.length, 0.0, x, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/accessors.js new file mode 100644 index 000000000000..fe79423c9fe7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/accessors.js @@ -0,0 +1,74 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Returns the first index of an element in a strided array which is not equal to a specified search element. +* +* ## Notes +* +* - If all elements are equal to the search element, the function returns `-1`. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {Object} x - input array object +* @param {Collection} x.data - input array data +* @param {Array} x.accessors - array element accessors +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {integer} index +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ 1.0, 1.0, 0.0, 1.0 ]; +* +* var idx = gindexOfNotEqual( x.length, 1.0, arraylike2object( toAccessorArray( x ) ), 1, 0 ); +* // returns 2 +*/ +function gindexOfNotEqual( N, searchElement, x, strideX, offsetX ) { + var xbuf; + var get; + var ix; + var i; + + // Cache a reference to array data: + xbuf = x.data; + + // Cache a reference to the element accessor: + get = x.accessors[ 0 ]; + + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( get( xbuf, ix ) !== searchElement ) { + return i; + } + ix += strideX; + } + return -1; +} + + +// EXPORTS // + +module.exports = gindexOfNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/index.js new file mode 100644 index 000000000000..f02ee44c3f9b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the first index of an element in a strided array which is not equal to a specified search element. +* +* @module @stdlib/blas/ext/base/gindex-of-not-equal +* +* @example +* var gindexOfNotEqual = require( '@stdlib/blas/ext/base/gindex-of-not-equal' ); +* +* var x = [ 1.0, 1.0, 0.0, 1.0 ]; +* +* var idx = gindexOfNotEqual( x.length, 1.0, x, 1 ); +* // returns 2 +* +* @example +* var gindexOfNotEqual = require( '@stdlib/blas/ext/base/gindex-of-not-equal' ); +* +* var x = [ 1.0, 1.0, 0.0, 1.0 ]; +* +* var idx = gindexOfNotEqual.ndarray( x.length, 1.0, x, 1, 0 ); +* // returns 2 +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/main.js new file mode 100644 index 000000000000..d7fae19502cd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/main.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Returns the first index of an element in a strided array which is not equal to a specified search element. +* +* ## Notes +* +* - If all elements are equal to the search element, the function returns `-1`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @returns {integer} index +* +* @example +* var x = [ 1.0, 1.0, 0.0, 1.0 ]; +* +* var idx = gindexOfNotEqual( x.length, 1.0, x, 1 ); +* // returns 2 +*/ +function gindexOfNotEqual( N, searchElement, x, strideX ) { + return ndarray( N, searchElement, x, strideX, stride2offset( N, strideX ) ); +} + + +// EXPORTS // + +module.exports = gindexOfNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/ndarray.js new file mode 100644 index 000000000000..4b5d2e295180 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/lib/ndarray.js @@ -0,0 +1,74 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Returns the first index of an element in a strided array which is not equal to a specified search element using alternative indexing semantics. +* +* ## Notes +* +* - If all elements are equal to the search element, the function returns `-1`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {integer} index +* +* @example +* var x = [ 1.0, 1.0, 0.0, 1.0 ]; +* +* var idx = gindexOfNotEqual( x.length, 1.0, x, 1, 0 ); +* // returns 2 +*/ +function gindexOfNotEqual( N, searchElement, x, strideX, offsetX ) { + var ix; + var o; + var i; + + if ( N <= 0 ) { + return -1; + } + o = arraylike2object( x ); + if ( o.accessorProtocol ) { + return accessors( N, searchElement, o, strideX, offsetX ); + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] !== searchElement ) { + return i; + } + ix += strideX; + } + return -1; +} + + +// EXPORTS // + +module.exports = gindexOfNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/package.json new file mode 100644 index 000000000000..af543d7033e6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/package.json @@ -0,0 +1,66 @@ +{ + "name": "@stdlib/blas/ext/base/gindex-of-not-equal", + "version": "0.0.0", + "description": "Return the first index of an element in a strided array which is not equal to a specified search element.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "search", + "index", + "get", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/test/test.js new file mode 100644 index 000000000000..e6b4186ea0ba --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gindexOfNotEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gindexOfNotEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/test/test.main.js new file mode 100644 index 000000000000..2601cf099fd8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/test/test.main.js @@ -0,0 +1,288 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gindexOfNotEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( gindexOfNotEqual.length, 4, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a strided array which is not equal to a provided search element', function test( t ) { + var actual; + var x; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + + // Nonnegative stride... + actual = gindexOfNotEqual( x.length, 1.0, x, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 2.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 3.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 4.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + // Negative stride... + x = [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + actual = gindexOfNotEqual( x.length, 1.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 2.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 3.0, x, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 4.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element in a strided array which is not equal to a provided search element (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + // Nonnegative stride... + actual = gindexOfNotEqual( x.length, 1.0, x, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 2.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 3.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 4.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + actual = gindexOfNotEqual( x.length, 1.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 2.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 3.0, x, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 4.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in the array is equal to the search element', function test( t ) { + var actual; + var x; + + x = [ 2.0, 2.0, 2.0 ]; + + actual = gindexOfNotEqual( x.length, 2.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in the array is equal to the search element (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray( [ 2.0, 2.0, 2.0 ] ); + + actual = gindexOfNotEqual( x.length, 2.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = gindexOfNotEqual( 0, 2.0, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfNotEqual( -1, 2.0, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = gindexOfNotEqual( 0, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfNotEqual( -1, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided `searchElement` is `NaN`', function test( t ) { + var actual; + + actual = gindexOfNotEqual( 2, NaN, [ NaN, 1.0 ], 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided `searchElement` is `NaN` (accessors)', function test( t ) { + var actual; + + actual = gindexOfNotEqual( 2, NaN, toAccessorArray( [ NaN, 1.0 ] ), 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + + actual = gindexOfNotEqual( 3, 1.0, x, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + + actual = gindexOfNotEqual( 3, 1.0, toAccessorArray( x ), 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + + x = [ 1.0, 1.0, 1.0, 1.0, 0.0, 1.0 ]; + + actual = gindexOfNotEqual( x.length, 1.0, x, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + + x = [ 1.0, 1.0, 1.0, 1.0, 0.0, 1.0 ]; + + actual = gindexOfNotEqual( x.length, 1.0, toAccessorArray( x ), -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 0 + 9.0, + 1.0, // 1 + 9.0, + 0.0 // 2 + ]; + + actual = gindexOfNotEqual( 3, 1.0, x, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns (accessors)', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 0 + 9.0, + 1.0, // 1 + 9.0, + 0.0 // 2 + ]; + + actual = gindexOfNotEqual( 3, 1.0, toAccessorArray( x ), 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var x1; + + x0 = new Float64Array( [ 9.0, 0.0, 1.0, 0.0, 0.0 ] ); + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + actual = gindexOfNotEqual( 3, 0.0, x1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/test/test.ndarray.js new file mode 100644 index 000000000000..2b80a3a06bcb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-not-equal/test/test.ndarray.js @@ -0,0 +1,294 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gindexOfNotEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gindexOfNotEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a strided array which is not equal to a provided search element', function test( t ) { + var actual; + var x; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + + // Nonnegative stride... + actual = gindexOfNotEqual( x.length, 1.0, x, 1, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 2.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 3.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 4.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + // Negative stride... + x = [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + actual = gindexOfNotEqual( x.length, 1.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 2.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 3.0, x, -1, x.length-1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 4.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element in a strided array which is not equal to a provided search element (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + // Nonnegative stride... + actual = gindexOfNotEqual( x.length, 1.0, x, 1, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 2.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 3.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 4.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + actual = gindexOfNotEqual( x.length, 1.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 2.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 3.0, x, -1, x.length-1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfNotEqual( x.length, 4.0, x, -1, x.length-1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in the array is equal to the search element', function test( t ) { + var actual; + var x; + + x = [ 2.0, 2.0, 2.0 ]; + + actual = gindexOfNotEqual( x.length, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every indexed element in the array is equal to the search element (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray( [ 2.0, 2.0, 2.0 ] ); + + actual = gindexOfNotEqual( x.length, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = gindexOfNotEqual( 0, 2.0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfNotEqual( -1, 2.0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = gindexOfNotEqual( 0, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfNotEqual( -1, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided `searchElement` is `NaN`', function test( t ) { + var actual; + + actual = gindexOfNotEqual( 2, NaN, [ NaN, 1.0 ], 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided `searchElement` is `NaN` (accessors)', function test( t ) { + var actual; + + actual = gindexOfNotEqual( 2, NaN, toAccessorArray( [ NaN, 1.0 ] ), 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + + x = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + + actual = gindexOfNotEqual( 3, 0.0, x, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + + x = [ + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + + actual = gindexOfNotEqual( 3, 0.0, toAccessorArray( x ), 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var actual; + var x; + + x = [ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + + actual = gindexOfNotEqual( 3, 0.0, x, 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` offset (accessors)', function test( t ) { + var actual; + var x; + + x = [ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + + actual = gindexOfNotEqual( 3, 0.0, toAccessorArray( x ), 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + + x = [ 5.0, 4.0, 3.0, 2.0, 1.0, 0.0 ]; + + actual = gindexOfNotEqual( x.length, 0.0, x, -1, x.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + + x = [ 5.0, 4.0, 3.0, 2.0, 1.0, 0.0 ]; + + actual = gindexOfNotEqual( x.length, 0.0, toAccessorArray( x ), -1, x.length-1 ); // eslint-disable-line max-len + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + + x = [ + 9.0, + 0.0, // 0 + 9.0, + 0.0, // 1 + 9.0, + 1.0 // 2 + ]; + + actual = gindexOfNotEqual( 3, 0.0, x, 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/README.md b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/README.md new file mode 100644 index 000000000000..845fa63a226a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/README.md @@ -0,0 +1,187 @@ + + +# gindexOfSameValue + +> Return the index of the first element in a strided array which has the same value as a provided search element. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var gindexOfSameValue = require( '@stdlib/blas/ext/base/gindex-of-same-value' ); +``` + +#### gindexOfSameValue( N, searchElement, x, strideX ) + +Returns the index of the first element in a strided array which has the same value as a provided search element. + +```javascript +var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, 3.0 ]; + +var idx = gindexOfSameValue( x.length, 3.0, x, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **x**: input array. +- **strideX**: stride length. + +If the function is unable to find a search element, the function returns `-1`. + +```javascript +var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, 3.0 ]; + +var idx = gindexOfSameValue( x.length, 8.0, x, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to search every other element: + +```javascript +var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, 3.0 ]; + +var idx = gindexOfSameValue( 4, -1.0, x, 2 ); +// returns 3 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial array... +var x0 = new Float64Array( [ 1.0, -2.0, 3.0, -4.0, 5.0, -6.0 ] ); + +// Create an offset view... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = gindexOfSameValue( 3, -6.0, x1, 2 ); +// returns 2 +``` + +#### gindexOfSameValue.ndarray( N, searchElement, x, strideX, offsetX ) + +Returns the index of the first element in a strided array which has the same value as a provided search element using alternative indexing semantics. + +```javascript +var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, 3.0 ]; + +var idx = gindexOfSameValue.ndarray( x.length, 3.0, x, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements of the strided array: + +```javascript +var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, 3.0 ]; + +var idx = gindexOfSameValue.ndarray( 3, 3.0, x, 1, x.length-3 ); +// returns 2 +``` + +
+ + + + + +
+ +## Notes + +- When searching for a search element, the function checks for equality using the same value algorithm. As a consequence, `NaN` values are considered equal, and `-0` and `+0` are considered distinct. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gindexOfSameValue = require( '@stdlib/blas/ext/base/gindex-of-same-value' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'generic' +}); +console.log( x ); + +var idx = gindexOfSameValue( x.length, 80.0, x, 1 ); +console.log( idx ); +``` + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/benchmark/benchmark.js new file mode 100644 index 000000000000..4b482710e337 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/benchmark/benchmark.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gindexOfSameValue = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gindexOfSameValue( x.length, len+1, x, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..5d79117799b8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/benchmark/benchmark.ndarray.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gindexOfSameValue = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gindexOfSameValue( x.length, len+1, x, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/docs/repl.txt new file mode 100644 index 000000000000..5de6c917b347 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/docs/repl.txt @@ -0,0 +1,95 @@ + +{{alias}}( N, searchElement, x, strideX ) + Returns the index of the first element in a strided array which has the same + value as a provided search element. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + x: Array|TypedArray + Input array. + + strideX: integer + Stride length. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, -1.0, -3.0 ]; + > var idx = {{alias}}( x.length, 1.0, x, 1 ) + 1 + + // Using `N` and stride parameters: + > x = [ -2.0, 1.0, 3.0, -5.0, 4.0, -1.0, -3.0 ]; + > var idx = {{alias}}( 3, 4.0, x, 2 ) + 2 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ -2.0, 1.0, 3.0, -5.0, 4.0, -1.0, -3.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var idx = {{alias}}( 3, -1.0, x1, 2 ) + 2 + + +{{alias}}.ndarray( N, searchElement, x, strideX, offsetX ) + Returns the index of the first element in a strided array which has the same + value as a provided search element using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: any + Search element. + + x: Array|TypedArray + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, -1.0, -3.0 ]; + > var idx = {{alias}}.ndarray( x.length, 1.0, x, 1, 0 ) + 1 + + // Advanced indexing: + > x = [ -2.0, 1.0, 3.0, -5.0, 4.0, -1.0, -3.0 ]; + > var idx = {{alias}}.ndarray( 3, -1.0, x, 2, 1 ) + 2 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/docs/types/index.d.ts new file mode 100644 index 000000000000..bd82c8151ece --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/docs/types/index.d.ts @@ -0,0 +1,108 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `gindexOfSameValue`. +*/ +interface Routine { + /** + * Returns the index of the first element in a strided array which has the same value as a provided search element. + * + * ## Notes + * + * - If the function is unable to find a search element, the function returns `-1`. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param x - input array + * @param strideX - stride length + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * + * var idx = gindexOfSameValue( x.length, 2.0, x, 1 ); + * // returns 1 + */ + ( N: number, searchElement: unknown, x: InputArray, strideX: number ): number; + + /** + * Returns the index of the first element in a strided array which has the same value as a provided search element using alternative indexing semantics. + * + * ## Notes + * + * - If the function is unable to find a search element, the function returns `-1`. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * + * var idx = gindexOfSameValue.ndarray( x.length, 2.0, x, 1, 0 ); + * // returns 1 + */ + ndarray( N: number, searchElement: unknown, x: InputArray, strideX: number, offsetX: number ): number; +} + +/** +* Returns the index of the first element in a strided array which has the same value as a provided search element. +* +* ## Notes +* +* - If the function is unable to find a search element, the function returns `-1`. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param x - input array +* @param strideX - stride length +* @returns index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* +* var idx = gindexOfSameValue( x.length, 2.0, x, 1 ); +* // returns 1 +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* +* var idx = gindexOfSameValue.ndarray( x.length, 2.0, x, 1, 0 ); +* // returns 1 +*/ +declare var gindexOfSameValue: Routine; + + +// EXPORTS // + +export = gindexOfSameValue; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/docs/types/test.ts new file mode 100644 index 000000000000..45303172e20f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/docs/types/test.ts @@ -0,0 +1,129 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gindexOfSameValue = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfSameValue( x.length, 2.0, x, 1 ); // $ExpectType number + gindexOfSameValue( x.length, 2.0, new AccessorArray( x ), 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfSameValue( '1', 2.0, x, 1 ); // $ExpectError + gindexOfSameValue( true, 2.0, x, 1 ); // $ExpectError + gindexOfSameValue( false, 2.0, x, 1 ); // $ExpectError + gindexOfSameValue( null, 2.0, x, 1 ); // $ExpectError + gindexOfSameValue( {}, 2.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a collection... +{ + gindexOfSameValue( x.length, 1.0, 1, 1 ); // $ExpectError + gindexOfSameValue( x.length, 1.0, true, 1 ); // $ExpectError + gindexOfSameValue( x.length, 1.0, false, 1 ); // $ExpectError + gindexOfSameValue( x.length, 1.0, null, 1 ); // $ExpectError + gindexOfSameValue( x.length, 1.0, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfSameValue( x.length, 2.0, x, '1' ); // $ExpectError + gindexOfSameValue( x.length, 2.0, x, true ); // $ExpectError + gindexOfSameValue( x.length, 2.0, x, false ); // $ExpectError + gindexOfSameValue( x.length, 2.0, x, null ); // $ExpectError + gindexOfSameValue( x.length, 2.0, x, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + gindexOfSameValue(); // $ExpectError + gindexOfSameValue( 3, 2.0 ); // $ExpectError + gindexOfSameValue( 3, 2.0, [ 1.0, 2.0, 3.0 ] ); // $ExpectError + gindexOfSameValue( 3, 2.0, [ 1.0, 2.0, 3.0 ], 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfSameValue.ndarray( x.length, 2.0, x, 1, 0 ); // $ExpectType number + gindexOfSameValue.ndarray( x.length, 2.0, new AccessorArray( x ), 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfSameValue.ndarray( '1', 2.0, x, 1, 1 ); // $ExpectError + gindexOfSameValue.ndarray( true, 2.0, x, 1, 1 ); // $ExpectError + gindexOfSameValue.ndarray( false, 2.0, x, 1, 1 ); // $ExpectError + gindexOfSameValue.ndarray( null, 2.0, x, 1, 1 ); // $ExpectError + gindexOfSameValue.ndarray( {}, 2.0, x, 1, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a collection... +{ + gindexOfSameValue.ndarray( x.length, 1.0, 1, 1, 1 ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 1.0, true, 1, 1 ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 1.0, false, 1, 1 ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 1.0, null, 1, 1 ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 1.0, {}, 1, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfSameValue.ndarray( x.length, 2.0, x, '1', 1 ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 2.0, x, true, 1 ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 2.0, x, false, 1 ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 2.0, x, null, 1 ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 2.0, x, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + gindexOfSameValue.ndarray( x.length, 2.0, x, 1, '1' ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 2.0, x, 1, true ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 2.0, x, 1, false ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 2.0, x, 1, null ); // $ExpectError + gindexOfSameValue.ndarray( x.length, 2.0, x, 1, {} ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + gindexOfSameValue.ndarray(); // $ExpectError + gindexOfSameValue.ndarray( 3, 2.0 ); // $ExpectError + gindexOfSameValue.ndarray( 3, 2.0, [ 1.0, 2.0, 3.0 ] ); // $ExpectError + gindexOfSameValue.ndarray( 3, 2.0, [ 1.0, 2.0, 3.0 ], 1 ); // $ExpectError + gindexOfSameValue.ndarray( 3, 2.0, [ 1.0, 2.0, 3.0 ], 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/examples/index.js new file mode 100644 index 000000000000..da15251b0f09 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gindexOfSameValue = require( './../lib' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'generic' +}); +console.log( x ); + +var idx = gindexOfSameValue( x.length, 80.0, x, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/accessors.js new file mode 100644 index 000000000000..67aec8c59246 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/accessors.js @@ -0,0 +1,79 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isSameValue = require( '@stdlib/assert/is-same-value' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array which has the same value as a provided search element. +* +* ## Notes +* +* - If the function is unable to find a search element, the function returns `-1`. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {Object} x - input array object +* @param {Collection} x.data - input array data +* @param {Array} x.accessors - array element accessors +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {integer} index +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ]; +* +* var idx = gindexOfSameValue( x.length, 3.0, arraylike2object( toAccessorArray( x ) ), 1, 0 ); +* // returns 2 +*/ +function gindexOfSameValue( N, searchElement, x, strideX, offsetX ) { + var xbuf; + var get; + var ix; + var i; + + // Cache a reference to array data: + xbuf = x.data; + + // Cache a reference to the element accessor: + get = x.accessors[ 0 ]; + + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( isSameValue( searchElement, get( xbuf, ix ) ) ) { + return i; + } + ix += strideX; + } + return -1; +} + + +// EXPORTS // + +module.exports = gindexOfSameValue; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/index.js new file mode 100644 index 000000000000..c33ba5acd785 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the index of the first element in a strided array which has the same value as a provided search element. +* +* @module @stdlib/blas/ext/base/gindex-of-same-value +* +* @example +* var gindexOfSameValue = require( '@stdlib/blas/ext/base/gindex-of-same-value' ); +* +* var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, 3.0 ]; +* +* var idx = gindexOfSameValue( x.length, 3.0, x, 1 ); +* // returns 2 +* +* @example +* var gindexOfSameValue = require( '@stdlib/blas/ext/base/gindex-of-same-value' ); +* +* var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, 3.0 ]; +* +* var idx = gindexOfSameValue.ndarray( x.length, 3.0, x, 1, 0 ); +* // returns 2 +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/main.js new file mode 100644 index 000000000000..3152e658afef --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/main.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array which has the same value as a provided search element. +* +* ## Notes +* +* - If the function is unable to find a search element, the function returns `-1`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @returns {integer} index +* +* @example +* var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, 3.0 ]; +* +* var idx = gindexOfSameValue( x.length, 3.0, x, 1 ); +* // returns 2 +*/ +function gindexOfSameValue( N, searchElement, x, strideX ) { + return ndarray( N, searchElement, x, strideX, stride2offset( N, strideX ) ); +} + + +// EXPORTS // + +module.exports = gindexOfSameValue; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/ndarray.js new file mode 100644 index 000000000000..498194cb040c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/lib/ndarray.js @@ -0,0 +1,75 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var isSameValue = require( '@stdlib/assert/is-same-value' ); +var accessors = require( './accessors.js' ); + + +// MAIN // + +/** +* Returns the index of the first element in a strided array which has the same value as a provided search element using alternative indexing semantics. +* +* ## Notes +* +* - If the function is unable to find a search element, the function returns `-1`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {*} searchElement - search element +* @param {Collection} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {integer} index +* +* @example +* var x = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, 3.0 ]; +* +* var idx = gindexOfSameValue( x.length, 3.0, x, 1, 0 ); +* // returns 2 +*/ +function gindexOfSameValue( N, searchElement, x, strideX, offsetX ) { + var ix; + var o; + var i; + + if ( N <= 0 ) { + return -1; + } + o = arraylike2object( x ); + if ( o.accessorProtocol ) { + return accessors( N, searchElement, o, strideX, offsetX ); + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( isSameValue( searchElement, x[ ix ] ) ) { + return i; + } + ix += strideX; + } + return -1; +} + + +// EXPORTS // + +module.exports = gindexOfSameValue; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/package.json b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/package.json new file mode 100644 index 000000000000..1e2b154954bd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/package.json @@ -0,0 +1,66 @@ +{ + "name": "@stdlib/blas/ext/base/gindex-of-same-value", + "version": "0.0.0", + "description": "Return the index of the first element in a strided array which has the same value as a provided search element.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "search", + "index", + "get", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/test/test.js new file mode 100644 index 000000000000..f4eeb3d43302 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gindexOfSameValue = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gindexOfSameValue, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gindexOfSameValue.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/test/test.main.js new file mode 100644 index 000000000000..be9e03d4951a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/test/test.main.js @@ -0,0 +1,303 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gindexOfSameValue = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gindexOfSameValue, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( gindexOfSameValue.length, 4, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which has the same value as a provided search element', function test( t ) { + var actual; + var x; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + + // Nonnegative stride... + actual = gindexOfSameValue( x.length, 1.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 2.0, x, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 3.0, x, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 4.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + actual = gindexOfSameValue( x.length, 1.0, x, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 2.0, x, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 3.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 4.0, x, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index of an element which has the same value as a provided search element (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + // Nonnegative stride... + actual = gindexOfSameValue( x.length, 1.0, x, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 2.0, x, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 3.0, x, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 4.0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + actual = gindexOfSameValue( x.length, 1.0, x, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 2.0, x, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 3.0, x, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 4.0, x, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = gindexOfSameValue( 0, 2.0, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( -1, 2.0, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = gindexOfSameValue( 0, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( -1, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index when searching for `NaN`', function test( t ) { + var actual; + + actual = gindexOfSameValue( 1, NaN, [ NaN ], 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index when searching for `NaN` (accessors)', function test( t ) { + var actual; + + actual = gindexOfSameValue( 1, NaN, toAccessorArray( [ NaN ] ), 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function distinguishes between -0 and +0', function test( t ) { + var actual; + + actual = gindexOfSameValue( 1, 0.0, [ -0.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( 1, -0.0, [ 0.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( 1, 0.0, [ 0.0 ], 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( 1, -0.0, [ -0.0 ], 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function distinguishes between -0 and +0 (accessors)', function test( t ) { + var actual; + + actual = gindexOfSameValue( 1, 0.0, toAccessorArray( [ -0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( 1, -0.0, toAccessorArray( [ 0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( 1, 0.0, toAccessorArray( [ 0.0 ] ), 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( 1, -0.0, toAccessorArray( [ -0.0 ] ), 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + + actual = gindexOfSameValue( 3, 3.0, x, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + + actual = gindexOfSameValue( 3, 3.0, x, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + + actual = gindexOfSameValue( 3, 3.0, x, -2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + + actual = gindexOfSameValue( 3, 3.0, x, -2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]; + + actual = gindexOfSameValue( 3, 3.0, x, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var x1; + + // Initial array... + x0 = new Float64Array([ + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]); + + // Create offset view... + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + + actual = gindexOfSameValue( 3, 4.0, x1, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/test/test.ndarray.js new file mode 100644 index 000000000000..0a9db7c83df4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of-same-value/test/test.ndarray.js @@ -0,0 +1,323 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gindexOfSameValue = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gindexOfSameValue, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gindexOfSameValue.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which has the same value as a provided search element', function test( t ) { + var actual; + var x; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + + // Nonnegative stride... + actual = gindexOfSameValue( x.length, 1.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( x.length-1, 2.0, x, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = gindexOfSameValue( x.length-2, 3.0, x, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfSameValue( x.length-2, 4.0, x, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + actual = gindexOfSameValue( x.length, 1.0, x, -1, x.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + actual = gindexOfSameValue( 3, 2.0, x, -2, x.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = gindexOfSameValue( 3, 1.0, x, -2, x.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 4.0, x, -1, x.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index of an element which has the same value as a provided search element (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + // Nonnegative stride... + actual = gindexOfSameValue( x.length, 1.0, x, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( x.length-1, 2.0, x, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = gindexOfSameValue( x.length-2, 3.0, x, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfSameValue( x.length-2, 4.0, x, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + actual = gindexOfSameValue( x.length, 1.0, x, -1, x.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + actual = gindexOfSameValue( 3, 2.0, x, -2, x.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = gindexOfSameValue( 3, 1.0, x, -2, x.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + actual = gindexOfSameValue( x.length, 4.0, x, -1, x.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = gindexOfSameValue( 0, 2.0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( -1, 2.0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray( [ 1.0, 2.0, 3.0 ] ); + + actual = gindexOfSameValue( 0, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( -1, 2.0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index when searching for `NaN`', function test( t ) { + var actual; + + actual = gindexOfSameValue( 1, NaN, [ NaN ], 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the first index when searching for `NaN` (accessors)', function test( t ) { + var actual; + + actual = gindexOfSameValue( 1, NaN, toAccessorArray( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function distinguishes between -0 and +0', function test( t ) { + var actual; + + actual = gindexOfSameValue( 1, 0.0, [ -0.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( 1, -0.0, [ 0.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( 1, 0.0, [ 0.0 ], 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( 1, -0.0, [ -0.0 ], 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function distinguishes between -0 and +0 (accessors)', function test( t ) { + var actual; + + actual = gindexOfSameValue( 1, 0.0, toAccessorArray( [ -0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( 1, -0.0, toAccessorArray( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = gindexOfSameValue( 1, 0.0, toAccessorArray( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = gindexOfSameValue( 1, -0.0, toAccessorArray( [ -0.0 ] ), 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + + actual = gindexOfSameValue( 3, 3.0, x, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + + actual = gindexOfSameValue( 3, 3.0, x, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + + actual = gindexOfSameValue( 3, 3.0, x, -2, 4 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + + actual = gindexOfSameValue( 3, 3.0, x, -2, 4 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var actual; + var x; + + x = [ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]; + + actual = gindexOfSameValue( 4, 2.0, x, 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` offset (accessors)', function test( t ) { + var actual; + var x; + + x = toAccessorArray([ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]); + + actual = gindexOfSameValue( 4, 2.0, x, 2, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]; + + actual = gindexOfSameValue( 3, 3.0, x, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gindex-of/docs/repl.txt index 1c55282b286d..64fd6f8de899 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/gindex-of/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of/docs/repl.txt @@ -36,7 +36,7 @@ 1 -{{alias}}( N, searchElement, x, strideX, offsetX ) +{{alias}}.ndarray( N, searchElement, x, strideX, offsetX ) Returns the first index of a specified search element in a strided array using alternative indexing semantics. diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of/test/test.main.js index 3ced0ed6d992..56a6cd5d8aac 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/gindex-of/test/test.main.js +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of/test/test.main.js @@ -108,7 +108,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { var actual; actual = gindexOf( 0, 2.0, [ 1.0, 2.0, 3.0 ], 1 ); @@ -120,7 +120,7 @@ tape( 'the function returns `-1` if provided `N` parameter is less than or equal t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { var actual; actual = gindexOf( 0, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gindex-of/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gindex-of/test/test.ndarray.js index 681a34ae8878..4d1b4a570710 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/gindex-of/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/gindex-of/test/test.ndarray.js @@ -108,7 +108,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { var actual; actual = gindexOf( 0, 2.0, [ 1.0, 2.0, 3.0 ], 1, 0 ); @@ -120,7 +120,7 @@ tape( 'the function returns `-1` if provided an `N` parameter is less than or eq t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero (accessors)', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero (accessors)', function test( t ) { var actual; actual = gindexOf( 0, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/README.md new file mode 100644 index 000000000000..24722730328c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/README.md @@ -0,0 +1,201 @@ + + +# glastIndexEqual + +> Return the index of the last element in a strided array equal to a corresponding element in another strided array. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var glastIndexEqual = require( '@stdlib/blas/ext/base/glast-index-equal' ); +``` + +#### glastIndexEqual( N, x, strideX, y, strideY ) + +Returns the index of the last element in a strided array equal to a corresponding element in another strided array. + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0 ]; +var y = [ 0.0, 0.0, 3.0, 0.0 ]; + +var idx = glastIndexEqual( x.length, x, 1, y, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: first input array. +- **strideX**: stride length for `x`. +- **y**: second input array. +- **strideY**: stride length for `y`. + +If the function is unable to find matching elements, the function returns `-1`. + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0 ]; +var y = [ 5.0, 6.0, 7.0, 8.0 ]; + +var idx = glastIndexEqual( x.length, x, 1, y, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compare every other element: + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; +var y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + +var idx = glastIndexEqual( 3, x, 2, y, 2 ); +// returns 1 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y0 = new Float64Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = glastIndexEqual( 2, x1, 1, y1, 1 ); +// returns 1 +``` + +#### glastIndexEqual.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Returns the index of the last element in a strided array equal to a corresponding element in another strided array using alternative indexing semantics. + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0 ]; +var y = [ 0.0, 0.0, 3.0, 0.0 ]; + +var idx = glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to access only the last three elements of each strided array: + +```javascript +var x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; +var y = [ 0.0, 0.0, 0.0, 4.0, 5.0, 6.0 ]; + +var idx = glastIndexEqual.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// returns 2 +``` + +
+ + + + + +
+ +## Notes + +- When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct, and `-0` and `+0` are considered the same. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var glastIndexEqual = require( '@stdlib/blas/ext/base/glast-index-equal' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = glastIndexEqual( x.length, x, 1, y, 1 ); +console.log( idx ); +``` + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..cd6d0397b75a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/benchmark/benchmark.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var glastIndexEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = glastIndexEqual( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..406963bda924 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var glastIndexEqual = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float64' ); + var y = zeros( len, 'float64' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = glastIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/docs/repl.txt new file mode 100644 index 000000000000..4ea27fa169e5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/docs/repl.txt @@ -0,0 +1,111 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Returns the index of the last element in a strided array equal to a + corresponding element in another strided array. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 1.0, 2.0, 3.0, 4.0 ]; + > var y = [ 0.0, 0.0, 3.0, 0.0 ]; + > var idx = {{alias}}( x.length, x, 1, y, 1 ) + 2 + + // Using `N` and stride parameters: + > x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + > idx = {{alias}}( 3, x, 2, y, 2 ) + 1 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > var y0 = new {{alias:@stdlib/array/float64}}( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + > idx = {{alias}}( 3, x1, 2, y1, 2 ) + -1 + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Returns the index of the last element in a strided array equal to a + corresponding element in another strided array using alternative indexing + semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on + starting indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + First input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Array|TypedArray + Second input array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = [ 1.0, 2.0, 3.0, 4.0 ]; + > var y = [ 0.0, 0.0, 3.0, 0.0 ]; + > var idx = {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + 2 + + // Using offsets: + > x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + > idx = {{alias}}.ndarray( 3, x, 2, 1, y, 2, 2 ) + -1 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..d6819d0cf3c9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/docs/types/index.d.ts @@ -0,0 +1,116 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = Collection | AccessorArrayLike; + +/** +* Interface describing `glastIndexEqual`. +*/ +interface Routine { + /** + * Returns the index of the last element in a strided array equal to a corresponding element in another strided array. + * + * ## Notes + * + * - If the function is unable to find matching elements, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 0.0, 0.0, 3.0, 0.0 ]; + * + * var idx = glastIndexEqual( x.length, x, 1, y, 1 ); + * // returns 2 + */ + ( N: number, x: InputArray, strideX: number, y: InputArray, strideY: number ): number; + + /** + * Returns the index of the last element in a strided array equal to a corresponding element in another strided array using alternative indexing semantics. + * + * ## Notes + * + * - If the function is unable to find matching elements, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param offsetY - starting index for `y` + * @returns index + * + * @example + * var x = [ 1.0, 2.0, 3.0, 4.0 ]; + * var y = [ 0.0, 0.0, 3.0, 0.0 ]; + * + * var idx = glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, x: InputArray, strideX: number, offsetX: number, y: InputArray, strideY: number, offsetY: number ): number; +} + +/** +* Returns the index of the last element in a strided array equal to a corresponding element in another strided array. +* +* ## Notes +* +* - If the function is unable to find matching elements, the function returns `-1`. +* +* @param N - number of indexed elements +* @param x - first input array +* @param strideX - stride length for `x` +* @param y - second input array +* @param strideY - stride length for `y` +* @returns index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 0.0, 0.0, 3.0, 0.0 ]; +* +* var idx = glastIndexEqual( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 0.0, 0.0, 3.0, 0.0 ]; +* +* var idx = glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +declare var glastIndexEqual: Routine; + + +// EXPORTS // + +export = glastIndexEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/docs/types/test.ts new file mode 100644 index 000000000000..e9d804868a30 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/docs/types/test.ts @@ -0,0 +1,237 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import glastIndexEqual = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual( x.length, x, 1, y, 1 ); // $ExpectType number + glastIndexEqual( x.length, new AccessorArray( x ), 1, new AccessorArray( y ), 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual( '1', x, 1, y, 1 ); // $ExpectError + glastIndexEqual( true, x, 1, y, 1 ); // $ExpectError + glastIndexEqual( false, x, 1, y, 1 ); // $ExpectError + glastIndexEqual( null, x, 1, y, 1 ); // $ExpectError + glastIndexEqual( undefined, x, 1, y, 1 ); // $ExpectError + glastIndexEqual( [], x, 1, y, 1 ); // $ExpectError + glastIndexEqual( {}, x, 1, y, 1 ); // $ExpectError + glastIndexEqual( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a collection... +{ + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual( 3, 10, 1, y, 1 ); // $ExpectError + glastIndexEqual( 3, true, 1, y, 1 ); // $ExpectError + glastIndexEqual( 3, false, 1, y, 1 ); // $ExpectError + glastIndexEqual( 3, null, 1, y, 1 ); // $ExpectError + glastIndexEqual( 3, undefined, 1, y, 1 ); // $ExpectError + glastIndexEqual( 3, {}, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual( x.length, x, '1', y, 1 ); // $ExpectError + glastIndexEqual( x.length, x, true, y, 1 ); // $ExpectError + glastIndexEqual( x.length, x, false, y, 1 ); // $ExpectError + glastIndexEqual( x.length, x, null, y, 1 ); // $ExpectError + glastIndexEqual( x.length, x, undefined, y, 1 ); // $ExpectError + glastIndexEqual( x.length, x, [], y, 1 ); // $ExpectError + glastIndexEqual( x.length, x, {}, y, 1 ); // $ExpectError + glastIndexEqual( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a collection... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual( x.length, x, 1, 10, 1 ); // $ExpectError + glastIndexEqual( x.length, x, 1, true, 1 ); // $ExpectError + glastIndexEqual( x.length, x, 1, false, 1 ); // $ExpectError + glastIndexEqual( x.length, x, 1, null, 1 ); // $ExpectError + glastIndexEqual( x.length, x, 1, undefined, 1 ); // $ExpectError + glastIndexEqual( x.length, x, 1, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual( x.length, x, 1, y, '1' ); // $ExpectError + glastIndexEqual( x.length, x, 1, y, true ); // $ExpectError + glastIndexEqual( x.length, x, 1, y, false ); // $ExpectError + glastIndexEqual( x.length, x, 1, y, null ); // $ExpectError + glastIndexEqual( x.length, x, 1, y, undefined ); // $ExpectError + glastIndexEqual( x.length, x, 1, y, [] ); // $ExpectError + glastIndexEqual( x.length, x, 1, y, {} ); // $ExpectError + glastIndexEqual( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual(); // $ExpectError + glastIndexEqual( 3 ); // $ExpectError + glastIndexEqual( 3, x ); // $ExpectError + glastIndexEqual( 3, x, 1 ); // $ExpectError + glastIndexEqual( 3, x, 1, y ); // $ExpectError + glastIndexEqual( 3, x, 1, y, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType number + glastIndexEqual.ndarray( x.length, new AccessorArray( x ), 1, 0, new AccessorArray( y ), 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual.ndarray( '1', x, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a collection... +{ + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual.ndarray( 3, 10, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( 3, true, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( 3, false, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( 3, null, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( 3, undefined, 1, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( 3, {}, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual.ndarray( x.length, x, '1', 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual.ndarray( x.length, x, 1, '1', y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a collection... +{ + var x = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual.ndarray( x.length, x, 1, 0, 10, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, true, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, false, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, null, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, undefined, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual.ndarray( x.length, x, 1, 0, y, '1', 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, '1' ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + var x = [ 1.0, 2.0, 3.0 ]; + var y = [ 1.0, 2.0, 3.0 ]; + + glastIndexEqual.ndarray(); // $ExpectError + glastIndexEqual.ndarray( 3 ); // $ExpectError + glastIndexEqual.ndarray( 3, x ); // $ExpectError + glastIndexEqual.ndarray( 3, x, 1 ); // $ExpectError + glastIndexEqual.ndarray( 3, x, 1, 0 ); // $ExpectError + glastIndexEqual.ndarray( 3, x, 1, 0, y ); // $ExpectError + glastIndexEqual.ndarray( 3, x, 1, 0, y, 1 ); // $ExpectError + glastIndexEqual.ndarray( 3, x, 1, 0, y, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/examples/index.js new file mode 100644 index 000000000000..6c20682c62f2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var glastIndexEqual = require( './../lib' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'generic' +}); +console.log( y ); + +var idx = glastIndexEqual( x.length, x, 1, y, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/lib/index.js new file mode 100644 index 000000000000..24db051ccbe4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/lib/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the index of the last element in a strided array equal to a corresponding element in another strided array. +* +* @module @stdlib/blas/ext/base/glast-index-equal +* +* @example +* var glastIndexEqual = require( '@stdlib/blas/ext/base/glast-index-equal' ); +* +* var x = [ 1.0, 2.0, 3.0, 4.0, 5.0 ]; +* var y = [ 5.0, 4.0, 3.0, 2.0, 1.0 ]; +* +* var idx = glastIndexEqual( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var glastIndexEqual = require( '@stdlib/blas/ext/base/glast-index-equal' ); +* +* var x = [ 1.0, 2.0, 3.0, 4.0, 5.0 ]; +* var y = [ 5.0, 4.0, 3.0, 2.0, 1.0 ]; +* +* var idx = glastIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/lib/main.js new file mode 100644 index 000000000000..84c927d2de7a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/lib/main.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Returns the index of the last element in a strided array equal to a corresponding element in another strided array. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @returns {integer} index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 0.0, 0.0, 3.0, 0.0 ]; +* +* var idx = glastIndexEqual( x.length, x, 1, y, 1 ); +* // returns 2 +*/ +function glastIndexEqual( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = glastIndexEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/lib/ndarray.js new file mode 100644 index 000000000000..aa20112736b8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/lib/ndarray.js @@ -0,0 +1,71 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var gfirstIndexEqual = require( '@stdlib/blas/ext/base/gfirst-index-equal' ).ndarray; + + +// MAIN // + +/** +* Returns the index of the last element in a strided array equal to a corresponding element in another strided array using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Collection} x - first input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Collection} y - second input array +* @param {integer} strideY - stride length for `y` +* @param {NonNegativeInteger} offsetY - starting index for `y` +* @returns {integer} index +* +* @example +* var x = [ 1.0, 2.0, 3.0, 4.0 ]; +* var y = [ 0.0, 0.0, 3.0, 0.0 ]; +* +* var idx = glastIndexEqual( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +function glastIndexEqual( N, x, strideX, offsetX, y, strideY, offsetY ) { + var idx; + + if ( N <= 0 ) { + return -1; + } + // Reverse the iteration order by flipping the strides and adjusting the offsets: + offsetX += ( N-1 ) * strideX; + offsetY += ( N-1 ) * strideY; + strideX *= -1; + strideY *= -1; + + // Find the index of the first matching element in the reversed "views": + idx = gfirstIndexEqual( N, x, strideX, offsetX, y, strideY, offsetY ); + if ( idx < 0 ) { + return idx; + } + // Convert the index from the reversed "views" to an index in the original "views": + return N - 1 - idx; +} + + +// EXPORTS // + +module.exports = glastIndexEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/package.json new file mode 100644 index 000000000000..b28526580248 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/package.json @@ -0,0 +1,66 @@ +{ + "name": "@stdlib/blas/ext/base/glast-index-equal", + "version": "0.0.0", + "description": "Return the index of the last element in a strided array equal to a corresponding element in another strided array.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "equal", + "index", + "compare", + "strided", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/test/test.js new file mode 100644 index 000000000000..cfe36fba948c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var glastIndexEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof glastIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof glastIndexEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/test/test.main.js new file mode 100644 index 000000000000..74f2f1c1a9cd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/test/test.main.js @@ -0,0 +1,440 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var glastIndexEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof glastIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( glastIndexEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the last index of an element which equals a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ]; + + // Nonnegative stride... + actual = glastIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ]; + + actual = glastIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ]; + + actual = glastIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( 3, x, 2, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 3.0 ]; + + actual = glastIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the last index of an element which equals a corresponding element in another array (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = glastIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = glastIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = glastIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = glastIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = glastIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = glastIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 0.0, 3.0 ] ); + + actual = glastIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = glastIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + + actual = glastIndexEqual( 0, [ 1.0, 2.0, 3.0 ], 1, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = glastIndexEqual( -1, [ 1.0, 2.0, 3.0 ], 1, [ 1.0, 2.0, 3.0 ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = glastIndexEqual( 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = glastIndexEqual( -1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN`', function test( t ) { + var actual; + + actual = glastIndexEqual( 1, [ NaN ], 1, [ NaN ], 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN` (accessors)', function test( t ) { + var actual; + + actual = glastIndexEqual( 1, toAccessorArray( [ NaN ] ), 1, toAccessorArray( [ NaN ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = glastIndexEqual( 1, [ -0.0 ], 1, [ 0.0 ], 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal (accessors)', function test( t ) { + var actual; + + actual = glastIndexEqual( 1, toAccessorArray( [ -0.0 ] ), 1, toAccessorArray( [ 0.0 ] ), 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, x, 2, y, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, toAccessorArray( x ), 2, toAccessorArray( y ), 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]; + + actual = glastIndexEqual( 3, x, 1, y, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]; + + actual = glastIndexEqual( 3, toAccessorArray( x ), 1, toAccessorArray( y ), 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, x, -2, y, -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, toAccessorArray( x ), -2, toAccessorArray( y ), -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]; + y = [ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, x, 2, y, -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float64Array([ + 1.0, + 2.0, // 2 + 3.0, + 4.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float64Array([ + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 4.0, // 1 + 0.0 // 2 + ]); + + // Create offset views... + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = glastIndexEqual( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/test/test.ndarray.js new file mode 100644 index 000000000000..5966a6b45af9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-equal/test/test.ndarray.js @@ -0,0 +1,405 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var glastIndexEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof glastIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( glastIndexEqual.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the last index of an element which equals a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ]; + + // Nonnegative stride... + actual = glastIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ]; + + actual = glastIndexEqual( x.length-1, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ]; + + actual = glastIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + y = [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ]; + y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + + actual = glastIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the last index of an element which equals a corresponding element in another array (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = glastIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = glastIndexEqual( x.length-1, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = glastIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = glastIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = glastIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = glastIndexEqual( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = toAccessorArray( [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = glastIndexEqual( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = toAccessorArray( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = toAccessorArray( [ 5.0, 6.0, 7.0, 8.0 ] ); + + actual = glastIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + + actual = glastIndexEqual( 0, [ 1.0, 2.0, 3.0 ], 1, 0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = glastIndexEqual( -1, [ 1.0, 2.0, 3.0 ], 1, 0, [ 1.0, 2.0, 3.0 ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero (accessors)', function test( t ) { + var actual; + + actual = glastIndexEqual( 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = glastIndexEqual( -1, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN`', function test( t ) { + var actual; + + actual = glastIndexEqual( 1, [ NaN ], 1, 0, [ NaN ], 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN` (accessors)', function test( t ) { + var actual; + + actual = glastIndexEqual( 1, toAccessorArray( [ NaN ] ), 1, 0, toAccessorArray( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = glastIndexEqual( 1, [ -0.0 ], 1, 0, [ 0.0 ], 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal (accessors)', function test( t ) { + var actual; + + actual = glastIndexEqual( 1, toAccessorArray( [ -0.0 ] ), 1, 0, toAccessorArray( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]; + y = [ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, toAccessorArray( x ), 2, 0, toAccessorArray( y ), 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]; + + actual = glastIndexEqual( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]; + y = [ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]; + + actual = glastIndexEqual( 3, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]; + y = [ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, toAccessorArray( x ), -2, 4, toAccessorArray( y ), -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]; + y = [ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]; + + actual = glastIndexEqual( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/lib/ndarray.js index 1cc55de2dfd6..885da3022418 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/lib/ndarray.js @@ -57,8 +57,7 @@ function glastIndexOf( N, searchElement, x, strideX, offsetX ) { return idx; } // Convert the index from reversed "view" to an index in the original "view": - idx = N - 1 - idx; - return idx; + return N - 1 - idx; } diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/test/test.main.js index c8dcccab256e..8308a0003707 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/test/test.main.js +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/test/test.main.js @@ -103,7 +103,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { var actual; actual = glastIndexOf( 0, 2.0, [ 1.0, 2.0, 3.0 ], 1 ); @@ -115,7 +115,7 @@ tape( 'the function returns `-1` if provided `N` parameter is less than or equal t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero (accessors)', function test( t ) { var actual; actual = glastIndexOf( 0, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/test/test.ndarray.js index be2665328d63..abdafdc8aa8f 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/glast-index-of/test/test.ndarray.js @@ -103,7 +103,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { var actual; actual = glastIndexOf( 0, 2.0, [ 1.0, 2.0, 3.0 ], 1, 0 ); @@ -115,7 +115,7 @@ tape( 'the function returns `-1` if provided an `N` parameter is less than or eq t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero (accessors)', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero (accessors)', function test( t ) { var actual; actual = glastIndexOf( 0, 2.0, toAccessorArray( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gnancount/package.json b/lib/node_modules/@stdlib/blas/ext/base/gnancount/package.json index 4e9c8c3eae14..c1353eea6335 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/gnancount/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/gnancount/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/gnancount", "version": "0.0.0", - "description": "Calculate the number of non-`NaN` elements in a strided array.", + "description": "Calculate the number of non-NaN elements in a strided array.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/README.md b/lib/node_modules/@stdlib/blas/ext/base/gxdy/README.md new file mode 100644 index 000000000000..7612101349b2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/README.md @@ -0,0 +1,190 @@ + + +# gxdy + +> Divide elements of a strided array `x` by the corresponding elements of a strided array `y` and assign the results to `y`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \oslash \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var gxdy = require( '@stdlib/blas/ext/base/gxdy' ); +``` + +#### gxdy( N, x, strideX, y, strideY ) + +Divides elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y`. + +```javascript +var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; +var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + +gxdy( x.length, x, 1, y, 1 ); +// y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: input [`Array`][mdn-array] or [`typed array`][mdn-typed-array]. +- **strideX**: stride length for `x`. +- **y**: output [`Array`][mdn-array] or [`typed array`][mdn-typed-array]. +- **strideY**: stride length for `y`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to divide every other element of `x` by every other element of `y`: + +```javascript +var x = [ 6.0, 2.0, 20.0, 4.0, 30.0, 6.0 ]; +var y = [ 2.0, 8.0, 4.0, 10.0, 5.0, 12.0 ]; + +gxdy( 3, x, 2, y, 2 ); +// y => [ 3.0, 8.0, 5.0, 10.0, 6.0, 12.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +// Initial arrays... +var x0 = new Float64Array( [ 1.0, 6.0, 12.0, 20.0, 5.0, 6.0 ] ); +var y0 = new Float64Array( [ 7.0, 8.0, 2.0, 3.0, 4.0, 12.0 ] ); + +// Create offset views... +var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +gxdy( 3, x1, 1, y1, 1 ); +// y0 => [ 7.0, 8.0, 3.0, 4.0, 5.0, 12.0 ] +``` + +#### gxdy.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Divides elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```javascript +var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; +var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + +gxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to divide the last three elements of `x` by the last three elements of `y`: + +```javascript +var x = [ 1.0, 2.0, 12.0, 20.0, 30.0 ]; +var y = [ 6.0, 7.0, 3.0, 4.0, 5.0 ]; + +gxdy.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// y => [ 6.0, 7.0, 4.0, 5.0, 6.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `y` unchanged. +- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array/base/accessor`][@stdlib/array/base/accessor]). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gxdy = require( '@stdlib/blas/ext/base/gxdy' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +var y = discreteUniform( 10, 1, 100, { + 'dtype': 'float64' +}); +console.log( y ); + +gxdy( x.length, x, 1, y, 1 ); +console.log( y ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/benchmark/benchmark.js new file mode 100644 index 000000000000..6c0e7a658837 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/benchmark/benchmark.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gxdy = require( './../lib/main.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var y = uniform( len, 1, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = gxdy( x.length, x, 1, y, 1 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..d88eb2577b73 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/benchmark/benchmark.ndarray.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gxdy = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var y = uniform( len, 1, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = gxdy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/gxdy/docs/repl.txt new file mode 100644 index 000000000000..54d50e561ab7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/docs/repl.txt @@ -0,0 +1,118 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Divides elements of a strided array `x` by the corresponding elements of a + strided array `y` and assigns the results to `y`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `y` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + Input array. + + strideX: integer + Stride length for `x`. + + y: Array|TypedArray + Output array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + y: Array|TypedArray + Output array. + + Examples + -------- + // Standard Usage: + > var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + > var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > {{alias}}( x.length, x, 1, y, 1 ) + [ 2.0, 2.0, 3.0, 4.0, 5.0 ] + + // Using `N` and stride parameters: + > x = [ 6.0, 2.0, 20.0, 4.0, 30.0, 6.0 ]; + > y = [ 2.0, 8.0, 4.0, 10.0, 5.0, 12.0 ]; + > {{alias}}( 3, x, 2, y, 2 ) + [ 3.0, 8.0, 5.0, 10.0, 6.0, 12.0 ] + + // Using view offsets: + > var bufX = [ 1.0, 6.0, 12.0, 20.0, 5.0, 6.0 ]; + > var bufY = [ 7.0, 8.0, 2.0, 3.0, 4.0, 12.0 ]; + > var x0 = new {{alias:@stdlib/array/float64}}( bufX ); + > var y0 = new {{alias:@stdlib/array/float64}}( bufY ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetY = y0.BYTES_PER_ELEMENT * 2; + > var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, offsetX ); + > var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, offsetY ); + > {{alias}}( 3, x1, 1, y1, 1 ) + [ 3.0, 4.0, 5.0, 12.0 ] + > y0 + [ 7.0, 8.0, 3.0, 4.0, 5.0, 12.0 ] + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Divides elements of a strided array `x` by the corresponding elements of a + strided array `y` and assigns the results to `y` using alternative indexing + semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Array|TypedArray + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Array|TypedArray + Output array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + y: Array|TypedArray + Output array. + + Examples + -------- + // Standard Usage: + > var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + > var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + [ 2.0, 2.0, 3.0, 4.0, 5.0 ] + + // Using index offsets: + > x = [ 1.0, 2.0, 12.0, 20.0, 30.0 ]; + > y = [ 6.0, 7.0, 3.0, 4.0, 5.0 ]; + > {{alias}}.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ) + [ 6.0, 7.0, 4.0, 5.0, 6.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/gxdy/docs/types/index.d.ts new file mode 100644 index 000000000000..c9b803b5d23f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/docs/types/index.d.ts @@ -0,0 +1,104 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { NumericArray, Collection, AccessorArrayLike } from '@stdlib/types/array'; + +/** +* Input array. +*/ +type InputArray = NumericArray | Collection | AccessorArrayLike; + +/** +* Interface describing `gxdy`. +*/ +interface Routine { + /** + * Divides elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns `y` + * + * @example + * var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + * var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + * + * gxdy( x.length, x, 1, y, 1 ); + * // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] + */ + ( N: number, x: InputArray, strideX: number, y: T, strideY: number ): T; + + /** + * Divides elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting index for `x` + * @param y - output array + * @param strideY - `y` stride length + * @param offsetY - starting index for `y` + * @returns `y` + * + * @example + * var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + * var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + * + * gxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] + */ + ndarray( N: number, x: InputArray, strideX: number, offsetX: number, y: T, strideY: number, offsetY: number ): T; +} + +/** +* Divides elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y`. +* +* @param N - number of indexed elements +* @param x - input array +* @param strideX - `x` stride length +* @param y - output array +* @param strideY - `y` stride length +* @returns `y` +* +* @example +* var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; +* var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; +* +* gxdy( x.length, x, 1, y, 1 ); +* // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +* +* @example +* var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; +* var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; +* +* gxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +declare var gxdy: Routine; + + +// EXPORTS // + +export = gxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/gxdy/docs/types/test.ts new file mode 100644 index 000000000000..9d1ee2c7db1c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/docs/types/test.ts @@ -0,0 +1,249 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import AccessorArray = require( '@stdlib/array/base/accessor' ); +import gxdy = require( './index' ); + + +// TESTS // + +// The function returns a numeric array... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy( x.length, x, 1, y, 1 ); // $ExpectType Float64Array + gxdy( x.length, new AccessorArray( x ), 1, new AccessorArray( y ), 1 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy( '10', x, 1, y, 1 ); // $ExpectError + gxdy( true, x, 1, y, 1 ); // $ExpectError + gxdy( false, x, 1, y, 1 ); // $ExpectError + gxdy( null, x, 1, y, 1 ); // $ExpectError + gxdy( undefined, x, 1, y, 1 ); // $ExpectError + gxdy( [], x, 1, y, 1 ); // $ExpectError + gxdy( {}, x, 1, y, 1 ); // $ExpectError + gxdy( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a numeric array... +{ + const y = new Float64Array( 10 ); + + gxdy( 10, 10, 1, y, 1 ); // $ExpectError + gxdy( 10, '10', 1, y, 1 ); // $ExpectError + gxdy( 10, true, 1, y, 1 ); // $ExpectError + gxdy( 10, false, 1, y, 1 ); // $ExpectError + gxdy( 10, null, 1, y, 1 ); // $ExpectError + gxdy( 10, undefined, 1, y, 1 ); // $ExpectError + gxdy( 10, [ '1' ], 1, y, 1 ); // $ExpectError + gxdy( 10, {}, 1, y, 1 ); // $ExpectError + gxdy( 10, ( x: number ): number => x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy( x.length, x, '10', y, 1 ); // $ExpectError + gxdy( x.length, x, true, y, 1 ); // $ExpectError + gxdy( x.length, x, false, y, 1 ); // $ExpectError + gxdy( x.length, x, null, y, 1 ); // $ExpectError + gxdy( x.length, x, undefined, y, 1 ); // $ExpectError + gxdy( x.length, x, [], y, 1 ); // $ExpectError + gxdy( x.length, x, {}, y, 1 ); // $ExpectError + gxdy( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a numeric array... +{ + const x = new Float64Array( 10 ); + + gxdy( 10, x, 1, 10, 1 ); // $ExpectError + gxdy( 10, x, 1, '10', 1 ); // $ExpectError + gxdy( 10, x, 1, true, 1 ); // $ExpectError + gxdy( 10, x, 1, false, 1 ); // $ExpectError + gxdy( 10, x, 1, null, 1 ); // $ExpectError + gxdy( 10, x, 1, undefined, 1 ); // $ExpectError + gxdy( 10, x, 1, [ '1' ], 1 ); // $ExpectError + gxdy( 10, x, 1, {}, 1 ); // $ExpectError + gxdy( 10, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy( x.length, x, 1, y, '10' ); // $ExpectError + gxdy( x.length, x, 1, y, true ); // $ExpectError + gxdy( x.length, x, 1, y, false ); // $ExpectError + gxdy( x.length, x, 1, y, null ); // $ExpectError + gxdy( x.length, x, 1, y, undefined ); // $ExpectError + gxdy( x.length, x, 1, y, [] ); // $ExpectError + gxdy( x.length, x, 1, y, {} ); // $ExpectError + gxdy( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy(); // $ExpectError + gxdy( x.length ); // $ExpectError + gxdy( x.length, x ); // $ExpectError + gxdy( x.length, x, 1 ); // $ExpectError + gxdy( x.length, x, 1, y ); // $ExpectError + gxdy( x.length, x, 1, y, 1, 10 ); // $ExpectError +} + +// Attached to the main export is an `ndarray` method which returns a numeric array... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType Float64Array + gxdy.ndarray( x.length, new AccessorArray( x ), 1, 0, new AccessorArray( y ), 1, 0 ); // $ExpectType AccessorArray +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy.ndarray( '10', x, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a numeric array... +{ + const y = new Float64Array( 10 ); + + gxdy.ndarray( 10, 10, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, '10', 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, true, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, false, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, null, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, undefined, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, [ '1' ], 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, {}, 1, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, ( x: number ): number => x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy.ndarray( x.length, x, '10', 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy.ndarray( x.length, x, 1, '10', y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a numeric array... +{ + const x = new Float64Array( 10 ); + + gxdy.ndarray( 10, x, 1, 0, 10, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, x, 1, 0, '10', 1, 0 ); // $ExpectError + gxdy.ndarray( 10, x, 1, 0, true, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, x, 1, 0, false, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, x, 1, 0, null, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, x, 1, 0, undefined, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + gxdy.ndarray( 10, x, 1, 0, {}, 1, 0 ); // $ExpectError + gxdy.ndarray( 10, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy.ndarray( x.length, x, 1, 0, y, '10', 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy.ndarray( x.length, x, 1, 0, y, 1, '10' ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float64Array( 10 ); + const y = new Float64Array( 10 ); + + gxdy.ndarray(); // $ExpectError + gxdy.ndarray( x.length ); // $ExpectError + gxdy.ndarray( x.length, x ); // $ExpectError + gxdy.ndarray( x.length, x, 1 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + gxdy.ndarray( x.length, x, 1, 0, y, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/examples/index.js new file mode 100644 index 000000000000..6f54ffbaa32f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var gxdy = require( './../lib' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +console.log( x ); + +var y = discreteUniform( 10, 1, 100, { + 'dtype': 'float64' +}); +console.log( y ); + +gxdy( x.length, x, 1, y, 1 ); +console.log( y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/accessors.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/accessors.js new file mode 100644 index 000000000000..9a46fe276999 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/accessors.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Divides elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y`. +* +* @private +* @param {PositiveInteger} N - number of indexed elements +* @param {Object} x - input array object +* @param {Collection} x.data - input array data +* @param {Array} x.accessors - array element accessors +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Object} y - output array object +* @param {Collection} y.data - output array data +* @param {Array} y.accessors - array element accessors +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Object} output array object +* +* @example +* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +* var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +* +* var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; +* var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; +* +* gxdy( x.length, arraylike2object( toAccessorArray( x ) ), 1, 0, arraylike2object( toAccessorArray( y ) ), 1, 0 ); +* // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +function gxdy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var xbuf; + var ybuf; + var xget; + var yset; + var yget; + var ix; + var iy; + var i; + + // Cache references to array data: + xbuf = x.data; + ybuf = y.data; + + // Cache references to element accessors: + xget = x.accessors[ 0 ]; + yget = y.accessors[ 0 ]; + yset = y.accessors[ 1 ]; + + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + yset( ybuf, iy, xget( xbuf, ix ) / yget( ybuf, iy ) ); + ix += strideX; + iy += strideY; + } + return y; +} + + +// EXPORTS // + +module.exports = gxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/index.js new file mode 100644 index 000000000000..218b600f4534 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/index.js @@ -0,0 +1,59 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Divide elements of a strided array `x` by the corresponding elements of a strided array `y` and assign the results to `y`. +* +* @module @stdlib/blas/ext/base/gxdy +* +* @example +* var gxdy = require( '@stdlib/blas/ext/base/gxdy' ); +* +* var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; +* var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; +* +* gxdy( x.length, x, 1, y, 1 ); +* // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +* +* @example +* var gxdy = require( '@stdlib/blas/ext/base/gxdy' ); +* +* var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; +* var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; +* +* gxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( main, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/main.js new file mode 100644 index 000000000000..b5174100cf65 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/main.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Divides elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {NumericArray} x - input array +* @param {integer} strideX - `x` stride length +* @param {NumericArray} y - output array +* @param {integer} strideY - `y` stride length +* @returns {NumericArray} output array +* +* @example +* var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; +* var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; +* +* gxdy( x.length, x, 1, y, 1 ); +* // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +function gxdy( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/ndarray.js new file mode 100644 index 000000000000..bdbeea7a3652 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/lib/ndarray.js @@ -0,0 +1,110 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var arraylike2object = require( '@stdlib/array/base/arraylike2object' ); +var accessors = require( './accessors.js' ); + + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Divides elements of a strided array `x` by the corresponding elements of a strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {NumericArray} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {NumericArray} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {NumericArray} output array +* +* @example +* var x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; +* var y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; +* +* gxdy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +function gxdy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var ix; + var iy; + var ox; + var oy; + var m; + var i; + + if ( N <= 0 ) { + return y; + } + ox = arraylike2object( x ); + oy = arraylike2object( y ); + if ( ox.accessorProtocol || oy.accessorProtocol ) { + accessors( N, ox, strideX, offsetX, oy, strideY, offsetY ); + return y; + } + ix = offsetX; + iy = offsetY; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideY === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + y[ iy ] = x[ ix ] / y[ iy ]; + ix += strideX; + iy += strideY; + } + } + if ( N < M ) { + return y; + } + for ( i = m; i < N; i += M ) { + y[ iy ] = x[ ix ] / y[ iy ]; + y[ iy+1 ] = x[ ix+1 ] / y[ iy+1 ]; + y[ iy+2 ] = x[ ix+2 ] / y[ iy+2 ]; + y[ iy+3 ] = x[ ix+3 ] / y[ iy+3 ]; + y[ iy+4 ] = x[ ix+4 ] / y[ iy+4 ]; + ix += M; + iy += M; + } + return y; + } + for ( i = 0; i < N; i++ ) { + y[ iy ] = x[ ix ] / y[ iy ]; + ix += strideX; + iy += strideY; + } + return y; +} + + +// EXPORTS // + +module.exports = gxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/package.json b/lib/node_modules/@stdlib/blas/ext/base/gxdy/package.json new file mode 100644 index 000000000000..5b4d4f258e9b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/ext/base/gxdy", + "version": "0.0.0", + "description": "Divide elements of a strided array `x` by the corresponding elements of a strided array `y` and assign the results to `y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "linear", + "algebra", + "subroutines", + "divide", + "division", + "quotient", + "strided", + "array", + "ndarray", + "vector", + "xdy", + "gxdy" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/test/test.js new file mode 100644 index 000000000000..2eb639d8c6c5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/test/test.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var gxdy = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof gxdy.ndarray, 'function', 'method is a function' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/test/test.main.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/test/test.main.js new file mode 100644 index 000000000000..20aeb7cc8c20 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/test/test.main.js @@ -0,0 +1,352 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gxdy = require( './../lib/main.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( gxdy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + expected = [ + 2.0, // 4.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 4.0, // 20.0 / 5.0 + 5.0 // 30.0 / 6.0 + ]; + + gxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = [ 10.0, 24.0 ]; + y = [ 5.0, 6.0 ]; + expected = [ 2.0, 4.0 ]; + + gxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y` (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + expected = [ + 2.0, // 4.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 4.0, // 20.0 / 5.0 + 5.0 // 30.0 / 6.0 + ]; + + gxdy( x.length, toAccessorArray( x ), 1, toAccessorArray( y ), 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = [ 10.0, 24.0 ]; + y = [ 5.0, 6.0 ]; + expected = [ 2.0, 4.0 ]; + + gxdy( x.length, toAccessorArray( x ), 1, toAccessorArray( y ), 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = [ 1.0, 2.0, 3.0, 4.0, 5.0 ]; + y = [ 5.0, 6.0, 7.0, 8.0, 9.0 ]; + out = gxdy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = [ 1.0, 2.0, 3.0 ]; + y = [ 4.0, 5.0, 6.0 ]; + expected = [ 4.0, 5.0, 6.0 ]; + + gxdy( 0, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + gxdy( -4, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 2 + ]; + y = [ 2.0, 3.0, 4.0 ]; + expected = [ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, x, 2, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 2 + ]; + y = [ 2.0, 3.0, 4.0 ]; + expected = [ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, toAccessorArray( x ), 2, toAccessorArray( y ), 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = [ 6.0, 12.0, 20.0 ]; + y = [ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]; + expected = [ + 3.0, // 6.0 / 2.0 + 30.0, + 4.0, // 12.0 / 3.0 + 10.0, + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, x, 1, y, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ 6.0, 12.0, 20.0 ]; + y = [ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]; + expected = [ + 3.0, // 6.0 / 2.0 + 30.0, + 4.0, // 12.0 / 3.0 + 10.0, + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, toAccessorArray( x ), 1, toAccessorArray( y ), 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 0 + ]); + y = new Float64Array([ + 2.0, // 2 + 3.0, // 1 + 4.0 // 0 + ]); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + gxdy( 3, x, -2, y, -1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ + 6.0, // 2 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 0 + ]; + y = new Float64Array([ + 2.0, // 2 + 3.0, // 1 + 4.0 // 0 + ]); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + gxdy( 3, toAccessorArray( x ), -2, toAccessorArray( y ), -1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Float64Array([ + 10.0, + 6.0, // 0 + 12.0, // 1 + 20.0, // 2 + 4.0 + ]); + y0 = new Float64Array([ + 10.0, + 10.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]); + + x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Float64Array([ + 10.0, + 10.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + gxdy( 3, x1, 1, y1, 1 ); + t.deepEqual( y0, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float64Array( 100 ); + y = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + gxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + y = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + gxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/gxdy/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/gxdy/test/test.ndarray.js new file mode 100644 index 000000000000..afd3bb41bc06 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/gxdy/test/test.ndarray.js @@ -0,0 +1,447 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' ); +var gxdy = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( gxdy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + expected = [ + 2.0, // 4.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 4.0, // 20.0 / 5.0 + 5.0 // 30.0 / 6.0 + ]; + + gxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = [ 10.0, 24.0 ]; + y = [ 5.0, 6.0 ]; + expected = [ 2.0, 4.0 ]; + + gxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y` (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ 4.0, 6.0, 12.0, 20.0, 30.0 ]; + y = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + expected = [ + 2.0, // 4.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 4.0, // 20.0 / 5.0 + 5.0 // 30.0 / 6.0 + ]; + + gxdy( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = [ 10.0, 24.0 ]; + y = [ 5.0, 6.0 ]; + expected = [ 2.0, 4.0 ]; + + gxdy( x.length, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = [ 1.0, 2.0, 3.0, 4.0, 5.0 ]; + y = [ 5.0, 6.0, 7.0, 8.0, 9.0 ]; + out = gxdy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = [ 1.0, 2.0, 3.0 ]; + y = [ 4.0, 5.0, 6.0 ]; + expected = [ 4.0, 5.0, 6.0 ]; + + gxdy( 0, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + gxdy( -4, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 2 + ]; + y = [ 2.0, 3.0, 4.0 ]; + expected = [ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, x, 2, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ + 6.0, // 0 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 2 + ]; + y = [ 2.0, 3.0, 4.0 ]; + expected = [ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, toAccessorArray( x ), 2, 0, toAccessorArray( y ), 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = [ 6.0, 12.0, 20.0 ]; + y = [ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]; + expected = [ + 3.0, // 6.0 / 2.0 + 30.0, + 4.0, // 12.0 / 3.0 + 10.0, + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, x, 1, 0, y, 2, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ 6.0, 12.0, 20.0 ]; + y = [ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]; + expected = [ + 3.0, // 6.0 / 2.0 + 30.0, + 4.0, // 12.0 / 3.0 + 10.0, + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 2, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Float64Array([ + 6.0, // 2 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 0 + ]); + y = new Float64Array([ + 2.0, // 2 + 3.0, // 1 + 4.0 // 0 + ]); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + gxdy( 3, x, -2, x.length-1, y, -1, y.length-1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ + 6.0, // 2 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 0 + ]; + y = new Float64Array([ + 2.0, // 2 + 3.0, // 1 + 4.0 // 0 + ]); + expected = new Float64Array([ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + gxdy( 3, toAccessorArray( x ), -2, x.length-1, toAccessorArray( y ), -1, y.length-1 ); // eslint-disable-line max-len + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var x; + var y; + + x = [ + 0.0, + 6.0, // 0 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 2 + ]; + y = [ 2.0, 3.0, 4.0 ]; + expected = [ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, x, 2, 1, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ + 0.0, + 6.0, // 0 + 2.0, + 12.0, // 1 + 4.0, + 20.0 // 2 + ]; + y = [ 2.0, 3.0, 4.0 ]; + expected = [ + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, toAccessorArray( x ), 2, 1, toAccessorArray( y ), 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', function test( t ) { + var expected; + var x; + var y; + + x = [ 6.0, 12.0, 20.0 ]; + y = [ + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]; + expected = [ + 0.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, x, 1, 0, y, 1, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset (accessors)', function test( t ) { + var expected; + var x; + var y; + + x = [ 6.0, 12.0, 20.0 ]; + y = [ + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]; + expected = [ + 0.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]; + + gxdy( 3, toAccessorArray( x ), 1, 0, toAccessorArray( y ), 1, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var x; + var y; + + x = [ + 0.0, + 6.0, // 0 + 0.0, + 12.0, // 1 + 0.0, + 20.0 // 2 + ]; + y = [ + 0.0, + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 0.0 + ]; + expected = [ + 0.0, + 0.0, + 3.0, // 6.0 / 2.0 + 4.0, // 12.0 / 3.0 + 5.0, // 20.0 / 4.0 + 0.0 + ]; + + gxdy( 3, x, 2, 1, y, 1, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float64Array( 100 ); + y = new Float64Array( 100 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + gxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float64Array( 240 ); + y = new Float64Array( 240 ); + expected = new Float64Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + gxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/lib/index.js index f4df6bd45877..79db4b549957 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/lib/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/lib/index.js @@ -16,6 +16,8 @@ * limitations under the License. */ +/* eslint-disable max-lines */ + 'use strict'; /* @@ -126,6 +128,15 @@ setReadOnly( ns, 'clastIndexOfRow', require( '@stdlib/blas/ext/base/clast-index- */ setReadOnly( ns, 'coneTo', require( '@stdlib/blas/ext/base/cone-to' ) ); +/** +* @name creplicate +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/creplicate} +*/ +setReadOnly( ns, 'creplicate', require( '@stdlib/blas/ext/base/creplicate' ) ); + /** * @name csum * @memberof ns @@ -162,6 +173,15 @@ setReadOnly( ns, 'cunitspace', require( '@stdlib/blas/ext/base/cunitspace' ) ); */ setReadOnly( ns, 'cwapx', require( '@stdlib/blas/ext/base/cwapx' ) ); +/** +* @name cwax +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/cwax} +*/ +setReadOnly( ns, 'cwax', require( '@stdlib/blas/ext/base/cwax' ) ); + /** * @name cwhere * @memberof ns @@ -180,6 +200,15 @@ setReadOnly( ns, 'cwhere', require( '@stdlib/blas/ext/base/cwhere' ) ); */ setReadOnly( ns, 'cwxsa', require( '@stdlib/blas/ext/base/cwxsa' ) ); +/** +* @name cxmy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/cxmy} +*/ +setReadOnly( ns, 'cxmy', require( '@stdlib/blas/ext/base/cxmy' ) ); + /** * @name cxpy * @memberof ns @@ -450,6 +479,51 @@ setReadOnly( ns, 'dediff', require( '@stdlib/blas/ext/base/dediff' ) ); */ setReadOnly( ns, 'dfill', require( '@stdlib/blas/ext/base/dfill' ) ); +/** +* @name dfillEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/dfill-equal} +*/ +setReadOnly( ns, 'dfillEqual', require( '@stdlib/blas/ext/base/dfill-equal' ) ); + +/** +* @name dfillNaN +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/dfill-nan} +*/ +setReadOnly( ns, 'dfillNaN', require( '@stdlib/blas/ext/base/dfill-nan' ) ); + +/** +* @name dfillNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/dfill-not-equal} +*/ +setReadOnly( ns, 'dfillNotEqual', require( '@stdlib/blas/ext/base/dfill-not-equal' ) ); + +/** +* @name dfirstIndexEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/dfirst-index-equal} +*/ +setReadOnly( ns, 'dfirstIndexEqual', require( '@stdlib/blas/ext/base/dfirst-index-equal' ) ); + +/** +* @name dfirstIndexLessThan +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/dfirst-index-less-than} +*/ +setReadOnly( ns, 'dfirstIndexLessThan', require( '@stdlib/blas/ext/base/dfirst-index-less-than' ) ); + /** * @name dindexOf * @memberof ns @@ -477,6 +551,15 @@ setReadOnly( ns, 'dindexOfColumn', require( '@stdlib/blas/ext/base/dindex-of-col */ setReadOnly( ns, 'dindexOfFalsy', require( '@stdlib/blas/ext/base/dindex-of-falsy' ) ); +/** +* @name dindexOfNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/dindex-of-not-equal} +*/ +setReadOnly( ns, 'dindexOfNotEqual', require( '@stdlib/blas/ext/base/dindex-of-not-equal' ) ); + /** * @name dindexOfRow * @memberof ns @@ -720,6 +803,15 @@ setReadOnly( ns, 'doneTo', require( '@stdlib/blas/ext/base/done-to' ) ); */ setReadOnly( ns, 'dones', require( '@stdlib/blas/ext/base/dones' ) ); +/** +* @name dreplicate +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/dreplicate} +*/ +setReadOnly( ns, 'dreplicate', require( '@stdlib/blas/ext/base/dreplicate' ) ); + /** * @name drev * @memberof ns @@ -990,6 +1082,15 @@ setReadOnly( ns, 'dvander', require( '@stdlib/blas/ext/base/dvander' ) ); */ setReadOnly( ns, 'dwapx', require( '@stdlib/blas/ext/base/dwapx' ) ); +/** +* @name dwax +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/dwax} +*/ +setReadOnly( ns, 'dwax', require( '@stdlib/blas/ext/base/dwax' ) ); + /** * @name dwhere * @memberof ns @@ -1008,6 +1109,15 @@ setReadOnly( ns, 'dwhere', require( '@stdlib/blas/ext/base/dwhere' ) ); */ setReadOnly( ns, 'dwxsa', require( '@stdlib/blas/ext/base/dwxsa' ) ); +/** +* @name dxdy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/dxdy} +*/ +setReadOnly( ns, 'dxdy', require( '@stdlib/blas/ext/base/dxdy' ) ); + /** * @name dxmy * @memberof ns @@ -1323,6 +1433,42 @@ setReadOnly( ns, 'gfill', require( '@stdlib/blas/ext/base/gfill' ) ); */ setReadOnly( ns, 'gfillBy', require( '@stdlib/blas/ext/base/gfill-by' ) ); +/** +* @name gfillEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gfill-equal} +*/ +setReadOnly( ns, 'gfillEqual', require( '@stdlib/blas/ext/base/gfill-equal' ) ); + +/** +* @name gfillLessThan +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gfill-less-than} +*/ +setReadOnly( ns, 'gfillLessThan', require( '@stdlib/blas/ext/base/gfill-less-than' ) ); + +/** +* @name gfillNaN +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gfill-nan} +*/ +setReadOnly( ns, 'gfillNaN', require( '@stdlib/blas/ext/base/gfill-nan' ) ); + +/** +* @name gfillNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gfill-not-equal} +*/ +setReadOnly( ns, 'gfillNotEqual', require( '@stdlib/blas/ext/base/gfill-not-equal' ) ); + /** * @name gfindIndex * @memberof ns @@ -1341,6 +1487,42 @@ setReadOnly( ns, 'gfindIndex', require( '@stdlib/blas/ext/base/gfind-index' ) ); */ setReadOnly( ns, 'gfindLastIndex', require( '@stdlib/blas/ext/base/gfind-last-index' ) ); +/** +* @name gfirstIndexEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gfirst-index-equal} +*/ +setReadOnly( ns, 'gfirstIndexEqual', require( '@stdlib/blas/ext/base/gfirst-index-equal' ) ); + +/** +* @name gfirstIndexGreaterThan +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gfirst-index-greater-than} +*/ +setReadOnly( ns, 'gfirstIndexGreaterThan', require( '@stdlib/blas/ext/base/gfirst-index-greater-than' ) ); + +/** +* @name gfirstIndexLessThan +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gfirst-index-less-than} +*/ +setReadOnly( ns, 'gfirstIndexLessThan', require( '@stdlib/blas/ext/base/gfirst-index-less-than' ) ); + +/** +* @name gfirstIndexNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gfirst-index-not-equal} +*/ +setReadOnly( ns, 'gfirstIndexNotEqual', require( '@stdlib/blas/ext/base/gfirst-index-not-equal' ) ); + /** * @name gindexOf * @memberof ns @@ -1368,6 +1550,15 @@ setReadOnly( ns, 'gindexOfColumn', require( '@stdlib/blas/ext/base/gindex-of-col */ setReadOnly( ns, 'gindexOfFalsy', require( '@stdlib/blas/ext/base/gindex-of-falsy' ) ); +/** +* @name gindexOfNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gindex-of-not-equal} +*/ +setReadOnly( ns, 'gindexOfNotEqual', require( '@stdlib/blas/ext/base/gindex-of-not-equal' ) ); + /** * @name gindexOfRow * @memberof ns @@ -1377,6 +1568,15 @@ setReadOnly( ns, 'gindexOfFalsy', require( '@stdlib/blas/ext/base/gindex-of-fals */ setReadOnly( ns, 'gindexOfRow', require( '@stdlib/blas/ext/base/gindex-of-row' ) ); +/** +* @name gindexOfSameValue +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gindex-of-same-value} +*/ +setReadOnly( ns, 'gindexOfSameValue', require( '@stdlib/blas/ext/base/gindex-of-same-value' ) ); + /** * @name gindexOfTruthy * @memberof ns @@ -1404,6 +1604,15 @@ setReadOnly( ns, 'gjoin', require( '@stdlib/blas/ext/base/gjoin' ) ); */ setReadOnly( ns, 'gjoinBetween', require( '@stdlib/blas/ext/base/gjoin-between' ) ); +/** +* @name glastIndexEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/glast-index-equal} +*/ +setReadOnly( ns, 'glastIndexEqual', require( '@stdlib/blas/ext/base/glast-index-equal' ) ); + /** * @name glastIndexOf * @memberof ns @@ -1791,6 +2000,15 @@ setReadOnly( ns, 'gwxsa', require( '@stdlib/blas/ext/base/gwxsa' ) ); */ setReadOnly( ns, 'gwxsy', require( '@stdlib/blas/ext/base/gwxsy' ) ); +/** +* @name gxdy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/gxdy} +*/ +setReadOnly( ns, 'gxdy', require( '@stdlib/blas/ext/base/gxdy' ) ); + /** * @name gxmy * @memberof ns @@ -2133,6 +2351,51 @@ setReadOnly( ns, 'sediff', require( '@stdlib/blas/ext/base/sediff' ) ); */ setReadOnly( ns, 'sfill', require( '@stdlib/blas/ext/base/sfill' ) ); +/** +* @name sfillEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/sfill-equal} +*/ +setReadOnly( ns, 'sfillEqual', require( '@stdlib/blas/ext/base/sfill-equal' ) ); + +/** +* @name sfillNaN +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/sfill-nan} +*/ +setReadOnly( ns, 'sfillNaN', require( '@stdlib/blas/ext/base/sfill-nan' ) ); + +/** +* @name sfillNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/sfill-not-equal} +*/ +setReadOnly( ns, 'sfillNotEqual', require( '@stdlib/blas/ext/base/sfill-not-equal' ) ); + +/** +* @name sfirstIndexEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/sfirst-index-equal} +*/ +setReadOnly( ns, 'sfirstIndexEqual', require( '@stdlib/blas/ext/base/sfirst-index-equal' ) ); + +/** +* @name sfirstIndexLessThan +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/sfirst-index-less-than} +*/ +setReadOnly( ns, 'sfirstIndexLessThan', require( '@stdlib/blas/ext/base/sfirst-index-less-than' ) ); + /** * @name sindexOf * @memberof ns @@ -2331,6 +2594,15 @@ setReadOnly( ns, 'soneTo', require( '@stdlib/blas/ext/base/sone-to' ) ); */ setReadOnly( ns, 'sones', require( '@stdlib/blas/ext/base/sones' ) ); +/** +* @name sreplicate +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/sreplicate} +*/ +setReadOnly( ns, 'sreplicate', require( '@stdlib/blas/ext/base/sreplicate' ) ); + /** * @name srev * @memberof ns @@ -2484,6 +2756,15 @@ setReadOnly( ns, 'svander', require( '@stdlib/blas/ext/base/svander' ) ); */ setReadOnly( ns, 'swapx', require( '@stdlib/blas/ext/base/swapx' ) ); +/** +* @name swax +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/swax} +*/ +setReadOnly( ns, 'swax', require( '@stdlib/blas/ext/base/swax' ) ); + /** * @name swhere * @memberof ns @@ -2502,6 +2783,15 @@ setReadOnly( ns, 'swhere', require( '@stdlib/blas/ext/base/swhere' ) ); */ setReadOnly( ns, 'swxsa', require( '@stdlib/blas/ext/base/swxsa' ) ); +/** +* @name sxdy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/sxdy} +*/ +setReadOnly( ns, 'sxdy', require( '@stdlib/blas/ext/base/sxdy' ) ); + /** * @name sxmy * @memberof ns @@ -2637,6 +2927,15 @@ setReadOnly( ns, 'zindexOfColumn', require( '@stdlib/blas/ext/base/zindex-of-col */ setReadOnly( ns, 'zindexOfRow', require( '@stdlib/blas/ext/base/zindex-of-row' ) ); +/** +* @name zindexOfTruthy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/zindex-of-truthy} +*/ +setReadOnly( ns, 'zindexOfTruthy', require( '@stdlib/blas/ext/base/zindex-of-truthy' ) ); + /** * @name zlastIndexOfRow * @memberof ns @@ -2664,6 +2963,15 @@ setReadOnly( ns, 'znancount', require( '@stdlib/blas/ext/base/znancount' ) ); */ setReadOnly( ns, 'zoneTo', require( '@stdlib/blas/ext/base/zone-to' ) ); +/** +* @name zreplicate +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/zreplicate} +*/ +setReadOnly( ns, 'zreplicate', require( '@stdlib/blas/ext/base/zreplicate' ) ); + /** * @name zsum * @memberof ns @@ -2700,6 +3008,15 @@ setReadOnly( ns, 'zunitspace', require( '@stdlib/blas/ext/base/zunitspace' ) ); */ setReadOnly( ns, 'zwapx', require( '@stdlib/blas/ext/base/zwapx' ) ); +/** +* @name zwax +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/zwax} +*/ +setReadOnly( ns, 'zwax', require( '@stdlib/blas/ext/base/zwax' ) ); + /** * @name zwhere * @memberof ns @@ -2718,6 +3035,24 @@ setReadOnly( ns, 'zwhere', require( '@stdlib/blas/ext/base/zwhere' ) ); */ setReadOnly( ns, 'zwxsa', require( '@stdlib/blas/ext/base/zwxsa' ) ); +/** +* @name zxdy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/zxdy} +*/ +setReadOnly( ns, 'zxdy', require( '@stdlib/blas/ext/base/zxdy' ) ); + +/** +* @name zxmy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/zxmy} +*/ +setReadOnly( ns, 'zxmy', require( '@stdlib/blas/ext/base/zxmy' ) ); + /** * @name zxpy * @memberof ns diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/README.md index bf14e6d39a2b..80e1b13e4500 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/README.md @@ -52,10 +52,12 @@ The namespace exposes the following APIs: - [`csum( arrays )`][@stdlib/blas/ext/base/ndarray/csum]: compute the sum of all elements in a one-dimensional single-precision complex floating-point ndarray. - [`csumkbn( arrays )`][@stdlib/blas/ext/base/ndarray/csumkbn]: compute the sum of all elements in a one-dimensional single-precision complex floating-point ndarray using an improved Kahan–Babuška algorithm. - [`cunitspace( arrays )`][@stdlib/blas/ext/base/ndarray/cunitspace]: fill a one-dimensional single-precision complex floating-point ndarray with linearly spaced numeric elements which increment by `1` starting from a specified value. +- [`cxmy( arrays )`][@stdlib/blas/ext/base/ndarray/cxmy]: multiply elements of a one-dimensional single-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assign the results to the second ndarray. - [`cxpy( arrays )`][@stdlib/blas/ext/base/ndarray/cxpy]: add elements of a one-dimensional single-precision complex floating-point ndarray to the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assign the results to the second ndarray. - [`cxsa( arrays )`][@stdlib/blas/ext/base/ndarray/cxsa]: subtract a scalar constant from each element in a one-dimensional single-precision complex floating-point ndarray. - [`cxsy( arrays )`][@stdlib/blas/ext/base/ndarray/cxsy]: subtract the elements of an output one-dimensional single-precision complex floating-point ndarray from the corresponding elements in an input one-dimensional single-precision complex floating-point ndarray and assign the results to the output ndarray. - [`czeroTo( arrays )`][@stdlib/blas/ext/base/ndarray/czero-to]: fill a one-dimensional single-precision complex floating-point ndarray with linearly spaced numeric elements which increment by `1` starting from zero. +- [`dany( arrays )`][@stdlib/blas/ext/base/ndarray/dany]: test whether at least one element in a one-dimensional double-precision floating-point ndarray is truthy. - [`daxpb( arrays )`][@stdlib/blas/ext/base/ndarray/daxpb]: multiply each element in a one-dimensional double-precision floating-point ndarray by a scalar constant and add a scalar constant to each result. - [`daxpby( arrays )`][@stdlib/blas/ext/base/ndarray/daxpby]: multiply a one-dimensional double-precision floating-point ndarray by a scalar constant and add the result to a second one-dimensional double-precision floating-point ndarray multiplied by a scalar constant. - [`dcircshift( arrays )`][@stdlib/blas/ext/base/ndarray/dcircshift]: circularly shift the elements of a one-dimensional double-precision floating-point ndarray by a specified number of positions. @@ -65,6 +67,8 @@ The namespace exposes the following APIs: - [`dcusumors( arrays )`][@stdlib/blas/ext/base/ndarray/dcusumors]: compute the cumulative sum of a one-dimensional double-precision floating-point ndarray using ordinary recursive summation. - [`dcusumpw( arrays )`][@stdlib/blas/ext/base/ndarray/dcusumpw]: compute the cumulative sum of a one-dimensional double-precision floating-point ndarray using pairwise summation. - [`ddiff( arrays )`][@stdlib/blas/ext/base/ndarray/ddiff]: calculate the k-th discrete forward difference of a one-dimensional double-precision floating-point ndarray. +- [`dfillEqual( arrays )`][@stdlib/blas/ext/base/ndarray/dfill-equal]: replace elements in a one-dimensional double-precision floating-point ndarray equal to a provided search element with a specified scalar constant. +- [`dfillNotEqual( arrays )`][@stdlib/blas/ext/base/ndarray/dfill-not-equal]: replace elements in a one-dimensional double-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. - [`dindexOfFalsy( arrays )`][@stdlib/blas/ext/base/ndarray/dindex-of-falsy]: return the index of the first falsy element in a one-dimensional double-precision floating-point ndarray. - [`dindexOf( arrays )`][@stdlib/blas/ext/base/ndarray/dindex-of]: return the first index of a search element in a one-dimensional double-precision floating-point ndarray. - [`dlastIndexOf( arrays )`][@stdlib/blas/ext/base/ndarray/dlast-index-of]: return the last index of a search element in a one-dimensional double-precision floating-point ndarray. @@ -82,13 +86,16 @@ The namespace exposes the following APIs: - [`dsum( arrays )`][@stdlib/blas/ext/base/ndarray/dsum]: compute the sum of all elements in a one-dimensional double-precision floating-point ndarray. - [`dsumkbn( arrays )`][@stdlib/blas/ext/base/ndarray/dsumkbn]: compute the sum of all elements in a one-dimensional double-precision floating-point ndarray using an improved Kahan–Babuška algorithm. - [`dsumkbn2( arrays )`][@stdlib/blas/ext/base/ndarray/dsumkbn2]: compute the sum of all elements in a one-dimensional double-precision floating-point ndarray using a second-order iterative Kahan–Babuška algorithm. -- [`dsumors( arrays )`][@stdlib/blas/ext/base/ndarray/dsumors]: compute the sum of a one-dimensional double-precision floating-point ndarray using ordinary recursive summation. -- [`dsumpw( arrays )`][@stdlib/blas/ext/base/ndarray/dsumpw]: compute the sum of a one-dimensional double-precision floating-point ndarray using pairwise summation. +- [`dsumors( arrays )`][@stdlib/blas/ext/base/ndarray/dsumors]: compute the sum of all elements in a one-dimensional double-precision floating-point ndarray using ordinary recursive summation. +- [`dsumpw( arrays )`][@stdlib/blas/ext/base/ndarray/dsumpw]: compute the sum of all elements in a one-dimensional double-precision floating-point ndarray using pairwise summation. - [`dunitspace( arrays )`][@stdlib/blas/ext/base/ndarray/dunitspace]: fill a one-dimensional double-precision floating-point ndarray with linearly spaced numeric elements which increment by `1` starting from a specified value. +- [`dxdy( arrays )`][@stdlib/blas/ext/base/ndarray/dxdy]: divide elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assign the results to the second ndarray. +- [`dxmy( arrays )`][@stdlib/blas/ext/base/ndarray/dxmy]: multiply elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assign the results to the second ndarray. - [`dxpy( arrays )`][@stdlib/blas/ext/base/ndarray/dxpy]: add elements of a one-dimensional double-precision floating-point ndarray to the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assign the results to the second ndarray. - [`dxsa( arrays )`][@stdlib/blas/ext/base/ndarray/dxsa]: subtract a scalar constant from each element in a one-dimensional double-precision floating-point ndarray. - [`dxsy( arrays )`][@stdlib/blas/ext/base/ndarray/dxsy]: subtract the elements of an output one-dimensional double-precision floating-point ndarray from the corresponding elements in an input one-dimensional double-precision floating-point ndarray and assign the results to the output ndarray. - [`dzeroTo( arrays )`][@stdlib/blas/ext/base/ndarray/dzero-to]: fill a one-dimensional double-precision floating-point ndarray with linearly spaced numeric elements which increment by `1` starting from zero. +- [`gany( arrays )`][@stdlib/blas/ext/base/ndarray/gany]: test whether at least one element in a one-dimensional ndarray is truthy. - [`gaxpb( arrays )`][@stdlib/blas/ext/base/ndarray/gaxpb]: multiply each element in a one-dimensional ndarray by a scalar constant and add a scalar constant to each result. - [`gaxpby( arrays )`][@stdlib/blas/ext/base/ndarray/gaxpby]: multiply a one-dimensional ndarray by a scalar constant and add the result to a second one-dimensional ndarray multiplied by a scalar constant. - [`gcircshift( arrays )`][@stdlib/blas/ext/base/ndarray/gcircshift]: circularly shift the elements of a one-dimensional ndarray by a specified number of positions. @@ -97,9 +104,11 @@ The namespace exposes the following APIs: - [`gcusumkbn2( arrays )`][@stdlib/blas/ext/base/ndarray/gcusumkbn2]: compute the cumulative sum of a one-dimensional ndarray using a second-order iterative Kahan–Babuška algorithm. - [`gcusumors( arrays )`][@stdlib/blas/ext/base/ndarray/gcusumors]: compute the cumulative sum of a one-dimensional ndarray using ordinary recursive summation. - [`gcusumpw( arrays )`][@stdlib/blas/ext/base/ndarray/gcusumpw]: compute the cumulative sum of a one-dimensional ndarray using pairwise summation. +- [`gfillNotEqual( arrays )`][@stdlib/blas/ext/base/ndarray/gfill-not-equal]: replace elements in a one-dimensional ndarray not equal to a provided search element with a specified scalar constant. - [`gfindIndex( arrays, clbk[, thisArg] )`][@stdlib/blas/ext/base/ndarray/gfind-index]: return the index of the first element in a one-dimensional ndarray which passes a test implemented by a predicate function. - [`gfindLastIndex( arrays, clbk[, thisArg] )`][@stdlib/blas/ext/base/ndarray/gfind-last-index]: return the index of the last element in a one-dimensional ndarray which passes a test implemented by a predicate function. - [`gindexOfFalsy( arrays )`][@stdlib/blas/ext/base/ndarray/gindex-of-falsy]: return the index of the first falsy element in a one-dimensional ndarray. +- [`gindexOfNotEqual( arrays )`][@stdlib/blas/ext/base/ndarray/gindex-of-not-equal]: return the first index of an element in a one-dimensional ndarray which is not equal to a specified search element. - [`gindexOfTruthy( arrays )`][@stdlib/blas/ext/base/ndarray/gindex-of-truthy]: return the index of the first truthy element in a one-dimensional ndarray. - [`gindexOf( arrays )`][@stdlib/blas/ext/base/ndarray/gindex-of]: return the first index of a search element in a one-dimensional ndarray. - [`gjoinBetween( arrays )`][@stdlib/blas/ext/base/ndarray/gjoin-between]: return a string by joining one-dimensional ndarray elements using a specified separator for each pair of consecutive elements. @@ -120,10 +129,13 @@ The namespace exposes the following APIs: - [`gsumors( arrays )`][@stdlib/blas/ext/base/ndarray/gsumors]: compute the sum of all elements in a one-dimensional ndarray using ordinary recursive summation. - [`gsumpw( arrays )`][@stdlib/blas/ext/base/ndarray/gsumpw]: compute the sum of all elements in a one-dimensional ndarray using pairwise summation. - [`gunitspace( arrays )`][@stdlib/blas/ext/base/ndarray/gunitspace]: fill a one-dimensional ndarray with linearly spaced numeric elements which increment by `1` starting from a specified value. +- [`gxdy( arrays )`][@stdlib/blas/ext/base/ndarray/gxdy]: divide elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assign the results to the second ndarray. +- [`gxmy( arrays )`][@stdlib/blas/ext/base/ndarray/gxmy]: multiply elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assign the results to the second ndarray. - [`gxpy( arrays )`][@stdlib/blas/ext/base/ndarray/gxpy]: add elements of a one-dimensional ndarray to the corresponding elements of a second one-dimensional ndarray and assign the results to the second ndarray. - [`gxsa( arrays )`][@stdlib/blas/ext/base/ndarray/gxsa]: subtract a scalar constant from each element in a one-dimensional ndarray. - [`gxsy( arrays )`][@stdlib/blas/ext/base/ndarray/gxsy]: subtract the elements of an output one-dimensional ndarray from the corresponding elements in an input one-dimensional ndarray and assign the results to the output ndarray. - [`gzeroTo( arrays )`][@stdlib/blas/ext/base/ndarray/gzero-to]: fill a one-dimensional ndarray with linearly spaced numeric elements which increment by `1` starting from zero. +- [`sany( arrays )`][@stdlib/blas/ext/base/ndarray/sany]: test whether at least one element in a one-dimensional single-precision floating-point ndarray is truthy. - [`saxpb( arrays )`][@stdlib/blas/ext/base/ndarray/saxpb]: multiply each element in a one-dimensional single-precision floating-point ndarray by a scalar constant and add a scalar constant to each result. - [`saxpby( arrays )`][@stdlib/blas/ext/base/ndarray/saxpby]: multiply a one-dimensional single-precision floating-point ndarray by a scalar constant and add the result to a second one-dimensional single-precision floating-point ndarray multiplied by a scalar constant. - [`scircshift( arrays )`][@stdlib/blas/ext/base/ndarray/scircshift]: circularly shift the elements of a one-dimensional single-precision floating-point ndarray by a specified number of positions. @@ -132,6 +144,7 @@ The namespace exposes the following APIs: - [`scusumkbn( arrays )`][@stdlib/blas/ext/base/ndarray/scusumkbn]: compute the cumulative sum of a one-dimensional single-precision floating-point ndarray using an improved Kahan–Babuška algorithm. - [`scusumkbn2( arrays )`][@stdlib/blas/ext/base/ndarray/scusumkbn2]: compute the cumulative sum of a one-dimensional single-precision floating-point ndarray using a second-order iterative Kahan–Babuška algorithm. - [`scusumors( arrays )`][@stdlib/blas/ext/base/ndarray/scusumors]: compute the cumulative sum of a one-dimensional single-precision floating-point ndarray using ordinary recursive summation. +- [`sfillNotEqual( arrays )`][@stdlib/blas/ext/base/ndarray/sfill-not-equal]: replace elements in a one-dimensional single-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. - [`sindexOf( arrays )`][@stdlib/blas/ext/base/ndarray/sindex-of]: return the first index of a search element in a one-dimensional single-precision floating-point ndarray. - [`slastIndexOf( arrays )`][@stdlib/blas/ext/base/ndarray/slast-index-of]: return the last index of a search element in a one-dimensional single-precision floating-point ndarray. - [`slinspace( arrays )`][@stdlib/blas/ext/base/ndarray/slinspace]: fill a one-dimensional single-precision floating-point ndarray with linearly spaced values over a specified interval. @@ -146,9 +159,11 @@ The namespace exposes the following APIs: - [`ssum( arrays )`][@stdlib/blas/ext/base/ndarray/ssum]: compute the sum of all elements in a one-dimensional single-precision floating-point ndarray. - [`ssumkbn( arrays )`][@stdlib/blas/ext/base/ndarray/ssumkbn]: compute the sum of all elements in a one-dimensional single-precision floating-point ndarray using an improved Kahan–Babuška algorithm. - [`ssumkbn2( arrays )`][@stdlib/blas/ext/base/ndarray/ssumkbn2]: compute the sum of all elements in a one-dimensional single-precision floating-point ndarray using a second-order iterative Kahan–Babuška algorithm. -- [`ssumors( arrays )`][@stdlib/blas/ext/base/ndarray/ssumors]: compute the sum of a one-dimensional single-precision floating-point ndarray using ordinary recursive summation. +- [`ssumors( arrays )`][@stdlib/blas/ext/base/ndarray/ssumors]: compute the sum of all elements in a one-dimensional single-precision floating-point ndarray using ordinary recursive summation. - [`ssumpw( arrays )`][@stdlib/blas/ext/base/ndarray/ssumpw]: compute the sum of all elements in a one-dimensional single-precision floating-point ndarray using pairwise summation. - [`sunitspace( arrays )`][@stdlib/blas/ext/base/ndarray/sunitspace]: fill a one-dimensional single-precision floating-point ndarray with linearly spaced numeric elements which increment by `1` starting from a specified value. +- [`sxdy( arrays )`][@stdlib/blas/ext/base/ndarray/sxdy]: divide elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assign the results to the second ndarray. +- [`sxmy( arrays )`][@stdlib/blas/ext/base/ndarray/sxmy]: multiply elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assign the results to the second ndarray. - [`sxpy( arrays )`][@stdlib/blas/ext/base/ndarray/sxpy]: add elements of a one-dimensional single-precision floating-point ndarray to the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assign the results to the second ndarray. - [`sxsa( arrays )`][@stdlib/blas/ext/base/ndarray/sxsa]: subtract a scalar constant from each element in a one-dimensional single-precision floating-point ndarray. - [`sxsy( arrays )`][@stdlib/blas/ext/base/ndarray/sxsy]: subtract the elements of an output one-dimensional single-precision floating-point ndarray from the corresponding elements in an input one-dimensional single-precision floating-point ndarray and assign the results to the output ndarray. @@ -160,6 +175,8 @@ The namespace exposes the following APIs: - [`zsum( arrays )`][@stdlib/blas/ext/base/ndarray/zsum]: compute the sum of all elements in a one-dimensional double-precision complex floating-point ndarray. - [`zsumkbn( arrays )`][@stdlib/blas/ext/base/ndarray/zsumkbn]: compute the sum of all elements in a one-dimensional double-precision complex floating-point ndarray using an improved Kahan–Babuška algorithm. - [`zunitspace( arrays )`][@stdlib/blas/ext/base/ndarray/zunitspace]: fill a one-dimensional double-precision complex floating-point ndarray with linearly spaced numeric elements which increment by `1` starting from a specified value. +- [`zxdy( arrays )`][@stdlib/blas/ext/base/ndarray/zxdy]: divide elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assign the results to the second ndarray. +- [`zxmy( arrays )`][@stdlib/blas/ext/base/ndarray/zxmy]: multiply elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assign the results to the second ndarray. - [`zxpy( arrays )`][@stdlib/blas/ext/base/ndarray/zxpy]: add elements of a one-dimensional double-precision complex floating-point ndarray to the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assign the results to the second ndarray. - [`zxsa( arrays )`][@stdlib/blas/ext/base/ndarray/zxsa]: subtract a scalar constant from each element in a one-dimensional double-precision complex floating-point ndarray. - [`zxsy( arrays )`][@stdlib/blas/ext/base/ndarray/zxsy]: subtract the elements of an output one-dimensional double-precision complex floating-point ndarray from the corresponding elements in an input one-dimensional double-precision complex floating-point ndarray and assign the results to the output ndarray. @@ -220,6 +237,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/cunitspace]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/cunitspace +[@stdlib/blas/ext/base/ndarray/cxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/cxmy + [@stdlib/blas/ext/base/ndarray/cxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/cxpy [@stdlib/blas/ext/base/ndarray/cxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/cxsa @@ -228,6 +247,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/czero-to]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/czero-to +[@stdlib/blas/ext/base/ndarray/dany]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dany + [@stdlib/blas/ext/base/ndarray/daxpb]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/daxpb [@stdlib/blas/ext/base/ndarray/daxpby]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/daxpby @@ -246,6 +267,10 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/ddiff]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/ddiff +[@stdlib/blas/ext/base/ndarray/dfill-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dfill-equal + +[@stdlib/blas/ext/base/ndarray/dfill-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dfill-not-equal + [@stdlib/blas/ext/base/ndarray/dindex-of-falsy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dindex-of-falsy [@stdlib/blas/ext/base/ndarray/dindex-of]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dindex-of @@ -286,6 +311,10 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/dunitspace]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dunitspace +[@stdlib/blas/ext/base/ndarray/dxdy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dxdy + +[@stdlib/blas/ext/base/ndarray/dxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dxmy + [@stdlib/blas/ext/base/ndarray/dxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dxpy [@stdlib/blas/ext/base/ndarray/dxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dxsa @@ -294,6 +323,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/dzero-to]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/dzero-to +[@stdlib/blas/ext/base/ndarray/gany]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gany + [@stdlib/blas/ext/base/ndarray/gaxpb]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gaxpb [@stdlib/blas/ext/base/ndarray/gaxpby]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gaxpby @@ -310,12 +341,16 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/gcusumpw]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gcusumpw +[@stdlib/blas/ext/base/ndarray/gfill-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gfill-not-equal + [@stdlib/blas/ext/base/ndarray/gfind-index]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gfind-index [@stdlib/blas/ext/base/ndarray/gfind-last-index]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gfind-last-index [@stdlib/blas/ext/base/ndarray/gindex-of-falsy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gindex-of-falsy +[@stdlib/blas/ext/base/ndarray/gindex-of-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gindex-of-not-equal + [@stdlib/blas/ext/base/ndarray/gindex-of-truthy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gindex-of-truthy [@stdlib/blas/ext/base/ndarray/gindex-of]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gindex-of @@ -356,6 +391,10 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/gunitspace]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gunitspace +[@stdlib/blas/ext/base/ndarray/gxdy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gxdy + +[@stdlib/blas/ext/base/ndarray/gxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gxmy + [@stdlib/blas/ext/base/ndarray/gxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gxpy [@stdlib/blas/ext/base/ndarray/gxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gxsa @@ -364,6 +403,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/gzero-to]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/gzero-to +[@stdlib/blas/ext/base/ndarray/sany]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/sany + [@stdlib/blas/ext/base/ndarray/saxpb]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/saxpb [@stdlib/blas/ext/base/ndarray/saxpby]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/saxpby @@ -380,6 +421,8 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/scusumors]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/scusumors +[@stdlib/blas/ext/base/ndarray/sfill-not-equal]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/sfill-not-equal + [@stdlib/blas/ext/base/ndarray/sindex-of]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/sindex-of [@stdlib/blas/ext/base/ndarray/slast-index-of]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/slast-index-of @@ -414,6 +457,10 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/sunitspace]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/sunitspace +[@stdlib/blas/ext/base/ndarray/sxdy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/sxdy + +[@stdlib/blas/ext/base/ndarray/sxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/sxmy + [@stdlib/blas/ext/base/ndarray/sxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/sxpy [@stdlib/blas/ext/base/ndarray/sxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/sxsa @@ -436,6 +483,10 @@ console.log( objectKeys( ns ) ); [@stdlib/blas/ext/base/ndarray/zunitspace]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/zunitspace +[@stdlib/blas/ext/base/ndarray/zxdy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/zxdy + +[@stdlib/blas/ext/base/ndarray/zxmy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/zxmy + [@stdlib/blas/ext/base/ndarray/zxpy]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/zxpy [@stdlib/blas/ext/base/ndarray/zxsa]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/blas/ext/base/ndarray/zxsa diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cunitspace/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cunitspace/README.md index 4e3453922ec9..a41a785544f0 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cunitspace/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cunitspace/README.md @@ -40,8 +40,6 @@ var cunitspace = require( '@stdlib/blas/ext/base/ndarray/cunitspace' ); Fills a one-dimensional single-precision complex floating-point ndarray with linearly spaced numeric elements which increment by `1` starting from a specified value. - - ```javascript var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); var Complex64 = require( '@stdlib/complex/float32/ctor' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/README.md new file mode 100644 index 000000000000..ed5206d0b522 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/README.md @@ -0,0 +1,128 @@ + + +# cxmy + +> Multiply elements of a one-dimensional single-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assign the results to the second ndarray. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \odot \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var cxmy = require( '@stdlib/blas/ext/base/ndarray/cxmy' ); +``` + +#### cxmy( arrays ) + +Multiplies elements of a one-dimensional single-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assigns the results to the second ndarray. + +```javascript +var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); + +var x = new Complex64Vector( [ 1.0, 2.0, 3.0, -1.0, 0.0, 1.0 ] ); +var y = new Complex64Vector( [ 2.0, 1.0, -1.0, 3.0, 4.0, 0.0 ] ); + +cxmy( [ x, y ] ); +// y => [ [ 0.0, 5.0 ], [ 0.0, 10.0 ], [ 0.0, 4.0 ] ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + +
+ + + +
+ +## Notes + +- The output ndarray is modified **in-place** (i.e., the output ndarray is **mutated**). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var cxmy = require( '@stdlib/blas/ext/base/ndarray/cxmy' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = new Complex64Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( x ) ); + +var y = new Complex64Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( y ) ); + +cxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/benchmark/benchmark.js new file mode 100644 index 000000000000..44f5766b70b6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/benchmark/benchmark.js @@ -0,0 +1,108 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var cxmy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -100.0, 100.0, { + 'dtype': 'float32' + }); + ybuf = uniform( len*2, -100.0, 100.0, { + 'dtype': 'float32' + }); + x = new Complex64Vector( xbuf.buffer ); + y = new Complex64Vector( ybuf.buffer ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = cxmy( [ x, y ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/docs/repl.txt new file mode 100644 index 000000000000..3a82ba382f03 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( arrays ) + Multiplies elements of a one-dimensional single-precision complex floating- + point ndarray by the corresponding elements of a second one-dimensional + single-precision complex floating-point ndarray and assigns the results to + the second ndarray. + + The output ndarray is modified *in-place* (i.e., the output ndarray is + *mutated*). + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var bufX = [ 1.0, 2.0, 3.0, -1.0, 0.0, 1.0 ]; + > var bufY = [ 2.0, 1.0, -1.0, 3.0, 4.0, 0.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/complex64}}( bufX ); + > var y = new {{alias:@stdlib/ndarray/vector/complex64}}( bufY ); + > {{alias}}( [ x, y ] ) + [ [ 0, 5 ], [ 0, 10 ], [ 0, 4 ] ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/docs/types/index.d.ts new file mode 100644 index 000000000000..deb04b522769 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { complex64ndarray } from '@stdlib/types/ndarray'; + +/** +* Multiplies elements of a one-dimensional single-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +* +* var x = new Complex64Vector( [ 1.0, 2.0, 3.0, -1.0, 0.0, 1.0 ] ); +* var y = new Complex64Vector( [ 2.0, 1.0, -1.0, 3.0, 4.0, 0.0 ] ); +* +* var out = cxmy( [ x, y ] ); +* // returns [ [ 0.0, 5.0 ], [ 0.0, 10.0 ], [ 0.0, 4.0 ] ] +*/ +declare function cxmy( arrays: [ complex64ndarray, complex64ndarray ] ): complex64ndarray; + + +// EXPORTS // + +export = cxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/docs/types/test.ts new file mode 100644 index 000000000000..06db8e13af42 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import cxmy = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'complex64' + }); + const y = zeros( [ 10 ], { + 'dtype': 'complex64' + }); + + cxmy( [ x, y ] ); // $ExpectType complex64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + cxmy( '10' ); // $ExpectError + cxmy( 5 ); // $ExpectError + cxmy( true ); // $ExpectError + cxmy( false ); // $ExpectError + cxmy( null ); // $ExpectError + cxmy( undefined ); // $ExpectError + cxmy( [] ); // $ExpectError + cxmy( {} ); // $ExpectError + cxmy( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'complex64' + }); + const y = zeros( [ 10 ], { + 'dtype': 'complex64' + }); + + cxmy(); // $ExpectError + cxmy( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/examples/index.js new file mode 100644 index 000000000000..4c27866fcbaa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var cxmy = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = new Complex64Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( x ) ); + +var y = new Complex64Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( y ) ); + +cxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/lib/index.js new file mode 100644 index 000000000000..f582a4f68fd1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Multiply elements of a one-dimensional single-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assign the results to the second ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/cxmy +* +* @example +* var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +* var cxmy = require( '@stdlib/blas/ext/base/ndarray/cxmy' ); +* +* var x = new Complex64Vector( [ 1.0, 2.0, 3.0, -1.0, 0.0, 1.0 ] ); +* var y = new Complex64Vector( [ 2.0, 1.0, -1.0, 3.0, 4.0, 0.0 ] ); +* +* var out = cxmy( [ x, y ] ); +* // returns [ [ 0.0, 5.0 ], [ 0.0, 10.0 ], [ 0.0, 4.0 ] ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/lib/main.js new file mode 100644 index 000000000000..67eaa72a7b50 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/cxmy' ).ndarray; + + +// MAIN // + +/** +* Multiplies elements of a one-dimensional single-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} output ndarray +* +* @example +* var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); +* +* var x = new Complex64Vector( [ 1.0, 2.0, 3.0, -1.0, 0.0, 1.0 ] ); +* var y = new Complex64Vector( [ 2.0, 1.0, -1.0, 3.0, 4.0, 0.0 ] ); +* +* var out = cxmy( [ x, y ] ); +* // returns [ [ 0.0, 5.0 ], [ 0.0, 10.0 ], [ 0.0, 4.0 ] ] +*/ +function cxmy( arrays ) { + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len + return y; +} + + +// EXPORTS // + +module.exports = cxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/package.json new file mode 100644 index 000000000000..7fed957eeef4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/package.json @@ -0,0 +1,74 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/cxmy", + "version": "0.0.0", + "description": "Multiply elements of a one-dimensional single-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assign the results to the second ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "cxmy", + "xmy", + "multiply", + "multiplication", + "hadamard", + "strided", + "array", + "ndarray", + "complex64", + "complex", + "single", + "single-precision", + "float32" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/test/test.js new file mode 100644 index 000000000000..fba33a99ecac --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/cxmy/test/test.js @@ -0,0 +1,333 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex64Array = require( '@stdlib/assert/is-same-complex64array' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var cxmy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Complex64Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'complex64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof cxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( cxmy.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by `y` and assigns the results to `y`', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex64Array( [ 1.0, 2.0, 3.0, -1.0, 0.0, 1.0 ] ); + ybuf = new Complex64Array( [ 2.0, 1.0, -1.0, 3.0, 4.0, 0.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + + actual = cxmy( [ x, y ] ); + expected = new Complex64Array([ + // (1.0+2.0i) * (2.0+1.0i) + 0.0, + 5.0, + // (3.0-1.0i) * (-1.0+3.0i) + 0.0, + 10.0, + // (0.0+1.0i) * (4.0+0.0i) + 0.0, + 4.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( actual ), expected ), true, 'returns expected value' ); + + xbuf = new Complex64Array( [ 1.0, 0.0, 2.0, 1.0 ] ); + ybuf = new Complex64Array( [ 3.0, -1.0, 4.0, 2.0 ] ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + + actual = cxmy( [ x, y ] ); + expected = new Complex64Array([ + // (1.0+0.0i) * (3.0-1.0i) + 3.0, + -1.0, + // (2.0+1.0i) * (4.0+2.0i) + 6.0, + 8.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-unit stride', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + -1.0, // 1 + 0.0, + 0.0, + 0.0, // 2 + 1.0 // 2 + ]); + ybuf = new Complex64Array([ + 2.0, // 0 + 1.0, // 0 + -1.0, // 1 + 3.0, // 1 + 4.0, // 2 + 0.0 // 2 + ]); + x = vector( xbuf, 3, 2, 0 ); + y = vector( ybuf, 3, 1, 0 ); + + actual = cxmy( [ x, y ] ); + expected = new Complex64Array([ + // (1.0+2.0i) * (2.0+1.0i) + 0.0, + 5.0, + // (3.0-1.0i) * (-1.0+3.0i) + 0.0, + 10.0, + // (0.0+1.0i) * (4.0+0.0i) + 0.0, + 4.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output ndarray having a non-unit stride', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex64Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + -1.0, // 1 + 0.0, // 2 + 1.0 // 2 + ]); + ybuf = new Complex64Array([ + 2.0, // 0 + 1.0, // 0 + 0.0, + 0.0, + -1.0, // 1 + 3.0, // 1 + 0.0, + 0.0, + 4.0, // 2 + 0.0 // 2 + ]); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 2, 0 ); + + actual = cxmy( [ x, y ] ); + expected = new Complex64Array([ + // (1.0+2.0i) * (2.0+1.0i) + 0.0, + 5.0, + 0.0, + 0.0, + // (3.0-1.0i) * (-1.0+3.0i) + 0.0, + 10.0, + 0.0, + 0.0, + // (0.0+1.0i) * (4.0+0.0i) + 0.0, + 4.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex64Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + -1.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + ybuf = new Complex64Array([ + 4.0, // 2 + 0.0, // 2 + 3.0, // 1 + -1.0, // 1 + 2.0, // 0 + 1.0 // 0 + ]); + x = vector( xbuf, 3, -2, 4 ); + y = vector( ybuf, 3, -1, 2 ); + + actual = cxmy( [ x, y ] ); + expected = new Complex64Array([ + // (1.0+2.0i) * (4.0+0.0i) + 4.0, + 8.0, + // (3.0-1.0i) * (3.0-1.0i) + 8.0, + -6.0, + // (5.0+6.0i) * (2.0+1.0i) + 4.0, + 17.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex64Array([ + 0.0, + 0.0, + 1.0, // 0 + 0.0, // 0 + 0.0, + 0.0, + 2.0, // 1 + 0.0, // 1 + 0.0, + 0.0, + 3.0, // 2 + 0.0 // 2 + ]); + ybuf = new Complex64Array([ + 0.0, + 0.0, + 2.0, // 0 + 0.0, // 0 + 3.0, // 1 + 0.0, // 1 + 4.0, // 2 + 0.0 // 2 + ]); + x = vector( xbuf, 3, 2, 1 ); + y = vector( ybuf, 3, 1, 1 ); + + actual = cxmy( [ x, y ] ); + + expected = new Complex64Array([ + 0.0, + 0.0, + // (1.0+0.0i) * (2.0+0.0i) + 2.0, + 0.0, + // (2.0+0.0i) * (3.0+0.0i) + 6.0, + 0.0, + // (3.0+0.0i) * (4.0+0.0i) + 12.0, + 0.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided empty ndarrays, the function returns the output ndarray unchanged', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex64Array( [] ); + ybuf = new Complex64Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + + actual = cxmy( [ x, y ] ); + expected = new Complex64Array( [] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex64Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/README.md new file mode 100644 index 000000000000..449886207062 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/README.md @@ -0,0 +1,109 @@ + + +# dany + +> Test whether at least one element in a one-dimensional double-precision floating-point ndarray is truthy. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dany = require( '@stdlib/blas/ext/base/ndarray/dany' ); +``` + +#### dany( arrays ) + +Tests whether at least one element in a one-dimensional double-precision floating-point ndarray is truthy. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + +var x = new Float64Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); + +var v = dany( [ x ] ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing a one-dimensional input ndarray. + +
+ + + +
+ +## Notes + +- If provided an empty one-dimensional ndarray, the function returns `false`. +- The function explicitly treats `NaN` values as falsy. + +
+ + + +
+ +## Examples + + + +```javascript +var bernoulli = require( '@stdlib/random/bernoulli' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dany = require( '@stdlib/blas/ext/base/ndarray/dany' ); + +var x = bernoulli( [ 10 ], 0.2, { + 'dtype': 'float64' +}); +console.log( ndarray2array( x ) ); + +var v = dany( [ x ] ); +console.log( v ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/benchmark/benchmark.js new file mode 100644 index 000000000000..e7ebcc7d6c25 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/benchmark/benchmark.js @@ -0,0 +1,102 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dany = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = zeros( [ len ], options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dany( [ x ] ); + if ( typeof out !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( typeof out !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/docs/repl.txt new file mode 100644 index 000000000000..91f47c30b07c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/docs/repl.txt @@ -0,0 +1,28 @@ + +{{alias}}( arrays ) + Tests whether at least one element in a one-dimensional double-precision + floating-point ndarray is truthy. + + If provided an empty ndarray, the function returns `false`. + + The function explicitly treats `NaN` values as falsy. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing a one-dimensional input ndarray. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one element is truthy. + + Examples + -------- + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( [ 0.0, 0.0, 1.0 ] ); + > {{alias}}( [ x ] ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/docs/types/index.d.ts new file mode 100644 index 000000000000..d438344c2e83 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray } from '@stdlib/types/ndarray'; + +/** +* Tests whether at least one element in a one-dimensional double-precision floating-point ndarray is truthy. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* +* - The function explicitly treats `NaN` values as falsy. +* +* @param arrays - array-like object containing ndarrays +* @returns boolean indicating whether at least one element is truthy +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* +* var x = new Float64Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); +* +* var v = dany( [ x ] ); +* // returns true +*/ +declare function dany( arrays: [ float64ndarray ] ): boolean; + + +// EXPORTS // + +export = dany; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/docs/types/test.ts new file mode 100644 index 000000000000..4639fba07a14 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/docs/types/test.ts @@ -0,0 +1,57 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dany = require( './index' ); + + +// TESTS // + +// The function returns a boolean... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + + dany( [ x ] ); // $ExpectType boolean +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dany( '10' ); // $ExpectError + dany( 10 ); // $ExpectError + dany( true ); // $ExpectError + dany( false ); // $ExpectError + dany( null ); // $ExpectError + dany( undefined ); // $ExpectError + dany( [] ); // $ExpectError + dany( {} ); // $ExpectError + dany( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + + dany(); // $ExpectError + dany( [ x ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/examples/index.js new file mode 100644 index 000000000000..5b8903aa8ab1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/examples/index.js @@ -0,0 +1,31 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var bernoulli = require( '@stdlib/random/bernoulli' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dany = require( './../lib' ); + +var x = bernoulli( [ 10 ], 0.2, { + 'dtype': 'float64' +}); +console.log( ndarray2array( x ) ); + +var v = dany( [ x ] ); +console.log( v ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/lib/index.js new file mode 100644 index 000000000000..2a02a502d07d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/lib/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether at least one element in a one-dimensional double-precision floating-point ndarray is truthy. +* +* @module @stdlib/blas/ext/base/ndarray/dany +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var dany = require( '@stdlib/blas/ext/base/ndarray/dany' ); +* +* var x = new Float64Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); +* +* var v = dany( [ x ] ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/lib/main.js new file mode 100644 index 000000000000..32a0b74a2e0a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/lib/main.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/dany' ).ndarray; + + +// MAIN // + +/** +* Tests whether at least one element in a one-dimensional double-precision floating-point ndarray is truthy. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* +* - The function explicitly treats `NaN` values as falsy. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {boolean} boolean indicating whether at least one element is truthy +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* +* var x = new Float64Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); +* +* var v = dany( [ x ] ); +* // returns true +*/ +function dany( arrays ) { + var x = arrays[ 0 ]; + return strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dany; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/package.json new file mode 100644 index 000000000000..f0bb98a40ace --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/dany", + "version": "0.0.0", + "description": "Test whether at least one element in a one-dimensional double-precision floating-point ndarray is truthy.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "any", + "dany", + "truthy", + "test", + "boolean", + "ndarray", + "float64", + "double-precision", + "float64array" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/test/test.js new file mode 100644 index 000000000000..e09d33374cec --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dany/test/test.js @@ -0,0 +1,178 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var dany = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float64Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dany, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( dany.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function tests whether at least one element in a one-dimensional ndarray is truthy', function test( t ) { + var x; + var v; + + x = new Float64Array( [ 0.0, 0.0, 1.0, 1.0 ] ); + v = dany( [ vector( x, 4, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + x = new Float64Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + v = dany( [ vector( x, 5, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = new Float64Array( [ 1.0, 0.0, 0.0 ] ); + v = dany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + x = new Float64Array( [ -0.0, 0.0, -0.0 ] ); + v = dany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = new Float64Array( [ -1.0, 0.0, 0.0 ] ); + v = dany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `NaN` values as falsy', function test( t ) { + var x; + var v; + + x = new Float64Array( [ NaN, 0.0, 0.0 ] ); + v = dany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = new Float64Array( [ NaN, NaN, NaN ] ); + v = dany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = new Float64Array( [ NaN, 0.0, 1.0 ] ); + v = dany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided an empty ndarray, the function returns `false`', function test( t ) { + var x; + var v; + + x = new Float64Array( [] ); + + v = dany( [ vector( x, 0, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-unit strides', function test( t ) { + var x; + var v; + + x = new Float64Array([ + 0.0, // 0 + 1.0, + 0.0, // 1 + 1.0, + 0.0, // 2 + 1.0, + 0.0, // 3 + 1.0 + ]); + + v = dany( [ vector( x, 4, 2, 0 ) ] ); + + t.strictEqual( v, false, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having negative strides', function test( t ) { + var x; + var v; + + x = new Float64Array([ + 1.0, // 3 + 0.0, + 0.0, // 2 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 0 + 0.0 + ]); + + v = dany( [ vector( x, 4, -2, 6 ) ] ); + + t.strictEqual( v, true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-zero offsets', function test( t ) { + var x; + var v; + + x = new Float64Array([ + 1.0, + 0.0, // 0 + 1.0, + 0.0, // 1 + 1.0, + 0.0, // 2 + 1.0, + 0.0 // 3 + ]); + + v = dany( [ vector( x, 4, 2, 1 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/README.md new file mode 100644 index 000000000000..48b0acbf5e00 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/README.md @@ -0,0 +1,132 @@ + + +# dfillEqual + +> Replace elements in a one-dimensional double-precision floating-point ndarray equal to a provided search element with a specified scalar constant. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dfillEqual = require( '@stdlib/blas/ext/base/ndarray/dfill-equal' ); +``` + +#### dfillEqual( arrays ) + +Replaces elements in a one-dimensional double-precision floating-point ndarray equal to a provided search element with a specified scalar constant. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +var searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' +}); + +var alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' +}); + +dfillEqual( [ x, searchElement, alpha ] ); +// x => [ 5.0, -2.0, 3.0, 5.0, 4.0, -6.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + - a zero-dimensional ndarray containing the scalar constant. + +
+ + + +
+ +## Notes + +- The input ndarray is modified **in-place** (i.e., the input ndarray is **mutated**). +- When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct and `-0` and `+0` are considered the same. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var dfillEqual = require( '@stdlib/blas/ext/base/ndarray/dfill-equal' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], 0, 3, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 1.0, opts ); +console.log( 'Search Element: %d', ndarraylike2scalar( searchElement ) ); + +var alpha = scalar2ndarray( 5.0, opts ); +console.log( 'Alpha: %d', ndarraylike2scalar( alpha ) ); + +dfillEqual( [ x, searchElement, alpha ] ); +console.log( ndarray2array( x ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..de290d93c07e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/benchmark/benchmark.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var vector = require( '@stdlib/ndarray/vector/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var dfill = require( '@stdlib/blas/ext/base/dfill' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfillEqual = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var searchElement; + var alpha; + var xbuf; + var x; + + xbuf = uniform( len, -100.0, 100.0, options ); + dfill( len, 0.0, xbuf, 3 ); + x = vector( xbuf, options.dtype ); + searchElement = scalar2ndarray( 0.0, options ); + alpha = scalar2ndarray( 5.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfillEqual( [ x, searchElement, alpha ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/docs/repl.txt new file mode 100644 index 000000000000..d8ee49a8c7b1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/docs/repl.txt @@ -0,0 +1,38 @@ + +{{alias}}( arrays ) + Replaces elements in a one-dimensional double-precision floating-point + ndarray equal to a provided search element with a specified scalar + constant. + + The input ndarray is modified *in-place* (i.e., the input ndarray is + *mutated*). + + When comparing elements, the function checks for equality using the strict + equality operator `===`. As a consequence, `NaN` values are considered + distinct and `-0` and `+0` are considered the same. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + - a zero-dimensional ndarray containing the scalar constant. + + Returns + ------- + out: ndarray + Input ndarray. + + Examples + -------- + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > var v = {{alias:@stdlib/ndarray/from-scalar}}( 0.0, { 'dtype': 'float64' } ); + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 5.0, { 'dtype': 'float64' } ); + > {{alias}}( [ x, v, alpha ] ) + [ 5.0, -2.0, 3.0, 5.0, 4.0, -6.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..e70899dfa18d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/docs/types/index.d.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray, typedndarray } from '@stdlib/types/ndarray'; + +/** +* Replaces elements in a one-dimensional double-precision floating-point ndarray equal to a provided search element with a specified scalar constant. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* - a zero-dimensional ndarray containing the scalar constant. +* +* - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct and `-0` and `+0` are considered the same. +* +* @param arrays - array-like object containing ndarrays +* @returns input ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'float64' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'float64' +* }); +* +* var out = dfillEqual( [ x, searchElement, alpha ] ); +* // returns [ 5.0, -2.0, 3.0, 5.0, 4.0, -6.0 ] +*/ +declare function dfillEqual( arrays: [ float64ndarray, typedndarray, typedndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/docs/types/test.ts new file mode 100644 index 000000000000..f0ea40eae8e8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/docs/types/test.ts @@ -0,0 +1,70 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +import dfillEqual = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + const alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + dfillEqual( [ x, searchElement, alpha ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dfillEqual( '10' ); // $ExpectError + dfillEqual( 5 ); // $ExpectError + dfillEqual( true ); // $ExpectError + dfillEqual( false ); // $ExpectError + dfillEqual( null ); // $ExpectError + dfillEqual( undefined ); // $ExpectError + dfillEqual( [] ); // $ExpectError + dfillEqual( {} ); // $ExpectError + dfillEqual( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + const alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + dfillEqual(); // $ExpectError + dfillEqual( [ x, searchElement, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/examples/index.js new file mode 100644 index 000000000000..6463300da794 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var dfillEqual = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], 0, 3, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 1.0, opts ); +console.log( 'Search Element: %d', ndarraylike2scalar( searchElement ) ); + +var alpha = scalar2ndarray( 5.0, opts ); +console.log( 'Alpha: %d', ndarraylike2scalar( alpha ) ); + +dfillEqual( [ x, searchElement, alpha ] ); +console.log( ndarray2array( x ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/lib/index.js new file mode 100644 index 000000000000..85e8bb18ad34 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/lib/index.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace elements in a one-dimensional double-precision floating-point ndarray equal to a provided search element with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/ndarray/dfill-equal +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var dfillEqual = require( '@stdlib/blas/ext/base/ndarray/dfill-equal' ); +* +* var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'float64' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'float64' +* }); +* +* var out = dfillEqual( [ x, searchElement, alpha ] ); +* // returns [ 5.0, -2.0, 3.0, 5.0, 4.0, -6.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/lib/main.js new file mode 100644 index 000000000000..cf9e9e1671c2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/lib/main.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/dfill-equal' ).ndarray; +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); + + +// MAIN // + +/** +* Replaces elements in a one-dimensional double-precision floating-point ndarray equal to a provided search element with a specified scalar constant. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* - a zero-dimensional ndarray containing the scalar constant. +* +* - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct and `-0` and `+0` are considered the same. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} input ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'float64' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'float64' +* }); +* +* var out = dfillEqual( [ x, searchElement, alpha ] ); +* // returns [ 5.0, -2.0, 3.0, 5.0, 4.0, -6.0 ] +*/ +function dfillEqual( arrays ) { + var searchElement; + var alpha; + var x; + + x = arrays[ 0 ]; + searchElement = ndarraylike2scalar( arrays[ 1 ] ); + alpha = ndarraylike2scalar( arrays[ 2 ] ); + strided( numelDimension( x, 0 ), searchElement, alpha, getData( x ), getStride( x, 0 ), getOffset( x ) ); // eslint-disable-line max-len + return x; +} + + +// EXPORTS // + +module.exports = dfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/package.json new file mode 100644 index 000000000000..7ad0e4828f3a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/dfill-equal", + "version": "0.0.0", + "description": "Replace elements in a one-dimensional double-precision floating-point ndarray equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "fill", + "equal", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "float64", + "double" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/test/test.js new file mode 100644 index 000000000000..1a5aaf4a4b30 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-equal/test/test.js @@ -0,0 +1,301 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var dfillEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float64Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function replaces elements equal to a provided search element', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 6, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 5.0, -2.0, 3.0, 5.0, 4.0, -6.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-unit stride', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 3, 2, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 5.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a negative stride', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 3, -2, 4 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 5.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-zero offset', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 3, 1, 3 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 0.0, -2.0, 3.0, 5.0, 4.0, -6.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are not equal to a provided search element, the function returns the input ndarray unchanged', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function returns the input ndarray unchanged', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ NaN, 1.0, NaN ] ); + x = vector( xbuf, 3, 1, 0 ); + searchElement = scalar2ndarray( NaN, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ NaN, 1.0, NaN ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function does not replace `NaN` elements', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ NaN, 0.0, NaN ] ); + x = vector( xbuf, 3, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ NaN, 5.0, NaN ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 5.0, 1.0, 5.0, 5.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + xbuf = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( -0.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 5.0, 1.0, 5.0, 5.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the input ndarray unchanged when the input ndarray is empty', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/README.md new file mode 100644 index 000000000000..27d06cbe4566 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/README.md @@ -0,0 +1,132 @@ + + +# dfillNotEqual + +> Replace elements in a one-dimensional double-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/dfill-not-equal' ); +``` + +#### dfillNotEqual( arrays ) + +Replaces elements in a one-dimensional double-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +var searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' +}); + +var alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' +}); + +dfillNotEqual( [ x, searchElement, alpha ] ); +// x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + - a zero-dimensional ndarray containing the scalar constant. + +
+ + + +
+ +## Notes + +- The input ndarray is modified **in-place** (i.e., the input ndarray is **mutated**). +- When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var dfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/dfill-not-equal' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], 0, 3, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 1.0, opts ); +console.log( 'Search Element: %d', ndarraylike2scalar( searchElement ) ); + +var alpha = scalar2ndarray( 5.0, opts ); +console.log( 'Alpha: %d', ndarraylike2scalar( alpha ) ); + +dfillNotEqual( [ x, searchElement, alpha ] ); +console.log( ndarray2array( x ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..8de3cf5ad3e5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfillNotEqual = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var searchElement; + var alpha; + var x; + + x = uniform( [ len ], -100.0, 100.0, options ); + searchElement = scalar2ndarray( 0.0, options ); + alpha = scalar2ndarray( 5.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfillNotEqual( [ x, searchElement, alpha ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/docs/repl.txt new file mode 100644 index 000000000000..3216cb60a9bf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/docs/repl.txt @@ -0,0 +1,39 @@ + +{{alias}}( arrays ) + Replaces elements in a one-dimensional double-precision floating-point + ndarray not equal to a provided search element with a specified scalar + constant. + + The input ndarray is modified *in-place* (i.e., the input ndarray is + *mutated*). + + When comparing elements, the function checks for equality using the strict + equality operator `===`. As a consequence, `NaN` values are considered + distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements + are always replaced), and `-0` and `+0` are considered the same. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + - a zero-dimensional ndarray containing the scalar constant. + + Returns + ------- + out: ndarray + Input ndarray. + + Examples + -------- + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > var v = {{alias:@stdlib/ndarray/from-scalar}}( 0.0, { 'dtype': 'float64' } ); + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 5.0, { 'dtype': 'float64' } ); + > {{alias}}( [ x, v, alpha ] ) + [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..118b1c624a9f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/docs/types/index.d.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray, typedndarray } from '@stdlib/types/ndarray'; + +/** +* Replaces elements in a one-dimensional double-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* - a zero-dimensional ndarray containing the scalar constant. +* +* - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. +* +* @param arrays - array-like object containing ndarrays +* @returns input ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'float64' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'float64' +* }); +* +* var out = dfillNotEqual( [ x, searchElement, alpha ] ); +* // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +declare function dfillNotEqual( arrays: [ float64ndarray, typedndarray, typedndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..56572c894c26 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/docs/types/test.ts @@ -0,0 +1,70 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +import dfillNotEqual = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + const alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + dfillNotEqual( [ x, searchElement, alpha ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dfillNotEqual( '10' ); // $ExpectError + dfillNotEqual( 5 ); // $ExpectError + dfillNotEqual( true ); // $ExpectError + dfillNotEqual( false ); // $ExpectError + dfillNotEqual( null ); // $ExpectError + dfillNotEqual( undefined ); // $ExpectError + dfillNotEqual( [] ); // $ExpectError + dfillNotEqual( {} ); // $ExpectError + dfillNotEqual( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + const alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + dfillNotEqual(); // $ExpectError + dfillNotEqual( [ x, searchElement, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/examples/index.js new file mode 100644 index 000000000000..1647130cd216 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var dfillNotEqual = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], 0, 3, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 1.0, opts ); +console.log( 'Search Element: %d', ndarraylike2scalar( searchElement ) ); + +var alpha = scalar2ndarray( 5.0, opts ); +console.log( 'Alpha: %d', ndarraylike2scalar( alpha ) ); + +dfillNotEqual( [ x, searchElement, alpha ] ); +console.log( ndarray2array( x ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/lib/index.js new file mode 100644 index 000000000000..be540fb01568 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/lib/index.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace elements in a one-dimensional double-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/ndarray/dfill-not-equal +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var dfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/dfill-not-equal' ); +* +* var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'float64' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'float64' +* }); +* +* var out = dfillNotEqual( [ x, searchElement, alpha ] ); +* // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/lib/main.js new file mode 100644 index 000000000000..a7735034cdb6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/lib/main.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/dfill-not-equal' ).ndarray; +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); + + +// MAIN // + +/** +* Replaces elements in a one-dimensional double-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* - a zero-dimensional ndarray containing the scalar constant. +* +* - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} input ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'float64' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'float64' +* }); +* +* var out = dfillNotEqual( [ x, searchElement, alpha ] ); +* // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function dfillNotEqual( arrays ) { + var searchElement; + var alpha; + var x; + + x = arrays[ 0 ]; + searchElement = ndarraylike2scalar( arrays[ 1 ] ); + alpha = ndarraylike2scalar( arrays[ 2 ] ); + strided( numelDimension( x, 0 ), searchElement, alpha, getData( x ), getStride( x, 0 ), getOffset( x ) ); // eslint-disable-line max-len + return x; +} + + +// EXPORTS // + +module.exports = dfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/package.json new file mode 100644 index 000000000000..6b418fe8e57c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/dfill-not-equal", + "version": "0.0.0", + "description": "Replace elements in a one-dimensional double-precision floating-point ndarray not equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "fill", + "not equal", + "unequal", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "float64", + "double" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/test/test.js new file mode 100644 index 000000000000..06a6b4b78809 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfill-not-equal/test/test.js @@ -0,0 +1,301 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' ); +var Float64Array = require( '@stdlib/array/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var dfillNotEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float64Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function replaces elements not equal to a provided search element', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 6, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-unit stride', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 3, 2, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a negative stride', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 3, -2, 4 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-zero offset', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 3, 1, 3 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 0.0, -2.0, 3.0, 0.0, 5.0, 5.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns the input ndarray unchanged', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ NaN, 1.0, NaN ] ); + x = vector( xbuf, 3, 1, 0 ); + searchElement = scalar2ndarray( NaN, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 5.0, 5.0, 5.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ NaN, 0.0, NaN ] ); + x = vector( xbuf, 3, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ 5.0, 0.0, 5.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + xbuf = new Float64Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( -0.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the input ndarray unchanged when the input ndarray is empty', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float64Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float64' + }); + + actual = dfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float64Array( [] ); + t.strictEqual( isSameFloat64Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/README.md new file mode 100644 index 000000000000..ffcdab1d53e5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/README.md @@ -0,0 +1,128 @@ + + +# dfirstIndexLessThan + +> Return the index of the first element in a one-dimensional double-precision floating-point ndarray which is less than a corresponding element in another one-dimensional double-precision floating-point ndarray. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dfirstIndexLessThan = require( '@stdlib/blas/ext/base/ndarray/dfirst-index-less-than' ); +``` + +#### dfirstIndexLessThan( arrays ) + +Returns the index of the first element in a one-dimensional double-precision floating-point ndarray which is less than a corresponding element in another one-dimensional double-precision floating-point ndarray. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + +var x = new Float64Vector( [ 0.0, 0.0, 0.0, 0.0 ] ); +var y = new Float64Vector( [ 0.0, 0.0, 1.0, 0.0 ] ); + +var idx = dfirstIndexLessThan( [ x, y ] ); +// returns 2 +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - first one-dimensional input ndarray. + - second one-dimensional input ndarray. + +If the function is unable to find an element in the first one-dimensional input ndarray which is less than a corresponding element in the second one-dimensional input ndarray, the function returns `-1`. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + +var x = new Float64Vector( [ 5.0, 6.0, 7.0, 8.0 ] ); +var y = new Float64Vector( [ 1.0, 2.0, 3.0, 4.0 ] ); + +var idx = dfirstIndexLessThan( [ x, y ] ); +// returns -1 +``` + +
+ + + +
+ +## Notes + +- When comparing elements, the function checks whether an element in the first one-dimensional input ndarray is less than a corresponding element in the second one-dimensional input ndarray using the less-than operator `<`. As a consequence, comparisons involving `NaN` always evaluate to `false`. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dfirstIndexLessThan = require( '@stdlib/blas/ext/base/ndarray/dfirst-index-less-than' ); + +var opts = { + 'dtype': 'float64' +}; +var x = discreteUniform( [ 10 ], 0, 10, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 0, 10, opts ); +console.log( ndarray2array( y ) ); + +var idx = dfirstIndexLessThan( [ x, y ] ); +console.log( idx ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/benchmark/benchmark.js new file mode 100644 index 000000000000..176490c3079e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/benchmark/benchmark.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var pow = require( '@stdlib/math/base/special/pow' ); +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dfirstIndexLessThan = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = new Float64Vector( ones( len, options.dtype ) ); + var y = new Float64Vector( ones( len, options.dtype ) ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dfirstIndexLessThan( [ x, y ] ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/docs/repl.txt new file mode 100644 index 000000000000..e6886c7faa75 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( arrays ) + Returns the index of the first element in a one-dimensional double- + precision floating-point ndarray which is less than a corresponding element + in another one-dimensional double-precision floating-point ndarray. + + When comparing elements, the function checks whether an element in the first + one-dimensional input ndarray is less than a corresponding element in the + second one-dimensional input ndarray using the less-than operator `<`. As a + consequence, comparisons involving `NaN` always evaluate to `false`. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - first one-dimensional input ndarray. + - second one-dimensional input ndarray. + + Returns + ------- + out: integer + Index. + + Examples + -------- + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( [ 0.0, 0.0, 0.0, 0.0 ] ); + > var y = new {{alias:@stdlib/ndarray/vector/float64}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > {{alias}}( [ x, y ] ) + 2 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/docs/types/index.d.ts new file mode 100644 index 000000000000..98180c960525 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/docs/types/index.d.ts @@ -0,0 +1,54 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray } from '@stdlib/types/ndarray'; + +/** +* Returns the index of the first element in a one-dimensional double-precision floating-point ndarray which is less than a corresponding element in another one-dimensional double-precision floating-point ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - first one-dimensional input ndarray. +* - second one-dimensional input ndarray. +* +* - When comparing elements, the function checks whether an element in the first one-dimensional input ndarray is less than a corresponding element in the second one-dimensional input ndarray using the less-than operator `<`. As a consequence, comparisons involving `NaN` always evaluate to `false`. +* +* @param arrays - array-like object containing ndarrays +* @returns index +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* +* var x = new Float64Vector( [ 0.0, 0.0, 0.0, 0.0 ] ); +* var y = new Float64Vector( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* var idx = dfirstIndexLessThan( [ x, y ] ); +* // returns 2 +*/ +declare function dfirstIndexLessThan( arrays: [ float64ndarray, float64ndarray ] ): number; + + +// EXPORTS // + +export = dfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/docs/types/test.ts new file mode 100644 index 000000000000..ada378446f94 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dfirstIndexLessThan = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float64' + }); + + dfirstIndexLessThan( [ x, y ] ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dfirstIndexLessThan( '10' ); // $ExpectError + dfirstIndexLessThan( 10 ); // $ExpectError + dfirstIndexLessThan( true ); // $ExpectError + dfirstIndexLessThan( false ); // $ExpectError + dfirstIndexLessThan( null ); // $ExpectError + dfirstIndexLessThan( undefined ); // $ExpectError + dfirstIndexLessThan( [] ); // $ExpectError + dfirstIndexLessThan( {} ); // $ExpectError + dfirstIndexLessThan( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float64' + }); + + dfirstIndexLessThan(); // $ExpectError + dfirstIndexLessThan( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/examples/index.js new file mode 100644 index 000000000000..7c3ab47e7f69 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dfirstIndexLessThan = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; +var x = discreteUniform( [ 10 ], 0, 10, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 0, 10, opts ); +console.log( ndarray2array( y ) ); + +var idx = dfirstIndexLessThan( [ x, y ] ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/lib/index.js new file mode 100644 index 000000000000..b4fee2b37824 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the index of the first element in a one-dimensional double-precision floating-point ndarray which is less than a corresponding element in another one-dimensional double-precision floating-point ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/dfirst-index-less-than +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var dfirstIndexLessThan = require( '@stdlib/blas/ext/base/ndarray/dfirst-index-less-than' ); +* +* var x = new Float64Vector( [ 0.0, 0.0, 0.0, 0.0 ] ); +* var y = new Float64Vector( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* var idx = dfirstIndexLessThan( [ x, y ] ); +* // returns 2 +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/lib/main.js new file mode 100644 index 000000000000..b203c92d4c3e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/lib/main.js @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/dfirst-index-less-than' ).ndarray; + + +// MAIN // + +/** +* Returns the index of the first element in a one-dimensional double-precision floating-point ndarray which is less than a corresponding element in another one-dimensional double-precision floating-point ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - first one-dimensional input ndarray. +* - second one-dimensional input ndarray. +* +* - When comparing elements, the function checks whether an element in the first one-dimensional input ndarray is less than a corresponding element in the second one-dimensional input ndarray using the less-than operator `<`. As a consequence, comparisons involving `NaN` always evaluate to `false`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {integer} index +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* +* var x = new Float64Vector( [ 0.0, 0.0, 0.0, 0.0 ] ); +* var y = new Float64Vector( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* var idx = dfirstIndexLessThan( [ x, y ] ); +* // returns 2 +*/ +function dfirstIndexLessThan( arrays ) { + var x = arrays[ 0 ]; + var y = arrays[ 1 ]; + return strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/package.json new file mode 100644 index 000000000000..bae2b524a0de --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/package.json @@ -0,0 +1,67 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/dfirst-index-less-than", + "version": "0.0.0", + "description": "Return the index of the first element in a one-dimensional double-precision floating-point ndarray which is less than a corresponding element in another one-dimensional double-precision floating-point ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "array", + "index", + "search", + "find", + "less", + "compare", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/test/test.js new file mode 100644 index 000000000000..d29e09798be8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dfirst-index-less-than/test/test.js @@ -0,0 +1,194 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var Float64Array = require( '@stdlib/array/float64' ); +var dfirstIndexLessThan = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float64Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a one-dimensional ndarray which is less than a corresponding element in another one-dimensional ndarray', function test( t ) { + var actual; + var x; + var y; + + x = vector( new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ), 6, 1, 0 ); + y = vector( new Float64Array( [ 2.0, 2.0, 2.0, 3.0, 4.0, 5.0 ] ), 6, 1, 0 ); + + actual = dfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = vector( new Float64Array( [ 2.0, 1.0, 3.0, 4.0, 5.0, 6.0 ] ), 6, 1, 0 ); + y = vector( new Float64Array( [ 1.0, 2.0, 2.0, 3.0, 4.0, 5.0 ] ), 6, 1, 0 ); + + actual = dfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = vector( new Float64Array( [ 2.0, 2.0, 2.0, 4.0, 5.0, 6.0 ] ), 6, 1, 0 ); + y = vector( new Float64Array( [ 1.0, 2.0, 3.0, 5.0, 4.0, 5.0 ] ), 6, 1, 0 ); + + actual = dfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = vector( new Float64Array( [ 2.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ), 6, 1, 0 ); + y = vector( new Float64Array( [ 1.0, 2.0, 2.0, 3.0, 4.0, 5.0 ] ), 6, 1, 0 ); + + actual = dfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if unable to find an element in the first one-dimensional input ndarray which is less than a corresponding element in the second one-dimensional input ndarray', function test( t ) { + var actual; + var x; + var y; + + x = vector( new Float64Array( [ 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ), 6, 1, 0 ); + y = vector( new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ), 6, 1, 0 ); + + actual = dfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-unit strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 2.0, // 0 + 2.0, + 2.0, // 1 + -4.0, + 3.0, // 2 + 3.0, + 5.0, // 3 + 2.0 + ]); + y = new Float64Array([ + 1.0, // 0 + 2.0, + 1.0, // 1 + -4.0, + 4.0, // 2 + 3.0, + 4.0, // 3 + 2.0 + ]); + + actual = dfirstIndexLessThan( [ vector( x, 4, 2, 0 ), vector( y, 4, 2, 0 ) ] ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having negative strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 1.0, // 3 + 2.0, + 2.0, // 2 + -2.0, + 3.0, // 1 + 4.0, + 5.0, // 0 + 2.0 + ]); + y = new Float64Array([ + 4.0, // 3 + 2.0, + 3.0, // 2 + -2.0, + 4.0, // 1 + 4.0, + 4.0, // 0 + 2.0 + ]); + + actual = dfirstIndexLessThan( [ vector( x, 4, -2, 6 ), vector( y, 4, -2, 6 ) ] ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-zero offsets', function test( t ) { + var actual; + var x; + var y; + + x = new Float64Array([ + 2.0, + 1.0, // 0 + 2.0, + 2.0, // 1 + -2.0, + 3.0, // 2 + 3.0, + 4.0 // 3 + ]); + y = new Float64Array([ + 2.0, + 2.0, // 0 + 2.0, + 3.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 5.0 // 3 + ]); + + actual = dfirstIndexLessThan( [ vector( x, 4, 2, 1 ), vector( y, 4, 2, 1 ) ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-falsy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-falsy/README.md index 6dd9ff3da3bb..87682c4e81d1 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-falsy/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-falsy/README.md @@ -51,9 +51,7 @@ var idx = dindexOfFalsy( [ x ] ); The function has the following parameters: -- **arrays**: array-like object containing the following ndarrays: - - - a one-dimensional input ndarray. +- **arrays**: array-like object containing a one-dimensional input ndarray. If the function is unable to find a falsy element, the function returns `-1`. diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/README.md new file mode 100644 index 000000000000..c65caf575761 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/README.md @@ -0,0 +1,139 @@ + + +# dindexOfNotEqual + +> Return the first index of an element in a one-dimensional double-precision floating-point ndarray which is not equal to a specified search element. + +
+ +
+ + + +
+ +## Usage + +```javascript +var dindexOfNotEqual = require( '@stdlib/blas/ext/base/ndarray/dindex-of-not-equal' ); +``` + +#### dindexOfNotEqual( arrays ) + +Returns the first index of an element in a one-dimensional double-precision floating-point ndarray which is not equal to a specified search element. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = new Float64Vector( [ 1.0, 1.0, 3.0 ] ); + +var searchElement = scalar2ndarray( 1.0, { + 'dtype': 'float64' +}); + +var idx = dindexOfNotEqual( [ x, searchElement ] ); +// returns 2 +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + +If the function is unable to find an element which is not equal to a specified search element, the function returns `-1`. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = new Float64Vector( [ 1.0, 1.0, 1.0 ] ); + +var searchElement = scalar2ndarray( 1.0, { + 'dtype': 'float64' +}); + +var idx = dindexOfNotEqual( [ x, searchElement ] ); +// returns -1 +``` + +
+ + + +
+ +## Notes + +- When searching for a search element, the function checks for inequality using the strict inequality operator `!==`. As a consequence, `NaN` values are considered distinct from all values (including other `NaN` values), and `-0` and `+0` are considered the same. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var dindexOfNotEqual = require( '@stdlib/blas/ext/base/ndarray/dindex-of-not-equal' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], 0, 2, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 0, opts ); +console.log( 'Search Element:', ndarraylike2scalar( searchElement ) ); + +var idx = dindexOfNotEqual( [ x, searchElement ] ); +console.log( idx ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..28913ccee710 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dindexOfNotEqual = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var searchElement; + var x; + + x = zeros( [ len ], options ); + searchElement = scalar2ndarray( 0.0, options ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dindexOfNotEqual( [ x, searchElement ] ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/docs/repl.txt new file mode 100644 index 000000000000..c1b0cf95e56c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/docs/repl.txt @@ -0,0 +1,35 @@ + +{{alias}}( arrays ) + Returns the first index of an element in a one-dimensional double-precision + floating-point ndarray which is not equal to a specified search element. + + When searching for a search element, the function checks for inequality + using the strict inequality operator `!==`. As a consequence, `NaN` values + are considered distinct from all values (including other `NaN` values), and + `-0` and `+0` are considered the same. + + If unable to find an element which is not equal to a specified search + element, the function returns `-1`. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + + Returns + ------- + out: integer + Index. + + Examples + -------- + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( [ 1.0, 1.0, 3.0 ] ); + > var v = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, { 'dtype': 'float64' } ); + > {{alias}}( [ x, v ] ) + 2 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..b8a73d6fc028 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/docs/types/index.d.ts @@ -0,0 +1,56 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray, typedndarray } from '@stdlib/types/ndarray'; + +/** +* Returns the first index of an element in a one-dimensional double-precision floating-point ndarray which is not equal to a specified search element. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* +* @param arrays - array-like object containing ndarrays +* @returns index +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float64Vector( [ 1.0, 1.0, 3.0 ] ); +* +* var searchElement = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var v = dindexOfNotEqual( [ x, searchElement ] ); +* // returns 2 +*/ +declare function dindexOfNotEqual( arrays: [ float64ndarray, typedndarray ] ): number; + + +// EXPORTS // + +export = dindexOfNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..762ef435b2e5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/docs/types/test.ts @@ -0,0 +1,64 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +import dindexOfNotEqual = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + + dindexOfNotEqual( [ x, searchElement ] ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dindexOfNotEqual( '10' ); // $ExpectError + dindexOfNotEqual( 10 ); // $ExpectError + dindexOfNotEqual( true ); // $ExpectError + dindexOfNotEqual( false ); // $ExpectError + dindexOfNotEqual( null ); // $ExpectError + dindexOfNotEqual( undefined ); // $ExpectError + dindexOfNotEqual( [] ); // $ExpectError + dindexOfNotEqual( {} ); // $ExpectError + dindexOfNotEqual( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + + dindexOfNotEqual(); // $ExpectError + dindexOfNotEqual( [ x, searchElement ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/examples/index.js new file mode 100644 index 000000000000..c2c2f793c424 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/examples/index.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var dindexOfNotEqual = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], 0, 2, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 0, opts ); +console.log( 'Search Element:', ndarraylike2scalar( searchElement ) ); + +var idx = dindexOfNotEqual( [ x, searchElement ] ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/lib/index.js new file mode 100644 index 000000000000..0c1cba106c48 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/lib/index.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the first index of an element in a one-dimensional double-precision floating-point ndarray which is not equal to a specified search element. +* +* @module @stdlib/blas/ext/base/ndarray/dindex-of-not-equal +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var dindexOfNotEqual = require( '@stdlib/blas/ext/base/ndarray/dindex-of-not-equal' ); +* +* var x = new Float64Vector( [ 1.0, 1.0, 3.0 ] ); +* +* var searchElement = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var v = dindexOfNotEqual( [ x, searchElement ] ); +* // returns 2 +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/lib/main.js new file mode 100644 index 000000000000..ab4dae461cdb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); +var strided = require( '@stdlib/blas/ext/base/dindex-of-not-equal' ).ndarray; + + +// MAIN // + +/** +* Returns the first index of an element in a one-dimensional double-precision floating-point ndarray which is not equal to a specified search element. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {integer} index +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float64Vector( [ 1.0, 1.0, 3.0 ] ); +* +* var searchElement = scalar2ndarray( 1.0, { +* 'dtype': 'float64' +* }); +* +* var v = dindexOfNotEqual( [ x, searchElement ] ); +* // returns 2 +*/ +function dindexOfNotEqual( arrays ) { + var x = arrays[ 0 ]; + return strided( numelDimension( x, 0 ), ndarraylike2scalar( arrays[ 1 ] ), getData( x ), getStride( x, 0 ), getOffset( x ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = dindexOfNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/package.json new file mode 100644 index 000000000000..a722eb7d655f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/package.json @@ -0,0 +1,68 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/dindex-of-not-equal", + "version": "0.0.0", + "description": "Return the first index of an element in a one-dimensional double-precision floating-point ndarray which is not equal to a specified search element.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "array", + "index", + "search", + "find", + "equal", + "unequal", + "float64", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/test/test.js new file mode 100644 index 000000000000..37ffcc7b8f96 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dindex-of-not-equal/test/test.js @@ -0,0 +1,227 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var dindexOfNotEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float64Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a one-dimensional ndarray which is not equal to a provided search element', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ), 6, 1, 0 ); + + searchElement = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 2, 'returns expected value' ); + + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + searchElement = scalar2ndarray( 3.0, { + 'dtype': 'float64' + }); + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + searchElement = scalar2ndarray( 4.0, { + 'dtype': 'float64' + }); + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every element in a one-dimensional ndarray is equal to a provided search element', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( new Float64Array( [ 2.0, 2.0, 2.0 ] ), 3, 1, 0 ); + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `NaN` elements to be not equal to a provided search element', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( new Float64Array( [ 1.0, NaN, 1.0 ] ), 3, 1, 0 ); + searchElement = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided search element is `NaN`', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( new Float64Array( [ NaN, 1.0 ] ), 2, 1, 0 ); + searchElement = scalar2ndarray( NaN, { + 'dtype': 'float64' + }); + + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be equal', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( new Float64Array( [ -0.0, 0.0 ] ), 2, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float64' + }); + + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-unit strides', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( new Float64Array( [ 2.0, 9.0, 2.0, 9.0, 3.0, 9.0 ] ), 3, 2, 0 ); + + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 2, 'returns expected value' ); + + searchElement = scalar2ndarray( 9.0, { + 'dtype': 'float64' + }); + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having negative strides', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( new Float64Array( [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ), 6, -1, 5 ); + + searchElement = scalar2ndarray( 3.0, { + 'dtype': 'float64' + }); + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 2, 'returns expected value' ); + + searchElement = scalar2ndarray( 1.0, { + 'dtype': 'float64' + }); + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-zero offsets', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( new Float64Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ), 3, 1, 3 ); + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an empty one-dimensional ndarray', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( new Float64Array( [] ), 0, 1, 0 ); + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'float64' + }); + + actual = dindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansum/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansum/package.json index 32b27be4577a..0a439cfa7053 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansum/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansum/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/dnansum", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring `NaN` values.", + "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring NaN values.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumkbn/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumkbn/package.json index ea2dd45b7e7e..55c32b1ae93b 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumkbn/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumkbn/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/dnansumkbn", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring `NaN` values and using an improved Kahan–Babuška algorithm.", + "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring NaN values and using an improved Kahan–Babuška algorithm.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumkbn2/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumkbn2/package.json index 23499e315635..2680da766088 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumkbn2/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumkbn2/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/dnansumkbn2", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring `NaN` values and using a second-order iterative Kahan–Babuška algorithm.", + "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring NaN values and using a second-order iterative Kahan–Babuška algorithm.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumors/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumors/package.json index 845185426018..f587935b9f2e 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumors/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumors/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/dnansumors", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring `NaN` values and using ordinary recursive summation.", + "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring NaN values and using ordinary recursive summation.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumpw/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumpw/package.json index 0bff39b073ad..d07fd4cd6642 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumpw/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dnansumpw/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/dnansumpw", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring `NaN` values and using pairwise summation.", + "description": "Compute the sum of a one-dimensional double-precision floating-point ndarray, ignoring NaN values and using pairwise summation.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/docs/types/index.d.ts index b29eda953ebd..bea90f192fc1 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/docs/types/index.d.ts @@ -27,10 +27,12 @@ import coneTo = require( '@stdlib/blas/ext/base/ndarray/cone-to' ); import csum = require( '@stdlib/blas/ext/base/ndarray/csum' ); import csumkbn = require( '@stdlib/blas/ext/base/ndarray/csumkbn' ); import cunitspace = require( '@stdlib/blas/ext/base/ndarray/cunitspace' ); +import cxmy = require( '@stdlib/blas/ext/base/ndarray/cxmy' ); import cxpy = require( '@stdlib/blas/ext/base/ndarray/cxpy' ); import cxsa = require( '@stdlib/blas/ext/base/ndarray/cxsa' ); import cxsy = require( '@stdlib/blas/ext/base/ndarray/cxsy' ); import czeroTo = require( '@stdlib/blas/ext/base/ndarray/czero-to' ); +import dany = require( '@stdlib/blas/ext/base/ndarray/dany' ); import daxpb = require( '@stdlib/blas/ext/base/ndarray/daxpb' ); import daxpby = require( '@stdlib/blas/ext/base/ndarray/daxpby' ); import dcircshift = require( '@stdlib/blas/ext/base/ndarray/dcircshift' ); @@ -40,6 +42,8 @@ import dcusumkbn2 = require( '@stdlib/blas/ext/base/ndarray/dcusumkbn2' ); import dcusumors = require( '@stdlib/blas/ext/base/ndarray/dcusumors' ); import dcusumpw = require( '@stdlib/blas/ext/base/ndarray/dcusumpw' ); import ddiff = require( '@stdlib/blas/ext/base/ndarray/ddiff' ); +import dfillEqual = require( '@stdlib/blas/ext/base/ndarray/dfill-equal' ); +import dfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/dfill-not-equal' ); import dindexOf = require( '@stdlib/blas/ext/base/ndarray/dindex-of' ); import dindexOfFalsy = require( '@stdlib/blas/ext/base/ndarray/dindex-of-falsy' ); import dlastIndexOf = require( '@stdlib/blas/ext/base/ndarray/dlast-index-of' ); @@ -60,10 +64,13 @@ import dsumkbn2 = require( '@stdlib/blas/ext/base/ndarray/dsumkbn2' ); import dsumors = require( '@stdlib/blas/ext/base/ndarray/dsumors' ); import dsumpw = require( '@stdlib/blas/ext/base/ndarray/dsumpw' ); import dunitspace = require( '@stdlib/blas/ext/base/ndarray/dunitspace' ); +import dxdy = require( '@stdlib/blas/ext/base/ndarray/dxdy' ); +import dxmy = require( '@stdlib/blas/ext/base/ndarray/dxmy' ); import dxpy = require( '@stdlib/blas/ext/base/ndarray/dxpy' ); import dxsa = require( '@stdlib/blas/ext/base/ndarray/dxsa' ); import dxsy = require( '@stdlib/blas/ext/base/ndarray/dxsy' ); import dzeroTo = require( '@stdlib/blas/ext/base/ndarray/dzero-to' ); +import gany = require( '@stdlib/blas/ext/base/ndarray/gany' ); import gaxpb = require( '@stdlib/blas/ext/base/ndarray/gaxpb' ); import gaxpby = require( '@stdlib/blas/ext/base/ndarray/gaxpby' ); import gcircshift = require( '@stdlib/blas/ext/base/ndarray/gcircshift' ); @@ -72,10 +79,12 @@ import gcusumkbn = require( '@stdlib/blas/ext/base/ndarray/gcusumkbn' ); import gcusumkbn2 = require( '@stdlib/blas/ext/base/ndarray/gcusumkbn2' ); import gcusumors = require( '@stdlib/blas/ext/base/ndarray/gcusumors' ); import gcusumpw = require( '@stdlib/blas/ext/base/ndarray/gcusumpw' ); +import gfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/gfill-not-equal' ); import gfindIndex = require( '@stdlib/blas/ext/base/ndarray/gfind-index' ); import gfindLastIndex = require( '@stdlib/blas/ext/base/ndarray/gfind-last-index' ); import gindexOf = require( '@stdlib/blas/ext/base/ndarray/gindex-of' ); import gindexOfFalsy = require( '@stdlib/blas/ext/base/ndarray/gindex-of-falsy' ); +import gindexOfNotEqual = require( '@stdlib/blas/ext/base/ndarray/gindex-of-not-equal' ); import gindexOfTruthy = require( '@stdlib/blas/ext/base/ndarray/gindex-of-truthy' ); import gjoin = require( '@stdlib/blas/ext/base/ndarray/gjoin' ); import gjoinBetween = require( '@stdlib/blas/ext/base/ndarray/gjoin-between' ); @@ -95,10 +104,13 @@ import gsumkbn2 = require( '@stdlib/blas/ext/base/ndarray/gsumkbn2' ); import gsumors = require( '@stdlib/blas/ext/base/ndarray/gsumors' ); import gsumpw = require( '@stdlib/blas/ext/base/ndarray/gsumpw' ); import gunitspace = require( '@stdlib/blas/ext/base/ndarray/gunitspace' ); +import gxdy = require( '@stdlib/blas/ext/base/ndarray/gxdy' ); +import gxmy = require( '@stdlib/blas/ext/base/ndarray/gxmy' ); import gxpy = require( '@stdlib/blas/ext/base/ndarray/gxpy' ); import gxsa = require( '@stdlib/blas/ext/base/ndarray/gxsa' ); import gxsy = require( '@stdlib/blas/ext/base/ndarray/gxsy' ); import gzeroTo = require( '@stdlib/blas/ext/base/ndarray/gzero-to' ); +import sany = require( '@stdlib/blas/ext/base/ndarray/sany' ); import saxpb = require( '@stdlib/blas/ext/base/ndarray/saxpb' ); import saxpby = require( '@stdlib/blas/ext/base/ndarray/saxpby' ); import scircshift = require( '@stdlib/blas/ext/base/ndarray/scircshift' ); @@ -107,6 +119,7 @@ import scusum = require( '@stdlib/blas/ext/base/ndarray/scusum' ); import scusumkbn = require( '@stdlib/blas/ext/base/ndarray/scusumkbn' ); import scusumkbn2 = require( '@stdlib/blas/ext/base/ndarray/scusumkbn2' ); import scusumors = require( '@stdlib/blas/ext/base/ndarray/scusumors' ); +import sfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/sfill-not-equal' ); import sindexOf = require( '@stdlib/blas/ext/base/ndarray/sindex-of' ); import slastIndexOf = require( '@stdlib/blas/ext/base/ndarray/slast-index-of' ); import slinspace = require( '@stdlib/blas/ext/base/ndarray/slinspace' ); @@ -124,6 +137,8 @@ import ssumkbn2 = require( '@stdlib/blas/ext/base/ndarray/ssumkbn2' ); import ssumors = require( '@stdlib/blas/ext/base/ndarray/ssumors' ); import ssumpw = require( '@stdlib/blas/ext/base/ndarray/ssumpw' ); import sunitspace = require( '@stdlib/blas/ext/base/ndarray/sunitspace' ); +import sxdy = require( '@stdlib/blas/ext/base/ndarray/sxdy' ); +import sxmy = require( '@stdlib/blas/ext/base/ndarray/sxmy' ); import sxpy = require( '@stdlib/blas/ext/base/ndarray/sxpy' ); import sxsa = require( '@stdlib/blas/ext/base/ndarray/sxsa' ); import sxsy = require( '@stdlib/blas/ext/base/ndarray/sxsy' ); @@ -135,6 +150,8 @@ import zoneTo = require( '@stdlib/blas/ext/base/ndarray/zone-to' ); import zsum = require( '@stdlib/blas/ext/base/ndarray/zsum' ); import zsumkbn = require( '@stdlib/blas/ext/base/ndarray/zsumkbn' ); import zunitspace = require( '@stdlib/blas/ext/base/ndarray/zunitspace' ); +import zxdy = require( '@stdlib/blas/ext/base/ndarray/zxdy' ); +import zxmy = require( '@stdlib/blas/ext/base/ndarray/zxmy' ); import zxpy = require( '@stdlib/blas/ext/base/ndarray/zxpy' ); import zxsa = require( '@stdlib/blas/ext/base/ndarray/zxsa' ); import zxsy = require( '@stdlib/blas/ext/base/ndarray/zxsy' ); @@ -343,6 +360,30 @@ interface Namespace { */ cunitspace: typeof cunitspace; + /** + * Multiplies elements of a one-dimensional single-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assigns the results to the second ndarray. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a one-dimensional output ndarray. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Complex64Vector = require( '@stdlib/ndarray/vector/complex64' ); + * + * var x = new Complex64Vector( [ 1.0, 2.0, 3.0, -1.0, 0.0, 1.0 ] ); + * var y = new Complex64Vector( [ 2.0, 1.0, -1.0, 3.0, 4.0, 0.0 ] ); + * + * var out = ns.cxmy( [ x, y ] ); + * // returns [ [ 0.0, 5.0 ], [ 0.0, 10.0 ], [ 0.0, 4.0 ] ] + */ + cxmy: typeof cxmy; + /** * Adds elements of a one-dimensional single-precision complex floating-point ndarray to the corresponding elements of a second one-dimensional single-precision complex floating-point ndarray and assigns the results to the second ndarray. * @@ -442,6 +483,30 @@ interface Namespace { */ czeroTo: typeof czeroTo; + /** + * Tests whether at least one element in a one-dimensional double-precision floating-point ndarray is truthy. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * + * - The function explicitly treats `NaN` values as falsy. + * + * @param arrays - array-like object containing ndarrays + * @returns boolean indicating whether at least one element is truthy + * + * @example + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * + * var x = new Float64Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); + * + * var v = ns.dany( [ x ] ); + * // returns true + */ + dany: typeof dany; + /** * Multiplies each element in a one-dimensional double-precision floating-point ndarray by a scalar constant and adds a scalar constant to each result. * @@ -738,6 +803,76 @@ interface Namespace { */ ddiff: typeof ddiff; + /** + * Replaces elements in a one-dimensional double-precision floating-point ndarray equal to a provided search element with a specified scalar constant. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a zero-dimensional ndarray containing the search element. + * - a zero-dimensional ndarray containing the scalar constant. + * + * - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct and `-0` and `+0` are considered the same. + * + * @param arrays - array-like object containing ndarrays + * @returns input ndarray + * + * @example + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * var searchElement = scalar2ndarray( 0.0, { + * 'dtype': 'float64' + * }); + * + * var alpha = scalar2ndarray( 5.0, { + * 'dtype': 'float64' + * }); + * + * var out = ns.dfillEqual( [ x, searchElement, alpha ] ); + * // returns [ 5.0, -2.0, 3.0, 5.0, 4.0, -6.0 ] + */ + dfillEqual: typeof dfillEqual; + + /** + * Replaces elements in a one-dimensional double-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a zero-dimensional ndarray containing the search element. + * - a zero-dimensional ndarray containing the scalar constant. + * + * - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. + * + * @param arrays - array-like object containing ndarrays + * @returns input ndarray + * + * @example + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var x = new Float64Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * var searchElement = scalar2ndarray( 0.0, { + * 'dtype': 'float64' + * }); + * + * var alpha = scalar2ndarray( 5.0, { + * 'dtype': 'float64' + * }); + * + * var out = ns.dfillNotEqual( [ x, searchElement, alpha ] ); + * // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + dfillNotEqual: typeof dfillNotEqual; + /** * Returns the first index of a search element in a one-dimensional double-precision floating-point ndarray. * @@ -1251,6 +1386,54 @@ interface Namespace { */ dunitspace: typeof dunitspace; + /** + * Divides elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assigns the results to the second ndarray. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a one-dimensional output ndarray. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * + * var x = new Float64Vector( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); + * var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * var out = ns.dxdy( [ x, y ] ); + * // returns [ 3.0, 4.0, 5.0, 6.0, 7.0 ] + */ + dxdy: typeof dxdy; + + /** + * Multiplies elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assigns the results to the second ndarray. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a one-dimensional output ndarray. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + * + * var x = new Float64Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + * var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * var out = ns.dxmy( [ x, y ] ); + * // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] + */ + dxmy: typeof dxmy; + /** * Adds elements of a one-dimensional double-precision floating-point ndarray to the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assigns the results to the second ndarray. * @@ -1350,6 +1533,30 @@ interface Namespace { */ dzeroTo: typeof dzeroTo; + /** + * Tests whether at least one element in a one-dimensional ndarray is truthy. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * + * - The function explicitly treats `NaN` values as falsy. + * + * @param arrays - array-like object containing ndarrays + * @returns boolean indicating whether at least one element is truthy + * + * @example + * var vector = require( '@stdlib/ndarray/vector/ctor' ); + * + * var x = vector( [ 0.0, 0.0, 1.0, 1.0 ], 'generic' ); + * + * var v = ns.gany( [ x ] ); + * // returns true + */ + gany: typeof gany; + /** * Multiplies each element in a one-dimensional ndarray by a scalar constant and adds a scalar constant to each result. * @@ -1611,6 +1818,41 @@ interface Namespace { */ gcusumpw: typeof gcusumpw; + /** + * Replaces elements in a one-dimensional ndarray not equal to a provided search element with a specified scalar constant. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a zero-dimensional ndarray containing the search element. + * - a zero-dimensional ndarray containing the scalar constant. + * + * - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. + * + * @param arrays - array-like object containing ndarrays + * @returns input ndarray + * + * @example + * var vector = require( '@stdlib/ndarray/vector/ctor' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var x = vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ], 'generic' ); + * + * var searchElement = scalar2ndarray( 0.0, { + * 'dtype': 'generic' + * }); + * + * var alpha = scalar2ndarray( 5.0, { + * 'dtype': 'generic' + * }); + * + * var out = ns.gfillNotEqual( [ x, searchElement, alpha ] ); + * // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + gfillNotEqual: typeof gfillNotEqual; + /** * Returns the index of the first element in a one-dimensional ndarray which passes a test implemented by a predicate function. * @@ -1726,6 +1968,34 @@ interface Namespace { */ gindexOfFalsy: typeof gindexOfFalsy; + /** + * Returns the first index of an element in a one-dimensional ndarray which is not equal to a specified search element. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a zero-dimensional ndarray containing the search element. + * + * @param arrays - array-like object containing ndarrays + * @returns index + * + * @example + * var vector = require( '@stdlib/ndarray/vector/ctor' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var x = vector( [ 1.0, 1.0, 3.0 ], 'generic' ); + * + * var searchElement = scalar2ndarray( 1.0, { + * 'dtype': 'generic' + * }); + * + * var v = ns.gindexOfNotEqual( [ x, searchElement ] ); + * // returns 2 + */ + gindexOfNotEqual: typeof gindexOfNotEqual; + /** * Returns the index of the first truthy element in a one-dimensional ndarray. * @@ -2209,6 +2479,54 @@ interface Namespace { */ gunitspace: typeof gunitspace; + /** + * Divides elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assigns the results to the second ndarray. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a one-dimensional output ndarray. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var vector = require( '@stdlib/ndarray/vector/ctor' ); + * + * var x = vector( [ 4.0, 6.0, 12.0, 20.0, 30.0 ], 'generic' ); + * var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); + * + * var out = ns.gxdy( [ x, y ] ); + * // returns [ 2.0, 2.0, 3.0, 4.0, 5.0 ] + */ + gxdy: typeof gxdy; + + /** + * Multiplies elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assigns the results to the second ndarray. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a one-dimensional output ndarray. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var vector = require( '@stdlib/ndarray/vector/ctor' ); + * + * var x = vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ], 'generic' ); + * var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); + * + * var out = ns.gxmy( [ x, y ] ); + * // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] + */ + gxmy: typeof gxmy; + /** * Adds elements of a one-dimensional ndarray to the corresponding elements of a second one-dimensional ndarray and assigns the results to the second ndarray. * @@ -2308,6 +2626,30 @@ interface Namespace { */ gzeroTo: typeof gzeroTo; + /** + * Tests whether at least one element in a one-dimensional single-precision floating-point ndarray is truthy. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * + * - The function explicitly treats `NaN` values as falsy. + * + * @param arrays - array-like object containing ndarrays + * @returns boolean indicating whether at least one element is truthy + * + * @example + * var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + * + * var x = new Float32Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); + * + * var v = ns.sany( [ x ] ); + * // returns true + */ + sany: typeof sany; + /** * Multiplies each element in a one-dimensional single-precision floating-point ndarray by a scalar constant and adds a scalar constant to each result. * @@ -2564,6 +2906,41 @@ interface Namespace { */ scusumors: typeof scusumors; + /** + * Replaces elements in a one-dimensional single-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a zero-dimensional ndarray containing the search element. + * - a zero-dimensional ndarray containing the scalar constant. + * + * - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. + * + * @param arrays - array-like object containing ndarrays + * @returns input ndarray + * + * @example + * var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + * var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + * + * var x = new Float32Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * var searchElement = scalar2ndarray( 0.0, { + * 'dtype': 'float32' + * }); + * + * var alpha = scalar2ndarray( 5.0, { + * 'dtype': 'float32' + * }); + * + * var out = ns.sfillNotEqual( [ x, searchElement, alpha ] ); + * // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + sfillNotEqual: typeof sfillNotEqual; + /** * Returns the first index of a search element in a one-dimensional single-precision floating-point ndarray. * @@ -3003,6 +3380,54 @@ interface Namespace { */ sunitspace: typeof sunitspace; + /** + * Divides elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assigns the results to the second ndarray. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a one-dimensional output ndarray. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + * + * var x = new Float32Vector( [ 10.0, 12.0, 6.0, -4.0, 8.0 ] ); + * var y = new Float32Vector( [ 2.0, 3.0, 2.0, -2.0, 4.0 ] ); + * + * var out = ns.sxdy( [ x, y ] ); + * // returns [ 5.0, 4.0, 3.0, 2.0, 2.0 ] + */ + sxdy: typeof sxdy; + + /** + * Multiplies elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assigns the results to the second ndarray. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a one-dimensional output ndarray. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + * + * var x = new Float32Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + * var y = new Float32Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * var out = ns.sxmy( [ x, y ] ); + * // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] + */ + sxmy: typeof sxmy; + /** * Adds elements of a one-dimensional single-precision floating-point ndarray to the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assigns the results to the second ndarray. * @@ -3301,6 +3726,54 @@ interface Namespace { */ zunitspace: typeof zunitspace; + /** + * Divides elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assigns the results to the second ndarray. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a one-dimensional output ndarray. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); + * + * var x = new Complex128Vector( [ -1.0, 3.0, -2.0, 14.0, -4.0, 44.0 ] ); + * var y = new Complex128Vector( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + * + * var out = ns.zxdy( [ x, y ] ); + * // returns [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] + */ + zxdy: typeof zxdy; + + /** + * Multiplies elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assigns the results to the second ndarray. + * + * ## Notes + * + * - The function expects the following ndarrays: + * + * - a one-dimensional input ndarray. + * - a one-dimensional output ndarray. + * + * @param arrays - array-like object containing ndarrays + * @returns output ndarray + * + * @example + * var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); + * + * var x = new Complex128Vector( [ 1.0, 1.0, 2.0, -1.0, 3.0, 0.0 ] ); + * var y = new Complex128Vector( [ 2.0, 1.0, 1.0, 2.0, 2.0, -2.0 ] ); + * + * var out = ns.zxmy( [ x, y ] ); + * // returns [ [ 1.0, 3.0 ], [ 4.0, 3.0 ], [ 6.0, -6.0 ] ] + */ + zxmy: typeof zxmy; + /** * Adds elements of a one-dimensional double-precision complex floating-point ndarray to the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assigns the results to the second ndarray. * diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/README.md new file mode 100644 index 000000000000..49ffe28222fd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/README.md @@ -0,0 +1,132 @@ + + +# dxdy + +> Divide elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assign the results to the second ndarray. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \oslash \mathbf{y} +``` + + + + + +
+ + + +
+ +## Usage + +```javascript +var dxdy = require( '@stdlib/blas/ext/base/ndarray/dxdy' ); +``` + +#### dxdy( arrays ) + +Divides elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assigns the results to the second ndarray. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + +var x = new Float64Vector( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +dxdy( [ x, y ] ); +// y => [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + +
+ + + +
+ +## Notes + +- The output ndarray is modified **in-place** (i.e., the output ndarray is **mutated**). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dxdy = require( '@stdlib/blas/ext/base/ndarray/dxdy' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], 1, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 1, 100, opts ); +console.log( ndarray2array( y ) ); + +dxdy( [ x, y ] ); +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/benchmark/benchmark.js new file mode 100644 index 000000000000..40413474122c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/benchmark/benchmark.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dxdy = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( [ len ], -100.0, 100.0, options ); + var y = uniform( [ len ], 1.0, 100.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dxdy( [ x, y ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/img/equation_xdy.svg b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/img/equation_xdy.svg new file mode 100644 index 000000000000..1b0e60ad95cf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/img/equation_xdy.svg @@ -0,0 +1,16 @@ + +bold y equals bold x circled-division-slash bold y + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/repl.txt new file mode 100644 index 000000000000..90cb76ad819f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/repl.txt @@ -0,0 +1,35 @@ + +{{alias}}( arrays ) + Divides elements of a one-dimensional double-precision floating-point + ndarray by the corresponding elements of a second one-dimensional double- + precision floating-point ndarray and assigns the results to the second + ndarray. + + The output ndarray is modified *in-place* (i.e., the output ndarray is + *mutated*). + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 6.0, 12.0, 20.0, 30.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( xbuf ); + > var ybuf = [ 2.0, 3.0, 4.0, 5.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float64}}( ybuf ); + > {{alias}}( [ x, y ] ) + [ 3.0, 4.0, 5.0, 6.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/types/index.d.ts new file mode 100644 index 000000000000..4177bbeda47c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray } from '@stdlib/types/ndarray'; + +/** +* Divides elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* +* var x = new Float64Vector( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* var out = dxdy( [ x, y ] ); +* // returns [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +*/ +declare function dxdy( arrays: [ float64ndarray, float64ndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/types/test.ts new file mode 100644 index 000000000000..3007f4485335 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dxdy = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float64' + }); + + dxdy( [ x, y ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dxdy( '10' ); // $ExpectError + dxdy( 5 ); // $ExpectError + dxdy( true ); // $ExpectError + dxdy( false ); // $ExpectError + dxdy( null ); // $ExpectError + dxdy( undefined ); // $ExpectError + dxdy( [] ); // $ExpectError + dxdy( {} ); // $ExpectError + dxdy( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float64' + }); + + dxdy(); // $ExpectError + dxdy( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/examples/index.js new file mode 100644 index 000000000000..9323ff136a47 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/examples/index.js @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dxdy = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], 1, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 1, 100, opts ); +console.log( ndarray2array( y ) ); + +dxdy( [ x, y ] ); +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/lib/index.js new file mode 100644 index 000000000000..0292b7e5d543 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Divide elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assign the results to the second ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/dxdy +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var dxdy = require( '@stdlib/blas/ext/base/ndarray/dxdy' ); +* +* var x = new Float64Vector( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* var out = dxdy( [ x, y ] ); +* // returns [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/lib/main.js new file mode 100644 index 000000000000..643e65dcbf7f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/dxdy' ).ndarray; + + +// MAIN // + +/** +* Divides elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} output ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* +* var x = new Float64Vector( [ 6.0, 12.0, 20.0, 30.0, 42.0 ] ); +* var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* var out = dxdy( [ x, y ] ); +* // returns [ 3.0, 4.0, 5.0, 6.0, 7.0 ] +*/ +function dxdy( arrays ) { + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len + return y; +} + + +// EXPORTS // + +module.exports = dxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/package.json new file mode 100644 index 000000000000..23f3e58ec14c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/dxdy", + "version": "0.0.0", + "description": "Divide elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assign the results to the second ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "dxdy", + "xdy", + "divide", + "division", + "quotient", + "vector", + "strided", + "array", + "ndarray", + "float64", + "double", + "double-precision" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/test/test.js new file mode 100644 index 000000000000..1189096b5463 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxdy/test/test.js @@ -0,0 +1,234 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var dxdy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float64Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( dxdy.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides `x` by `y` and assigns the results to `y`', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0 ] ); + ybuf = new Float64Array( [ 1.0, 2.0, -3.0, 4.0, -1.0 ] ); + x = vector( xbuf, 5, 1, 0 ); + y = vector( ybuf, 5, 1, 0 ); + expected = new Float64Array([ + -2.0, // -2.0 / 1.0 + 0.5, // 1.0 / 2.0 + -1.0, // 3.0 / (-3.0) + -1.25, // -5.0 / 4.0 + -4.0 // 4.0 / (-1.0) + ]); + + actual = dxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-unit strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array([ + -2.0, // 0 + 1.0, + 3.0, // 1 + -5.0, + 4.0, // 2 + 0.0, + 6.0, // 3 + -3.0 + ]); + ybuf = new Float64Array([ + 1.0, // 0 + 2.0, + -3.0, // 1 + 4.0, + -1.0, // 2 + 0.0, + 2.0, // 3 + 2.0 + ]); + x = vector( xbuf, 4, 2, 0 ); + y = vector( ybuf, 4, 2, 0 ); + expected = new Float64Array([ + -2.0, // -2.0 / 1.0 + 2.0, + -1.0, // 3.0 / (-3.0) + 4.0, + -4.0, // 4.0 / (-1.0) + 0.0, + 3.0, // 6.0 / 2.0 + 2.0 + ]); + + actual = dxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having negative strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array([ + -2.0, // 4 + 1.0, // 3 + 3.0, // 2 + -5.0, // 1 + 4.0 // 0 + ]); + ybuf = new Float64Array([ + 1.0, // 4 + 2.0, // 3 + -3.0, // 2 + 4.0, // 1 + -1.0 // 0 + ]); + x = vector( xbuf, 5, -1, 4 ); + y = vector( ybuf, 5, -1, 4 ); + expected = new Float64Array([ + -2.0, // -2.0 / 1.0 + 0.5, // 1.0 / 2.0 + -1.0, // 3.0 / (-3.0) + -1.25, // -5.0 / 4.0 + -4.0 // 4.0 / (-1.0) + ]); + + actual = dxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-zero offsets', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array([ + 1.0, + -2.0, + 3.0, // 0 + -5.0, // 1 + 4.0, // 2 + 0.0 + ]); + ybuf = new Float64Array([ + 1.0, + -2.0, + 1.0, // 0 + 4.0, // 1 + -1.0, // 2 + 0.0 + ]); + x = vector( xbuf, 3, 1, 2 ); + y = vector( ybuf, 3, 1, 2 ); + expected = new Float64Array([ + 1.0, + -2.0, + 3.0, // 3.0 / 1.0 + -1.25, // -5.0 / 4.0 + -4.0, // 4.0 / (-1.0) + 0.0 + ]); + + actual = dxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the output ndarray unchanged when the input ndarrays are empty', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array( [] ); + ybuf = new Float64Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + expected = new Float64Array( [] ); + + actual = dxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/README.md new file mode 100644 index 000000000000..376802e09891 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/README.md @@ -0,0 +1,127 @@ + + +# dxmy + +> Multiply elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assign the results to the second ndarray. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \odot \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var dxmy = require( '@stdlib/blas/ext/base/ndarray/dxmy' ); +``` + +#### dxmy( arrays ) + +Multiplies elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assigns the results to the second ndarray. + +```javascript +var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); + +var x = new Float64Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +dxmy( [ x, y ] ); +// y => [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + +
+ + + +
+ +## Notes + +- The output ndarray is modified **in-place** (i.e., the output ndarray is **mutated**). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dxmy = require( '@stdlib/blas/ext/base/ndarray/dxmy' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( y ) ); + +dxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/benchmark/benchmark.js new file mode 100644 index 000000000000..a8d2f826b5f6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/benchmark/benchmark.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var dxmy = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( [ len ], -100.0, 100.0, options ); + var y = uniform( [ len ], -100.0, 100.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = dxmy( [ x, y ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/docs/repl.txt new file mode 100644 index 000000000000..06dce2d4325f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/docs/repl.txt @@ -0,0 +1,35 @@ + +{{alias}}( arrays ) + Multiplies elements of a one-dimensional double-precision floating-point + ndarray by the corresponding elements of a second one-dimensional double- + precision floating-point ndarray and assigns the results to the second + ndarray. + + The output ndarray is modified *in-place* (i.e., the output ndarray is + *mutated*). + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0, 4.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float64}}( xbuf ); + > var ybuf = [ 2.0, 3.0, 4.0, 5.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float64}}( ybuf ); + > {{alias}}( [ x, y ] ) + [ 2.0, 6.0, 12.0, 20.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/docs/types/index.d.ts new file mode 100644 index 000000000000..dab6c2fbf2d1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float64ndarray } from '@stdlib/types/ndarray'; + +/** +* Multiplies elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* var out = dxmy( [ x, y ] ); +* // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +*/ +declare function dxmy( arrays: [ float64ndarray, float64ndarray ] ): float64ndarray; + + +// EXPORTS // + +export = dxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/docs/types/test.ts new file mode 100644 index 000000000000..cabafe35dee2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import dxmy = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float64' + }); + + dxmy( [ x, y ] ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + dxmy( '10' ); // $ExpectError + dxmy( 5 ); // $ExpectError + dxmy( true ); // $ExpectError + dxmy( false ); // $ExpectError + dxmy( null ); // $ExpectError + dxmy( undefined ); // $ExpectError + dxmy( [] ); // $ExpectError + dxmy( {} ); // $ExpectError + dxmy( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float64' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float64' + }); + + dxmy(); // $ExpectError + dxmy( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/examples/index.js new file mode 100644 index 000000000000..467e2f8e168e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/examples/index.js @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var dxmy = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( y ) ); + +dxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/lib/index.js new file mode 100644 index 000000000000..2ef1ac8d8775 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Multiply elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assign the results to the second ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/dxmy +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* var dxmy = require( '@stdlib/blas/ext/base/ndarray/dxmy' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* var out = dxmy( [ x, y ] ); +* // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/lib/main.js new file mode 100644 index 000000000000..e79dce150e4c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/dxmy' ).ndarray; + + +// MAIN // + +/** +* Multiplies elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} output ndarray +* +* @example +* var Float64Vector = require( '@stdlib/ndarray/vector/float64' ); +* +* var x = new Float64Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var y = new Float64Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* var out = dxmy( [ x, y ] ); +* // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +*/ +function dxmy( arrays ) { + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len + return y; +} + + +// EXPORTS // + +module.exports = dxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/package.json new file mode 100644 index 000000000000..23db04d61100 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/dxmy", + "version": "0.0.0", + "description": "Multiply elements of a one-dimensional double-precision floating-point ndarray by the corresponding elements of a second one-dimensional double-precision floating-point ndarray and assign the results to the second ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "dxmy", + "xmy", + "multiply", + "multiplication", + "product", + "vector", + "strided", + "array", + "ndarray", + "float64", + "double", + "double-precision" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/test/test.js new file mode 100644 index 000000000000..9808017488b2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/dxmy/test/test.js @@ -0,0 +1,234 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var dxmy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float64Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float64', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof dxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( dxmy.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies `x` by `y` and assigns the results to `y`', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array( [ -2.0, 1.0, 3.0, -5.0, 4.0 ] ); + ybuf = new Float64Array( [ 1.0, 2.0, -3.0, 4.0, -1.0 ] ); + x = vector( xbuf, 5, 1, 0 ); + y = vector( ybuf, 5, 1, 0 ); + expected = new Float64Array([ + -2.0, // -2.0 * 1.0 + 2.0, // 1.0 * 2.0 + -9.0, // 3.0 * (-3.0) + -20.0, // -5.0 * 4.0 + -4.0 // 4.0 * (-1.0) + ]); + + actual = dxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-unit strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array([ + -2.0, // 0 + 1.0, + 3.0, // 1 + -5.0, + 4.0, // 2 + 0.0, + -1.0, // 3 + -3.0 + ]); + ybuf = new Float64Array([ + 1.0, // 0 + 2.0, + -3.0, // 1 + 4.0, + -1.0, // 2 + 0.0, + 3.0, // 3 + 2.0 + ]); + x = vector( xbuf, 4, 2, 0 ); + y = vector( ybuf, 4, 2, 0 ); + expected = new Float64Array([ + -2.0, // -2.0 * 1.0 + 2.0, + -9.0, // 3.0 * (-3.0) + 4.0, + -4.0, // 4.0 * (-1.0) + 0.0, + -3.0, // -1.0 * 3.0 + 2.0 + ]); + + actual = dxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having negative strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array([ + -2.0, // 4 + 1.0, // 3 + 3.0, // 2 + -5.0, // 1 + 4.0 // 0 + ]); + ybuf = new Float64Array([ + 1.0, // 4 + 2.0, // 3 + -3.0, // 2 + 4.0, // 1 + -1.0 // 0 + ]); + x = vector( xbuf, 5, -1, 4 ); + y = vector( ybuf, 5, -1, 4 ); + expected = new Float64Array([ + -2.0, // -2.0 * 1.0 + 2.0, // 1.0 * 2.0 + -9.0, // 3.0 * (-3.0) + -20.0, // -5.0 * 4.0 + -4.0 // 4.0 * (-1.0) + ]); + + actual = dxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-zero offsets', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array([ + 1.0, + -2.0, + 3.0, // 0 + -5.0, // 1 + 4.0, // 2 + 0.0 + ]); + ybuf = new Float64Array([ + 1.0, + -2.0, + 0.0, // 0 + 4.0, // 1 + -1.0, // 2 + 0.0 + ]); + x = vector( xbuf, 3, 1, 2 ); + y = vector( ybuf, 3, 1, 2 ); + expected = new Float64Array([ + 1.0, + -2.0, + 0.0, // 3.0 * 0.0 + -20.0, // -5.0 * 4.0 + -4.0, // 4.0 * (-1.0) + 0.0 + ]); + + actual = dxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the output ndarray unchanged when the input ndarrays are empty', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float64Array( [] ); + ybuf = new Float64Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + expected = new Float64Array( [] ); + + actual = dxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/README.md new file mode 100644 index 000000000000..efac896ae8b6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/README.md @@ -0,0 +1,109 @@ + + +# gany + +> Test whether at least one element in a one-dimensional ndarray is truthy. + +
+ +
+ + + +
+ +## Usage + +```javascript +var gany = require( '@stdlib/blas/ext/base/ndarray/gany' ); +``` + +#### gany( arrays ) + +Tests whether at least one element in a one-dimensional ndarray is truthy. + +```javascript +var vector = require( '@stdlib/ndarray/vector/ctor' ); + +var x = vector( [ 0.0, 0.0, 1.0, 1.0 ], 'generic' ); + +var v = gany( [ x ] ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing a one-dimensional input ndarray. + +
+ + + +
+ +## Notes + +- If provided an empty one-dimensional ndarray, the function returns `false`. +- The function explicitly treats `NaN` values as falsy. + +
+ + + +
+ +## Examples + + + +```javascript +var bernoulli = require( '@stdlib/random/bernoulli' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gany = require( '@stdlib/blas/ext/base/ndarray/gany' ); + +var x = bernoulli( [ 10 ], 0.2, { + 'dtype': 'generic' +}); +console.log( ndarray2array( x ) ); + +var v = gany( [ x ] ); +console.log( v ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/benchmark/benchmark.js new file mode 100644 index 000000000000..5b64c82805c8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/benchmark/benchmark.js @@ -0,0 +1,102 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gany = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = zeros( [ len ], options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gany( [ x ] ); + if ( typeof out !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( typeof out !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/docs/repl.txt new file mode 100644 index 000000000000..3ca50a62fb9d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/docs/repl.txt @@ -0,0 +1,26 @@ + +{{alias}}( arrays ) + Tests whether at least one element in a one-dimensional ndarray is truthy. + + If provided an empty one-dimensional ndarray, the function returns `false`. + + The function explicitly treats `NaN` values as falsy. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing a one-dimensional input ndarray. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one element is truthy. + + Examples + -------- + > var x = {{alias:@stdlib/ndarray/vector/ctor}}( [ 0.0, 0.0, 1.0, 1.0 ], 'generic' ); + > {{alias}}( [ x ] ) + true + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/docs/types/index.d.ts new file mode 100644 index 000000000000..f7fdba5b75bc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray } from '@stdlib/types/ndarray'; + +/** +* Tests whether at least one element in a one-dimensional ndarray is truthy. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* +* - The function explicitly treats `NaN` values as falsy. +* +* @param arrays - array-like object containing ndarrays +* @returns boolean indicating whether at least one element is truthy +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* +* var x = vector( [ 0.0, 0.0, 1.0, 1.0 ], 'generic' ); +* +* var v = gany( [ x ] ); +* // returns true +*/ +declare function gany( arrays: [ typedndarray ] ): boolean; + + +// EXPORTS // + +export = gany; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/docs/types/test.ts new file mode 100644 index 000000000000..316d7155e415 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/docs/types/test.ts @@ -0,0 +1,57 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import gany = require( './index' ); + + +// TESTS // + +// The function returns a boolean... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + + gany( [ x ] ); // $ExpectType boolean +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + gany( '10' ); // $ExpectError + gany( 10 ); // $ExpectError + gany( true ); // $ExpectError + gany( false ); // $ExpectError + gany( null ); // $ExpectError + gany( undefined ); // $ExpectError + gany( [] ); // $ExpectError + gany( {} ); // $ExpectError + gany( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + + gany(); // $ExpectError + gany( [ x ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/examples/index.js new file mode 100644 index 000000000000..3e13b180d746 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/examples/index.js @@ -0,0 +1,31 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var bernoulli = require( '@stdlib/random/bernoulli' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gany = require( './../lib' ); + +var x = bernoulli( [ 10 ], 0.2, { + 'dtype': 'generic' +}); +console.log( ndarray2array( x ) ); + +var v = gany( [ x ] ); +console.log( v ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/lib/index.js new file mode 100644 index 000000000000..e6db1fbd3aff --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/lib/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether at least one element in a one-dimensional ndarray is truthy. +* +* @module @stdlib/blas/ext/base/ndarray/gany +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var gany = require( '@stdlib/blas/ext/base/ndarray/gany' ); +* +* var x = vector( [ 0.0, 0.0, 1.0, 1.0 ], 'generic' ); +* +* var v = gany( [ x ] ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/lib/main.js new file mode 100644 index 000000000000..8a57813a8ab9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/lib/main.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/gany' ).ndarray; + + +// MAIN // + +/** +* Tests whether at least one element in a one-dimensional ndarray is truthy. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* +* - The function explicitly treats `NaN` values as falsy. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {boolean} boolean indicating whether at least one element is truthy +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* +* var x = vector( [ 0.0, 0.0, 1.0, 1.0 ], 'generic' ); +* +* var v = gany( [ x ] ); +* // returns true +*/ +function gany( arrays ) { + var x = arrays[ 0 ]; + return strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gany; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/package.json new file mode 100644 index 000000000000..7935ede3d12d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/package.json @@ -0,0 +1,67 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/gany", + "version": "0.0.0", + "description": "Test whether at least one element in a one-dimensional ndarray is truthy.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "any", + "gany", + "truthy", + "boolean", + "strided", + "ndarray", + "generic" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/test/test.js new file mode 100644 index 000000000000..2612996acc0f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gany/test/test.js @@ -0,0 +1,155 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var gany = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'generic', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gany, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( gany.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function tests whether at least one element in a one-dimensional ndarray is truthy', function test( t ) { + var x; + var v; + + x = [ 0, 0, 1, 1 ]; + v = gany( [ vector( x, 4, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + x = [ 0, 0, 0, 0, 0 ]; + v = gany( [ vector( x, 5, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = [ 1, 0, 0 ]; + v = gany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + x = [ -0, 0, -0 ]; + v = gany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = [ -1, 0, 0 ]; + v = gany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided an empty ndarray, the function returns `false`', function test( t ) { + var x; + var v; + + x = []; + + v = gany( [ vector( x, 0, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-unit strides', function test( t ) { + var x; + var v; + + x = [ + 0, // 0 + 1, + 0, // 1 + 1, + 0, // 2 + 1, + 0, // 3 + 1 + ]; + v = gany( [ vector( x, 4, 2, 0 ) ] ); + + t.strictEqual( v, false, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having negative strides', function test( t ) { + var x; + var v; + + x = [ + 1, // 3 + 0, + 0, // 2 + 0, + 0, // 1 + 0, + 0, // 0 + 0 + ]; + v = gany( [ vector( x, 4, -2, 6 ) ] ); + + t.strictEqual( v, true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-zero offsets', function test( t ) { + var x; + var v; + + x = [ + 1, + 0, // 0 + 1, + 0, // 1 + 1, + 0, // 2 + 1, + 0 // 3 + ]; + v = gany( [ vector( x, 4, 2, 1 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/README.md new file mode 100644 index 000000000000..4e2337bb1b2e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/README.md @@ -0,0 +1,132 @@ + + +# gfillNotEqual + +> Replace elements in a one-dimensional ndarray not equal to a provided search element with a specified scalar constant. + +
+ +
+ + + +
+ +## Usage + +```javascript +var gfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/gfill-not-equal' ); +``` + +#### gfillNotEqual( arrays ) + +Replaces elements in a one-dimensional ndarray not equal to a provided search element with a specified scalar constant. + +```javascript +var vector = require( '@stdlib/ndarray/vector/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ], 'generic' ); + +var searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' +}); + +var alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' +}); + +gfillNotEqual( [ x, searchElement, alpha ] ); +// x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + - a zero-dimensional ndarray containing the scalar constant. + +
+ + + +
+ +## Notes + +- The input ndarray is modified **in-place** (i.e., the input ndarray is **mutated**). +- When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var gfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/gfill-not-equal' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 10 ], 0, 3, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 1, opts ); +console.log( 'Search Element: %d', ndarraylike2scalar( searchElement ) ); + +var alpha = scalar2ndarray( 5, opts ); +console.log( 'Alpha: %d', ndarraylike2scalar( alpha ) ); + +gfillNotEqual( [ x, searchElement, alpha ] ); +console.log( ndarray2array( x ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..4a4fdca081f9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfillNotEqual = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var searchElement; + var alpha; + var x; + + x = uniform( [ len ], -100.0, 100.0, options ); + searchElement = scalar2ndarray( 0.0, options ); + alpha = scalar2ndarray( 5.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfillNotEqual( [ x, searchElement, alpha ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/docs/repl.txt new file mode 100644 index 000000000000..d563c6f0a4f0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/docs/repl.txt @@ -0,0 +1,40 @@ + +{{alias}}( arrays ) + Replaces elements in a one-dimensional ndarray not equal to a provided + search element with a specified scalar constant. + + The input ndarray is modified *in-place* (i.e., the input ndarray is + *mutated*). + + When comparing elements, the function checks for equality using the strict + equality operator `===`. As a consequence, `NaN` values are considered + distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements + are always replaced), and `-0` and `+0` are considered the same. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + - a zero-dimensional ndarray containing the scalar constant. + + Returns + ------- + out: ndarray + Input ndarray. + + Examples + -------- + > var buf = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + > var x = {{alias:@stdlib/ndarray/vector/ctor}}( buf, 'generic' ); + > var opts = { 'dtype': 'generic' }; + > var v = {{alias:@stdlib/ndarray/from-scalar}}( 0.0, opts ); + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 5.0, opts ); + > {{alias}}( [ x, v, alpha ] ) + [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..258a99187659 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/docs/types/index.d.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray } from '@stdlib/types/ndarray'; + +/** +* Replaces elements in a one-dimensional ndarray not equal to a provided search element with a specified scalar constant. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* - a zero-dimensional ndarray containing the scalar constant. +* +* - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. +* +* @param arrays - array-like object containing ndarrays +* @returns input ndarray +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ], 'generic' ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'generic' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'generic' +* }); +* +* var out = gfillNotEqual( [ x, searchElement, alpha ] ); +* // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +declare function gfillNotEqual = typedndarray>( arrays: [ T, typedndarray, typedndarray ] ): T; + + +// EXPORTS // + +export = gfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..61a1cce5cc88 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/docs/types/test.ts @@ -0,0 +1,70 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +import gfillNotEqual = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + const alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + gfillNotEqual( [ x, searchElement, alpha ] ); // $ExpectType genericndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + gfillNotEqual( '10' ); // $ExpectError + gfillNotEqual( 5 ); // $ExpectError + gfillNotEqual( true ); // $ExpectError + gfillNotEqual( false ); // $ExpectError + gfillNotEqual( null ); // $ExpectError + gfillNotEqual( undefined ); // $ExpectError + gfillNotEqual( [] ); // $ExpectError + gfillNotEqual( {} ); // $ExpectError + gfillNotEqual( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + const alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + gfillNotEqual(); // $ExpectError + gfillNotEqual( [ x, searchElement, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/examples/index.js new file mode 100644 index 000000000000..5341cb4b9c75 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var gfillNotEqual = require( './../lib' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 10 ], 0, 3, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 1, opts ); +console.log( 'Search Element: %d', ndarraylike2scalar( searchElement ) ); + +var alpha = scalar2ndarray( 5, opts ); +console.log( 'Alpha: %d', ndarraylike2scalar( alpha ) ); + +gfillNotEqual( [ x, searchElement, alpha ] ); +console.log( ndarray2array( x ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/lib/index.js new file mode 100644 index 000000000000..c5a52876a70d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/lib/index.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace elements in a one-dimensional ndarray not equal to a provided search element with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/ndarray/gfill-not-equal +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var gfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/gfill-not-equal' ); +* +* var x = vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ], 'generic' ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'generic' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'generic' +* }); +* +* var out = gfillNotEqual( [ x, searchElement, alpha ] ); +* // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/lib/main.js new file mode 100644 index 000000000000..58bc94c25612 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/lib/main.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/gfill-not-equal' ).ndarray; +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); + + +// MAIN // + +/** +* Replaces elements in a one-dimensional ndarray not equal to a provided search element with a specified scalar constant. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* - a zero-dimensional ndarray containing the scalar constant. +* +* - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} input ndarray +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ], 'generic' ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'generic' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'generic' +* }); +* +* var out = gfillNotEqual( [ x, searchElement, alpha ] ); +* // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function gfillNotEqual( arrays ) { + var searchElement; + var alpha; + var x; + + x = arrays[ 0 ]; + searchElement = ndarraylike2scalar( arrays[ 1 ] ); + alpha = ndarraylike2scalar( arrays[ 2 ] ); + strided( numelDimension( x, 0 ), searchElement, alpha, getData( x ), getStride( x, 0 ), getOffset( x ) ); // eslint-disable-line max-len + return x; +} + + +// EXPORTS // + +module.exports = gfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/package.json new file mode 100644 index 000000000000..e682b543fa90 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/gfill-not-equal", + "version": "0.0.0", + "description": "Replace elements in a one-dimensional ndarray not equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "fill", + "not equal", + "unequal", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "generic" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/test/test.js new file mode 100644 index 000000000000..3e8af1d0ac30 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfill-not-equal/test/test.js @@ -0,0 +1,299 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameArray = require( '@stdlib/assert/is-same-array' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var gfillNotEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'generic', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function replaces elements not equal to a provided search element', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + x = vector( xbuf, 6, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ]; + t.deepEqual( xbuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-unit stride', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + x = vector( xbuf, 3, 2, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ]; + t.deepEqual( xbuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a negative stride', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + x = vector( xbuf, 3, -2, 4 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ]; + t.deepEqual( xbuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-zero offset', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ]; + x = vector( xbuf, 3, 1, 3 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = [ 0.0, -2.0, 3.0, 0.0, 5.0, 5.0 ]; + t.deepEqual( xbuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns the input ndarray unchanged', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = [ 0.0, 0.0, 0.0, 0.0 ]; + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = [ 0.0, 0.0, 0.0, 0.0 ]; + t.deepEqual( xbuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = [ NaN, 1.0, NaN ]; + x = vector( xbuf, 3, 1, 0 ); + searchElement = scalar2ndarray( NaN, { + 'dtype': 'generic' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = [ 5.0, 5.0, 5.0 ]; + t.deepEqual( xbuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = [ NaN, 0.0, NaN ]; + x = vector( xbuf, 3, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = [ 5.0, 0.0, 5.0 ]; + t.deepEqual( xbuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = [ -0.0, 1.0, 0.0, -0.0 ]; + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + t.strictEqual( isSameArray( xbuf, expected ), true, 'returns expected value' ); + + xbuf = [ -0.0, 1.0, 0.0, -0.0 ]; + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( -0.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = [ -0.0, 5.0, 0.0, -0.0 ]; + t.strictEqual( isSameArray( xbuf, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the input ndarray unchanged when the input ndarray is empty', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = []; + x = vector( xbuf, 0, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'generic' + }); + + actual = gfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = []; + t.deepEqual( xbuf, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/README.md new file mode 100644 index 000000000000..3849f8561ece --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/README.md @@ -0,0 +1,128 @@ + + +# gfirstIndexLessThan + +> Return the index of the first element in a one-dimensional ndarray which is less than a corresponding element in another one-dimensional ndarray. + +
+ +
+ + + +
+ +## Usage + +```javascript +var gfirstIndexLessThan = require( '@stdlib/blas/ext/base/ndarray/gfirst-index-less-than' ); +``` + +#### gfirstIndexLessThan( arrays ) + +Returns the index of the first element in a one-dimensional ndarray which is less than a corresponding element in another one-dimensional ndarray. + +```javascript +var vector = require( '@stdlib/ndarray/vector/ctor' ); + +var x = vector( [ 0.0, 0.0, 0.0, 0.0 ], 'generic' ); +var y = vector( [ 0.0, 0.0, 1.0, 0.0 ], 'generic' ); + +var idx = gfirstIndexLessThan( [ x, y ] ); +// returns 2 +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - first one-dimensional input ndarray. + - second one-dimensional input ndarray. + +If the function is unable to find an element in the first one-dimensional input ndarray which is less than a corresponding element in the second one-dimensional input ndarray, the function returns `-1`. + +```javascript +var vector = require( '@stdlib/ndarray/vector/ctor' ); + +var x = vector( [ 5.0, 6.0, 7.0, 8.0 ], 'generic' ); +var y = vector( [ 1.0, 2.0, 3.0, 4.0 ], 'generic' ); + +var idx = gfirstIndexLessThan( [ x, y ] ); +// returns -1 +``` + +
+ + + +
+ +## Notes + +- When comparing elements, the function checks whether an element in the first one-dimensional input ndarray is less than a corresponding element in the second one-dimensional input ndarray using the less-than operator `<`. As a consequence, comparisons involving `NaN` always evaluate to `false`. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gfirstIndexLessThan = require( '@stdlib/blas/ext/base/ndarray/gfirst-index-less-than' ); + +var opts = { + 'dtype': 'generic' +}; +var x = discreteUniform( [ 10 ], 0, 10, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 0, 10, opts ); +console.log( ndarray2array( y ) ); + +var idx = gfirstIndexLessThan( [ x, y ] ); +console.log( idx ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/benchmark/benchmark.js new file mode 100644 index 000000000000..b9570f0d2cbf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/benchmark/benchmark.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var pow = require( '@stdlib/math/base/special/pow' ); +var vector = require( '@stdlib/ndarray/vector/ctor' ); +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gfirstIndexLessThan = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = vector( ones( len, options.dtype ), options.dtype ); + var y = vector( ones( len, options.dtype ), options.dtype ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gfirstIndexLessThan( [ x, y ] ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/docs/repl.txt new file mode 100644 index 000000000000..2b3d1c70f718 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/docs/repl.txt @@ -0,0 +1,32 @@ + +{{alias}}( arrays ) + Returns the index of the first element in a one-dimensional ndarray which is + less than a corresponding element in another one-dimensional ndarray. + + When comparing elements, the function checks whether an element in the first + one-dimensional input ndarray is less than a corresponding element in the + second one-dimensional input ndarray using the less-than operator `<`. As a + consequence, comparisons involving `NaN` always evaluate to `false`. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - first one-dimensional input ndarray. + - second one-dimensional input ndarray. + + Returns + ------- + out: integer + Index. + + Examples + -------- + > var x = {{alias:@stdlib/ndarray/vector/ctor}}( [ 0.0, 0.0, 0.0, 0.0 ], 'generic' ); + > var y = {{alias:@stdlib/ndarray/vector/ctor}}( [ 0.0, 0.0, 1.0, 0.0 ], 'generic' ); + > {{alias}}( [ x, y ] ) + 2 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/docs/types/index.d.ts new file mode 100644 index 000000000000..56144c2690bf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/docs/types/index.d.ts @@ -0,0 +1,54 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray } from '@stdlib/types/ndarray'; + +/** +* Returns the index of the first element in a one-dimensional ndarray which is less than a corresponding element in another one-dimensional ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - first one-dimensional input ndarray. +* - second one-dimensional input ndarray. +* +* - When comparing elements, the function checks whether an element in the first one-dimensional input ndarray is less than a corresponding element in the second one-dimensional input ndarray using the less-than operator `<`. As a consequence, comparisons involving `NaN` always evaluate to `false`. +* +* @param arrays - array-like object containing ndarrays +* @returns index +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* +* var x = vector( [ 0.0, 0.0, 0.0, 0.0 ], 'generic' ); +* var y = vector( [ 0.0, 0.0, 1.0, 0.0 ], 'generic' ); +* +* var idx = gfirstIndexLessThan( [ x, y ] ); +* // returns 2 +*/ +declare function gfirstIndexLessThan( arrays: [ typedndarray, typedndarray ] ): number; + + +// EXPORTS // + +export = gfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/docs/types/test.ts new file mode 100644 index 000000000000..4c1fc8b25eea --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import gfirstIndexLessThan = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 10 ], { + 'dtype': 'generic' + }); + + gfirstIndexLessThan( [ x, y ] ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + gfirstIndexLessThan( '10' ); // $ExpectError + gfirstIndexLessThan( 10 ); // $ExpectError + gfirstIndexLessThan( true ); // $ExpectError + gfirstIndexLessThan( false ); // $ExpectError + gfirstIndexLessThan( null ); // $ExpectError + gfirstIndexLessThan( undefined ); // $ExpectError + gfirstIndexLessThan( [] ); // $ExpectError + gfirstIndexLessThan( {} ); // $ExpectError + gfirstIndexLessThan( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 10 ], { + 'dtype': 'generic' + }); + + gfirstIndexLessThan(); // $ExpectError + gfirstIndexLessThan( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/examples/index.js new file mode 100644 index 000000000000..35c2479426f2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gfirstIndexLessThan = require( './../lib' ); + +var opts = { + 'dtype': 'generic' +}; +var x = discreteUniform( [ 10 ], 0, 10, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 0, 10, opts ); +console.log( ndarray2array( y ) ); + +var idx = gfirstIndexLessThan( [ x, y ] ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/lib/index.js new file mode 100644 index 000000000000..f8e50426a29c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the index of the first element in a one-dimensional ndarray which is less than a corresponding element in another one-dimensional ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/gfirst-index-less-than +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var gfirstIndexLessThan = require( '@stdlib/blas/ext/base/ndarray/gfirst-index-less-than' ); +* +* var x = vector( [ 0.0, 0.0, 0.0, 0.0 ], 'generic' ); +* var y = vector( [ 0.0, 0.0, 1.0, 0.0 ], 'generic' ); +* +* var idx = gfirstIndexLessThan( [ x, y ] ); +* // returns 2 +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/lib/main.js new file mode 100644 index 000000000000..d76ea8ec3554 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/lib/main.js @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/gfirst-index-less-than' ).ndarray; + + +// MAIN // + +/** +* Returns the index of the first element in a one-dimensional ndarray which is less than a corresponding element in another one-dimensional ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - first one-dimensional input ndarray. +* - second one-dimensional input ndarray. +* +* - When comparing elements, the function checks whether an element in the first one-dimensional input ndarray is less than a corresponding element in the second one-dimensional input ndarray using the less-than operator `<`. As a consequence, comparisons involving `NaN` always evaluate to `false`. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {integer} index +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* +* var x = vector( [ 0.0, 0.0, 0.0, 0.0 ], 'generic' ); +* var y = vector( [ 0.0, 0.0, 1.0, 0.0 ], 'generic' ); +* +* var idx = gfirstIndexLessThan( [ x, y ] ); +* // returns 2 +*/ +function gfirstIndexLessThan( arrays ) { + var x = arrays[ 0 ]; + var y = arrays[ 1 ]; + return strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/package.json new file mode 100644 index 000000000000..2f39b41ca260 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/package.json @@ -0,0 +1,67 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/gfirst-index-less-than", + "version": "0.0.0", + "description": "Return the index of the first element in a one-dimensional ndarray which is less than a corresponding element in another one-dimensional ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "array", + "index", + "search", + "find", + "less", + "compare", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/test/test.js new file mode 100644 index 000000000000..c3e984da4741 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gfirst-index-less-than/test/test.js @@ -0,0 +1,193 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var gfirstIndexLessThan = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'generic', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a one-dimensional ndarray which is less than a corresponding element in another one-dimensional ndarray', function test( t ) { + var actual; + var x; + var y; + + x = vector( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ], 6, 1, 0 ); + y = vector( [ 2.0, 2.0, 2.0, 3.0, 4.0, 5.0 ], 6, 1, 0 ); + + actual = gfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = vector( [ 2.0, 1.0, 3.0, 4.0, 5.0, 6.0 ], 6, 1, 0 ); + y = vector( [ 1.0, 2.0, 2.0, 3.0, 4.0, 5.0 ], 6, 1, 0 ); + + actual = gfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = vector( [ 2.0, 2.0, 2.0, 4.0, 5.0, 6.0 ], 6, 1, 0 ); + y = vector( [ 1.0, 2.0, 3.0, 5.0, 4.0, 5.0 ], 6, 1, 0 ); + + actual = gfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = vector( [ 2.0, 2.0, 3.0, 4.0, 5.0, 6.0 ], 6, 1, 0 ); + y = vector( [ 1.0, 2.0, 2.0, 3.0, 4.0, 5.0 ], 6, 1, 0 ); + + actual = gfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if unable to find an element in the first one-dimensional input ndarray which is less than a corresponding element in the second one-dimensional input ndarray', function test( t ) { + var actual; + var x; + var y; + + x = vector( [ 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ], 6, 1, 0 ); + y = vector( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ], 6, 1, 0 ); + + actual = gfirstIndexLessThan( [ x, y ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-unit strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 2.0, // 0 + 2.0, + 2.0, // 1 + -4.0, + 3.0, // 2 + 3.0, + 5.0, // 3 + 2.0 + ]; + y = [ + 1.0, // 0 + 2.0, + 1.0, // 1 + -4.0, + 4.0, // 2 + 3.0, + 4.0, // 3 + 2.0 + ]; + + actual = gfirstIndexLessThan( [ vector( x, 4, 2, 0 ), vector( y, 4, 2, 0 ) ] ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having negative strides', function test( t ) { + var actual; + var x; + var y; + + x = [ + 1.0, // 3 + 2.0, + 2.0, // 2 + -2.0, + 3.0, // 1 + 4.0, + 5.0, // 0 + 2.0 + ]; + y = [ + 4.0, // 3 + 2.0, + 3.0, // 2 + -2.0, + 4.0, // 1 + 4.0, + 4.0, // 0 + 2.0 + ]; + + actual = gfirstIndexLessThan( [ vector( x, 4, -2, 6 ), vector( y, 4, -2, 6 ) ] ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-zero offsets', function test( t ) { + var actual; + var x; + var y; + + x = [ + 2.0, + 1.0, // 0 + 2.0, + 2.0, // 1 + -2.0, + 3.0, // 2 + 3.0, + 4.0 // 3 + ]; + y = [ + 2.0, + 2.0, // 0 + 2.0, + 3.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 5.0 // 3 + ]; + + actual = gfirstIndexLessThan( [ vector( x, 4, 2, 1 ), vector( y, 4, 2, 1 ) ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-falsy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-falsy/README.md index 5fdffdc55614..657227c61cf3 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-falsy/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-falsy/README.md @@ -51,9 +51,7 @@ var idx = gindexOfFalsy( [ x ] ); The function has the following parameters: -- **arrays**: array-like object containing the following ndarrays: - - - a one-dimensional input ndarray. +- **arrays**: array-like object containing a one-dimensional input ndarray. If the function is unable to find a falsy element, the function returns `-1`. diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/README.md new file mode 100644 index 000000000000..1b097db1311f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/README.md @@ -0,0 +1,139 @@ + + +# gindexOfNotEqual + +> Return the first index of an element in a one-dimensional ndarray which is not equal to a specified search element. + +
+ +
+ + + +
+ +## Usage + +```javascript +var gindexOfNotEqual = require( '@stdlib/blas/ext/base/ndarray/gindex-of-not-equal' ); +``` + +#### gindexOfNotEqual( arrays ) + +Returns the first index of an element in a one-dimensional ndarray which is not equal to a specified search element. + +```javascript +var vector = require( '@stdlib/ndarray/vector/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = vector( [ 1.0, 1.0, 3.0 ], 'generic' ); + +var searchElement = scalar2ndarray( 1.0, { + 'dtype': 'generic' +}); + +var idx = gindexOfNotEqual( [ x, searchElement ] ); +// returns 2 +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + +If the function is unable to find an element which is not equal to a specified search element, the function returns `-1`. + +```javascript +var vector = require( '@stdlib/ndarray/vector/ctor' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = vector( [ 1.0, 1.0, 1.0 ], 'generic' ); + +var searchElement = scalar2ndarray( 1.0, { + 'dtype': 'generic' +}); + +var idx = gindexOfNotEqual( [ x, searchElement ] ); +// returns -1 +``` + +
+ + + +
+ +## Notes + +- When searching for a search element, the function checks for inequality using the strict inequality operator `!==`. As a consequence, `NaN` values are considered distinct from all values (including other `NaN` values), and `-0` and `+0` are considered the same. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var gindexOfNotEqual = require( '@stdlib/blas/ext/base/ndarray/gindex-of-not-equal' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 10 ], 0, 2, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 0, opts ); +console.log( 'Search Element:', ndarraylike2scalar( searchElement ) ); + +var idx = gindexOfNotEqual( [ x, searchElement ] ); +console.log( idx ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..5409d6e5a284 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var pow = require( '@stdlib/math/base/special/pow' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gindexOfNotEqual = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var searchElement; + var x; + + x = zeros( [ len ], options ); + searchElement = scalar2ndarray( 0.0, options ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gindexOfNotEqual( [ x, searchElement ] ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/docs/repl.txt new file mode 100644 index 000000000000..bba8a7c46b76 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/docs/repl.txt @@ -0,0 +1,35 @@ + +{{alias}}( arrays ) + Returns the first index of an element in a one-dimensional ndarray which is + not equal to a specified search element. + + When searching for a search element, the function checks for inequality + using the strict inequality operator `!==`. As a consequence, `NaN` values + are considered distinct from all values (including other `NaN` values), and + `-0` and `+0` are considered the same. + + If unable to find an element which is not equal to a specified search + element, the function returns `-1`. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + + Returns + ------- + out: integer + Index. + + Examples + -------- + > var x = {{alias:@stdlib/ndarray/vector/ctor}}( [ 1.0, 1.0, 3.0 ], 'generic' ); + > var v = {{alias:@stdlib/ndarray/from-scalar}}( 1.0, { 'dtype': 'generic' } ); + > {{alias}}( [ x, v ] ) + 2 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..baa3e589cb15 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/docs/types/index.d.ts @@ -0,0 +1,56 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray } from '@stdlib/types/ndarray'; + +/** +* Returns the first index of an element in a one-dimensional ndarray which is not equal to a specified search element. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* +* @param arrays - array-like object containing ndarrays +* @returns index +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = vector( [ 1.0, 1.0, 3.0 ], 'generic' ); +* +* var searchElement = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var v = gindexOfNotEqual( [ x, searchElement ] ); +* // returns 2 +*/ +declare function gindexOfNotEqual( arrays: [ typedndarray, typedndarray ] ): number; + + +// EXPORTS // + +export = gindexOfNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..0bfe0dadd7ef --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/docs/types/test.ts @@ -0,0 +1,64 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +import gindexOfNotEqual = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + + gindexOfNotEqual( [ x, searchElement ] ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + gindexOfNotEqual( '10' ); // $ExpectError + gindexOfNotEqual( 10 ); // $ExpectError + gindexOfNotEqual( true ); // $ExpectError + gindexOfNotEqual( false ); // $ExpectError + gindexOfNotEqual( null ); // $ExpectError + gindexOfNotEqual( undefined ); // $ExpectError + gindexOfNotEqual( [] ); // $ExpectError + gindexOfNotEqual( {} ); // $ExpectError + gindexOfNotEqual( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + + gindexOfNotEqual(); // $ExpectError + gindexOfNotEqual( [ x, searchElement ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/examples/index.js new file mode 100644 index 000000000000..253390c037c3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/examples/index.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var gindexOfNotEqual = require( './../lib' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 10 ], 0, 2, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 0, opts ); +console.log( 'Search Element:', ndarraylike2scalar( searchElement ) ); + +var idx = gindexOfNotEqual( [ x, searchElement ] ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/lib/index.js new file mode 100644 index 000000000000..cd48bc5152c3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/lib/index.js @@ -0,0 +1,48 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Return the first index of an element in a one-dimensional ndarray which is not equal to a specified search element. +* +* @module @stdlib/blas/ext/base/ndarray/gindex-of-not-equal +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var gindexOfNotEqual = require( '@stdlib/blas/ext/base/ndarray/gindex-of-not-equal' ); +* +* var x = vector( [ 1.0, 1.0, 3.0 ], 'generic' ); +* +* var searchElement = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var v = gindexOfNotEqual( [ x, searchElement ] ); +* // returns 2 +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/lib/main.js new file mode 100644 index 000000000000..6134b4461d72 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/gindex-of-not-equal' ).ndarray; +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); + + +// MAIN // + +/** +* Returns the first index of an element in a one-dimensional ndarray which is not equal to a specified search element. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {integer} index +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = vector( [ 1.0, 1.0, 3.0 ], 'generic' ); +* +* var searchElement = scalar2ndarray( 1.0, { +* 'dtype': 'generic' +* }); +* +* var v = gindexOfNotEqual( [ x, searchElement ] ); +* // returns 2 +*/ +function gindexOfNotEqual( arrays ) { + var x = arrays[ 0 ]; + return strided( numelDimension( x, 0 ), ndarraylike2scalar( arrays[ 1 ] ), getData( x ), getStride( x, 0 ), getOffset( x ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = gindexOfNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/package.json new file mode 100644 index 000000000000..d50fa060053c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/package.json @@ -0,0 +1,67 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/gindex-of-not-equal", + "version": "0.0.0", + "description": "Return the first index of an element in a one-dimensional ndarray which is not equal to a specified search element.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "array", + "index", + "search", + "get", + "not equal", + "unequal", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/test/test.js new file mode 100644 index 000000000000..4a610e224cbc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gindex-of-not-equal/test/test.js @@ -0,0 +1,226 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var gindexOfNotEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'generic', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gindexOfNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the index of the first element in a one-dimensional ndarray which is not equal to a provided search element', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ], 6, 1, 0 ); + + searchElement = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 2, 'returns expected value' ); + + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + searchElement = scalar2ndarray( 3.0, { + 'dtype': 'generic' + }); + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + searchElement = scalar2ndarray( 4.0, { + 'dtype': 'generic' + }); + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if every element in a one-dimensional ndarray is equal to a provided search element', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( [ 2.0, 2.0, 2.0 ], 3, 1, 0 ); + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `NaN` elements to be not equal to a provided search element', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( [ 1.0, NaN, 1.0 ], 3, 1, 0 ); + searchElement = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the index of the first element if a provided search element is `NaN`', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( [ NaN, 1.0 ], 2, 1, 0 ); + searchElement = scalar2ndarray( NaN, { + 'dtype': 'generic' + }); + + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be equal', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( [ -0.0, 0.0 ], 2, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'generic' + }); + + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-unit strides', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( [ 2.0, 9.0, 2.0, 9.0, 3.0, 9.0 ], 3, 2, 0 ); + + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 2, 'returns expected value' ); + + searchElement = scalar2ndarray( 9.0, { + 'dtype': 'generic' + }); + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having negative strides', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( [ 2.0, 1.0, 2.0, 2.0, 3.0, 3.0 ], 6, -1, 5 ); + + searchElement = scalar2ndarray( 3.0, { + 'dtype': 'generic' + }); + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 2, 'returns expected value' ); + + searchElement = scalar2ndarray( 1.0, { + 'dtype': 'generic' + }); + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-zero offsets', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ], 3, 1, 3 ); + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an empty one-dimensional ndarray', function test( t ) { + var searchElement; + var actual; + var x; + + x = vector( [], 0, 1, 0 ); + searchElement = scalar2ndarray( 2.0, { + 'dtype': 'generic' + }); + + actual = gindexOfNotEqual( [ x, searchElement ] ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansum/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansum/package.json index b55c20e6e1ad..651a8686d5e8 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansum/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansum/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/gnansum", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional ndarray, ignoring `NaN` values.", + "description": "Compute the sum of a one-dimensional ndarray, ignoring NaN values.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumkbn/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumkbn/package.json index 3205f819e46b..c059879e9beb 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumkbn/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumkbn/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/gnansumkbn", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional ndarray, ignoring `NaN` values and using an improved Kahan–Babuška algorithm.", + "description": "Compute the sum of a one-dimensional ndarray, ignoring NaN values and using an improved Kahan–Babuška algorithm.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumkbn2/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumkbn2/package.json index 171e3fd5f59b..6c1fc183ce43 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumkbn2/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumkbn2/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/gnansumkbn2", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional ndarray, ignoring `NaN` values and using a second-order iterative Kahan–Babuška algorithm.", + "description": "Compute the sum of a one-dimensional ndarray, ignoring NaN values and using a second-order iterative Kahan–Babuška algorithm.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumors/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumors/package.json index 5c8e3b05aede..eace71f78e3c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumors/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumors/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/gnansumors", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional ndarray, ignoring `NaN` values and using ordinary recursive summation.", + "description": "Compute the sum of a one-dimensional ndarray, ignoring NaN values and using ordinary recursive summation.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumpw/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumpw/package.json index e93a8404a471..0867bab3bbcd 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumpw/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gnansumpw/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/gnansumpw", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional ndarray, ignoring `NaN` values and using pairwise summation.", + "description": "Compute the sum of a one-dimensional ndarray, ignoring NaN values and using pairwise summation.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/README.md new file mode 100644 index 000000000000..92588f4e75bd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/README.md @@ -0,0 +1,132 @@ + + +# gxdy + +> Divide elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assign the results to the second ndarray. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \oslash \mathbf{y} +``` + + + + + +
+ + + +
+ +## Usage + +```javascript +var gxdy = require( '@stdlib/blas/ext/base/ndarray/gxdy' ); +``` + +#### gxdy( arrays ) + +Divides elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assigns the results to the second ndarray. + +```javascript +var vector = require( '@stdlib/ndarray/vector/ctor' ); + +var x = vector( [ 4.0, 6.0, 12.0, 20.0, 30.0 ], 'generic' ); +var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); + +gxdy( [ x, y ] ); +// y => [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + +
+ + + +
+ +## Notes + +- The output ndarray is modified **in-place** (i.e., the output ndarray is **mutated**). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gxdy = require( '@stdlib/blas/ext/base/ndarray/gxdy' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 1, 100, opts ); +console.log( ndarray2array( y ) ); + +gxdy( [ x, y ] ); +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/benchmark/benchmark.js new file mode 100644 index 000000000000..dba5b4cb3cb7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/benchmark/benchmark.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gxdy = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( [ len ], -100.0, 100.0, options ); + var y = uniform( [ len ], 1.0, 100.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gxdy( [ x, y ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/img/equation_xdy.svg b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/img/equation_xdy.svg new file mode 100644 index 000000000000..1b0e60ad95cf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/img/equation_xdy.svg @@ -0,0 +1,16 @@ + +bold y equals bold x circled-division-slash bold y + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/repl.txt new file mode 100644 index 000000000000..579425a834c9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( arrays ) + Divides elements of a one-dimensional ndarray by the corresponding elements + of a second one-dimensional ndarray and assigns the results to the second + ndarray. + + The output ndarray is modified *in-place* (i.e., the output ndarray is + *mutated*). + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 4.0, 6.0, 12.0, 20.0 ]; + > var x = {{alias:@stdlib/ndarray/vector/ctor}}( xbuf, 'generic' ); + > var ybuf = [ 2.0, 3.0, 4.0, 5.0 ]; + > var y = {{alias:@stdlib/ndarray/vector/ctor}}( ybuf, 'generic' ); + > {{alias}}( [ x, y ] ) + [ 2.0, 2.0, 3.0, 4.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/types/index.d.ts new file mode 100644 index 000000000000..c14ef1b550f7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray } from '@stdlib/types/ndarray'; + +/** +* Divides elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* +* var x = vector( [ 4.0, 6.0, 12.0, 20.0, 30.0 ], 'generic' ); +* var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); +* +* var out = gxdy( [ x, y ] ); +* // returns [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +declare function gxdy = typedndarray>( arrays: [ typedndarray, T ] ): T; + + +// EXPORTS // + +export = gxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/types/test.ts new file mode 100644 index 000000000000..4b2567bf5a45 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import gxdy = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 10 ], { + 'dtype': 'generic' + }); + + gxdy( [ x, y ] ); // $ExpectType genericndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + gxdy( '10' ); // $ExpectError + gxdy( 5 ); // $ExpectError + gxdy( true ); // $ExpectError + gxdy( false ); // $ExpectError + gxdy( null ); // $ExpectError + gxdy( undefined ); // $ExpectError + gxdy( [] ); // $ExpectError + gxdy( {} ); // $ExpectError + gxdy( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 10 ], { + 'dtype': 'generic' + }); + + gxdy(); // $ExpectError + gxdy( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/examples/index.js new file mode 100644 index 000000000000..3e9b8835db70 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/examples/index.js @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gxdy = require( './../lib' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 1, 100, opts ); +console.log( ndarray2array( y ) ); + +gxdy( [ x, y ] ); +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/lib/index.js new file mode 100644 index 000000000000..cc3a5e8208d3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Divide elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assign the results to the second ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/gxdy +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var gxdy = require( '@stdlib/blas/ext/base/ndarray/gxdy' ); +* +* var x = vector( [ 4.0, 6.0, 12.0, 20.0, 30.0 ], 'generic' ); +* var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); +* +* var out = gxdy( [ x, y ] ); +* // returns [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/lib/main.js new file mode 100644 index 000000000000..e91d9101e056 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/gxdy' ).ndarray; + + +// MAIN // + +/** +* Divides elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} output ndarray +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* +* var x = vector( [ 4.0, 6.0, 12.0, 20.0, 30.0 ], 'generic' ); +* var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); +* +* var out = gxdy( [ x, y ] ); +* // returns [ 2.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +function gxdy( arrays ) { + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len + return y; +} + + +// EXPORTS // + +module.exports = gxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/package.json new file mode 100644 index 000000000000..b66d8efe4789 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/gxdy", + "version": "0.0.0", + "description": "Divide elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assign the results to the second ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "gxdy", + "xdy", + "divide", + "division", + "vector", + "strided", + "array", + "ndarray", + "generic" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/test/test.js new file mode 100644 index 000000000000..4b1d0ecf19b3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxdy/test/test.js @@ -0,0 +1,233 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var gxdy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'generic', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( gxdy.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides `x` by `y` and assigns the results to `y`', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = [ -2.0, 1.0, 3.0, -5.0, 4.0 ]; + ybuf = [ 1.0, 2.0, -3.0, 5.0, -1.0 ]; + x = vector( xbuf, 5, 1, 0 ); + y = vector( ybuf, 5, 1, 0 ); + expected = [ + -2.0, // -2.0 / 1.0 + 0.5, // 1.0 / 2.0 + -1.0, // 3.0 / (-3.0) + -1.0, // -5.0 / 5.0 + -4.0 // 4.0 / (-1.0) + ]; + + actual = gxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-unit strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = [ + -2.0, // 0 + 1.0, + 3.0, // 1 + -5.0, + 4.0, // 2 + 0.0, + -1.0, // 3 + -3.0 + ]; + ybuf = [ + 1.0, // 0 + 2.0, + -3.0, // 1 + 4.0, + -1.0, // 2 + 0.0, + 2.0, // 3 + 2.0 + ]; + x = vector( xbuf, 4, 2, 0 ); + y = vector( ybuf, 4, 2, 0 ); + expected = [ + -2.0, // -2.0 / 1.0 + 2.0, + -1.0, // 3.0 / (-3.0) + 4.0, + -4.0, // 4.0 / (-1.0) + 0.0, + -0.5, // -1.0 / 2.0 + 2.0 + ]; + + actual = gxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having negative strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = [ + -2.0, // 4 + 1.0, // 3 + 3.0, // 2 + -5.0, // 1 + 4.0 // 0 + ]; + ybuf = [ + 1.0, // 4 + 2.0, // 3 + -3.0, // 2 + 5.0, // 1 + -1.0 // 0 + ]; + x = vector( xbuf, 5, -1, 4 ); + y = vector( ybuf, 5, -1, 4 ); + expected = [ + -2.0, // -2.0 / 1.0 + 0.5, // 1.0 / 2.0 + -1.0, // 3.0 / (-3.0) + -1.0, // -5.0 / 5.0 + -4.0 // 4.0 / (-1.0) + ]; + + actual = gxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-zero offsets', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = [ + 1.0, + -2.0, + 3.0, // 0 + -5.0, // 1 + 4.0, // 2 + 0.0 + ]; + ybuf = [ + 1.0, + -2.0, + 1.0, // 0 + 5.0, // 1 + -1.0, // 2 + 0.0 + ]; + x = vector( xbuf, 3, 1, 2 ); + y = vector( ybuf, 3, 1, 2 ); + expected = [ + 1.0, + -2.0, + 3.0, // 3.0 / 1.0 + -1.0, // -5.0 / 5.0 + -4.0, // 4.0 / (-1.0) + 0.0 + ]; + + actual = gxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the output ndarray unchanged when the input ndarrays are empty', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = []; + ybuf = []; + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + expected = []; + + actual = gxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/README.md new file mode 100644 index 000000000000..494b50f4ad8f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/README.md @@ -0,0 +1,127 @@ + + +# gxmy + +> Multiply elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assign the results to the second ndarray. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \odot \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var gxmy = require( '@stdlib/blas/ext/base/ndarray/gxmy' ); +``` + +#### gxmy( arrays ) + +Multiplies elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assigns the results to the second ndarray. + +```javascript +var vector = require( '@stdlib/ndarray/vector/ctor' ); + +var x = vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ], 'generic' ); +var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); + +gxmy( [ x, y ] ); +// y => [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + +
+ + + +
+ +## Notes + +- The output ndarray is modified **in-place** (i.e., the output ndarray is **mutated**). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gxmy = require( '@stdlib/blas/ext/base/ndarray/gxmy' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( y ) ); + +gxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/benchmark/benchmark.js new file mode 100644 index 000000000000..1678646438c6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/benchmark/benchmark.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var gxmy = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'generic' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( [ len ], -100.0, 100.0, options ); + var y = uniform( [ len ], -100.0, 100.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = gxmy( [ x, y ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/docs/repl.txt new file mode 100644 index 000000000000..01778591ce58 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/docs/repl.txt @@ -0,0 +1,33 @@ + +{{alias}}( arrays ) + Multiplies elements of a one-dimensional ndarray by the corresponding + elements of a second one-dimensional ndarray and assigns the results to the + second ndarray. + + The output ndarray is modified *in-place* (i.e., the output ndarray is + *mutated*). + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0, 4.0 ]; + > var x = {{alias:@stdlib/ndarray/vector/ctor}}( xbuf, 'generic' ); + > var ybuf = [ 2.0, 3.0, 4.0, 5.0 ]; + > var y = {{alias:@stdlib/ndarray/vector/ctor}}( ybuf, 'generic' ); + > {{alias}}( [ x, y ] ) + [ 2.0, 6.0, 12.0, 20.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/docs/types/index.d.ts new file mode 100644 index 000000000000..54a275f65e27 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { typedndarray } from '@stdlib/types/ndarray'; + +/** +* Multiplies elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* +* var x = vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ], 'generic' ); +* var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); +* +* var out = gxmy( [ x, y ] ); +* // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +*/ +declare function gxmy = typedndarray>( arrays: [ typedndarray, T ] ): T; + + +// EXPORTS // + +export = gxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/docs/types/test.ts new file mode 100644 index 000000000000..c8c026bf57d3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import gxmy = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 10 ], { + 'dtype': 'generic' + }); + + gxmy( [ x, y ] ); // $ExpectType genericndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + gxmy( '10' ); // $ExpectError + gxmy( 5 ); // $ExpectError + gxmy( true ); // $ExpectError + gxmy( false ); // $ExpectError + gxmy( null ); // $ExpectError + gxmy( undefined ); // $ExpectError + gxmy( [] ); // $ExpectError + gxmy( {} ); // $ExpectError + gxmy( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'generic' + }); + const y = zeros( [ 10 ], { + 'dtype': 'generic' + }); + + gxmy(); // $ExpectError + gxmy( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/examples/index.js new file mode 100644 index 000000000000..74f0b4894561 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/examples/index.js @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var gxmy = require( './../lib' ); + +var opts = { + 'dtype': 'generic' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( y ) ); + +gxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/lib/index.js new file mode 100644 index 000000000000..2cd4aa750a6f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Multiply elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assign the results to the second ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/gxmy +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* var gxmy = require( '@stdlib/blas/ext/base/ndarray/gxmy' ); +* +* var x = vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ], 'generic' ); +* var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); +* +* var out = gxmy( [ x, y ] ); +* // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/lib/main.js new file mode 100644 index 000000000000..5e26540a2f3d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/gxmy' ).ndarray; + + +// MAIN // + +/** +* Multiplies elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} output ndarray +* +* @example +* var vector = require( '@stdlib/ndarray/vector/ctor' ); +* +* var x = vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ], 'generic' ); +* var y = vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ], 'generic' ); +* +* var out = gxmy( [ x, y ] ); +* // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +*/ +function gxmy( arrays ) { + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len + return y; +} + + +// EXPORTS // + +module.exports = gxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/package.json new file mode 100644 index 000000000000..7a53deb31b7a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/package.json @@ -0,0 +1,70 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/gxmy", + "version": "0.0.0", + "description": "Multiply elements of a one-dimensional ndarray by the corresponding elements of a second one-dimensional ndarray and assign the results to the second ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "gxmy", + "xmy", + "multiply", + "multiplication", + "vector", + "strided", + "array", + "ndarray", + "generic" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/test/test.js new file mode 100644 index 000000000000..8e02648bd3d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/gxmy/test/test.js @@ -0,0 +1,233 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var gxmy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Collection} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'generic', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof gxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( gxmy.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies `x` by `y` and assigns the results to `y`', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = [ -2.0, 1.0, 3.0, -5.0, 4.0 ]; + ybuf = [ 1.0, 2.0, -3.0, 4.0, -1.0 ]; + x = vector( xbuf, 5, 1, 0 ); + y = vector( ybuf, 5, 1, 0 ); + expected = [ + -2.0, // -2.0 * 1.0 + 2.0, // 1.0 * 2.0 + -9.0, // 3.0 * (-3.0) + -20.0, // -5.0 * 4.0 + -4.0 // 4.0 * (-1.0) + ]; + + actual = gxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-unit strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = [ + -2.0, // 0 + 1.0, + 3.0, // 1 + -5.0, + 4.0, // 2 + 0.0, + -1.0, // 3 + -3.0 + ]; + ybuf = [ + 1.0, // 0 + 2.0, + -3.0, // 1 + 4.0, + -1.0, // 2 + 0.0, + 3.0, // 3 + 2.0 + ]; + x = vector( xbuf, 4, 2, 0 ); + y = vector( ybuf, 4, 2, 0 ); + expected = [ + -2.0, // -2.0 * 1.0 + 2.0, + -9.0, // 3.0 * (-3.0) + 4.0, + -4.0, // 4.0 * (-1.0) + 0.0, + -3.0, // -1.0 * 3.0 + 2.0 + ]; + + actual = gxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having negative strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = [ + -2.0, // 4 + 1.0, // 3 + 3.0, // 2 + -5.0, // 1 + 4.0 // 0 + ]; + ybuf = [ + 1.0, // 4 + 2.0, // 3 + -3.0, // 2 + 4.0, // 1 + -1.0 // 0 + ]; + x = vector( xbuf, 5, -1, 4 ); + y = vector( ybuf, 5, -1, 4 ); + expected = [ + -2.0, // -2.0 * 1.0 + 2.0, // 1.0 * 2.0 + -9.0, // 3.0 * (-3.0) + -20.0, // -5.0 * 4.0 + -4.0 // 4.0 * (-1.0) + ]; + + actual = gxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-zero offsets', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = [ + 1.0, + -2.0, + 3.0, // 0 + -5.0, // 1 + 4.0, // 2 + 0.0 + ]; + ybuf = [ + 1.0, + -2.0, + 0.0, // 0 + 4.0, // 1 + -1.0, // 2 + 0.0 + ]; + x = vector( xbuf, 3, 1, 2 ); + y = vector( ybuf, 3, 1, 2 ); + expected = [ + 1.0, + -2.0, + 0.0, // 3.0 * 0.0 + -20.0, // -5.0 * 4.0 + -4.0, // 4.0 * (-1.0) + 0.0 + ]; + + actual = gxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the output ndarray unchanged when the input ndarrays are empty', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = []; + ybuf = []; + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + expected = []; + + actual = gxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/lib/index.js index fb5fc5343a01..be417fbff97e 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/lib/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/lib/index.js @@ -99,6 +99,15 @@ setReadOnly( ns, 'csumkbn', require( '@stdlib/blas/ext/base/ndarray/csumkbn' ) ) */ setReadOnly( ns, 'cunitspace', require( '@stdlib/blas/ext/base/ndarray/cunitspace' ) ); +/** +* @name cxmy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/cxmy} +*/ +setReadOnly( ns, 'cxmy', require( '@stdlib/blas/ext/base/ndarray/cxmy' ) ); + /** * @name cxpy * @memberof ns @@ -135,6 +144,15 @@ setReadOnly( ns, 'cxsy', require( '@stdlib/blas/ext/base/ndarray/cxsy' ) ); */ setReadOnly( ns, 'czeroTo', require( '@stdlib/blas/ext/base/ndarray/czero-to' ) ); +/** +* @name dany +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/dany} +*/ +setReadOnly( ns, 'dany', require( '@stdlib/blas/ext/base/ndarray/dany' ) ); + /** * @name daxpb * @memberof ns @@ -216,6 +234,24 @@ setReadOnly( ns, 'dcusumpw', require( '@stdlib/blas/ext/base/ndarray/dcusumpw' ) */ setReadOnly( ns, 'ddiff', require( '@stdlib/blas/ext/base/ndarray/ddiff' ) ); +/** +* @name dfillEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/dfill-equal} +*/ +setReadOnly( ns, 'dfillEqual', require( '@stdlib/blas/ext/base/ndarray/dfill-equal' ) ); + +/** +* @name dfillNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/dfill-not-equal} +*/ +setReadOnly( ns, 'dfillNotEqual', require( '@stdlib/blas/ext/base/ndarray/dfill-not-equal' ) ); + /** * @name dindexOf * @memberof ns @@ -396,6 +432,24 @@ setReadOnly( ns, 'dsumpw', require( '@stdlib/blas/ext/base/ndarray/dsumpw' ) ); */ setReadOnly( ns, 'dunitspace', require( '@stdlib/blas/ext/base/ndarray/dunitspace' ) ); +/** +* @name dxdy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/dxdy} +*/ +setReadOnly( ns, 'dxdy', require( '@stdlib/blas/ext/base/ndarray/dxdy' ) ); + +/** +* @name dxmy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/dxmy} +*/ +setReadOnly( ns, 'dxmy', require( '@stdlib/blas/ext/base/ndarray/dxmy' ) ); + /** * @name dxpy * @memberof ns @@ -432,6 +486,15 @@ setReadOnly( ns, 'dxsy', require( '@stdlib/blas/ext/base/ndarray/dxsy' ) ); */ setReadOnly( ns, 'dzeroTo', require( '@stdlib/blas/ext/base/ndarray/dzero-to' ) ); +/** +* @name gany +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/gany} +*/ +setReadOnly( ns, 'gany', require( '@stdlib/blas/ext/base/ndarray/gany' ) ); + /** * @name gaxpb * @memberof ns @@ -504,6 +567,15 @@ setReadOnly( ns, 'gcusumors', require( '@stdlib/blas/ext/base/ndarray/gcusumors' */ setReadOnly( ns, 'gcusumpw', require( '@stdlib/blas/ext/base/ndarray/gcusumpw' ) ); +/** +* @name gfillNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/gfill-not-equal} +*/ +setReadOnly( ns, 'gfillNotEqual', require( '@stdlib/blas/ext/base/ndarray/gfill-not-equal' ) ); + /** * @name gfindIndex * @memberof ns @@ -540,6 +612,15 @@ setReadOnly( ns, 'gindexOf', require( '@stdlib/blas/ext/base/ndarray/gindex-of' */ setReadOnly( ns, 'gindexOfFalsy', require( '@stdlib/blas/ext/base/ndarray/gindex-of-falsy' ) ); +/** +* @name gindexOfNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/gindex-of-not-equal} +*/ +setReadOnly( ns, 'gindexOfNotEqual', require( '@stdlib/blas/ext/base/ndarray/gindex-of-not-equal' ) ); + /** * @name gindexOfTruthy * @memberof ns @@ -711,6 +792,24 @@ setReadOnly( ns, 'gsumpw', require( '@stdlib/blas/ext/base/ndarray/gsumpw' ) ); */ setReadOnly( ns, 'gunitspace', require( '@stdlib/blas/ext/base/ndarray/gunitspace' ) ); +/** +* @name gxdy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/gxdy} +*/ +setReadOnly( ns, 'gxdy', require( '@stdlib/blas/ext/base/ndarray/gxdy' ) ); + +/** +* @name gxmy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/gxmy} +*/ +setReadOnly( ns, 'gxmy', require( '@stdlib/blas/ext/base/ndarray/gxmy' ) ); + /** * @name gxpy * @memberof ns @@ -747,6 +846,15 @@ setReadOnly( ns, 'gxsy', require( '@stdlib/blas/ext/base/ndarray/gxsy' ) ); */ setReadOnly( ns, 'gzeroTo', require( '@stdlib/blas/ext/base/ndarray/gzero-to' ) ); +/** +* @name sany +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/sany} +*/ +setReadOnly( ns, 'sany', require( '@stdlib/blas/ext/base/ndarray/sany' ) ); + /** * @name saxpb * @memberof ns @@ -819,6 +927,15 @@ setReadOnly( ns, 'scusumkbn2', require( '@stdlib/blas/ext/base/ndarray/scusumkbn */ setReadOnly( ns, 'scusumors', require( '@stdlib/blas/ext/base/ndarray/scusumors' ) ); +/** +* @name sfillNotEqual +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/sfill-not-equal} +*/ +setReadOnly( ns, 'sfillNotEqual', require( '@stdlib/blas/ext/base/ndarray/sfill-not-equal' ) ); + /** * @name sindexOf * @memberof ns @@ -972,6 +1089,24 @@ setReadOnly( ns, 'ssumpw', require( '@stdlib/blas/ext/base/ndarray/ssumpw' ) ); */ setReadOnly( ns, 'sunitspace', require( '@stdlib/blas/ext/base/ndarray/sunitspace' ) ); +/** +* @name sxdy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/sxdy} +*/ +setReadOnly( ns, 'sxdy', require( '@stdlib/blas/ext/base/ndarray/sxdy' ) ); + +/** +* @name sxmy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/sxmy} +*/ +setReadOnly( ns, 'sxmy', require( '@stdlib/blas/ext/base/ndarray/sxmy' ) ); + /** * @name sxpy * @memberof ns @@ -1071,6 +1206,24 @@ setReadOnly( ns, 'zsumkbn', require( '@stdlib/blas/ext/base/ndarray/zsumkbn' ) ) */ setReadOnly( ns, 'zunitspace', require( '@stdlib/blas/ext/base/ndarray/zunitspace' ) ); +/** +* @name zxdy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/zxdy} +*/ +setReadOnly( ns, 'zxdy', require( '@stdlib/blas/ext/base/ndarray/zxdy' ) ); + +/** +* @name zxmy +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/ext/base/ndarray/zxmy} +*/ +setReadOnly( ns, 'zxmy', require( '@stdlib/blas/ext/base/ndarray/zxmy' ) ); + /** * @name zxpy * @memberof ns diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/README.md new file mode 100644 index 000000000000..1dcb71e4bb30 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/README.md @@ -0,0 +1,109 @@ + + +# sany + +> Test whether at least one element in a one-dimensional single-precision floating-point ndarray is truthy. + +
+ +
+ + + +
+ +## Usage + +```javascript +var sany = require( '@stdlib/blas/ext/base/ndarray/sany' ); +``` + +#### sany( arrays ) + +Tests whether at least one element in a one-dimensional single-precision floating-point ndarray is truthy. + +```javascript +var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + +var x = new Float32Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); + +var v = sany( [ x ] ); +// returns true +``` + +The function has the following parameters: + +- **arrays**: array-like object containing a one-dimensional input ndarray. + +
+ + + +
+ +## Notes + +- If provided an empty one-dimensional ndarray, the function returns `false`. +- The function explicitly treats `NaN` values as falsy. + +
+ + + +
+ +## Examples + + + +```javascript +var bernoulli = require( '@stdlib/random/bernoulli' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sany = require( '@stdlib/blas/ext/base/ndarray/sany' ); + +var x = bernoulli( [ 10 ], 0.2, { + 'dtype': 'float32' +}); +console.log( ndarray2array( x ) ); + +var v = sany( [ x ] ); +console.log( v ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/benchmark/benchmark.js new file mode 100644 index 000000000000..5d7a6b9b5153 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/benchmark/benchmark.js @@ -0,0 +1,102 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sany = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = zeros( [ len ], options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sany( [ x ] ); + if ( typeof out !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + } + b.toc(); + if ( typeof out !== 'boolean' ) { + b.fail( 'should return a boolean' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/docs/repl.txt new file mode 100644 index 000000000000..deb7a59019f8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/docs/repl.txt @@ -0,0 +1,28 @@ + +{{alias}}( arrays ) + Tests whether at least one element in a one-dimensional single-precision + floating-point ndarray is truthy. + + If provided an empty ndarray, the function returns `false`. + + The function explicitly treats `NaN` values as falsy. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing a one-dimensional input ndarray. + + Returns + ------- + bool: boolean + Boolean indicating whether at least one element is truthy. + + Examples + -------- + > var x = new {{alias:@stdlib/ndarray/vector/float32}}( [ 0.0, 0.0, 1.0 ] ); + > {{alias}}( [ x ] ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/docs/types/index.d.ts new file mode 100644 index 000000000000..b1321a994871 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray } from '@stdlib/types/ndarray'; + +/** +* Tests whether at least one element in a one-dimensional single-precision floating-point ndarray is truthy. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* +* - The function explicitly treats `NaN` values as falsy. +* +* @param arrays - array-like object containing ndarrays +* @returns boolean indicating whether at least one element is truthy +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* +* var x = new Float32Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); +* +* var v = sany( [ x ] ); +* // returns true +*/ +declare function sany( arrays: [ float32ndarray ] ): boolean; + + +// EXPORTS // + +export = sany; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/docs/types/test.ts new file mode 100644 index 000000000000..668a17f03bd7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/docs/types/test.ts @@ -0,0 +1,57 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import sany = require( './index' ); + + +// TESTS // + +// The function returns a boolean... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float32' + }); + + sany( [ x ] ); // $ExpectType boolean +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + sany( '10' ); // $ExpectError + sany( 10 ); // $ExpectError + sany( true ); // $ExpectError + sany( false ); // $ExpectError + sany( null ); // $ExpectError + sany( undefined ); // $ExpectError + sany( [] ); // $ExpectError + sany( {} ); // $ExpectError + sany( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float32' + }); + + sany(); // $ExpectError + sany( [ x ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/examples/index.js new file mode 100644 index 000000000000..0a62dc4f8bee --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/examples/index.js @@ -0,0 +1,31 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var bernoulli = require( '@stdlib/random/bernoulli' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sany = require( './../lib' ); + +var x = bernoulli( [ 10 ], 0.2, { + 'dtype': 'float32' +}); +console.log( ndarray2array( x ) ); + +var v = sany( [ x ] ); +console.log( v ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/lib/index.js new file mode 100644 index 000000000000..9c64d34d0fca --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/lib/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Test whether at least one element in a one-dimensional single-precision floating-point ndarray is truthy. +* +* @module @stdlib/blas/ext/base/ndarray/sany +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var sany = require( '@stdlib/blas/ext/base/ndarray/sany' ); +* +* var x = new Float32Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); +* +* var v = sany( [ x ] ); +* // returns true +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/lib/main.js new file mode 100644 index 000000000000..fd419edfff6b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/lib/main.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/sany' ).ndarray; + + +// MAIN // + +/** +* Tests whether at least one element in a one-dimensional single-precision floating-point ndarray is truthy. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* +* - The function explicitly treats `NaN` values as falsy. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {boolean} boolean indicating whether at least one element is truthy +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* +* var x = new Float32Vector( [ 0.0, 0.0, 1.0, 1.0 ] ); +* +* var v = sany( [ x ] ); +* // returns true +*/ +function sany( arrays ) { + var x = arrays[ 0 ]; + return strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = sany; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/package.json new file mode 100644 index 000000000000..a4b3b1d9896e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/package.json @@ -0,0 +1,69 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/sany", + "version": "0.0.0", + "description": "Test whether at least one element in a one-dimensional single-precision floating-point ndarray is truthy.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "any", + "sany", + "truthy", + "test", + "boolean", + "ndarray", + "float32", + "single-precision", + "float32array" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/test/test.js new file mode 100644 index 000000000000..1286e19da836 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sany/test/test.js @@ -0,0 +1,178 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var sany = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float32Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float32', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sany, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( sany.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function tests whether at least one element in a one-dimensional ndarray is truthy', function test( t ) { + var x; + var v; + + x = new Float32Array( [ 0.0, 0.0, 1.0, 1.0 ] ); + v = sany( [ vector( x, 4, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + x = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + v = sany( [ vector( x, 5, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 0.0, 0.0 ] ); + v = sany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + x = new Float32Array( [ -0.0, 0.0, -0.0 ] ); + v = sany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = new Float32Array( [ -1.0, 0.0, 0.0 ] ); + v = sany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `NaN` values as falsy', function test( t ) { + var x; + var v; + + x = new Float32Array( [ NaN, 0.0, 0.0 ] ); + v = sany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = new Float32Array( [ NaN, NaN, NaN ] ); + v = sany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + x = new Float32Array( [ NaN, 0.0, 1.0 ] ); + v = sany( [ vector( x, 3, 1, 0 ) ] ); + t.strictEqual( v, true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided an empty ndarray, the function returns `false`', function test( t ) { + var x; + var v; + + x = new Float32Array( [] ); + + v = sany( [ vector( x, 0, 1, 0 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-unit strides', function test( t ) { + var x; + var v; + + x = new Float32Array([ + 0.0, // 0 + 1.0, + 0.0, // 1 + 1.0, + 0.0, // 2 + 1.0, + 0.0, // 3 + 1.0 + ]); + + v = sany( [ vector( x, 4, 2, 0 ) ] ); + + t.strictEqual( v, false, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having negative strides', function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, // 3 + 0.0, + 0.0, // 2 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 0 + 0.0 + ]); + + v = sany( [ vector( x, 4, -2, 6 ) ] ); + + t.strictEqual( v, true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports one-dimensional ndarrays having non-zero offsets', function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, + 0.0, // 0 + 1.0, + 0.0, // 1 + 1.0, + 0.0, // 2 + 1.0, + 0.0 // 3 + ]); + + v = sany( [ vector( x, 4, 2, 1 ) ] ); + t.strictEqual( v, false, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/README.md new file mode 100644 index 000000000000..5af933bd5fc8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/README.md @@ -0,0 +1,132 @@ + + +# sfillNotEqual + +> Replace elements in a one-dimensional single-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. + +
+ +
+ + + +
+ +## Usage + +```javascript +var sfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/sfill-not-equal' ); +``` + +#### sfillNotEqual( arrays ) + +Replaces elements in a one-dimensional single-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. + +```javascript +var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); + +var x = new Float32Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +var searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' +}); + +var alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' +}); + +sfillNotEqual( [ x, searchElement, alpha ] ); +// x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + - a zero-dimensional ndarray containing the scalar constant. + +
+ + + +
+ +## Notes + +- The input ndarray is modified **in-place** (i.e., the input ndarray is **mutated**). +- When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var sfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/sfill-not-equal' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 10 ], 0, 3, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 1.0, opts ); +console.log( 'Search Element: %d', ndarraylike2scalar( searchElement ) ); + +var alpha = scalar2ndarray( 5.0, opts ); +console.log( 'Alpha: %d', ndarraylike2scalar( alpha ) ); + +sfillNotEqual( [ x, searchElement, alpha ] ); +console.log( ndarray2array( x ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..aa384ace23b3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfillNotEqual = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var searchElement; + var alpha; + var x; + + x = uniform( [ len ], -100.0, 100.0, options ); + searchElement = scalar2ndarray( 0.0, options ); + alpha = scalar2ndarray( 5.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sfillNotEqual( [ x, searchElement, alpha ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/docs/repl.txt new file mode 100644 index 000000000000..bd2339de7b9a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/docs/repl.txt @@ -0,0 +1,38 @@ + +{{alias}}( arrays ) + Replaces elements in a one-dimensional single-precision floating-point + ndarray not equal to a provided search element with a specified scalar + constant. + + The input ndarray is modified *in-place* (i.e., the input ndarray is + *mutated*). + + When comparing elements, the function checks for equality using the strict + equality operator `===`. As a consequence, `NaN` values are considered + distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements + are always replaced), and `-0` and `+0` are considered the same. + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a zero-dimensional ndarray containing the search element. + - a zero-dimensional ndarray containing the scalar constant. + + Returns + ------- + out: ndarray + Input ndarray. + + Examples + -------- + > var x = new {{alias:@stdlib/ndarray/vector/float32}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > var v = {{alias:@stdlib/ndarray/from-scalar}}( 0.0, { 'dtype': 'float32' } ); + > var alpha = {{alias:@stdlib/ndarray/from-scalar}}( 5.0, { 'dtype': 'float32' } ); + > {{alias}}( [ x, v, alpha ] ) + [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..5a51cfea6a57 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/docs/types/index.d.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray, typedndarray } from '@stdlib/types/ndarray'; + +/** +* Replaces elements in a one-dimensional single-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* - a zero-dimensional ndarray containing the scalar constant. +* +* - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. +* +* @param arrays - array-like object containing ndarrays +* @returns input ndarray +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float32Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'float32' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'float32' +* }); +* +* var out = sfillNotEqual( [ x, searchElement, alpha ] ); +* // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +declare function sfillNotEqual( arrays: [ float32ndarray, typedndarray, typedndarray ] ): float32ndarray; + + +// EXPORTS // + +export = sfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..86417a4f3f1a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/docs/types/test.ts @@ -0,0 +1,70 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +import sfillNotEqual = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float32' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + const alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + sfillNotEqual( [ x, searchElement, alpha ] ); // $ExpectType float32ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + sfillNotEqual( '10' ); // $ExpectError + sfillNotEqual( 5 ); // $ExpectError + sfillNotEqual( true ); // $ExpectError + sfillNotEqual( false ); // $ExpectError + sfillNotEqual( null ); // $ExpectError + sfillNotEqual( undefined ); // $ExpectError + sfillNotEqual( [] ); // $ExpectError + sfillNotEqual( {} ); // $ExpectError + sfillNotEqual( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float32' + }); + const searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + const alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + sfillNotEqual(); // $ExpectError + sfillNotEqual( [ x, searchElement, alpha ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/examples/index.js new file mode 100644 index 000000000000..8dadc1aef501 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/examples/index.js @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var ndarraylike2scalar = require( '@stdlib/ndarray/ndarraylike2scalar' ); +var sfillNotEqual = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 10 ], 0, 3, opts ); +console.log( ndarray2array( x ) ); + +var searchElement = scalar2ndarray( 1.0, opts ); +console.log( 'Search Element: %d', ndarraylike2scalar( searchElement ) ); + +var alpha = scalar2ndarray( 5.0, opts ); +console.log( 'Alpha: %d', ndarraylike2scalar( alpha ) ); + +sfillNotEqual( [ x, searchElement, alpha ] ); +console.log( ndarray2array( x ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/lib/index.js new file mode 100644 index 000000000000..e521f96a879c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/lib/index.js @@ -0,0 +1,52 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Replace elements in a one-dimensional single-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. +* +* @module @stdlib/blas/ext/base/ndarray/sfill-not-equal +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* var sfillNotEqual = require( '@stdlib/blas/ext/base/ndarray/sfill-not-equal' ); +* +* var x = new Float32Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'float32' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'float32' +* }); +* +* var out = sfillNotEqual( [ x, searchElement, alpha ] ); +* // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/lib/main.js new file mode 100644 index 000000000000..4e9acf308ef9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/lib/main.js @@ -0,0 +1,81 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/sfill-not-equal' ).ndarray; +var ndarraylike2scalar = require( '@stdlib/ndarray/base/ndarraylike2scalar' ); + + +// MAIN // + +/** +* Replaces elements in a one-dimensional single-precision floating-point ndarray not equal to a provided search element with a specified scalar constant. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a zero-dimensional ndarray containing the search element. +* - a zero-dimensional ndarray containing the scalar constant. +* +* - When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} input ndarray +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +* +* var x = new Float32Vector( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* var searchElement = scalar2ndarray( 0.0, { +* 'dtype': 'float32' +* }); +* +* var alpha = scalar2ndarray( 5.0, { +* 'dtype': 'float32' +* }); +* +* var out = sfillNotEqual( [ x, searchElement, alpha ] ); +* // returns [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function sfillNotEqual( arrays ) { + var searchElement; + var alpha; + var x; + + x = arrays[ 0 ]; + searchElement = ndarraylike2scalar( arrays[ 1 ] ); + alpha = ndarraylike2scalar( arrays[ 2 ] ); + strided( numelDimension( x, 0 ), searchElement, alpha, getData( x ), getStride( x, 0 ), getOffset( x ) ); // eslint-disable-line max-len + return x; +} + + +// EXPORTS // + +module.exports = sfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/package.json new file mode 100644 index 000000000000..eaeab44d09c3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/package.json @@ -0,0 +1,72 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/sfill-not-equal", + "version": "0.0.0", + "description": "Replace elements in a one-dimensional single-precision floating-point ndarray not equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "fill", + "not equal", + "unequal", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "float32", + "single" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/test/test.js new file mode 100644 index 000000000000..8e23d48c0b53 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sfill-not-equal/test/test.js @@ -0,0 +1,301 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var scalar2ndarray = require( '@stdlib/ndarray/from-scalar' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var sfillNotEqual = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float32Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float32', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function replaces elements not equal to a provided search element', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 6, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-unit stride', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 3, 2, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a negative stride', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 3, -2, 4 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-zero offset', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + x = vector( xbuf, 3, 1, 3 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 5.0, 5.0 ] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns the input ndarray unchanged', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float32Array( [ NaN, 1.0, NaN ] ); + x = vector( xbuf, 3, 1, 0 ); + searchElement = scalar2ndarray( NaN, { + 'dtype': 'float32' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [ 5.0, 5.0, 5.0 ] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float32Array( [ NaN, 0.0, NaN ] ); + x = vector( xbuf, 3, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [ 5.0, 0.0, 5.0 ] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + xbuf = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + x = vector( xbuf, 4, 1, 0 ); + searchElement = scalar2ndarray( -0.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the input ndarray unchanged when the input ndarray is empty', function test( t ) { + var searchElement; + var expected; + var actual; + var alpha; + var xbuf; + var x; + + xbuf = new Float32Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + searchElement = scalar2ndarray( 0.0, { + 'dtype': 'float32' + }); + alpha = scalar2ndarray( 5.0, { + 'dtype': 'float32' + }); + + actual = sfillNotEqual( [ x, searchElement, alpha ] ); + t.strictEqual( actual, x, 'returns expected value' ); + + expected = new Float32Array( [] ); + t.strictEqual( isSameFloat32Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansum/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansum/package.json index a008530fd94d..0d4f54ece7a5 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansum/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansum/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/snansum", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring `NaN` values.", + "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring NaN values.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumkbn/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumkbn/package.json index 642e7040a7b4..15c4fe328f50 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumkbn/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumkbn/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/snansumkbn", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring `NaN` values and using an improved Kahan–Babuška algorithm.", + "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring NaN values and using an improved Kahan–Babuška algorithm.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumkbn2/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumkbn2/package.json index 456b60db6847..8b80015727ca 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumkbn2/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumkbn2/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/snansumkbn2", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring `NaN` values and using a second-order iterative Kahan–Babuška algorithm.", + "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring NaN values and using a second-order iterative Kahan–Babuška algorithm.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumors/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumors/package.json index 5c9fb9c66dd1..8c98ab122886 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumors/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumors/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/snansumors", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring `NaN` values and using ordinary recursive summation.", + "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring NaN values and using ordinary recursive summation.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumpw/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumpw/package.json index 789a51c65174..09c3e15a9b80 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumpw/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/snansumpw/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/ndarray/snansumpw", "version": "0.0.0", - "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring `NaN` values and using pairwise summation.", + "description": "Compute the sum of a one-dimensional single-precision floating-point ndarray, ignoring NaN values and using pairwise summation.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/README.md new file mode 100644 index 000000000000..0cd587f91bc5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/README.md @@ -0,0 +1,132 @@ + + +# sxdy + +> Divide elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assign the results to the second ndarray. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \oslash \mathbf{y} +``` + + + + + +
+ + + +
+ +## Usage + +```javascript +var sxdy = require( '@stdlib/blas/ext/base/ndarray/sxdy' ); +``` + +#### sxdy( arrays ) + +Divides elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assigns the results to the second ndarray. + +```javascript +var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + +var x = new Float32Vector( [ 10.0, 12.0, 6.0, -4.0, 8.0 ] ); +var y = new Float32Vector( [ 2.0, 3.0, 2.0, -2.0, 4.0 ] ); + +sxdy( [ x, y ] ); +// y => [ 5.0, 4.0, 3.0, 2.0, 2.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + +
+ + + +
+ +## Notes + +- The output ndarray is modified **in-place** (i.e., the output ndarray is **mutated**). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sxdy = require( '@stdlib/blas/ext/base/ndarray/sxdy' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 1, 100, opts ); +console.log( ndarray2array( y ) ); + +sxdy( [ x, y ] ); +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/benchmark/benchmark.js new file mode 100644 index 000000000000..16678db3f9d3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/benchmark/benchmark.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sxdy = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( [ len ], -100.0, 100.0, options ); + var y = uniform( [ len ], 1.0, 100.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sxdy( [ x, y ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/img/equation_xdy.svg b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/img/equation_xdy.svg new file mode 100644 index 000000000000..1b0e60ad95cf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/img/equation_xdy.svg @@ -0,0 +1,16 @@ + +bold y equals bold x circled-division-slash bold y + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/repl.txt new file mode 100644 index 000000000000..baaa3b392a78 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( arrays ) + Divides elements of a one-dimensional single-precision floating-point + ndarray by the corresponding elements of a second one-dimensional single- + precision floating-point ndarray and assigns the results to the second + ndarray. + + The output ndarray is modified *in-place* (i.e., the output ndarray is + *mutated*). + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 10.0, 12.0, 6.0, 8.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float32}}( xbuf ); + > var ybuf = [ 2.0, 3.0, 2.0, 4.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float32}}( ybuf ); + > {{alias}}( [ x, y ] ) + [ 5.0, 4.0, 3.0, 2.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/types/index.d.ts new file mode 100644 index 000000000000..d785add5945a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray } from '@stdlib/types/ndarray'; + +/** +* Divides elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* +* var x = new Float32Vector( [ 10.0, 12.0, 6.0, -4.0, 8.0 ] ); +* var y = new Float32Vector( [ 2.0, 3.0, 2.0, -2.0, 4.0 ] ); +* +* var out = sxdy( [ x, y ] ); +* // returns [ 5.0, 4.0, 3.0, 2.0, 2.0 ] +*/ +declare function sxdy( arrays: [ float32ndarray, float32ndarray ] ): float32ndarray; + + +// EXPORTS // + +export = sxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/types/test.ts new file mode 100644 index 000000000000..9aa111b05f13 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import sxdy = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float32' + }); + + sxdy( [ x, y ] ); // $ExpectType float32ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + sxdy( '10' ); // $ExpectError + sxdy( 5 ); // $ExpectError + sxdy( true ); // $ExpectError + sxdy( false ); // $ExpectError + sxdy( null ); // $ExpectError + sxdy( undefined ); // $ExpectError + sxdy( [] ); // $ExpectError + sxdy( {} ); // $ExpectError + sxdy( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float32' + }); + + sxdy(); // $ExpectError + sxdy( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/examples/index.js new file mode 100644 index 000000000000..0a340114649b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/examples/index.js @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sxdy = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], 1, 100, opts ); +console.log( ndarray2array( y ) ); + +sxdy( [ x, y ] ); +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/lib/index.js new file mode 100644 index 000000000000..a7ea84002c1a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Divide elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assign the results to the second ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/sxdy +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var sxdy = require( '@stdlib/blas/ext/base/ndarray/sxdy' ); +* +* var x = new Float32Vector( [ 10.0, 12.0, 6.0, -4.0, 8.0 ] ); +* var y = new Float32Vector( [ 2.0, 3.0, 2.0, -2.0, 4.0 ] ); +* +* var out = sxdy( [ x, y ] ); +* // returns [ 5.0, 4.0, 3.0, 2.0, 2.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/lib/main.js new file mode 100644 index 000000000000..e439fd2e7963 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/sxdy' ).ndarray; + + +// MAIN // + +/** +* Divides elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} output ndarray +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* +* var x = new Float32Vector( [ 10.0, 12.0, 6.0, -4.0, 8.0 ] ); +* var y = new Float32Vector( [ 2.0, 3.0, 2.0, -2.0, 4.0 ] ); +* +* var out = sxdy( [ x, y ] ); +* // returns [ 5.0, 4.0, 3.0, 2.0, 2.0 ] +*/ +function sxdy( arrays ) { + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len + return y; +} + + +// EXPORTS // + +module.exports = sxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/package.json new file mode 100644 index 000000000000..ffc119978eb5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/sxdy", + "version": "0.0.0", + "description": "Divide elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assign the results to the second ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "sxdy", + "xdy", + "divide", + "division", + "quotient", + "vector", + "strided", + "array", + "ndarray", + "float32", + "single", + "single-precision" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/test/test.js new file mode 100644 index 000000000000..f34c7b02d3db --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxdy/test/test.js @@ -0,0 +1,234 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var sxdy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float32Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float32', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( sxdy.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides `x` by `y` and assigns the results to `y`', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array( [ -2.0, 4.0, -9.0, -20.0, -4.0 ] ); + ybuf = new Float32Array( [ 1.0, 2.0, -3.0, 4.0, -1.0 ] ); + x = vector( xbuf, 5, 1, 0 ); + y = vector( ybuf, 5, 1, 0 ); + expected = new Float32Array([ + -2.0, // -2.0 / 1.0 + 2.0, // 4.0 / 2.0 + 3.0, // -9.0 / (-3.0) + -5.0, // -20.0 / 4.0 + 4.0 // -4.0 / (-1.0) + ]); + + actual = sxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-unit strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array([ + -2.0, // 0 + 1.0, + -9.0, // 1 + -5.0, + -4.0, // 2 + 0.0, + -3.0, // 3 + -3.0 + ]); + ybuf = new Float32Array([ + 1.0, // 0 + 2.0, + -3.0, // 1 + 4.0, + -1.0, // 2 + 0.0, + 3.0, // 3 + 2.0 + ]); + x = vector( xbuf, 4, 2, 0 ); + y = vector( ybuf, 4, 2, 0 ); + expected = new Float32Array([ + -2.0, // -2.0 / 1.0 + 2.0, + 3.0, // -9.0 / (-3.0) + 4.0, + 4.0, // -4.0 / (-1.0) + 0.0, + -1.0, // -3.0 / 3.0 + 2.0 + ]); + + actual = sxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having negative strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array([ + -2.0, // 4 + 4.0, // 3 + -9.0, // 2 + -20.0, // 1 + -4.0 // 0 + ]); + ybuf = new Float32Array([ + 1.0, // 4 + 2.0, // 3 + -3.0, // 2 + 4.0, // 1 + -1.0 // 0 + ]); + x = vector( xbuf, 5, -1, 4 ); + y = vector( ybuf, 5, -1, 4 ); + expected = new Float32Array([ + -2.0, // -2.0 / 1.0 + 2.0, // 4.0 / 2.0 + 3.0, // -9.0 / (-3.0) + -5.0, // -20.0 / 4.0 + 4.0 // -4.0 / (-1.0) + ]); + + actual = sxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-zero offsets', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array([ + 1.0, + -2.0, + 0.0, // 0 + -20.0, // 1 + -4.0, // 2 + 0.0 + ]); + ybuf = new Float32Array([ + 1.0, + -2.0, + 3.0, // 0 + 4.0, // 1 + -1.0, // 2 + 0.0 + ]); + x = vector( xbuf, 3, 1, 2 ); + y = vector( ybuf, 3, 1, 2 ); + expected = new Float32Array([ + 1.0, + -2.0, + 0.0, // 0.0 / 3.0 + -5.0, // -20.0 / 4.0 + 4.0, // -4.0 / (-1.0) + 0.0 + ]); + + actual = sxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the output ndarray unchanged when the input ndarrays are empty', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array( [] ); + ybuf = new Float32Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + expected = new Float32Array( [] ); + + actual = sxdy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/README.md new file mode 100644 index 000000000000..a5eabab8e7bf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/README.md @@ -0,0 +1,127 @@ + + +# sxmy + +> Multiply elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assign the results to the second ndarray. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \odot \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var sxmy = require( '@stdlib/blas/ext/base/ndarray/sxmy' ); +``` + +#### sxmy( arrays ) + +Multiplies elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assigns the results to the second ndarray. + +```javascript +var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); + +var x = new Float32Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +var y = new Float32Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +sxmy( [ x, y ] ); +// y => [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + +
+ + + +
+ +## Notes + +- The output ndarray is modified **in-place** (i.e., the output ndarray is **mutated**). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sxmy = require( '@stdlib/blas/ext/base/ndarray/sxmy' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( y ) ); + +sxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/benchmark/benchmark.js new file mode 100644 index 000000000000..3a0becac4dbb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/benchmark/benchmark.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/uniform' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sxmy = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( [ len ], -100.0, 100.0, options ); + var y = uniform( [ len ], -100.0, 100.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sxmy( [ x, y ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/docs/repl.txt new file mode 100644 index 000000000000..48e148ddc886 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( arrays ) + Multiplies elements of a one-dimensional single-precision floating-point + ndarray by the corresponding elements of a second one-dimensional single- + precision floating-point ndarray and assigns the results to the second + ndarray. + + The output ndarray is modified *in-place* (i.e., the output ndarray is + *mutated*). + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var xbuf = [ 1.0, 2.0, 3.0, 4.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/float32}}( xbuf ); + > var ybuf = [ 2.0, 3.0, 4.0, 5.0 ]; + > var y = new {{alias:@stdlib/ndarray/vector/float32}}( ybuf ); + > {{alias}}( [ x, y ] ) + [ 2.0, 6.0, 12.0, 20.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/docs/types/index.d.ts new file mode 100644 index 000000000000..364e59d8e6b7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { float32ndarray } from '@stdlib/types/ndarray'; + +/** +* Multiplies elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var y = new Float32Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* var out = sxmy( [ x, y ] ); +* // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +*/ +declare function sxmy( arrays: [ float32ndarray, float32ndarray ] ): float32ndarray; + + +// EXPORTS // + +export = sxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/docs/types/test.ts new file mode 100644 index 000000000000..e2b6bd6c644b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import sxmy = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float32' + }); + + sxmy( [ x, y ] ); // $ExpectType float32ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + sxmy( '10' ); // $ExpectError + sxmy( 5 ); // $ExpectError + sxmy( true ); // $ExpectError + sxmy( false ); // $ExpectError + sxmy( null ); // $ExpectError + sxmy( undefined ); // $ExpectError + sxmy( [] ); // $ExpectError + sxmy( {} ); // $ExpectError + sxmy( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'float32' + }); + const y = zeros( [ 10 ], { + 'dtype': 'float32' + }); + + sxmy(); // $ExpectError + sxmy( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/examples/index.js new file mode 100644 index 000000000000..9d56c89ca15e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/examples/index.js @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/discrete-uniform' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var sxmy = require( './../lib' ); + +var opts = { + 'dtype': 'float32' +}; + +var x = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( x ) ); + +var y = discreteUniform( [ 10 ], -100, 100, opts ); +console.log( ndarray2array( y ) ); + +sxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/lib/index.js new file mode 100644 index 000000000000..7bf713925acc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Multiply elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assign the results to the second ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/sxmy +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* var sxmy = require( '@stdlib/blas/ext/base/ndarray/sxmy' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var y = new Float32Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* var out = sxmy( [ x, y ] ); +* // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/lib/main.js new file mode 100644 index 000000000000..fcbd154fe070 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/sxmy' ).ndarray; + + +// MAIN // + +/** +* Multiplies elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} output ndarray +* +* @example +* var Float32Vector = require( '@stdlib/ndarray/vector/float32' ); +* +* var x = new Float32Vector( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var y = new Float32Vector( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* var out = sxmy( [ x, y ] ); +* // returns [ 2.0, 6.0, 12.0, 20.0, 30.0 ] +*/ +function sxmy( arrays ) { + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len + return y; +} + + +// EXPORTS // + +module.exports = sxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/package.json new file mode 100644 index 000000000000..41bfd59fdabc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/sxmy", + "version": "0.0.0", + "description": "Multiply elements of a one-dimensional single-precision floating-point ndarray by the corresponding elements of a second one-dimensional single-precision floating-point ndarray and assign the results to the second ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "sxmy", + "xmy", + "multiply", + "multiplication", + "product", + "vector", + "strided", + "array", + "ndarray", + "float32", + "single", + "single-precision" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/test/test.js new file mode 100644 index 000000000000..0d0c1eea2a92 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/sxmy/test/test.js @@ -0,0 +1,234 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var sxmy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Float32Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'float32', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( sxmy.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies `x` by `y` and assigns the results to `y`', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0 ] ); + ybuf = new Float32Array( [ 1.0, 2.0, -3.0, 4.0, -1.0 ] ); + x = vector( xbuf, 5, 1, 0 ); + y = vector( ybuf, 5, 1, 0 ); + expected = new Float32Array([ + -2.0, // -2.0 * 1.0 + 2.0, // 1.0 * 2.0 + -9.0, // 3.0 * (-3.0) + -20.0, // -5.0 * 4.0 + -4.0 // 4.0 * (-1.0) + ]); + + actual = sxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-unit strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array([ + -2.0, // 0 + 1.0, + 3.0, // 1 + -5.0, + 4.0, // 2 + 0.0, + -1.0, // 3 + -3.0 + ]); + ybuf = new Float32Array([ + 1.0, // 0 + 2.0, + -3.0, // 1 + 4.0, + -1.0, // 2 + 0.0, + 3.0, // 3 + 2.0 + ]); + x = vector( xbuf, 4, 2, 0 ); + y = vector( ybuf, 4, 2, 0 ); + expected = new Float32Array([ + -2.0, // -2.0 * 1.0 + 2.0, + -9.0, // 3.0 * (-3.0) + 4.0, + -4.0, // 4.0 * (-1.0) + 0.0, + -3.0, // -1.0 * 3.0 + 2.0 + ]); + + actual = sxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having negative strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array([ + -2.0, // 4 + 1.0, // 3 + 3.0, // 2 + -5.0, // 1 + 4.0 // 0 + ]); + ybuf = new Float32Array([ + 1.0, // 4 + 2.0, // 3 + -3.0, // 2 + 4.0, // 1 + -1.0 // 0 + ]); + x = vector( xbuf, 5, -1, 4 ); + y = vector( ybuf, 5, -1, 4 ); + expected = new Float32Array([ + -2.0, // -2.0 * 1.0 + 2.0, // 1.0 * 2.0 + -9.0, // 3.0 * (-3.0) + -20.0, // -5.0 * 4.0 + -4.0 // 4.0 * (-1.0) + ]); + + actual = sxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports input ndarrays having non-zero offsets', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array([ + 1.0, + -2.0, + 3.0, // 0 + -5.0, // 1 + 4.0, // 2 + 0.0 + ]); + ybuf = new Float32Array([ + 1.0, + -2.0, + 0.0, // 0 + 4.0, // 1 + -1.0, // 2 + 0.0 + ]); + x = vector( xbuf, 3, 1, 2 ); + y = vector( ybuf, 3, 1, 2 ); + expected = new Float32Array([ + 1.0, + -2.0, + 0.0, // 3.0 * 0.0 + -20.0, // -5.0 * 4.0 + -4.0, // 4.0 * (-1.0) + 0.0 + ]); + + actual = sxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns the output ndarray unchanged when the input ndarrays are empty', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Float32Array( [] ); + ybuf = new Float32Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + expected = new Float32Array( [] ); + + actual = sxmy( [ x, y ] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.deepEqual( ybuf, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zunitspace/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zunitspace/README.md index 2cf6fcfd7082..23921225ce2f 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zunitspace/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zunitspace/README.md @@ -40,8 +40,6 @@ var zunitspace = require( '@stdlib/blas/ext/base/ndarray/zunitspace' ); Fills a one-dimensional double-precision complex floating-point ndarray with linearly spaced numeric elements which increment by `1` starting from a specified value. - - ```javascript var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); var Complex128 = require( '@stdlib/complex/float64/ctor' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/README.md new file mode 100644 index 000000000000..a94f1daf45e7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/README.md @@ -0,0 +1,133 @@ + + +# zxdy + +> Divide elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assign the results to the second ndarray. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \oslash \mathbf{y} +``` + + + + + +
+ + + +
+ +## Usage + +```javascript +var zxdy = require( '@stdlib/blas/ext/base/ndarray/zxdy' ); +``` + +#### zxdy( arrays ) + +Divides elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assigns the results to the second ndarray. + +```javascript +var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); + +var x = new Complex128Vector( [ -1.0, 3.0, -2.0, 14.0, -4.0, 44.0 ] ); +var y = new Complex128Vector( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + +zxdy( [ x, y ] ); +// y => [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + +
+ + + +
+ +## Notes + +- The output ndarray is modified **in-place** (i.e., the output ndarray is **mutated**). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var zxdy = require( '@stdlib/blas/ext/base/ndarray/zxdy' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = new Complex128Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( x ) ); + +var y = new Complex128Vector( discreteUniform( 20, 1, 100, opts ) ); +console.log( ndarray2array( y ) ); + +zxdy( [ x, y ] ); +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/benchmark/benchmark.js new file mode 100644 index 000000000000..f6d0afdb5691 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/benchmark/benchmark.js @@ -0,0 +1,108 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zxdy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -100.0, 100.0, { + 'dtype': 'float64' + }); + ybuf = uniform( len*2, 1.0, 100.0, { + 'dtype': 'float64' + }); + x = new Complex128Vector( xbuf.buffer ); + y = new Complex128Vector( ybuf.buffer ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = zxdy( [ x, y ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/img/equation_xdy.svg b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/img/equation_xdy.svg new file mode 100644 index 000000000000..1b0e60ad95cf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/img/equation_xdy.svg @@ -0,0 +1,16 @@ + +bold y equals bold x circled-division-slash bold y + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/repl.txt new file mode 100644 index 000000000000..0b3674fbf706 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( arrays ) + Divides elements of a one-dimensional double-precision complex floating- + point ndarray by the corresponding elements of a second one-dimensional + double-precision complex floating-point ndarray and assigns the results to + the second ndarray. + + The output ndarray is modified *in-place* (i.e., the output ndarray is + *mutated*). + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var bufX = [ -1.0, 3.0, -2.0, 14.0, -4.0, 44.0 ]; + > var bufY = [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/complex128}}( bufX ); + > var y = new {{alias:@stdlib/ndarray/vector/complex128}}( bufY ); + > {{alias}}( [ x, y ] ) + [ [ 1,2 ], [ 3,4 ], [ 5,6 ] ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/types/index.d.ts new file mode 100644 index 000000000000..68187707325c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { complex128ndarray } from '@stdlib/types/ndarray'; + +/** +* Divides elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +* +* var x = new Complex128Vector( [ -1.0, 3.0, -2.0, 14.0, -4.0, 44.0 ] ); +* var y = new Complex128Vector( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* var out = zxdy( [ x, y ] ); +* // returns [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +*/ +declare function zxdy( arrays: [ complex128ndarray, complex128ndarray ] ): complex128ndarray; + + +// EXPORTS // + +export = zxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/types/test.ts new file mode 100644 index 000000000000..2b82c18f15d7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import zxdy = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'complex128' + }); + const y = zeros( [ 10 ], { + 'dtype': 'complex128' + }); + + zxdy( [ x, y ] ); // $ExpectType complex128ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + zxdy( '10' ); // $ExpectError + zxdy( 5 ); // $ExpectError + zxdy( true ); // $ExpectError + zxdy( false ); // $ExpectError + zxdy( null ); // $ExpectError + zxdy( undefined ); // $ExpectError + zxdy( [] ); // $ExpectError + zxdy( {} ); // $ExpectError + zxdy( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'complex128' + }); + const y = zeros( [ 10 ], { + 'dtype': 'complex128' + }); + + zxdy(); // $ExpectError + zxdy( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/examples/index.js new file mode 100644 index 000000000000..98e78016cfe9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var zxdy = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = new Complex128Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( x ) ); + +var y = new Complex128Vector( discreteUniform( 20, 1, 100, opts ) ); +console.log( ndarray2array( y ) ); + +zxdy( [ x, y ] ); +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/lib/index.js new file mode 100644 index 000000000000..56effa50f514 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Divide elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assign the results to the second ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/zxdy +* +* @example +* var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +* var zxdy = require( '@stdlib/blas/ext/base/ndarray/zxdy' ); +* +* var x = new Complex128Vector( [ -1.0, 3.0, -2.0, 14.0, -4.0, 44.0 ] ); +* var y = new Complex128Vector( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* var out = zxdy( [ x, y ] ); +* // returns [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/lib/main.js new file mode 100644 index 000000000000..0ee5178c7e22 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/zxdy' ).ndarray; + + +// MAIN // + +/** +* Divides elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} output ndarray +* +* @example +* var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +* +* var x = new Complex128Vector( [ -1.0, 3.0, -2.0, 14.0, -4.0, 44.0 ] ); +* var y = new Complex128Vector( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* var out = zxdy( [ x, y ] ); +* // returns [ [ 1.0, 2.0 ], [ 3.0, 4.0 ], [ 5.0, 6.0 ] ] +*/ +function zxdy( arrays ) { + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len + return y; +} + + +// EXPORTS // + +module.exports = zxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/package.json new file mode 100644 index 000000000000..8b56b46d7236 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/zxdy", + "version": "0.0.0", + "description": "Divide elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assign the results to the second ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "zxdy", + "xdy", + "divide", + "division", + "strided", + "array", + "ndarray", + "complex128", + "complex", + "double", + "double-precision", + "float64" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/test/test.js new file mode 100644 index 000000000000..74ca632e7391 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxdy/test/test.js @@ -0,0 +1,333 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var zxdy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Complex128Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'complex128', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( zxdy.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by `y` and assigns the results to `y`', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array( [ -1.0, 3.0, -2.0, 14.0, -4.0, 44.0 ] ); + ybuf = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + + actual = zxdy( [ x, y ] ); + expected = new Complex128Array([ + // (-1.0+3.0i) / (1.0+1.0i) + 1.0, + 2.0, + // (-2.0+14.0i) / (2.0+2.0i) + 3.0, + 4.0, + // (-4.0+44.0i) / (4.0+4.0i) + 5.0, + 6.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + + xbuf = new Complex128Array( [ 6.0, 2.0, -3.0, 1.0 ] ); + ybuf = new Complex128Array( [ 2.0, 2.0, 1.0, 1.0 ] ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + + actual = zxdy( [ x, y ] ); + expected = new Complex128Array([ + // (6.0+2.0i) / (2.0+2.0i) + 2.0, + -1.0, + // (-3.0+1.0i) / (1.0+1.0i) + -1.0, + 2.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-unit stride', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array([ + -1.0, // 0 + 3.0, // 0 + 0.0, + 0.0, + -2.0, // 1 + 14.0, // 1 + 0.0, + 0.0, + -4.0, // 2 + 44.0 // 2 + ]); + ybuf = new Complex128Array([ + 1.0, // 0 + 1.0, // 0 + 2.0, // 1 + 2.0, // 1 + 4.0, // 2 + 4.0 // 2 + ]); + x = vector( xbuf, 3, 2, 0 ); + y = vector( ybuf, 3, 1, 0 ); + + actual = zxdy( [ x, y ] ); + expected = new Complex128Array([ + // (-1.0+3.0i) / (1.0+1.0i) + 1.0, + 2.0, + // (-2.0+14.0i) / (2.0+2.0i) + 3.0, + 4.0, + // (-4.0+44.0i) / (4.0+4.0i) + 5.0, + 6.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output ndarray having a non-unit stride', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array([ + -1.0, // 0 + 3.0, // 0 + -2.0, // 1 + 14.0, // 1 + -4.0, // 2 + 44.0 // 2 + ]); + ybuf = new Complex128Array([ + 1.0, // 0 + 1.0, // 0 + 0.0, + 0.0, + 2.0, // 1 + 2.0, // 1 + 0.0, + 0.0, + 4.0, // 2 + 4.0 // 2 + ]); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 2, 0 ); + + actual = zxdy( [ x, y ] ); + expected = new Complex128Array([ + // (-1.0+3.0i) / (1.0+1.0i) + 1.0, + 2.0, + 0.0, + 0.0, + // (-2.0+14.0i) / (2.0+2.0i) + 3.0, + 4.0, + 0.0, + 0.0, + // (-4.0+44.0i) / (4.0+4.0i) + 5.0, + 6.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array([ + -4.0, // 2 + 44.0, // 2 + 0.0, + 0.0, + -2.0, // 1 + 14.0, // 1 + 0.0, + 0.0, + -1.0, // 0 + 3.0 // 0 + ]); + ybuf = new Complex128Array([ + 4.0, // 2 + 4.0, // 2 + 2.0, // 1 + 2.0, // 1 + 1.0, // 0 + 1.0 // 0 + ]); + x = vector( xbuf, 3, -2, 4 ); + y = vector( ybuf, 3, -1, 2 ); + + actual = zxdy( [ x, y ] ); + expected = new Complex128Array([ + // (-4.0+44.0i) / (4.0+4.0i) + 5.0, + 6.0, + // (-2.0+14.0i) / (2.0+2.0i) + 3.0, + 4.0, + // (-1.0+3.0i) / (1.0+1.0i) + 1.0, + 2.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array([ + 0.0, + 0.0, + 6.0, // 0 + 0.0, // 0 + 0.0, + 0.0, + 8.0, // 1 + 0.0, // 1 + 0.0, + 0.0, + 12.0, // 2 + 0.0 // 2 + ]); + ybuf = new Complex128Array([ + 0.0, + 0.0, + 2.0, // 0 + 0.0, // 0 + 4.0, // 1 + 0.0, // 1 + 8.0, // 2 + 0.0 // 2 + ]); + x = vector( xbuf, 3, 2, 1 ); + y = vector( ybuf, 3, 1, 1 ); + + actual = zxdy( [ x, y ] ); + + expected = new Complex128Array([ + 0.0, + 0.0, + // (6.0+0.0i) / (2.0+0.0i) + 3.0, + 0.0, + // (8.0+0.0i) / (4.0+0.0i) + 2.0, + 0.0, + // (12.0+0.0i) / (8.0+0.0i) + 1.5, + 0.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided empty ndarrays, the function returns the output ndarray unchanged', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array( [] ); + ybuf = new Complex128Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + + actual = zxdy( [ x, y ] ); + expected = new Complex128Array( [] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/README.md b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/README.md new file mode 100644 index 000000000000..9f9bc6dc1287 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/README.md @@ -0,0 +1,128 @@ + + +# zxmy + +> Multiply elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assign the results to the second ndarray. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \odot \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var zxmy = require( '@stdlib/blas/ext/base/ndarray/zxmy' ); +``` + +#### zxmy( arrays ) + +Multiplies elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assigns the results to the second ndarray. + +```javascript +var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); + +var x = new Complex128Vector( [ 1.0, 1.0, 2.0, -1.0, 3.0, 0.0 ] ); +var y = new Complex128Vector( [ 2.0, 1.0, 1.0, 2.0, 2.0, -2.0 ] ); + +zxmy( [ x, y ] ); +// y => [ [ 1.0, 3.0 ], [ 4.0, 3.0 ], [ 6.0, -6.0 ] ] +``` + +The function has the following parameters: + +- **arrays**: array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + +
+ + + +
+ +## Notes + +- The output ndarray is modified **in-place** (i.e., the output ndarray is **mutated**). + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var zxmy = require( '@stdlib/blas/ext/base/ndarray/zxmy' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = new Complex128Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( x ) ); + +var y = new Complex128Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( y ) ); + +zxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/benchmark/benchmark.js new file mode 100644 index 000000000000..11bc7c162b8a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/benchmark/benchmark.js @@ -0,0 +1,108 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zxmy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - ndarray length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -100.0, 100.0, { + 'dtype': 'float64' + }); + ybuf = uniform( len*2, -100.0, 100.0, { + 'dtype': 'float64' + }); + x = new Complex128Vector( xbuf.buffer ); + y = new Complex128Vector( ybuf.buffer ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = zxmy( [ x, y ] ); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( typeof out !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/docs/repl.txt new file mode 100644 index 000000000000..f067b48b107e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/docs/repl.txt @@ -0,0 +1,34 @@ + +{{alias}}( arrays ) + Multiplies elements of a one-dimensional double-precision complex floating- + point ndarray by the corresponding elements of a second one-dimensional + double-precision complex floating-point ndarray and assigns the results to + the second ndarray. + + The output ndarray is modified *in-place* (i.e., the output ndarray is + *mutated*). + + Parameters + ---------- + arrays: ArrayLikeObject + Array-like object containing the following ndarrays: + + - a one-dimensional input ndarray. + - a one-dimensional output ndarray. + + Returns + ------- + out: ndarray + Output ndarray. + + Examples + -------- + > var bufX = [ 1.0, 1.0, 2.0, -1.0, 3.0, 0.0 ]; + > var bufY = [ 2.0, 1.0, 1.0, 2.0, 2.0, -2.0 ]; + > var x = new {{alias:@stdlib/ndarray/vector/complex128}}( bufX ); + > var y = new {{alias:@stdlib/ndarray/vector/complex128}}( bufY ); + > {{alias}}( [ x, y ] ) + [ [ 1,3 ], [ 4,3 ], [ 6,-6 ] ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/docs/types/index.d.ts new file mode 100644 index 000000000000..278ba4f9dee7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/docs/types/index.d.ts @@ -0,0 +1,52 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { complex128ndarray } from '@stdlib/types/ndarray'; + +/** +* Multiplies elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param arrays - array-like object containing ndarrays +* @returns output ndarray +* +* @example +* var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +* +* var x = new Complex128Vector( [ 1.0, 1.0, 2.0, -1.0, 3.0, 0.0 ] ); +* var y = new Complex128Vector( [ 2.0, 1.0, 1.0, 2.0, 2.0, -2.0 ] ); +* +* var out = zxmy( [ x, y ] ); +* // returns [ [ 1.0, 3.0 ], [ 4.0, 3.0 ], [ 6.0, -6.0 ] ] +*/ +declare function zxmy( arrays: [ complex128ndarray, complex128ndarray ] ): complex128ndarray; + + +// EXPORTS // + +export = zxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/docs/types/test.ts new file mode 100644 index 000000000000..4c620e03b067 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/docs/types/test.ts @@ -0,0 +1,63 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import zxmy = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + const x = zeros( [ 10 ], { + 'dtype': 'complex128' + }); + const y = zeros( [ 10 ], { + 'dtype': 'complex128' + }); + + zxmy( [ x, y ] ); // $ExpectType complex128ndarray +} + +// The compiler throws an error if the function is provided a first argument which is not an array of ndarrays... +{ + zxmy( '10' ); // $ExpectError + zxmy( 5 ); // $ExpectError + zxmy( true ); // $ExpectError + zxmy( false ); // $ExpectError + zxmy( null ); // $ExpectError + zxmy( undefined ); // $ExpectError + zxmy( [] ); // $ExpectError + zxmy( {} ); // $ExpectError + zxmy( ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 10 ], { + 'dtype': 'complex128' + }); + const y = zeros( [ 10 ], { + 'dtype': 'complex128' + }); + + zxmy(); // $ExpectError + zxmy( [ x, y ], {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/examples/index.js new file mode 100644 index 000000000000..75fd69acb51a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/examples/index.js @@ -0,0 +1,37 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var zxmy = require( './../lib' ); + +var opts = { + 'dtype': 'float64' +}; + +var x = new Complex128Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( x ) ); + +var y = new Complex128Vector( discreteUniform( 20, -100, 100, opts ) ); +console.log( ndarray2array( y ) ); + +zxmy( [ x, y ] ); +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/lib/index.js new file mode 100644 index 000000000000..c63f366232ef --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/lib/index.js @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Multiply elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assign the results to the second ndarray. +* +* @module @stdlib/blas/ext/base/ndarray/zxmy +* +* @example +* var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +* var zxmy = require( '@stdlib/blas/ext/base/ndarray/zxmy' ); +* +* var x = new Complex128Vector( [ 1.0, 1.0, 2.0, -1.0, 3.0, 0.0 ] ); +* var y = new Complex128Vector( [ 2.0, 1.0, 1.0, 2.0, 2.0, -2.0 ] ); +* +* var out = zxmy( [ x, y ] ); +* // returns [ [ 1.0, 3.0 ], [ 4.0, 3.0 ], [ 6.0, -6.0 ] ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/lib/main.js new file mode 100644 index 000000000000..48f2e16ef9bf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/lib/main.js @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var numelDimension = require( '@stdlib/ndarray/base/numel-dimension' ); +var getStride = require( '@stdlib/ndarray/base/stride' ); +var getOffset = require( '@stdlib/ndarray/base/offset' ); +var getData = require( '@stdlib/ndarray/base/data-buffer' ); +var strided = require( '@stdlib/blas/ext/base/zxmy' ).ndarray; + + +// MAIN // + +/** +* Multiplies elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assigns the results to the second ndarray. +* +* ## Notes +* +* - The function expects the following ndarrays: +* +* - a one-dimensional input ndarray. +* - a one-dimensional output ndarray. +* +* @param {ArrayLikeObject} arrays - array-like object containing ndarrays +* @returns {ndarray} output ndarray +* +* @example +* var Complex128Vector = require( '@stdlib/ndarray/vector/complex128' ); +* +* var x = new Complex128Vector( [ 1.0, 1.0, 2.0, -1.0, 3.0, 0.0 ] ); +* var y = new Complex128Vector( [ 2.0, 1.0, 1.0, 2.0, 2.0, -2.0 ] ); +* +* var out = zxmy( [ x, y ] ); +* // returns [ [ 1.0, 3.0 ], [ 4.0, 3.0 ], [ 6.0, -6.0 ] ] +*/ +function zxmy( arrays ) { + var x; + var y; + + x = arrays[ 0 ]; + y = arrays[ 1 ]; + strided( numelDimension( x, 0 ), getData( x ), getStride( x, 0 ), getOffset( x ), getData( y ), getStride( y, 0 ), getOffset( y ) ); // eslint-disable-line max-len + return y; +} + + +// EXPORTS // + +module.exports = zxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/package.json b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/package.json new file mode 100644 index 000000000000..5c6d66f6c3e4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/package.json @@ -0,0 +1,73 @@ +{ + "name": "@stdlib/blas/ext/base/ndarray/zxmy", + "version": "0.0.0", + "description": "Multiply elements of a one-dimensional double-precision complex floating-point ndarray by the corresponding elements of a second one-dimensional double-precision complex floating-point ndarray and assign the results to the second ndarray.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "ext", + "zxmy", + "xmy", + "multiply", + "multiplication", + "strided", + "array", + "ndarray", + "complex128", + "complex", + "double", + "double-precision", + "float64" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/test/test.js new file mode 100644 index 000000000000..a203c056dcc4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/ndarray/zxmy/test/test.js @@ -0,0 +1,333 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var ndarray = require( '@stdlib/ndarray/base/ctor' ); +var getData = require( '@stdlib/ndarray/data-buffer' ); +var zxmy = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Returns a one-dimensional ndarray. +* +* @private +* @param {Complex128Array} buffer - underlying data buffer +* @param {NonNegativeInteger} length - number of indexed elements +* @param {integer} stride - stride length +* @param {NonNegativeInteger} offset - index offset +* @returns {ndarray} one-dimensional ndarray +*/ +function vector( buffer, length, stride, offset ) { + return new ndarray( 'complex128', buffer, [ length ], [ stride ], offset, 'row-major' ); +} + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 1', function test( t ) { + t.strictEqual( zxmy.length, 1, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by `y` and assigns the results to `y`', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array( [ 1.0, 1.0, 2.0, -1.0, 3.0, 0.0 ] ); + ybuf = new Complex128Array( [ 2.0, 1.0, 1.0, 2.0, 2.0, -2.0 ] ); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 1, 0 ); + + actual = zxmy( [ x, y ] ); + expected = new Complex128Array([ + // (1.0+1.0i) * (2.0+1.0i) + 1.0, + 3.0, + // (2.0-1.0i) * (1.0+2.0i) + 4.0, + 3.0, + // (3.0+0.0i) * (2.0-2.0i) + 6.0, + -6.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + + xbuf = new Complex128Array( [ 1.0, 0.0, 2.0, 1.0 ] ); + ybuf = new Complex128Array( [ 3.0, -1.0, 4.0, 2.0 ] ); + x = vector( xbuf, 2, 1, 0 ); + y = vector( ybuf, 2, 1, 0 ); + + actual = zxmy( [ x, y ] ); + expected = new Complex128Array([ + // (1.0+0.0i) * (3.0-1.0i) + 3.0, + -1.0, + // (2.0+1.0i) * (4.0+2.0i) + 6.0, + 8.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an input ndarray having a non-unit stride', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array([ + 1.0, // 0 + 1.0, // 0 + 0.0, + 0.0, + 2.0, // 1 + -1.0, // 1 + 0.0, + 0.0, + 3.0, // 2 + 0.0 // 2 + ]); + ybuf = new Complex128Array([ + 2.0, // 0 + 1.0, // 0 + 1.0, // 1 + 2.0, // 1 + 2.0, // 2 + -2.0 // 2 + ]); + x = vector( xbuf, 3, 2, 0 ); + y = vector( ybuf, 3, 1, 0 ); + + actual = zxmy( [ x, y ] ); + expected = new Complex128Array([ + // (1.0+1.0i) * (2.0+1.0i) + 1.0, + 3.0, + // (2.0-1.0i) * (1.0+2.0i) + 4.0, + 3.0, + // (3.0+0.0i) * (2.0-2.0i) + 6.0, + -6.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output ndarray having a non-unit stride', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array([ + 1.0, // 0 + 1.0, // 0 + 2.0, // 1 + -1.0, // 1 + 3.0, // 2 + 0.0 // 2 + ]); + ybuf = new Complex128Array([ + 2.0, // 0 + 1.0, // 0 + 0.0, + 0.0, + 1.0, // 1 + 2.0, // 1 + 0.0, + 0.0, + 2.0, // 2 + -2.0 // 2 + ]); + x = vector( xbuf, 3, 1, 0 ); + y = vector( ybuf, 3, 2, 0 ); + + actual = zxmy( [ x, y ] ); + expected = new Complex128Array([ + // (1.0+1.0i) * (2.0+1.0i) + 1.0, + 3.0, + 0.0, + 0.0, + // (2.0-1.0i) * (1.0+2.0i) + 4.0, + 3.0, + 0.0, + 0.0, + // (3.0+0.0i) * (2.0-2.0i) + 6.0, + -6.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports ndarrays having negative strides', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + -1.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + ybuf = new Complex128Array([ + 4.0, // 2 + 0.0, // 2 + 3.0, // 1 + -1.0, // 1 + 2.0, // 0 + 1.0 // 0 + ]); + x = vector( xbuf, 3, -2, 4 ); + y = vector( ybuf, 3, -1, 2 ); + + actual = zxmy( [ x, y ] ); + expected = new Complex128Array([ + // (1.0+2.0i) * (4.0+0.0i) + 4.0, + 8.0, + // (3.0-1.0i) * (3.0-1.0i) + 8.0, + -6.0, + // (5.0+6.0i) * (2.0+1.0i) + 4.0, + 17.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports ndarrays having non-zero offsets', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array([ + 0.0, + 0.0, + 1.0, // 0 + 0.0, // 0 + 0.0, + 0.0, + 2.0, // 1 + 0.0, // 1 + 0.0, + 0.0, + 3.0, // 2 + 0.0 // 2 + ]); + ybuf = new Complex128Array([ + 0.0, + 0.0, + 2.0, // 0 + 0.0, // 0 + 3.0, // 1 + 0.0, // 1 + 4.0, // 2 + 0.0 // 2 + ]); + x = vector( xbuf, 3, 2, 1 ); + y = vector( ybuf, 3, 1, 1 ); + + actual = zxmy( [ x, y ] ); + + expected = new Complex128Array([ + 0.0, + 0.0, + // (1.0+0.0i) * (2.0+0.0i) + 2.0, + 0.0, + // (2.0+0.0i) * (3.0+0.0i) + 6.0, + 0.0, + // (3.0+0.0i) * (4.0+0.0i) + 12.0, + 0.0 + ]); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided empty ndarrays, the function returns the output ndarray unchanged', function test( t ) { + var expected; + var actual; + var xbuf; + var ybuf; + var x; + var y; + + xbuf = new Complex128Array( [] ); + ybuf = new Complex128Array( [] ); + x = vector( xbuf, 0, 1, 0 ); + y = vector( ybuf, 0, 1, 0 ); + + actual = zxmy( [ x, y ] ); + expected = new Complex128Array( [] ); + t.strictEqual( actual, y, 'returns expected value' ); + t.strictEqual( isSameComplex128Array( getData( actual ), expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/scartesian-power/README.md b/lib/node_modules/@stdlib/blas/ext/base/scartesian-power/README.md index 46d3d6096702..9404b1498d02 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scartesian-power/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/scartesian-power/README.md @@ -110,8 +110,8 @@ The function has the following parameters: - **strideX**: stride length for `x`. - **offsetX**: starting index for `x`. - **out**: output [`Float32Array`][@stdlib/array/float32]. -- **strideOut1**: stride length of the first dimension of `out`. -- **strideOut2**: stride length of the second dimension of `out`. +- **strideOut1**: stride length for the first dimension of `out`. +- **strideOut2**: stride length for the second dimension of `out`. - **offsetOut**: starting index for `out`. While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to access only the last two elements: @@ -247,8 +247,8 @@ The function accepts the following arguments: - **strideX**: `[in] CBLAS_INT` stride length for `X`. - **offsetX**: `[in] CBLAS_INT` starting index for `X`. - **Out**: `[out] float*` output array. -- **strideOut1**: `[in] CBLAS_INT` stride length of the first dimension of `Out`. -- **strideOut2**: `[in] CBLAS_INT` stride length of the second dimension of `Out`. +- **strideOut1**: `[in] CBLAS_INT` stride length for the first dimension of `Out`. +- **strideOut2**: `[in] CBLAS_INT` stride length for the second dimension of `Out`. - **offsetOut**: `[in] CBLAS_INT` starting index for `Out`. ```c diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/README.md new file mode 100644 index 000000000000..195219162e7b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/README.md @@ -0,0 +1,294 @@ + + +# sfillEqual + +> Replace single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + +
+ +## Usage + +```javascript +var sfillEqual = require( '@stdlib/blas/ext/base/sfill-equal' ); +``` + +#### sfillEqual( N, searchElement, alpha, x, strideX ) + +Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] ); + +sfillEqual( x.length, 0.0, 5.0, x, 1 ); +// x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **alpha**: scalar constant. +- **x**: input [`Float32Array`][@stdlib/array/float32]. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 0.0, 1.0, 0.0, -5.0, 4.0, 0.0, -1.0, 0.0 ] ); + +sfillEqual( 4, 0.0, 5.0, x, 2 ); +// x => [ 5.0, 1.0, 5.0, -5.0, 4.0, 0.0, -1.0, 0.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +// Initial array: +var x0 = new Float32Array( [ 1.0, 0.0, 3.0, 0.0, -5.0, 0.0 ] ); + +// Create an offset view: +var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +sfillEqual( 3, 0.0, 5.0, x1, 2 ); +// x0 => [ 1.0, 5.0, 3.0, 5.0, -5.0, 5.0 ] +``` + +#### sfillEqual.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + +Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] ); + +sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +// x => [ -2.0, 5.0, 3.0, 5.0, 4.0, 5.0, -1.0, -3.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ -2.0, 0.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] ); + +sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, x.length-3 ); +// x => [ -2.0, 0.0, 3.0, 0.0, 4.0, 5.0, -1.0, -3.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. +- When comparing elements, both functions check for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct, and `-0` and `+0` are considered the same. To replace `NaN` values, use [`@stdlib/blas/ext/base/sfill-nan`][@stdlib/blas/ext/base/sfill-nan]. + +
+ + + +
+ +## Examples + + + +```javascript +var zeros = require( '@stdlib/array/zeros' ); +var sfillEqual = require( '@stdlib/blas/ext/base/sfill-equal' ); + +var x = zeros( 10, 'float32' ); +console.log( x ); + +sfillEqual( x.length, 0.0, 5.0, x, 1 ); +console.log( x ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/sfill_equal.h" +``` + +#### stdlib_strided_sfill_equal( N, searchElement, alpha, \*X, strideX ) + +Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + +```c +float x[] = { -2.0f, 0.0f, 3.0f, 0.0f, 4.0f, 0.0f, -1.0f, -3.0f }; + +stdlib_strided_sfill_equal( 8, 0.0f, 5.0f, x, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] float` search element. +- **alpha**: `[in] float` scalar constant. +- **X**: `[inout] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. + +```c +void stdlib_strided_sfill_equal( const CBLAS_INT N, const float searchElement, const float alpha, float *X, const CBLAS_INT strideX ); +``` + + + +#### stdlib_strided_sfill_equal_ndarray( N, searchElement, alpha, \*X, strideX, offsetX ) + + + +Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```c +float x[] = { -2.0f, 0.0f, 3.0f, 0.0f, 4.0f, 0.0f, -1.0f, -3.0f }; + +stdlib_strided_sfill_equal_ndarray( 8, 0.0f, 5.0f, x, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] float` search element. +- **alpha**: `[in] float` scalar constant. +- **X**: `[inout] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **offsetX**: `[in] CBLAS_INT` starting index. + +```c +void stdlib_strided_sfill_equal_ndarray( const CBLAS_INT N, const float searchElement, const float alpha, float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/sfill_equal.h" +#include + +int main( void ) { + // Create a strided array: + float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace equal elements: + stdlib_strided_sfill_equal( N, 5.0f, 10.0f, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %f\n", i, x[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..3df7a42b5544 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfillEqual = require( './../lib/sfill_equal.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillEqual( x.length, i, i+1, x, 1 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.native.js new file mode 100644 index 000000000000..1f2165d87721 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfillEqual = tryRequire( resolve( __dirname, './../lib/sfill_equal.native.js' ) ); +var opts = { + 'skip': ( sfillEqual instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillEqual( x.length, i, i+1, x, 1 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..ba2885fa5b3b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfillEqual = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..127f5e8799e0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfillEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfillEqual instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/sfill-equal/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..36a8b13f7f5c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/benchmark/c/benchmark.length.c @@ -0,0 +1,199 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_equal.h" +#include +#include +#include +#include +#include + +#define NAME "sfill-equal" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + float *x; + double t; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0f; + } else { + x[ i ] = ( rand_float()*200.0f ) - 100.0f; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_sfill_equal( len, (float)i, (float)(i+1), x, 1 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + float *x; + double t; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0f; + } else { + x[ i ] = ( rand_float()*200.0f ) - 100.0f; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_sfill_equal_ndarray( len, (float)i, (float)(i+1), x, 1, 0 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/docs/repl.txt new file mode 100644 index 000000000000..fecdecb540b6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/docs/repl.txt @@ -0,0 +1,104 @@ + +{{alias}}( N, searchElement, alpha, x, strideX ) + Replaces single-precision floating-point strided array elements equal to a + provided search element with a specified scalar constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + alpha: number + Scalar constant. + + x: Float32Array + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: Float32Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > {{alias}}( x.length, 0.0, 5.0, x, 1 ) + [ 5.0, 5.0, 1.0, 5.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > {{alias}}( 2, 0.0, 5.0, x, 2 ) + [ 5.0, 0.0, 1.0, 0.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 2, 0.0, 5.0, x1, 2 ) + [ 5.0, 1.0, 5.0 ] + > x0 + [ 0.0, 5.0, 1.0, 5.0 ] + + +{{alias}}.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + Replaces single-precision floating-point strided array elements equal to a + provided search element with a specified scalar constant using alternative + indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + alpha: number + Scalar constant. + + x: Float32Array + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: Float32Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > {{alias}}.ndarray( x.length, 0.0, 5.0, x, 1, 0 ) + [ 5.0, 5.0, 1.0, 5.0 ] + + // Using an index offset: + > var x = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > {{alias}}.ndarray( 2, 0.0, 5.0, x, 2, 1 ) + [ 0.0, 5.0, 1.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..77924a34f7dd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/docs/types/index.d.ts @@ -0,0 +1,98 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `sfillEqual`. +*/ +interface Routine { + /** + * Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * sfillEqual( x.length, 0.0, 5.0, x, 1 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + */ + ( N: number, searchElement: number, alpha: number, x: Float32Array, strideX: number ): Float32Array; + + /** + * Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); + * // x => [ 5.0, 5.0, 1.0, 5.0 ] + */ + ndarray( N: number, searchElement: number, alpha: number, x: Float32Array, strideX: number, offsetX: number ): Float32Array; +} + +/** +* Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* sfillEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +declare var sfillEqual: Routine; + + +// EXPORTS // + +export = sfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/docs/types/test.ts new file mode 100644 index 000000000000..dd9870c29ab1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/docs/types/test.ts @@ -0,0 +1,217 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import sfillEqual = require( './index' ); + + +// TESTS // + +// The function returns a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillEqual( x.length, 0.0, 5.0, x, 1 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillEqual( '10', 0.0, 5.0, x, 1 ); // $ExpectError + sfillEqual( true, 0.0, 5.0, x, 1 ); // $ExpectError + sfillEqual( false, 0.0, 5.0, x, 1 ); // $ExpectError + sfillEqual( null, 0.0, 5.0, x, 1 ); // $ExpectError + sfillEqual( undefined, 0.0, 5.0, x, 1 ); // $ExpectError + sfillEqual( [], 0.0, 5.0, x, 1 ); // $ExpectError + sfillEqual( {}, 0.0, 5.0, x, 1 ); // $ExpectError + sfillEqual( ( x: number ): number => x, 0.0, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillEqual( x.length, '10', 5.0, x, 1 ); // $ExpectError + sfillEqual( x.length, true, 5.0, x, 1 ); // $ExpectError + sfillEqual( x.length, false, 5.0, x, 1 ); // $ExpectError + sfillEqual( x.length, null, 5.0, x, 1 ); // $ExpectError + sfillEqual( x.length, undefined, 5.0, x, 1 ); // $ExpectError + sfillEqual( x.length, [], 5.0, x, 1 ); // $ExpectError + sfillEqual( x.length, {}, 5.0, x, 1 ); // $ExpectError + sfillEqual( x.length, ( x: number ): number => x, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillEqual( x.length, 0.0, '10', x, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, true, x, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, false, x, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, null, x, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, undefined, x, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, [], x, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, {}, x, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, ( x: number ): number => x, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillEqual( x.length, 0.0, 5.0, 10, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, '10', 1 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, true, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, false, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, null, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, undefined, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, [], 1 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, {}, 1 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillEqual( x.length, 0.0, 5.0, x, '10' ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, x, true ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, x, false ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, x, null ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, x, undefined ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, x, [] ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, x, {} ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + + sfillEqual(); // $ExpectError + sfillEqual( x.length ); // $ExpectError + sfillEqual( x.length, 0.0 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0 ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, x ); // $ExpectError + sfillEqual( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillEqual.ndarray( '10', 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( true, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( false, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( null, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( undefined, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( [], 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( {}, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( ( x: number ): number => x, 0.0, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillEqual.ndarray( x.length, '10', 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, true, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, false, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, null, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, undefined, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, [], 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, {}, 5.0, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, ( x: number ): number => x, x, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillEqual.ndarray( x.length, 0.0, '10', x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, true, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, false, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, null, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, undefined, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, [], x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, {}, x, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, ( x: number ): number => x, x, 1, 0 ); // $ExpectError +} + + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillEqual.ndarray( x.length, 0.0, 5.0, 10, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, '10', 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, true, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, false, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, null, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, undefined, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, [], 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, {}, 1, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillEqual.ndarray( x.length, 0.0, 5.0, x, '10', 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, true, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, false, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, null, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, undefined, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, [], 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, {}, 0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, ( x: number ): number => x, x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, '10' ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, true ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, false ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, null ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, undefined ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, [] ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + + sfillEqual.ndarray(); // $ExpectError + sfillEqual.ndarray( x.length ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, x ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1 ); // $ExpectError + sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/examples/c/example.c new file mode 100644 index 000000000000..0d79c7dedb4d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_equal.h" +#include + +int main( void ) { + // Create a strided array: + float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace equal elements: + stdlib_strided_sfill_equal( N, 5.0f, 10.0f, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %f\n", i, x[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/examples/index.js new file mode 100644 index 000000000000..a4c02fe31f55 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/examples/index.js @@ -0,0 +1,28 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var zeros = require( '@stdlib/array/zeros' ); +var sfillEqual = require( './../lib' ); + +var x = zeros( 10, 'float32' ); +console.log( x ); + +sfillEqual( x.length, 0.0, 5.0, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 5.0, 5.0, 1.0, 5.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var sfillEqual = require( '@stdlib/blas/ext/base/sfill-equal' ); +* +* var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* sfillEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var sfillEqual; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + sfillEqual = main; +} else { + sfillEqual = tmp; +} + + +// EXPORTS // + +module.exports = sfillEqual; + +// exports: { "ndarray": "sfillEqual.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/main.js new file mode 100644 index 000000000000..ee10e83f8239 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sfillEqual = require( './sfill_equal.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( sfillEqual, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/native.js new file mode 100644 index 000000000000..13a92c61080b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sfillEqual = require( './sfill_equal.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( sfillEqual, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/ndarray.js new file mode 100644 index 000000000000..0fafe4c0120a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/ndarray.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @param {integer} offsetX - starting index +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* sfillEqual( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function sfillEqual( N, searchElement, alpha, x, strideX, offsetX ) { + var ix; + var i; + + if ( N <= 0 ) { + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] === searchElement ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = sfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/ndarray.native.js new file mode 100644 index 000000000000..2098994a0a32 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/ndarray.native.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @param {integer} offsetX - starting index +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* sfillEqual( x.length, 0.0, 5.0, x, 1, 0 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function sfillEqual( N, searchElement, alpha, x, strideX, offsetX ) { + addon.ndarray( N, searchElement, alpha, x, strideX, offsetX ); + return x; +} + + +// EXPORTS // + +module.exports = sfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/sfill_equal.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/sfill_equal.js new file mode 100644 index 000000000000..896e6298b9ee --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/sfill_equal.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* sfillEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function sfillEqual( N, searchElement, alpha, x, strideX ) { + return ndarray( N, searchElement, alpha, x, strideX, stride2offset( N, strideX ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = sfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/sfill_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/sfill_equal.native.js new file mode 100644 index 000000000000..00e2a568046a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/lib/sfill_equal.native.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* sfillEqual( x.length, 0.0, 5.0, x, 1 ); +* // x => [ 5.0, 5.0, 1.0, 5.0 ] +*/ +function sfillEqual( N, searchElement, alpha, x, strideX ) { + addon( N, searchElement, alpha, x, strideX ); + return x; +} + + +// EXPORTS // + +module.exports = sfillEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/manifest.json new file mode 100644 index 000000000000..9184cfd03771 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/manifest.json @@ -0,0 +1,79 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-float", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float32array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/package.json new file mode 100644 index 000000000000..d50e342c03c8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/blas/ext/base/sfill-equal", + "version": "0.0.0", + "description": "Replace single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "equal", + "same", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "float32", + "single", + "float32array" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/src/addon.c new file mode 100644 index 000000000000..b1aa44f87999 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/src/addon.c @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_float.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float32array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_FLOAT( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_FLOAT( env, alpha, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 3 ); + API_SUFFIX(stdlib_strided_sfill_equal)( N, searchElement, alpha, X, strideX ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_FLOAT( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_FLOAT( env, alpha, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 3 ); + API_SUFFIX(stdlib_strided_sfill_equal_ndarray)( N, searchElement, alpha, X, strideX, offsetX ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/src/main.c new file mode 100644 index 000000000000..55dcce268076 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/src/main.c @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/strided/base/stride2offset.h" + +/** +* Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant. +* +* @param N number of indexed elements +* @param searchElement search element +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +*/ +void API_SUFFIX(stdlib_strided_sfill_equal)( const CBLAS_INT N, const float searchElement, const float alpha, float *X, const CBLAS_INT strideX ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + API_SUFFIX(stdlib_strided_sfill_equal_ndarray)( N, searchElement, alpha, X, strideX, ox ); +} + +/** +* Replaces single-precision floating-point strided array elements equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param N number of indexed elements +* @param searchElement search element +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +* @param offsetX starting index +*/ +void API_SUFFIX(stdlib_strided_sfill_equal_ndarray)( const CBLAS_INT N, const float searchElement, const float alpha, float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { + CBLAS_INT ix; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( X[ ix ] == searchElement ) { + X[ ix ] = alpha; + } + ix += strideX; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.js new file mode 100644 index 000000000000..d5c37d04bea2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var sfillEqual = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof sfillEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var sfillEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfillEqual, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var sfillEqual; + var main; + + main = require( './../lib/sfill_equal.js' ); + + sfillEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfillEqual, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.ndarray.js new file mode 100644 index 000000000000..82ecaab0a3fa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.ndarray.js @@ -0,0 +1,179 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfillEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( sfillEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces values equal to the provided `searchElement` in a strided array', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, + 2.0, + 1.0, + 5.0, + -1.0, + 1.0, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 5.0, + 2.0, + 5.0, + 5.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]); + + sfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0 ] ); + expected = new Float32Array( [ 5.0, 2.0 ] ); + + sfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, 1.0, 3.0, 1.0, 5.0 ] ); + out = sfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, -4.0, 1.0 ] ); + expected = new Float32Array( [ 1.0, -4.0, 1.0 ] ); + + out = sfillEqual( 0, 1.0, 5.0, x, 1, 0 ); + t.strictEqual( out, x, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 2 + ]); + expected = new Float32Array([ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]); + + sfillEqual( 3, 1.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 0 + ]); + expected = new Float32Array([ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]); + + sfillEqual( 3, 1.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, + 1.0, // 0 + 3.0, + 1.0, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float32Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 5.0, + 6.0 // 2 + ]); + + sfillEqual( 3, 1.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.ndarray.native.js new file mode 100644 index 000000000000..fcdfcdb0a17e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.ndarray.native.js @@ -0,0 +1,188 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfillEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfillEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( sfillEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces values equal to the provided `searchElement` in a strided array', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, + 2.0, + 1.0, + 5.0, + -1.0, + 1.0, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 5.0, + 2.0, + 5.0, + 5.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]); + + sfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0 ] ); + expected = new Float32Array( [ 5.0, 2.0 ] ); + + sfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, 1.0, 3.0, 1.0, 5.0 ] ); + out = sfillEqual( x.length, 1.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, -4.0, 1.0 ] ); + expected = new Float32Array( [ 1.0, -4.0, 1.0 ] ); + + out = sfillEqual( 0, 1.0, 5.0, x, 1, 0 ); + t.strictEqual( out, x, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 2 + ]); + expected = new Float32Array([ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]); + + sfillEqual( 3, 1.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 0 + ]); + expected = new Float32Array([ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]); + + sfillEqual( 3, 1.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an offset parameter', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, + 1.0, // 0 + 3.0, + 1.0, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float32Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 5.0, + 6.0 // 2 + ]); + + sfillEqual( 3, 1.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.sfill_equal.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.sfill_equal.js new file mode 100644 index 000000000000..2d705e50b4e2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.sfill_equal.js @@ -0,0 +1,183 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfillEqual = require( './../lib/sfill_equal.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( sfillEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces values equal to the provided `searchElement` in a strided array', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, + 2.0, + 1.0, + 5.0, + -1.0, + 1.0, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 5.0, + 2.0, + 5.0, + 5.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]); + + sfillEqual( x.length, 1.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0 ] ); + expected = new Float32Array( [ 5.0, 2.0 ] ); + + sfillEqual( x.length, 1.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float32Array( [ 0.0, 1.0, 3.0, 1.0, 5.0 ] ); + out = sfillEqual( x.length, 1.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, -4.0, 1.0 ] ); + expected = new Float32Array( [ 1.0, -4.0, 1.0 ] ); + + out = sfillEqual( 0, 1.0, 5.0, x, 1 ); + t.strictEqual( out, x, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 2 + ]); + expected = new Float32Array([ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]); + + sfillEqual( 3, 1.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 0 + ]); + expected = new Float32Array([ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]); + + sfillEqual( 3, 1.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float32Array([ + 1.0, + 1.0, // 0 + 3.0, + 1.0, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float32Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 5.0, + 6.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + sfillEqual( 3, 1.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.sfill_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.sfill_equal.native.js new file mode 100644 index 000000000000..ad4f8d7e95d5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-equal/test/test.sfill_equal.native.js @@ -0,0 +1,192 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfillEqual = tryRequire( resolve( __dirname, './../lib/sfill_equal.native.js' ) ); +var opts = { + 'skip': ( sfillEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( sfillEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces values equal to the provided `searchElement` in a strided array', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, + 2.0, + 1.0, + 5.0, + -1.0, + 1.0, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 5.0, + 2.0, + 5.0, + 5.0, + -1.0, + 5.0, + -5.0, + 6.0 + ]); + + sfillEqual( x.length, 1.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0 ] ); + expected = new Float32Array( [ 5.0, 2.0 ] ); + + sfillEqual( x.length, 1.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float32Array( [ 0.0, 1.0, 3.0, 1.0, 5.0 ] ); + out = sfillEqual( x.length, 1.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, -4.0, 1.0 ] ); + expected = new Float32Array( [ 1.0, -4.0, 1.0 ] ); + + out = sfillEqual( 0, 1.0, 5.0, x, 1 ); + t.strictEqual( out, x, 'returns expected value' ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 2 + ]); + expected = new Float32Array([ + 5.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 2 + ]); + + sfillEqual( 3, 1.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 1.0 // 0 + ]); + expected = new Float32Array([ + 5.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 5.0 // 0 + ]); + + sfillEqual( 3, 1.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float32Array([ + 1.0, + 1.0, // 0 + 3.0, + 1.0, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float32Array([ + 1.0, + 5.0, // 0 + 3.0, + 5.0, // 1 + 5.0, + 6.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + sfillEqual( 3, 1.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/README.md b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/README.md new file mode 100644 index 000000000000..4db503b933bb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/README.md @@ -0,0 +1,284 @@ + + +# sfillNaN + +> Replace single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + +
+ +## Usage + +```javascript +var sfillNaN = require( '@stdlib/blas/ext/base/sfill-nan' ); +``` + +#### sfillNaN( N, alpha, x, strideX ) + +Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + +sfillNaN( x.length, 0.0, x, 1 ); +// x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **alpha**: scalar constant. +- **x**: input [`Float32Array`][@stdlib/array/float32]. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ NaN, 1.0, NaN, -5.0, NaN, 0.0, -1.0, -3.0 ] ); + +sfillNaN( 4, 0.0, x, 2 ); +// x => [ 0.0, 1.0, 0.0, -5.0, 0.0, 0.0, -1.0, -3.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +// Initial array: +var x0 = new Float32Array( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + +// Create an offset view: +var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +sfillNaN( 3, 0.0, x1, 2 ); +// x0 => [ 1.0, 0.0, 3.0, 0.0, 5.0, -6.0 ] +``` + +#### sfillNaN.ndarray( N, alpha, x, strideX, offsetX ) + +Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + +sfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); +// x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + +sfillNaN.ndarray( 3, 0.0, x, 1, x.length-3 ); +// x => [ 1.0, NaN, 3.0, 0.0, 5.0, -6.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var nans = require( '@stdlib/array/nans' ); +var sfillNaN = require( '@stdlib/blas/ext/base/sfill-nan' ); + +var x = nans( 10, 'float32' ); +console.log( x ); + +sfillNaN( x.length, 0.0, x, 1 ); +console.log( x ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/sfill_nan.h" +``` + +#### stdlib_strided_sfill_nan( N, alpha, \*X, strideX ) + +Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + +```c +float x[] = { 1.0f, 0.0f/0.0f, 3.0f, 0.0f/0.0f }; + +stdlib_strided_sfill_nan( 4, 0.0f, x, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] float` scalar constant. +- **X**: `[inout] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. + +```c +void stdlib_strided_sfill_nan( const CBLAS_INT N, const float alpha, float *X, const CBLAS_INT strideX ); +``` + +#### stdlib_strided_sfill_nan_ndarray( N, alpha, \*X, strideX, offsetX ) + +Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. + +```c +float x[] = { 1.0f, 0.0f/0.0f, 3.0f, 0.0f/0.0f }; + +stdlib_strided_sfill_nan_ndarray( 4, 0.0f, x, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] float` scalar constant. +- **X**: `[inout] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **offsetX**: `[in] CBLAS_INT` starting index. + +```c +void stdlib_strided_sfill_nan_ndarray( const CBLAS_INT N, const float alpha, float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/sfill_nan.h" +#include + +int main( void ) { + // Create a strided array: + float x[] = { 1.0f, 0.0f/0.0f, 3.0f, 0.0f/0.0f, 5.0f, -6.0f, 7.0f, 0.0f/0.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace elements equal to `NaN`: + stdlib_strided_sfill_nan( N, 0.0f, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %f\n", i, x[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.js new file mode 100644 index 000000000000..c1d1888614d9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfillNaN = require( './../lib/sfill_nan.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillNaN( x.length, 0.0, x, 1 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.native.js new file mode 100644 index 000000000000..4a3f5e3e0498 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfillNaN = tryRequire( resolve( __dirname, './../lib/sfill_nan.native.js' ) ); +var opts = { + 'skip': ( sfillNaN instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillNaN( x.length, 0.0, x, 1 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..2523319913a3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.ndarray.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfillNaN = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillNaN( x.length, 0.0, x, 1, 0 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..b0d05e053179 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfillNaN = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfillNaN instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = NaN; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillNaN( x.length, 0.0, x, 1, 0 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/sfill-nan/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..8940faee39d3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/benchmark/c/benchmark.length.c @@ -0,0 +1,199 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_nan.h" +#include +#include +#include +#include +#include + +#define NAME "sfill-nan" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + float *x; + double t; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0f / 0.0f; + } else { + x[ i ] = ( rand_float()*200.0f ) - 100.0f; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_sfill_nan( len, 0.0f, x, 1 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + float *x; + double t; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0f / 0.0f; + } else { + x[ i ] = ( rand_float()*200.0f ) - 100.0f; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_sfill_nan_ndarray( len, 0.0f, x, 1, 0 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/docs/repl.txt new file mode 100644 index 000000000000..7366d753d23f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/docs/repl.txt @@ -0,0 +1,97 @@ + +{{alias}}( N, alpha, x, strideX ) + Replaces single-precision floating-point strided array elements equal to + `NaN` with a specified scalar constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: number + Scalar constant. + + x: Float32Array + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: Float32Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ NaN, 1.0, 3.0, NaN ] ); + > {{alias}}( x.length, 0.0, x, 1 ) + [ 0.0, 1.0, 3.0, 0.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float32}}( [ NaN, 1.0, NaN, -5.0, NaN ] ); + > {{alias}}( 3, 0.0, x, 2 ) + [ 0.0, 1.0, 0.0, -5.0, 0.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float32}}( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 2, 0.0, x1, 2 ) + [ 0.0, 3.0, 0.0, 5.0, -6.0 ] + > x0 + [ 1.0, 0.0, 3.0, 0.0, 5.0, -6.0 ] + + +{{alias}}.ndarray( N, alpha, x, strideX, offsetX ) + Replaces single-precision floating-point strided array elements equal to + `NaN` with a specified scalar constant using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: number + Scalar constant. + + x: Float32Array + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: Float32Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ NaN, 1.0, 3.0, NaN ] ); + > {{alias}}.ndarray( x.length, 0.0, x, 1, 0 ) + [ 0.0, 1.0, 3.0, 0.0 ] + + // Using an index offset: + > x = new {{alias:@stdlib/array/float32}}( [ 1.0, NaN, 3.0, NaN, 5.0, -6.0 ] ); + > {{alias}}.ndarray( 3, 0.0, x, 2, 1 ) + [ 1.0, 0.0, 3.0, 0.0, 5.0, -6.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/docs/types/index.d.ts new file mode 100644 index 000000000000..fffef642ffaa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/docs/types/index.d.ts @@ -0,0 +1,95 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `sfillNaN`. +*/ +interface Routine { + /** + * Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + * + * sfillNaN( x.length, 0.0, x, 1 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + */ + ( N: number, alpha: number, x: Float32Array, strideX: number ): Float32Array; + + /** + * Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); + * + * sfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); + * // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] + */ + ndarray( N: number, alpha: number, x: Float32Array, strideX: number, offsetX: number ): Float32Array; +} + +/** +* Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param N - number of indexed elements +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); +* +* sfillNaN( x.length, 0.0, x, 1 ); +* // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ NaN, 1.0, 3.0, NaN, 4.0, 0.0, -1.0, -3.0 ] ); +* +* sfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); +* // x => [ 0.0, 1.0, 3.0, 0.0, 4.0, 0.0, -1.0, -3.0 ] +*/ +declare var sfillNaN: Routine; + + +// EXPORTS // + +export = sfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/docs/types/test.ts new file mode 100644 index 000000000000..8afa2f2ea9cd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/docs/types/test.ts @@ -0,0 +1,187 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import sfillNaN = require( './index' ); + + +// TESTS // + +// The function returns a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillNaN( x.length, 0.0, x, 1 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNaN( '10', 0.0, x, 1 ); // $ExpectError + sfillNaN( true, 0.0, x, 1 ); // $ExpectError + sfillNaN( false, 0.0, x, 1 ); // $ExpectError + sfillNaN( null, 0.0, x, 1 ); // $ExpectError + sfillNaN( undefined, 0.0, x, 1 ); // $ExpectError + sfillNaN( [], 0.0, x, 1 ); // $ExpectError + sfillNaN( {}, 0.0, x, 1 ); // $ExpectError + sfillNaN( ( x: number ): number => x, 0.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNaN( x.length, '10', x, 1 ); // $ExpectError + sfillNaN( x.length, true, x, 1 ); // $ExpectError + sfillNaN( x.length, false, x, 1 ); // $ExpectError + sfillNaN( x.length, null, x, 1 ); // $ExpectError + sfillNaN( x.length, undefined, x, 1 ); // $ExpectError + sfillNaN( x.length, [], x, 1 ); // $ExpectError + sfillNaN( x.length, {}, x, 1 ); // $ExpectError + sfillNaN( x.length, ( x: number ): number => x, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillNaN( x.length, 0.0, 10, 1 ); // $ExpectError + sfillNaN( x.length, 0.0, '10', 1 ); // $ExpectError + sfillNaN( x.length, 0.0, true, 1 ); // $ExpectError + sfillNaN( x.length, 0.0, false, 1 ); // $ExpectError + sfillNaN( x.length, 0.0, null, 1 ); // $ExpectError + sfillNaN( x.length, 0.0, undefined, 1 ); // $ExpectError + sfillNaN( x.length, 0.0, [], 1 ); // $ExpectError + sfillNaN( x.length, 0.0, {}, 1 ); // $ExpectError + sfillNaN( x.length, 0.0, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNaN( x.length, 0.0, x, '10' ); // $ExpectError + sfillNaN( x.length, 0.0, x, true ); // $ExpectError + sfillNaN( x.length, 0.0, x, false ); // $ExpectError + sfillNaN( x.length, 0.0, x, null ); // $ExpectError + sfillNaN( x.length, 0.0, x, undefined ); // $ExpectError + sfillNaN( x.length, 0.0, x, [] ); // $ExpectError + sfillNaN( x.length, 0.0, x, {} ); // $ExpectError + sfillNaN( x.length, 0.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + + sfillNaN(); // $ExpectError + sfillNaN( x.length ); // $ExpectError + sfillNaN( x.length, 0.0 ); // $ExpectError + sfillNaN( x.length, 0.0, x ); // $ExpectError + sfillNaN( x.length, 0.0, x, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNaN.ndarray( '10', 0.0, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( true, 0.0, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( false, 0.0, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( null, 0.0, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( undefined, 0.0, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( [], 0.0, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( {}, 0.0, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( ( x: number ): number => x, 0.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNaN.ndarray( x.length, '10', x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, true, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, false, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, null, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, undefined, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, [], x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, {}, x, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, ( x: number ): number => x, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillNaN.ndarray( x.length, 0.0, 10, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, '10', 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, true, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, false, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, null, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, undefined, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, [], 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, {}, 1, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNaN.ndarray( x.length, 0.0, x, '10', 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, true, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, false, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, null, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, undefined, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, [], 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, {}, 0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNaN.ndarray( x.length, 0.0, x, 1, '10' ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, 1, true ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, 1, false ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, 1, null ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, 1, undefined ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, 1, [] ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, 1, {} ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + + sfillNaN.ndarray(); // $ExpectError + sfillNaN.ndarray( x.length ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, 1 ); // $ExpectError + sfillNaN.ndarray( x.length, 0.0, x, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/examples/c/example.c new file mode 100644 index 000000000000..18fe1ccedc3f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_nan.h" +#include + +int main( void ) { + // Create a strided array: + float x[] = { 1.0f, 0.0f/0.0f, 3.0f, 0.0f/0.0f, 5.0f, -6.0f, 7.0f, 0.0f/0.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace elements equal to `NaN`: + stdlib_strided_sfill_nan( N, 0.0f, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %f\n", i, x[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/examples/index.js new file mode 100644 index 000000000000..6e7dc8a972ab --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/examples/index.js @@ -0,0 +1,28 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var nans = require( '@stdlib/array/nans' ); +var sfillNaN = require( './../lib' ); + +var x = nans( 10, 'float32' ); +console.log( x ); + +sfillNaN( x.length, 0.0, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 0.0, 0.0, 1.0, 0.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var sfillNaN = require( '@stdlib/blas/ext/base/sfill-nan' ); +* +* var x = new Float32Array( [ NaN, NaN, 1.0, NaN ] ); +* +* sfillNaN.ndarray( x.length, 0.0, x, 1, 0 ); +* // x => [ 0.0, 0.0, 1.0, 0.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var sfillNaN; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + sfillNaN = main; +} else { + sfillNaN = tmp; +} + + +// EXPORTS // + +module.exports = sfillNaN; + +// exports: { "ndarray": "sfillNaN.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/main.js new file mode 100644 index 000000000000..f04cefcac3d5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sfillNaN = require( './sfill_nan.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( sfillNaN, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/native.js new file mode 100644 index 000000000000..d656b08bf673 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sfillNaN = require( './sfill_nan.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( sfillNaN, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/ndarray.js new file mode 100644 index 000000000000..a0e614b6df0d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/ndarray.js @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ NaN, -2.0, 3.0, NaN, 5.0, -6.0 ] ); +* +* sfillNaN( 6, 0.0, x, 1, 0 ); +* // x => [ 0.0, -2.0, 3.0, 0.0, 5.0, -6.0 ] +*/ +function sfillNaN( N, alpha, x, strideX, offsetX ) { + var ix; + var i; + + if ( N <= 0 ) { + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( isnanf( x[ ix ] ) ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = sfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/ndarray.native.js new file mode 100644 index 000000000000..2749c82a36c7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/ndarray.native.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ NaN, -2.0, 3.0, NaN, 5.0, -6.0 ] ); +* +* sfillNaN( 6, 0.0, x, 1, 0 ); +* // x => [ 0.0, -2.0, 3.0, 0.0, 5.0, -6.0 ] +*/ +function sfillNaN( N, alpha, x, strideX, offsetX ) { + addon.ndarray( N, alpha, x, strideX, offsetX ); + return x; +} + + +// EXPORTS // + +module.exports = sfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/sfill_nan.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/sfill_nan.js new file mode 100644 index 000000000000..25492e03712e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/sfill_nan.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ NaN, NaN, 1.0, NaN ] ); +* +* sfillNaN( x.length, 0.0, x, 1 ); +* // x => [ 0.0, 0.0, 1.0, 0.0 ] +*/ +function sfillNaN( N, alpha, x, strideX ) { + return ndarray( N, alpha, x, strideX, stride2offset( N, strideX ) ); +} + + +// EXPORTS // + +module.exports = sfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/sfill_nan.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/sfill_nan.native.js new file mode 100644 index 000000000000..20cb5d9353f7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/lib/sfill_nan.native.js @@ -0,0 +1,53 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ NaN, NaN, 1.0, NaN ] ); +* +* sfillNaN( x.length, 0.0, x, 1 ); +* // x => [ 0.0, 0.0, 1.0, 0.0 ] +*/ +function sfillNaN( N, alpha, x, strideX ) { + addon( N, alpha, x, strideX ); + return x; +} + + +// EXPORTS // + +module.exports = sfillNaN; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/manifest.json new file mode 100644 index 000000000000..fea47805d59c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/manifest.json @@ -0,0 +1,82 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/math/base/assert/is-nanf", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-float", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float32array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/math/base/assert/is-nanf" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/math/base/assert/is-nanf" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/package.json b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/package.json new file mode 100644 index 000000000000..11d432e28504 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/blas/ext/base/sfill-nan", + "version": "0.0.0", + "description": "Replace single-precision floating-point strided array elements equal to NaN with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "nan", + "not-a-number", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "float32", + "single", + "float32array" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/src/addon.c new file mode 100644 index 000000000000..fc02c3da50f2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/src/addon.c @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_nan.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_float.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float32array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 4 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_FLOAT( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); + API_SUFFIX(stdlib_strided_sfill_nan)( N, alpha, X, strideX ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_FLOAT( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); + API_SUFFIX(stdlib_strided_sfill_nan_ndarray)( N, alpha, X, strideX, offsetX ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/src/main.c new file mode 100644 index 000000000000..a2089996434f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/src/main.c @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_nan.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/math/base/assert/is_nanf.h" + +/** +* Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +*/ +void API_SUFFIX(stdlib_strided_sfill_nan)( const CBLAS_INT N, const float alpha, float *X, const CBLAS_INT strideX ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + API_SUFFIX(stdlib_strided_sfill_nan_ndarray)( N, alpha, X, strideX, ox ); +} + +/** +* Replaces single-precision floating-point strided array elements equal to `NaN` with a specified scalar constant using alternative indexing semantics. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +* @param offsetX starting index +*/ +void API_SUFFIX(stdlib_strided_sfill_nan_ndarray)( const CBLAS_INT N, const float alpha, float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { + CBLAS_INT ix; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( stdlib_base_is_nanf( X[ ix ] ) ) { + X[ ix ] = alpha; + } + ix += strideX; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.js new file mode 100644 index 000000000000..33038d3b0363 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var sfillNaN = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof sfillNaN.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var sfillNaN = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfillNaN, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var sfillNaN; + var main; + + main = require( './../lib/sfill_nan.js' ); + + sfillNaN = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfillNaN, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.ndarray.js new file mode 100644 index 000000000000..935455720f15 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.ndarray.js @@ -0,0 +1,181 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfillNaN = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( sfillNaN.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + + sfillNaN( x.length, 0.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ NaN, 2.0 ] ); + expected = new Float32Array( [ 5.0, 2.0 ] ); + + sfillNaN( x.length, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, NaN, 3.0, NaN, 5.0 ] ); + out = sfillNaN( x.length, 0.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var x; + + x = new Float32Array( [ NaN, -4.0, 1.0 ] ); + + sfillNaN( 0, 0.0, x, 1, 0 ); + t.ok( isnanf( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = new Float32Array( [ NaN, -4.0, 1.0 ] ); + sfillNaN( -4, 0.0, x, 1, 0 ); + t.ok( isnanf( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]); + expected = new Float32Array([ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]); + + sfillNaN( 3, 0.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]); + expected = new Float32Array([ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]); + + sfillNaN( 3, 0.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float32Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]); + + sfillNaN( 3, 0.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.ndarray.native.js new file mode 100644 index 000000000000..9a0394b944f6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.ndarray.native.js @@ -0,0 +1,190 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfillNaN = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfillNaN instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( sfillNaN.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + + sfillNaN( x.length, 0.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ NaN, 2.0 ] ); + expected = new Float32Array( [ 5.0, 2.0 ] ); + + sfillNaN( x.length, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, NaN, 3.0, NaN, 5.0 ] ); + out = sfillNaN( x.length, 0.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var x; + + x = new Float32Array( [ NaN, -4.0, 1.0 ] ); + + sfillNaN( 0, 0.0, x, 1, 0 ); + t.ok( isnanf( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = new Float32Array( [ NaN, -4.0, 1.0 ] ); + sfillNaN( -4, 0.0, x, 1, 0 ); + t.ok( isnanf( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]); + expected = new Float32Array([ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]); + + sfillNaN( 3, 0.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]); + expected = new Float32Array([ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]); + + sfillNaN( 3, 0.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float32Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]); + + sfillNaN( 3, 0.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.sfill_nan.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.sfill_nan.js new file mode 100644 index 000000000000..efebd51ec8ca --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.sfill_nan.js @@ -0,0 +1,184 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfillNaN = require( './../lib/sfill_nan.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( sfillNaN.length, 4, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + + sfillNaN( x.length, 0.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ NaN, 2.0 ] ); + expected = new Float32Array( [ 5.0, 2.0 ] ); + + sfillNaN( x.length, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, NaN, 3.0, NaN, 5.0 ] ); + out = sfillNaN( x.length, 0.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var x; + + x = new Float32Array( [ NaN, -4.0, 1.0 ] ); + + sfillNaN( 0, 0.0, x, 1 ); + t.ok( isnanf( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = new Float32Array( [ NaN, -4.0, 1.0 ] ); + sfillNaN( -4, 0.0, x, 1 ); + t.ok( isnanf( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]); + expected = new Float32Array([ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]); + + sfillNaN( 3, 0.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]); + expected = new Float32Array([ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]); + + sfillNaN( 3, 0.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float32Array([ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float32Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + sfillNaN( 3, 0.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.sfill_nan.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.sfill_nan.native.js new file mode 100644 index 000000000000..5240a82ac2ad --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-nan/test/test.sfill_nan.native.js @@ -0,0 +1,193 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfillNaN = tryRequire( resolve( __dirname, './../lib/sfill_nan.native.js' ) ); +var opts = { + 'skip': ( sfillNaN instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNaN, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', opts, function test( t ) { + t.strictEqual( sfillNaN.length, 4, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces `NaN` values in a strided array', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, + 2.0, + NaN, + 5.0, + -1.0, + NaN, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 0.0, + 2.0, + 0.0, + 5.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + + sfillNaN( x.length, 0.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ NaN, 2.0 ] ); + expected = new Float32Array( [ 5.0, 2.0 ] ); + + sfillNaN( x.length, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, NaN, 3.0, NaN, 5.0 ] ); + out = sfillNaN( x.length, 0.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var x; + + x = new Float32Array( [ NaN, -4.0, 1.0 ] ); + + sfillNaN( 0, 0.0, x, 1 ); + t.ok( isnanf( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + x = new Float32Array( [ NaN, -4.0, 1.0 ] ); + sfillNaN( -4, 0.0, x, 1 ); + t.ok( isnanf( x[ 0 ] ), 'returns expected value' ); + t.strictEqual( x[ 1 ], -4.0, 'returns expected value' ); + t.strictEqual( x[ 2 ], 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, // 0 + -3.0, + -5.0, // 1 + 7.0, + NaN // 2 + ]); + expected = new Float32Array([ + 0.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 2 + ]); + + sfillNaN( 3, 0.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + NaN, // 2 + -3.0, + -5.0, // 1 + 7.0, + NaN // 0 + ]); + expected = new Float32Array([ + 0.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 0.0 // 0 + ]); + + sfillNaN( 3, 0.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float32Array([ + 1.0, + NaN, // 0 + 3.0, + NaN, // 1 + 5.0, + 6.0 // 2 + ]); + expected = new Float32Array([ + 1.0, + 0.0, // 0 + 3.0, + 0.0, // 1 + 5.0, + 6.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + sfillNaN( 3, 0.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/README.md new file mode 100644 index 000000000000..966ef0bfa67d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/README.md @@ -0,0 +1,294 @@ + + +# sfillNotEqual + +> Replace single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + +
+ +## Usage + +```javascript +var sfillNotEqual = require( '@stdlib/blas/ext/base/sfill-not-equal' ); +``` + +#### sfillNotEqual( N, searchElement, alpha, x, strideX ) + +Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); +// x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **searchElement**: search element. +- **alpha**: scalar constant. +- **x**: input [`Float32Array`][@stdlib/array/float32]. +- **strideX**: stride length. + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to iterate over every other element: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +sfillNotEqual( 3, 0.0, 5.0, x, 2 ); +// x => [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +// Initial array: +var x0 = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +// Create an offset view: +var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Iterate over every other element: +sfillNotEqual( 3, 0.0, 5.0, x1, 2 ); +// x0 => [ 0.0, 5.0, 3.0, 0.0, 4.0, 5.0 ] +``` + +#### sfillNotEqual.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + +Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); +// x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + +sfillNotEqual.ndarray( 3, 0.0, 5.0, x, 1, x.length-3 ); +// x => [ 0.0, -2.0, 3.0, 0.0, 5.0, 5.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `x` unchanged. +- When comparing elements, both functions check for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct (i.e., as `NaN !== NaN` always evaluates to `true`, `NaN` elements are always replaced), and `-0` and `+0` are considered the same. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var sfillNotEqual = require( '@stdlib/blas/ext/base/sfill-not-equal' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'float32' +}); +console.log( x ); + +sfillNotEqual( x.length, 1.0, 5.0, x, 1 ); +console.log( x ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/sfill_not_equal.h" +``` + +#### stdlib_strided_sfill_not_equal( N, searchElement, alpha, \*X, strideX ) + +Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + +```c +float x[] = { 0.0f, -2.0f, 3.0f, 0.0f, 4.0f, -6.0f }; + +stdlib_strided_sfill_not_equal( 6, 0.0f, 5.0f, x, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] float` search element. +- **alpha**: `[in] float` scalar constant. +- **X**: `[inout] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. + +```c +void stdlib_strided_sfill_not_equal( const CBLAS_INT N, const float searchElement, const float alpha, float *X, const CBLAS_INT strideX ); +``` + + + +#### stdlib_strided_sfill_not_equal_ndarray( N, searchElement, alpha, \*X, strideX, offsetX ) + + + +Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. + +```c +float x[] = { 0.0f, -2.0f, 3.0f, 0.0f, 4.0f, -6.0f }; + +stdlib_strided_sfill_not_equal_ndarray( 6, 0.0f, 5.0f, x, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **searchElement**: `[in] float` search element. +- **alpha**: `[in] float` scalar constant. +- **X**: `[inout] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **offsetX**: `[in] CBLAS_INT` starting index. + +```c +void stdlib_strided_sfill_not_equal_ndarray( const CBLAS_INT N, const float searchElement, const float alpha, float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/sfill_not_equal.h" +#include + +int main( void ) { + // Create a strided array: + float x[] = { 0.0f, -2.0f, 3.0f, 0.0f, 4.0f, -6.0f, 0.0f, 8.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace elements not equal to `0.0f`: + stdlib_strided_sfill_not_equal( N, 0.0f, 5.0f, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %f\n", i, x[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..baf280e044fa --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfillNotEqual = require( './../lib/sfill_not_equal.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillNotEqual( x.length, i, i+1, x, 1 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.native.js new file mode 100644 index 000000000000..e41bededb341 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfillNotEqual = tryRequire( resolve( __dirname, './../lib/sfill_not_equal.native.js' ) ); +var opts = { + 'skip': ( sfillNotEqual instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillNotEqual( x.length, i, i+1, x, 1 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..9a3d1db3a7a5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfillNotEqual = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillNotEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..e076b4097114 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfillNotEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfillNotEqual instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x; + var i; + + x = uniform( len, -100, 100, options ); + for ( i = 0; i < x.length; i += 3 ) { + x[ i ] = 0.0; + } + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var y; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + y = sfillNotEqual( x.length, i, i+1, x, 1, 0 ); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( y[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/sfill-not-equal/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..f52ed5937add --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/benchmark/c/benchmark.length.c @@ -0,0 +1,199 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_not_equal.h" +#include +#include +#include +#include +#include + +#define NAME "sfill-not-equal" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + float *x; + double t; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0f; + } else { + x[ i ] = ( rand_float()*200.0f ) - 100.0f; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_sfill_not_equal( len, (float)i, (float)(i+1), x, 1 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + float *x; + double t; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + if ( i%3 == 0 ) { + x[ i ] = 0.0f; + } else { + x[ i ] = ( rand_float()*200.0f ) - 100.0f; + } + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + stdlib_strided_sfill_not_equal_ndarray( len, (float)i, (float)(i+1), x, 1, 0 ); + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( x[ 0 ] != x[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/docs/repl.txt new file mode 100644 index 000000000000..46105fc7b100 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/docs/repl.txt @@ -0,0 +1,104 @@ + +{{alias}}( N, searchElement, alpha, x, strideX ) + Replaces single-precision floating-point strided array elements not equal to + a provided search element with a specified scalar constant. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `x` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + alpha: number + Scalar constant. + + x: Float32Array + Input array. + + strideX: integer + Stride length. + + Returns + ------- + x: Float32Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > {{alias}}( x.length, 0.0, 5.0, x, 1 ) + [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float32}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > {{alias}}( 3, 0.0, 5.0, x, 2 ) + [ 0.0, -2.0, 5.0, 0.0, 5.0, -6.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float32}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 3, 0.0, 5.0, x1, 2 ) + [ 5.0, 3.0, 0.0, 4.0, 5.0 ] + > x0 + [ 0.0, 5.0, 3.0, 0.0, 4.0, 5.0 ] + + +{{alias}}.ndarray( N, searchElement, alpha, x, strideX, offsetX ) + Replaces single-precision floating-point strided array elements not equal to + a provided search element with a specified scalar constant using alternative + indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a starting + index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + searchElement: number + Search element. + + alpha: number + Scalar constant. + + x: Float32Array + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + x: Float32Array + Input array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > {{alias}}.ndarray( x.length, 0.0, 5.0, x, 1, 0 ) + [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + + // Using an index offset: + > x = new {{alias:@stdlib/array/float32}}( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + > {{alias}}.ndarray( 3, 0.0, 5.0, x, 2, 1 ) + [ 0.0, 5.0, 3.0, 0.0, 4.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..9f1e62530fc9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/docs/types/index.d.ts @@ -0,0 +1,98 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `sfillNotEqual`. +*/ +interface Routine { + /** + * Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @returns `x` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * sfillNotEqual( 6, 0.0, 5.0, x, 1 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + ( N: number, searchElement: number, alpha: number, x: Float32Array, strideX: number ): Float32Array; + + /** + * Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param searchElement - search element + * @param alpha - scalar constant + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns `x` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); + * + * sfillNotEqual.ndarray( 6, 0.0, 5.0, x, 1, 0 ); + * // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] + */ + ndarray( N: number, searchElement: number, alpha: number, x: Float32Array, strideX: number, offsetX: number ): Float32Array; +} + +/** +* Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. +* +* @param N - number of indexed elements +* @param searchElement - search element +* @param alpha - scalar constant +* @param x - input array +* @param strideX - stride length +* @returns `x` +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* sfillNotEqual( 6, 0.0, 5.0, x, 1 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* sfillNotEqual.ndarray( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +declare var sfillNotEqual: Routine; + + +// EXPORTS // + +export = sfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/docs/types/test.ts new file mode 100644 index 000000000000..85a639ae391a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/docs/types/test.ts @@ -0,0 +1,214 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import sfillNotEqual = require( './index' ); + + +// TESTS // + +// The function returns a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual( '10', 0.0, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( true, 0.0, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( false, 0.0, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( null, 0.0, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( undefined, 0.0, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( [], 0.0, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( {}, 0.0, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( ( x: number ): number => x, 0.0, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual( x.length, '10', 5.0, x, 1 ); // $ExpectError + sfillNotEqual( x.length, true, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( x.length, false, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( x.length, null, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( x.length, undefined, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( x.length, [], 5.0, x, 1 ); // $ExpectError + sfillNotEqual( x.length, {}, 5.0, x, 1 ); // $ExpectError + sfillNotEqual( x.length, ( x: number ): number => x, 5.0, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual( x.length, 0.0, '10', x, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, true, x, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, false, x, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, null, x, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, undefined, x, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, [], x, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, {}, x, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, ( x: number ): number => x, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual( x.length, 0.0, 5.0, '10', 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, true, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, false, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, null, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, undefined, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, [], 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, {}, 1 ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual( x.length, 0.0, 5.0, x, '10' ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, x, true ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, x, false ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, x, null ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, x, undefined ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, x, [] ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, x, {} ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual(); // $ExpectError + sfillNotEqual( x.length ); // $ExpectError + sfillNotEqual( x.length, 0.0 ); // $ExpectError + sfillNotEqual( x.length, 0.0, x ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, x ); // $ExpectError + sfillNotEqual( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual.ndarray( '10', 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( true, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( false, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( null, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( undefined, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( [], 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( {}, 0.0, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( ( x: number ): number => x, 0.0, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual.ndarray( x.length, '10', 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, true, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, false, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, null, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, undefined, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, [], 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, {}, 5.0, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, ( x: number ): number => x, 5.0, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual.ndarray( x.length, 0.0, '10', x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, true, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, false, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, null, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, undefined, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, [], x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, {}, x, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, ( x: number ): number => x, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual.ndarray( x.length, 0.0, 5.0, '10', 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, true, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, false, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, null, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, undefined, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, [], 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, {}, 1, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, '10', 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, true, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, false, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, null, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, undefined, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, [], 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, {}, 0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, '10' ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, true ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, false ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, null ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, undefined ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, [] ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, {} ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + + sfillNotEqual.ndarray(); // $ExpectError + sfillNotEqual.ndarray( x.length ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1 ); // $ExpectError + sfillNotEqual.ndarray( x.length, 0.0, 5.0, x, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/examples/c/example.c new file mode 100644 index 000000000000..da16783f597b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_not_equal.h" +#include + +int main( void ) { + // Create a strided array: + float x[] = { 0.0f, -2.0f, 3.0f, 0.0f, 4.0f, -6.0f, 0.0f, 8.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify a stride: + const int strideX = 1; + + // Replace elements not equal to `0.0f`: + stdlib_strided_sfill_not_equal( N, 0.0f, 5.0f, x, strideX ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "x[ %i ] = %f\n", i, x[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/examples/index.js new file mode 100644 index 000000000000..41594daeefa4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/examples/index.js @@ -0,0 +1,30 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var sfillNotEqual = require( './../lib' ); + +var x = discreteUniform( 10, 0, 3, { + 'dtype': 'float32' +}); +console.log( x ); + +sfillNotEqual( x.length, 1.0, 5.0, x, 1 ); +console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var sfillNotEqual = require( '@stdlib/blas/ext/base/sfill-not-equal' ); +* +* var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* sfillNotEqual.ndarray( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var sfillNotEqual; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + sfillNotEqual = main; +} else { + sfillNotEqual = tmp; +} + + +// EXPORTS // + +module.exports = sfillNotEqual; + +// exports: { "ndarray": "sfillNotEqual.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/main.js new file mode 100644 index 000000000000..0eeb81e5758d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sfillNotEqual = require( './sfill_not_equal.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( sfillNotEqual, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/native.js new file mode 100644 index 000000000000..313fab8b03bd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sfillNotEqual = require( './sfill_not_equal.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( sfillNotEqual, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/ndarray.js new file mode 100644 index 000000000000..cb15d8c21847 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/ndarray.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* sfillNotEqual( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function sfillNotEqual( N, searchElement, alpha, x, strideX, offsetX ) { + var ix; + var i; + + if ( N <= 0 ) { + return x; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( x[ ix ] !== searchElement ) { + x[ ix ] = alpha; + } + ix += strideX; + } + return x; +} + + +// EXPORTS // + +module.exports = sfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/ndarray.native.js new file mode 100644 index 000000000000..776a2be1b647 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/ndarray.native.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @param {NonNegativeInteger} offsetX - starting index +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* sfillNotEqual( 6, 0.0, 5.0, x, 1, 0 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function sfillNotEqual( N, searchElement, alpha, x, strideX, offsetX ) { + addon.ndarray( N, searchElement, alpha, x, strideX, offsetX ); + return x; +} + + +// EXPORTS // + +module.exports = sfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/sfill_not_equal.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/sfill_not_equal.js new file mode 100644 index 000000000000..4590b02a56c6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/sfill_not_equal.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* sfillNotEqual( 6, 0.0, 5.0, x, 1 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function sfillNotEqual( N, searchElement, alpha, x, strideX ) { + return ndarray( N, searchElement, alpha, x, strideX, stride2offset( N, strideX ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = sfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/sfill_not_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/sfill_not_equal.native.js new file mode 100644 index 000000000000..933df814db3a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/lib/sfill_not_equal.native.js @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} searchElement - search element +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length +* @returns {Float32Array} input array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, -2.0, 3.0, 0.0, 4.0, -6.0 ] ); +* +* sfillNotEqual( 6, 0.0, 5.0, x, 1 ); +* // x => [ 0.0, 5.0, 5.0, 0.0, 5.0, 5.0 ] +*/ +function sfillNotEqual( N, searchElement, alpha, x, strideX ) { + addon( N, searchElement, alpha, x, strideX ); + return x; +} + + +// EXPORTS // + +module.exports = sfillNotEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/manifest.json new file mode 100644 index 000000000000..9184cfd03771 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/manifest.json @@ -0,0 +1,79 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-float", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float32array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/package.json b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/package.json new file mode 100644 index 000000000000..3780cb8c5b93 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/blas/ext/base/sfill-not-equal", + "version": "0.0.0", + "description": "Replace single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "fill", + "not equal", + "unequal", + "replace", + "assign", + "set", + "strided", + "array", + "ndarray", + "float32", + "single", + "float32array" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/src/addon.c new file mode 100644 index 000000000000..32c5e6de8610 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/src/addon.c @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_not_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_float.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float32array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_FLOAT( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_FLOAT( env, alpha, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 3 ); + API_SUFFIX(stdlib_strided_sfill_not_equal)( N, searchElement, alpha, X, strideX ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_FLOAT( env, searchElement, argv, 1 ); + STDLIB_NAPI_ARGV_FLOAT( env, alpha, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 3 ); + API_SUFFIX(stdlib_strided_sfill_not_equal_ndarray)( N, searchElement, alpha, X, strideX, offsetX ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/src/main.c new file mode 100644 index 000000000000..d3706e785f14 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/src/main.c @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfill_not_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/strided/base/stride2offset.h" + +/** +* Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant. +* +* @param N number of indexed elements +* @param searchElement search element +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +*/ +void API_SUFFIX(stdlib_strided_sfill_not_equal)( const CBLAS_INT N, const float searchElement, const float alpha, float *X, const CBLAS_INT strideX ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + API_SUFFIX(stdlib_strided_sfill_not_equal_ndarray)( N, searchElement, alpha, X, strideX, ox ); +} + +/** +* Replaces single-precision floating-point strided array elements not equal to a provided search element with a specified scalar constant using alternative indexing semantics. +* +* @param N number of indexed elements +* @param searchElement search element +* @param alpha scalar constant +* @param X input array +* @param strideX stride length +* @param offsetX starting index +*/ +void API_SUFFIX(stdlib_strided_sfill_not_equal_ndarray)( const CBLAS_INT N, const float searchElement, const float alpha, float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { + CBLAS_INT ix; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + if ( X[ ix ] != searchElement ) { + X[ ix ] = alpha; + } + ix += strideX; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.js new file mode 100644 index 000000000000..bc3fa33f9dbc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var sfillNotEqual = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof sfillNotEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var sfillNotEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfillNotEqual, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var sfillNotEqual; + var main; + + main = require( './../lib/sfill_not_equal.js' ); + + sfillNotEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfillNotEqual, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.ndarray.js new file mode 100644 index 000000000000..c195699e0b8b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.ndarray.js @@ -0,0 +1,241 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfillNotEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( sfillNotEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 0.0, 2.0 ] ); + expected = new Float32Array( [ 0.0, 5.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ 4.0, 4.0, 4.0 ] ); + expected = new Float32Array( [ 4.0, 4.0, 4.0 ] ); + + sfillNotEqual( x.length, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ NaN, 1.0, NaN ] ); + expected = new Float32Array( [ 5.0, 5.0, 5.0 ] ); + + sfillNotEqual( x.length, NaN, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ NaN, 0.0, NaN ] ); + expected = new Float32Array( [ 5.0, 0.0, 5.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameFloat32Array( x, expected ), true, 'returns expected value' ); + + x = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + sfillNotEqual( x.length, -0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameFloat32Array( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + expected = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + + sfillNotEqual( 0, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + sfillNotEqual( -4, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]); + expected = new Float32Array([ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]); + expected = new Float32Array([ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]); + expected = new Float32Array([ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.ndarray.native.js new file mode 100644 index 000000000000..02b86b5086df --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.ndarray.native.js @@ -0,0 +1,250 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfillNotEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfillNotEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( sfillNotEqual.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 0.0, 2.0 ] ); + expected = new Float32Array( [ 0.0, 5.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ 4.0, 4.0, 4.0 ] ); + expected = new Float32Array( [ 4.0, 4.0, 4.0 ] ); + + sfillNotEqual( x.length, 4.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ NaN, 1.0, NaN ] ); + expected = new Float32Array( [ 5.0, 5.0, 5.0 ] ); + + sfillNotEqual( x.length, NaN, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ NaN, 0.0, NaN ] ); + expected = new Float32Array( [ 5.0, 0.0, 5.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameFloat32Array( x, expected ), true, 'returns expected value' ); + + x = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + sfillNotEqual( x.length, -0.0, 5.0, x, 1, 0 ); + t.strictEqual( isSameFloat32Array( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + expected = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + + sfillNotEqual( 0, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + sfillNotEqual( -4, 0.0, 5.0, x, 1, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]); + expected = new Float32Array([ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, 2, 0 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]); + expected = new Float32Array([ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, -2, 4 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an offset parameter', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]); + expected = new Float32Array([ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, 2, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.sfill_not_equal.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.sfill_not_equal.js new file mode 100644 index 000000000000..5125a30b1fc1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.sfill_not_equal.js @@ -0,0 +1,247 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfillNotEqual = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( sfillNotEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 0.0, 2.0 ] ); + expected = new Float32Array( [ 0.0, 5.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ 4.0, 4.0, 4.0 ] ); + expected = new Float32Array( [ 4.0, 4.0, 4.0 ] ); + + sfillNotEqual( x.length, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ NaN, 1.0, NaN ] ); + expected = new Float32Array( [ 5.0, 5.0, 5.0 ] ); + + sfillNotEqual( x.length, NaN, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ NaN, 0.0, NaN ] ); + expected = new Float32Array( [ 5.0, 0.0, 5.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + expected = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + + sfillNotEqual( 0, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + sfillNotEqual( -4, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', function test( t ) { + var expected; + var x; + + x = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.strictEqual( isSameFloat32Array( x, expected ), true, 'returns expected value' ); + + x = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + sfillNotEqual( x.length, -0.0, 5.0, x, 1 ); + t.strictEqual( isSameFloat32Array( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]); + expected = new Float32Array([ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]); + expected = new Float32Array([ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float32Array([ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]); + expected = new Float32Array([ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + sfillNotEqual( 3, 0.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.sfill_not_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.sfill_not_equal.native.js new file mode 100644 index 000000000000..ed5cb4e510b9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfill-not-equal/test/test.sfill_not_equal.native.js @@ -0,0 +1,256 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameFloat32Array = require( '@stdlib/assert/is-same-float32array' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfillNotEqual = tryRequire( resolve( __dirname, './../lib/sfill_not_equal.native.js' ) ); +var opts = { + 'skip': ( sfillNotEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfillNotEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( sfillNotEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replaces strided array elements not equal to a provided search element', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, + 2.0, + 0.0, + 4.0, + -1.0, + 0.0, + -5.0, + 6.0 + ]); + expected = new Float32Array([ + 0.0, + 5.0, + 0.0, + 5.0, + 5.0, + 0.0, + 5.0, + 5.0 + ]); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 0.0, 2.0 ] ); + expected = new Float32Array( [ 0.0, 5.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the input array', opts, function test( t ) { + var out; + var x; + + x = new Float32Array( [ 1.0, 0.0, 3.0, 0.0, 5.0 ] ); + out = sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + + t.strictEqual( out, x, 'same reference' ); + t.end(); +}); + +tape( 'if all elements are equal to a provided search element, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ 4.0, 4.0, 4.0 ] ); + expected = new Float32Array( [ 4.0, 4.0, 4.0 ] ); + + sfillNotEqual( x.length, 4.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a search element equal to `NaN`, the function replaces all elements', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ NaN, 1.0, NaN ] ); + expected = new Float32Array( [ 5.0, 5.0, 5.0 ] ); + + sfillNotEqual( x.length, NaN, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replaces `NaN` elements', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ NaN, 0.0, NaN ] ); + expected = new Float32Array( [ 5.0, 0.0, 5.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `x` unchanged', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + expected = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + + sfillNotEqual( 0, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + x = new Float32Array( [ 0.0, -4.0, 1.0 ] ); + sfillNotEqual( -4, 0.0, 5.0, x, 1 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function considers `-0` and `+0` to be the same value', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + sfillNotEqual( x.length, 0.0, 5.0, x, 1 ); + t.strictEqual( isSameFloat32Array( x, expected ), true, 'returns expected value' ); + + x = new Float32Array( [ -0.0, 1.0, 0.0, -0.0 ] ); + expected = new Float32Array( [ -0.0, 5.0, 0.0, -0.0 ] ); + + sfillNotEqual( x.length, -0.0, 5.0, x, 1 ); + t.strictEqual( isSameFloat32Array( x, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, // 0 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 2 + -6.0 + ]); + expected = new Float32Array([ + 0.0, // 0 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 2 + -6.0 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, 2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying a negative stride', opts, function test( t ) { + var expected; + var x; + + x = new Float32Array([ + 0.0, // 2 + -2.0, + 3.0, // 1 + 0.0, + 4.0, // 0 + -6.0 + ]); + expected = new Float32Array([ + 0.0, // 2 + -2.0, + 5.0, // 1 + 0.0, + 5.0, // 0 + -6.0 + ]); + + sfillNotEqual( 3, 0.0, 5.0, x, -2 ); + t.deepEqual( x, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var x1; + + x0 = new Float32Array([ + 0.0, + -2.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + -6.0 // 2 + ]); + expected = new Float32Array([ + 0.0, + 5.0, // 0 + 3.0, + 0.0, // 1 + 4.0, + 5.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + + sfillNotEqual( 3, 0.0, 5.0, x1, 2 ); + t.deepEqual( x0, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/README.md b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/README.md new file mode 100644 index 000000000000..a4a2932a4488 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/README.md @@ -0,0 +1,340 @@ + + +# sfirstIndexEqual + +> Return the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var sfirstIndexEqual = require( '@stdlib/blas/ext/base/sfirst-index-equal' ); +``` + +#### sfirstIndexEqual( N, x, strideX, y, strideY ) + +Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + +var idx = sfirstIndexEqual( x.length, x, 1, y, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: first input [`Float32Array`][@stdlib/array/float32]. +- **strideX**: stride length for `x`. +- **y**: second input [`Float32Array`][@stdlib/array/float32]. +- **strideY**: stride length for `y`. + +If the function is unable to find matching elements, the function returns `-1`. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y = new Float32Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + +var idx = sfirstIndexEqual( x.length, x, 1, y, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to compare every other element: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + +var idx = sfirstIndexEqual( 3, x, 2, y, 2 ); +// returns 1 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +// Initial arrays... +var x0 = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y0 = new Float32Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + +// Create offset views... +var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = sfirstIndexEqual( 2, x1, 1, y1, 1 ); +// returns 1 +``` + +#### sfirstIndexEqual.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array using alternative indexing semantics. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + +var idx = sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements of each strided array: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Float32Array( [ 0.0, 0.0, 0.0, 4.0, 5.0, 6.0 ] ); + +var idx = sfirstIndexEqual.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// returns 0 +``` + +
+ + + + + +
+ +## Notes + +- When comparing elements, the function checks for equality using the strict equality operator `===`. As a consequence, `NaN` values are considered distinct, and `-0` and `+0` are considered the same. + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var sfirstIndexEqual = require( '@stdlib/blas/ext/base/sfirst-index-equal' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'float32' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'float32' +}); +console.log( y ); + +var idx = sfirstIndexEqual( x.length, x, 1, y, 1 ); +console.log( idx ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/sfirst_index_equal.h" +``` + +#### stdlib_strided_sfirst_index_equal( N, \*X, strideX, \*Y, strideY ) + +Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array. + +```c +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; +const float y[] = { 0.0f, 0.0f, 3.0f, 0.0f }; + +int idx = stdlib_strided_sfirst_index_equal( 4, x, 1, y, 1 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] float*` first input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Y**: `[in] float*` second input array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. + +```c +CBLAS_INT stdlib_strided_sfirst_index_equal( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const float *Y, const CBLAS_INT strideY ); +``` + + + +#### stdlib_strided_sfirst_index_equal_ndarray( N, \*X, strideX, offsetX, \*Y, strideY, offsetY ) + + + +Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array using alternative indexing semantics. + +```c +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; +const float y[] = { 0.0f, 0.0f, 3.0f, 0.0f }; + +int idx = stdlib_strided_sfirst_index_equal_ndarray( 4, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] float*` first input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Y**: `[in] float*` second input array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. +- **offsetY**: `[in] CBLAS_INT` starting index for `Y`. + +```c +CBLAS_INT stdlib_strided_sfirst_index_equal_ndarray( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, const float *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/sfirst_index_equal.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + const float y[] = { 0.0f, -1.0f, -2.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Perform a search: + int idx = stdlib_strided_sfirst_index_equal( N, x, strideX, y, strideY ); + + // Print the result: + printf( "index value: %d\n", idx ); +} +``` + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.js new file mode 100644 index 000000000000..d6930a87dfaf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfirstIndexEqual = require( './../lib/sfirst_index_equal.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float32' ); + var y = zeros( len, 'float32' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sfirstIndexEqual( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.native.js new file mode 100644 index 000000000000..09bf34993b25 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.native.js @@ -0,0 +1,108 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfirstIndexEqual = tryRequire( resolve( __dirname, './../lib/sfirst_index_equal.native.js' ) ); +var opts = { + 'skip': ( sfirstIndexEqual instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float32' ); + var y = zeros( len, 'float32' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sfirstIndexEqual( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..44715f5b509d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.ndarray.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfirstIndexEqual = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float32' ); + var y = zeros( len, 'float32' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..0ef625044cff --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,108 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var oneTo = require( '@stdlib/array/one-to' ); +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfirstIndexEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfirstIndexEqual instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = oneTo( len, 'float32' ); + var y = zeros( len, 'float32' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/sfirst-index-equal/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..ebf786ebc33f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/benchmark/c/benchmark.length.c @@ -0,0 +1,205 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfirst_index_equal.h" +#include +#include +#include +#include +#include + +#define NAME "sfirst_index_equal" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + float *x; + float *y; + double t; + int idx; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + y = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_float()*20000.0f ) - 10000.0f; + y[ i ] = -10001.0f; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_sfirst_index_equal( len, x, 1, y, 1 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + float *x; + float *y; + double t; + int idx; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + y = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_float()*20000.0f ) - 10000.0f; + y[ i ] = -10001.0f; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_sfirst_index_equal_ndarray( len, x, 1, 0, y, 1, 0 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/docs/repl.txt new file mode 100644 index 000000000000..e13b62f90852 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/docs/repl.txt @@ -0,0 +1,112 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Returns the index of the first element in a single-precision floating-point + strided array equal to a corresponding element in another single-precision + floating-point strided array. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float32Array + First input array. + + strideX: integer + Stride length for `x`. + + y: Float32Array + Second input array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var y = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 3.0, 0.0 ] ); + > var idx = {{alias}}( x.length, x, 1, y, 1 ) + 2 + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > y = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + > idx = {{alias}}( 3, x, 2, y, 2 ) + 1 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > var y0 = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0 ] ); + > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var y1 = new {{alias:@stdlib/array/float32}}( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + > idx = {{alias}}( 3, x1, 2, y1, 2 ) + -1 + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Returns the index of the first element in a single-precision floating-point + strided array equal to a corresponding element in another single-precision + floating-point strided array using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float32Array + First input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Float32Array + Second input array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var y = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 3.0, 0.0 ] ); + > var idx = {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + 2 + + // Using offsets: + > x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > y = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0 ] ); + > idx = {{alias}}.ndarray( 3, x, 2, 1, y, 2, 2 ) + -1 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/docs/types/index.d.ts new file mode 100644 index 000000000000..af32c7f83e17 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/docs/types/index.d.ts @@ -0,0 +1,115 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `sfirstIndexEqual`. +*/ +interface Routine { + /** + * Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array. + * + * ## Notes + * + * - If the function is unable to find a match, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + * + * var idx = sfirstIndexEqual( x.length, x, 1, y, 1 ); + * // returns 2 + */ + ( N: number, x: Float32Array, strideX: number, y: Float32Array, strideY: number ): number; + + /** + * Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array using alternative indexing semantics. + * + * ## Notes + * + * - If the function is unable to find a match, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param offsetY - starting index for `y` + * @returns index + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + * var y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0 ] ); + * + * var idx = sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, x: Float32Array, strideX: number, offsetX: number, y: Float32Array, strideY: number, offsetY: number ): number; +} + +/** +* Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array. +* +* ## Notes +* +* - If the function is unable to find a match, the function returns `-1`. +* +* @param N - number of indexed elements +* @param x - first input array +* @param strideX - stride length for `x` +* @param y - second input array +* @param strideY - stride length for `y` +* @returns index +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +* var y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0 ] ); +* +* var idx = sfirstIndexEqual( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +* var y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0 ] ); +* +* var idx = sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +declare var sfirstIndexEqual: Routine; + + +// EXPORTS // + +export = sfirstIndexEqual; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/docs/types/test.ts new file mode 100644 index 000000000000..1012afe953cb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/docs/types/test.ts @@ -0,0 +1,208 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import sfirstIndexEqual = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual( x.length, x, 1, y, 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual( '1', x, 1, y, 1 ); // $ExpectError + sfirstIndexEqual( true, x, 1, y, 1 ); // $ExpectError + sfirstIndexEqual( false, x, 1, y, 1 ); // $ExpectError + sfirstIndexEqual( null, x, 1, y, 1 ); // $ExpectError + sfirstIndexEqual( {}, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Float32Array... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual( x.length, '1', 1, y, 1 ); // $ExpectError + sfirstIndexEqual( x.length, true, 1, y, 1 ); // $ExpectError + sfirstIndexEqual( x.length, false, 1, y, 1 ); // $ExpectError + sfirstIndexEqual( x.length, null, 1, y, 1 ); // $ExpectError + sfirstIndexEqual( x.length, {}, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual( x.length, x, '1', y, 1 ); // $ExpectError + sfirstIndexEqual( x.length, x, true, y, 1 ); // $ExpectError + sfirstIndexEqual( x.length, x, false, y, 1 ); // $ExpectError + sfirstIndexEqual( x.length, x, null, y, 1 ); // $ExpectError + sfirstIndexEqual( x.length, x, {}, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float32Array... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual( x.length, x, 1, '1', 1 ); // $ExpectError + sfirstIndexEqual( x.length, x, 1, true, 1 ); // $ExpectError + sfirstIndexEqual( x.length, x, 1, false, 1 ); // $ExpectError + sfirstIndexEqual( x.length, x, 1, null, 1 ); // $ExpectError + sfirstIndexEqual( x.length, x, 1, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual( x.length, x, 1, y, '1' ); // $ExpectError + sfirstIndexEqual( x.length, x, 1, y, true ); // $ExpectError + sfirstIndexEqual( x.length, x, 1, y, false ); // $ExpectError + sfirstIndexEqual( x.length, x, 1, y, null ); // $ExpectError + sfirstIndexEqual( x.length, x, 1, y, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual(); // $ExpectError + sfirstIndexEqual( 3, x ); // $ExpectError + sfirstIndexEqual( 3, x, 1 ); // $ExpectError + sfirstIndexEqual( 3, x, 1, y ); // $ExpectError + sfirstIndexEqual( 3, x, 1, y, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual.ndarray( '1', x, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Float32Array... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual.ndarray( x.length, '1', 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, true, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, false, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, null, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, {}, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual.ndarray( x.length, x, '1', 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError +} + + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual.ndarray( x.length, x, 1, '1', y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a Float32Array... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual.ndarray( x.length, x, 1, 0, '1', 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, true, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, false, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, null, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, '1', 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, '1' ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexEqual.ndarray(); // $ExpectError + sfirstIndexEqual.ndarray( x.length ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + sfirstIndexEqual.ndarray( x.length, x, 1, 0, y, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/examples/c/example.c new file mode 100644 index 000000000000..81679d7d664e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfirst_index_equal.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + const float y[] = { 0.0f, -1.0f, -2.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Perform a search: + int idx = stdlib_strided_sfirst_index_equal( N, x, strideX, y, strideY ); + + // Print the result: + printf( "index value: %d\n", idx ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/examples/index.js new file mode 100644 index 000000000000..757513811f3b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var sfirstIndexEqual = require( './../lib' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'float32' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'float32' +}); +console.log( y ); + +var idx = sfirstIndexEqual( x.length, x, 1, y, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "blas", + "find", + "index", + "search", + "element", + "array", + "ndarray", + "strided", + "float", + "float32", + "float32array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/src/addon.c new file mode 100644 index 000000000000..98ae5ba93bd0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/src/addon.c @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfirst_index_equal.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float32array.h" +#include "stdlib/napi/create_int32.h" +#include "stdlib/napi/export.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, Y, N, strideY, argv, 3 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_sfirst_index_equal)( N, X, strideX, Y, strideY ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 7 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_INT64( env, offsetY, argv, 6 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, Y, N, strideY, argv, 4 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_sfirst_index_equal_ndarray)( N, X, strideX, offsetX, Y, strideY, offsetY ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/src/main.c new file mode 100644 index 000000000000..491bf992ef83 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/src/main.c @@ -0,0 +1,69 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfirst_index_equal.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array. +* +* @param N number of indexed elements +* @param X first input array +* @param strideX stride length for X +* @param Y second input array +* @param strideY stride length for Y +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_sfirst_index_equal)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const float *Y, const CBLAS_INT strideY ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oy = stdlib_strided_stride2offset( N, strideY ); + return API_SUFFIX(stdlib_strided_sfirst_index_equal_ndarray)( N, X, strideX, ox, Y, strideY, oy ); +} + +/** +* Returns the index of the first element in a single-precision floating-point strided array equal to a corresponding element in another single-precision floating-point strided array using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X first input array +* @param strideX stride length for X +* @param offsetX starting index for X +* @param Y second input array +* @param strideY stride length for Y +* @param offsetY starting index for Y +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_sfirst_index_equal_ndarray)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, const float *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ) { + CBLAS_INT ix; + CBLAS_INT iy; + CBLAS_INT i; + + if ( N <= 0 ) { + return -1; + } + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( X[ ix ] == Y[ iy ] ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.js new file mode 100644 index 000000000000..5251cd24de5e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var sfirstIndexEqual = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof sfirstIndexEqual.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var sfirstIndexEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfirstIndexEqual, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var sfirstIndexEqual; + var main; + + main = require( './../lib/sfirst_index_equal.js' ); + + sfirstIndexEqual = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfirstIndexEqual, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.ndarray.js new file mode 100644 index 000000000000..e51f28fd3f6f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.ndarray.js @@ -0,0 +1,239 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfirstIndexEqual = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( sfirstIndexEqual.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = sfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length-1, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + + actual = sfirstIndexEqual( 0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexEqual( -1, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN`', function test( t ) { + var actual; + + actual = sfirstIndexEqual( 1, new Float32Array( [ NaN ] ), 1, 0, new Float32Array( [ NaN ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = sfirstIndexEqual( 1, new Float32Array( [ -0.0 ] ), 1, 0, new Float32Array( [ 0.0 ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float32Array([ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]); + y = new Float32Array([ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]); + + actual = sfirstIndexEqual( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float32Array([ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]); + y = new Float32Array([ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, 2, 0, y, -1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.ndarray.native.js new file mode 100644 index 000000000000..2ef56b8ad53e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.ndarray.native.js @@ -0,0 +1,248 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfirstIndexEqual = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfirstIndexEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', opts, function test( t ) { + t.strictEqual( sfirstIndexEqual.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = sfirstIndexEqual( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length-1, x, 1, 1, y, 1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length-2, x, 1, 2, y, 1, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( 3, x, -2, x.length-1, y, -2, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( 3, x, -2, x.length-2, y, -2, y.length-2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', opts, function test( t ) { + var actual; + + actual = sfirstIndexEqual( 0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexEqual( -1, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN`', opts, function test( t ) { + var actual; + + actual = sfirstIndexEqual( 1, new Float32Array( [ NaN ] ), 1, 0, new Float32Array( [ NaN ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', opts, function test( t ) { + var actual; + + actual = sfirstIndexEqual( 1, new Float32Array( [ -0.0 ] ), 1, 0, new Float32Array( [ 0.0 ] ), 1, 0 ); // eslint-disable-line max-len + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float32Array([ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]); + y = new Float32Array([ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]); + + actual = sfirstIndexEqual( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float32Array([ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]); + y = new Float32Array([ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, 2, 0, y, -1, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.sfirst_index_equal.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.sfirst_index_equal.js new file mode 100644 index 000000000000..3d8e115069ef --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.sfirst_index_equal.js @@ -0,0 +1,279 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfirstIndexEqual = require( './../lib/sfirst_index_equal.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( sfirstIndexEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = sfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( 3, x, 2, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 3.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + actual = sfirstIndexEqual( 0, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexEqual( -1, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN`', function test( t ) { + var actual; + + actual = sfirstIndexEqual( 1, new Float32Array( [ NaN ] ), 1, new Float32Array( [ NaN ] ), 1 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', function test( t ) { + var actual; + + actual = sfirstIndexEqual( 1, new Float32Array( [ -0.0 ] ), 1, new Float32Array( [ 0.0 ] ), 1 ); // eslint-disable-line max-len + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float32Array([ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, 2, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]); + y = new Float32Array([ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]); + + actual = sfirstIndexEqual( 3, x, 1, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float32Array([ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, -2, y, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]); + y = new Float32Array([ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, 2, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float32Array([ + 1.0, + 2.0, // 2 + 3.0, + 4.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float32Array([ + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 4.0, // 1 + 0.0 // 2 + ]); + + // Create offset views... + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = sfirstIndexEqual( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.sfirst_index_equal.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.sfirst_index_equal.native.js new file mode 100644 index 000000000000..5dcea9e9048c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-equal/test/test.sfirst_index_equal.native.js @@ -0,0 +1,288 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfirstIndexEqual = tryRequire( resolve( __dirname, './../lib/sfirst_index_equal.native.js' ) ); +var opts = { + 'skip': ( sfirstIndexEqual instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexEqual, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( sfirstIndexEqual.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which equals a corresponding element in another array', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + // Nonnegative stride... + actual = sfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 2.0, 0.0, 3.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 3.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( 3, x, 2, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + // Negative stride... + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 4, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 2.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 3.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + actual = sfirstIndexEqual( x.length, x, -1, y, -1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + actual = sfirstIndexEqual( 0, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexEqual( -1, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided a search element equal to `NaN`', opts, function test( t ) { + var actual; + + actual = sfirstIndexEqual( 1, new Float32Array( [ NaN ] ), 1, new Float32Array( [ NaN ] ), 1 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats -0 and +0 as equal', opts, function test( t ) { + var actual; + + actual = sfirstIndexEqual( 1, new Float32Array( [ -0.0 ] ), 1, new Float32Array( [ 0.0 ] ), 1 ); // eslint-disable-line max-len + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float32Array([ + 0.0, // 0 + 3.0, // 1 + 0.0, // 2 + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, 2, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0, // 2 + 4.0, + 5.0 + ]); + y = new Float32Array([ + 0.0, // 0 + 0.0, + 2.0, // 1 + 0.0, + 0.0 // 2 + ]); + + actual = sfirstIndexEqual( 3, x, 1, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float32Array([ + 0.0, // 2 + 3.0, // 1 + 0.0, // 0 + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, -2, y, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0, // 2 + 6.0 + ]); + y = new Float32Array([ + 5.0, // 2 + 0.0, // 1 + 0.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = sfirstIndexEqual( 3, x, 2, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float32Array([ + 1.0, + 2.0, // 2 + 3.0, + 4.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float32Array([ + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 4.0, // 1 + 0.0 // 2 + ]); + + // Create offset views... + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = sfirstIndexEqual( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/README.md b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/README.md new file mode 100644 index 000000000000..bd4786bb7d21 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/README.md @@ -0,0 +1,340 @@ + + +# sfirstIndexLessThan + +> Return the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var sfirstIndexLessThan = require( '@stdlib/blas/ext/base/sfirst-index-less-than' ); +``` + +#### sfirstIndexLessThan( N, x, strideX, y, strideY ) + +Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); +var y = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + +var idx = sfirstIndexLessThan( x.length, x, 1, y, 1 ); +// returns 2 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: first input [`Float32Array`][@stdlib/array/float32]. +- **strideX**: stride length for `x`. +- **y**: second input [`Float32Array`][@stdlib/array/float32]. +- **strideY**: stride length for `y`. + +If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 5.0, 6.0, 7.0, 8.0 ] ); +var y = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + +var idx = sfirstIndexLessThan( x.length, x, 1, y, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to compare every other element: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Float32Array( [ 0.0, 9.0, 0.0, 9.0, 9.0, 9.0 ] ); + +var idx = sfirstIndexLessThan( 3, x, 2, y, 2 ); +// returns 2 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +// Initial arrays... +var x0 = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var y0 = new Float32Array( [ 9.0, 0.0, 9.0, 9.0 ] ); + +// Create offset views... +var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = sfirstIndexLessThan( 2, x1, 1, y1, 1 ); +// returns 1 +``` + +#### sfirstIndexLessThan.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array using alternative indexing semantics. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); +var y = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + +var idx = sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements of each strided array: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 9.0, 9.0, 9.0, 0.0, 0.0, 0.0 ] ); +var y = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] ); + +var idx = sfirstIndexLessThan.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// returns 2 +``` + +
+ + + + + +
+ +## Notes + +- When comparing elements, the function checks whether an element in `x` is less than a corresponding element in `y` using the less-than operator `<`. As a consequence, comparisons involving `NaN` always evaluate to `false`. + +
+ + + + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var sfirstIndexLessThan = require( '@stdlib/blas/ext/base/sfirst-index-less-than' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'float32' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'float32' +}); +console.log( y ); + +var idx = sfirstIndexLessThan( x.length, x, 1, y, 1 ); +console.log( idx ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/sfirst_index_less_than.h" +``` + +#### stdlib_strided_sfirst_index_less_than( N, \*X, strideX, \*Y, strideY ) + +Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array. + +```c +const float x[] = { 0.0f, 0.0f, 0.0f, 0.0f }; +const float y[] = { 0.0f, 0.0f, 1.0f, 0.0f }; + +int idx = stdlib_strided_sfirst_index_less_than( 4, x, 1, y, 1 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] float*` first input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Y**: `[in] float*` second input array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. + +```c +CBLAS_INT stdlib_strided_sfirst_index_less_than( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const float *Y, const CBLAS_INT strideY ); +``` + + + +#### stdlib_strided_sfirst_index_less_than_ndarray( N, \*X, strideX, offsetX, \*Y, strideY, offsetY ) + + + +Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array using alternative indexing semantics. + +```c +const float x[] = { 0.0f, 0.0f, 0.0f, 0.0f }; +const float y[] = { 0.0f, 0.0f, 1.0f, 0.0f }; + +int idx = stdlib_strided_sfirst_index_less_than_ndarray( 4, x, 1, 0, y, 1, 0 ); +// returns 2 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] float*` first input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Y**: `[in] float*` second input array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. +- **offsetY**: `[in] CBLAS_INT` starting index for `Y`. + +```c +CBLAS_INT stdlib_strided_sfirst_index_less_than_ndarray( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, const float *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/sfirst_index_less_than.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + const float y[] = { 0.0f, -1.0f, -2.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Perform a search: + int idx = stdlib_strided_sfirst_index_less_than( N, x, strideX, y, strideY ); + + // Print the result: + printf( "index value: %d\n", idx ); +} +``` + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.js new file mode 100644 index 000000000000..760ca3514c08 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfirstIndexLessThan = require( './../lib/sfirst_index_less_than.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float32' ); + var y = ones( len, 'float32' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sfirstIndexLessThan( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.native.js new file mode 100644 index 000000000000..aaf2c04f8734 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.native.js @@ -0,0 +1,107 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfirstIndexLessThan = tryRequire( resolve( __dirname, './../lib/sfirst_index_less_than.native.js' ) ); +var opts = { + 'skip': ( sfirstIndexLessThan instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float32' ); + var y = ones( len, 'float32' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sfirstIndexLessThan( x.length, x, 1, y, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..5de536fac403 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.ndarray.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sfirstIndexLessThan = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float32' ); + var y = ones( len, 'float32' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..9bfc275172a8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,107 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var ones = require( '@stdlib/array/ones' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sfirstIndexLessThan = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfirstIndexLessThan instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = ones( len, 'float32' ); + var y = ones( len, 'float32' ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = sfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/sfirst-index-less-than/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..d07ee8992767 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/benchmark/c/benchmark.length.c @@ -0,0 +1,205 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfirst_index_less_than.h" +#include +#include +#include +#include +#include + +#define NAME "sfirst_index_less_than" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + float *x; + float *y; + double t; + int idx; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + y = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_float()*20000.0f ) - 10000.0f; + y[ i ] = -10001.0f; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_sfirst_index_less_than( len, x, 1, y, 1 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + float *x; + float *y; + double t; + int idx; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + y = (float *) malloc( len * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_float()*20000.0f ) - 10000.0f; + y[ i ] = -10001.0f; + } + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + idx = stdlib_strided_sfirst_index_less_than_ndarray( len, x, 1, 0, y, 1, 0 ); + if ( idx < -2 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < -2 ) { + printf( "unexpected result\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/docs/repl.txt new file mode 100644 index 000000000000..1d6ff9172673 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/docs/repl.txt @@ -0,0 +1,112 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Returns the index of the first element in a single-precision floating-point + strided array which is less than a corresponding element in another single- + precision floating-point strided array. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float32Array + First input array. + + strideX: integer + Stride length for `x`. + + y: Float32Array + Second input array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 0.0, 0.0 ] ); + > var y = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > var idx = {{alias}}( x.length, x, 1, y, 1 ) + 2 + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > y = new {{alias:@stdlib/array/float32}}( [ 0.0, 9.0, 0.0, 9.0, 9.0, 9.0 ] ); + > idx = {{alias}}( 3, x, 2, y, 2 ) + 2 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var y0 = new {{alias:@stdlib/array/float32}}( [ 9.0, 0.0, 9.0, 9.0 ] ); + > var y1 = new {{alias:@stdlib/array/float32}}( y0.buffer, y0.BYTES_PER_ELEMENT*1 ); + > var idx = {{alias}}( 2, x1, 1, y1, 1 ) + 1 + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Returns the index of the first element in a single-precision floating-point + strided array which is less than a corresponding element in another single- + precision floating-point strided array using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float32Array + First input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Float32Array + Second input array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + // Standard usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 0.0, 0.0 ] ); + > var y = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 1.0, 0.0 ] ); + > var idx = {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + 2 + + // Using offsets: + > x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > y = new {{alias:@stdlib/array/float32}}( [ 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0 ] ); + > idx = {{alias}}.ndarray( 3, x, 2, 1, y, 2, 2 ) + 0 + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/docs/types/index.d.ts new file mode 100644 index 000000000000..494f50cc7b80 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/docs/types/index.d.ts @@ -0,0 +1,115 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `sfirstIndexLessThan`. +*/ +interface Routine { + /** + * Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @returns index + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + * var y = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * var idx = sfirstIndexLessThan( x.length, x, 1, y, 1 ); + * // returns 2 + */ + ( N: number, x: Float32Array, strideX: number, y: Float32Array, strideY: number ): number; + + /** + * Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array using alternative indexing semantics. + * + * ## Notes + * + * - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. + * + * @param N - number of indexed elements + * @param x - first input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param y - second input array + * @param strideY - stride length for `y` + * @param offsetY - starting index for `y` + * @returns index + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + * var y = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); + * + * var idx = sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // returns 2 + */ + ndarray( N: number, x: Float32Array, strideX: number, offsetX: number, y: Float32Array, strideY: number, offsetY: number ): number; +} + +/** +* Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array. +* +* ## Notes +* +* - If the function is unable to find an element in `x` which is less than a corresponding element in `y`, the function returns `-1`. +* +* @param N - number of indexed elements +* @param x - first input array +* @param strideX - stride length for `x` +* @param y - second input array +* @param strideY - stride length for `y` +* @returns index +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); +* var y = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* var idx = sfirstIndexLessThan( x.length, x, 1, y, 1 ); +* // returns 2 +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 0.0, 0.0, 0.0, 0.0 ] ); +* var y = new Float32Array( [ 0.0, 0.0, 1.0, 0.0 ] ); +* +* var idx = sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // returns 2 +*/ +declare var sfirstIndexLessThan: Routine; + + +// EXPORTS // + +export = sfirstIndexLessThan; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/docs/types/test.ts new file mode 100644 index 000000000000..f170cae22dbb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/docs/types/test.ts @@ -0,0 +1,208 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import sfirstIndexLessThan = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan( x.length, x, 1, y, 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan( '1', x, 1, y, 1 ); // $ExpectError + sfirstIndexLessThan( true, x, 1, y, 1 ); // $ExpectError + sfirstIndexLessThan( false, x, 1, y, 1 ); // $ExpectError + sfirstIndexLessThan( null, x, 1, y, 1 ); // $ExpectError + sfirstIndexLessThan( {}, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Float32Array... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan( x.length, '1', 1, y, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, true, 1, y, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, false, 1, y, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, null, 1, y, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, {}, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan( x.length, x, '1', y, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, x, true, y, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, x, false, y, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, x, null, y, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, x, {}, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float32Array... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan( x.length, x, 1, '1', 1 ); // $ExpectError + sfirstIndexLessThan( x.length, x, 1, true, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, x, 1, false, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, x, 1, null, 1 ); // $ExpectError + sfirstIndexLessThan( x.length, x, 1, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan( x.length, x, 1, y, '1' ); // $ExpectError + sfirstIndexLessThan( x.length, x, 1, y, true ); // $ExpectError + sfirstIndexLessThan( x.length, x, 1, y, false ); // $ExpectError + sfirstIndexLessThan( x.length, x, 1, y, null ); // $ExpectError + sfirstIndexLessThan( x.length, x, 1, y, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan(); // $ExpectError + sfirstIndexLessThan( 3, x ); // $ExpectError + sfirstIndexLessThan( 3, x, 1 ); // $ExpectError + sfirstIndexLessThan( 3, x, 1, y ); // $ExpectError + sfirstIndexLessThan( 3, x, 1, y, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan.ndarray( '1', x, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Float32Array... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan.ndarray( x.length, '1', 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, true, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, false, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, null, 1, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, {}, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan.ndarray( x.length, x, '1', 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError +} + + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan.ndarray( x.length, x, 1, '1', y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a Float32Array... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, '1', 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, true, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, false, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, null, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, {}, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, '1', 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, '1' ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + var y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + sfirstIndexLessThan.ndarray(); // $ExpectError + sfirstIndexLessThan.ndarray( x.length ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + sfirstIndexLessThan.ndarray( x.length, x, 1, 0, y, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/examples/c/example.c new file mode 100644 index 000000000000..3372aa5ce299 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/examples/c/example.c @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfirst_index_less_than.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + const float y[] = { 0.0f, -1.0f, -2.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Perform a search: + int idx = stdlib_strided_sfirst_index_less_than( N, x, strideX, y, strideY ); + + // Print the result: + printf( "index value: %d\n", idx ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/examples/index.js new file mode 100644 index 000000000000..17a74aa96392 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var sfirstIndexLessThan = require( './../lib' ); + +var x = discreteUniform( 10, 0, 10, { + 'dtype': 'float32' +}); +console.log( x ); + +var y = discreteUniform( 10, 0, 10, { + 'dtype': 'float32' +}); +console.log( y ); + +var idx = sfirstIndexLessThan( x.length, x, 1, y, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "blas", + "find", + "index", + "search", + "element", + "array", + "ndarray", + "strided", + "single", + "float", + "float32", + "float32array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/src/addon.c new file mode 100644 index 000000000000..25ee6041082d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/src/addon.c @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfirst_index_less_than.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float32array.h" +#include "stdlib/napi/create_int32.h" +#include "stdlib/napi/export.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, Y, N, strideY, argv, 3 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_sfirst_index_less_than)( N, X, strideX, Y, strideY ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 7 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_INT64( env, offsetY, argv, 6 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, Y, N, strideY, argv, 4 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_sfirst_index_less_than_ndarray)( N, X, strideX, offsetX, Y, strideY, offsetY ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/src/main.c new file mode 100644 index 000000000000..4f77233603e3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/src/main.c @@ -0,0 +1,69 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sfirst_index_less_than.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array. +* +* @param N number of indexed elements +* @param X first input array +* @param strideX stride length for X +* @param Y second input array +* @param strideY stride length for Y +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_sfirst_index_less_than)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const float *Y, const CBLAS_INT strideY ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oy = stdlib_strided_stride2offset( N, strideY ); + return API_SUFFIX(stdlib_strided_sfirst_index_less_than_ndarray)( N, X, strideX, ox, Y, strideY, oy ); +} + +/** +* Returns the index of the first element in a single-precision floating-point strided array which is less than a corresponding element in another single-precision floating-point strided array using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X first input array +* @param strideX stride length for X +* @param offsetX starting index for X +* @param Y second input array +* @param strideY stride length for Y +* @param offsetY starting index for Y +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_sfirst_index_less_than_ndarray)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, const float *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ) { + CBLAS_INT ix; + CBLAS_INT iy; + CBLAS_INT i; + + if ( N <= 0 ) { + return -1; + } + ix = offsetX; + iy = offsetY; + for ( i = 0; i < N; i++ ) { + if ( X[ ix ] < Y[ iy ] ) { + return i; + } + ix += strideX; + iy += strideY; + } + return -1; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.js new file mode 100644 index 000000000000..fada99187988 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var sfirstIndexLessThan = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof sfirstIndexLessThan.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var sfirstIndexLessThan = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfirstIndexLessThan, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var sfirstIndexLessThan; + var main; + + main = require( './../lib/sfirst_index_less_than.js' ); + + sfirstIndexLessThan = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sfirstIndexLessThan, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.ndarray.js new file mode 100644 index 000000000000..156732b8ff03 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.ndarray.js @@ -0,0 +1,284 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfirstIndexLessThan = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + // Nonnegative stride... + actual = sfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = new Float32Array( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = new Float32Array( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = sfirstIndexLessThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = new Float32Array( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = new Float32Array( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -1, 2, y, -2, 4 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -2, 4, y, -2, 4 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + actual = sfirstIndexLessThan( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexLessThan( -1, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', function test( t ) { + var actual; + + actual = sfirstIndexLessThan( 1, new Float32Array( [ NaN ] ), 1, 0, new Float32Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexLessThan( 1, new Float32Array( [ 0.0 ] ), 1, 0, new Float32Array( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', function test( t ) { + var actual; + + actual = sfirstIndexLessThan( 1, new Float32Array( [ -0.0 ] ), 1, 0, new Float32Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float32Array([ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]); + y = new Float32Array([ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]); + + actual = sfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float32Array([ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 5.0, + 5.0, + 5.0, // 0 + 1.0, // 1 + 5.0 // 2 + ]); + y = new Float32Array([ + 5.0, // 0 + 2.0, // 1 + 4.0 // 2 + ]); + + actual = sfirstIndexLessThan( 3, x, 1, 2, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 1.0, // 1 + 5.0 // 2 + ]); + y = new Float32Array([ + 0.0, + 0.0, + 5.0, // 0 + 2.0, // 1 + 4.0 // 2 + ]); + + actual = sfirstIndexLessThan( 3, x, 1, 0, y, 1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]); + y = new Float32Array([ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.ndarray.native.js new file mode 100644 index 000000000000..2aaf68fb7bee --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.ndarray.native.js @@ -0,0 +1,293 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfirstIndexLessThan = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sfirstIndexLessThan instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + // Nonnegative stride... + actual = sfirstIndexLessThan( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 2, 0, y, 2, 0 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = new Float32Array( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = new Float32Array( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = sfirstIndexLessThan( x.length, x, -1, x.length-1, y, -1, y.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = new Float32Array( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = new Float32Array( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -1, 2, y, -2, 4 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -2, 4, y, -2, 4 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + actual = sfirstIndexLessThan( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexLessThan( -1, x, 1, 0, y, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', opts, function test( t ) { + var actual; + + actual = sfirstIndexLessThan( 1, new Float32Array( [ NaN ] ), 1, 0, new Float32Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexLessThan( 1, new Float32Array( [ 0.0 ] ), 1, 0, new Float32Array( [ NaN ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', opts, function test( t ) { + var actual; + + actual = sfirstIndexLessThan( 1, new Float32Array( [ -0.0 ] ), 1, 0, new Float32Array( [ 0.0 ] ), 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float32Array([ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, 2, 0, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]); + y = new Float32Array([ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]); + + actual = sfirstIndexLessThan( 3, x, 1, 0, y, 2, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float32Array([ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, -2, 4, y, -1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 5.0, + 5.0, + 5.0, // 0 + 1.0, // 1 + 5.0 // 2 + ]); + y = new Float32Array([ + 5.0, // 0 + 2.0, // 1 + 4.0 // 2 + ]); + + actual = sfirstIndexLessThan( 3, x, 1, 2, y, 1, 0 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 1.0, // 1 + 5.0 // 2 + ]); + y = new Float32Array([ + 0.0, + 0.0, + 5.0, // 0 + 2.0, // 1 + 4.0 // 2 + ]); + + actual = sfirstIndexLessThan( 3, x, 1, 0, y, 1, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]); + y = new Float32Array([ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, 2, 0, y, -1, 2 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.sfirst_index_less_than.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.sfirst_index_less_than.js new file mode 100644 index 000000000000..f23f0a316404 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.sfirst_index_less_than.js @@ -0,0 +1,274 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sfirstIndexLessThan = require( './../lib/sfirst_index_less_than.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( sfirstIndexLessThan.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = sfirstIndexLessThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 2, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 1, y, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 2, y, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = new Float32Array( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = sfirstIndexLessThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = new Float32Array( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -2, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = new Float32Array( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -1, y, -2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -2, y, -2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float32Array( [ 2.0, 3.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 0, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexLessThan( -1, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', function test( t ) { + var actual; + + actual = sfirstIndexLessThan( 1, new Float32Array( [ NaN ] ), 1, new Float32Array( [ 0.0 ] ), 1 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexLessThan( 1, new Float32Array( [ 0.0 ] ), 1, new Float32Array( [ NaN ] ), 1 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', function test( t ) { + var actual; + + actual = sfirstIndexLessThan( 1, new Float32Array( [ -0.0 ] ), 1, new Float32Array( [ 0.0 ] ), 1 ); // eslint-disable-line max-len + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float32Array([ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, 2, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]); + y = new Float32Array([ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]); + + actual = sfirstIndexLessThan( 3, x, 1, y, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float32Array([ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, -2, y, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]); + y = new Float32Array([ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, 2, y, -1 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float32Array([ + 6.0, + 0.0, // 2 + 5.0, + 1.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float32Array([ + 0.0, + 0.0, + 0.0, + 5.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + + // Create offset views... + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = sfirstIndexLessThan( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.sfirst_index_less_than.native.js b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.sfirst_index_less_than.native.js new file mode 100644 index 000000000000..a7fafb965efd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sfirst-index-less-than/test/test.sfirst_index_less_than.native.js @@ -0,0 +1,279 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sfirstIndexLessThan = tryRequire( resolve( __dirname, './../lib/sfirst_index_less_than.native.js' ) ); +var opts = { + 'skip': ( sfirstIndexLessThan instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sfirstIndexLessThan, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the first index of an element which is less than a corresponding element in another array', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 6.0, 1.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 2.0, 4.0, 4.0, 4.0, 4.0 ] ); + + // Nonnegative stride... + actual = sfirstIndexLessThan( x.length, x, 1, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 1.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 2.0, 4.0, 4.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 2, y, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 1, y, 2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + x = new Float32Array( [ 6.0, 5.0, 5.0, 5.0, 1.0, 5.0 ] ); + y = new Float32Array( [ 5.0, 4.0, 4.0, 4.0, 2.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, 2, y, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + x = new Float32Array( [ 1.0, 5.0, 4.0, 3.0, 2.0, 6.0 ] ); + y = new Float32Array( [ 2.0, 6.0, 5.0, 4.0, 3.0, 5.0 ] ); + + actual = sfirstIndexLessThan( x.length, x, -1, y, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + x = new Float32Array( [ 3.0, 5.0, 4.0, 6.0, 2.0, 5.0 ] ); + y = new Float32Array( [ 4.0, 6.0, 5.0, 5.0, 3.0, 6.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -2, y, -1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 5.0, 6.0, 3.0, 2.0, 4.0 ] ); + y = new Float32Array( [ 6.0, 6.0, 5.0, 4.0, 3.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -1, y, -2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 ] ); + y = new Float32Array( [ 4.0, 4.0, 4.0, 4.0, 4.0, 4.0 ] ); + + actual = sfirstIndexLessThan( 3, x, -2, y, -2 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + y = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + + actual = sfirstIndexLessThan( 0, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexLessThan( -1, x, 1, y, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if comparisons involve `NaN` values', opts, function test( t ) { + var actual; + + actual = sfirstIndexLessThan( 1, new Float32Array( [ NaN ] ), 1, new Float32Array( [ 0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = sfirstIndexLessThan( 1, new Float32Array( [ 0.0 ] ), 1, new Float32Array( [ NaN ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function treats `-0` and `+0` as equal', opts, function test( t ) { + var actual; + + actual = sfirstIndexLessThan( 1, new Float32Array( [ -0.0 ] ), 1, new Float32Array( [ 0.0 ] ), 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 2 + ]); + y = new Float32Array([ + 5.0, // 0 + 2.0, // 1 + 4.0, // 2 + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, 2, y, 1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 1.0, // 1 + 5.0, // 2 + 4.0, + 5.0 + ]); + y = new Float32Array([ + 5.0, // 0 + 0.0, + 4.0, // 1 + 0.0, + 3.0 // 2 + ]); + + actual = sfirstIndexLessThan( 3, x, 1, y, 2 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 2 + 2.0, + 1.0, // 1 + 4.0, + 5.0 // 0 + ]); + y = new Float32Array([ + 3.0, // 2 + 2.0, // 1 + 5.0, // 0 + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, -2, y, -1 ); + + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var actual; + var x; + var y; + + x = new Float32Array([ + 6.0, // 0 + 2.0, + 5.0, // 1 + 4.0, + 0.0, // 2 + 6.0 + ]); + y = new Float32Array([ + 5.0, // 2 + 4.0, // 1 + 5.0, // 0 + 0.0, + 0.0, + 0.0 + ]); + + actual = sfirstIndexLessThan( 3, x, 2, y, -1 ); + + t.strictEqual( actual, 2, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var actual; + var x0; + var y0; + var x1; + var y1; + + // Initial arrays... + x0 = new Float32Array([ + 6.0, + 0.0, // 2 + 5.0, + 1.0, // 1 + 5.0, + 6.0 // 0 + ]); + y0 = new Float32Array([ + 0.0, + 0.0, + 0.0, + 5.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + + // Create offset views... + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + actual = sfirstIndexLessThan( 3, x1, -2, y1, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/docs/repl.txt index 5fbb693f40b9..f02a766a9f0d 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/docs/repl.txt @@ -37,7 +37,7 @@ 1 -{{alias}}( N, searchElement, x, strideX, offsetX ) +{{alias}}.ndarray( N, searchElement, x, strideX, offsetX ) Returns the first index of a specified search element in a single-precision floating-point strided array using alternative indexing semantics. diff --git a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.ndarray.js index dd71e13ae2be..8911c6247d71 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.ndarray.js @@ -68,7 +68,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { var actual; actual = sindexOf( 0, 2.0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.ndarray.native.js index d4cb0bbb0dec..95c1cb837798 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.ndarray.native.js @@ -77,7 +77,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; actual = sindexOf( 0, 2.0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.sindex_of.js b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.sindex_of.js index 78a023a0a434..6d9be76f62c3 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.sindex_of.js +++ b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.sindex_of.js @@ -68,7 +68,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { var actual; actual = sindexOf( 0, 2.0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.sindex_of.native.js b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.sindex_of.native.js index 2bd8dbdb6faf..7bda2ba1dc31 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.sindex_of.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/sindex-of/test/test.sindex_of.native.js @@ -77,7 +77,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; actual = sindexOf( 0, 2.0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/lib/ndarray.js index 6821b123f546..af1a3c21adc4 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/lib/ndarray.js @@ -58,8 +58,7 @@ function slastIndexOf( N, searchElement, x, strideX, offsetX ) { return idx; } // Convert the index from reversed "view" to an index in the original "view": - idx = N - 1 - idx; - return idx; + return N - 1 - idx; } diff --git a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.ndarray.js index 8d938561bb86..29a6a4b31e89 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.ndarray.js @@ -68,7 +68,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { var actual; actual = slastIndexOf( 0, 2.0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); // eslint-disable-line max-len diff --git a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.ndarray.native.js index 5a5b57e5d948..3283ccea7c36 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.ndarray.native.js @@ -77,7 +77,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; actual = slastIndexOf( 0, 2.0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1, 0 ); // eslint-disable-line max-len diff --git a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.slast_index_of.js b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.slast_index_of.js index f37f88d6d8b1..8fdd41b42138 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.slast_index_of.js +++ b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.slast_index_of.js @@ -68,7 +68,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { var actual; actual = slastIndexOf( 0, 2.0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.slast_index_of.native.js b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.slast_index_of.native.js index b8e6bbe4cbf3..04d74a842d8b 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.slast_index_of.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/slast-index-of/test/test.slast_index_of.native.js @@ -77,7 +77,7 @@ tape( 'the function returns the last index of an element which equals a provided t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; actual = slastIndexOf( 0, 2.0, new Float32Array( [ 1.0, 2.0, 3.0 ] ), 1 ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/README.md b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/README.md new file mode 100644 index 000000000000..c0e60d997d5e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/README.md @@ -0,0 +1,329 @@ + + +# sreplicate + +> Replicate each single-precision floating-point strided array element a specified number of times. + +
+ +
+ + + +
+ +## Usage + +```javascript +var sreplicate = require( '@stdlib/blas/ext/base/sreplicate' ); +``` + +#### sreplicate( N, k, x, strideX, out, strideOut ) + +Replicates each single-precision floating-point strided array element a specified number of times. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +var out = new Float32Array( 6 ); + +sreplicate( x.length, 2, x, 1, out, 1 ); +// out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **k**: number of times to replicate each element. +- **x**: input [`Float32Array`][@stdlib/array/float32]. +- **strideX**: stride length for `x`. +- **out**: output [`Float32Array`][@stdlib/array/float32]. +- **strideOut**: stride length for `out`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to replicate every other element: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out = new Float32Array( 6 ); + +sreplicate( 3, 2, x, 2, out, 1 ); +// out => [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +// Initial arrays... +var x0 = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out0 = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +// Create offset views... +var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var out1 = new Float32Array( out0.buffer, out0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +sreplicate( 3, 2, x1, 2, out1, 1 ); +// out0 => [ 0.0, 0.0, 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ] +``` + +#### sreplicate.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) + +Replicates each single-precision floating-point strided array element a specified number of times using alternative indexing semantics. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +var out = new Float32Array( 6 ); + +sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +// out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetOut**: starting index for `out`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to replicate every other element in the strided input array starting from the second element and to store in the last `N*k` elements of the strided output array starting from the last element: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +sreplicate.ndarray( 3, 2, x, 2, 1, out, -1, out.length-1 ); +// out => [ 0.0, 0.0, 6.0, 6.0, 4.0, 4.0, 2.0, 2.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0` or `k <= 0`, both functions return `out` unchanged. +- Both functions assume that the output array supports `N*k` indexed elements. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sreplicate = require( '@stdlib/blas/ext/base/sreplicate' ); + +var x = discreteUniform( 5, -100, 100, { + 'dtype': 'float32' +}); +console.log( x ); + +var out = new Float32Array( x.length * 3 ); +console.log( out ); + +sreplicate( x.length, 3, x, 1, out, 1 ); +console.log( out ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/sreplicate.h" +``` + +#### stdlib_strided_sreplicate( N, k, \*X, strideX, \*Out, strideOut ) + +Replicates each single-precision floating-point strided array element a specified number of times. + +```c +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; +float out[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + +stdlib_strided_sreplicate( 4, 2, x, 1, out, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **k**: `[in] CBLAS_INT` number of times to replicate each element. +- **X**: `[in] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Out**: `[out] float*` output array. +- **strideOut**: `[in] CBLAS_INT` stride length for `Out`. + +```c +void stdlib_strided_sreplicate( const CBLAS_INT N, const CBLAS_INT k, const float *X, const CBLAS_INT strideX, float *Out, const CBLAS_INT strideOut ); +``` + + + +#### stdlib_strided_sreplicate_ndarray( N, k, \*X, strideX, offsetX, \*Out, strideOut, offsetOut ) + + + +Replicates each single-precision floating-point strided array element a specified number of times using alternative indexing semantics. + +```c +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; +float out[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + +stdlib_strided_sreplicate_ndarray( 4, 2, x, 1, 0, out, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **k**: `[in] CBLAS_INT` number of times to replicate each element. +- **X**: `[in] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Out**: `[out] float*` output array. +- **strideOut**: `[in] CBLAS_INT` stride length for `Out`. +- **offsetOut**: `[in] CBLAS_INT` starting index for `Out`. + +```c +void stdlib_strided_sreplicate_ndarray( const CBLAS_INT N, const CBLAS_INT k, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, float *Out, const CBLAS_INT strideOut, const CBLAS_INT offsetOut ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/sreplicate.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, 2.0f, 3.0f }; + float out[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + + // Specify the number of elements: + const int N = 3; + + // Specify the number of times to replicate each element: + const int k = 2; + + // Specify stride lengths: + const int strideX = 1; + const int strideOut = 1; + + // Replicate elements: + stdlib_strided_sreplicate( N, k, x, strideX, out, strideOut ); + + // Print the result: + for ( int i = 0; i < 6; i++ ) { + printf( "out[ %d ] = %f\n", i, out[ i ] ); + } +} +``` + +
+ + + +
+ + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.js new file mode 100644 index 000000000000..2f34d577035c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'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 pow = require( '@stdlib/math/base/special/pow' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sreplicate = require( './../lib/sreplicate.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( len * 2, options.dtype ); + var x = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x[ 0 ] += 1.0; + v = sreplicate( x.length, 2, x, 1, out, 1 ); + if ( isnanf( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.native.js new file mode 100644 index 000000000000..15e074883081 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.native.js @@ -0,0 +1,111 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sreplicate = tryRequire( resolve( __dirname, './../lib/sreplicate.native.js' ) ); +var opts = { + 'skip': ( sreplicate instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( len * 2, options.dtype ); + var x = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x[ 0 ] += 1.0; + v = sreplicate( x.length, 2, x, 1, out, 1 ); + if ( isnanf( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..1dc03b94cefe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.ndarray.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'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 pow = require( '@stdlib/math/base/special/pow' ); +var zeros = require( '@stdlib/array/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sreplicate = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( len * 2, options.dtype ); + var x = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x[ 0 ] += 1.0; + v = sreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + if ( isnanf( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..219f0aeb8e14 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,111 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var zeros = require( '@stdlib/array/zeros' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sreplicate = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sreplicate instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( len * 2, options.dtype ); + var x = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var v; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + x[ 0 ] += 1.0; + v = sreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + if ( isnanf( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( v[ i % ( len * 2 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/sreplicate/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..8476b5951b4b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/benchmark/c/benchmark.length.c @@ -0,0 +1,209 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sreplicate.h" +#include +#include +#include +#include +#include + +#define NAME "sreplicate" +#define ITERATIONS 1000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static float rand_float( void ) { + int r = rand(); + return (float)r / ( (float)RAND_MAX + 1.0f ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + float *out; + double t; + float *x; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + out = (float *) malloc( len * 2 * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_float() * 20000.0f ) - 10000.0f; + } + for ( i = 0; i < len*2; i++ ) { + out[ i ] = 0.0f; + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ 0 ] += 1.0f; + stdlib_strided_sreplicate( len, 2, x, 1, out, 1 ); + if ( out[ 0 ] != out[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( out[ (len*2)-1 ] != out[ (len*2)-1 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( out ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + float *out; + double t; + float *x; + int i; + + x = (float *) malloc( len * sizeof( float ) ); + out = (float *) malloc( len * 2 * sizeof( float ) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = ( rand_float() * 20000.0f ) - 10000.0f; + } + for ( i = 0; i < len*2; i++ ) { + out[ i ] = 0.0f; + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ 0 ] += 1.0f; + stdlib_strided_sreplicate_ndarray( len, 2, x, 1, 0, out, 1, 0 ); + if ( out[ 0 ] != out[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( out[ (len*2)-1 ] != out[ (len*2)-1 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( out ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/docs/repl.txt new file mode 100644 index 000000000000..2303aef2ee89 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/docs/repl.txt @@ -0,0 +1,119 @@ + +{{alias}}( N, k, x, strideX, out, strideOut ) + Replicates each single-precision floating-point strided array element a + specified number of times. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0` or `k <= 0`, the function returns `out` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + k: integer + Number of times to replicate each element. + + x: Float32Array + Input array. + + strideX: integer + Stride length for `x`. + + out: Float32Array + Output array. + + strideOut: integer + Stride length for `out`. + + Returns + ------- + out: Float32Array + Output array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0 ] ); + > var out = new {{alias:@stdlib/array/float32}}( 6 ); + > {{alias}}( x.length, 2, x, 1, out, 1 ) + [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > out = new {{alias:@stdlib/array/float32}}( 6 ); + > {{alias}}( 3, 2, x, 2, out, 1 ) + [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var out0 = new {{alias:@stdlib/array/float32}}( 6 ); + > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var out1 = new {{alias:@stdlib/array/float32}}( out0.buffer, out0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 2, 2, x1, 2, out1, 1 ) + [ 2.0, 2.0, 4.0, 4.0, 0.0 ] + > out0 + [ 0.0, 2.0, 2.0, 4.0, 4.0, 0.0 ] + + +{{alias}}.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) + Replicates each single-precision floating-point strided array element a + specified number of times using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + k: integer + Number of times to replicate each element. + + x: Float32Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + out: Float32Array + Output array. + + strideOut: integer + Stride length for `out`. + + offsetOut: integer + Starting index for `out`. + + Returns + ------- + out: Float32Array + Output array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0 ] ); + > var out = new {{alias:@stdlib/array/float32}}( 6 ); + > {{alias}}.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ) + [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + + // Advanced indexing: + > x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > out = new {{alias:@stdlib/array/float32}}( 6 ); + > {{alias}}.ndarray( 3, 2, x, 2, 1, out, 1, 0 ) + [ 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/docs/types/index.d.ts new file mode 100644 index 000000000000..32b597117b3c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/docs/types/index.d.ts @@ -0,0 +1,106 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `sreplicate`. +*/ +interface Routine { + /** + * Replicates each single-precision floating-point strided array element a specified number of times. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + * var out = new Float32Array( 6 ); + * + * sreplicate( x.length, 2, x, 1, out, 1 ); + * // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + */ + ( N: number, k: number, x: Float32Array, strideX: number, out: Float32Array, strideOut: number ): Float32Array; + + /** + * Replicates each single-precision floating-point strided array element a specified number of times using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @param offsetOut - starting index for `out` + * @returns output array + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + * var out = new Float32Array( 6 ); + * + * sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); + * // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] + */ + ndarray( N: number, k: number, x: Float32Array, strideX: number, offsetX: number, out: Float32Array, strideOut: number, offsetOut: number ): Float32Array; +} + +/** +* Replicates each single-precision floating-point strided array element a specified number of times. +* +* @param N - number of indexed elements +* @param k - number of times to replicate each element +* @param x - input array +* @param strideX - stride length for `x` +* @param out - output array +* @param strideOut - stride length for `out` +* @returns output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float32Array( 6 ); +* +* sreplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float32Array( 6 ); +* +* sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +declare var sreplicate: Routine; + + +// EXPORTS // + +export = sreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/docs/types/test.ts new file mode 100644 index 000000000000..01e9f44292b3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/docs/types/test.ts @@ -0,0 +1,282 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import sreplicate = require( './index' ); + + +// TESTS // + +// The function returns a Float32Array... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate( x.length, 2, x, 1, out, 1 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate( '10', 2, x, 1, out, 1 ); // $ExpectError + sreplicate( true, 2, x, 1, out, 1 ); // $ExpectError + sreplicate( false, 2, x, 1, out, 1 ); // $ExpectError + sreplicate( null, 2, x, 1, out, 1 ); // $ExpectError + sreplicate( undefined, 2, x, 1, out, 1 ); // $ExpectError + sreplicate( [], 2, x, 1, out, 1 ); // $ExpectError + sreplicate( {}, 2, x, 1, out, 1 ); // $ExpectError + sreplicate( ( x: number ): number => x, 2, x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate( x.length, '10', x, 1, out, 1 ); // $ExpectError + sreplicate( x.length, true, x, 1, out, 1 ); // $ExpectError + sreplicate( x.length, false, x, 1, out, 1 ); // $ExpectError + sreplicate( x.length, null, x, 1, out, 1 ); // $ExpectError + sreplicate( x.length, undefined, x, 1, out, 1 ); // $ExpectError + sreplicate( x.length, [], x, 1, out, 1 ); // $ExpectError + sreplicate( x.length, {}, x, 1, out, 1 ); // $ExpectError + sreplicate( x.length, ( x: number ): number => x, x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate( x.length, 2, 10, 1, out, 1 ); // $ExpectError + sreplicate( x.length, 2, '10', 1, out, 1 ); // $ExpectError + sreplicate( x.length, 2, true, 1, out, 1 ); // $ExpectError + sreplicate( x.length, 2, false, 1, out, 1 ); // $ExpectError + sreplicate( x.length, 2, null, 1, out, 1 ); // $ExpectError + sreplicate( x.length, 2, undefined, 1, out, 1 ); // $ExpectError + sreplicate( x.length, 2, [ '1' ], 1, out, 1 ); // $ExpectError + sreplicate( x.length, 2, {}, 1, out, 1 ); // $ExpectError + sreplicate( x.length, 2, ( x: number ): number => x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate( x.length, 2, x, '10', out, 1 ); // $ExpectError + sreplicate( x.length, 2, x, true, out, 1 ); // $ExpectError + sreplicate( x.length, 2, x, false, out, 1 ); // $ExpectError + sreplicate( x.length, 2, x, null, out, 1 ); // $ExpectError + sreplicate( x.length, 2, x, undefined, out, 1 ); // $ExpectError + sreplicate( x.length, 2, x, [], out, 1 ); // $ExpectError + sreplicate( x.length, 2, x, {}, out, 1 ); // $ExpectError + sreplicate( x.length, 2, x, ( x: number ): number => x, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sreplicate( x.length, 2, x, 1, 10, 1 ); // $ExpectError + sreplicate( x.length, 2, x, 1, '10', 1 ); // $ExpectError + sreplicate( x.length, 2, x, 1, true, 1 ); // $ExpectError + sreplicate( x.length, 2, x, 1, false, 1 ); // $ExpectError + sreplicate( x.length, 2, x, 1, null, 1 ); // $ExpectError + sreplicate( x.length, 2, x, 1, undefined, 1 ); // $ExpectError + sreplicate( x.length, 2, x, 1, [ '1' ], 1 ); // $ExpectError + sreplicate( x.length, 2, x, 1, {}, 1 ); // $ExpectError + sreplicate( x.length, 2, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate( x.length, 2, x, 1, out, '10' ); // $ExpectError + sreplicate( x.length, 2, x, 1, out, true ); // $ExpectError + sreplicate( x.length, 2, x, 1, out, false ); // $ExpectError + sreplicate( x.length, 2, x, 1, out, null ); // $ExpectError + sreplicate( x.length, 2, x, 1, out, undefined ); // $ExpectError + sreplicate( x.length, 2, x, 1, out, [] ); // $ExpectError + sreplicate( x.length, 2, x, 1, out, {} ); // $ExpectError + sreplicate( x.length, 2, x, 1, out, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate(); // $ExpectError + sreplicate( x.length ); // $ExpectError + sreplicate( x.length, 2 ); // $ExpectError + sreplicate( x.length, 2, x ); // $ExpectError + sreplicate( x.length, 2, x, 1 ); // $ExpectError + sreplicate( x.length, 2, x, 1, out ); // $ExpectError + sreplicate( x.length, 2, x, 1, out, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float32Array... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate.ndarray( '10', 2, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( true, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( false, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( null, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( undefined, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( [], 2, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( {}, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( ( x: number ): number => x, 2, x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate.ndarray( x.length, '10', x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, true, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, false, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, null, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, undefined, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, [], x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, {}, x, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, ( x: number ): number => x, x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate.ndarray( x.length, 2, 10, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, '10', 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, true, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, false, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, null, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, undefined, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, [ '1' ], 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, {}, 1, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, ( x: number ): number => x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate.ndarray( x.length, 2, x, '10', 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, true, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, false, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, null, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, undefined, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, [], 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, {}, 0, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, ( x: number ): number => x, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate.ndarray( x.length, 2, x, 1, '10', out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, true, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, false, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, null, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, undefined, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, [], out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, {}, out, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, ( x: number ): number => x, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sreplicate.ndarray( x.length, 2, x, 1, 0, 10, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, '10', 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, true, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, false, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, null, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, undefined, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, {}, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate.ndarray( x.length, 2, x, 1, 0, out, '10', 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, true, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, false, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, null, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, undefined, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, [], 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, {}, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, '10' ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, true ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, false ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, null ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, undefined ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, [] ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, {} ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + const out = new Float32Array( 20 ); + + sreplicate.ndarray(); // $ExpectError + sreplicate.ndarray( x.length ); // $ExpectError + sreplicate.ndarray( x.length, 2 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1 ); // $ExpectError + sreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/examples/c/example.c new file mode 100644 index 000000000000..b449b9dee31c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/examples/c/example.c @@ -0,0 +1,44 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sreplicate.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, 2.0f, 3.0f }; + float out[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + + // Specify the number of elements: + const int N = 3; + + // Specify the number of times to replicate each element: + const int k = 2; + + // Specify stride lengths: + const int strideX = 1; + const int strideOut = 1; + + // Replicate elements: + stdlib_strided_sreplicate( N, k, x, strideX, out, strideOut ); + + // Print the result: + for ( int i = 0; i < 6; i++ ) { + printf( "out[ %d ] = %f\n", i, out[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/examples/index.js new file mode 100644 index 000000000000..a9a0a51f47f9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/examples/index.js @@ -0,0 +1,34 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sreplicate = require( './../lib' ); + +var x = discreteUniform( 5, -100, 100, { + 'dtype': 'float32' +}); +console.log( x ); + +var out = new Float32Array( x.length * 3 ); +console.log( out ); + +sreplicate( x.length, 3, x, 1, out, 1 ); +console.log( out ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var sreplicate = require( '@stdlib/blas/ext/base/sreplicate' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float32Array( 6 ); +* +* sreplicate.ndarray( 3, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var sreplicate; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + sreplicate = main; +} else { + sreplicate = tmp; +} + + +// EXPORTS // + +module.exports = sreplicate; + +// exports: { "ndarray": "sreplicate.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/main.js new file mode 100644 index 000000000000..96f592745652 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sreplicate = require( './sreplicate.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( sreplicate, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/native.js new file mode 100644 index 000000000000..f982ba86ac25 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sreplicate = require( './sreplicate.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( sreplicate, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/ndarray.js new file mode 100644 index 000000000000..22f71c03ba39 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/ndarray.js @@ -0,0 +1,71 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MAIN // + +/** +* Replicates each single-precision floating-point strided array element a specified number of times. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Float32Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @param {NonNegativeInteger} offsetOut - starting index for `out` +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float32Array( 6 ); +* +* sreplicate( 3, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +function sreplicate( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) { + var io; + var ix; + var v; + var i; + var j; + + if ( N <= 0 || k <= 0 ) { + return out; + } + ix = offsetX; + io = offsetOut; + for ( i = 0; i < N; i++ ) { + v = x[ ix ]; + for ( j = 0; j < k; j++ ) { + out[ io ] = v; + io += strideOut; + } + ix += strideX; + } + return out; +} + + +// EXPORTS // + +module.exports = sreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/ndarray.native.js new file mode 100644 index 000000000000..7abc7191d5bf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/ndarray.native.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replicates each single-precision floating-point strided array element a specified number of times. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Float32Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @param {NonNegativeInteger} offsetOut - starting index for `out` +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float32Array( 6 ); +* +* var v = sreplicate( 3, 2, x, 1, 0, out, 1, 0 ); +* // returns [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +function sreplicate( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) { + addon.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ); + return out; +} + + +// EXPORTS // + +module.exports = sreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/sreplicate.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/sreplicate.js new file mode 100644 index 000000000000..71da47c7fc9c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/sreplicate.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Replicates each single-precision floating-point strided array element a specified number of times. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {Float32Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float32Array( 6 ); +* +* var v = sreplicate( 3, 2, x, 1, out, 1 ); +* // returns [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +function sreplicate( N, k, x, strideX, out, strideOut ) { + var ox = stride2offset( N, strideX ); + var oo = stride2offset( N * k, strideOut ); + return ndarray( N, k, x, strideX, ox, out, strideOut, oo ); +} + + +// EXPORTS // + +module.exports = sreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/sreplicate.native.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/sreplicate.native.js new file mode 100644 index 000000000000..f290744fe556 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/lib/sreplicate.native.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replicates each single-precision floating-point strided array element a specified number of times. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Float32Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {Float32Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); +* var out = new Float32Array( 6 ); +* +* var v = sreplicate( 3, 2, x, 1, out, 1 ); +* // returns [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] +*/ +function sreplicate( N, k, x, strideX, out, strideOut ) { + addon( N, k, x, strideX, out, strideOut ); + return out; +} + + +// EXPORTS // + +module.exports = sreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/manifest.json new file mode 100644 index 000000000000..db2cfcfefe78 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/manifest.json @@ -0,0 +1,78 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float32array", + "@stdlib/strided/base/stride2offset", + "@stdlib/blas/base/shared" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/strided/base/stride2offset", + "@stdlib/blas/base/shared" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/strided/base/stride2offset", + "@stdlib/blas/base/shared" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/package.json b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/package.json new file mode 100644 index 000000000000..01446ce271ec --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/package.json @@ -0,0 +1,77 @@ +{ + "name": "@stdlib/blas/ext/base/sreplicate", + "version": "0.0.0", + "description": "Replicate each single-precision floating-point strided array element a specified number of times.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "replicate", + "repeat", + "copy", + "strided", + "strided array", + "typed", + "array", + "float32", + "float", + "single", + "float32array" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/src/addon.c new file mode 100644 index 000000000000..b8cda935968d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/src/addon.c @@ -0,0 +1,67 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sreplicate.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float32array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, k, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideOut, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, Out, N*k, strideOut, argv, 4 ); + API_SUFFIX(stdlib_strided_sreplicate)( N, k, X, strideX, Out, strideOut ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 8 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, k, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, strideOut, argv, 6 ); + STDLIB_NAPI_ARGV_INT64( env, offsetOut, argv, 7 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, Out, N*k, strideOut, argv, 5 ); + API_SUFFIX(stdlib_strided_sreplicate_ndarray)( N, k, X, strideX, offsetX, Out, strideOut, offsetOut ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/src/main.c new file mode 100644 index 000000000000..64a3f0fbfff5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/src/main.c @@ -0,0 +1,71 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sreplicate.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Replicates each single-precision floating-point strided array element a specified number of times. +* +* @param N number of indexed elements +* @param k number of times to replicate each element +* @param X input array +* @param strideX stride length for X +* @param Out output array +* @param strideOut stride length for Out +*/ +void API_SUFFIX(stdlib_strided_sreplicate)( const CBLAS_INT N, const CBLAS_INT k, const float *X, const CBLAS_INT strideX, float *Out, const CBLAS_INT strideOut ) { + const CBLAS_INT offsetX = stdlib_strided_stride2offset( N, strideX ); + const CBLAS_INT offsetOut = stdlib_strided_stride2offset( N * k, strideOut ); + API_SUFFIX(stdlib_strided_sreplicate_ndarray)( N, k, X, strideX, offsetX, Out, strideOut, offsetOut ); +} + +/** +* Replicates each single-precision floating-point strided array element a specified number of times using alternative indexing semantics. +* +* @param N number of indexed elements +* @param k number of times to replicate each element +* @param X input array +* @param strideX stride length for X +* @param offsetX starting index for X +* @param Out output array +* @param strideOut stride length for Out +* @param offsetOut starting index for Out +*/ +void API_SUFFIX(stdlib_strided_sreplicate_ndarray)( const CBLAS_INT N, const CBLAS_INT k, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, float *Out, const CBLAS_INT strideOut, const CBLAS_INT offsetOut ) { + CBLAS_INT ix; + CBLAS_INT io; + CBLAS_INT i; + CBLAS_INT j; + float v; + + if ( N <= 0 || k <= 0 ) { + return; + } + ix = offsetX; + io = offsetOut; + for ( i = 0; i < N; i++ ) { + v = X[ ix ]; + for ( j = 0; j < k; j++ ) { + Out[ io ] = v; + io += strideOut; + } + ix += strideX; + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.js new file mode 100644 index 000000000000..64885229fcfb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var sreplicate = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof sreplicate.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var sreplicate = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sreplicate, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var sreplicate; + var main; + + main = require( './../lib/sreplicate.js' ); + + sreplicate = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sreplicate, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.ndarray.js new file mode 100644 index 000000000000..9e48d9e0a4d6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.ndarray.js @@ -0,0 +1,294 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sreplicate = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', function test( t ) { + t.strictEqual( sreplicate.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 6 ); + + sreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + expected = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + out = new Float32Array( 12 ); + + sreplicate( x.length, 3, x, 1, 0, out, 1, 0 ); + expected = new Float32Array( [ 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 3 ); + + sreplicate( x.length, 1, x, 1, 0, out, 1, 0 ); + expected = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 5.0 ] ); + out = new Float32Array( 3 ); + + sreplicate( 1, 3, x, 1, 0, out, 1, 0 ); + expected = new Float32Array( [ 5.0, 5.0, 5.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var v; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 6 ); + + v = sreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + sreplicate( -1, 2, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + sreplicate( 0, 2, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + sreplicate( x.length, -1, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + sreplicate( x.length, 0, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, 2, 0, out, 1, 0 ); + + expected = new Float32Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float32Array( 12 ); + + sreplicate( 3, 2, x, 1, 0, out, 2, 0 ); + + expected = new Float32Array( [ 1.0, 0.0, 1.0, 0.0, 2.0, 0.0, 2.0, 0.0, 3.0, 0.0, 3.0, 0.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, -2, 4, out, -1, 5 ); + + expected = new Float32Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]); + out = new Float32Array( 8 ); + + sreplicate( 4, 2, x, 2, 1, out, 1, 0 ); + + expected = new Float32Array( [ 1.0, 1.0, -2.0, -2.0, 2.0, 2.0, 4.0, 4.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output offset', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float32Array( 8 ); + + sreplicate( 3, 2, x, 1, 0, out, 1, 2 ); + + expected = new Float32Array( [ 0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a zero `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, + 2.0, // 0, 1, 2 + 3.0 + ]); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, 0, 1, out, 1, 0 ); + + expected = new Float32Array( [ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, 2, 0, out, -1, 5 ); + + expected = new Float32Array( [ 5.0, 5.0, 3.0, 3.0, 1.0, 1.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.ndarray.native.js new file mode 100644 index 000000000000..5fa3a77f43b5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.ndarray.native.js @@ -0,0 +1,303 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var Float32Array = require( '@stdlib/array/float32' ); + + +// VARIABLES // + +var sreplicate = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sreplicate instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', opts, function test( t ) { + t.strictEqual( sreplicate.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 6 ); + + sreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + expected = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + out = new Float32Array( 12 ); + + sreplicate( x.length, 3, x, 1, 0, out, 1, 0 ); + expected = new Float32Array( [ 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 3 ); + + sreplicate( x.length, 1, x, 1, 0, out, 1, 0 ); + expected = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 5.0 ] ); + out = new Float32Array( 3 ); + + sreplicate( 1, 3, x, 1, 0, out, 1, 0 ); + expected = new Float32Array( [ 5.0, 5.0, 5.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var v; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 6 ); + + v = sreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + sreplicate( -1, 2, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + sreplicate( 0, 2, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + sreplicate( x.length, -1, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + sreplicate( x.length, 0, x, 1, 0, out, 1, 0 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, 2, 0, out, 1, 0 ); + + expected = new Float32Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float32Array( 12 ); + + sreplicate( 3, 2, x, 1, 0, out, 2, 0 ); + + expected = new Float32Array( [ 1.0, 0.0, 1.0, 0.0, 2.0, 0.0, 2.0, 0.0, 3.0, 0.0, 3.0, 0.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, -2, 4, out, -1, 5 ); + + expected = new Float32Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]); + out = new Float32Array( 8 ); + + sreplicate( 4, 2, x, 2, 1, out, 1, 0 ); + + expected = new Float32Array( [ 1.0, 1.0, -2.0, -2.0, 2.0, 2.0, 4.0, 4.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output offset', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float32Array( 8 ); + + sreplicate( 3, 2, x, 1, 0, out, 1, 2 ); + + expected = new Float32Array( [ 0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a zero `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, + 2.0, // 0, 1, 2 + 3.0 + ]); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, 0, 1, out, 1, 0 ); + + expected = new Float32Array( [ 2.0, 2.0, 2.0, 2.0, 2.0, 2.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, 2, 0, out, -1, 5 ); + + expected = new Float32Array( [ 5.0, 5.0, 3.0, 3.0, 1.0, 1.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.sreplicate.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.sreplicate.js new file mode 100644 index 000000000000..994ffffdb698 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.sreplicate.js @@ -0,0 +1,302 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sreplicate = require( './../lib/sreplicate.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( sreplicate.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 6 ); + + sreplicate( x.length, 2, x, 1, out, 1 ); + expected = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + out = new Float32Array( 12 ); + + sreplicate( x.length, 3, x, 1, out, 1 ); + expected = new Float32Array( [ 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 3 ); + + sreplicate( x.length, 1, x, 1, out, 1 ); + expected = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 5.0 ] ); + out = new Float32Array( 3 ); + + sreplicate( 1, 3, x, 1, out, 1 ); + expected = new Float32Array( [ 5.0, 5.0, 5.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var v; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 6 ); + + v = sreplicate( x.length, 2, x, 1, out, 1 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + sreplicate( -1, 2, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + sreplicate( 0, 2, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + sreplicate( x.length, -1, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + sreplicate( x.length, 0, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float32Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + sreplicate( 3, 2, x, 2, out, 1 ); + + expected = new Float32Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, // 1 + 3.0 // 2 + ]); + out = new Float32Array([ + 0.0, // 0 + 0.0, + 0.0, // 0 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 1 + 0.0, + 0.0, // 2 + 0.0, + 0.0, // 2 + 0.0 + ]); + + sreplicate( 3, 2, x, 1, out, 2 ); + + expected = new Float32Array( [ 1.0, 0.0, 1.0, 0.0, 2.0, 0.0, 2.0, 0.0, 3.0, 0.0, 3.0, 0.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 2 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 0 + ]); + out = new Float32Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + sreplicate( 3, 2, x, -2, out, -1 ); + + expected = new Float32Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + out = new Float32Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + + sreplicate( 3, 2, x, 2, out, -1 ); + + expected = new Float32Array( [ 5.0, 5.0, 3.0, 3.0, 1.0, 1.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var out0; + var out1; + var x0; + var x1; + + // Initial arrays... + x0 = new Float32Array([ + 1.0, + 2.0, // 0 + 3.0, + 4.0, // 1 + 5.0, + 6.0 // 2 + ]); + out0 = new Float32Array([ + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + // Create offset views... + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + out1 = new Float32Array( out0.buffer, out0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + sreplicate( 3, 2, x1, 2, out1, 1 ); + expected = new Float32Array( [ 0.0, 0.0, 0.0, 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ] ); + + t.deepEqual( out0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.sreplicate.native.js b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.sreplicate.native.js new file mode 100644 index 000000000000..31d4f4686178 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sreplicate/test/test.sreplicate.native.js @@ -0,0 +1,236 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var Float32Array = require( '@stdlib/array/float32' ); + + +// VARIABLES // + +var sreplicate = tryRequire( resolve( __dirname, './../lib/sreplicate.native.js' ) ); +var opts = { + 'skip': ( sreplicate instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( sreplicate.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 6 ); + + sreplicate( x.length, 2, x, 1, out, 1 ); + expected = new Float32Array( [ 1.0, 1.0, 2.0, 2.0, 3.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + out = new Float32Array( 12 ); + + sreplicate( x.length, 3, x, 1, out, 1 ); + expected = new Float32Array( [ 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 3 ); + + sreplicate( x.length, 1, x, 1, out, 1 ); + expected = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 5.0 ] ); + out = new Float32Array( 3 ); + + sreplicate( 1, 3, x, 1, out, 1 ); + expected = new Float32Array( [ 5.0, 5.0, 5.0 ] ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var v; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 6 ); + + v = sreplicate( x.length, 2, x, 1, out, 1 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + sreplicate( -1, 2, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + sreplicate( 0, 2, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + expected = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0, 11.0 ] ); + + sreplicate( x.length, -1, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + sreplicate( x.length, 0, x, 1, out, 1 ); + t.deepEqual( out, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, 2, out, 1 ); + + expected = new Float32Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + out = new Float32Array( 12 ); + + sreplicate( 3, 2, x, 1, out, 2 ); + + expected = new Float32Array( [ 1.0, 0.0, 1.0, 0.0, 2.0, 0.0, 2.0, 0.0, 3.0, 0.0, 3.0, 0.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, -2, out, -1 ); + + expected = new Float32Array( [ 1.0, 1.0, 3.0, 3.0, 5.0, 5.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + out = new Float32Array( 6 ); + + sreplicate( 3, 2, x, 2, out, -1 ); + + expected = new Float32Array( [ 5.0, 5.0, 3.0, 3.0, 1.0, 1.0 ] ); + + t.deepEqual( out, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var out0; + var out1; + var x0; + var x1; + + x0 = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out0 = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + out1 = new Float32Array( out0.buffer, out0.BYTES_PER_ELEMENT*3 ); + + sreplicate( 3, 2, x1, 2, out1, 1 ); + expected = new Float32Array( [ 0.0, 0.0, 0.0, 2.0, 2.0, 4.0, 4.0, 6.0, 6.0 ] ); + + t.deepEqual( out0, expected, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/ssome/README.md b/lib/node_modules/@stdlib/blas/ext/base/ssome/README.md index 2b9f9516dcf1..e0211f43166c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/ssome/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/ssome/README.md @@ -58,8 +58,6 @@ The function has the following parameters: The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to test every other element: - - ```javascript var Float32Array = require( '@stdlib/array/float32' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/README.md b/lib/node_modules/@stdlib/blas/ext/base/swax/README.md new file mode 100644 index 000000000000..cf7b4df00883 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/README.md @@ -0,0 +1,332 @@ + + +# swax + +> Multiply each element in a single-precision floating-point strided array `x` by a scalar constant and assign the results to elements in a single-precision floating-point strided array `w`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{w} = \alpha \cdot \mathbf{x} +``` + + + +This API is complementary to the package [`@stdlib/blas/base/sscal`][@stdlib/blas/base/sscal], which performs an in-place update. + +
+ + + +
+ +## Usage + +```javascript +var swax = require( '@stdlib/blas/ext/base/swax' ); +``` + +#### swax( N, alpha, x, strideX, w, strideW ) + +Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `w`. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +swax( x.length, 5.0, x, 1, w, 1 ); +// w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **alpha**: scalar constant. +- **x**: input [`Float32Array`][@stdlib/array/float32]. +- **strideX**: stride length for `x`. +- **w**: output [`Float32Array`][@stdlib/array/float32]. +- **strideW**: stride length for `w`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to multiply every other element in `x` by `alpha` and assign the results to every other element in `w`: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +swax( 3, 5.0, x, 2, w, 2 ); +// w => [ 5.0, 0.0, 15.0, 0.0, 25.0, 0.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +// Initial arrays... +var x0 = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var w0 = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +// Create offset views... +var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var w1 = new Float32Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +swax( 3, 5.0, x1, 1, w1, 1 ); +// w0 => [ 0.0, 0.0, 10.0, 15.0, 20.0, 0.0 ] +``` + +#### swax.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) + +Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `w` using alternative indexing semantics. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); +// w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetW**: starting index for `w`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to multiply the last three elements of `x` by `alpha` and assign the results to the last three elements of `w`: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +swax.ndarray( 3, 5.0, x, 1, x.length-3, w, 1, w.length-3 ); +// w => [ 0.0, 0.0, 15.0, 20.0, 25.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `w` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var swax = require( '@stdlib/blas/ext/base/swax' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float32' +}); +console.log( x ); + +var w = discreteUniform( 10, -100, 100, { + 'dtype': 'float32' +}); +console.log( w ); + +swax( x.length, 5.0, x, 1, w, 1 ); +console.log( w ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/swax.h" +``` + +#### stdlib_strided_swax( N, alpha, \*X, strideX, \*W, strideW ) + +Multiplies each element in a single-precision floating-point strided array `X` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `W`. + +```c +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; +float w[] = { 0.0f, 0.0f, 0.0f, 0.0f }; + +stdlib_strided_swax( 4, 5.0f, x, 1, w, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] float` scalar constant. +- **X**: `[in] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **W**: `[out] float*` output array. +- **strideW**: `[in] CBLAS_INT` stride length for `W`. + +```c +void stdlib_strided_swax( const CBLAS_INT N, const float alpha, const float *X, const CBLAS_INT strideX, float *W, const CBLAS_INT strideW ); +``` + + + +#### stdlib_strided_swax_ndarray( N, alpha, \*X, strideX, offsetX, \*W, strideW, offsetW ) + + + +Multiplies each element in a single-precision floating-point strided array `X` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `W` using alternative indexing semantics. + +```c +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f }; +float w[] = { 0.0f, 0.0f, 0.0f, 0.0f }; + +stdlib_strided_swax_ndarray( 4, 5.0f, x, 1, 0, w, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] float` scalar constant. +- **X**: `[in] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **W**: `[out] float*` output array. +- **strideW**: `[in] CBLAS_INT` stride length for `W`. +- **offsetW**: `[in] CBLAS_INT` starting index for `W`. + +```c +void stdlib_strided_swax_ndarray( const CBLAS_INT N, const float alpha, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, float *W, const CBLAS_INT strideW, const CBLAS_INT offsetW ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/swax.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, -2.0f, 3.0f, -4.0f, 5.0f, -6.0f, 7.0f, -8.0f }; + float w[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideW = 1; + + // Multiply each element in `x` by a constant and assign to `w`: + stdlib_strided_swax( N, 5.0f, x, strideX, w, strideW ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "w[ %i ] = %f\n", i, w[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.js new file mode 100644 index 000000000000..ba791b608b0b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var swax = require( './../lib/swax.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var w = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = swax( x.length, 5.0, x, 1, w, 1 ); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.native.js new file mode 100644 index 000000000000..0e907dcf622a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.native.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var swax = tryRequire( resolve( __dirname, './../lib/swax.native.js' ) ); +var opts = { + 'skip': ( swax instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var w = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = swax( x.length, 5.0, x, 1, w, 1 ); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..bdb96421b380 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.ndarray.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var swax = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var w = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = swax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..20c6b625dcb2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var swax = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( swax instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100, 100, options ); + var w = uniform( len, -100, 100, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = swax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/swax/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..2f6c096dea5a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/benchmark/c/benchmark.length.c @@ -0,0 +1,207 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/swax.h" +#include +#include +#include +#include +#include + +#define NAME "swax" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, 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. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + float *x; + float *w; + double t; + int i; + + x = (float *)malloc( len * sizeof(float) ); + w = (float *)malloc( len * sizeof(float) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = random_uniform( -100.0f, 100.0f ); + w[ i ] = random_uniform( -100.0f, 100.0f ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_swax( len, 5.0f, x, 1, w, 1 ); + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( w ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + float *x; + float *w; + double t; + int i; + + x = (float *)malloc( len * sizeof(float) ); + w = (float *)malloc( len * sizeof(float) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = random_uniform( -100.0f, 100.0f ); + w[ i ] = random_uniform( -100.0f, 100.0f ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_swax_ndarray( len, 5.0f, x, 1, 0, w, 1, 0 ); + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( w ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/swax/binding.gyp new file mode 100644 index 000000000000..60dce9d0b31a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/binding.gyp @@ -0,0 +1,265 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Fortran compiler (to override -Dfortran_compiler=): + 'fortran_compiler%': 'gfortran', + + # Fortran compiler flags: + 'fflags': [ + # Specify the Fortran standard to which a program is expected to conform: + '-std=f95', + + # Indicate that the layout is free-form source code: + '-ffree-form', + + # Aggressive optimization: + '-O3', + + # Enable commonly used warning options: + '-Wall', + + # Warn if source code contains problematic language features: + '-Wextra', + + # Warn if a procedure is called without an explicit interface: + '-Wimplicit-interface', + + # Do not transform names of entities specified in Fortran source files by appending underscores (i.e., don't mangle names, thus allowing easier usage in C wrappers): + '-fno-underscoring', + + # Warn if source code contains Fortran 95 extensions and C-language constructs: + '-pedantic', + + # Compile but do not link (output is an object file): + '-c', + ], + + # 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 + + # Define custom build actions for particular inputs: + 'rules': [ + { + # Define a rule for processing Fortran files: + 'extension': 'f', + + # Define the pathnames to be used as inputs when performing processing: + 'inputs': [ + # Full path of the current input: + '<(RULE_INPUT_PATH)' + ], + + # Define the outputs produced during processing: + 'outputs': [ + # Store an output object file in a directory for placing intermediate results (only accessible within a single target): + '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).<(obj)' + ], + + # Define the rule for compiling Fortran based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + + # Rule to compile Fortran on Windows: + { + 'rule_name': 'compile_fortran_windows', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Windows...', + + 'process_outputs_as_sources': 0, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + }, + + # Rule to compile Fortran on non-Windows: + { + 'rule_name': 'compile_fortran_linux', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Linux...', + + 'process_outputs_as_sources': 1, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '-fPIC', # generate platform-independent code + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + } + ], # end condition (OS=="win") + ], # end conditions + }, # end rule (extension=="f") + ], # end rules + }, # 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/blas/ext/base/swax/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/swax/docs/repl.txt new file mode 100644 index 000000000000..805852136833 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/docs/repl.txt @@ -0,0 +1,131 @@ + +{{alias}}( N, alpha, x, strideX, w, strideW ) + Multiplies each element in a single-precision floating-point strided array + `x` by a scalar constant and assigns the results to elements in a single- + precision floating-point strided array `w`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `w` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: number + Scalar constant. + + x: Float32Array + Input array. + + strideX: integer + Stride length for `x`. + + w: Float32Array + Output array. + + strideW: integer + Stride length for `w`. + + Returns + ------- + w: Float32Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x = new {{alias:@stdlib/array/float32}}( bufX ); + > var w = new {{alias:@stdlib/array/float32}}( bufW ); + > {{alias}}( x.length, 5.0, x, 1, w, 1 ) + [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float32}}( bufX ); + > w = new {{alias:@stdlib/array/float32}}( bufW ); + > {{alias}}( 4, 5.0, x, 2, w, 2 ) + [ -10.0, 0.0, 15.0, 0.0, 20.0, 0.0, -5.0, 0.0 ] + + // Using view offsets: + > var bufX0 = [ 1.0, -2.0, 3.0, -4.0, 5.0, -6.0 ]; + > var bufW0 = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x0 = new {{alias:@stdlib/array/float32}}( bufX0 ); + > var w0 = new {{alias:@stdlib/array/float32}}( bufW0 ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetW = w0.BYTES_PER_ELEMENT * 1; + > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, offsetX ); + > var w1 = new {{alias:@stdlib/array/float32}}( w0.buffer, offsetW ); + > {{alias}}( 3, 5.0, x1, 2, w1, 2 ) + [ -10.0, 0.0, -20.0, 0.0, -30.0 ] + > w0 + [ 0.0, -10.0, 0.0, -20.0, 0.0, -30.0 ] + + +{{alias}}.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) + Multiplies each element in a single-precision floating-point strided array + `x` by a scalar constant and assigns the results to elements in a single- + precision floating-point strided array `w` using alternative indexing + semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: number + Scalar constant. + + x: Float32Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + w: Float32Array + Output array. + + strideW: integer + Stride length for `w`. + + offsetW: integer + Starting index for `w`. + + Returns + ------- + w: Float32Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x = new {{alias:@stdlib/array/float32}}( bufX ); + > var w = new {{alias:@stdlib/array/float32}}( bufW ); + > {{alias}}.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ) + [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + + // Using index offsets: + > bufX = [ 1.0, -2.0, 3.0, -4.0, 5.0, -6.0 ]; + > bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > x = new {{alias:@stdlib/array/float32}}( bufX ); + > w = new {{alias:@stdlib/array/float32}}( bufW ); + > {{alias}}.ndarray( 3, 5.0, x, 1, x.length-3, w, 1, w.length-3 ) + [ 0.0, 0.0, 0.0, -20.0, 25.0, -30.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/swax/docs/types/index.d.ts new file mode 100644 index 000000000000..dd691175310c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/docs/types/index.d.ts @@ -0,0 +1,106 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `swax`. +*/ +interface Routine { + /** + * Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to a single-precision floating-point strided array `w`. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param w - output array + * @param strideW - `w` stride length + * @returns `w` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * swax( x.length, 5.0, x, 1, w, 1 ); + * // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + */ + ( N: number, alpha: number, x: Float32Array, strideX: number, w: Float32Array, strideW: number ): Float32Array; + + /** + * Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to a single-precision floating-point strided array `w` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting index for `x` + * @param w - output array + * @param strideW - `w` stride length + * @param offsetW - starting index for `w` + * @returns `w` + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); + * var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); + * // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] + */ + ndarray( N: number, alpha: number, x: Float32Array, strideX: number, offsetX: number, w: Float32Array, strideW: number, offsetW: number ): Float32Array; +} + +/** +* Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to a single-precision floating-point strided array `w`. +* +* @param N - number of indexed elements +* @param alpha - scalar constant +* @param x - input array +* @param strideX - `x` stride length +* @param w - output array +* @param strideW - `w` stride length +* @returns `w` +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); +* var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* swax( x.length, 5.0, x, 1, w, 1 ); +* // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); +* var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); +* // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] +*/ +declare var swax: Routine; + + +// EXPORTS // + +export = swax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/swax/docs/types/test.ts new file mode 100644 index 000000000000..26a71ac96e9b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/docs/types/test.ts @@ -0,0 +1,278 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import swax = require( './index' ); + + +// TESTS // + +// The function returns a Float32Array... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax( x.length, 5.0, x, 1, w, 1 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax( '10', 5.0, x, 1, w, 1 ); // $ExpectError + swax( true, 5.0, x, 1, w, 1 ); // $ExpectError + swax( false, 5.0, x, 1, w, 1 ); // $ExpectError + swax( null, 5.0, x, 1, w, 1 ); // $ExpectError + swax( undefined, 5.0, x, 1, w, 1 ); // $ExpectError + swax( [], 5.0, x, 1, w, 1 ); // $ExpectError + swax( {}, 5.0, x, 1, w, 1 ); // $ExpectError + swax( ( x: number ): number => x, 5.0, x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax( x.length, '10', x, 1, w, 1 ); // $ExpectError + swax( x.length, true, x, 1, w, 1 ); // $ExpectError + swax( x.length, false, x, 1, w, 1 ); // $ExpectError + swax( x.length, null, x, 1, w, 1 ); // $ExpectError + swax( x.length, undefined, x, 1, w, 1 ); // $ExpectError + swax( x.length, [], x, 1, w, 1 ); // $ExpectError + swax( x.length, {}, x, 1, w, 1 ); // $ExpectError + swax( x.length, ( x: number ): number => x, x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Float32Array... +{ + const w = new Float32Array( 10 ); + + swax( 10, 5.0, 10, 1, w, 1 ); // $ExpectError + swax( 10, 5.0, '10', 1, w, 1 ); // $ExpectError + swax( 10, 5.0, true, 1, w, 1 ); // $ExpectError + swax( 10, 5.0, false, 1, w, 1 ); // $ExpectError + swax( 10, 5.0, null, 1, w, 1 ); // $ExpectError + swax( 10, 5.0, undefined, 1, w, 1 ); // $ExpectError + swax( 10, 5.0, [], 1, w, 1 ); // $ExpectError + swax( 10, 5.0, {}, 1, w, 1 ); // $ExpectError + swax( 10, 5.0, ( x: number ): number => x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax( x.length, 5.0, x, '10', w, 1 ); // $ExpectError + swax( x.length, 5.0, x, true, w, 1 ); // $ExpectError + swax( x.length, 5.0, x, false, w, 1 ); // $ExpectError + swax( x.length, 5.0, x, null, w, 1 ); // $ExpectError + swax( x.length, 5.0, x, undefined, w, 1 ); // $ExpectError + swax( x.length, 5.0, x, [], w, 1 ); // $ExpectError + swax( x.length, 5.0, x, {}, w, 1 ); // $ExpectError + swax( x.length, 5.0, x, ( x: number ): number => x, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + swax( 10, 5.0, x, 1, 10, 1 ); // $ExpectError + swax( 10, 5.0, x, 1, '10', 1 ); // $ExpectError + swax( 10, 5.0, x, 1, true, 1 ); // $ExpectError + swax( 10, 5.0, x, 1, false, 1 ); // $ExpectError + swax( 10, 5.0, x, 1, null, 1 ); // $ExpectError + swax( 10, 5.0, x, 1, undefined, 1 ); // $ExpectError + swax( 10, 5.0, x, 1, [], 1 ); // $ExpectError + swax( 10, 5.0, x, 1, {}, 1 ); // $ExpectError + swax( 10, 5.0, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax( x.length, 5.0, x, 1, w, '10' ); // $ExpectError + swax( x.length, 5.0, x, 1, w, true ); // $ExpectError + swax( x.length, 5.0, x, 1, w, false ); // $ExpectError + swax( x.length, 5.0, x, 1, w, null ); // $ExpectError + swax( x.length, 5.0, x, 1, w, undefined ); // $ExpectError + swax( x.length, 5.0, x, 1, w, [] ); // $ExpectError + swax( x.length, 5.0, x, 1, w, {} ); // $ExpectError + swax( x.length, 5.0, x, 1, w, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax(); // $ExpectError + swax( x.length ); // $ExpectError + swax( x.length, 5.0 ); // $ExpectError + swax( x.length, 5.0, x ); // $ExpectError + swax( x.length, 5.0, x, 1 ); // $ExpectError + swax( x.length, 5.0, x, 1, w ); // $ExpectError + swax( x.length, 5.0, x, 1, w, 1, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Float32Array... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax.ndarray( '10', 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( true, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( false, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( null, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( undefined, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( [], 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( {}, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( ( x: number ): number => x, 5.0, x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax.ndarray( x.length, '10', x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, true, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, false, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, null, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, undefined, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, [], x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, {}, x, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, ( x: number ): number => x, x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Float32Array... +{ + const w = new Float32Array( 10 ); + + swax.ndarray( 10, 5.0, 10, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, '10', 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, true, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, false, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, null, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, undefined, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, [], 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, {}, 1, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, ( x: number ): number => x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax.ndarray( x.length, 5.0, x, '10', 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, true, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, false, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, null, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, undefined, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, [], 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, {}, 0, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, ( x: number ): number => x, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax.ndarray( x.length, 5.0, x, 1, '10', w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, true, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, false, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, null, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, undefined, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, [], w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, {}, w, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, ( x: number ): number => x, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + swax.ndarray( 10, 5.0, x, 1, 0, 10, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, x, 1, 0, '10', 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, x, 1, 0, true, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, x, 1, 0, false, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, x, 1, 0, null, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, x, 1, 0, undefined, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, x, 1, 0, [], 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, x, 1, 0, {}, 1, 0 ); // $ExpectError + swax.ndarray( 10, 5.0, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax.ndarray( x.length, 5.0, x, 1, 0, w, '10', 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, true, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, false, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, null, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, undefined, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, [], 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, {}, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, '10' ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, true ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, false ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, null ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, undefined ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, [] ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, {} ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + const w = new Float32Array( 10 ); + + swax.ndarray(); // $ExpectError + swax.ndarray( x.length ); // $ExpectError + swax.ndarray( x.length, 5.0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1 ); // $ExpectError + swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/swax/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/swax/examples/c/example.c new file mode 100644 index 000000000000..31c0e8451d55 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/examples/c/example.c @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/swax.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 1.0f, -2.0f, 3.0f, -4.0f, 5.0f, -6.0f, 7.0f, -8.0f }; + float w[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideW = 1; + + // Multiply each element in `x` by a constant and assign to `w`: + stdlib_strided_swax( N, 5.0f, x, strideX, w, strideW ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "w[ %i ] = %f\n", i, w[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/swax/examples/index.js new file mode 100644 index 000000000000..ce38d6e7c890 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var swax = require( './../lib' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float32' +}); +console.log( x ); + +var w = discreteUniform( 10, -100, 100, { + 'dtype': 'float32' +}); +console.log( w ); + +swax( x.length, 5.0, x, 1, w, 1 ); +console.log( w ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/swax/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var swax = require( '@stdlib/blas/ext/base/swax' ); +* +* var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); +* var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* swax.ndarray( x.length, 5.0, x, 1, 0, w, 1, 0 ); +* // w => [ -10.0, 5.0, 15.0, -25.0, 20.0, 0.0, -5.0, -15.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var swax; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + swax = main; +} else { + swax = tmp; +} + + +// EXPORTS // + +module.exports = swax; + +// exports: { "ndarray": "swax.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/main.js new file mode 100644 index 000000000000..498c80bc6443 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var swax = require( './swax.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( swax, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = swax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/native.js new file mode 100644 index 000000000000..e051ab36f79a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var swax = require( './swax.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( swax, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = swax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/ndarray.js new file mode 100644 index 000000000000..8b7459029d68 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/ndarray.js @@ -0,0 +1,108 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var scopy = require( '@stdlib/blas/base/scopy' ).ndarray; + + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `w` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Float32Array} w - output array +* @param {integer} strideW - `w` stride length +* @param {NonNegativeInteger} offsetW - starting `w` index +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* swax( x.length, 5.0, x, 1, 0, w, 1, 0 ); +* // w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +*/ +function swax( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) { + var ix; + var iw; + var m; + var i; + + if ( N <= 0 ) { + return w; + } + // Fast path: when alpha = 1.0, delegate to scopy (w = x) + if ( alpha === 1.0 ) { + return scopy( N, x, strideX, offsetX, w, strideW, offsetW ); + } + ix = offsetX; + iw = offsetW; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideW === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + w[ iw ] = alpha * x[ ix ]; + ix += strideX; + iw += strideW; + } + } + if ( N < M ) { + return w; + } + for ( i = m; i < N; i += M ) { + w[ iw ] = alpha * x[ ix ]; + w[ iw+1 ] = alpha * x[ ix+1 ]; + w[ iw+2 ] = alpha * x[ ix+2 ]; + w[ iw+3 ] = alpha * x[ ix+3 ]; + w[ iw+4 ] = alpha * x[ ix+4 ]; + ix += M; + iw += M; + } + return w; + } + for ( i = 0; i < N; i++ ) { + w[ iw ] = alpha * x[ ix ]; + ix += strideX; + iw += strideW; + } + return w; +} + + +// EXPORTS // + +module.exports = swax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/ndarray.native.js new file mode 100644 index 000000000000..767a0dc4c175 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/ndarray.native.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `w` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Float32Array} w - output array +* @param {integer} strideW - `w` stride length +* @param {NonNegativeInteger} offsetW - starting `w` index +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* swax( x.length, 5.0, x, 1, 0, w, 1, 0 ); +* // w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +*/ +function swax( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) { + addon.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ); + return w; +} + + +// EXPORTS // + +module.exports = swax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/lib/swax.js b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/swax.js new file mode 100644 index 000000000000..0674484f814c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/swax.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `w`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Float32Array} w - output array +* @param {integer} strideW - `w` stride length +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* swax( x.length, 5.0, x, 1, w, 1 ); +* // w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +*/ +function swax( N, alpha, x, strideX, w, strideW ) { + return ndarray( N, alpha, x, strideX, stride2offset( N, strideX ), w, strideW, stride2offset( N, strideW ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = swax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/lib/swax.native.js b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/swax.native.js new file mode 100644 index 000000000000..6ba17f921aa9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/lib/swax.native.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies each element in a single-precision floating-point strided array `x` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `w`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {number} alpha - scalar constant +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Float32Array} w - output array +* @param {integer} strideW - `w` stride length +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* var w = new Float32Array( [ 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* swax( x.length, 5.0, x, 1, w, 1 ); +* // w => [ 5.0, 10.0, 15.0, 20.0, 25.0 ] +*/ +function swax( N, alpha, x, strideX, w, strideW ) { + addon( N, alpha, x, strideX, w, strideW ); + return w; +} + + +// EXPORTS // + +module.exports = swax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/swax/manifest.json new file mode 100644 index 000000000000..e351badd1689 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/manifest.json @@ -0,0 +1,82 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-float", + "@stdlib/napi/argv-strided-float32array", + "@stdlib/blas/base/scopy", + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/scopy", + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/scopy", + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/package.json b/lib/node_modules/@stdlib/blas/ext/base/swax/package.json new file mode 100644 index 000000000000..67adc6b1bb1f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/package.json @@ -0,0 +1,76 @@ +{ + "name": "@stdlib/blas/ext/base/swax", + "version": "0.0.0", + "description": "Multiply each element in a single-precision floating-point strided array `x` by a scalar constant and assign the results to elements in a single-precision floating-point strided array `w`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "multiply", + "scale", + "strided", + "array", + "ndarray", + "float32", + "float", + "single", + "float32array", + "swax" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/swax/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/swax/src/addon.c new file mode 100644 index 000000000000..bbc84602bba3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/src/addon.c @@ -0,0 +1,68 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/swax.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_float.h" +#include "stdlib/napi/argv_strided_float32array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_FLOAT( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideW, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, W, N, strideW, argv, 4 ); + API_SUFFIX(stdlib_strided_swax)( N, alpha, X, strideX, W, strideW ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 8 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_FLOAT( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, strideW, argv, 6 ); + STDLIB_NAPI_ARGV_INT64( env, offsetW, argv, 7 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, W, N, strideW, argv, 5 ); + API_SUFFIX(stdlib_strided_swax_ndarray)( N, alpha, X, strideX, offsetX, W, strideW, offsetW ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/swax/src/main.c new file mode 100644 index 000000000000..636196dc29d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/src/main.c @@ -0,0 +1,100 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/swax.h" +#include "stdlib/blas/base/scopy.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Multiplies each element in a single-precision floating-point strided array `X` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `W`. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length for `X` +* @param W output array +* @param strideW stride length for `W` +*/ +void API_SUFFIX(stdlib_strided_swax)( const CBLAS_INT N, const float alpha, const float *X, const CBLAS_INT strideX, float *W, const CBLAS_INT strideW ) { + const CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + const CBLAS_INT ow = stdlib_strided_stride2offset( N, strideW ); + API_SUFFIX(stdlib_strided_swax_ndarray)( N, alpha, X, strideX, ox, W, strideW, ow ); +} + +/** +* Multiplies each element in a single-precision floating-point strided array `X` by a scalar constant and assigns the results to elements in a single-precision floating-point strided array `W` using alternative indexing semantics. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length for `X` +* @param offsetX starting index for `X` +* @param W output array +* @param strideW stride length for `W` +* @param offsetW starting index for `W` +*/ +void API_SUFFIX(stdlib_strided_swax_ndarray)( const CBLAS_INT N, const float alpha, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, float *W, const CBLAS_INT strideW, const CBLAS_INT offsetW ) { + CBLAS_INT ix; + CBLAS_INT iw; + CBLAS_INT m; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + if ( alpha == 1.0f ) { + API_SUFFIX(c_scopy_ndarray)( N, X, strideX, offsetX, W, strideW, offsetW ); + return; + } + ix = offsetX; + iw = offsetW; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX == 1 && strideW == 1 ) { + m = N % 5; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + W[ iw ] = alpha * X[ ix ]; + ix += strideX; + iw += strideW; + } + } + if ( N < 5 ) { + return; + } + for ( i = m; i < N; i += 5 ) { + W[ iw ] = alpha * X[ ix ]; + W[ iw+1 ] = alpha * X[ ix+1 ]; + W[ iw+2 ] = alpha * X[ ix+2 ]; + W[ iw+3 ] = alpha * X[ ix+3 ]; + W[ iw+4 ] = alpha * X[ ix+4 ]; + ix += 5; + iw += 5; + } + return; + } + for ( i = 0; i < N; i++ ) { + W[ iw ] = alpha * X[ ix ]; + ix += strideX; + iw += strideW; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.js new file mode 100644 index 000000000000..0dfd85efbabd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.js @@ -0,0 +1,77 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var swax = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof swax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof swax.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var swax = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( swax, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var swax = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( swax, require( './../lib/main.js' ), 'returns JS implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.ndarray.js new file mode 100644 index 000000000000..53e9ee52e5be --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.ndarray.js @@ -0,0 +1,285 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var swax = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof swax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', function test( t ) { + t.strictEqual( swax.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Float32Array( x.length ); + expected = new Float32Array([ + 20.0, // 4.0 * 5.0 + 10.0, // 2.0 * 5.0 + -15.0, // -3.0 * 5.0 + 25.0, // 5.0 * 5.0 + -5.0, // -1.0 * 5.0 + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + swax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0 ] ); + w = new Float32Array( x.length ); + expected = new Float32Array( [ 5.0, 10.0 ] ); + + swax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + w = new Float32Array( x.length ); + out = swax( x.length, 3.0, x, 1, 0, w, 1, 0 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 3.0, -4.0, 1.0 ] ); + w = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + + swax( 0, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + swax( -4, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Float32Array( x.length ); + expected = new Float32Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + swax( x.length, 1.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 2.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 2 + ]); + w = new Float32Array( 3 ); + expected = new Float32Array([ + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + swax( 3, 5.0, x, 2, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float32Array([ + 0.0, // 0 + 30.0, + 0.0, // 1 + 10.0, + 0.0 // 2 + ]); + expected = new Float32Array([ + 5.0, // 1.0 * 5.0 + 30.0, + 10.0, // 2.0 * 5.0 + 10.0, + 15.0 // 3.0 * 5.0 + ]); + + swax( 3, 5.0, x, 1, 0, w, 2, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 2.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 0 + ]); + w = new Float32Array([ + 0.0, // 2 + 0.0, // 1 + 0.0 // 0 + ]); + expected = new Float32Array([ + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + swax( 3, 5.0, x, -2, x.length-1, w, -1, w.length-1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 5.0 + ]); + w = new Float32Array( 5 ); + expected = new Float32Array([ + 10.0, // 2.0 * 5.0 + 15.0, // 3.0 * 5.0 + 20.0, // 4.0 * 5.0 + 0.0, + 0.0 + ]); + + swax( 3, 5.0, x, 1, 1, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` offset', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float32Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]); + expected = new Float32Array([ + 0.0, + 0.0, + 5.0, // 1.0 * 5.0 + 10.0, // 2.0 * 5.0 + 15.0 // 3.0 * 5.0 + ]); + + swax( 3, 5.0, x, 1, 0, w, 1, 2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', function test( t ) { + var expected; + var alpha; + var x; + var w; + var i; + + alpha = 3.0; + x = new Float32Array( 100 ); + w = new Float32Array( 100 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + swax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float32Array( 240 ); + w = new Float32Array( 240 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + swax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.ndarray.native.js new file mode 100644 index 000000000000..9f09646e6752 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.ndarray.native.js @@ -0,0 +1,294 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var swax = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( swax instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof swax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', opts, function test( t ) { + t.strictEqual( swax.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Float32Array( x.length ); + expected = new Float32Array([ + 20.0, // 4.0 * 5.0 + 10.0, // 2.0 * 5.0 + -15.0, // -3.0 * 5.0 + 25.0, // 5.0 * 5.0 + -5.0, // -1.0 * 5.0 + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + swax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0 ] ); + w = new Float32Array( x.length ); + expected = new Float32Array( [ 5.0, 10.0 ] ); + + swax( x.length, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + w = new Float32Array( x.length ); + out = swax( x.length, 3.0, x, 1, 0, w, 1, 0 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 3.0, -4.0, 1.0 ] ); + w = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + + swax( 0, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + swax( -4, 5.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Float32Array( x.length ); + expected = new Float32Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + swax( x.length, 1.0, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 2.0, // 0 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 2 + ]); + w = new Float32Array( 3 ); + expected = new Float32Array([ + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + swax( 3, 5.0, x, 2, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float32Array([ + 0.0, // 0 + 30.0, + 0.0, // 1 + 10.0, + 0.0 // 2 + ]); + expected = new Float32Array([ + 5.0, // 1.0 * 5.0 + 30.0, + 10.0, // 2.0 * 5.0 + 10.0, + 15.0 // 3.0 * 5.0 + ]); + + swax( 3, 5.0, x, 1, 0, w, 2, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 2.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 0 + ]); + w = new Float32Array([ + 0.0, // 2 + 0.0, // 1 + 0.0 // 0 + ]); + expected = new Float32Array([ + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + swax( 3, 5.0, x, -2, x.length-1, w, -1, w.length-1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 5.0 + ]); + w = new Float32Array( 5 ); + expected = new Float32Array([ + 10.0, // 2.0 * 5.0 + 15.0, // 3.0 * 5.0 + 20.0, // 4.0 * 5.0 + 0.0, + 0.0 + ]); + + swax( 3, 5.0, x, 1, 1, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` offset', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float32Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]); + expected = new Float32Array([ + 0.0, + 0.0, + 5.0, // 1.0 * 5.0 + 10.0, // 2.0 * 5.0 + 15.0 // 3.0 * 5.0 + ]); + + swax( 3, 5.0, x, 1, 0, w, 1, 2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + var i; + + alpha = 3.0; + x = new Float32Array( 100 ); + w = new Float32Array( 100 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + swax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float32Array( 240 ); + w = new Float32Array( 240 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + swax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.swax.js b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.swax.js new file mode 100644 index 000000000000..49781d923c6d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.swax.js @@ -0,0 +1,269 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var swax = require( './../lib/swax.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof swax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( swax.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Float32Array( x.length ); + expected = new Float32Array([ + 20.0, // 4.0 * 5.0 + 10.0, // 2.0 * 5.0 + -15.0, // -3.0 * 5.0 + 25.0, // 5.0 * 5.0 + -5.0, // -1.0 * 5.0 + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + swax( x.length, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0 ] ); + w = new Float32Array( x.length ); + expected = new Float32Array( [ 5.0, 10.0 ] ); + + swax( x.length, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + w = new Float32Array( x.length ); + out = swax( x.length, 3.0, x, 1, w, 1 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 3.0, -4.0, 1.0 ] ); + w = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + + swax( 0, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + swax( -4, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Float32Array( x.length ); + expected = new Float32Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + swax( x.length, 1.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + w = new Float32Array( 3 ); + expected = new Float32Array([ + 5.0, // 1.0 * 5.0 + 15.0, // 3.0 * 5.0 + 25.0 // 5.0 * 5.0 + ]); + + swax( 3, 5.0, x, 2, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float32Array([ + 0.0, // 0 + 30.0, + 0.0, // 1 + 10.0, + 0.0 // 2 + ]); + expected = new Float32Array([ + 5.0, // 1.0 * 5.0 + 30.0, + 10.0, // 2.0 * 5.0 + 10.0, + 15.0 // 3.0 * 5.0 + ]); + + swax( 3, 5.0, x, 1, w, 2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 2.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 0 + ]); + w = new Float32Array( 5 ); + expected = new Float32Array([ + 10.0, // 2.0 * 5.0 + 0.0, + -25.0, // -5.0 * 5.0 + 0.0, + 30.0 // 6.0 * 5.0 + ]); + + swax( 3, 5.0, x, -2, w, -2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var w0; + var x1; + var w1; + + x0 = new Float32Array([ + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 5.0 + ]); + w0 = new Float32Array([ + 10.0, + 10.0, + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + w1 = new Float32Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); + + expected = new Float32Array([ + 10.0, + 10.0, + 10.0, // 2.0 * 5.0 + 15.0, // 3.0 * 5.0 + 20.0 // 4.0 * 5.0 + ]); + + swax( 3, 5.0, x1, 1, w1, 1 ); + t.deepEqual( w0, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', function test( t ) { + var expected; + var alpha; + var x; + var w; + var i; + + alpha = 3.0; + x = new Float32Array( 100 ); + w = new Float32Array( 100 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + swax( x.length, alpha, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float32Array( 240 ); + w = new Float32Array( 240 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + swax( x.length, alpha, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.swax.native.js b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.swax.native.js new file mode 100644 index 000000000000..d6fae06ab859 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/swax/test/test.swax.native.js @@ -0,0 +1,278 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var swax = tryRequire( resolve( __dirname, './../lib/swax.native.js' ) ); +var opts = { + 'skip': ( swax instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof swax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( swax.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Float32Array( x.length ); + expected = new Float32Array([ + 20.0, // 4.0 * 5.0 + 10.0, // 2.0 * 5.0 + -15.0, // -3.0 * 5.0 + 25.0, // 5.0 * 5.0 + -5.0, // -1.0 * 5.0 + 10.0, // 2.0 * 5.0 + -25.0, // -5.0 * 5.0 + 30.0 // 6.0 * 5.0 + ]); + + swax( x.length, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float32Array( [ 1.0, 2.0 ] ); + w = new Float32Array( x.length ); + expected = new Float32Array( [ 5.0, 10.0 ] ); + + swax( x.length, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + w = new Float32Array( x.length ); + out = swax( x.length, 3.0, x, 1, w, 1 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 3.0, -4.0, 1.0 ] ); + w = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + + swax( 0, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + swax( -4, 5.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Float32Array( x.length ); + expected = new Float32Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + swax( x.length, 1.0, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 3.0, // 1 + 4.0, + 5.0 // 2 + ]); + w = new Float32Array( 3 ); + expected = new Float32Array([ + 5.0, // 1.0 * 5.0 + 15.0, // 3.0 * 5.0 + 25.0 // 5.0 * 5.0 + ]); + + swax( 3, 5.0, x, 2, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array( [ 1.0, 2.0, 3.0 ] ); + w = new Float32Array([ + 0.0, // 0 + 30.0, + 0.0, // 1 + 10.0, + 0.0 // 2 + ]); + expected = new Float32Array([ + 5.0, // 1.0 * 5.0 + 30.0, + 10.0, // 2.0 * 5.0 + 10.0, + 15.0 // 3.0 * 5.0 + ]); + + swax( 3, 5.0, x, 1, w, 2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var w; + + x = new Float32Array([ + 2.0, // 2 + -3.0, + -5.0, // 1 + 7.0, + 6.0 // 0 + ]); + w = new Float32Array( 5 ); + expected = new Float32Array([ + 10.0, // 2.0 * 5.0 + 0.0, + -25.0, // -5.0 * 5.0 + 0.0, + 30.0 // 6.0 * 5.0 + ]); + + swax( 3, 5.0, x, -2, w, -2 ); + t.deepEqual( w, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var w0; + var x1; + var w1; + + x0 = new Float32Array([ + 1.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 5.0 + ]); + w0 = new Float32Array([ + 10.0, + 10.0, + 0.0, // 0 + 0.0, // 1 + 0.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + w1 = new Float32Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); + + expected = new Float32Array([ + 10.0, + 10.0, + 10.0, // 2.0 * 5.0 + 15.0, // 3.0 * 5.0 + 20.0 // 4.0 * 5.0 + ]); + + swax( 3, 5.0, x1, 1, w1, 1 ); + t.deepEqual( w0, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + var i; + + alpha = 3.0; + x = new Float32Array( 100 ); + w = new Float32Array( 100 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + swax( x.length, alpha, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + x = new Float32Array( 240 ); + w = new Float32Array( 240 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + expected[ i ] = alpha * x[ i ]; + } + swax( x.length, alpha, x, 1, w, 1 ); + t.deepEqual( w, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/README.md b/lib/node_modules/@stdlib/blas/ext/base/sxdy/README.md new file mode 100644 index 000000000000..117cf909895a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/README.md @@ -0,0 +1,317 @@ + + +# sxdy + +> Divide elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assign the results to `y`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \oslash \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var sxdy = require( '@stdlib/blas/ext/base/sxdy' ); +``` + +#### sxdy( N, x, strideX, y, strideY ) + +Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y`. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); +var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +sxdy( x.length, x, 1, y, 1 ); +// y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: input [`Float32Array`][@stdlib/array/float32]. +- **strideX**: stride length for `x`. +- **y**: output [`Float32Array`][@stdlib/array/float32]. +- **strideY**: stride length for `y`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to divide every other element of `x` by every other element of `y`: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 14.0, 2.0, 27.0, 4.0, 33.0, 6.0 ] ); +var y = new Float32Array( [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); + +sxdy( 3, x, 2, y, 2 ); +// y => [ 2.0, 8.0, 3.0, 10.0, 3.0, 12.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +// Initial arrays... +var x0 = new Float32Array( [ 1.0, 18.0, 30.0, 44.0, 5.0, 6.0 ] ); +var y0 = new Float32Array( [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ] ); + +// Create offset views... +var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +sxdy( 3, x1, 1, y1, 1 ); +// y0 => [ 7.0, 8.0, 2.0, 3.0, 4.0, 12.0 ] +``` + +#### sxdy.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); +var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + +sxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to divide the last three elements of `x` by the last three elements of `y`: + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, 2.0, 24.0, 36.0, 50.0 ] ); +var y = new Float32Array( [ 6.0, 7.0, 8.0, 9.0, 10.0 ] ); + +sxdy.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// y => [ 6.0, 7.0, 3.0, 4.0, 5.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `y` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var sxdy = require( '@stdlib/blas/ext/base/sxdy' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float32' +}); +console.log( x ); + +var y = discreteUniform( 10, 1, 100, { + 'dtype': 'float32' +}); +console.log( y ); + +sxdy( x.length, x, 1, y, 1 ); +console.log( y ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + +
+ +
+ + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/sxdy.h" +``` + +#### stdlib_strided_sxdy( N, \*X, strideX, \*Y, strideY ) + +Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y`. + +```c +const float x[] = { 2.0f, 6.0f, 12.0f, 20.0f }; +float y[] = { 2.0f, 3.0f, 4.0f, 5.0f }; + +stdlib_strided_sxdy( 4, x, 1, y, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Y**: `[inout] float*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. + +```c +void stdlib_strided_sxdy( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, float *Y, const CBLAS_INT strideY ); +``` + + + +#### stdlib_strided_sxdy_ndarray( N, \*X, strideX, offsetX, \*Y, strideY, offsetY ) + + + +Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```c +const float x[] = { 2.0f, 6.0f, 12.0f, 20.0f }; +float y[] = { 2.0f, 3.0f, 4.0f, 5.0f }; + +stdlib_strided_sxdy_ndarray( 4, x, 1, 0, y, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] float*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Y**: `[inout] float*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. +- **offsetY**: `[in] CBLAS_INT` starting index for `Y`. + +```c +void stdlib_strided_sxdy_ndarray( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, float *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ); +``` + +
+ + + +
+ +
+ + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/sxdy.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 2.0f, -6.0f, 12.0f, -20.0f, 30.0f, -42.0f, 56.0f, -72.0f }; + float y[] = { 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Divide elements of `x` by the corresponding elements of `y`: + stdlib_strided_sxdy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "y[ %i ] = %f\n", i, y[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.js new file mode 100644 index 000000000000..da2c3323b82f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sxdy = require( './../lib/sxdy.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -10.0, 10.0, options ); + var y = uniform( len, 1.0, 10.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = sxdy( x.length, x, 1, y, 1 ); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.native.js new file mode 100644 index 000000000000..ab5579c8e6ff --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.native.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sxdy = tryRequire( resolve( __dirname, './../lib/sxdy.native.js' ) ); +var opts = { + 'skip': ( sxdy instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -10.0, 10.0, options ); + var y = uniform( len, 1.0, 10.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = sxdy( x.length, x, 1, y, 1 ); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..2da1cfe9028b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.ndarray.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var sxdy = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -10.0, 10.0, options ); + var y = uniform( len, 1.0, 10.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = sxdy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..1099e968abb7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,109 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var sxdy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sxdy instanceof Error ) +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -10.0, 10.0, options ); + var y = uniform( len, 1.0, 10.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var z; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + z = sxdy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( z[ i%x.length ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/sxdy/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..36d7c27be80f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/benchmark/c/benchmark.length.c @@ -0,0 +1,207 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sxdy.h" +#include +#include +#include +#include +#include + +#define NAME "sxdy" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, 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. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + float *x; + float *y; + double t; + int i; + + x = (float *)malloc( len * sizeof(float) ); + y = (float *)malloc( len * sizeof(float) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = random_uniform( -100.0f, 100.0f ); + y[ i ] = random_uniform( 1.0f, 100.0f ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_sxdy( len, x, 1, y, 1 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + float *x; + float *y; + double t; + int i; + + x = (float *)malloc( len * sizeof(float) ); + y = (float *)malloc( len * sizeof(float) ); + for ( i = 0; i < len; i++ ) { + x[ i ] = random_uniform( -100.0f, 100.0f ); + y[ i ] = random_uniform( 1.0f, 100.0f ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_sxdy_ndarray( len, x, 1, 0, y, 1, 0 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/sxdy/binding.gyp new file mode 100644 index 000000000000..60dce9d0b31a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/binding.gyp @@ -0,0 +1,265 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Fortran compiler (to override -Dfortran_compiler=): + 'fortran_compiler%': 'gfortran', + + # Fortran compiler flags: + 'fflags': [ + # Specify the Fortran standard to which a program is expected to conform: + '-std=f95', + + # Indicate that the layout is free-form source code: + '-ffree-form', + + # Aggressive optimization: + '-O3', + + # Enable commonly used warning options: + '-Wall', + + # Warn if source code contains problematic language features: + '-Wextra', + + # Warn if a procedure is called without an explicit interface: + '-Wimplicit-interface', + + # Do not transform names of entities specified in Fortran source files by appending underscores (i.e., don't mangle names, thus allowing easier usage in C wrappers): + '-fno-underscoring', + + # Warn if source code contains Fortran 95 extensions and C-language constructs: + '-pedantic', + + # Compile but do not link (output is an object file): + '-c', + ], + + # 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 + + # Define custom build actions for particular inputs: + 'rules': [ + { + # Define a rule for processing Fortran files: + 'extension': 'f', + + # Define the pathnames to be used as inputs when performing processing: + 'inputs': [ + # Full path of the current input: + '<(RULE_INPUT_PATH)' + ], + + # Define the outputs produced during processing: + 'outputs': [ + # Store an output object file in a directory for placing intermediate results (only accessible within a single target): + '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).<(obj)' + ], + + # Define the rule for compiling Fortran based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + + # Rule to compile Fortran on Windows: + { + 'rule_name': 'compile_fortran_windows', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Windows...', + + 'process_outputs_as_sources': 0, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + }, + + # Rule to compile Fortran on non-Windows: + { + 'rule_name': 'compile_fortran_linux', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Linux...', + + 'process_outputs_as_sources': 1, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '-fPIC', # generate platform-independent code + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + } + ], # end condition (OS=="win") + ], # end conditions + }, # end rule (extension=="f") + ], # end rules + }, # 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/blas/ext/base/sxdy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/sxdy/docs/repl.txt new file mode 100644 index 000000000000..e74090fa8947 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/docs/repl.txt @@ -0,0 +1,125 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Divides elements of a single-precision floating-point strided array `x` by + the corresponding elements of a single-precision floating-point strided + array `y` and assigns the results to `y`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `y` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float32Array + Input array. + + strideX: integer + Stride length for `x`. + + y: Float32Array + Output array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + y: Float32Array + Output array. + + Examples + -------- + // Standard Usage: + > var buf = [ 2.0, 6.0, 12.0, 20.0, 30.0 ]; + > var x = new {{alias:@stdlib/array/float32}}( buf ); + > buf = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var y = new {{alias:@stdlib/array/float32}}( buf ); + > {{alias}}( x.length, x, 1, y, 1 ) + [ 1.0, 2.0, 3.0, 4.0, 5.0 ] + + // Using `N` and stride parameters: + > buf = [ 14.0, 2.0, 27.0, 4.0, 33.0, 6.0 ]; + > x = new {{alias:@stdlib/array/float32}}( buf ); + > buf = [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ]; + > y = new {{alias:@stdlib/array/float32}}( buf ); + > {{alias}}( 3, x, 2, y, 2 ) + [ 2.0, 8.0, 3.0, 10.0, 3.0, 12.0 ] + + // Using view offsets: + > var bufX = [ 1.0, 18.0, 30.0, 44.0, 5.0, 6.0 ]; + > var bufY = [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0 ]; + > var x0 = new {{alias:@stdlib/array/float32}}( bufX ); + > var y0 = new {{alias:@stdlib/array/float32}}( bufY ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetY = y0.BYTES_PER_ELEMENT * 2; + > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, offsetX ); + > var y1 = new {{alias:@stdlib/array/float32}}( y0.buffer, offsetY ); + > {{alias}}( 3, x1, 1, y1, 1 ) + [ 2.0, 3.0, 4.0, 12.0 ] + > y0 + [ 7.0, 8.0, 2.0, 3.0, 4.0, 12.0 ] + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Divides elements of a single-precision floating-point strided array `x` by + the corresponding elements of a single-precision floating-point strided + array `y` and assigns the results to `y` using alternative indexing + semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float32Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Float32Array + Output array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + y: Float32Array + Output array. + + Examples + -------- + // Standard Usage: + > var buf = [ 2.0, 6.0, 12.0, 20.0, 30.0 ]; + > var x = new {{alias:@stdlib/array/float32}}( buf ); + > buf = [ 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var y = new {{alias:@stdlib/array/float32}}( buf ); + > {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + [ 1.0, 2.0, 3.0, 4.0, 5.0 ] + + // Using index offsets: + > x = new {{alias:@stdlib/array/float32}}( [ 1.0, 2.0, 24.0, 36.0, 50.0 ] ); + > y = new {{alias:@stdlib/array/float32}}( [ 6.0, 7.0, 8.0, 9.0, 10.0 ] ); + > {{alias}}.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ) + [ 6.0, 7.0, 3.0, 4.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/sxdy/docs/types/index.d.ts new file mode 100644 index 000000000000..401498720389 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/docs/types/index.d.ts @@ -0,0 +1,103 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/** +* Interface describing `sxdy`. +*/ +interface Routine { + /** + * Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + * var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * sxdy( x.length, x, 1, y, 1 ); + * // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] + */ + ( N: number, x: Float32Array, strideX: number, y: Float32Array, strideY: number ): Float32Array; + + /** + * Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting `x` index + * @param y - output array + * @param strideY - `y` stride length + * @param offsetY - starting `y` index + * @returns output array + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + * var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * + * sxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] + */ + ndarray( N: number, x: Float32Array, strideX: number, offsetX: number, y: Float32Array, strideY: number, offsetY: number ): Float32Array; +} + +/** +* Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y`. +* +* @param N - number of indexed elements +* @param x - input array +* @param strideX - `x` stride length +* @param y - output array +* @param strideY - `y` stride length +* @returns output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); +* var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* sxdy( x.length, x, 1, y, 1 ); +* // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); +* var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* sxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +declare var sxdy: Routine; + + +// EXPORTS // + +export = sxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/sxdy/docs/types/test.ts new file mode 100644 index 000000000000..f06df8580dba --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/docs/types/test.ts @@ -0,0 +1,250 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import sxdy = require( './index' ); + + +// TESTS // + +// The function returns a Float32Array... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy( x.length, x, 1, y, 1 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy( '10', x, 1, y, 1 ); // $ExpectError + sxdy( true, x, 1, y, 1 ); // $ExpectError + sxdy( false, x, 1, y, 1 ); // $ExpectError + sxdy( null, x, 1, y, 1 ); // $ExpectError + sxdy( undefined, x, 1, y, 1 ); // $ExpectError + sxdy( [], x, 1, y, 1 ); // $ExpectError + sxdy( {}, x, 1, y, 1 ); // $ExpectError + sxdy( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Float32Array... +{ + const y = new Float32Array( 10 ); + + sxdy( 10, 10, 1, y, 1 ); // $ExpectError + sxdy( 10, '10', 1, y, 1 ); // $ExpectError + sxdy( 10, true, 1, y, 1 ); // $ExpectError + sxdy( 10, false, 1, y, 1 ); // $ExpectError + sxdy( 10, null, 1, y, 1 ); // $ExpectError + sxdy( 10, undefined, 1, y, 1 ); // $ExpectError + sxdy( 10, [ '1' ], 1, y, 1 ); // $ExpectError + sxdy( 10, {}, 1, y, 1 ); // $ExpectError + sxdy( 10, ( x: number ): number => x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy( x.length, x, '10', y, 1 ); // $ExpectError + sxdy( x.length, x, true, y, 1 ); // $ExpectError + sxdy( x.length, x, false, y, 1 ); // $ExpectError + sxdy( x.length, x, null, y, 1 ); // $ExpectError + sxdy( x.length, x, undefined, y, 1 ); // $ExpectError + sxdy( x.length, x, [], y, 1 ); // $ExpectError + sxdy( x.length, x, {}, y, 1 ); // $ExpectError + sxdy( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sxdy( 10, x, 1, 10, 1 ); // $ExpectError + sxdy( 10, x, 1, '10', 1 ); // $ExpectError + sxdy( 10, x, 1, true, 1 ); // $ExpectError + sxdy( 10, x, 1, false, 1 ); // $ExpectError + sxdy( 10, x, 1, null, 1 ); // $ExpectError + sxdy( 10, x, 1, undefined, 1 ); // $ExpectError + sxdy( 10, x, 1, [ '1' ], 1 ); // $ExpectError + sxdy( 10, x, 1, {}, 1 ); // $ExpectError + sxdy( 10, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy( x.length, x, 1, y, '10' ); // $ExpectError + sxdy( x.length, x, 1, y, true ); // $ExpectError + sxdy( x.length, x, 1, y, false ); // $ExpectError + sxdy( x.length, x, 1, y, null ); // $ExpectError + sxdy( x.length, x, 1, y, undefined ); // $ExpectError + sxdy( x.length, x, 1, y, [] ); // $ExpectError + sxdy( x.length, x, 1, y, {} ); // $ExpectError + sxdy( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy(); // $ExpectError + sxdy( x.length ); // $ExpectError + sxdy( x.length ); // $ExpectError + sxdy( x.length, x ); // $ExpectError + sxdy( x.length, x, 1 ); // $ExpectError + sxdy( x.length, x, 1, y ); // $ExpectError + sxdy( x.length, x, 1, y ); // $ExpectError + sxdy( x.length, x, 1, y, 1, 10 ); // $ExpectError +} + +// Attached to the main export is an `ndarray` method which returns a Float32Array... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType Float32Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy.ndarray( '10', x, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Float32Array... +{ + const y = new Float32Array( 10 ); + + sxdy.ndarray( 10, 10, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, '10', 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, true, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, false, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, null, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, undefined, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, [ '1' ], 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, {}, 1, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, ( x: number ): number => x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy.ndarray( x.length, x, '10', 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy.ndarray( x.length, x, 1, '10', y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + sxdy.ndarray( 10, x, 1, 0, 10, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, x, 1, 0, '10', 1, 0 ); // $ExpectError + sxdy.ndarray( 10, x, 1, 0, true, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, x, 1, 0, false, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, x, 1, 0, null, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, x, 1, 0, undefined, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + sxdy.ndarray( 10, x, 1, 0, {}, 1, 0 ); // $ExpectError + sxdy.ndarray( 10, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy.ndarray( x.length, x, 1, 0, y, '10', 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy.ndarray( x.length, x, 1, 0, y, 1, '10' ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + const y = new Float32Array( 10 ); + + sxdy.ndarray(); // $ExpectError + sxdy.ndarray( x.length ); // $ExpectError + sxdy.ndarray( x.length ); // $ExpectError + sxdy.ndarray( x.length, x ); // $ExpectError + sxdy.ndarray( x.length, x, 1 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + sxdy.ndarray( x.length, x, 1, 0, y, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sxdy/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/sxdy/examples/c/example.c new file mode 100644 index 000000000000..0deaa7dc7817 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/examples/c/example.c @@ -0,0 +1,41 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sxdy.h" +#include + +int main( void ) { + // Create strided arrays: + const float x[] = { 2.0f, -6.0f, 12.0f, -20.0f, 30.0f, -42.0f, 56.0f, -72.0f }; + float y[] = { 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f }; + + // Specify the number of indexed elements: + const int N = 8; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Divide elements of `x` by the corresponding elements of `y`: + stdlib_strided_sxdy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < 8; i++ ) { + printf( "y[ %i ] = %f\n", i, y[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/examples/index.js new file mode 100644 index 000000000000..00a66515561f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var sxdy = require( './../lib' ); + +var x = discreteUniform( 10, -100, 100, { + 'dtype': 'float32' +}); +console.log( x ); + +var y = discreteUniform( 10, 1, 100, { + 'dtype': 'float32' +}); +console.log( y ); + +sxdy( x.length, x, 1, y, 1 ); +console.log( y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/sxdy/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var sxdy = require( '@stdlib/blas/ext/base/sxdy' ); +* +* var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); +* var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* sxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var sxdy; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + sxdy = main; +} else { + sxdy = tmp; +} + + +// EXPORTS // + +module.exports = sxdy; + +// exports: { "ndarray": "sxdy.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/main.js new file mode 100644 index 000000000000..e6211740b2d8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sxdy = require( './sxdy.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( sxdy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/native.js new file mode 100644 index 000000000000..bea9d15e6b99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var sxdy = require( './sxdy.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( sxdy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = sxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/ndarray.js new file mode 100644 index 000000000000..500685fcb399 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/ndarray.js @@ -0,0 +1,98 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Float32Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); +* var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* sxdy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +function sxdy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var ix; + var iy; + var m; + var i; + + if ( N <= 0 ) { + return y; + } + ix = offsetX; + iy = offsetY; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideY === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + y[ iy ] = x[ ix ] / y[ iy ]; + ix += strideX; + iy += strideY; + } + } + if ( N < M ) { + return y; + } + for ( i = m; i < N; i += M ) { + y[ iy ] = x[ ix ] / y[ iy ]; + y[ iy+1 ] = x[ ix+1 ] / y[ iy+1 ]; + y[ iy+2 ] = x[ ix+2 ] / y[ iy+2 ]; + y[ iy+3 ] = x[ ix+3 ] / y[ iy+3 ]; + y[ iy+4 ] = x[ ix+4 ] / y[ iy+4 ]; + ix += M; + iy += M; + } + return y; + } + for ( i = 0; i < N; i++ ) { + y[ iy ] = x[ ix ] / y[ iy ]; + ix += strideX; + iy += strideY; + } + return y; +} + + +// EXPORTS // + +module.exports = sxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/ndarray.native.js new file mode 100644 index 000000000000..33a0ca4ed772 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/ndarray.native.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Float32Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); +* var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* sxdy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +function sxdy( N, x, strideX, offsetX, y, strideY, offsetY ) { + addon.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ); + return y; +} + + +// EXPORTS // + +module.exports = sxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/sxdy.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/sxdy.js new file mode 100644 index 000000000000..8f4d5373b703 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/sxdy.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Float32Array} y - output array +* @param {integer} strideY - `y` stride length +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); +* var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* sxdy( x.length, x, 1, y, 1 ); +* // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +function sxdy( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = sxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/sxdy.native.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/sxdy.native.js new file mode 100644 index 000000000000..f40ccc75b125 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/lib/sxdy.native.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Float32Array} y - output array +* @param {integer} strideY - `y` stride length +* @returns {Float32Array} output array +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); +* var y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* +* sxdy( x.length, x, 1, y, 1 ); +* // y => [ 1.0, 2.0, 3.0, 4.0, 5.0 ] +*/ +function sxdy( N, x, strideX, y, strideY ) { + addon( N, x, strideX, y, strideY ); + return y; +} + + +// EXPORTS // + +module.exports = sxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/sxdy/manifest.json new file mode 100644 index 000000000000..0495ff2aab4a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/manifest.json @@ -0,0 +1,98 @@ +{ + "options": { + "task": "build", + "wasm": false + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-float32array" + ] + }, + { + "task": "benchmark", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "build", + "wasm": true, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/package.json b/lib/node_modules/@stdlib/blas/ext/base/sxdy/package.json new file mode 100644 index 000000000000..697e07cd8c22 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/package.json @@ -0,0 +1,80 @@ +{ + "name": "@stdlib/blas/ext/base/sxdy", + "version": "0.0.0", + "description": "Divide elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assign the results to `y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "linear", + "algebra", + "subroutines", + "divide", + "division", + "quotient", + "transform", + "strided", + "array", + "ndarray", + "vector", + "xdy", + "sxdy", + "float32", + "single", + "float32array" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/sxdy/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/sxdy/src/addon.c new file mode 100644 index 000000000000..c76f0e0ace9f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/src/addon.c @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sxdy.h" +#include "stdlib/napi/export.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_float32array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, Y, N, strideY, argv, 3 ); + API_SUFFIX(stdlib_strided_sxdy)( N, X, strideX, Y, strideY ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 7 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_INT64( env, offsetY, argv, 6 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, Y, N, strideY, argv, 4 ); + API_SUFFIX(stdlib_strided_sxdy_ndarray)( N, X, strideX, offsetX, Y, strideY, offsetY ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/sxdy/src/main.c new file mode 100644 index 000000000000..351afeb73b62 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/src/main.c @@ -0,0 +1,95 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/sxdy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/strided/base/stride2offset.h" + +static const CBLAS_INT M = 5; + +/** +* Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y`. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param Y output array +* @param strideY stride length for `Y` +*/ +void API_SUFFIX(stdlib_strided_sxdy)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, float *Y, const CBLAS_INT strideY ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oy = stdlib_strided_stride2offset( N, strideY ); + API_SUFFIX(stdlib_strided_sxdy_ndarray)( N, X, strideX, ox, Y, strideY, oy ); +} + +/** +* Divides elements of a single-precision floating-point strided array `x` by the corresponding elements of a single-precision floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param offsetX starting index for `X` +* @param Y output array +* @param strideY stride length for `Y` +* @param offsetY starting index for `Y` +*/ +void API_SUFFIX(stdlib_strided_sxdy_ndarray)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, float *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ) { + CBLAS_INT ix; + CBLAS_INT iy; + CBLAS_INT m; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + iy = offsetY; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX == 1 && strideY == 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + Y[ iy ] = X[ ix ] / Y[ iy ]; + ix += strideX; + iy += strideY; + } + } + if ( N < M ) { + return; + } + for ( i = m; i < N; i += M ) { + Y[ iy ] = X[ ix ] / Y[ iy ]; + Y[ iy+1 ] = X[ ix+1 ] / Y[ iy+1 ]; + Y[ iy+2 ] = X[ ix+2 ] / Y[ iy+2 ]; + Y[ iy+3 ] = X[ ix+3 ] / Y[ iy+3 ]; + Y[ iy+4 ] = X[ ix+4 ] / Y[ iy+4 ]; + ix += M; + iy += M; + } + return; + } + for ( i = 0; i < N; i++ ) { + Y[ iy ] = X[ ix ] / Y[ iy ]; + ix += strideX; + iy += strideY; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.js new file mode 100644 index 000000000000..2a25c7fabf2e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var sxdy = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof sxdy.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var sxdy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sxdy, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var sxdy; + var main; + + main = require( './../lib/main.js' ); + + sxdy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( sxdy, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.ndarray.js new file mode 100644 index 000000000000..8244953dabc8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.ndarray.js @@ -0,0 +1,291 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sxdy = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( sxdy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 4.0, // 20.0 / 5.0 + 5.0 // 30.0 / 6.0 + ]); + + sxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 12.0 ] ); + y = new Float32Array( [ 5.0, 6.0 ] ); + expected = new Float32Array( [ 1.0, 2.0 ] ); + + sxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + y = new Float32Array( [ 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + out = sxdy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0 ] ); + y = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + + sxdy( 0, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + sxdy( -4, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 2.0, // 0 + 2.0, + 9.0, // 1 + 4.0, + 20.0 // 2 + ]); + y = new Float32Array( [ 2.0, 3.0, 4.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 3.0, // 9.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + sxdy( 3, x, 2, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0 ] ); + y = new Float32Array([ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 30.0, + 2.0, // 6.0 / 3.0 + 10.0, + 3.0 // 12.0 / 4.0 + ]); + + sxdy( 3, x, 1, 0, y, 2, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 4.0, // 2 + 2.0, + 9.0, // 1 + 4.0, + 10.0 // 0 + ]); + y = new Float32Array([ + 4.0, // 2 + 3.0, // 1 + 2.0 // 0 + ]); + expected = new Float32Array([ + 1.0, // 4.0 / 4.0 + 3.0, // 9.0 / 3.0 + 5.0 // 10.0 / 2.0 + ]); + + sxdy( 3, x, -2, x.length-1, y, -1, y.length-1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 0.0, + 2.0, // 0 + 2.0, + 9.0, // 1 + 4.0, + 20.0 // 2 + ]); + y = new Float32Array( [ 2.0, 3.0, 4.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 3.0, // 9.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + sxdy( 3, x, 2, 1, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0 ] ); + y = new Float32Array([ + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]); + expected = new Float32Array([ + 0.0, + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0 // 12.0 / 4.0 + ]); + + sxdy( 3, x, 1, 0, y, 1, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 0.0, + 2.0, // 0 + 0.0, + 6.0, // 1 + 0.0, + 12.0 // 2 + ]); + y = new Float32Array([ + 0.0, + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 0.0 + ]); + expected = new Float32Array([ + 0.0, + 0.0, + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 0.0 + ]); + + sxdy( 3, x, 2, 1, y, 1, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float32Array( 100 ); + y = new Float32Array( 100 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + sxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float32Array( 240 ); + y = new Float32Array( 240 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + sxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.ndarray.native.js new file mode 100644 index 000000000000..1c2e1cd894e8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.ndarray.native.js @@ -0,0 +1,300 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sxdy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( sxdy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', opts, function test( t ) { + t.strictEqual( sxdy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 4.0, // 20.0 / 5.0 + 5.0 // 30.0 / 6.0 + ]); + + sxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 12.0 ] ); + y = new Float32Array( [ 5.0, 6.0 ] ); + expected = new Float32Array( [ 1.0, 2.0 ] ); + + sxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + y = new Float32Array( [ 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + out = sxdy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0 ] ); + y = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + + sxdy( 0, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + sxdy( -4, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 2.0, // 0 + 2.0, + 9.0, // 1 + 4.0, + 20.0 // 2 + ]); + y = new Float32Array( [ 2.0, 3.0, 4.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 3.0, // 9.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + sxdy( 3, x, 2, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0 ] ); + y = new Float32Array([ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 30.0, + 2.0, // 6.0 / 3.0 + 10.0, + 3.0 // 12.0 / 4.0 + ]); + + sxdy( 3, x, 1, 0, y, 2, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 4.0, // 2 + 2.0, + 9.0, // 1 + 4.0, + 10.0 // 0 + ]); + y = new Float32Array([ + 4.0, // 2 + 3.0, // 1 + 2.0 // 0 + ]); + expected = new Float32Array([ + 1.0, // 4.0 / 4.0 + 3.0, // 9.0 / 3.0 + 5.0 // 10.0 / 2.0 + ]); + + sxdy( 3, x, -2, x.length-1, y, -1, y.length-1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 0.0, + 2.0, // 0 + 2.0, + 9.0, // 1 + 4.0, + 20.0 // 2 + ]); + y = new Float32Array( [ 2.0, 3.0, 4.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 3.0, // 9.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + sxdy( 3, x, 2, 1, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` offset', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0 ] ); + y = new Float32Array([ + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]); + expected = new Float32Array([ + 0.0, + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0 // 12.0 / 4.0 + ]); + + sxdy( 3, x, 1, 0, y, 1, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 0.0, + 2.0, // 0 + 0.0, + 6.0, // 1 + 0.0, + 12.0 // 2 + ]); + y = new Float32Array([ + 0.0, + 0.0, + 2.0, // 0 + 3.0, // 1 + 4.0, // 2 + 0.0 + ]); + expected = new Float32Array([ + 0.0, + 0.0, + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 0.0 + ]); + + sxdy( 3, x, 2, 1, y, 1, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float32Array( 100 ); + y = new Float32Array( 100 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + sxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float32Array( 240 ); + y = new Float32Array( 240 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + sxdy( x.length, x, 1, 0, y, 1, 0 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.sxdy.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.sxdy.js new file mode 100644 index 000000000000..f54a9623e659 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.sxdy.js @@ -0,0 +1,245 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var sxdy = require( './../lib/sxdy.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( sxdy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 4.0, // 20.0 / 5.0 + 5.0 // 30.0 / 6.0 + ]); + + sxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 12.0 ] ); + y = new Float32Array( [ 5.0, 6.0 ] ); + expected = new Float32Array( [ 1.0, 2.0 ] ); + + sxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = sxdy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0 ] ); + y = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + + sxdy( 0, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + sxdy( -4, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 2.0, // 0 + 2.0, + 9.0, // 1 + 4.0, + 20.0 // 2 + ]); + y = new Float32Array( [ 2.0, 3.0, 4.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 3.0, // 9.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + sxdy( 3, x, 2, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0 ] ); + y = new Float32Array([ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 30.0, + 2.0, // 6.0 / 3.0 + 10.0, + 3.0 // 12.0 / 4.0 + ]); + + sxdy( 3, x, 1, y, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 4.0, // 2 + 2.0, + 9.0, // 1 + 4.0, + 10.0 // 0 + ]); + y = new Float32Array([ + 4.0, // 2 + 3.0, // 1 + 2.0 // 0 + ]); + expected = new Float32Array([ + 1.0, // 4.0 / 4.0 + 3.0, // 9.0 / 3.0 + 5.0 // 10.0 / 2.0 + ]); + + sxdy( 3, x, -2, y, -1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Float32Array([ + 10.0, + 2.0, // 0 + 6.0, // 1 + 12.0, // 2 + 4.0 + ]); + y0 = new Float32Array([ + 10.0, + 10.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Float32Array([ + 10.0, + 10.0, + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0 // 12.0 / 4.0 + ]); + + sxdy( 3, x1, 1, y1, 1 ); + t.deepEqual( y0, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float32Array( 100 ); + y = new Float32Array( 100 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + sxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float32Array( 240 ); + y = new Float32Array( 240 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + sxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.sxdy.native.js b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.sxdy.native.js new file mode 100644 index 000000000000..b9022f04b97c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/sxdy/test/test.sxdy.native.js @@ -0,0 +1,254 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Float32Array = require( '@stdlib/array/float32' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var sxdy = tryRequire( resolve( __dirname, './../lib/sxdy.native.js' ) ); +var opts = { + 'skip': ( sxdy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( sxdy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0, // 12.0 / 4.0 + 4.0, // 20.0 / 5.0 + 5.0 // 30.0 / 6.0 + ]); + + sxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float32Array( [ 5.0, 12.0 ] ); + y = new Float32Array( [ 5.0, 6.0 ] ); + expected = new Float32Array( [ 1.0, 2.0 ] ); + + sxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0, 20.0, 30.0 ] ); + y = new Float32Array( [ 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = sxdy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array( [ 2.0, 6.0, 12.0 ] ); + y = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + expected = new Float32Array( [ 4.0, 5.0, 6.0 ] ); + + sxdy( 0, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + sxdy( -4, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 2.0, // 0 + 2.0, + 9.0, // 1 + 4.0, + 20.0 // 2 + ]); + y = new Float32Array( [ 2.0, 3.0, 4.0 ] ); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 3.0, // 9.0 / 3.0 + 5.0 // 20.0 / 4.0 + ]); + + sxdy( 3, x, 2, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ 2.0, 6.0, 12.0 ]); + y = new Float32Array([ + 2.0, // 0 + 30.0, + 3.0, // 1 + 10.0, + 4.0 // 2 + ]); + expected = new Float32Array([ + 1.0, // 2.0 / 2.0 + 30.0, + 2.0, // 6.0 / 3.0 + 10.0, + 3.0 // 12.0 / 4.0 + ]); + + sxdy( 3, x, 1, y, 2 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Float32Array([ + 4.0, // 2 + 2.0, + 9.0, // 1 + 4.0, + 10.0 // 0 + ]); + y = new Float32Array([ + 4.0, // 2 + 3.0, // 1 + 2.0 // 0 + ]); + expected = new Float32Array([ + 1.0, // 4.0 / 4.0 + 3.0, // 9.0 / 3.0 + 5.0 // 10.0 / 2.0 + ]); + + sxdy( 3, x, -2, y, -1 ); + t.deepEqual( y, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Float32Array([ + 10.0, + 2.0, // 0 + 6.0, // 1 + 12.0, // 2 + 4.0 + ]); + y0 = new Float32Array([ + 10.0, + 10.0, + 2.0, // 0 + 3.0, // 1 + 4.0 // 2 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Float32Array([ + 10.0, + 10.0, + 1.0, // 2.0 / 2.0 + 2.0, // 6.0 / 3.0 + 3.0 // 12.0 / 4.0 + ]); + + sxdy( 3, x1, 1, y1, 1 ); + t.deepEqual( y0, expected, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + var i; + + x = new Float32Array( 100 ); + y = new Float32Array( 100 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + sxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + x = new Float32Array( 240 ); + y = new Float32Array( 240 ); + expected = new Float32Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + x[ i ] = i; + y[ i ] = x.length - i; + expected[ i ] = x[ i ] / y[ i ]; + } + sxdy( x.length, x, 1, y, 1 ); + t.deepEqual( y, expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/scripts/build.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/scripts/build.js index 5f54efd4e40f..66bf9650b6d6 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/scripts/build.js +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/scripts/build.js @@ -26,6 +26,7 @@ var resolve = require( 'path' ).resolve; var readFile = require( '@stdlib/fs/read-file' ).sync; var writeFile = require( '@stdlib/fs/write-file' ).sync; var replace = require( '@stdlib/string/replace' ); +var currentYear = require( '@stdlib/time/current-year' ); // VARIABLES // @@ -33,7 +34,6 @@ var replace = require( '@stdlib/string/replace' ); var wpath = resolve( __dirname, '..', 'src', 'main.wasm' ); var tpath = resolve( __dirname, 'template.txt' ); var opath = resolve( __dirname, '..', 'lib', 'binary.browser.js' ); -var currentYear = require( '@stdlib/time/current-year' ); var opts = { 'encoding': 'utf8' diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapx/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsum/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsum/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsum/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsum/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsum/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsum/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsum/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumkbn/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumkbn/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumkbn/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumkbn/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumkbn/src/Makefile index eb51121eec4c..0fbfa072ced8 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumkbn/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumkbn/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumors/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumors/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumors/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumors/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumors/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumors/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumors/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumpw/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumpw/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumpw/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumpw/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumpw/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumpw/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dapxsumpw/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/scripts/build.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/scripts/build.js index 5f54efd4e40f..66bf9650b6d6 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/scripts/build.js +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/scripts/build.js @@ -26,6 +26,7 @@ var resolve = require( 'path' ).resolve; var readFile = require( '@stdlib/fs/read-file' ).sync; var writeFile = require( '@stdlib/fs/write-file' ).sync; var replace = require( '@stdlib/string/replace' ); +var currentYear = require( '@stdlib/time/current-year' ); // VARIABLES // @@ -33,7 +34,6 @@ var replace = require( '@stdlib/string/replace' ); var wpath = resolve( __dirname, '..', 'src', 'main.wasm' ); var tpath = resolve( __dirname, 'template.txt' ); var opath = resolve( __dirname, '..', 'lib', 'binary.browser.js' ); -var currentYear = require( '@stdlib/time/current-year' ); var opts = { 'encoding': 'utf8' diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dasumpw/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnanasumors/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnanasumors/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnanasumors/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnanasumors/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnanasumors/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnanasumors/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnanasumors/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/package.json b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/package.json index 9d4c4f937d2f..f7910642ea63 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/package.json @@ -1,7 +1,7 @@ { "name": "@stdlib/blas/ext/base/wasm/dnansumkbn2", "version": "0.0.0", - "description": "Compute the sum of double-precision floating-point strided array elements, ignoring `NaN` values and using a second-order iterative Kahan–Babuška algorithm.", + "description": "Compute the sum of double-precision floating-point strided array elements, ignoring NaN values and using a second-order iterative Kahan–Babuška algorithm.", "license": "Apache-2.0", "author": { "name": "The Stdlib Authors", diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/scripts/build.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/scripts/build.js index 5f54efd4e40f..66bf9650b6d6 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/scripts/build.js +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/scripts/build.js @@ -26,6 +26,7 @@ var resolve = require( 'path' ).resolve; var readFile = require( '@stdlib/fs/read-file' ).sync; var writeFile = require( '@stdlib/fs/write-file' ).sync; var replace = require( '@stdlib/string/replace' ); +var currentYear = require( '@stdlib/time/current-year' ); // VARIABLES // @@ -33,7 +34,6 @@ var replace = require( '@stdlib/string/replace' ); var wpath = resolve( __dirname, '..', 'src', 'main.wasm' ); var tpath = resolve( __dirname, 'template.txt' ); var opath = resolve( __dirname, '..', 'lib', 'binary.browser.js' ); -var currentYear = require( '@stdlib/time/current-year' ); var opts = { 'encoding': 'utf8' diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumkbn2/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumpw/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumpw/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumpw/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumpw/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumpw/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumpw/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/dnansumpw/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/sapxsumkbn/scripts/postbuild.wat.js b/lib/node_modules/@stdlib/blas/ext/base/wasm/sapxsumkbn/scripts/postbuild.wat.js new file mode 100644 index 000000000000..0d8edabe98d0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/sapxsumkbn/scripts/postbuild.wat.js @@ -0,0 +1,64 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var licenseHeader = require( '@stdlib/_tools/licenses/header' ); +var insertHeader = require( '@stdlib/_tools/licenses/insert-header-file-list' ).sync; +var currentYear = require( '@stdlib/time/current-year' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wat' ); + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +* @throws {Error} unexpected error +*/ +function main() { + var headers; + var files; + var err; + + files = [ + wpath + ]; + headers = { + 'wat': licenseHeader( 'Apache-2.0', 'wat', { + 'year': currentYear(), + 'copyright': 'The Stdlib Authors' + }) + }; + err = insertHeader( files, headers ); + if ( err ) { + throw err; + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/wasm/sapxsumkbn/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/wasm/sapxsumkbn/src/Makefile index 1b1f35347760..d263d9b6d777 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/wasm/sapxsumkbn/src/Makefile +++ b/lib/node_modules/@stdlib/blas/ext/base/wasm/sapxsumkbn/src/Makefile @@ -202,6 +202,7 @@ $(wasm_targets): #/ $(wat_targets): %.wat: %.wasm $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/postbuild.wat.js #/ # Compiles WebAssembly binary files to JavaScript. diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/README.md b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/README.md new file mode 100644 index 000000000000..0030cbdf3770 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/README.md @@ -0,0 +1,330 @@ + + +# zindexOfTruthy + +> Return the index of the first truthy element in a double-precision complex floating-point strided array. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var zindexOfTruthy = require( '@stdlib/blas/ext/base/zindex-of-truthy' ); +``` + +#### zindexOfTruthy( N, x, strideX ) + +Returns the index of the first truthy element in a double-precision complex floating-point strided array. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 0.0, 0.0, 1.0, 2.0, 4.0, 5.0 ] ); + +var idx = zindexOfTruthy( x.length, x, 1 ); +// returns 1 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: input [`Complex128Array`][@stdlib/array/complex128]. +- **strideX**: stride length. + +If the function is unable to find a truthy element, the function returns `-1`. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0 ] ); + +var idx = zindexOfTruthy( x.length, x, 1 ); +// returns -1 +``` + +The `N` and stride parameters determine which elements in the strided array are accessed at runtime. For example, to access every other element: + + + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 1.0, 2.0, 3.0, 4.0, 5.0 ] ); + +var idx = zindexOfTruthy( 4, x, 2 ); +// returns 2 +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +// Initial array... +var x0 = new Complex128Array( [ 0.0, 0.0, 1.0, 2.0, 3.0, 4.0 ] ); + +// Create an offset view... +var x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index... +var idx = zindexOfTruthy( 2, x1, 1 ); +// returns 0 +``` + +#### zindexOfTruthy.ndarray( N, x, strideX, offsetX ) + +Returns the index of the first truthy element in a double-precision complex floating-point strided array using alternative indexing semantics. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 0.0, 0.0, 1.0, 2.0, 4.0, 5.0 ] ); + +var idx = zindexOfTruthy.ndarray( x.length, x, 1, 0 ); +// returns 1 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to access only the last three elements of the strided array: + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 2.0 ] ); + +var idx = zindexOfTruthy.ndarray( 3, x, 1, x.length-3 ); +// returns 2 +``` + +
+ + + + + +
+ +## Notes + +- A complex number is truthy when at least one of its real or imaginary components is truthy. +- If unable to find a truthy element, both functions return `-1`. +- Both functions explicitly treat `NaN` values as falsy. + +
+ + + + + +
+ +## Examples + + + +```javascript +var bernoulli = require( '@stdlib/random/array/bernoulli' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var logEach = require( '@stdlib/console/log-each' ); +var zindexOfTruthy = require( '@stdlib/blas/ext/base/zindex-of-truthy' ); + +var buf = bernoulli( 10*2, 0.7, { + 'dtype': 'float64' +}); +var x = new Complex128Array( buf.buffer ); +logEach( '%s', x ); + +var idx = zindexOfTruthy( x.length, x, 1 ); +console.log( idx ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/zindex_of_truthy.h" +``` + +#### stdlib_strided_zindex_of_truthy( N, \*X, strideX ) + +Returns the index of the first truthy element in a double-precision complex floating-point strided array. + +```c +#include "stdlib/complex/float64/ctor.h" + +const double x[] = { 0.0, 0.0, 1.0, 2.0 }; + +int idx = stdlib_strided_zindex_of_truthy( 2, (const stdlib_complex128_t *)x, 1 ); +// returns 1 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. + +```c +CBLAS_INT stdlib_strided_zindex_of_truthy( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX ); +``` + +#### stdlib_strided_zindex_of_truthy_ndarray( N, \*X, strideX, offsetX ) + +Returns the index of the first truthy element in a double-precision complex floating-point strided array using alternative indexing semantics. + +```c +#include "stdlib/complex/float64/ctor.h" + +const double x[] = { 0.0, 0.0, 1.0, 2.0 }; + +int idx = stdlib_strided_zindex_of_truthy_ndarray( 2, (const stdlib_complex128_t *)x, 1, 0 ); +// returns 1 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length. +- **offsetX**: `[in] CBLAS_INT` starting index. + +```c +CBLAS_INT stdlib_strided_zindex_of_truthy_ndarray( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +### Notes + +- A complex number is truthy when at least one of its real or imaginary components is truthy. +- If unable to find a truthy element, both functions return `-1`. +- Both functions explicitly treat `NaN` values as falsy. + +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/zindex_of_truthy.h" +#include "stdlib/complex/float64/ctor.h" +#include + +int main( void ) { + // Create a strided array (interleaved real and imaginary components): + const double x[] = { 0.0, 0.0, 1.0, 2.0, 4.0, 5.0, 6.0, 7.0 }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify a stride: + const int strideX = 1; + + // Find the index of the first truthy element: + int idx = stdlib_strided_zindex_of_truthy( N, (const stdlib_complex128_t *)x, strideX ); + + // Print the result: + printf( "index value: %d\n", idx ); +} +``` + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.js new file mode 100644 index 000000000000..470721aef897 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var Complex128Array = require( '@stdlib/array/complex128' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zindexOfTruthy = require( './../lib/zindex_of_truthy.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = new Complex128Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = zindexOfTruthy( x.length, x, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.native.js new file mode 100644 index 000000000000..5b8663b4f431 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.native.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zindexOfTruthy = tryRequire( resolve( __dirname, './../lib/zindex_of_truthy.native.js' ) ); +var opts = { + 'skip': ( zindexOfTruthy instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = new Complex128Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = zindexOfTruthy( x.length, x, 1 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..8f7aa5dea810 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.ndarray.js @@ -0,0 +1,97 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var Complex128Array = require( '@stdlib/array/complex128' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zindexOfTruthy = require( './../lib/ndarray.js' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = new Complex128Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = zindexOfTruthy( x.length, x, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..b082d5a3e720 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive; +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zindexOfTruthy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zindexOfTruthy instanceof Error ) +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = new Complex128Array( len ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var out; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + out = zindexOfTruthy( x.length, x, 1, 0 ); + if ( out !== out ) { + b.fail( 'should return an integer' ); + } + } + b.toc(); + if ( !isInteger( out ) ) { + b.fail( 'should return an integer' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/zindex-of-truthy/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..faa1ac640b8c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/benchmark/c/benchmark.length.c @@ -0,0 +1,200 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zindex_of_truthy.h" +#include "stdlib/complex/float64/ctor.h" +#include +#include +#include +#include +#include + +#define NAME "zindex_of_truthy" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double t; + int idx; + int i; + + x = (double *)malloc( (size_t)( len*2 ) * sizeof( double ) ); + for ( i = 0; i < len*2; i++ ) { + x[ i ] = 0.0; + } + x[ (len*2)-1 ] = 1.0; + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ (len*2)-4 ] = (double)( i % 4 ); + idx = stdlib_strided_zindex_of_truthy( len, (const stdlib_complex128_t *)x, 1 ); + if ( idx < 0 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < 0 ) { + printf( "unexpected result\n" ); + } + free( x ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double t; + int idx; + int i; + + x = (double *)malloc( (size_t)( len*2 ) * sizeof( double ) ); + for ( i = 0; i < len*2; i++ ) { + x[ i ] = 0.0; + } + x[ (len*2)-1 ] = 1.0; + idx = -1; + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ (len*2)-4 ] = (double)( i % 4 ); + idx = stdlib_strided_zindex_of_truthy_ndarray( len, (const stdlib_complex128_t *)x, 1, 0 ); + if ( idx < 0 ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( idx < 0 ) { + printf( "unexpected result\n" ); + } + free( x ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/docs/repl.txt new file mode 100644 index 000000000000..b359df93a40f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/docs/repl.txt @@ -0,0 +1,77 @@ + +{{alias}}( N, x, strideX ) + Returns the index of the first truthy element in a double-precision complex + floating-point strided array. + + The `N` and stride parameters determine which elements in the strided array + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0`, the function returns `-1`. + + A complex number is truthy when at least one of its real or imaginary + components is truthy. + + The function treats `NaN` values as falsy. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Complex128Array + Input array. + + strideX: integer + Stride length. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + > var x = new {{alias:@stdlib/array/complex128}}( [ 0.0, 0.0, 1.0, 2.0 ] ); + > var idx = {{alias}}( x.length, x, 1 ) + 1 + + +{{alias}}.ndarray( N, x, strideX, offsetX ) + Returns the index of the first truthy element in a double-precision complex + floating-point strided array using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameter supports indexing semantics based on a + starting index. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Complex128Array + Input array. + + strideX: integer + Stride length. + + offsetX: integer + Starting index. + + Returns + ------- + idx: integer + Index. + + Examples + -------- + > var x = new {{alias:@stdlib/array/complex128}}( [ 0.0, 0.0, 1.0, 2.0 ] ); + > var idx = {{alias}}.ndarray( x.length, x, 1, 0 ) + 1 + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/docs/types/index.d.ts new file mode 100644 index 000000000000..c53c507b3609 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/docs/types/index.d.ts @@ -0,0 +1,112 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +import { Complex128Array } from '@stdlib/types/array'; + +/** +* Interface describing `zindexOfTruthy`. +*/ +interface Routine { + /** + * Returns the index of the first truthy element in a double-precision complex floating-point strided array. + * + * ## Notes + * + * - A complex number is truthy when at least one of its real or imaginary components is truthy. + * - If unable to find a truthy element, the function returns `-1`. + * - The function explicitly treats `NaN` values as falsy. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - stride length + * @returns index + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 0.0, 0.0, 1.0, 2.0 ] ); + * + * var idx = zindexOfTruthy( x.length, x, 1 ); + * // returns 1 + */ + ( N: number, x: Complex128Array, strideX: number ): number; + + /** + * Returns the index of the first truthy element in a double-precision complex floating-point strided array using alternative indexing semantics. + * + * ## Notes + * + * - A complex number is truthy when at least one of its real or imaginary components is truthy. + * - If unable to find a truthy element, the function returns `-1`. + * - The function explicitly treats `NaN` values as falsy. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - stride length + * @param offsetX - starting index + * @returns index + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 0.0, 0.0, 1.0, 2.0 ] ); + * + * var idx = zindexOfTruthy.ndarray( x.length, x, 1, 0 ); + * // returns 1 + */ + ndarray( N: number, x: Complex128Array, strideX: number, offsetX: number ): number; +} + +/** +* Returns the index of the first truthy element in a double-precision complex floating-point strided array. +* +* ## Notes +* +* - A complex number is truthy when at least one of its real or imaginary components is truthy. +* - If unable to find a truthy element, the function returns `-1`. +* - The function explicitly treats `NaN` values as falsy. +* +* @param N - number of indexed elements +* @param x - input array +* @param strideX - stride length +* @returns index +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 0.0, 0.0, 1.0, 2.0 ] ); +* +* var idx = zindexOfTruthy( x.length, x, 1 ); +* // returns 1 +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 0.0, 0.0, 1.0, 2.0 ] ); +* +* var idx = zindexOfTruthy.ndarray( x.length, x, 1, 0 ); +* // returns 1 +*/ +declare var zindexOfTruthy: Routine; + + +// EXPORTS // + +export = zindexOfTruthy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/docs/types/test.ts new file mode 100644 index 000000000000..78b08a0bd288 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/docs/types/test.ts @@ -0,0 +1,133 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import Complex128Array = require( '@stdlib/array/complex128' ); +import zindexOfTruthy = require( './index' ); + + +// TESTS // + +// The function returns a number... +{ + var x = new Complex128Array( [ 1.0, 2.0, 3.0 ] ); + + zindexOfTruthy( x.length, x, 1 ); // $ExpectType number +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + var x = new Complex128Array( [ 1.0, 2.0, 3.0 ] ); + + zindexOfTruthy( '1', x, 1 ); // $ExpectError + zindexOfTruthy( true, x, 1 ); // $ExpectError + zindexOfTruthy( false, x, 1 ); // $ExpectError + zindexOfTruthy( null, x, 1 ); // $ExpectError + zindexOfTruthy( {}, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Complex128Array... +{ + var x = new Complex128Array( [ 1.0, 2.0, 3.0 ] ); + + zindexOfTruthy( x.length, '1', 1 ); // $ExpectError + zindexOfTruthy( x.length, true, 1 ); // $ExpectError + zindexOfTruthy( x.length, false, 1 ); // $ExpectError + zindexOfTruthy( x.length, null, 1 ); // $ExpectError + zindexOfTruthy( x.length, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + var x = new Complex128Array( [ 1.0, 2.0, 3.0 ] ); + + zindexOfTruthy( x.length, x, '1' ); // $ExpectError + zindexOfTruthy( x.length, x, true ); // $ExpectError + zindexOfTruthy( x.length, x, false ); // $ExpectError + zindexOfTruthy( x.length, x, null ); // $ExpectError + zindexOfTruthy( x.length, x, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + zindexOfTruthy(); // $ExpectError + zindexOfTruthy( 3 ); // $ExpectError + zindexOfTruthy( 3, new Complex128Array( [ 1.0, 2.0, 3.0 ] ) ); // $ExpectError + zindexOfTruthy( 3, new Complex128Array( [ 1.0, 2.0, 3.0 ] ), 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + var x = new Complex128Array( [ 1.0, 2.0, 3.0 ] ); + + zindexOfTruthy.ndarray( x.length, x, 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + var x = new Complex128Array( [ 1.0, 2.0, 3.0 ] ); + + zindexOfTruthy.ndarray( '1', x, 1, 1 ); // $ExpectError + zindexOfTruthy.ndarray( true, x, 1, 1 ); // $ExpectError + zindexOfTruthy.ndarray( false, x, 1, 1 ); // $ExpectError + zindexOfTruthy.ndarray( null, x, 1, 1 ); // $ExpectError + zindexOfTruthy.ndarray( {}, x, 1, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Complex128Array... +{ + var x = new Complex128Array( [ 1.0, 2.0, 3.0 ] ); + + zindexOfTruthy.ndarray( x.length, '1', 1, 1 ); // $ExpectError + zindexOfTruthy.ndarray( x.length, true, 1, 1 ); // $ExpectError + zindexOfTruthy.ndarray( x.length, false, 1, 1 ); // $ExpectError + zindexOfTruthy.ndarray( x.length, null, 1, 1 ); // $ExpectError + zindexOfTruthy.ndarray( x.length, {}, 1, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + var x = new Complex128Array( [ 1.0, 2.0, 3.0 ] ); + + zindexOfTruthy.ndarray( x.length, x, '1', 1 ); // $ExpectError + zindexOfTruthy.ndarray( x.length, x, true, 1 ); // $ExpectError + zindexOfTruthy.ndarray( x.length, x, false, 1 ); // $ExpectError + zindexOfTruthy.ndarray( x.length, x, null, 1 ); // $ExpectError + zindexOfTruthy.ndarray( x.length, x, {}, 1 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + var x = new Complex128Array( [ 1.0, 2.0, 3.0 ] ); + + zindexOfTruthy.ndarray( x.length, x, 1, '1' ); // $ExpectError + zindexOfTruthy.ndarray( x.length, x, 1, true ); // $ExpectError + zindexOfTruthy.ndarray( x.length, x, 1, false ); // $ExpectError + zindexOfTruthy.ndarray( x.length, x, 1, null ); // $ExpectError + zindexOfTruthy.ndarray( x.length, x, 1, {} ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + zindexOfTruthy.ndarray(); // $ExpectError + zindexOfTruthy.ndarray( 3 ); // $ExpectError + zindexOfTruthy.ndarray( 3, new Complex128Array( [ 1.0, 2.0, 3.0 ] ) ); // $ExpectError + zindexOfTruthy.ndarray( 3, new Complex128Array( [ 1.0, 2.0, 3.0 ] ), 1 ); // $ExpectError + zindexOfTruthy.ndarray( 3, new Complex128Array( [ 1.0, 2.0, 3.0 ] ), 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/examples/c/example.c new file mode 100644 index 000000000000..5616071f22e9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/examples/c/example.c @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zindex_of_truthy.h" +#include "stdlib/complex/float64/ctor.h" +#include + +int main( void ) { + // Create a strided array (interleaved real and imaginary components): + const double x[] = { 0.0, 0.0, 1.0, 2.0, 4.0, 5.0, 6.0, 7.0 }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify a stride: + const int strideX = 1; + + // Find the index of the first truthy element: + int idx = stdlib_strided_zindex_of_truthy( N, (const stdlib_complex128_t *)x, strideX ); + + // Print the result: + printf( "index value: %d\n", idx ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/examples/index.js new file mode 100644 index 000000000000..b78478e8caae --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/examples/index.js @@ -0,0 +1,33 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var bernoulli = require( '@stdlib/random/array/bernoulli' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var logEach = require( '@stdlib/console/log-each' ); +var zindexOfTruthy = require( './../lib' ); + +var buf = bernoulli( 10*2, 0.7, { + 'dtype': 'float64' +}); +var x = new Complex128Array( buf.buffer ); +logEach( '%s', x ); + +var idx = zindexOfTruthy( x.length, x, 1 ); +console.log( idx ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + '=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "blas", + "find", + "index", + "search", + "truthy", + "array", + "ndarray", + "strided", + "complex", + "complex128", + "complex128array" + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/src/addon.c new file mode 100644 index 000000000000..daf5152cc213 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/src/addon.c @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zindex_of_truthy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_complex128array.h" +#include "stdlib/napi/create_int32.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 3 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_zindex_of_truthy)( N, (const stdlib_complex128_t *)X, strideX ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 4 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_CREATE_INT32( env, API_SUFFIX(stdlib_strided_zindex_of_truthy_ndarray)( N, (const stdlib_complex128_t *)X, strideX, offsetX ), idx ); // TODO: Need to revisit in order to support int64_t for CBLAS_INT + return idx; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/src/main.c new file mode 100644 index 000000000000..d8ad62e8c9f5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/src/main.c @@ -0,0 +1,70 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zindex_of_truthy.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/complex/float64/real.h" +#include "stdlib/complex/float64/imag.h" +#include "stdlib/math/base/assert/is_nan.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Returns the index of the first truthy element in a double-precision complex floating-point strided array. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_zindex_of_truthy)( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + return API_SUFFIX(stdlib_strided_zindex_of_truthy_ndarray)( N, X, strideX, ox ); +} + +/** +* Returns the index of the first truthy element in a double-precision complex floating-point strided array using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length +* @param offsetX starting index +* @return index +*/ +CBLAS_INT API_SUFFIX(stdlib_strided_zindex_of_truthy_ndarray)( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { + stdlib_complex128_t v; + CBLAS_INT ix; + CBLAS_INT i; + double re; + double im; + + if ( N <= 0 ) { + return -1; + } + ix = offsetX; + for ( i = 0; i < N; i++ ) { + v = X[ ix ]; + re = stdlib_complex128_real( v ); + im = stdlib_complex128_imag( v ); + if ( ( re != 0.0 && !stdlib_base_is_nan( re ) ) || ( im != 0.0 && !stdlib_base_is_nan( im ) ) ) { + return i; + } + ix += strideX; + } + return -1; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.js new file mode 100644 index 000000000000..d36c2610e94d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var zindexOfTruthy = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zindexOfTruthy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof zindexOfTruthy.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var zindexOfTruthy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zindexOfTruthy, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var zindexOfTruthy; + var main; + + main = require( './../lib/zindex_of_truthy.js' ); + + zindexOfTruthy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zindexOfTruthy, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.ndarray.js new file mode 100644 index 000000000000..17ad7be49605 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.ndarray.js @@ -0,0 +1,143 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var zindexOfTruthy = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zindexOfTruthy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the index of the first truthy element', function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, + 1.0, + 0.0, + 0.0, + 2.0, + 2.0, + 3.0, + 3.0, + 0.0, + 0.0 + ]); + + // Nonnegative stride... + actual = zindexOfTruthy( x.length, x, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( x.length-1, x, 1, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = zindexOfTruthy( x.length-2, x, 1, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 1, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + actual = zindexOfTruthy( x.length, x, -1, x.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 3, x, -2, x.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 3, x, -2, x.length-2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function ignores falsy elements (e.g., `0+0i`, `NaN+NaNi`, `NaN+0i`)', function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + NaN, + NaN, + NaN, + 0.0, + 1.0, + 1.0 + ]); + + actual = zindexOfTruthy( x.length, x, 1, 0 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if unable to find a truthy element', function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + actual = zindexOfTruthy( x.length, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 1.0, + 1.0, + 0.0, + 0.0, + 3.0, + 4.0 + ]); + + actual = zindexOfTruthy( 0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = zindexOfTruthy( -1, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.ndarray.native.js new file mode 100644 index 000000000000..a26a2388aa5b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.ndarray.native.js @@ -0,0 +1,152 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var zindexOfTruthy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zindexOfTruthy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zindexOfTruthy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the index of the first truthy element', opts, function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, + 1.0, + 0.0, + 0.0, + 2.0, + 2.0, + 3.0, + 3.0, + 0.0, + 0.0 + ]); + + // Nonnegative stride... + actual = zindexOfTruthy( x.length, x, 1, 0 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( x.length-1, x, 1, 1 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + actual = zindexOfTruthy( x.length-2, x, 1, 2 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 1, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + // Negative stride... + actual = zindexOfTruthy( x.length, x, -1, x.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 3, x, -2, x.length-1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 3, x, -2, x.length-2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function ignores falsy elements (e.g., `0+0i`, `NaN+NaNi`, `NaN+0i`)', opts, function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + NaN, + NaN, + NaN, + 0.0, + 1.0, + 1.0 + ]); + + actual = zindexOfTruthy( x.length, x, 1, 0 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if unable to find a truthy element', opts, function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + actual = zindexOfTruthy( x.length, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', opts, function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 1.0, + 1.0, + 0.0, + 0.0, + 3.0, + 4.0 + ]); + + actual = zindexOfTruthy( 0, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = zindexOfTruthy( -1, x, 1, 0 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.zindex_of_truthy.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.zindex_of_truthy.js new file mode 100644 index 000000000000..96da7d86b6df --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.zindex_of_truthy.js @@ -0,0 +1,134 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var zindexOfTruthy = require( './../lib/zindex_of_truthy.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zindexOfTruthy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the index of the first truthy element', function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, + 1.0, + 0.0, + 0.0, + 2.0, + 2.0, + 3.0, + 3.0, + 0.0, + 0.0 + ]); + + // Nonnegative stride... + actual = zindexOfTruthy( x.length, x, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 3, x, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + actual = zindexOfTruthy( x.length, x, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 3, x, -2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function ignores falsy elements (e.g., `0+0i`, `NaN+NaNi`, `NaN+0i`)', function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + NaN, + NaN, + NaN, + 0.0, + 1.0, + 1.0 + ]); + + actual = zindexOfTruthy( x.length, x, 1 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if unable to find a truthy element', function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + actual = zindexOfTruthy( x.length, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 1.0, + 1.0, + 0.0, + 0.0, + 3.0, + 4.0 + ]); + + actual = zindexOfTruthy( 0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = zindexOfTruthy( -1, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.zindex_of_truthy.native.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.zindex_of_truthy.native.js new file mode 100644 index 000000000000..09acc9f73e11 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of-truthy/test/test.zindex_of_truthy.native.js @@ -0,0 +1,143 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var zindexOfTruthy = tryRequire( resolve( __dirname, './../lib/zindex_of_truthy.native.js' ) ); +var opts = { + 'skip': ( zindexOfTruthy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zindexOfTruthy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function returns the index of the first truthy element', opts, function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, + 1.0, + 0.0, + 0.0, + 2.0, + 2.0, + 3.0, + 3.0, + 0.0, + 0.0 + ]); + + // Nonnegative stride... + actual = zindexOfTruthy( x.length, x, 1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 3, x, 2 ); + t.strictEqual( actual, 2, 'returns expected value' ); + + // Negative stride... + actual = zindexOfTruthy( x.length, x, -1 ); + t.strictEqual( actual, 1, 'returns expected value' ); + + actual = zindexOfTruthy( 3, x, -2 ); + t.strictEqual( actual, 0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function ignores falsy elements (e.g., `0+0i`, `NaN+NaNi`, `NaN+0i`)', opts, function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + NaN, + NaN, + NaN, + 0.0, + 1.0, + 1.0 + ]); + + actual = zindexOfTruthy( x.length, x, 1 ); + t.strictEqual( actual, 3, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if unable to find a truthy element', opts, function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + actual = zindexOfTruthy( x.length, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', opts, function test( t ) { + var actual; + var x; + + x = new Complex128Array([ + 1.0, + 1.0, + 0.0, + 0.0, + 3.0, + 4.0 + ]); + + actual = zindexOfTruthy( 0, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + actual = zindexOfTruthy( -1, x, 1 ); + t.strictEqual( actual, -1, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.ndarray.js index 0eb5b8ff7ae2..b6f279af74fe 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.ndarray.js @@ -82,7 +82,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', function test( t ) { var actual; var x; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.ndarray.native.js index 9e22df7a1785..634a3fb84ff9 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.ndarray.native.js @@ -91,7 +91,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided an `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if provided an `N` parameter which is less than or equal to zero', opts, function test( t ) { var actual; var x; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.zindex_of.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.zindex_of.js index 26c9ba3d1192..fe9c74819ec2 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.zindex_of.js +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.zindex_of.js @@ -82,7 +82,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', function test( t ) { var actual; var x; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.zindex_of.native.js b/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.zindex_of.native.js index b3aaf73c4418..4c63ec4ef34c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.zindex_of.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/zindex-of/test/test.zindex_of.native.js @@ -91,7 +91,7 @@ tape( 'the function returns the first index of an element which equals a provide t.end(); }); -tape( 'the function returns `-1` if provided `N` parameter is less than or equal to zero', opts, function test( t ) { +tape( 'the function returns `-1` if a provided `N` parameter is less than or equal to zero', opts, function test( t ) { var actual; var x; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/README.md b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/README.md new file mode 100644 index 000000000000..85ed30163719 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/README.md @@ -0,0 +1,327 @@ + + +# zreplicate + +> Replicate each element in a double-precision complex floating-point strided array a specified number of times. + +
+ +
+ + + +
+ +## Usage + +```javascript +var zreplicate = require( '@stdlib/blas/ext/base/zreplicate' ); +``` + +#### zreplicate( N, k, x, strideX, out, strideOut ) + +Replicates each element in a double-precision complex floating-point strided array a specified number of times. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var out = new Complex128Array( 4 ); + +zreplicate( x.length, 2, x, 1, out, 1 ); +// out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **k**: number of times to replicate each element. +- **x**: input [`Complex128Array`][@stdlib/array/complex128]. +- **strideX**: stride length for `x`. +- **out**: output [`Complex128Array`][@stdlib/array/complex128]. +- **strideOut**: stride length for `out`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to replicate every other element: + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out = new Complex128Array( 4 ); + +zreplicate( 2, 2, x, 2, out, 1 ); +// out => [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +// Initial arrays... +var x0 = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var out0 = new Complex128Array( 3 ); + +// Create offset views... +var x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var out1 = new Complex128Array( out0.buffer, out0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +zreplicate( 1, 2, x1, 2, out1, 1 ); +// out0 => [ 0.0, 0.0, 3.0, 4.0, 3.0, 4.0 ] +``` + +#### zreplicate.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) + +Replicates each element in a double-precision complex floating-point strided array a specified number of times using alternative indexing semantics. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var out = new Complex128Array( 4 ); + +zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +// out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetOut**: starting index for `out`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, offset parameters support indexing semantics based on starting indices. For example, to replicate every element starting from the second element and to store in the last `N*k` elements of the output array starting from the last element: + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); +var out = new Complex128Array( 2 ); + +zreplicate.ndarray( 1, 2, x, 1, 1, out, 1, 0 ); +// out => [ 3.0, 4.0, 3.0, 4.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0` or `k <= 0`, both functions return `out` unchanged. +- Both functions assume that the output array supports `N*k` indexed elements. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var zreplicate = require( '@stdlib/blas/ext/base/zreplicate' ); + +var xbuf = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +var x = new Complex128Array( xbuf.buffer ); +console.log( x ); + +var out = new Complex128Array( x.length * 5 ); +console.log( out ); + +zreplicate( x.length, 5, x, 1, out, 1 ); +console.log( out ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/zreplicate.h" +``` + +#### stdlib_strided_zreplicate( N, k, \*X, strideX, \*Out, strideOut ) + +Replicates each element in a double-precision complex floating-point strided array a specified number of times. + +```c +#include "stdlib/complex/float64/ctor.h" + +const double x[] = { 1.0, 2.0, 3.0, 4.0 }; +double out[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + +stdlib_strided_zreplicate( 2, 2, (stdlib_complex128_t *)x, 1, (stdlib_complex128_t *)out, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **k**: `[in] CBLAS_INT` number of times to replicate each element. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Out**: `[out] stdlib_complex128_t*` output array. +- **strideOut**: `[in] CBLAS_INT` stride length for `Out`. + +```c +void stdlib_strided_zreplicate( const CBLAS_INT N, const CBLAS_INT k, const stdlib_complex128_t *X, const CBLAS_INT strideX, stdlib_complex128_t *Out, const CBLAS_INT strideOut ); +``` + + + +#### stdlib_strided_zreplicate_ndarray( N, k, \*X, strideX, offsetX, \*Out, strideOut, offsetOut ) + + + +Replicates each element in a double-precision complex floating-point strided array a specified number of times using alternative indexing semantics. + +```c +const double x[] = { 1.0, 2.0, 3.0, 4.0 }; +double out[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + +stdlib_strided_zreplicate_ndarray( 2, 2, (stdlib_complex128_t *)x, 1, 0, (stdlib_complex128_t *)out, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **k**: `[in] CBLAS_INT` number of times to replicate each element. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Out**: `[out] stdlib_complex128_t*` output array. +- **strideOut**: `[in] CBLAS_INT` stride length for `Out`. +- **offsetOut**: `[in] CBLAS_INT` starting index for `Out`. + +```c +void stdlib_strided_zreplicate_ndarray( const CBLAS_INT N, const CBLAS_INT k, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex128_t *Out, const CBLAS_INT strideOut, const CBLAS_INT offsetOut ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/zreplicate.h" +#include "stdlib/complex/float64/ctor.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, 2.0, 3.0, 4.0 }; + double out[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 2; + + // Specify the number of times to replicate each element: + const int k = 2; + + // Specify strides: + const int strideX = 1; + const int strideOut = 1; + + // Replicate each element: + stdlib_strided_zreplicate( N, k, (stdlib_complex128_t *)x, strideX, (stdlib_complex128_t *)out, strideOut ); + + // Print the results: + for ( int i = 0; i < 8; i++ ) { + printf( "out[ %i ] = %lf\n", i, out[ i ] ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.js new file mode 100644 index 000000000000..e78f5e4dbef0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float64Array = require( '@stdlib/array/float64' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zreplicate = require( './../lib/zreplicate.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var obuf; + var xbuf; + var out; + var x; + + xbuf = uniform( len * 2, -100.0, 100.0, options ); + obuf = new Float64Array( len * 4 ); + x = new Complex128Array( xbuf.buffer ); + out = new Complex128Array( obuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + xbuf[ 0 ] += 1.0; + zreplicate( x.length, 2, x, 1, out, 1 ); + if ( isnan( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.native.js new file mode 100644 index 000000000000..e516e3bb4729 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.native.js @@ -0,0 +1,119 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Float64Array = require( '@stdlib/array/float64' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zreplicate = tryRequire( resolve( __dirname, './../lib/zreplicate.native.js' ) ); +var opts = { + 'skip': ( zreplicate instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var obuf; + var xbuf; + var out; + var x; + + xbuf = uniform( len * 2, -100.0, 100.0, options ); + obuf = new Float64Array( len * 4 ); + x = new Complex128Array( xbuf.buffer ); + out = new Complex128Array( obuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + xbuf[ 0 ] += 1.0; + zreplicate( x.length, 2, x, 1, out, 1 ); + if ( isnan( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..d900c4badf48 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.ndarray.js @@ -0,0 +1,114 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Float64Array = require( '@stdlib/array/float64' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zreplicate = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var obuf; + var xbuf; + var out; + var x; + + xbuf = uniform( len * 2, -100.0, 100.0, options ); + obuf = new Float64Array( len * 4 ); + x = new Complex128Array( xbuf.buffer ); + out = new Complex128Array( obuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + xbuf[ 0 ] += 1.0; + zreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + if ( isnan( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..410076abcfd3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,119 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Float64Array = require( '@stdlib/array/float64' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zreplicate = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zreplicate instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var obuf; + var xbuf; + var out; + var x; + + xbuf = uniform( len * 2, -100.0, 100.0, options ); + obuf = new Float64Array( len * 4 ); + x = new Complex128Array( xbuf.buffer ); + out = new Complex128Array( obuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + xbuf[ 0 ] += 1.0; + zreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + if ( isnan( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( obuf[ i % ( len * 4 ) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/zreplicate/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..bffeba2e1dad --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/benchmark/c/benchmark.length.c @@ -0,0 +1,206 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zreplicate.h" +#include "stdlib/complex/float64/ctor.h" +#include +#include +#include +#include +#include + +#define NAME "zreplicate" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, double elapsed ) { + double rate = (double)iterations / elapsed; + printf( " ---\n" ); + printf( " iterations: %d\n", iterations ); + printf( " elapsed: %0.9f\n", elapsed ); + printf( " rate: %0.9f\n", rate ); + printf( " ...\n" ); +} + +/** +* Returns a clock time. +* +* @return clock time +*/ +static double tic( void ) { + struct timeval now; + gettimeofday( &now, NULL ); + return (double)now.tv_sec + (double)now.tv_usec/1.0e6; +} + +/** +* Generates a random number on the interval [0,1). +* +* @return random number +*/ +static double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length (number of complex elements) +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *out; + double *x; + double t; + int i; + + x = (double *) malloc( len * 2 * sizeof( double ) ); + out = (double *) malloc( len * 4 * sizeof( double ) ); + for ( i = 0; i < len * 2; i++ ) { + x[ i ] = ( rand_double()*99.0 ) + 1.0; + } + for ( i = 0; i < len * 4; i++ ) { + out[ i ] = 0.0; + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ 0 ] += 1.0; + stdlib_strided_zreplicate( len, 2, (stdlib_complex128_t *)x, 1, (stdlib_complex128_t *)out, 1 ); + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + } + free( x ); + free( out ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length (number of complex elements) +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *out; + double *x; + double t; + int i; + + x = (double *) malloc( len * 2 * sizeof( double ) ); + out = (double *) malloc( len * 4 * sizeof( double ) ); + for ( i = 0; i < len * 2; i++ ) { + x[ i ] = ( rand_double()*99.0 ) + 1.0; + } + for ( i = 0; i < len * 4; i++ ) { + out[ i ] = 0.0; + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + x[ 0 ] += 1.0; + stdlib_strided_zreplicate_ndarray( len, 2, (stdlib_complex128_t *)x, 1, 0, (stdlib_complex128_t *)out, 1, 0 ); + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + break; + } + } + elapsed = tic() - t; + if ( out[ 0 ] != x[ 0 ] ) { + printf( "unexpected result\n" ); + } + free( x ); + free( out ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/binding.gyp new file mode 100644 index 000000000000..0d6508a12e99 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/binding.gyp @@ -0,0 +1,170 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Set variables based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + { + # Define the object file suffix: + 'obj': 'obj', + }, + { + # Define the object file suffix: + 'obj': 'o', + } + ], # end condition (OS=="win") + ], # end conditions + }, # end variables + + # Define compile targets: + 'targets': [ + + # Target to generate an add-on: + { + # The target name should match the add-on export name: + 'target_name': '<(addon_target_name)', + + # Define dependencies: + 'dependencies': [], + + # Define directories which contain relevant include headers: + 'include_dirs': [ + # Local include directory: + '<@(include_dirs)', + ], + + # List of source files: + 'sources': [ + '<@(src_files)', + ], + + # Settings which should be applied when a target's object files are used as linker input: + 'link_settings': { + # Define libraries: + 'libraries': [ + '<@(libraries)', + ], + + # Define library directories: + 'library_dirs': [ + '<@(library_dirs)', + ], + }, + + # C/C++ compiler flags: + 'cflags': [ + # Enable commonly used warning options: + '-Wall', + + # Aggressive optimization: + '-O3', + ], + + # C specific compiler flags: + 'cflags_c': [ + # Specify the C standard to which a program is expected to conform: + '-std=c99', + ], + + # C++ specific compiler flags: + 'cflags_cpp': [ + # Specify the C++ standard to which a program is expected to conform: + '-std=c++11', + ], + + # Linker flags: + 'ldflags': [], + + # Apply conditions based on the host OS: + 'conditions': [ + [ + 'OS=="mac"', + { + # Linker flags: + 'ldflags': [ + '-undefined dynamic_lookup', + '-Wl,-no-pie', + '-Wl,-search_paths_first', + ], + }, + ], # end condition (OS=="mac") + [ + 'OS!="win"', + { + # C/C++ flags: + 'cflags': [ + # Generate platform-independent code: + '-fPIC', + ], + }, + ], # end condition (OS!="win") + ], # end conditions + }, # end target <(addon_target_name) + + # Target to copy a generated add-on to a standard location: + { + 'target_name': 'copy_addon', + + # Declare that the output of this target is not linked: + 'type': 'none', + + # Define dependencies: + 'dependencies': [ + # Require that the add-on be generated before building this target: + '<(addon_target_name)', + ], + + # Define a list of actions: + 'actions': [ + { + 'action_name': 'copy_addon', + 'message': 'Copying addon...', + + # Explicitly list the inputs in the command-line invocation below: + 'inputs': [], + + # Declare the expected outputs: + 'outputs': [ + '<(addon_output_dir)/<(addon_target_name).node', + ], + + # Define the command-line invocation: + 'action': [ + 'cp', + '<(PRODUCT_DIR)/<(addon_target_name).node', + '<(addon_output_dir)/<(addon_target_name).node', + ], + }, + ], # end actions + }, # end target copy_addon + ], # end targets +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/docs/repl.txt new file mode 100644 index 000000000000..612f871351b5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/docs/repl.txt @@ -0,0 +1,118 @@ + +{{alias}}( N, k, x, strideX, out, strideOut ) + Replicates each element in a double-precision complex floating-point strided + array a specified number of times. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use a typed + array view. + + If `N <= 0` or `k <= 0`, the function returns `out` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + k: integer + Number of times to replicate each element. + + x: Complex128Array + Input array. + + strideX: integer + Stride length for `x`. + + out: Complex128Array + Output array. + + strideOut: integer + Stride length for `out`. + + Returns + ------- + out: Complex128Array + Output array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/complex128}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var out = new {{alias:@stdlib/array/complex128}}( 4 ); + > {{alias}}( x.length, 2, x, 1, out, 1 ) + [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0 ] + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/complex128}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > out = new {{alias:@stdlib/array/complex128}}( 4 ); + > {{alias}}( 2, 2, x, 2, out, 1 ) + [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0 ] + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/complex128}}( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + > var out0 = new {{alias:@stdlib/array/complex128}}( 3 ); + > var x1 = new {{alias:@stdlib/array/complex128}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > var out1 = new {{alias:@stdlib/array/complex128}}( out0.buffer, out0.BYTES_PER_ELEMENT*1 ); + > {{alias}}( 1, 2, x1, 2, out1, 1 ) + [ 3.0, 4.0, 3.0, 4.0 ] + > out0 + [ 0.0, 0.0, 3.0, 4.0, 3.0, 4.0 ] + + +{{alias}}.ndarray( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) + Replicates each element in a double-precision complex floating-point strided + array a specified number of times using alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + k: integer + Number of times to replicate each element. + + x: Complex128Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + out: Complex128Array + Output array. + + strideOut: integer + Stride length for `out`. + + offsetOut: integer + Starting index for `out`. + + Returns + ------- + out: Complex128Array + Output array. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/complex128}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > var out = new {{alias:@stdlib/array/complex128}}( 4 ); + > {{alias}}.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ) + [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0 ] + + // Advanced indexing: + > x = new {{alias:@stdlib/array/complex128}}( [ 1.0, 2.0, 3.0, 4.0 ] ); + > out = new {{alias:@stdlib/array/complex128}}( 2 ); + > {{alias}}.ndarray( 1, 2, x, 1, 1, out, 1, 0 ) + [ 3.0, 4.0, 3.0, 4.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/docs/types/index.d.ts new file mode 100644 index 000000000000..8f1f80a2fa4c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/docs/types/index.d.ts @@ -0,0 +1,110 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/// + +// TypeScript Version: 4.1 + +import { Complex128Array } from '@stdlib/types/array'; + +/** +* Interface describing `zreplicate`. +*/ +interface Routine { + /** + * Replicates each element in a double-precision complex floating-point strided array a specified number of times. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @returns output array + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var out = new Complex128Array( 6 ); + * + * zreplicate( x.length, 2, x, 1, out, 1 ); + * // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] + */ + ( N: number, k: number, x: Complex128Array, strideX: number, out: Complex128Array, strideOut: number ): Complex128Array; + + /** + * Replicates each element in a double-precision complex floating-point strided array a specified number of times using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param k - number of times to replicate each element + * @param x - input array + * @param strideX - stride length for `x` + * @param offsetX - starting index for `x` + * @param out - output array + * @param strideOut - stride length for `out` + * @param offsetOut - starting index for `out` + * @returns output array + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var out = new Complex128Array( 6 ); + * + * zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); + * // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] + */ + ndarray( N: number, k: number, x: Complex128Array, strideX: number, offsetX: number, out: Complex128Array, strideOut: number, offsetOut: number ): Complex128Array; +} + +/** +* Replicates each element in a double-precision complex floating-point strided array a specified number of times. +* +* @param N - number of indexed elements +* @param k - number of times to replicate each element +* @param x - input array +* @param strideX - stride length for `x` +* @param out - output array +* @param strideOut - stride length for `out` +* @returns output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex128Array( 6 ); +* +* zreplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex128Array( 6 ); +* +* zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +declare var zreplicate: Routine; + + +// EXPORTS // + +export = zreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/docs/types/test.ts new file mode 100644 index 000000000000..0e59f79ba91d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/docs/types/test.ts @@ -0,0 +1,281 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import Complex128Array = require( '@stdlib/array/complex128' ); +import zreplicate = require( './index' ); + + +// TESTS // + +// The function returns a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate( x.length, 2, x, 1, out, 1 ); // $ExpectType Complex128Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate( '10', 2, x, 1, out, 1 ); // $ExpectError + zreplicate( true, 2, x, 1, out, 1 ); // $ExpectError + zreplicate( false, 2, x, 1, out, 1 ); // $ExpectError + zreplicate( null, 2, x, 1, out, 1 ); // $ExpectError + zreplicate( undefined, 2, x, 1, out, 1 ); // $ExpectError + zreplicate( [], 2, x, 1, out, 1 ); // $ExpectError + zreplicate( {}, 2, x, 1, out, 1 ); // $ExpectError + zreplicate( ( x: number ): number => x, 2, x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate( x.length, '10', x, 1, out, 1 ); // $ExpectError + zreplicate( x.length, true, x, 1, out, 1 ); // $ExpectError + zreplicate( x.length, false, x, 1, out, 1 ); // $ExpectError + zreplicate( x.length, null, x, 1, out, 1 ); // $ExpectError + zreplicate( x.length, undefined, x, 1, out, 1 ); // $ExpectError + zreplicate( x.length, [], x, 1, out, 1 ); // $ExpectError + zreplicate( x.length, {}, x, 1, out, 1 ); // $ExpectError + zreplicate( x.length, ( x: number ): number => x, x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate( x.length, 2, 10, 1, out, 1 ); // $ExpectError + zreplicate( x.length, 2, '10', 1, out, 1 ); // $ExpectError + zreplicate( x.length, 2, true, 1, out, 1 ); // $ExpectError + zreplicate( x.length, 2, false, 1, out, 1 ); // $ExpectError + zreplicate( x.length, 2, null, 1, out, 1 ); // $ExpectError + zreplicate( x.length, 2, undefined, 1, out, 1 ); // $ExpectError + zreplicate( x.length, 2, [ '1' ], 1, out, 1 ); // $ExpectError + zreplicate( x.length, 2, {}, 1, out, 1 ); // $ExpectError + zreplicate( x.length, 2, ( x: number ): number => x, 1, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate( x.length, 2, x, '10', out, 1 ); // $ExpectError + zreplicate( x.length, 2, x, true, out, 1 ); // $ExpectError + zreplicate( x.length, 2, x, false, out, 1 ); // $ExpectError + zreplicate( x.length, 2, x, null, out, 1 ); // $ExpectError + zreplicate( x.length, 2, x, undefined, out, 1 ); // $ExpectError + zreplicate( x.length, 2, x, [], out, 1 ); // $ExpectError + zreplicate( x.length, 2, x, {}, out, 1 ); // $ExpectError + zreplicate( x.length, 2, x, ( x: number ): number => x, out, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + + zreplicate( x.length, 2, x, 1, 10, 1 ); // $ExpectError + zreplicate( x.length, 2, x, 1, '10', 1 ); // $ExpectError + zreplicate( x.length, 2, x, 1, true, 1 ); // $ExpectError + zreplicate( x.length, 2, x, 1, false, 1 ); // $ExpectError + zreplicate( x.length, 2, x, 1, null, 1 ); // $ExpectError + zreplicate( x.length, 2, x, 1, undefined, 1 ); // $ExpectError + zreplicate( x.length, 2, x, 1, [ '1' ], 1 ); // $ExpectError + zreplicate( x.length, 2, x, 1, {}, 1 ); // $ExpectError + zreplicate( x.length, 2, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate( x.length, 2, x, 1, out, '10' ); // $ExpectError + zreplicate( x.length, 2, x, 1, out, true ); // $ExpectError + zreplicate( x.length, 2, x, 1, out, false ); // $ExpectError + zreplicate( x.length, 2, x, 1, out, null ); // $ExpectError + zreplicate( x.length, 2, x, 1, out, undefined ); // $ExpectError + zreplicate( x.length, 2, x, 1, out, [] ); // $ExpectError + zreplicate( x.length, 2, x, 1, out, {} ); // $ExpectError + zreplicate( x.length, 2, x, 1, out, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate(); // $ExpectError + zreplicate( x.length ); // $ExpectError + zreplicate( x.length, 2 ); // $ExpectError + zreplicate( x.length, 2, x ); // $ExpectError + zreplicate( x.length, 2, x, 1 ); // $ExpectError + zreplicate( x.length, 2, x, 1, out ); // $ExpectError + zreplicate( x.length, 2, x, 1, out, 1, {} ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); // $ExpectType Complex128Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate.ndarray( '10', 2, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( true, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( false, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( null, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( undefined, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( [], 2, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( {}, 2, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( ( x: number ): number => x, 2, x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate.ndarray( x.length, '10', x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, true, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, false, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, null, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, undefined, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, [], x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, {}, x, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, ( x: number ): number => x, x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate.ndarray( x.length, 2, 10, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, '10', 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, true, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, false, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, null, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, undefined, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, [ '1' ], 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, {}, 1, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, ( x: number ): number => x, 1, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate.ndarray( x.length, 2, x, '10', 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, true, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, false, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, null, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, undefined, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, [], 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, {}, 0, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, ( x: number ): number => x, 0, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate.ndarray( x.length, 2, x, 1, '10', out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, true, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, false, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, null, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, undefined, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, [], out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, {}, out, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, ( x: number ): number => x, out, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + + zreplicate.ndarray( x.length, 2, x, 1, 0, 10, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, '10', 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, true, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, false, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, null, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, undefined, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, {}, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate.ndarray( x.length, 2, x, 1, 0, out, '10', 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, true, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, false, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, null, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, undefined, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, [], 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, {}, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, '10' ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, true ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, false ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, null ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, undefined ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, [] ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, {} ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Complex128Array( 10 ); + const out = new Complex128Array( 20 ); + + zreplicate.ndarray(); // $ExpectError + zreplicate.ndarray( x.length ); // $ExpectError + zreplicate.ndarray( x.length, 2 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1 ); // $ExpectError + zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/examples/c/example.c new file mode 100644 index 000000000000..201a96e25852 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/examples/c/example.c @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zreplicate.h" +#include "stdlib/complex/float64/ctor.h" +#include + +int main( void ) { + // Create strided arrays: + const double x[] = { 1.0, 2.0, 3.0, 4.0 }; + double out[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + + // Specify the number of indexed elements: + const int N = 2; + + // Specify the number of times to replicate each element: + const int k = 2; + + // Specify strides: + const int strideX = 1; + const int strideOut = 1; + + // Replicate each element: + stdlib_strided_zreplicate( N, k, (stdlib_complex128_t *)x, strideX, (stdlib_complex128_t *)out, strideOut ); + + // Print the results: + for ( int i = 0; i < 8; i++ ) { + printf( "out[ %i ] = %lf\n", i, out[ i ] ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/examples/index.js new file mode 100644 index 000000000000..54202dd0234c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/examples/index.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var zreplicate = require( './../lib' ); + +var xbuf = discreteUniform( 10, -100, 100, { + 'dtype': 'float64' +}); +var x = new Complex128Array( xbuf.buffer ); +console.log( x ); + +var out = new Complex128Array( x.length * 5 ); +console.log( out ); + +zreplicate( x.length, 5, x, 1, out, 1 ); +console.log( out ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var zreplicate = require( '@stdlib/blas/ext/base/zreplicate' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex128Array( 6 ); +* +* zreplicate.ndarray( x.length, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var zreplicate; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + zreplicate = main; +} else { + zreplicate = tmp; +} + + +// EXPORTS // + +module.exports = zreplicate; + +// exports: { "ndarray": "zreplicate.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/main.js new file mode 100644 index 000000000000..72ca8ad67d6a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var zreplicate = require( './zreplicate.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( zreplicate, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = zreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/native.js new file mode 100644 index 000000000000..fd6b6d6dfa38 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var zreplicate = require( './zreplicate.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( zreplicate, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = zreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/ndarray.js new file mode 100644 index 000000000000..681eed3bacfc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/ndarray.js @@ -0,0 +1,85 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); + + +// MAIN // + +/** +* Replicates each element in a double-precision complex floating-point strided array a specified number of times using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Complex128Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Complex128Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @param {NonNegativeInteger} offsetOut - starting index for `out` +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex128Array( 6 ); +* +* zreplicate( 3, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +function zreplicate( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) { + var viewX; + var viewO; + var re; + var im; + var ix; + var io; + var i; + var j; + + if ( N <= 0 || k <= 0 ) { + return out; + } + viewX = reinterpret( x, 0 ); + viewO = reinterpret( out, 0 ); + ix = offsetX * 2; + io = offsetOut * 2; + strideX *= 2; + strideOut *= 2; + for ( i = 0; i < N; i++ ) { + re = viewX[ ix ]; + im = viewX[ ix+1 ]; + for ( j = 0; j < k; j++ ) { + viewO[ io ] = re; + viewO[ io+1 ] = im; + io += strideOut; + } + ix += strideX; + } + return out; +} + + +// EXPORTS // + +module.exports = zreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/ndarray.native.js new file mode 100644 index 000000000000..09aaa5423b33 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/ndarray.native.js @@ -0,0 +1,64 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replicates each element in a double-precision complex floating-point strided array a specified number of times using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Complex128Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @param {Complex128Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @param {NonNegativeInteger} offsetOut - starting index for `out` +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex128Array( 6 ); +* +* zreplicate( 3, 2, x, 1, 0, out, 1, 0 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +function zreplicate( N, k, x, strideX, offsetX, out, strideOut, offsetOut ) { + var viewOut; + var viewX; + + viewX = reinterpret( x, 0 ); + viewOut = reinterpret( out, 0 ); + addon.ndarray( N, k, viewX, strideX, offsetX, viewOut, strideOut, offsetOut ); + return out; +} + + +// EXPORTS // + +module.exports = zreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/zreplicate.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/zreplicate.js new file mode 100644 index 000000000000..dc7eb79db2f0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/zreplicate.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Replicates each element in a double-precision complex floating-point strided array a specified number of times. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Complex128Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {Complex128Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex128Array( 6 ); +* +* zreplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +function zreplicate( N, k, x, strideX, out, strideOut ) { + var ox = stride2offset( N, strideX ); + var oo = stride2offset( N * k, strideOut ); + return ndarray( N, k, x, strideX, ox, out, strideOut, oo ); +} + + +// EXPORTS // + +module.exports = zreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/zreplicate.native.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/zreplicate.native.js new file mode 100644 index 000000000000..36439a0f3db4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/lib/zreplicate.native.js @@ -0,0 +1,62 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Replicates each element in a double-precision complex floating-point strided array a specified number of times. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {PositiveInteger} k - number of times to replicate each element +* @param {Complex128Array} x - input array +* @param {integer} strideX - stride length for `x` +* @param {Complex128Array} out - output array +* @param {integer} strideOut - stride length for `out` +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var out = new Complex128Array( 6 ); +* +* zreplicate( x.length, 2, x, 1, out, 1 ); +* // out => [ 1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 3.0, 4.0, 5.0, 6.0, 5.0, 6.0 ] +*/ +function zreplicate( N, k, x, strideX, out, strideOut ) { + var viewOut; + var viewX; + + viewX = reinterpret( x, 0 ); + viewOut = reinterpret( out, 0 ); + addon( N, k, viewX, strideX, viewOut, strideOut ); + return out; +} + + +// EXPORTS // + +module.exports = zreplicate; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/manifest.json new file mode 100644 index 000000000000..9a85237683e2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/manifest.json @@ -0,0 +1,81 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-complex128array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/package.json b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/package.json new file mode 100644 index 000000000000..90038b41e072 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/package.json @@ -0,0 +1,77 @@ +{ + "name": "@stdlib/blas/ext/base/zreplicate", + "version": "0.0.0", + "description": "Replicate each element in a double-precision complex floating-point strided array a specified number of times.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "replicate", + "repeat", + "copy", + "strided", + "array", + "ndarray", + "complex", + "complex128", + "complex128array", + "double-precision", + "zreplicate" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/src/addon.c new file mode 100644 index 000000000000..3e69470a517a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/src/addon.c @@ -0,0 +1,68 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zreplicate.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_complex128array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, k, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideOut, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, Out, N * k, strideOut, argv, 4 ); + API_SUFFIX(stdlib_strided_zreplicate)( N, k, (stdlib_complex128_t *)X, strideX, (stdlib_complex128_t *)Out, strideOut ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 8 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, k, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, strideOut, argv, 6 ); + STDLIB_NAPI_ARGV_INT64( env, offsetOut, argv, 7 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, Out, N * k, strideOut, argv, 5 ); + API_SUFFIX(stdlib_strided_zreplicate_ndarray)( N, k, (stdlib_complex128_t *)X, strideX, offsetX, (stdlib_complex128_t *)Out, strideOut, offsetOut ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/src/main.c new file mode 100644 index 000000000000..08c2d23da97a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/src/main.c @@ -0,0 +1,73 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zreplicate.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/strided/base/stride2offset.h" +#include "stdlib/blas/base/shared.h" + +/** +* Replicates each element in a double-precision complex floating-point strided array a specified number of times. +* +* @param N number of indexed elements +* @param k number of times to replicate each element +* @param X input array +* @param strideX stride length for X +* @param Out output array +* @param strideOut stride length for Out +*/ +void API_SUFFIX(stdlib_strided_zreplicate)( const CBLAS_INT N, const CBLAS_INT k, const stdlib_complex128_t *X, const CBLAS_INT strideX, stdlib_complex128_t *Out, const CBLAS_INT strideOut ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oo = stdlib_strided_stride2offset( N * k, strideOut ); + API_SUFFIX(stdlib_strided_zreplicate_ndarray)( N, k, X, strideX, ox, Out, strideOut, oo ); +} + +/** +* Replicates each element in a double-precision complex floating-point strided array a specified number of times using alternative indexing semantics. +* +* @param N number of indexed elements +* @param k number of times to replicate each element +* @param X input array +* @param strideX stride length for X +* @param offsetX starting index for X +* @param Out output array +* @param strideOut stride length for Out +* @param offsetOut starting index for Out +*/ +void API_SUFFIX(stdlib_strided_zreplicate_ndarray)( const CBLAS_INT N, const CBLAS_INT k, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex128_t *Out, const CBLAS_INT strideOut, const CBLAS_INT offsetOut ) { + stdlib_complex128_t v; + CBLAS_INT ix; + CBLAS_INT io; + CBLAS_INT i; + CBLAS_INT j; + + if ( N <= 0 || k <= 0 ) { + return; + } + ix = offsetX; + io = offsetOut; + for ( i = 0; i < N; i++ ) { + v = X[ ix ]; + for ( j = 0; j < k; j++ ) { + Out[ io ] = v; + io += strideOut; + } + ix += strideX; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.js new file mode 100644 index 000000000000..9d12db205cf3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var zreplicate = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof zreplicate.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var zreplicate = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zreplicate, mock, 'returns expected value' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var zreplicate; + var main; + + main = require( './../lib/zreplicate.js' ); + + zreplicate = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zreplicate, main, 'returns expected value' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.ndarray.js new file mode 100644 index 000000000000..c2d0ca59b432 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.ndarray.js @@ -0,0 +1,538 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var zreplicate = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', function test( t ) { + t.strictEqual( zreplicate.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array( 6 ); + + zreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( x.length, 3, x, 1, 0, out, 1, 0 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 3 ); + + zreplicate( x.length, 1, x, 1, 0, out, 1, 0 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 5.0, 6.0 ] ); + out = new Complex128Array( 3 ); + + zreplicate( 1, 3, x, 1, 0, out, 1, 0 ); + expected = new Complex128Array([ + 5.0, + 6.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var v; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array( 6 ); + + v = zreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + zreplicate( -1, 2, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + zreplicate( 0, 2, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + zreplicate( x.length, -1, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + zreplicate( x.length, 0, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, 2, 0, out, 1, 0 ); + + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 5.0, + 6.0, + 5.0, + 6.0, + 9.0, + 10.0, + 9.0, + 10.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 12 ); + + zreplicate( 3, 2, x, 1, 0, out, 2, 0 ); + + expected = new Complex128Array([ + 1.0, + 2.0, + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, -2, 4, out, 1, 0 ); + + expected = new Complex128Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 7.0, + 8.0 + ]); + out = new Complex128Array( 8 ); + + zreplicate( 4, 2, x, 2, 1, out, 1, 0 ); + + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 8.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output offset', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, 1, 0, out, 1, 2 ); + + expected = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a zero `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, 0, 1, out, 1, 0 ); + + expected = new Complex128Array([ + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, 2, 0, out, -1, 5 ); + + expected = new Complex128Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.ndarray.native.js new file mode 100644 index 000000000000..126239aa0fee --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.ndarray.native.js @@ -0,0 +1,547 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); + + +// VARIABLES // + +var zreplicate = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zreplicate instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', opts, function test( t ) { + t.strictEqual( zreplicate.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array( 6 ); + + zreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( x.length, 3, x, 1, 0, out, 1, 0 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 3 ); + + zreplicate( x.length, 1, x, 1, 0, out, 1, 0 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 5.0, 6.0 ] ); + out = new Complex128Array( 3 ); + + zreplicate( 1, 3, x, 1, 0, out, 1, 0 ); + expected = new Complex128Array([ + 5.0, + 6.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var v; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array( 6 ); + + v = zreplicate( x.length, 2, x, 1, 0, out, 1, 0 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + zreplicate( -1, 2, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + zreplicate( 0, 2, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + zreplicate( x.length, -1, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + zreplicate( x.length, 0, x, 1, 0, out, 1, 0 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, 2, 0, out, 1, 0 ); + + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 5.0, + 6.0, + 5.0, + 6.0, + 9.0, + 10.0, + 9.0, + 10.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 12 ); + + zreplicate( 3, 2, x, 1, 0, out, 2, 0 ); + + expected = new Complex128Array([ + 1.0, + 2.0, + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, -2, 4, out, 1, 0 ); + + expected = new Complex128Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 7.0, + 8.0 + ]); + out = new Complex128Array( 8 ); + + zreplicate( 4, 2, x, 2, 1, out, 1, 0 ); + + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0, + 7.0, + 8.0, + 7.0, + 8.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output offset', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, 1, 0, out, 1, 2 ); + + expected = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a zero `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, 0, 1, out, 1, 0 ); + + expected = new Complex128Array([ + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( 3, 2, x, 2, 0, out, -1, 5 ); + + expected = new Complex128Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.zreplicate.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.zreplicate.js new file mode 100644 index 000000000000..3eb76229fa8e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.zreplicate.js @@ -0,0 +1,501 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var zreplicate = require( './../lib/zreplicate.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( zreplicate.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array( 6 ); + + zreplicate( x.length, 2, x, 1, out, 1 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( x.length, 3, x, 1, out, 1 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 3 ); + + zreplicate( x.length, 1, x, 1, out, 1 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 5.0, 6.0 ] ); + out = new Complex128Array( 3 ); + + zreplicate( 1, 3, x, 1, out, 1 ); + expected = new Complex128Array( [ 5.0, 6.0, 5.0, 6.0, 5.0, 6.0 ] ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var v; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array( 6 ); + + v = zreplicate( x.length, 2, x, 1, out, 1 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + zreplicate( -1, 2, x, 1, out, 1 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + zreplicate( 0, 2, x, 1, out, 1 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + zreplicate( x.length, -1, x, 1, out, 1 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + zreplicate( x.length, 0, x, 1, out, 1 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + zreplicate( 3, 2, x, 2, out, 1 ); + + expected = new Complex128Array( [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0, 9.0, 10.0, 9.0, 10.0 ] ); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + zreplicate( 3, 2, x, 1, out, 2 ); + + expected = new Complex128Array([ + 1.0, + 2.0, + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + zreplicate( 3, 2, x, -2, out, -1 ); + + expected = new Complex128Array( [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0, 9.0, 10.0, 9.0, 10.0 ] ); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + zreplicate( 3, 2, x, 2, out, -1 ); + + expected = new Complex128Array([ + 9.0, + 10.0, + 9.0, + 10.0, + 5.0, + 6.0, + 5.0, + 6.0, + 1.0, + 2.0, + 1.0, + 2.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var out0; + var out1; + var x0; + var x1; + + // Initial arrays... + x0 = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0 + ]); + out0 = new Complex128Array( 9 ); + + // Create offset views... + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + out1 = new Complex128Array( out0.buffer, out0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + zreplicate( 3, 2, x1, 2, out1, 1 ); + expected = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 3.0, + 4.0, + 3.0, + 4.0, + 7.0, + 8.0, + 7.0, + 8.0, + 11.0, + 12.0, + 11.0, + 12.0 + ]); + + t.strictEqual( isSameComplex128Array( out0, expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.zreplicate.native.js b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.zreplicate.native.js new file mode 100644 index 000000000000..2eaaa6121fcb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zreplicate/test/test.zreplicate.native.js @@ -0,0 +1,497 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); + + +// VARIABLES // + +var zreplicate = tryRequire( resolve( __dirname, './../lib/zreplicate.native.js' ) ); +var opts = { + 'skip': ( zreplicate instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zreplicate, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( zreplicate.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function replicates each strided array element', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array( 6 ); + + zreplicate( x.length, 2, x, 1, out, 1 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 5.0, + 6.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0 + ]); + out = new Complex128Array( 6 ); + + zreplicate( x.length, 3, x, 1, out, 1 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 1.0, + 2.0, + 1.0, + 2.0, + 3.0, + 4.0, + 3.0, + 4.0, + 3.0, + 4.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (k=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array( 3 ); + + zreplicate( x.length, 1, x, 1, out, 1 ); + expected = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function replicates each strided array element (N=1)', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 5.0, 6.0 ] ); + out = new Complex128Array( 3 ); + + zreplicate( 1, 3, x, 1, out, 1 ); + expected = new Complex128Array( [ 5.0, 6.0, 5.0, 6.0, 5.0, 6.0 ] ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var v; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array( 6 ); + + v = zreplicate( x.length, 2, x, 1, out, 1 ); + + t.strictEqual( v, out, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + zreplicate( -1, 2, x, 1, out, 1 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + zreplicate( 0, 2, x, 1, out, 1 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if provided a `k` parameter less than or equal to `0`, the function returns the output array unchanged', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + out = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + expected = new Complex128Array([ + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0, + 13.0, + 14.0, + 15.0, + 16.0, + 17.0 + ]); + + zreplicate( x.length, -1, x, 1, out, 1 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + zreplicate( x.length, 0, x, 1, out, 1 ); + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + zreplicate( 3, 2, x, 2, out, 1 ); + + expected = new Complex128Array( [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0, 9.0, 10.0, 9.0, 10.0 ] ); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an output stride', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + out = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + zreplicate( 3, 2, x, 1, out, 2 ); + + expected = new Complex128Array([ + 1.0, + 2.0, + 0.0, + 0.0, + 1.0, + 2.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 3.0, + 4.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0, + 5.0, + 6.0, + 0.0, + 0.0 + ]); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + zreplicate( 3, 2, x, -2, out, -1 ); + + expected = new Complex128Array( [ 1.0, 2.0, 1.0, 2.0, 5.0, 6.0, 5.0, 6.0, 9.0, 10.0, 9.0, 10.0 ] ); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var out; + var x; + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0 + ]); + out = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + zreplicate( 3, 2, x, 2, out, -1 ); + + expected = new Complex128Array( [ 9.0, 10.0, 9.0, 10.0, 5.0, 6.0, 5.0, 6.0, 1.0, 2.0, 1.0, 2.0 ] ); + + t.strictEqual( isSameComplex128Array( out, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var out0; + var out1; + var x0; + var x1; + + // Initial arrays... + x0 = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0, + 7.0, + 8.0, + 9.0, + 10.0, + 11.0, + 12.0 + ]); + out0 = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + + // Create offset views... + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element + out1 = new Complex128Array( out0.buffer, out0.BYTES_PER_ELEMENT*3 ); // begin at 4th element + + zreplicate( 3, 2, x1, 2, out1, 1 ); + expected = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 4.0, 3.0, 4.0, 7.0, 8.0, 7.0, 8.0, 11.0, 12.0, 11.0, 12.0 ] ); + + t.strictEqual( isSameComplex128Array( out0, expected ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/README.md b/lib/node_modules/@stdlib/blas/ext/base/zwax/README.md new file mode 100644 index 000000000000..44915528b9ee --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/README.md @@ -0,0 +1,374 @@ + + +# zwax + +> Multiply each element in a double-precision complex floating-point strided array `x` by a scalar constant and assign the results to elements in a double-precision complex floating-point strided array `w`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{w} = \alpha \cdot \mathbf{x} +``` + + + +This API is complementary to the package [`@stdlib/blas/base/zscal`][@stdlib/blas/base/zscal], which performs an in-place update. + +
+ + + +
+ +## Usage + +```javascript +var zwax = require( '@stdlib/blas/ext/base/zwax' ); +``` + +#### zwax( N, alpha, x, strideX, w, strideW ) + +Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w`. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +var alpha = new Complex128( 5.0, 3.0 ); + +zwax( x.length, alpha, x, 1, w, 1 ); +// w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **alpha**: scalar constant. +- **x**: input [`Complex128Array`][@stdlib/array/complex128]. +- **strideX**: stride length for `x`. +- **w**: output [`Complex128Array`][@stdlib/array/complex128]. +- **strideW**: stride length for `w`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to multiply every other element in `x` by `alpha` and assign the results to every other element in `w`: + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +var alpha = new Complex128( 5.0, 3.0 ); + +zwax( 2, alpha, x, 2, w, 2 ); +// w => [ -1.0, 13.0, 0.0, 0.0, 7.0, 45.0, 0.0, 0.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); + +// Initial arrays... +var x0 = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); +var w0 = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +// Create offset views... +var x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var w1 = new Complex128Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +var alpha = new Complex128( 5.0, 3.0 ); + +zwax( 3, alpha, x1, 1, w1, 1 ); +// w0 => [ 0.0, 0.0, 0.0, 0.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +``` + +#### zwax.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) + +Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w` using alternative indexing semantics. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +var alpha = new Complex128( 5.0, 3.0 ); + +zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); +// w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetW**: starting index for `w`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to multiply the last three elements of `x` by `alpha` and assign the results to the last three elements of `w`: + + + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); +var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + +var alpha = new Complex128( 5.0, 3.0 ); + +zwax.ndarray( 3, alpha, x, 1, x.length-3, w, 1, w.length-3 ); +// w => [ 0.0, 0.0, 0.0, 0.0, 7.0, 45.0, 11.0, 61.0, 15.0, 77.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `w` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var logEach = require( '@stdlib/console/log-each' ); +var zwax = require( '@stdlib/blas/ext/base/zwax' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var wbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var x = new Complex128Array( xbuf.buffer ); +var w = new Complex128Array( wbuf.buffer ); +var alpha = new Complex128( 5.0, 3.0 ); + +zwax( x.length, alpha, x, 1, w, 1 ); +logEach( '%s', w ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/zwax.h" +``` + +#### stdlib_strided_zwax( N, alpha, \*X, strideX, \*W, strideW ) + +Multiplies each element in a double-precision complex floating-point strided array `X` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `W`. + +```c +#include "stdlib/complex/float64/ctor.h" + +const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 }; +double w[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; +const stdlib_complex128_t alpha = stdlib_complex128( 5.0, 3.0 ); + +stdlib_strided_zwax( 4, alpha, (const stdlib_complex128_t *)x, 1, (stdlib_complex128_t *)w, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] stdlib_complex128_t` scalar constant. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **W**: `[out] stdlib_complex128_t*` output array. +- **strideW**: `[in] CBLAS_INT` stride length for `W`. + +```c +void stdlib_strided_zwax( const CBLAS_INT N, const stdlib_complex128_t alpha, const stdlib_complex128_t *X, const CBLAS_INT strideX, stdlib_complex128_t *W, const CBLAS_INT strideW ); +``` + + + +#### stdlib_strided_zwax_ndarray( N, alpha, \*X, strideX, offsetX, \*W, strideW, offsetW ) + + + +Multiplies each element in a double-precision complex floating-point strided array `X` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `W` using alternative indexing semantics. + +```c +#include "stdlib/complex/float64/ctor.h" + +const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 }; +double w[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; +const stdlib_complex128_t alpha = stdlib_complex128( 5.0, 3.0 ); + +stdlib_strided_zwax_ndarray( 4, alpha, (const stdlib_complex128_t *)x, 1, 0, (stdlib_complex128_t *)w, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **alpha**: `[in] stdlib_complex128_t` scalar constant. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **W**: `[out] stdlib_complex128_t*` output array. +- **strideW**: `[in] CBLAS_INT` stride length for `W`. +- **offsetW**: `[in] CBLAS_INT` starting index for `W`. + +```c +void stdlib_strided_zwax_ndarray( const CBLAS_INT N, const stdlib_complex128_t alpha, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex128_t *W, const CBLAS_INT strideW, const CBLAS_INT offsetW ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/zwax.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/complex/float64/real.h" +#include "stdlib/complex/float64/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex128_t x[] = { + stdlib_complex128( 1.0, 2.0 ), + stdlib_complex128( 3.0, 4.0 ), + stdlib_complex128( 5.0, 6.0 ), + stdlib_complex128( 7.0, 8.0 ) + }; + stdlib_complex128_t w[] = { + stdlib_complex128( 0.0, 0.0 ), + stdlib_complex128( 0.0, 0.0 ), + stdlib_complex128( 0.0, 0.0 ), + stdlib_complex128( 0.0, 0.0 ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideW = 1; + + // Define a scalar constant: + stdlib_complex128_t alpha = stdlib_complex128( 5.0, 3.0 ); + + // Multiply each element in `x` by a constant and assign to `w`: + stdlib_strided_zwax( N, alpha, x, strideX, w, strideW ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "w[ %i ] = %lf + %lfi\n", i, stdlib_complex128_real( w[ i ] ), stdlib_complex128_imag( w[ i ] ) ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.js new file mode 100644 index 000000000000..420446959251 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.js @@ -0,0 +1,116 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zwax = require( './../lib/zwax.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var xbuf; + var wbuf; + var x; + var w; + + xbuf = uniform( len*2, -100.0, 100.0, options ); + wbuf = uniform( len*2, -100.0, 100.0, options ); + x = new Complex128Array( xbuf.buffer ); + w = new Complex128Array( wbuf.buffer ); + + alpha = new Complex128( 5.0, 3.0 ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zwax( x.length, alpha, x, 1, w, 1 ); + if ( isnan( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.native.js new file mode 100644 index 000000000000..b35e8da9c5bc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.native.js @@ -0,0 +1,121 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zwax = tryRequire( resolve( __dirname, './../lib/zwax.native.js' ) ); +var opts = { + 'skip': ( zwax instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var xbuf; + var wbuf; + var x; + var w; + + xbuf = uniform( len*2, -100.0, 100.0, options ); + wbuf = uniform( len*2, -100.0, 100.0, options ); + x = new Complex128Array( xbuf.buffer ); + w = new Complex128Array( wbuf.buffer ); + + alpha = new Complex128( 5.0, 3.0 ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zwax( x.length, alpha, x, 1, w, 1 ); + if ( isnan( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..989fd7113e7f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.ndarray.js @@ -0,0 +1,116 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zwax = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var xbuf; + var wbuf; + var x; + var w; + + xbuf = uniform( len*2, -100.0, 100.0, options ); + wbuf = uniform( len*2, -100.0, 100.0, options ); + x = new Complex128Array( xbuf.buffer ); + w = new Complex128Array( wbuf.buffer ); + + alpha = new Complex128( 5.0, 3.0 ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + if ( isnan( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..1fe6e4aea31e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,121 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zwax = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zwax instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var alpha; + var xbuf; + var wbuf; + var x; + var w; + + xbuf = uniform( len*2, -100.0, 100.0, options ); + wbuf = uniform( len*2, -100.0, 100.0, options ); + x = new Complex128Array( xbuf.buffer ); + w = new Complex128Array( wbuf.buffer ); + + alpha = new Complex128( 5.0, 3.0 ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + if ( isnan( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( wbuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/zwax/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..af2aecd0daea --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/benchmark/c/benchmark.length.c @@ -0,0 +1,214 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zwax.h" +#include "stdlib/complex/float64/ctor.h" +#include +#include +#include +#include +#include + +#define NAME "zwax" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, 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 double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + stdlib_complex128_t alpha; + double elapsed; + double *x; + double *w; + double t; + int i; + + x = (double *)malloc( len * 2 * sizeof( double ) ); + w = (double *)malloc( len * 2 * sizeof( double ) ); + + alpha = stdlib_complex128( 5.0, 3.0 ); + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -100.0, 100.0 ); + w[ i ] = random_uniform( -100.0, 100.0 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_zwax( len, alpha, (const stdlib_complex128_t *)x, 1, (stdlib_complex128_t *)w, 1 ); + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( w ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + stdlib_complex128_t alpha; + double elapsed; + double *x; + double *w; + double t; + int i; + + x = (double *)malloc( len * 2 * sizeof( double ) ); + w = (double *)malloc( len * 2 * sizeof( double ) ); + + alpha = stdlib_complex128( 5.0, 3.0 ); + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -100.0, 100.0 ); + w[ i ] = random_uniform( -100.0, 100.0 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_zwax_ndarray( len, alpha, (const stdlib_complex128_t *)x, 1, 0, (stdlib_complex128_t *)w, 1, 0 ); + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( w[ 0 ] != w[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( w ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/zwax/binding.gyp new file mode 100644 index 000000000000..60dce9d0b31a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/binding.gyp @@ -0,0 +1,265 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Fortran compiler (to override -Dfortran_compiler=): + 'fortran_compiler%': 'gfortran', + + # Fortran compiler flags: + 'fflags': [ + # Specify the Fortran standard to which a program is expected to conform: + '-std=f95', + + # Indicate that the layout is free-form source code: + '-ffree-form', + + # Aggressive optimization: + '-O3', + + # Enable commonly used warning options: + '-Wall', + + # Warn if source code contains problematic language features: + '-Wextra', + + # Warn if a procedure is called without an explicit interface: + '-Wimplicit-interface', + + # Do not transform names of entities specified in Fortran source files by appending underscores (i.e., don't mangle names, thus allowing easier usage in C wrappers): + '-fno-underscoring', + + # Warn if source code contains Fortran 95 extensions and C-language constructs: + '-pedantic', + + # Compile but do not link (output is an object file): + '-c', + ], + + # 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 + + # Define custom build actions for particular inputs: + 'rules': [ + { + # Define a rule for processing Fortran files: + 'extension': 'f', + + # Define the pathnames to be used as inputs when performing processing: + 'inputs': [ + # Full path of the current input: + '<(RULE_INPUT_PATH)' + ], + + # Define the outputs produced during processing: + 'outputs': [ + # Store an output object file in a directory for placing intermediate results (only accessible within a single target): + '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).<(obj)' + ], + + # Define the rule for compiling Fortran based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + + # Rule to compile Fortran on Windows: + { + 'rule_name': 'compile_fortran_windows', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Windows...', + + 'process_outputs_as_sources': 0, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + }, + + # Rule to compile Fortran on non-Windows: + { + 'rule_name': 'compile_fortran_linux', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Linux...', + + 'process_outputs_as_sources': 1, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '-fPIC', # generate platform-independent code + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + } + ], # end condition (OS=="win") + ], # end conditions + }, # end rule (extension=="f") + ], # end rules + }, # 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/blas/ext/base/zwax/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/zwax/docs/repl.txt new file mode 100644 index 000000000000..11762f5873c4 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/docs/repl.txt @@ -0,0 +1,138 @@ + +{{alias}}( N, alpha, x, strideX, w, strideW ) + Multiplies each element in a double-precision complex floating-point strided + array `x` by a scalar constant and assigns the results to elements in a + double-precision complex floating-point strided array `w`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `w` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: Complex128 + Scalar constant. + + x: Complex128Array + Input array. + + strideX: integer + Stride length for `x`. + + w: Complex128Array + Output array. + + strideW: integer + Stride length for `w`. + + Returns + ------- + w: Complex128Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x = new {{alias:@stdlib/array/complex128}}( bufX ); + > var w = new {{alias:@stdlib/array/complex128}}( bufW ); + > var alpha = new {{alias:@stdlib/complex/float64/ctor}}( 5.0, 3.0 ); + > {{alias}}( x.length, alpha, x, 1, w, 1 ) + [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] + + // Using `N` and stride parameters: + > bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ]; + > x = new {{alias:@stdlib/array/complex128}}( bufX ); + > bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > w = new {{alias:@stdlib/array/complex128}}( bufW ); + > alpha = new {{alias:@stdlib/complex/float64/ctor}}( 5.0, 3.0 ); + > {{alias}}( 2, alpha, x, 2, w, 2 ) + [ -1.0, 13.0, 0.0, 0.0, 7.0, 45.0, 0.0, 0.0 ] + + // Using view offsets: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x0 = new {{alias:@stdlib/array/complex128}}( bufX ); + > var w0 = new {{alias:@stdlib/array/complex128}}( bufW ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetW = w0.BYTES_PER_ELEMENT * 2; + > var x1 = new {{alias:@stdlib/array/complex128}}( x0.buffer, offsetX ); + > var w1 = new {{alias:@stdlib/array/complex128}}( w0.buffer, offsetW ); + > alpha = new {{alias:@stdlib/complex/float64/ctor}}( 5.0, 3.0 ); + > {{alias}}( 3, alpha, x1, 1, w1, 1 ) + [ 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + > w0 + [ 0.0, 0.0, 0.0, 0.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + + +{{alias}}.ndarray( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) + Multiplies each element in a double-precision complex floating-point strided + array `x` by a scalar constant and assigns the results to elements in a + double-precision complex floating-point strided array `w` using alternative + indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + alpha: Complex128 + Scalar constant. + + x: Complex128Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + w: Complex128Array + Output array. + + strideW: integer + Stride length for `w`. + + offsetW: integer + Starting index for `w`. + + Returns + ------- + w: Complex128Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > var x = new {{alias:@stdlib/array/complex128}}( bufX ); + > var w = new {{alias:@stdlib/array/complex128}}( bufW ); + > var alpha = new {{alias:@stdlib/complex/float64/ctor}}( 5.0, 3.0 ); + > {{alias}}.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ) + [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] + + // Using index offsets: + > bufX = [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0, 4.0, 0.0, 5.0, 0.0 ]; + > x = new {{alias:@stdlib/array/complex128}}( bufX ); + > bufW = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ]; + > w = new {{alias:@stdlib/array/complex128}}( bufW ); + > alpha = new {{alias:@stdlib/complex/float64/ctor}}( 2.0, 1.0 ); + > {{alias}}.ndarray( 3, alpha, x, 1, x.length-3, w, 1, w.length-3 ) + [ 0.0, 0.0, 0.0, 0.0, 6.0, 3.0, 8.0, 4.0, 10.0, 5.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/zwax/docs/types/index.d.ts new file mode 100644 index 000000000000..915b31bd65c5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/docs/types/index.d.ts @@ -0,0 +1,123 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Complex128Array } from '@stdlib/types/array'; +import { Complex128 } from '@stdlib/types/complex'; + +/** +* Interface describing `zwax`. +*/ +interface Routine { + /** + * Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w`. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param w - output array + * @param strideW - `w` stride length + * @returns `w` + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * var Complex128 = require( '@stdlib/complex/float64/ctor' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + * var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * var alpha = new Complex128( 5.0, 3.0 ); + * + * zwax( x.length, alpha, x, 1, w, 1 ); + * // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + */ + ( N: number, alpha: Complex128, x: Complex128Array, strideX: number, w: Complex128Array, strideW: number ): Complex128Array; + + /** + * Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param alpha - scalar constant + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting index for `x` + * @param w - output array + * @param strideW - `w` stride length + * @param offsetW - starting index for `w` + * @returns `w` + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * var Complex128 = require( '@stdlib/complex/float64/ctor' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); + * var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + * + * var alpha = new Complex128( 5.0, 3.0 ); + * + * zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); + * // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] + */ + ndarray( N: number, alpha: Complex128, x: Complex128Array, strideX: number, offsetX: number, w: Complex128Array, strideW: number, offsetW: number ): Complex128Array; +} + +/** +* Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w`. +* +* @param N - number of indexed elements +* @param alpha - scalar constant +* @param x - input array +* @param strideX - `x` stride length +* @param w - output array +* @param strideW - `w` stride length +* @returns `w` +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var Complex128 = require( '@stdlib/complex/float64/ctor' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +* var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* var alpha = new Complex128( 5.0, 3.0 ); +* +* zwax( x.length, alpha, x, 1, w, 1 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var Complex128 = require( '@stdlib/complex/float64/ctor' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +* var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* var alpha = new Complex128( 5.0, 3.0 ); +* +* zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0, 11.0, 61.0 ] +*/ +declare var zwax: Routine; + + +// EXPORTS // + +export = zwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/zwax/docs/types/test.ts new file mode 100644 index 000000000000..2eecc2e94283 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/docs/types/test.ts @@ -0,0 +1,298 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import Complex128Array = require( '@stdlib/array/complex128' ); +import Complex128 = require( '@stdlib/complex/float64/ctor' ); +import zwax = require( './index' ); + + +// TESTS // + +// The function returns a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax( x.length, alpha, x, 1, w, 1 ); // $ExpectType Complex128Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax( '10', alpha, x, 1, w, 1 ); // $ExpectError + zwax( true, alpha, x, 1, w, 1 ); // $ExpectError + zwax( false, alpha, x, 1, w, 1 ); // $ExpectError + zwax( null, alpha, x, 1, w, 1 ); // $ExpectError + zwax( undefined, alpha, x, 1, w, 1 ); // $ExpectError + zwax( [], alpha, x, 1, w, 1 ); // $ExpectError + zwax( {}, alpha, x, 1, w, 1 ); // $ExpectError + zwax( ( x: number ): number => x, alpha, x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a complex-like... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + + zwax( x.length, 10, x, 1, w, 1 ); // $ExpectError + zwax( x.length, '10', x, 1, w, 1 ); // $ExpectError + zwax( x.length, true, x, 1, w, 1 ); // $ExpectError + zwax( x.length, false, x, 1, w, 1 ); // $ExpectError + zwax( x.length, null, x, 1, w, 1 ); // $ExpectError + zwax( x.length, undefined, x, 1, w, 1 ); // $ExpectError + zwax( x.length, [], x, 1, w, 1 ); // $ExpectError + zwax( x.length, {}, x, 1, w, 1 ); // $ExpectError + zwax( x.length, ( x: number ): number => x, x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a Complex128Array... +{ + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax( 10, alpha, 10, 1, w, 1 ); // $ExpectError + zwax( 10, alpha, '10', 1, w, 1 ); // $ExpectError + zwax( 10, alpha, true, 1, w, 1 ); // $ExpectError + zwax( 10, alpha, false, 1, w, 1 ); // $ExpectError + zwax( 10, alpha, null, 1, w, 1 ); // $ExpectError + zwax( 10, alpha, undefined, 1, w, 1 ); // $ExpectError + zwax( 10, alpha, [ '1' ], 1, w, 1 ); // $ExpectError + zwax( 10, alpha, {}, 1, w, 1 ); // $ExpectError + zwax( 10, alpha, ( x: number ): number => x, 1, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax( x.length, alpha, x, '10', w, 1 ); // $ExpectError + zwax( x.length, alpha, x, true, w, 1 ); // $ExpectError + zwax( x.length, alpha, x, false, w, 1 ); // $ExpectError + zwax( x.length, alpha, x, null, w, 1 ); // $ExpectError + zwax( x.length, alpha, x, undefined, w, 1 ); // $ExpectError + zwax( x.length, alpha, x, [], w, 1 ); // $ExpectError + zwax( x.length, alpha, x, {}, w, 1 ); // $ExpectError + zwax( x.length, alpha, x, ( x: number ): number => x, w, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax( x.length, alpha, x, 1, 10, 1 ); // $ExpectError + zwax( x.length, alpha, x, 1, '10', 1 ); // $ExpectError + zwax( x.length, alpha, x, 1, true, 1 ); // $ExpectError + zwax( x.length, alpha, x, 1, false, 1 ); // $ExpectError + zwax( x.length, alpha, x, 1, null, 1 ); // $ExpectError + zwax( x.length, alpha, x, 1, undefined, 1 ); // $ExpectError + zwax( x.length, alpha, x, 1, [ '1' ], 1 ); // $ExpectError + zwax( x.length, alpha, x, 1, {}, 1 ); // $ExpectError + zwax( x.length, alpha, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a sixth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax( x.length, alpha, x, 1, w, '10' ); // $ExpectError + zwax( x.length, alpha, x, 1, w, true ); // $ExpectError + zwax( x.length, alpha, x, 1, w, false ); // $ExpectError + zwax( x.length, alpha, x, 1, w, null ); // $ExpectError + zwax( x.length, alpha, x, 1, w, undefined ); // $ExpectError + zwax( x.length, alpha, x, 1, w, [] ); // $ExpectError + zwax( x.length, alpha, x, 1, w, {} ); // $ExpectError + zwax( x.length, alpha, x, 1, w, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax(); // $ExpectError + zwax( x.length ); // $ExpectError + zwax( x.length, alpha ); // $ExpectError + zwax( x.length, alpha, x ); // $ExpectError + zwax( x.length, alpha, x, 1 ); // $ExpectError + zwax( x.length, alpha, x, 1, w ); // $ExpectError + zwax( x.length, alpha, x, 1, w, 1, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); // $ExpectType Complex128Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax.ndarray( '10', alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( true, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( false, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( null, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( undefined, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( [], alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( {}, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( ( x: number ): number => x, alpha, x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a complex-like... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + + zwax.ndarray( x.length, 10, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, '10', x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, true, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, false, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, null, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, undefined, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, [], x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, {}, x, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, ( x: number ): number => x, x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a Complex128Array... +{ + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax.ndarray( 10, alpha, 10, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( 10, alpha, '10', 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( 10, alpha, true, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( 10, alpha, false, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( 10, alpha, null, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( 10, alpha, undefined, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( 10, alpha, [ '1' ], 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( 10, alpha, {}, 1, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( 10, alpha, ( x: number ): number => x, 1, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax.ndarray( x.length, alpha, x, '10', 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, true, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, false, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, null, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, undefined, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, [], 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, {}, 0, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, ( x: number ): number => x, 0, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax.ndarray( x.length, alpha, x, 1, '10', w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, true, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, false, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, null, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, undefined, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, [], w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, {}, w, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, ( x: number ): number => x, w, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax.ndarray( x.length, alpha, x, 1, 0, 10, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, '10', 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, true, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, false, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, null, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, undefined, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, {}, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax.ndarray( x.length, alpha, x, 1, 0, w, '10', 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, true, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, false, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, null, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, undefined, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, [], 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, {}, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an eighth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, '10' ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, true ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, false ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, null ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, undefined ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, [] ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, {} ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Complex128Array( 10 ); + const w = new Complex128Array( 10 ); + const alpha = new Complex128( 5.0, 3.0 ); + + zwax.ndarray(); // $ExpectError + zwax.ndarray( x.length ); // $ExpectError + zwax.ndarray( x.length, alpha ); // $ExpectError + zwax.ndarray( x.length, alpha, x ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1 ); // $ExpectError + zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zwax/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/zwax/examples/c/example.c new file mode 100644 index 000000000000..18e8d6cb1186 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/examples/c/example.c @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zwax.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/complex/float64/real.h" +#include "stdlib/complex/float64/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex128_t x[] = { + stdlib_complex128( 1.0, 2.0 ), + stdlib_complex128( 3.0, 4.0 ), + stdlib_complex128( 5.0, 6.0 ), + stdlib_complex128( 7.0, 8.0 ) + }; + stdlib_complex128_t w[] = { + stdlib_complex128( 0.0, 0.0 ), + stdlib_complex128( 0.0, 0.0 ), + stdlib_complex128( 0.0, 0.0 ), + stdlib_complex128( 0.0, 0.0 ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideW = 1; + + // Define a scalar constant: + stdlib_complex128_t alpha = stdlib_complex128( 5.0, 3.0 ); + + // Multiply each element in `x` by a constant and assign to `w`: + stdlib_strided_zwax( N, alpha, x, strideX, w, strideW ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "w[ %i ] = %lf + %lfi\n", i, stdlib_complex128_real( w[ i ] ), stdlib_complex128_imag( w[ i ] ) ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/examples/index.js new file mode 100644 index 000000000000..399fb3795db0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/examples/index.js @@ -0,0 +1,38 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var logEach = require( '@stdlib/console/log-each' ); +var zwax = require( './../lib' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var wbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var x = new Complex128Array( xbuf.buffer ); +var w = new Complex128Array( wbuf.buffer ); +var alpha = new Complex128( 5.0, 3.0 ); + +zwax( x.length, alpha, x, 1, w, 1 ); +logEach( '%s', w ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/zwax/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ -2.0, 6.0, -2.0, 14.0, -2.0, 22.0, -2.0, 30.0 ] +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var Complex128 = require( '@stdlib/complex/float64/ctor' ); +* var zwax = require( '@stdlib/blas/ext/base/zwax' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +* var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex128( 2.0, 2.0 ); +* +* zwax.ndarray( x.length, alpha, x, 1, 0, w, 1, 0 ); +* // w => [ -2.0, 6.0, -2.0, 14.0, -2.0, 22.0, -2.0, 30.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var zwax; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + zwax = main; +} else { + zwax = tmp; +} + + +// EXPORTS // + +module.exports = zwax; + +// exports: { "ndarray": "zwax.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/main.js new file mode 100644 index 000000000000..9ab4971f6da0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var zwax = require( './zwax.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( zwax, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = zwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/native.js new file mode 100644 index 000000000000..4e972986cc74 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var zwax = require( './zwax.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( zwax, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = zwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/ndarray.js new file mode 100644 index 000000000000..a5be232e0d53 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/ndarray.js @@ -0,0 +1,133 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var real = require( '@stdlib/complex/float64/real' ); +var imag = require( '@stdlib/complex/float64/imag' ); +var zcopy = require( '@stdlib/blas/base/zcopy' ).ndarray; +var cmul = require( '@stdlib/complex/float64/base/mul' ).assign; + + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128} alpha - scalar constant +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex128Array} w - output array +* @param {integer} strideW - `w` stride length +* @param {NonNegativeInteger} offsetW - starting `w` index +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var Complex128 = require( '@stdlib/complex/float64/ctor' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex128( 5.0, 3.0 ); +* +* zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] +*/ +function zwax( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) { + var xview; + var wview; + var are; + var aim; + var ix; + var iw; + var sx; + var sw; + var m; + var i; + + if ( N <= 0 ) { + return w; + } + + // Decompose the constant into its real and imaginary components: + are = real( alpha ); + aim = imag( alpha ); + + // Fast path: when alpha = 1+0i, delegate to zcopy (w = x) + if ( are === 1.0 && aim === 0.0 ) { + return zcopy( N, x, strideX, offsetX, w, strideW, offsetW ); + } + + // Reinterpret the complex input arrays as real-valued arrays: + xview = reinterpret( x, 0 ); + wview = reinterpret( w, 0 ); + + // Adjust the strides and offsets according to the real-valued arrays: + ix = offsetX * 2; + iw = offsetW * 2; + sx = strideX * 2; + sw = strideW * 2; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideW === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + cmul( are, aim, xview[ ix ], xview[ ix+1 ], wview, 1, iw ); + ix += sx; + iw += sw; + } + } + if ( N < M ) { + return w; + } + for ( i = m; i < N; i += M ) { + cmul( are, aim, xview[ ix ], xview[ ix+1 ], wview, 1, iw ); + cmul( are, aim, xview[ ix+2 ], xview[ ix+3 ], wview, 1, iw+2 ); + cmul( are, aim, xview[ ix+4 ], xview[ ix+5 ], wview, 1, iw+4 ); + cmul( are, aim, xview[ ix+6 ], xview[ ix+7 ], wview, 1, iw+6 ); + cmul( are, aim, xview[ ix+8 ], xview[ ix+9 ], wview, 1, iw+8 ); + ix += M * 2; + iw += M * 2; + } + return w; + } + for ( i = 0; i < N; i++ ) { + cmul( are, aim, xview[ ix ], xview[ ix+1 ], wview, 1, iw ); + ix += sx; + iw += sw; + } + return w; +} + + +// EXPORTS // + +module.exports = zwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/ndarray.native.js new file mode 100644 index 000000000000..b918aeed2dfd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/ndarray.native.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128} alpha - scalar constant +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex128Array} w - output array +* @param {integer} strideW - `w` stride length +* @param {NonNegativeInteger} offsetW - starting `w` index +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var Complex128 = require( '@stdlib/complex/float64/ctor' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex128( 5.0, 3.0 ); +* +* zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] +*/ +function zwax( N, alpha, x, strideX, offsetX, w, strideW, offsetW ) { + var viewX = reinterpret( x, 0 ); + var viewW = reinterpret( w, 0 ); + addon.ndarray( N, alpha, viewX, strideX, offsetX, viewW, strideW, offsetW ); + return w; +} + + +// EXPORTS // + +module.exports = zwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/zwax.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/zwax.js new file mode 100644 index 000000000000..da9bc1fcabbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/zwax.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128} alpha - scalar constant +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Complex128Array} w - output array +* @param {integer} strideW - `w` stride length +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var Complex128 = require( '@stdlib/complex/float64/ctor' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex128( 5.0, 3.0 ); +* +* zwax( x.length, alpha, x, 1, w, 1 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] +*/ +function zwax( N, alpha, x, strideX, w, strideW ) { + return ndarray( N, alpha, x, strideX, stride2offset( N, strideX ), w, strideW, stride2offset( N, strideW ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = zwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/zwax.native.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/zwax.native.js new file mode 100644 index 000000000000..0f8ec27d85b0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/lib/zwax.native.js @@ -0,0 +1,61 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies each element in a double-precision complex floating-point strided array `x` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `w`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128} alpha - scalar constant +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Complex128Array} w - output array +* @param {integer} strideW - `w` stride length +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var Complex128 = require( '@stdlib/complex/float64/ctor' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* var alpha = new Complex128( 5.0, 3.0 ); +* +* zwax( x.length, alpha, x, 1, w, 1 ); +* // w => [ -1.0, 13.0, 3.0, 29.0, 7.0, 45.0 ] +*/ +function zwax( N, alpha, x, strideX, w, strideW ) { + var viewX = reinterpret( x, 0 ); + var viewW = reinterpret( w, 0 ); + addon( N, alpha, viewX, strideX, viewW, strideW ); + return w; +} + + +// EXPORTS // + +module.exports = zwax; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/zwax/manifest.json new file mode 100644 index 000000000000..b019946cac29 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/manifest.json @@ -0,0 +1,94 @@ +{ + "options": { + "task": "build" + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/blas/base/zcopy", + "@stdlib/complex/float64/base/mul", + "@stdlib/complex/float64/real", + "@stdlib/complex/float64/imag", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-complex128", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-complex128array" + ] + }, + { + "task": "benchmark", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/blas/base/zcopy", + "@stdlib/complex/float64/base/mul", + "@stdlib/complex/float64/real", + "@stdlib/complex/float64/imag", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/blas/base/zcopy", + "@stdlib/complex/float64/base/mul", + "@stdlib/complex/float64/real", + "@stdlib/complex/float64/imag", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/package.json b/lib/node_modules/@stdlib/blas/ext/base/zwax/package.json new file mode 100644 index 000000000000..a52b3de232c3 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/package.json @@ -0,0 +1,78 @@ +{ + "name": "@stdlib/blas/ext/base/zwax", + "version": "0.0.0", + "description": "Multiply each element in a double-precision complex floating-point strided array `x` by a scalar constant and assign the results to elements in a double-precision complex floating-point strided array `w`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "multiply", + "multiplication", + "scale", + "scaling", + "strided", + "array", + "ndarray", + "zwax", + "complex", + "complex128", + "complex128array", + "float64" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zwax/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/zwax/src/addon.c new file mode 100644 index 000000000000..51e629014848 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/src/addon.c @@ -0,0 +1,69 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zwax.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_complex128.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_complex128array.h" +#include "stdlib/complex/float64/ctor.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_COMPLEX128( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideW, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, W, N, strideW, argv, 4 ); + API_SUFFIX(stdlib_strided_zwax)( N, alpha, (const stdlib_complex128_t *)X, strideX, (stdlib_complex128_t *)W, strideW ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 8 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_COMPLEX128( env, alpha, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 4 ); + STDLIB_NAPI_ARGV_INT64( env, strideW, argv, 6 ); + STDLIB_NAPI_ARGV_INT64( env, offsetW, argv, 7 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, W, N, strideW, argv, 5 ); + API_SUFFIX(stdlib_strided_zwax_ndarray)( N, alpha, (const stdlib_complex128_t *)X, strideX, offsetX, (stdlib_complex128_t *)W, strideW, offsetW ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/zwax/src/main.c new file mode 100644 index 000000000000..199040ae845d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/src/main.c @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zwax.h" +#include "stdlib/blas/base/zcopy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/complex/float64/real.h" +#include "stdlib/complex/float64/imag.h" +#include "stdlib/complex/float64/base/mul.h" +#include "stdlib/strided/base/stride2offset.h" + +static const CBLAS_INT M = 5; + +/** +* Multiplies each element in a double-precision complex floating-point strided array `X` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `W`. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length for `X` +* @param W output array +* @param strideW stride length for `W` +*/ +void API_SUFFIX(stdlib_strided_zwax)( const CBLAS_INT N, const stdlib_complex128_t alpha, const stdlib_complex128_t *X, const CBLAS_INT strideX, stdlib_complex128_t *W, const CBLAS_INT strideW ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT ow = stdlib_strided_stride2offset( N, strideW ); + API_SUFFIX(stdlib_strided_zwax_ndarray)( N, alpha, X, strideX, ox, W, strideW, ow ); +} + +/** +* Multiplies each element in a double-precision complex floating-point strided array `X` by a scalar constant and assigns the results to elements in a double-precision complex floating-point strided array `W` using alternative indexing semantics. +* +* @param N number of indexed elements +* @param alpha scalar constant +* @param X input array +* @param strideX stride length for `X` +* @param offsetX starting index for `X` +* @param W output array +* @param strideW stride length for `W` +* @param offsetW starting index for `W` +*/ +void API_SUFFIX(stdlib_strided_zwax_ndarray)( const CBLAS_INT N, const stdlib_complex128_t alpha, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex128_t *W, const CBLAS_INT strideW, const CBLAS_INT offsetW ) { + CBLAS_INT ix; + CBLAS_INT iw; + CBLAS_INT m; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + // Fast path: when alpha = 1+0i, delegate to zcopy (w = x) + if ( stdlib_complex128_real( alpha ) == 1.0 && stdlib_complex128_imag( alpha ) == 0.0 ) { + API_SUFFIX(c_zcopy_ndarray)( N, X, strideX, offsetX, W, strideW, offsetW ); + return; + } + ix = offsetX; + iw = offsetW; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX == 1 && strideW == 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + W[ iw ] = stdlib_base_complex128_mul( alpha, X[ ix ] ); + ix += strideX; + iw += strideW; + } + } + if ( N < M ) { + return; + } + for ( i = m; i < N; i += M ) { + W[ iw ] = stdlib_base_complex128_mul( alpha, X[ ix ] ); + W[ iw+1 ] = stdlib_base_complex128_mul( alpha, X[ ix+1 ] ); + W[ iw+2 ] = stdlib_base_complex128_mul( alpha, X[ ix+2 ] ); + W[ iw+3 ] = stdlib_base_complex128_mul( alpha, X[ ix+3 ] ); + W[ iw+4 ] = stdlib_base_complex128_mul( alpha, X[ ix+4 ] ); + ix += M; + iw += M; + } + return; + } + for ( i = 0; i < N; i++ ) { + W[ iw ] = stdlib_base_complex128_mul( alpha, X[ ix ] ); + ix += strideX; + iw += strideW; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.js new file mode 100644 index 000000000000..000ae2f0193b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.js @@ -0,0 +1,77 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var zwax = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof zwax.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var zwax = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zwax, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var zwax = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zwax, require( './../lib/main.js' ), 'returns JS implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.ndarray.js new file mode 100644 index 000000000000..c966e905c713 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.ndarray.js @@ -0,0 +1,462 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var mul = require( '@stdlib/complex/float64/base/mul' ); +var zwax = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', function test( t ) { + t.strictEqual( zwax.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Complex128Array( x.length ); + expected = new Complex128Array([ + // (5.0+3.0i) * (4.0+2.0i) + 14.0, + 22.0, + // (5.0+3.0i) * (-3.0+5.0i) + -30.0, + 16.0, + // (5.0+3.0i) * (-1.0+2.0i) + -11.0, + 7.0, + // (5.0+3.0i) * (-5.0+6.0i) + -43.0, + 15.0 + ]); + + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + w = new Complex128Array( x.length ); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0 + ]); + + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var alpha; + var out; + var x; + var w; + + alpha = new Complex128( 3.0, 2.0 ); + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); // eslint-disable-line max-len + w = new Complex128Array( x.length ); + out = zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + x = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + + zwax( 0, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + zwax( -4, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 1.0, 0.0 ); + x = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex128Array( x.length ); + expected = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, + 4.0, + 5.0, // 1 + 6.0, // 1 + 7.0, + 8.0, + 9.0, // 2 + 10.0 // 2 + ]); + w = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (9.0+10.0i) + 15.0, + 77.0 + ]); + + zwax( 3, alpha, x, 2, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + w = new Complex128Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, + 0.0, + 0.0, // 1 + 0.0, // 1 + 0.0, + 0.0, + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + 0.0, + 0.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + 0.0, + 0.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + zwax( 3, alpha, x, 1, 0, w, 2, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 2.0, // 2 + 3.0, // 2 + 4.0, + 5.0, + -5.0, // 1 + -6.0, // 1 + 7.0, + 8.0, + 6.0, // 0 + 9.0 // 0 + ]); + w = new Complex128Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + expected = new Complex128Array([ + // (5.0+3.0i) * (2.0+3.0i) + 1.0, + 21.0, + // (5.0+3.0i) * (-5.0-6.0i) + -7.0, + -45.0, + // (5.0+3.0i) * (6.0+9.0i) + 3.0, + 63.0 + ]); + + zwax( 3, alpha, x, -2, x.length-1, w, -1, w.length-1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 2 + 6.0 // 2 + ]); + w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + zwax( 3, alpha, x, 2, 1, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` offset', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + w = new Complex128Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex128Array([ + 0.0, + 0.0, + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + zwax( 3, alpha, x, 1, 0, w, 1, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 2 + 6.0, // 2 + 0.0, + 0.0 + ]); + w = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0, // 2 + 0.0, + 0.0 + ]); + expected = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + 0.0, + 0.0 + ]); + + zwax( 3, alpha, x, 2, 1, w, 1, 2 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', function test( t ) { + var expected; + var alpha; + var x; + var w; + var z; + var i; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array( 100 ); + w = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex128( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + w = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex128( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.ndarray.native.js new file mode 100644 index 000000000000..7c44fbf8c56f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.ndarray.native.js @@ -0,0 +1,471 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var mul = require( '@stdlib/complex/float64/base/mul' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var zwax = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zwax instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 8', opts, function test( t ) { + t.strictEqual( zwax.length, 8, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Complex128Array( x.length ); + expected = new Complex128Array([ + // (5.0+3.0i) * (4.0+2.0i) + 14.0, + 22.0, + // (5.0+3.0i) * (-3.0+5.0i) + -30.0, + 16.0, + // (5.0+3.0i) * (-1.0+2.0i) + -11.0, + 7.0, + // (5.0+3.0i) * (-5.0+6.0i) + -43.0, + 15.0 + ]); + + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + w = new Complex128Array( x.length ); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0 + ]); + + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var alpha; + var out; + var x; + var w; + + alpha = new Complex128( 3.0, 2.0 ); + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); // eslint-disable-line max-len + w = new Complex128Array( x.length ); + out = zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + x = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + + zwax( 0, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + zwax( -4, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 1.0, 0.0 ); + x = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex128Array( x.length ); + expected = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, + 4.0, + 5.0, // 1 + 6.0, // 1 + 7.0, + 8.0, + 9.0, // 2 + 10.0 // 2 + ]); + w = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ]); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (9.0+10.0i) + 15.0, + 77.0 + ]); + + zwax( 3, alpha, x, 2, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + w = new Complex128Array([ + 0.0, // 0 + 0.0, // 0 + 0.0, + 0.0, + 0.0, // 1 + 0.0, // 1 + 0.0, + 0.0, + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + 0.0, + 0.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + 0.0, + 0.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + zwax( 3, alpha, x, 1, 0, w, 2, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 2.0, // 2 + 3.0, // 2 + 4.0, + 5.0, + -5.0, // 1 + -6.0, // 1 + 7.0, + 8.0, + 6.0, // 0 + 9.0 // 0 + ]); + w = new Complex128Array([ + 0.0, // 2 + 0.0, // 2 + 0.0, // 1 + 0.0, // 1 + 0.0, // 0 + 0.0 // 0 + ]); + expected = new Complex128Array([ + // (5.0+3.0i) * (2.0+3.0i) + 1.0, + 21.0, + // (5.0+3.0i) * (-5.0-6.0i) + -7.0, + -45.0, + // (5.0+3.0i) * (6.0+9.0i) + 3.0, + 63.0 + ]); + + zwax( 3, alpha, x, -2, x.length-1, w, -1, w.length-1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` offset', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 2 + 6.0 // 2 + ]); + w = new Complex128Array( [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + zwax( 3, alpha, x, 2, 1, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` offset', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + w = new Complex128Array([ + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex128Array([ + 0.0, + 0.0, + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + zwax( 3, alpha, x, 1, 0, w, 1, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports complex access patterns', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 0.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 2 + 6.0, // 2 + 0.0, + 0.0 + ]); + w = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0, // 2 + 0.0, + 0.0 + ]); + expected = new Complex128Array([ + 0.0, + 0.0, + 0.0, + 0.0, + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + 0.0, + 0.0 + ]); + + zwax( 3, alpha, x, 2, 1, w, 1, 2 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + var z; + var i; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array( 100 ); + w = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex128( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + w = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex128( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + zwax( x.length, alpha, x, 1, 0, w, 1, 0 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.zwax.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.zwax.js new file mode 100644 index 000000000000..8bf299e216d5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.zwax.js @@ -0,0 +1,372 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var mul = require( '@stdlib/complex/float64/base/mul' ); +var zwax = require( './../lib/zwax.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', function test( t ) { + t.strictEqual( zwax.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Complex128Array( x.length ); + expected = new Complex128Array([ + // (5.0+3.0i) * (4.0+2.0i) + 14.0, + 22.0, + // (5.0+3.0i) * (-3.0+5.0i) + -30.0, + 16.0, + // (5.0+3.0i) * (-1.0+2.0i) + -11.0, + 7.0, + // (5.0+3.0i) * (-5.0+6.0i) + -43.0, + 15.0 + ]); + + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + w = new Complex128Array( x.length ); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0 + ]); + + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var alpha; + var out; + var x; + var w; + + alpha = new Complex128( 3.0, 2.0 ); + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); // eslint-disable-line max-len + w = new Complex128Array( x.length ); + out = zwax( x.length, alpha, x, 1, w, 1 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + x = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + + zwax( 0, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + zwax( -4, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 1.0, 0.0 ); + x = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex128Array( x.length ); + expected = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, + 4.0, + 5.0, // 1 + 6.0, // 1 + 7.0, + 8.0, + 9.0, // 2 + 10.0 // 2 + ]); + w = new Complex128Array( 3 ); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (9.0+10.0i) + 15.0, + 77.0 + ]); + + zwax( 3, alpha, x, 2, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + w = new Complex128Array([ + 0.0, // 0 + 0.0, // 0 + 30.0, + 40.0, + 0.0, // 1 + 0.0, // 1 + 10.0, + 20.0, + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + 30.0, + 40.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + 10.0, + 20.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + zwax( 3, alpha, x, 1, w, 2 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 2.0, // 2 + 3.0, // 2 + 4.0, + 5.0, + -5.0, // 1 + -6.0, // 1 + 7.0, + 8.0, + 6.0, // 0 + 9.0 // 0 + ]); + w = new Complex128Array( 5 ); + expected = new Complex128Array([ + // (5.0+3.0i) * (2.0+3.0i) + 1.0, + 21.0, + 0.0, + 0.0, + // (5.0+3.0i) * (-5.0-6.0i) + -7.0, + -45.0, + 0.0, + 0.0, + // (5.0+3.0i) * (6.0+9.0i) + 3.0, + 63.0 + ]); + + zwax( 3, alpha, x, -2, w, -2 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var alpha; + var x0; + var w0; + var x1; + var w1; + + alpha = new Complex128( 5.0, 3.0 ); + + x0 = new Complex128Array([ + 1.0, + 2.0, + 3.0, // 0 + 4.0, // 0 + 5.0, // 1 + 6.0, // 1 + 7.0, // 2 + 8.0, // 2 + 9.0, + 10.0 + ]); + w0 = new Complex128Array([ + 10.0, + 11.0, + 12.0, + 13.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + w1 = new Complex128Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 11.0, + 12.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (7.0+8.0i) + 11.0, + 61.0 + ]); + + zwax( 3, alpha, x1, 1, w1, 1 ); + t.strictEqual( isSameComplex128Array( w0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', function test( t ) { + var expected; + var alpha; + var x; + var w; + var z; + var i; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array( 100 ); + w = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex128( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + w = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex128( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.zwax.native.js b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.zwax.native.js new file mode 100644 index 000000000000..ac9cd4bb4fd7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zwax/test/test.zwax.native.js @@ -0,0 +1,381 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var mul = require( '@stdlib/complex/float64/base/mul' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var zwax = tryRequire( resolve( __dirname, './../lib/zwax.native.js' ) ); +var opts = { + 'skip': ( zwax instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zwax, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 6', opts, function test( t ) { + t.strictEqual( zwax.length, 6, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies each element in a strided array `x` by a scalar constant and assigns the results to elements in a strided array `w`', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 4.0, + 2.0, + -3.0, + 5.0, + -1.0, + 2.0, + -5.0, + 6.0 + ]); + w = new Complex128Array( x.length ); + expected = new Complex128Array([ + // (5.0+3.0i) * (4.0+2.0i) + 14.0, + 22.0, + // (5.0+3.0i) * (-3.0+5.0i) + -30.0, + 16.0, + // (5.0+3.0i) * (-1.0+2.0i) + -11.0, + 7.0, + // (5.0+3.0i) * (-5.0+6.0i) + -43.0, + 15.0 + ]); + + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + w = new Complex128Array( x.length ); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0 + ]); + + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var alpha; + var out; + var x; + var w; + + alpha = new Complex128( 3.0, 2.0 ); + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); // eslint-disable-line max-len + w = new Complex128Array( x.length ); + out = zwax( x.length, alpha, x, 1, w, 1 ); + + t.strictEqual( out, w, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `w` unchanged', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + x = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 ] ); + + zwax( 0, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + zwax( -4, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'if `alpha` equals `1`, the function assigns `x` to `w`', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 1.0, 0.0 ); + x = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); + w = new Complex128Array( x.length ); + expected = new Complex128Array( [ 3.0, -4.0, 1.0, 15.0, 4.0, 3.0 ] ); // w = x + + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 1.0, // 0 + 2.0, // 0 + 3.0, + 4.0, + 5.0, // 1 + 6.0, // 1 + 7.0, + 8.0, + 9.0, // 2 + 10.0 // 2 + ]); + w = new Complex128Array( 3 ); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (9.0+10.0i) + 15.0, + 77.0 + ]); + + zwax( 3, alpha, x, 2, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `w` stride', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 1.0, + 2.0, + 3.0, + 4.0, + 5.0, + 6.0 + ]); + w = new Complex128Array([ + 0.0, // 0 + 0.0, // 0 + 30.0, + 40.0, + 0.0, // 1 + 0.0, // 1 + 10.0, + 20.0, + 0.0, // 2 + 0.0 // 2 + ]); + expected = new Complex128Array([ + // (5.0+3.0i) * (1.0+2.0i) + -1.0, + 13.0, + 30.0, + 40.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + 10.0, + 20.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0 + ]); + + zwax( 3, alpha, x, 1, w, 2 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array([ + 2.0, // 2 + 3.0, // 2 + 4.0, + 5.0, + -5.0, // 1 + -6.0, // 1 + 7.0, + 8.0, + 6.0, // 0 + 9.0 // 0 + ]); + w = new Complex128Array( 5 ); + expected = new Complex128Array([ + // (5.0+3.0i) * (2.0+3.0i) + 1.0, + 21.0, + 0.0, + 0.0, + // (5.0+3.0i) * (-5.0-6.0i) + -7.0, + -45.0, + 0.0, + 0.0, + // (5.0+3.0i) * (6.0+9.0i) + 3.0, + 63.0 + ]); + + zwax( 3, alpha, x, -2, w, -2 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var alpha; + var x0; + var w0; + var x1; + var w1; + + alpha = new Complex128( 5.0, 3.0 ); + + x0 = new Complex128Array([ + 1.0, + 2.0, + 3.0, // 0 + 4.0, // 0 + 5.0, // 1 + 6.0, // 1 + 7.0, // 2 + 8.0, // 2 + 9.0, + 10.0 + ]); + w0 = new Complex128Array([ + 10.0, + 11.0, + 12.0, + 13.0, + 0.0, // 0 + 0.0, // 0 + 0.0, // 1 + 0.0, // 1 + 0.0, // 2 + 0.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + w1 = new Complex128Array( w0.buffer, w0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 11.0, + 12.0, + 13.0, + // (5.0+3.0i) * (3.0+4.0i) + 3.0, + 29.0, + // (5.0+3.0i) * (5.0+6.0i) + 7.0, + 45.0, + // (5.0+3.0i) * (7.0+8.0i) + 11.0, + 61.0 + ]); + + zwax( 3, alpha, x1, 1, w1, 1 ); + t.strictEqual( isSameComplex128Array( w0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies each element of a strided array by a constant', opts, function test( t ) { + var expected; + var alpha; + var x; + var w; + var z; + var i; + + alpha = new Complex128( 5.0, 3.0 ); + + x = new Complex128Array( 100 ); + w = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex128( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + w = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + z = new Complex128( i, i + 1 ); + x.set( z, i ); + expected.set( mul( alpha, z ), i ); + } + zwax( x.length, alpha, x, 1, w, 1 ); + t.strictEqual( isSameComplex128Array( w, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/README.md b/lib/node_modules/@stdlib/blas/ext/base/zxdy/README.md new file mode 100644 index 000000000000..a835ef94736b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/README.md @@ -0,0 +1,354 @@ + + +# zxdy + +> Divide elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assign the results to `y`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \oslash \mathbf{y} +``` + + + + + +
+ + + +
+ +## Usage + +```javascript +var zxdy = require( '@stdlib/blas/ext/base/zxdy' ); +``` + +#### zxdy( N, x, strideX, y, strideY ) + +Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + +zxdy( x.length, x, 1, y, 1 ); +// y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: input [`Complex128Array`][@stdlib/array/complex128]. +- **strideX**: stride length for `x`. +- **y**: output [`Complex128Array`][@stdlib/array/complex128]. +- **strideY**: stride length for `y`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to divide every other element of `x` by every other element of `y`: + + + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 4.0, 6.0, 100.0, 200.0, 12.0, 8.0, 300.0, 400.0 ] ); +var y = new Complex128Array( [ 1.0, 1.0, 500.0, 600.0, 2.0, 2.0, 700.0, 800.0 ] ); + +zxdy( 2, x, 2, y, 2 ); +// y => [ 5.0, 1.0, 500.0, 600.0, 5.0, -1.0, 700.0, 800.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +// Initial arrays... +var x0 = new Complex128Array( [ 100.0, 200.0, 4.0, 6.0, 12.0, 8.0, 16.0, 8.0, 300.0, 400.0 ] ); +var y0 = new Complex128Array( [ 500.0, 600.0, 700.0, 800.0, 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + +// Create offset views... +var x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +zxdy( 3, x1, 1, y1, 1 ); +// y0 => [ 500.0, 600.0, 700.0, 800.0, 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +``` + +#### zxdy.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + +zxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to divide the last three elements of `x` by the last three elements of `y`: + + + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 100.0, 200.0, 300.0, 400.0, 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +var y = new Complex128Array( [ 500.0, 600.0, 700.0, 800.0, 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + +zxdy.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// y => [ 500.0, 600.0, 700.0, 800.0, 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `y` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var logEach = require( '@stdlib/console/log-each' ); +var zxdy = require( '@stdlib/blas/ext/base/zxdy' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var ybuf = discreteUniform( 20, 1, 100, { + 'dtype': 'float64' +}); +var x = new Complex128Array( xbuf.buffer ); +var y = new Complex128Array( ybuf.buffer ); + +zxdy( x.length, x, 1, y, 1 ); +logEach( '%s', y ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/zxdy.h" +``` + +#### stdlib_strided_zxdy( N, \*X, strideX, \*Y, strideY ) + +Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. + +```c +#include "stdlib/complex/float64/ctor.h" + +const double x[] = { 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 }; +double y[] = { 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 }; + +stdlib_strided_zxdy( 3, (stdlib_complex128_t *)x, 1, (stdlib_complex128_t *)y, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Y**: `[inout] stdlib_complex128_t*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. + +```c +void stdlib_strided_zxdy( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, stdlib_complex128_t *Y, const CBLAS_INT strideY ); +``` + + + +#### stdlib_strided_zxdy_ndarray( N, \*X, strideX, offsetX, \*Y, strideY, offsetY ) + + + +Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```c +#include "stdlib/complex/float64/ctor.h" + +const double x[] = { 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 }; +double y[] = { 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 }; + +stdlib_strided_zxdy_ndarray( 3, (stdlib_complex128_t *)x, 1, 0, (stdlib_complex128_t *)y, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Y**: `[inout] stdlib_complex128_t*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. +- **offsetY**: `[in] CBLAS_INT` starting index for `Y`. + +```c +void stdlib_strided_zxdy_ndarray( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex128_t *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/zxdy.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/complex/float64/real.h" +#include "stdlib/complex/float64/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex128_t x[] = { + stdlib_complex128( 4.0, 6.0 ), + stdlib_complex128( 12.0, 8.0 ), + stdlib_complex128( 16.0, 8.0 ), + stdlib_complex128( 32.0, 16.0 ) + }; + stdlib_complex128_t y[] = { + stdlib_complex128( 1.0, 1.0 ), + stdlib_complex128( 2.0, 2.0 ), + stdlib_complex128( 4.0, 4.0 ), + stdlib_complex128( 8.0, 8.0 ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Divide elements of `x` by the corresponding elements of `y`: + stdlib_strided_zxdy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "y[ %i ] = %lf + %lfi\n", i, stdlib_complex128_real( y[ i ] ), stdlib_complex128_imag( y[ i ] ) ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.js new file mode 100644 index 000000000000..fe4b4146d82b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.js @@ -0,0 +1,112 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zxdy = require( './../lib/zxdy.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, 1.0, 10.0, options ); + x = new Complex128Array( xbuf.buffer ); + y = new Complex128Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zxdy( x.length, x, 1, y, 1 ); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.native.js new file mode 100644 index 000000000000..244c29d15336 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.native.js @@ -0,0 +1,117 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zxdy = tryRequire( resolve( __dirname, './../lib/zxdy.native.js' ) ); +var opts = { + 'skip': ( zxdy instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, 1.0, 10.0, options ); + x = new Complex128Array( xbuf.buffer ); + y = new Complex128Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zxdy( x.length, x, 1, y, 1 ); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..13b5f8dd83e9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.ndarray.js @@ -0,0 +1,112 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zxdy = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, 1.0, 10.0, options ); + x = new Complex128Array( xbuf.buffer ); + y = new Complex128Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zxdy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..78aa1b125b52 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,117 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zxdy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zxdy instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, 1.0, 10.0, options ); + x = new Complex128Array( xbuf.buffer ); + y = new Complex128Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zxdy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/zxdy/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..25807aa2f438 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/benchmark/c/benchmark.length.c @@ -0,0 +1,210 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zxdy.h" +#include "stdlib/complex/float64/ctor.h" +#include +#include +#include +#include +#include + +#define NAME "zxdy" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, 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 double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int i; + + x = (double *)malloc( len * 2 * sizeof( double ) ); + y = (double *)malloc( len * 2 * sizeof( double ) ); + + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -0.5, 0.5 ); + y[ i ] = random_uniform( 1.0, 10.0 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_zxdy( len, (stdlib_complex128_t *)x, 1, (stdlib_complex128_t *)y, 1 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int i; + + x = (double *)malloc( len * 2 * sizeof( double ) ); + y = (double *)malloc( len * 2 * sizeof( double ) ); + + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -0.5, 0.5 ); + y[ i ] = random_uniform( 1.0, 10.0 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_zxdy_ndarray( len, (stdlib_complex128_t *)x, 1, 0, (stdlib_complex128_t *)y, 1, 0 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/zxdy/binding.gyp new file mode 100644 index 000000000000..60dce9d0b31a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/binding.gyp @@ -0,0 +1,265 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Fortran compiler (to override -Dfortran_compiler=): + 'fortran_compiler%': 'gfortran', + + # Fortran compiler flags: + 'fflags': [ + # Specify the Fortran standard to which a program is expected to conform: + '-std=f95', + + # Indicate that the layout is free-form source code: + '-ffree-form', + + # Aggressive optimization: + '-O3', + + # Enable commonly used warning options: + '-Wall', + + # Warn if source code contains problematic language features: + '-Wextra', + + # Warn if a procedure is called without an explicit interface: + '-Wimplicit-interface', + + # Do not transform names of entities specified in Fortran source files by appending underscores (i.e., don't mangle names, thus allowing easier usage in C wrappers): + '-fno-underscoring', + + # Warn if source code contains Fortran 95 extensions and C-language constructs: + '-pedantic', + + # Compile but do not link (output is an object file): + '-c', + ], + + # 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 + + # Define custom build actions for particular inputs: + 'rules': [ + { + # Define a rule for processing Fortran files: + 'extension': 'f', + + # Define the pathnames to be used as inputs when performing processing: + 'inputs': [ + # Full path of the current input: + '<(RULE_INPUT_PATH)' + ], + + # Define the outputs produced during processing: + 'outputs': [ + # Store an output object file in a directory for placing intermediate results (only accessible within a single target): + '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).<(obj)' + ], + + # Define the rule for compiling Fortran based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + + # Rule to compile Fortran on Windows: + { + 'rule_name': 'compile_fortran_windows', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Windows...', + + 'process_outputs_as_sources': 0, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + }, + + # Rule to compile Fortran on non-Windows: + { + 'rule_name': 'compile_fortran_linux', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Linux...', + + 'process_outputs_as_sources': 1, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '-fPIC', # generate platform-independent code + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + } + ], # end condition (OS=="win") + ], # end conditions + }, # end rule (extension=="f") + ], # end rules + }, # 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/blas/ext/base/zxdy/docs/img/equation_xdy.svg b/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/img/equation_xdy.svg new file mode 100644 index 000000000000..1b0e60ad95cf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/img/equation_xdy.svg @@ -0,0 +1,16 @@ + +bold y equals bold x circled-division-slash bold y + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/repl.txt new file mode 100644 index 000000000000..80209ff02aa6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/repl.txt @@ -0,0 +1,127 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Divides elements of a double-precision complex floating-point strided array + `x` by the corresponding elements of a double-precision complex floating- + point strided array `y` and assigns the results to `y`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `y` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Complex128Array + Input array. + + strideX: integer + Stride length for `x`. + + y: Complex128Array + Output array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + y: Complex128Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ]; + > var bufY = [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ]; + > var x = new {{alias:@stdlib/array/complex128}}( bufX ); + > var y = new {{alias:@stdlib/array/complex128}}( bufY ); + > {{alias}}( x.length, x, 1, y, 1 ) + [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] + + // Using `N` and stride parameters: + > bufX = [ 4.0, 6.0, 100.0, 200.0, 12.0, 8.0, 300.0, 400.0 ]; + > x = new {{alias:@stdlib/array/complex128}}( bufX ); + > bufY = [ 1.0, 1.0, 500.0, 600.0, 2.0, 2.0, 700.0, 800.0 ]; + > y = new {{alias:@stdlib/array/complex128}}( bufY ); + > {{alias}}( 2, x, 2, y, 2 ) + [ 5.0, 1.0, 500.0, 600.0, 5.0, -1.0, 700.0, 800.0 ] + + // Using view offsets: + > var bufX = [ 100.0, 200.0, 4.0, 6.0, 12.0, 8.0, 16.0, 8.0, 300.0, 400.0 ]; + > var bufY = [ 500.0, 600.0, 700.0, 800.0, 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ]; + > var x0 = new {{alias:@stdlib/array/complex128}}( bufX ); + > var y0 = new {{alias:@stdlib/array/complex128}}( bufY ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetY = y0.BYTES_PER_ELEMENT * 2; + > var x1 = new {{alias:@stdlib/array/complex128}}( x0.buffer, offsetX ); + > var y1 = new {{alias:@stdlib/array/complex128}}( y0.buffer, offsetY ); + > {{alias}}( 3, x1, 1, y1, 1 ) + [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] + > y0 + [ 500.0,600.0,700.0,800.0, 5.0,1.0, 5.0,-1.0, 3.0,-1.0 ] + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Divides elements of a double-precision complex floating-point strided array + `x` by the corresponding elements of a double-precision complex floating- + point strided array `y` and assigns the results to `y` using alternative + indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Complex128Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Complex128Array + Output array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + y: Complex128Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ]; + > var bufY = [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ]; + > var x = new {{alias:@stdlib/array/complex128}}( bufX ); + > var y = new {{alias:@stdlib/array/complex128}}( bufY ); + > {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] + + // Using index offsets: + > bufX = [ 100.0, 200.0, 300.0, 400.0, 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ]; + > x = new {{alias:@stdlib/array/complex128}}( bufX ); + > bufY = [ 500.0, 600.0, 700.0, 800.0, 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ]; + > y = new {{alias:@stdlib/array/complex128}}( bufY ); + > {{alias}}.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ) + [ 500.0,600.0,700.0,800.0, 5.0,1.0, 5.0,-1.0, 3.0,-1.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/types/index.d.ts new file mode 100644 index 000000000000..5c7f2629ac26 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/types/index.d.ts @@ -0,0 +1,107 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Complex128Array } from '@stdlib/types/array'; + +/** +* Interface describing `zxdy`. +*/ +interface Routine { + /** + * Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + * var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + * + * zxdy( x.length, x, 1, y, 1 ); + * // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] + */ + ( N: number, x: Complex128Array, strideX: number, y: Complex128Array, strideY: number ): Complex128Array; + + /** + * Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting `x` index + * @param y - output array + * @param strideY - `y` stride length + * @param offsetY - starting `y` index + * @returns output array + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + * var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + * + * zxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] + */ + ndarray( N: number, x: Complex128Array, strideX: number, offsetX: number, y: Complex128Array, strideY: number, offsetY: number ): Complex128Array; +} + +/** +* Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param N - number of indexed elements +* @param x - input array +* @param strideX - `x` stride length +* @param y - output array +* @param strideY - `y` stride length +* @returns output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +* var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* zxdy( x.length, x, 1, y, 1 ); +* // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +* var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* zxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +*/ +declare var zxdy: Routine; + + +// EXPORTS // + +export = zxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/types/test.ts new file mode 100644 index 000000000000..c77c8035d0e1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/docs/types/test.ts @@ -0,0 +1,247 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import Complex128Array = require( '@stdlib/array/complex128' ); +import zxdy = require( './index' ); + + +// TESTS // + +// The function returns a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy( x.length, x, 1, y, 1 ); // $ExpectType Complex128Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy( '10', x, 1, y, 1 ); // $ExpectError + zxdy( true, x, 1, y, 1 ); // $ExpectError + zxdy( false, x, 1, y, 1 ); // $ExpectError + zxdy( null, x, 1, y, 1 ); // $ExpectError + zxdy( undefined, x, 1, y, 1 ); // $ExpectError + zxdy( [], x, 1, y, 1 ); // $ExpectError + zxdy( {}, x, 1, y, 1 ); // $ExpectError + zxdy( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Complex128Array... +{ + const y = new Complex128Array( 10 ); + + zxdy( 10, 10, 1, y, 1 ); // $ExpectError + zxdy( 10, '10', 1, y, 1 ); // $ExpectError + zxdy( 10, true, 1, y, 1 ); // $ExpectError + zxdy( 10, false, 1, y, 1 ); // $ExpectError + zxdy( 10, null, 1, y, 1 ); // $ExpectError + zxdy( 10, undefined, 1, y, 1 ); // $ExpectError + zxdy( 10, [ '1' ], 1, y, 1 ); // $ExpectError + zxdy( 10, {}, 1, y, 1 ); // $ExpectError + zxdy( 10, ( x: number ): number => x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy( x.length, x, '10', y, 1 ); // $ExpectError + zxdy( x.length, x, true, y, 1 ); // $ExpectError + zxdy( x.length, x, false, y, 1 ); // $ExpectError + zxdy( x.length, x, null, y, 1 ); // $ExpectError + zxdy( x.length, x, undefined, y, 1 ); // $ExpectError + zxdy( x.length, x, [], y, 1 ); // $ExpectError + zxdy( x.length, x, {}, y, 1 ); // $ExpectError + zxdy( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + + zxdy( 10, x, 1, 10, 1 ); // $ExpectError + zxdy( 10, x, 1, '10', 1 ); // $ExpectError + zxdy( 10, x, 1, true, 1 ); // $ExpectError + zxdy( 10, x, 1, false, 1 ); // $ExpectError + zxdy( 10, x, 1, null, 1 ); // $ExpectError + zxdy( 10, x, 1, undefined, 1 ); // $ExpectError + zxdy( 10, x, 1, [ '1' ], 1 ); // $ExpectError + zxdy( 10, x, 1, {}, 1 ); // $ExpectError + zxdy( 10, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy( x.length, x, 1, y, '10' ); // $ExpectError + zxdy( x.length, x, 1, y, true ); // $ExpectError + zxdy( x.length, x, 1, y, false ); // $ExpectError + zxdy( x.length, x, 1, y, null ); // $ExpectError + zxdy( x.length, x, 1, y, undefined ); // $ExpectError + zxdy( x.length, x, 1, y, [] ); // $ExpectError + zxdy( x.length, x, 1, y, {} ); // $ExpectError + zxdy( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy(); // $ExpectError + zxdy( x.length ); // $ExpectError + zxdy( x.length, x ); // $ExpectError + zxdy( x.length, x, 1 ); // $ExpectError + zxdy( x.length, x, 1, y ); // $ExpectError + zxdy( x.length, x, 1, y, 1, 10 ); // $ExpectError +} + +// Attached to the main export is an `ndarray` method which returns a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType Complex128Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy.ndarray( '10', x, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Complex128Array... +{ + const y = new Complex128Array( 10 ); + + zxdy.ndarray( 10, 10, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, '10', 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, true, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, false, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, null, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, undefined, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, [ '1' ], 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, {}, 1, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, ( x: number ): number => x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy.ndarray( x.length, x, '10', 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy.ndarray( x.length, x, 1, '10', y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + + zxdy.ndarray( 10, x, 1, 0, 10, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, x, 1, 0, '10', 1, 0 ); // $ExpectError + zxdy.ndarray( 10, x, 1, 0, true, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, x, 1, 0, false, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, x, 1, 0, null, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, x, 1, 0, undefined, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + zxdy.ndarray( 10, x, 1, 0, {}, 1, 0 ); // $ExpectError + zxdy.ndarray( 10, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy.ndarray( x.length, x, 1, 0, y, '10', 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy.ndarray( x.length, x, 1, 0, y, 1, '10' ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxdy.ndarray(); // $ExpectError + zxdy.ndarray( x.length ); // $ExpectError + zxdy.ndarray( x.length, x ); // $ExpectError + zxdy.ndarray( x.length, x, 1 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + zxdy.ndarray( x.length, x, 1, 0, y, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zxdy/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/zxdy/examples/c/example.c new file mode 100644 index 000000000000..d725c9c45cdd --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/examples/c/example.c @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zxdy.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/complex/float64/real.h" +#include "stdlib/complex/float64/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex128_t x[] = { + stdlib_complex128( 4.0, 6.0 ), + stdlib_complex128( 12.0, 8.0 ), + stdlib_complex128( 16.0, 8.0 ), + stdlib_complex128( 32.0, 16.0 ) + }; + stdlib_complex128_t y[] = { + stdlib_complex128( 1.0, 1.0 ), + stdlib_complex128( 2.0, 2.0 ), + stdlib_complex128( 4.0, 4.0 ), + stdlib_complex128( 8.0, 8.0 ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Divide elements of `x` by the corresponding elements of `y`: + stdlib_strided_zxdy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "y[ %i ] = %lf + %lfi\n", i, stdlib_complex128_real( y[ i ] ), stdlib_complex128_imag( y[ i ] ) ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/examples/index.js new file mode 100644 index 000000000000..9c4a623125df --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/examples/index.js @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var logEach = require( '@stdlib/console/log-each' ); +var zxdy = require( './../lib' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var ybuf = discreteUniform( 20, 1, 100, { + 'dtype': 'float64' +}); +var x = new Complex128Array( xbuf.buffer ); +var y = new Complex128Array( ybuf.buffer ); + +zxdy( x.length, x, 1, y, 1 ); +logEach( '%s', y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/zxdy/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var zxdy = require( '@stdlib/blas/ext/base/zxdy' ); +* +* var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +* var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* zxdy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var zxdy; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + zxdy = main; +} else { + zxdy = tmp; +} + + +// EXPORTS // + +module.exports = zxdy; + +// exports: { "ndarray": "zxdy.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/main.js new file mode 100644 index 000000000000..48885674c0eb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var zxdy = require( './zxdy.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( zxdy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = zxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/native.js new file mode 100644 index 000000000000..4c08cfc8d771 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var zxdy = require( './zxdy.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( zxdy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = zxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/ndarray.js new file mode 100644 index 000000000000..bde3adcf5aa2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/ndarray.js @@ -0,0 +1,118 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable max-len */ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var cdiv = require( '@stdlib/complex/float64/base/div' ).assign; + + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex128Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +* var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* zxdy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +*/ +function zxdy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var xview; + var yview; + var ix; + var iy; + var sx; + var sy; + var m; + var i; + + if ( N <= 0 ) { + return y; + } + + // Reinterpret the complex input arrays as real-valued arrays: + xview = reinterpret( x, 0 ); + yview = reinterpret( y, 0 ); + + // Adjust the strides and offsets according to the real-valued arrays: + ix = offsetX * 2; + iy = offsetY * 2; + sx = strideX * 2; + sy = strideY * 2; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideY === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + cdiv( xview[ ix ], xview[ ix+1 ], yview[ iy ], yview[ iy+1 ], yview, 1, iy ); + ix += sx; + iy += sy; + } + } + if ( N < M ) { + return y; + } + for ( i = m; i < N; i += M ) { + cdiv( xview[ ix ], xview[ ix+1 ], yview[ iy ], yview[ iy+1 ], yview, 1, iy ); + cdiv( xview[ ix+2 ], xview[ ix+3 ], yview[ iy+2 ], yview[ iy+3 ], yview, 1, iy+2 ); + cdiv( xview[ ix+4 ], xview[ ix+5 ], yview[ iy+4 ], yview[ iy+5 ], yview, 1, iy+4 ); + cdiv( xview[ ix+6 ], xview[ ix+7 ], yview[ iy+6 ], yview[ iy+7 ], yview, 1, iy+6 ); + cdiv( xview[ ix+8 ], xview[ ix+9 ], yview[ iy+8 ], yview[ iy+9 ], yview, 1, iy+8 ); + ix += M * 2; + iy += M * 2; + } + return y; + } + for ( i = 0; i < N; i++ ) { + cdiv( xview[ ix ], xview[ ix+1 ], yview[ iy ], yview[ iy+1 ], yview, 1, iy ); + ix += sx; + iy += sy; + } + return y; +} + + +// EXPORTS // + +module.exports = zxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/ndarray.native.js new file mode 100644 index 000000000000..24d25a31056d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/ndarray.native.js @@ -0,0 +1,60 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex128Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +* var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* zxdy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +*/ +function zxdy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var viewX = reinterpret( x, 0 ); + var viewY = reinterpret( y, 0 ); + addon.ndarray( N, viewX, strideX, offsetX, viewY, strideY, offsetY ); + return y; +} + + +// EXPORTS // + +module.exports = zxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/zxdy.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/zxdy.js new file mode 100644 index 000000000000..a3e39de7078e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/zxdy.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Complex128Array} y - output array +* @param {integer} strideY - `y` stride length +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +* var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* zxdy( x.length, x, 1, y, 1 ); +* // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +*/ +function zxdy( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = zxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/zxdy.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/zxdy.native.js new file mode 100644 index 000000000000..da11193ea533 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/lib/zxdy.native.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Complex128Array} y - output array +* @param {integer} strideY - `y` stride length +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); +* var y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); +* +* zxdy( x.length, x, 1, y, 1 ); +* // y => [ 5.0, 1.0, 5.0, -1.0, 3.0, -1.0 ] +*/ +function zxdy( N, x, strideX, y, strideY ) { + var viewX = reinterpret( x, 0 ); + var viewY = reinterpret( y, 0 ); + addon( N, viewX, strideX, viewY, strideY ); + return y; +} + + +// EXPORTS // + +module.exports = zxdy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/zxdy/manifest.json new file mode 100644 index 000000000000..9c77abf3ddfb --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/manifest.json @@ -0,0 +1,108 @@ +{ + "options": { + "task": "build", + "wasm": false + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/base/div", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-complex128array" + ] + }, + { + "task": "benchmark", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/base/div", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/base/div", + "@stdlib/complex/float64/real", + "@stdlib/complex/float64/imag", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "build", + "wasm": true, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/base/div", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/package.json b/lib/node_modules/@stdlib/blas/ext/base/zxdy/package.json new file mode 100644 index 000000000000..16ce305b60ae --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/package.json @@ -0,0 +1,83 @@ +{ + "name": "@stdlib/blas/ext/base/zxdy", + "version": "0.0.0", + "description": "Divide elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assign the results to `y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "linear", + "algebra", + "subroutines", + "divide", + "division", + "transform", + "strided", + "array", + "ndarray", + "vector", + "xdy", + "zxdy", + "complex", + "complex128", + "complex128array", + "float64", + "double" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zxdy/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/zxdy/src/addon.c new file mode 100644 index 000000000000..4d0c3225c45f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/src/addon.c @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zxdy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_complex128array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, Y, N, strideY, argv, 3 ); + API_SUFFIX(stdlib_strided_zxdy)( N, (stdlib_complex128_t *)X, strideX, (stdlib_complex128_t *)Y, strideY ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 7 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_INT64( env, offsetY, argv, 6 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, Y, N, strideY, argv, 4 ); + API_SUFFIX(stdlib_strided_zxdy_ndarray)( N, (stdlib_complex128_t *)X, strideX, offsetX, (stdlib_complex128_t *)Y, strideY, offsetY ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/zxdy/src/main.c new file mode 100644 index 000000000000..77642d39bb91 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/src/main.c @@ -0,0 +1,96 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zxdy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/complex/float64/base/div.h" +#include "stdlib/strided/base/stride2offset.h" + +static const CBLAS_INT M = 5; + +/** +* Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param Y output array +* @param strideY stride length for `Y` +*/ +void API_SUFFIX(stdlib_strided_zxdy)( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, stdlib_complex128_t *Y, const CBLAS_INT strideY ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oy = stdlib_strided_stride2offset( N, strideY ); + API_SUFFIX(stdlib_strided_zxdy_ndarray)( N, X, strideX, ox, Y, strideY, oy ); +} + +/** +* Divides elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param offsetX starting index for `X` +* @param Y output array +* @param strideY stride length for `Y` +* @param offsetY starting index for `Y` +*/ +void API_SUFFIX(stdlib_strided_zxdy_ndarray)( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex128_t *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ) { + CBLAS_INT ix; + CBLAS_INT iy; + CBLAS_INT m; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + iy = offsetY; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX == 1 && strideY == 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + Y[ iy ] = stdlib_base_complex128_div( X[ ix ], Y[ iy ] ); + ix += strideX; + iy += strideY; + } + } + if ( N < M ) { + return; + } + for ( i = m; i < N; i += M ) { + Y[ iy ] = stdlib_base_complex128_div( X[ ix ], Y[ iy ] ); + Y[ iy+1 ] = stdlib_base_complex128_div( X[ ix+1 ], Y[ iy+1 ] ); + Y[ iy+2 ] = stdlib_base_complex128_div( X[ ix+2 ], Y[ iy+2 ] ); + Y[ iy+3 ] = stdlib_base_complex128_div( X[ ix+3 ], Y[ iy+3 ] ); + Y[ iy+4 ] = stdlib_base_complex128_div( X[ ix+4 ], Y[ iy+4 ] ); + ix += M; + iy += M; + } + return; + } + for ( i = 0; i < N; i++ ) { + Y[ iy ] = stdlib_base_complex128_div( X[ ix ], Y[ iy ] ); + ix += strideX; + iy += strideY; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.js new file mode 100644 index 000000000000..bc6877df1d0a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var zxdy = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof zxdy.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var zxdy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zxdy, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var zxdy; + var main; + + main = require( './../lib/zxdy.js' ); + + zxdy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zxdy, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.ndarray.js new file mode 100644 index 000000000000..86708894a971 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.ndarray.js @@ -0,0 +1,321 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var cdiv = require( '@stdlib/complex/float64/base/div' ); +var zxdy = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( zxdy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 4.0, 2.0, 12.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0 ] ); + expected = new Complex128Array([ + // (4.0+2.0i) / (1.0+1.0i) + 3.0, + -1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0 + ]); + + zxdy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + out = zxdy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + zxdy( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + zxdy( -4, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 4.0, // 0 + 6.0, // 0 + 0.0, + 0.0, + 12.0, // 1 + 8.0, // 1 + 0.0, + 0.0, + 16.0, // 2 + 8.0 // 2 + ]); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array([ + 1.0, // 0 + 1.0, // 0 + 4.0, + 5.0, + 2.0, // 1 + 2.0, // 1 + 8.0, + 9.0, + 4.0, // 2 + 4.0 // 2 + ]); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + 4.0, + 5.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + 8.0, + 9.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 16.0, // 2 + 8.0, // 2 + 0.0, + 0.0, + 12.0, // 1 + 8.0, // 1 + 0.0, + 0.0, + 4.0, // 0 + 6.0 // 0 + ]); + y = new Complex128Array([ + 4.0, // 2 + 4.0, // 2 + 2.0, // 1 + 2.0, // 1 + 1.0, // 0 + 1.0 // 0 + ]); + expected = new Complex128Array([ + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0 + ]); + + zxdy( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex128Array([ + 10.0, + 0.0, + 4.0, // 0 + 6.0, // 0 + 12.0, // 1 + 8.0, // 1 + 16.0, // 2 + 8.0 // 2 + ]); + y0 = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 1.0, // 0 + 1.0, // 0 + 2.0, // 1 + 2.0, // 1 + 4.0, // 2 + 4.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x1, 1, 0, y1, 1, 0 ); + t.strictEqual( isSameComplex128Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex128Array( 100 ); + y = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cdiv( xv, yv ), i ); + } + zxdy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + y = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cdiv( xv, yv ), i ); + } + zxdy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.ndarray.native.js new file mode 100644 index 000000000000..b051c743d7ed --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.ndarray.native.js @@ -0,0 +1,330 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var cdiv = require( '@stdlib/complex/float64/base/div' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var zxdy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zxdy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', opts, function test( t ) { + t.strictEqual( zxdy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 4.0, 2.0, 12.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0 ] ); + expected = new Complex128Array([ + // (4.0+2.0i) / (1.0+1.0i) + 3.0, + -1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0 + ]); + + zxdy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + out = zxdy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + zxdy( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + zxdy( -4, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 4.0, // 0 + 6.0, // 0 + 0.0, + 0.0, + 12.0, // 1 + 8.0, // 1 + 0.0, + 0.0, + 16.0, // 2 + 8.0 // 2 + ]); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array([ + 1.0, // 0 + 1.0, // 0 + 4.0, + 5.0, + 2.0, // 1 + 2.0, // 1 + 8.0, + 9.0, + 4.0, // 2 + 4.0 // 2 + ]); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + 4.0, + 5.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + 8.0, + 9.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 16.0, // 2 + 8.0, // 2 + 0.0, + 0.0, + 12.0, // 1 + 8.0, // 1 + 0.0, + 0.0, + 4.0, // 0 + 6.0 // 0 + ]); + y = new Complex128Array([ + 4.0, // 2 + 4.0, // 2 + 2.0, // 1 + 2.0, // 1 + 1.0, // 0 + 1.0 // 0 + ]); + expected = new Complex128Array([ + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0 + ]); + + zxdy( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex128Array([ + 10.0, + 0.0, + 4.0, // 0 + 6.0, // 0 + 12.0, // 1 + 8.0, // 1 + 16.0, // 2 + 8.0 // 2 + ]); + y0 = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 1.0, // 0 + 1.0, // 0 + 2.0, // 1 + 2.0, // 1 + 4.0, // 2 + 4.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x1, 1, 0, y1, 1, 0 ); + t.strictEqual( isSameComplex128Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex128Array( 100 ); + y = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cdiv( xv, yv ), i ); + } + zxdy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + y = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cdiv( xv, yv ), i ); + } + zxdy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.zxdy.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.zxdy.js new file mode 100644 index 000000000000..dfbcb6a8c937 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.zxdy.js @@ -0,0 +1,321 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var cdiv = require( '@stdlib/complex/float64/base/div' ); +var zxdy = require( './../lib/zxdy.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( zxdy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 4.0, 2.0, 12.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0 ] ); + expected = new Complex128Array([ + // (4.0+2.0i) / (1.0+1.0i) + 3.0, + -1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0 + ]); + + zxdy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + out = zxdy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + zxdy( 0, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + zxdy( -4, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 4.0, // 0 + 6.0, // 0 + 0.0, + 0.0, + 12.0, // 1 + 8.0, // 1 + 0.0, + 0.0, + 16.0, // 2 + 8.0 // 2 + ]); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x, 2, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array([ + 1.0, // 0 + 1.0, // 0 + 4.0, + 5.0, + 2.0, // 1 + 2.0, // 1 + 8.0, + 9.0, + 4.0, // 2 + 4.0 // 2 + ]); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + 4.0, + 5.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + 8.0, + 9.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x, 1, y, 2 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 16.0, // 2 + 8.0, // 2 + 0.0, + 0.0, + 12.0, // 1 + 8.0, // 1 + 0.0, + 0.0, + 4.0, // 0 + 6.0 // 0 + ]); + y = new Complex128Array([ + 4.0, // 2 + 4.0, // 2 + 2.0, // 1 + 2.0, // 1 + 1.0, // 0 + 1.0 // 0 + ]); + expected = new Complex128Array([ + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0 + ]); + + zxdy( 3, x, -2, y, -1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex128Array([ + 10.0, + 0.0, + 4.0, // 0 + 6.0, // 0 + 12.0, // 1 + 8.0, // 1 + 16.0, // 2 + 8.0 // 2 + ]); + y0 = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 1.0, // 0 + 1.0, // 0 + 2.0, // 1 + 2.0, // 1 + 4.0, // 2 + 4.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x1, 1, y1, 1 ); + t.strictEqual( isSameComplex128Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex128Array( 100 ); + y = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cdiv( xv, yv ), i ); + } + zxdy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + y = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cdiv( xv, yv ), i ); + } + zxdy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.zxdy.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.zxdy.native.js new file mode 100644 index 000000000000..ae0c3ad9055a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxdy/test/test.zxdy.native.js @@ -0,0 +1,330 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var cdiv = require( '@stdlib/complex/float64/base/div' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var zxdy = tryRequire( resolve( __dirname, './../lib/zxdy.native.js' ) ); +var opts = { + 'skip': ( zxdy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxdy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( zxdy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 4.0, 2.0, 12.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0 ] ); + expected = new Complex128Array([ + // (4.0+2.0i) / (1.0+1.0i) + 3.0, + -1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0 + ]); + + zxdy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + out = zxdy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + zxdy( 0, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + zxdy( -4, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 4.0, // 0 + 6.0, // 0 + 0.0, + 0.0, + 12.0, // 1 + 8.0, // 1 + 0.0, + 0.0, + 16.0, // 2 + 8.0 // 2 + ]); + y = new Complex128Array( [ 1.0, 1.0, 2.0, 2.0, 4.0, 4.0 ] ); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x, 2, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 4.0, 6.0, 12.0, 8.0, 16.0, 8.0 ] ); + y = new Complex128Array([ + 1.0, // 0 + 1.0, // 0 + 4.0, + 5.0, + 2.0, // 1 + 2.0, // 1 + 8.0, + 9.0, + 4.0, // 2 + 4.0 // 2 + ]); + expected = new Complex128Array([ + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + 4.0, + 5.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + 8.0, + 9.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x, 1, y, 2 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 16.0, // 2 + 8.0, // 2 + 0.0, + 0.0, + 12.0, // 1 + 8.0, // 1 + 0.0, + 0.0, + 4.0, // 0 + 6.0 // 0 + ]); + y = new Complex128Array([ + 4.0, // 2 + 4.0, // 2 + 2.0, // 1 + 2.0, // 1 + 1.0, // 0 + 1.0 // 0 + ]); + expected = new Complex128Array([ + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0 + ]); + + zxdy( 3, x, -2, y, -1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex128Array([ + 10.0, + 0.0, + 4.0, // 0 + 6.0, // 0 + 12.0, // 1 + 8.0, // 1 + 16.0, // 2 + 8.0 // 2 + ]); + y0 = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 1.0, // 0 + 1.0, // 0 + 2.0, // 1 + 2.0, // 1 + 4.0, // 2 + 4.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (4.0+6.0i) / (1.0+1.0i) + 5.0, + 1.0, + // (12.0+8.0i) / (2.0+2.0i) + 5.0, + -1.0, + // (16.0+8.0i) / (4.0+4.0i) + 3.0, + -1.0 + ]); + + zxdy( 3, x1, 1, y1, 1 ); + t.strictEqual( isSameComplex128Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently divides elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex128Array( 100 ); + y = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cdiv( xv, yv ), i ); + } + zxdy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + y = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cdiv( xv, yv ), i ); + } + zxdy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/README.md b/lib/node_modules/@stdlib/blas/ext/base/zxmy/README.md new file mode 100644 index 000000000000..20b72703c3c0 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/README.md @@ -0,0 +1,347 @@ + + +# zxmy + +> Multiply elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assign the results to `y`. + +
+ +This BLAS extension implements the operation + + + +```math +\mathbf{y} = \mathbf{x} \odot \mathbf{y} +``` + + + +
+ + + +
+ +## Usage + +```javascript +var zxmy = require( '@stdlib/blas/ext/base/zxmy' ); +``` + +#### zxmy( N, x, strideX, y, strideY ) + +Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + +zxmy( x.length, x, 1, y, 1 ); +// y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: input [`Complex128Array`][@stdlib/array/complex128]. +- **strideX**: stride length for `x`. +- **y**: output [`Complex128Array`][@stdlib/array/complex128]. +- **strideY**: stride length for `y`. + +The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to multiply every other element of `x` by every other element of `y`: + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ] ); +var y = new Complex128Array( [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0 ] ); + +zxmy( 2, x, 2, y, 2 ); +// y => [ -9.0, 22.0, 9.0, 10.0, -17.0, 126.0, 13.0, 14.0 ] +``` + +Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. + + + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +// Initial arrays... +var x0 = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); +var y0 = new Complex128Array( [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0 ] ); + +// Create offset views... +var x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element +var y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); // start at 3rd element + +zxmy( 3, x1, 1, y1, 1 ); +// y0 => [ 7.0, 8.0, 9.0, 10.0, -15.0, 80.0, -19.0, 148.0, -23.0, 232.0 ] +``` + +#### zxmy.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + +Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + +zxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +// y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. +- **offsetY**: starting index for `y`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, to multiply the last three elements of `x` by the last three elements of `y`: + + + +```javascript +var Complex128Array = require( '@stdlib/array/complex128' ); + +var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ] ); +var y = new Complex128Array( [ 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0 ] ); + +zxmy.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ); +// y => [ 11.0, 12.0, 13.0, 14.0, -21.0, 170.0, -25.0, 262.0, -29.0, 370.0 ] +``` + +
+ + + +
+ +## Notes + +- If `N <= 0`, both functions return `y` unchanged. + +
+ + + +
+ +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var logEach = require( '@stdlib/console/log-each' ); +var zxmy = require( '@stdlib/blas/ext/base/zxmy' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var ybuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var x = new Complex128Array( xbuf.buffer ); +var y = new Complex128Array( ybuf.buffer ); + +zxmy( x.length, x, 1, y, 1 ); +logEach( '%s', y ); +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/blas/ext/base/zxmy.h" +``` + +#### stdlib_strided_zxmy( N, \*X, strideX, \*Y, strideY ) + +Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. + +```c +#include "stdlib/complex/float64/ctor.h" + +const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 }; +double y[] = { 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 }; + +stdlib_strided_zxmy( 3, (stdlib_complex128_t *)x, 1, (stdlib_complex128_t *)y, 1 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **Y**: `[inout] stdlib_complex128_t*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. + +```c +void stdlib_strided_zxmy( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, stdlib_complex128_t *Y, const CBLAS_INT strideY ); +``` + + + +#### stdlib_strided_zxmy_ndarray( N, \*X, strideX, offsetX, \*Y, strideY, offsetY ) + + + +Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + +```c +#include "stdlib/complex/float64/ctor.h" + +const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 }; +double y[] = { 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 }; + +stdlib_strided_zxmy_ndarray( 3, (stdlib_complex128_t *)x, 1, 0, (stdlib_complex128_t *)y, 1, 0 ); +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] stdlib_complex128_t*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. +- **Y**: `[inout] stdlib_complex128_t*` output array. +- **strideY**: `[in] CBLAS_INT` stride length for `Y`. +- **offsetY**: `[in] CBLAS_INT` starting index for `Y`. + +```c +void stdlib_strided_zxmy_ndarray( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex128_t *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/blas/ext/base/zxmy.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/complex/float64/real.h" +#include "stdlib/complex/float64/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex128_t x[] = { + stdlib_complex128( 1.0, 2.0 ), + stdlib_complex128( 3.0, 4.0 ), + stdlib_complex128( 5.0, 6.0 ), + stdlib_complex128( 7.0, 8.0 ) + }; + stdlib_complex128_t y[] = { + stdlib_complex128( 2.0, 3.0 ), + stdlib_complex128( 4.0, 5.0 ), + stdlib_complex128( 6.0, 7.0 ), + stdlib_complex128( 8.0, 9.0 ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Multiply `x` by `y` and assign the results to `y`: + stdlib_strided_zxmy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "y[ %i ] = %lf + %lfi\n", i, stdlib_complex128_real( y[ i ] ), stdlib_complex128_imag( y[ i ] ) ); + } +} +``` + +
+ + + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.js new file mode 100644 index 000000000000..5151fa43100f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.js @@ -0,0 +1,112 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zxmy = require( './../lib/zxmy.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, -0.5, 0.5, options ); + x = new Complex128Array( xbuf.buffer ); + y = new Complex128Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zxmy( x.length, x, 1, y, 1 ); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.native.js new file mode 100644 index 000000000000..888079d3a7cc --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.native.js @@ -0,0 +1,117 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zxmy = tryRequire( resolve( __dirname, './../lib/zxmy.native.js' ) ); +var opts = { + 'skip': ( zxmy instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, -0.5, 0.5, options ); + x = new Complex128Array( xbuf.buffer ); + y = new Complex128Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zxmy( x.length, x, 1, y, 1 ); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..829b1b6bc748 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.ndarray.js @@ -0,0 +1,112 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var zxmy = require( './../lib/ndarray.js' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, -0.5, 0.5, options ); + x = new Complex128Array( xbuf.buffer ); + y = new Complex128Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zxmy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:ndarray:len=%d', pkg, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.ndarray.native.js new file mode 100644 index 000000000000..9ca14b793a6a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/benchmark.ndarray.native.js @@ -0,0 +1,117 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var bench = require( '@stdlib/bench' ); +var uniform = require( '@stdlib/random/array/uniform' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var tryRequire = require( '@stdlib/utils/try-require' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; + + +// VARIABLES // + +var zxmy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zxmy instanceof Error ) +}; +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Create a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var xbuf; + var ybuf; + var x; + var y; + + xbuf = uniform( len*2, -0.5, 0.5, options ); + ybuf = uniform( len*2, -0.5, 0.5, options ); + x = new Complex128Array( xbuf.buffer ); + y = new Complex128Array( ybuf.buffer ); + + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + zxmy( x.length, x, 1, 0, y, 1, 0 ); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( ybuf[ i%(len*2) ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s::native:ndarray:len=%d', pkg, len ), opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/c/Makefile new file mode 100644 index 000000000000..0756dc7da20a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := benchmark.length.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/blas/ext/base/zxmy/benchmark/c/benchmark.length.c b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/c/benchmark.length.c new file mode 100644 index 000000000000..f398d3f3699f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/benchmark/c/benchmark.length.c @@ -0,0 +1,210 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zxmy.h" +#include "stdlib/complex/float64/ctor.h" +#include +#include +#include +#include +#include + +#define NAME "zxmy" +#define ITERATIONS 10000000 +#define REPEATS 3 +#define MIN 1 +#define MAX 6 + +/** +* 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 iterations number of iterations +* @param elapsed elapsed time in seconds +*/ +static void print_results( int iterations, 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 double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark1( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int i; + + x = (double *)malloc( len * 2 * sizeof( double ) ); + y = (double *)malloc( len * 2 * sizeof( double ) ); + + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -0.5, 0.5 ); + y[ i ] = random_uniform( -0.5, 0.5 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_zxmy( len, (stdlib_complex128_t *)x, 1, (stdlib_complex128_t *)y, 1 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Runs a benchmark. +* +* @param iterations number of iterations +* @param len array length +* @return elapsed time in seconds +*/ +static double benchmark2( int iterations, int len ) { + double elapsed; + double *x; + double *y; + double t; + int i; + + x = (double *)malloc( len * 2 * sizeof( double ) ); + y = (double *)malloc( len * 2 * sizeof( double ) ); + + for ( i = 0; i < len*2; i++ ) { + x[ i ] = random_uniform( -0.5, 0.5 ); + y[ i ] = random_uniform( -0.5, 0.5 ); + } + t = tic(); + for ( i = 0; i < iterations; i++ ) { + // cppcheck-suppress uninitvar + stdlib_strided_zxmy_ndarray( len, (stdlib_complex128_t *)x, 1, 0, (stdlib_complex128_t *)y, 1, 0 ); + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + break; + } + } + elapsed = tic() - t; + if ( y[ 0 ] != y[ 0 ] ) { + printf( "should not return NaN\n" ); + } + free( x ); + free( y ); + return elapsed; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + double elapsed; + int count; + int iter; + int len; + int i; + int j; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + print_version(); + count = 0; + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:len=%d\n", NAME, len ); + elapsed = benchmark1( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + for ( i = MIN; i <= MAX; i++ ) { + len = pow( 10, i ); + iter = ITERATIONS / pow( 10, i-1 ); + for ( j = 0; j < REPEATS; j++ ) { + count += 1; + printf( "# c::%s:ndarray:len=%d\n", NAME, len ); + elapsed = benchmark2( iter, len ); + print_results( iter, elapsed ); + printf( "ok %d benchmark finished\n", count ); + } + } + print_summary( count, count ); +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/binding.gyp b/lib/node_modules/@stdlib/blas/ext/base/zxmy/binding.gyp new file mode 100644 index 000000000000..60dce9d0b31a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/binding.gyp @@ -0,0 +1,265 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A `.gyp` file for building a Node.js native add-on. +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # List of files to include in this file: + 'includes': [ + './include.gypi', + ], + + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Target name should match the add-on export name: + 'addon_target_name%': 'addon', + + # Fortran compiler (to override -Dfortran_compiler=): + 'fortran_compiler%': 'gfortran', + + # Fortran compiler flags: + 'fflags': [ + # Specify the Fortran standard to which a program is expected to conform: + '-std=f95', + + # Indicate that the layout is free-form source code: + '-ffree-form', + + # Aggressive optimization: + '-O3', + + # Enable commonly used warning options: + '-Wall', + + # Warn if source code contains problematic language features: + '-Wextra', + + # Warn if a procedure is called without an explicit interface: + '-Wimplicit-interface', + + # Do not transform names of entities specified in Fortran source files by appending underscores (i.e., don't mangle names, thus allowing easier usage in C wrappers): + '-fno-underscoring', + + # Warn if source code contains Fortran 95 extensions and C-language constructs: + '-pedantic', + + # Compile but do not link (output is an object file): + '-c', + ], + + # 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 + + # Define custom build actions for particular inputs: + 'rules': [ + { + # Define a rule for processing Fortran files: + 'extension': 'f', + + # Define the pathnames to be used as inputs when performing processing: + 'inputs': [ + # Full path of the current input: + '<(RULE_INPUT_PATH)' + ], + + # Define the outputs produced during processing: + 'outputs': [ + # Store an output object file in a directory for placing intermediate results (only accessible within a single target): + '<(INTERMEDIATE_DIR)/<(RULE_INPUT_ROOT).<(obj)' + ], + + # Define the rule for compiling Fortran based on the host OS: + 'conditions': [ + [ + 'OS=="win"', + + # Rule to compile Fortran on Windows: + { + 'rule_name': 'compile_fortran_windows', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Windows...', + + 'process_outputs_as_sources': 0, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + }, + + # Rule to compile Fortran on non-Windows: + { + 'rule_name': 'compile_fortran_linux', + 'message': 'Compiling Fortran file <(RULE_INPUT_PATH) on Linux...', + + 'process_outputs_as_sources': 1, + + # Define the command-line invocation: + 'action': [ + '<(fortran_compiler)', + '<@(fflags)', + '-fPIC', # generate platform-independent code + '<@(_inputs)', + '-o', + '<@(_outputs)', + ], + } + ], # end condition (OS=="win") + ], # end conditions + }, # end rule (extension=="f") + ], # end rules + }, # 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/blas/ext/base/zxmy/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/zxmy/docs/repl.txt new file mode 100644 index 000000000000..cab55887c141 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/docs/repl.txt @@ -0,0 +1,127 @@ + +{{alias}}( N, x, strideX, y, strideY ) + Multiplies elements of a double-precision complex floating-point strided + array `x` by the corresponding elements of a double-precision complex + floating-point strided array `y` and assigns the results to `y`. + + The `N` and stride parameters determine which elements in the strided arrays + are accessed at runtime. + + Indexing is relative to the first index. To introduce an offset, use typed + array views. + + If `N <= 0`, the function returns `y` unchanged. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Complex128Array + Input array. + + strideX: integer + Stride length for `x`. + + y: Complex128Array + Output array. + + strideY: integer + Stride length for `y`. + + Returns + ------- + y: Complex128Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var bufY = [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]; + > var x = new {{alias:@stdlib/array/complex128}}( bufX ); + > var y = new {{alias:@stdlib/array/complex128}}( bufY ); + > {{alias}}( x.length, x, 1, y, 1 ) + [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + + // Using `N` and stride parameters: + > bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 ]; + > x = new {{alias:@stdlib/array/complex128}}( bufX ); + > bufY = [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0 ]; + > y = new {{alias:@stdlib/array/complex128}}( bufY ); + > {{alias}}( 2, x, 2, y, 2 ) + [ -9.0, 22.0, 9.0, 10.0, -17.0, 126.0, 13.0, 14.0 ] + + // Using view offsets: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 ]; + > var bufY = [ 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0 ]; + > var x0 = new {{alias:@stdlib/array/complex128}}( bufX ); + > var y0 = new {{alias:@stdlib/array/complex128}}( bufY ); + > var offsetX = x0.BYTES_PER_ELEMENT * 1; + > var offsetY = y0.BYTES_PER_ELEMENT * 2; + > var x1 = new {{alias:@stdlib/array/complex128}}( x0.buffer, offsetX ); + > var y1 = new {{alias:@stdlib/array/complex128}}( y0.buffer, offsetY ); + > {{alias}}( 3, x1, 1, y1, 1 ) + [ -15.0, 80.0, -19.0, 148.0, -23.0, 232.0 ] + > y0 + [ 7, 8, 9, 10, -15, 80, -19, 148, -23, 232 ] + + +{{alias}}.ndarray( N, x, strideX, offsetX, y, strideY, offsetY ) + Multiplies elements of a double-precision complex floating-point strided + array `x` by the corresponding elements of a double-precision complex + floating-point strided array `y` and assigns the results to `y` using + alternative indexing semantics. + + While typed array views mandate a view offset based on the underlying + buffer, the offset parameters support indexing semantics based on starting + indices. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Complex128Array + Input array. + + strideX: integer + Stride length for `x`. + + offsetX: integer + Starting index for `x`. + + y: Complex128Array + Output array. + + strideY: integer + Stride length for `y`. + + offsetY: integer + Starting index for `y`. + + Returns + ------- + y: Complex128Array + Output array. + + Examples + -------- + // Standard Usage: + > var bufX = [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ]; + > var bufY = [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]; + > var x = new {{alias:@stdlib/array/complex128}}( bufX ); + > var y = new {{alias:@stdlib/array/complex128}}( bufY ); + > {{alias}}.ndarray( x.length, x, 1, 0, y, 1, 0 ) + [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + + // Using index offsets: + > bufX = [ 1.0, 0.0, 2.0, 0.0, 3.0, 0.0, 4.0, 0.0, 5.0, 0.0 ]; + > x = new {{alias:@stdlib/array/complex128}}( bufX ); + > bufY = [ 6.0, 0.0, 7.0, 0.0, 8.0, 0.0, 9.0, 0.0, 10.0, 0.0 ]; + > y = new {{alias:@stdlib/array/complex128}}( bufY ); + > {{alias}}.ndarray( 3, x, 1, x.length-3, y, 1, y.length-3 ) + [ 6.0, 0.0, 7.0, 0.0, 24.0, 0.0, 36.0, 0.0, 50.0, 0.0 ] + + See Also + -------- diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/ext/base/zxmy/docs/types/index.d.ts new file mode 100644 index 000000000000..b5e9b115512b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/docs/types/index.d.ts @@ -0,0 +1,107 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Complex128Array } from '@stdlib/types/array'; + +/** +* Interface describing `zxmy`. +*/ +interface Routine { + /** + * Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param y - output array + * @param strideY - `y` stride length + * @returns output array + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + * + * zxmy( x.length, x, 1, y, 1 ); + * // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + */ + ( N: number, x: Complex128Array, strideX: number, y: Complex128Array, strideY: number ): Complex128Array; + + /** + * Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @param offsetX - starting `x` index + * @param y - output array + * @param strideY - `y` stride length + * @param offsetY - starting `y` index + * @returns output array + * + * @example + * var Complex128Array = require( '@stdlib/array/complex128' ); + * + * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + * var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + * + * zxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); + * // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] + */ + ndarray( N: number, x: Complex128Array, strideX: number, offsetX: number, y: Complex128Array, strideY: number, offsetY: number ): Complex128Array; +} + +/** +* Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param N - number of indexed elements +* @param x - input array +* @param strideX - `x` stride length +* @param y - output array +* @param strideY - `y` stride length +* @returns output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* zxmy( x.length, x, 1, y, 1 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* zxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +declare var zxmy: Routine; + + +// EXPORTS // + +export = zxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/docs/types/test.ts b/lib/node_modules/@stdlib/blas/ext/base/zxmy/docs/types/test.ts new file mode 100644 index 000000000000..28db973116f5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/docs/types/test.ts @@ -0,0 +1,247 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import Complex128Array = require( '@stdlib/array/complex128' ); +import zxmy = require( './index' ); + + +// TESTS // + +// The function returns a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy( x.length, x, 1, y, 1 ); // $ExpectType Complex128Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy( '10', x, 1, y, 1 ); // $ExpectError + zxmy( true, x, 1, y, 1 ); // $ExpectError + zxmy( false, x, 1, y, 1 ); // $ExpectError + zxmy( null, x, 1, y, 1 ); // $ExpectError + zxmy( undefined, x, 1, y, 1 ); // $ExpectError + zxmy( [], x, 1, y, 1 ); // $ExpectError + zxmy( {}, x, 1, y, 1 ); // $ExpectError + zxmy( ( x: number ): number => x, x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a Complex128Array... +{ + const y = new Complex128Array( 10 ); + + zxmy( 10, 10, 1, y, 1 ); // $ExpectError + zxmy( 10, '10', 1, y, 1 ); // $ExpectError + zxmy( 10, true, 1, y, 1 ); // $ExpectError + zxmy( 10, false, 1, y, 1 ); // $ExpectError + zxmy( 10, null, 1, y, 1 ); // $ExpectError + zxmy( 10, undefined, 1, y, 1 ); // $ExpectError + zxmy( 10, [ '1' ], 1, y, 1 ); // $ExpectError + zxmy( 10, {}, 1, y, 1 ); // $ExpectError + zxmy( 10, ( x: number ): number => x, 1, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy( x.length, x, '10', y, 1 ); // $ExpectError + zxmy( x.length, x, true, y, 1 ); // $ExpectError + zxmy( x.length, x, false, y, 1 ); // $ExpectError + zxmy( x.length, x, null, y, 1 ); // $ExpectError + zxmy( x.length, x, undefined, y, 1 ); // $ExpectError + zxmy( x.length, x, [], y, 1 ); // $ExpectError + zxmy( x.length, x, {}, y, 1 ); // $ExpectError + zxmy( x.length, x, ( x: number ): number => x, y, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + + zxmy( 10, x, 1, 10, 1 ); // $ExpectError + zxmy( 10, x, 1, '10', 1 ); // $ExpectError + zxmy( 10, x, 1, true, 1 ); // $ExpectError + zxmy( 10, x, 1, false, 1 ); // $ExpectError + zxmy( 10, x, 1, null, 1 ); // $ExpectError + zxmy( 10, x, 1, undefined, 1 ); // $ExpectError + zxmy( 10, x, 1, [ '1' ], 1 ); // $ExpectError + zxmy( 10, x, 1, {}, 1 ); // $ExpectError + zxmy( 10, x, 1, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fifth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy( x.length, x, 1, y, '10' ); // $ExpectError + zxmy( x.length, x, 1, y, true ); // $ExpectError + zxmy( x.length, x, 1, y, false ); // $ExpectError + zxmy( x.length, x, 1, y, null ); // $ExpectError + zxmy( x.length, x, 1, y, undefined ); // $ExpectError + zxmy( x.length, x, 1, y, [] ); // $ExpectError + zxmy( x.length, x, 1, y, {} ); // $ExpectError + zxmy( x.length, x, 1, y, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy(); // $ExpectError + zxmy( x.length ); // $ExpectError + zxmy( x.length, x ); // $ExpectError + zxmy( x.length, x, 1 ); // $ExpectError + zxmy( x.length, x, 1, y ); // $ExpectError + zxmy( x.length, x, 1, y, 1, 10 ); // $ExpectError +} + +// Attached to the main export is an `ndarray` method which returns a Complex128Array... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); // $ExpectType Complex128Array +} + +// The compiler throws an error if the `ndarray` method is provided a first argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy.ndarray( '10', x, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( true, x, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( false, x, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( null, x, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( undefined, x, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( [], x, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( {}, x, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( ( x: number ): number => x, x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Complex128Array... +{ + const y = new Complex128Array( 10 ); + + zxmy.ndarray( 10, 10, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, '10', 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, true, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, false, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, null, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, undefined, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, [ '1' ], 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, {}, 1, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, ( x: number ): number => x, 1, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a third argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy.ndarray( x.length, x, '10', 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, true, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, false, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, null, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, undefined, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, [], 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, {}, 0, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, ( x: number ): number => x, 0, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fourth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy.ndarray( x.length, x, 1, '10', y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, true, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, false, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, null, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, undefined, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, [], y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, {}, y, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, ( x: number ): number => x, y, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a fifth argument which is not a Complex128Array... +{ + const x = new Complex128Array( 10 ); + + zxmy.ndarray( 10, x, 1, 0, 10, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, x, 1, 0, '10', 1, 0 ); // $ExpectError + zxmy.ndarray( 10, x, 1, 0, true, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, x, 1, 0, false, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, x, 1, 0, null, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, x, 1, 0, undefined, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, x, 1, 0, [ '1' ], 1, 0 ); // $ExpectError + zxmy.ndarray( 10, x, 1, 0, {}, 1, 0 ); // $ExpectError + zxmy.ndarray( 10, x, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a sixth argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy.ndarray( x.length, x, 1, 0, y, '10', 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, true, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, false, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, null, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, undefined, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, [], 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, {}, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a seventh argument which is not a number... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy.ndarray( x.length, x, 1, 0, y, 1, '10' ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, 1, true ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, 1, false ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, 1, null ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, 1, undefined ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, 1, [] ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, 1, {} ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided an unsupported number of arguments... +{ + const x = new Complex128Array( 10 ); + const y = new Complex128Array( 10 ); + + zxmy.ndarray(); // $ExpectError + zxmy.ndarray( x.length ); // $ExpectError + zxmy.ndarray( x.length, x ); // $ExpectError + zxmy.ndarray( x.length, x, 1 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, 1 ); // $ExpectError + zxmy.ndarray( x.length, x, 1, 0, y, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/examples/c/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zxmy/examples/c/Makefile new file mode 100644 index 000000000000..c8f8e9a1517b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/examples/c/Makefile @@ -0,0 +1,146 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + +# Define the program used for compiling C source files: +ifdef C_COMPILER + CC := $(C_COMPILER) +else + CC := gcc +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -Wall \ + -pedantic + +# Determine whether to generate position independent code ([1][1], [2][2]). +# +# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of includes (e.g., `-I /foo/bar -I /beep/boop/include`): +INCLUDE ?= + +# List of source files: +SOURCE_FILES ?= + +# List of libraries (e.g., `-lopenblas -lpthread`): +LIBRARIES ?= + +# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): +LIBPATH ?= + +# List of C targets: +c_targets := example.out + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) +# @param {string} [CFLAGS] - C compiler options +# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) +# @param {string} [SOURCE_FILES] - list of source files +# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) +# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler (e.g., `gcc`) +# @param {string} CFLAGS - C compiler options +# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) +# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) +# @param {string} SOURCE_FILES - list of source files +# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) +# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) + +#/ +# Runs compiled examples. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/examples/c/example.c b/lib/node_modules/@stdlib/blas/ext/base/zxmy/examples/c/example.c new file mode 100644 index 000000000000..b40764072178 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/examples/c/example.c @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zxmy.h" +#include "stdlib/complex/float64/ctor.h" +#include "stdlib/complex/float64/real.h" +#include "stdlib/complex/float64/imag.h" +#include + +int main( void ) { + // Create strided arrays: + const stdlib_complex128_t x[] = { + stdlib_complex128( 1.0, 2.0 ), + stdlib_complex128( 3.0, 4.0 ), + stdlib_complex128( 5.0, 6.0 ), + stdlib_complex128( 7.0, 8.0 ) + }; + stdlib_complex128_t y[] = { + stdlib_complex128( 2.0, 3.0 ), + stdlib_complex128( 4.0, 5.0 ), + stdlib_complex128( 6.0, 7.0 ), + stdlib_complex128( 8.0, 9.0 ) + }; + + // Specify the number of indexed elements: + const int N = 4; + + // Specify strides: + const int strideX = 1; + const int strideY = 1; + + // Multiply `x` by `y` and assign the results to `y`: + stdlib_strided_zxmy( N, x, strideX, y, strideY ); + + // Print the result: + for ( int i = 0; i < N; i++ ) { + printf( "y[ %i ] = %lf + %lfi\n", i, stdlib_complex128_real( y[ i ] ), stdlib_complex128_imag( y[ i ] ) ); + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/examples/index.js new file mode 100644 index 000000000000..4cf4cf48b366 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/examples/index.js @@ -0,0 +1,36 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var logEach = require( '@stdlib/console/log-each' ); +var zxmy = require( './../lib' ); + +var xbuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var ybuf = discreteUniform( 20, -100, 100, { + 'dtype': 'float64' +}); +var x = new Complex128Array( xbuf.buffer ); +var y = new Complex128Array( ybuf.buffer ); + +zxmy( x.length, x, 1, y, 1 ); +logEach( '%s', y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/zxmy/include.gypi new file mode 100644 index 000000000000..bee8d41a2caf --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/include.gypi @@ -0,0 +1,53 @@ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A GYP include file for building a Node.js native add-on. +# +# Main documentation: +# +# [1]: https://gyp.gsrc.io/docs/InputFormatReference.md +# [2]: https://gyp.gsrc.io/docs/UserDocumentation.md +{ + # Define variables to be used throughout the configuration for all targets: + 'variables': { + # Source directory: + 'src_dir': './src', + + # Include directories: + 'include_dirs': [ + ' [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* var zxmy = require( '@stdlib/blas/ext/base/zxmy' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* zxmy.ndarray( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ + +// MODULES // + +var join = require( 'path' ).join; +var tryRequire = require( '@stdlib/utils/try-require' ); +var isError = require( '@stdlib/assert/is-error' ); +var main = require( './main.js' ); + + +// MAIN // + +var zxmy; +var tmp = tryRequire( join( __dirname, './native.js' ) ); +if ( isError( tmp ) ) { + zxmy = main; +} else { + zxmy = tmp; +} + + +// EXPORTS // + +module.exports = zxmy; + +// exports: { "ndarray": "zxmy.ndarray" } diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/main.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/main.js new file mode 100644 index 000000000000..abb553a2116e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/main.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var zxmy = require( './zxmy.js' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +setReadOnly( zxmy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = zxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/native.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/native.js new file mode 100644 index 000000000000..c5fad7f7f81f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/native.js @@ -0,0 +1,35 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var zxmy = require( './zxmy.native.js' ); +var ndarray = require( './ndarray.native.js' ); + + +// MAIN // + +setReadOnly( zxmy, 'ndarray', ndarray ); + + +// EXPORTS // + +module.exports = zxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/ndarray.js new file mode 100644 index 000000000000..9cd98fdbab10 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/ndarray.js @@ -0,0 +1,118 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable max-len */ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var cmul = require( '@stdlib/complex/float64/base/mul' ).assign; + + +// VARIABLES // + +var M = 5; + + +// MAIN // + +/** +* Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex128Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* zxmy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +function zxmy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var xview; + var yview; + var ix; + var iy; + var sx; + var sy; + var m; + var i; + + if ( N <= 0 ) { + return y; + } + + // Reinterpret the complex input arrays as real-valued arrays: + xview = reinterpret( x, 0 ); + yview = reinterpret( y, 0 ); + + // Adjust the strides and offsets according to the real-valued arrays: + ix = offsetX * 2; + iy = offsetY * 2; + sx = strideX * 2; + sy = strideY * 2; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX === 1 && strideY === 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + cmul( xview[ ix ], xview[ ix+1 ], yview[ iy ], yview[ iy+1 ], yview, 1, iy ); + ix += sx; + iy += sy; + } + } + if ( N < M ) { + return y; + } + for ( i = m; i < N; i += M ) { + cmul( xview[ ix ], xview[ ix+1 ], yview[ iy ], yview[ iy+1 ], yview, 1, iy ); + cmul( xview[ ix+2 ], xview[ ix+3 ], yview[ iy+2 ], yview[ iy+3 ], yview, 1, iy+2 ); + cmul( xview[ ix+4 ], xview[ ix+5 ], yview[ iy+4 ], yview[ iy+5 ], yview, 1, iy+4 ); + cmul( xview[ ix+6 ], xview[ ix+7 ], yview[ iy+6 ], yview[ iy+7 ], yview, 1, iy+6 ); + cmul( xview[ ix+8 ], xview[ ix+9 ], yview[ iy+8 ], yview[ iy+9 ], yview, 1, iy+8 ); + ix += M * 2; + iy += M * 2; + } + return y; + } + for ( i = 0; i < N; i++ ) { + cmul( xview[ ix ], xview[ ix+1 ], yview[ iy ], yview[ iy+1 ], yview, 1, iy ); + ix += sx; + iy += sy; + } + return y; +} + + +// EXPORTS // + +module.exports = zxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/ndarray.native.js new file mode 100644 index 000000000000..8c03aabe8c90 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/ndarray.native.js @@ -0,0 +1,60 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting `x` index +* @param {Complex128Array} y - output array +* @param {integer} strideY - `y` stride length +* @param {NonNegativeInteger} offsetY - starting `y` index +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* zxmy( x.length, x, 1, 0, y, 1, 0 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +function zxmy( N, x, strideX, offsetX, y, strideY, offsetY ) { + var viewX = reinterpret( x, 0 ); + var viewY = reinterpret( y, 0 ); + addon.ndarray( N, viewX, strideX, offsetX, viewY, strideY, offsetY ); + return y; +} + + +// EXPORTS // + +module.exports = zxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/zxmy.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/zxmy.js new file mode 100644 index 000000000000..c21a89aa395c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/zxmy.js @@ -0,0 +1,55 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var ndarray = require( './ndarray.js' ); + + +// MAIN // + +/** +* Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Complex128Array} y - output array +* @param {integer} strideY - `y` stride length +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* zxmy( x.length, x, 1, y, 1 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +function zxmy( N, x, strideX, y, strideY ) { + return ndarray( N, x, strideX, stride2offset( N, strideX ), y, strideY, stride2offset( N, strideY ) ); // eslint-disable-line max-len +} + + +// EXPORTS // + +module.exports = zxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/zxmy.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/zxmy.native.js new file mode 100644 index 000000000000..538a28d6e66d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/lib/zxmy.native.js @@ -0,0 +1,58 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param {PositiveInteger} N - number of indexed elements +* @param {Complex128Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {Complex128Array} y - output array +* @param {integer} strideY - `y` stride length +* @returns {Complex128Array} output array +* +* @example +* var Complex128Array = require( '@stdlib/array/complex128' ); +* +* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); +* var y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); +* +* zxmy( x.length, x, 1, y, 1 ); +* // y => [ -4.0, 7.0, -8.0, 31.0, -12.0, 71.0 ] +*/ +function zxmy( N, x, strideX, y, strideY ) { + var viewX = reinterpret( x, 0 ); + var viewY = reinterpret( y, 0 ); + addon( N, viewX, strideX, viewY, strideY ); + return y; +} + + +// EXPORTS // + +module.exports = zxmy; diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/zxmy/manifest.json new file mode 100644 index 000000000000..8b5cc06f5c8e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/manifest.json @@ -0,0 +1,108 @@ +{ + "options": { + "task": "build", + "wasm": false + }, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "task": "build", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/base/mul", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset", + "@stdlib/napi/export", + "@stdlib/napi/argv", + "@stdlib/napi/argv-int64", + "@stdlib/napi/argv-strided-complex128array" + ] + }, + { + "task": "benchmark", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/base/mul", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "examples", + "wasm": false, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/base/mul", + "@stdlib/complex/float64/real", + "@stdlib/complex/float64/imag", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + }, + { + "task": "build", + "wasm": true, + "src": [ + "./src/main.c" + ], + "include": [ + "./include" + ], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/shared", + "@stdlib/complex/float64/base/mul", + "@stdlib/complex/float64/ctor", + "@stdlib/strided/base/stride2offset" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/package.json b/lib/node_modules/@stdlib/blas/ext/base/zxmy/package.json new file mode 100644 index 000000000000..faa620313d7c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/package.json @@ -0,0 +1,82 @@ +{ + "name": "@stdlib/blas/ext/base/zxmy", + "version": "0.0.0", + "description": "Multiply elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assign the results to `y`.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "browser": "./lib/main.js", + "gypfile": true, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "include": "./include", + "lib": "./lib", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "extended", + "linear", + "algebra", + "subroutines", + "multiply", + "transform", + "strided", + "array", + "ndarray", + "vector", + "xmy", + "zxmy", + "complex", + "complex128", + "complex128array", + "float64", + "double" + ], + "__stdlib__": { + "wasm": false + } +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/src/Makefile b/lib/node_modules/@stdlib/blas/ext/base/zxmy/src/Makefile new file mode 100644 index 000000000000..2caf905cedbe --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/src/Makefile @@ -0,0 +1,70 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +else + QUIET := +endif + +# Determine the OS ([1][1], [2][2]). +# +# [1]: https://en.wikipedia.org/wiki/Uname#Examples +# [2]: http://stackoverflow.com/a/27776822/2225624 +OS ?= $(shell uname) +ifneq (, $(findstring MINGW,$(OS))) + OS := WINNT +else +ifneq (, $(findstring MSYS,$(OS))) + OS := WINNT +else +ifneq (, $(findstring CYGWIN,$(OS))) + OS := WINNT +else +ifneq (, $(findstring Windows_NT,$(OS))) + OS := WINNT +endif +endif +endif +endif + + +# RULES # + +#/ +# Removes generated files for building an add-on. +# +# @example +# make clean-addon +#/ +clean-addon: + $(QUIET) -rm -f *.o *.node + +.PHONY: clean-addon + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-addon + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/zxmy/src/addon.c new file mode 100644 index 000000000000..3b6545f4815c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/src/addon.c @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zxmy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_strided_complex128array.h" +#include + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 5 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 4 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, Y, N, strideY, argv, 3 ); + API_SUFFIX(stdlib_strided_zxmy)( N, (stdlib_complex128_t *)X, strideX, (stdlib_complex128_t *)Y, strideY ); + return NULL; +} + +/** +* Receives JavaScript callback invocation data. +* +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon_method( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 7 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_INT64( env, offsetY, argv, 6 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, X, N, strideX, argv, 1 ); + STDLIB_NAPI_ARGV_STRIDED_COMPLEX128ARRAY( env, Y, N, strideY, argv, 4 ); + API_SUFFIX(stdlib_strided_zxmy_ndarray)( N, (stdlib_complex128_t *)X, strideX, offsetX, (stdlib_complex128_t *)Y, strideY, offsetY ); + return NULL; +} + +STDLIB_NAPI_MODULE_EXPORT_FCN_WITH_METHOD( addon, "ndarray", addon_method ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/src/main.c b/lib/node_modules/@stdlib/blas/ext/base/zxmy/src/main.c new file mode 100644 index 000000000000..e0025a3c52f8 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/src/main.c @@ -0,0 +1,96 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/zxmy.h" +#include "stdlib/blas/base/shared.h" +#include "stdlib/complex/float64/base/mul.h" +#include "stdlib/strided/base/stride2offset.h" + +static const CBLAS_INT M = 5; + +/** +* Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y`. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param Y output array +* @param strideY stride length for `Y` +*/ +void API_SUFFIX(stdlib_strided_zxmy)( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, stdlib_complex128_t *Y, const CBLAS_INT strideY ) { + CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); + CBLAS_INT oy = stdlib_strided_stride2offset( N, strideY ); + API_SUFFIX(stdlib_strided_zxmy_ndarray)( N, X, strideX, ox, Y, strideY, oy ); +} + +/** +* Multiplies elements of a double-precision complex floating-point strided array `x` by the corresponding elements of a double-precision complex floating-point strided array `y` and assigns the results to `y` using alternative indexing semantics. +* +* @param N number of indexed elements +* @param X input array +* @param strideX stride length for `X` +* @param offsetX starting index for `X` +* @param Y output array +* @param strideY stride length for `Y` +* @param offsetY starting index for `Y` +*/ +void API_SUFFIX(stdlib_strided_zxmy_ndarray)( const CBLAS_INT N, const stdlib_complex128_t *X, const CBLAS_INT strideX, const CBLAS_INT offsetX, stdlib_complex128_t *Y, const CBLAS_INT strideY, const CBLAS_INT offsetY ) { + CBLAS_INT ix; + CBLAS_INT iy; + CBLAS_INT m; + CBLAS_INT i; + + if ( N <= 0 ) { + return; + } + ix = offsetX; + iy = offsetY; + + // Use loop unrolling if both strides are equal to `1`... + if ( strideX == 1 && strideY == 1 ) { + m = N % M; + + // If we have a remainder, run a clean-up loop... + if ( m > 0 ) { + for ( i = 0; i < m; i++ ) { + Y[ iy ] = stdlib_base_complex128_mul( X[ ix ], Y[ iy ] ); + ix += strideX; + iy += strideY; + } + } + if ( N < M ) { + return; + } + for ( i = m; i < N; i += M ) { + Y[ iy ] = stdlib_base_complex128_mul( X[ ix ], Y[ iy ] ); + Y[ iy+1 ] = stdlib_base_complex128_mul( X[ ix+1 ], Y[ iy+1 ] ); + Y[ iy+2 ] = stdlib_base_complex128_mul( X[ ix+2 ], Y[ iy+2 ] ); + Y[ iy+3 ] = stdlib_base_complex128_mul( X[ ix+3 ], Y[ iy+3 ] ); + Y[ iy+4 ] = stdlib_base_complex128_mul( X[ ix+4 ], Y[ iy+4 ] ); + ix += M; + iy += M; + } + return; + } + for ( i = 0; i < N; i++ ) { + Y[ iy ] = stdlib_base_complex128_mul( X[ ix ], Y[ iy ] ); + ix += strideX; + iy += strideY; + } + return; +} diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.js new file mode 100644 index 000000000000..cc1dfc32ee2e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.js @@ -0,0 +1,82 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var proxyquire = require( 'proxyquire' ); +var IS_BROWSER = require( '@stdlib/assert/is-browser' ); +var zxmy = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': IS_BROWSER +}; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is a method providing an ndarray interface', function test( t ) { + t.strictEqual( typeof zxmy.ndarray, 'function', 'method is a function' ); + t.end(); +}); + +tape( 'if a native implementation is available, the main export is the native implementation', opts, function test( t ) { + var zxmy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zxmy, mock, 'returns native implementation' ); + t.end(); + + function tryRequire() { + return mock; + } + + function mock() { + // Mock... + } +}); + +tape( 'if a native implementation is not available, the main export is a JavaScript implementation', opts, function test( t ) { + var zxmy; + var main; + + main = require( './../lib/zxmy.js' ); + + zxmy = proxyquire( './../lib', { + '@stdlib/utils/try-require': tryRequire + }); + + t.strictEqual( zxmy, main, 'returns JavaScript implementation' ); + t.end(); + + function tryRequire() { + return new Error( 'Cannot find module' ); + } +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.ndarray.js new file mode 100644 index 000000000000..e3cd00eaf3b5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.ndarray.js @@ -0,0 +1,321 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var cmul = require( '@stdlib/complex/float64/base/mul' ); +var zxmy = require( './../lib/ndarray.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', function test( t ) { + t.strictEqual( zxmy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + zxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + expected = new Complex128Array([ + // (1.0*5.0-2.0*6.0) + (1.0*6.0+2.0*5.0)i + -7.0, + 16.0, + // (3.0*7.0-4.0*8.0) + (3.0*8.0+4.0*7.0)i + -11.0, + 52.0 + ]); + + zxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + out = zxmy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + zxmy( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + zxmy( -4, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 5.0, // 1 + 6.0, // 1 + 0.0, + 0.0, + 9.0, // 2 + 10.0 // 2 + ]); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (5.0*4.0-6.0*5.0) + (5.0*5.0+6.0*4.0)i + -10.0, + 49.0, + // (9.0*6.0-10.0*7.0) + (9.0*7.0+10.0*6.0)i + -16.0, + 123.0 + ]); + + zxmy( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array([ + 2.0, // 0 + 3.0, // 0 + 4.0, + 5.0, + 6.0, // 1 + 7.0, // 1 + 8.0, + 9.0, + 10.0, // 2 + 11.0 // 2 + ]); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + 4.0, + 5.0, + // (3.0*6.0-4.0*7.0) + (3.0*7.0+4.0*6.0)i + -10.0, + 45.0, + 8.0, + 9.0, + // (5.0*10.0-6.0*11.0) + (5.0*11.0+6.0*10.0)i + -16.0, + 115.0 + ]); + + zxmy( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + y = new Complex128Array([ + 4.0, // 2 + 5.0, // 2 + 3.0, // 1 + 4.0, // 1 + 2.0, // 0 + 3.0 // 0 + ]); + expected = new Complex128Array([ + // (1.0*4.0-2.0*5.0) + (1.0*5.0+2.0*4.0)i + -6.0, + 13.0, + // (3.0*3.0-4.0*4.0) + (3.0*4.0+4.0*3.0)i + -7.0, + 24.0, + // (5.0*2.0-6.0*3.0) + (5.0*3.0+6.0*2.0)i + -8.0, + 27.0 + ]); + + zxmy( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex128Array([ + 10.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + y0 = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 2.0, // 0 + 3.0, // 0 + 4.0, // 1 + 5.0, // 1 + 6.0, // 2 + 7.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + zxmy( 3, x1, 1, 0, y1, 1, 0 ); + t.strictEqual( isSameComplex128Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex128Array( 100 ); + y = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmul( xv, yv ), i ); + } + zxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + y = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmul( xv, yv ), i ); + } + zxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.ndarray.native.js new file mode 100644 index 000000000000..28e8ee73c2b5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.ndarray.native.js @@ -0,0 +1,330 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var cmul = require( '@stdlib/complex/float64/base/mul' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var zxmy = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); +var opts = { + 'skip': ( zxmy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 7', opts, function test( t ) { + t.strictEqual( zxmy.length, 7, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + zxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + expected = new Complex128Array([ + // (1.0*5.0-2.0*6.0) + (1.0*6.0+2.0*5.0)i + -7.0, + 16.0, + // (3.0*7.0-4.0*8.0) + (3.0*8.0+4.0*7.0)i + -11.0, + 52.0 + ]); + + zxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + out = zxmy( x.length, x, 1, 0, y, 1, 0 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + zxmy( 0, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + zxmy( -4, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 5.0, // 1 + 6.0, // 1 + 0.0, + 0.0, + 9.0, // 2 + 10.0 // 2 + ]); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (5.0*4.0-6.0*5.0) + (5.0*5.0+6.0*4.0)i + -10.0, + 49.0, + // (9.0*6.0-10.0*7.0) + (9.0*7.0+10.0*6.0)i + -16.0, + 123.0 + ]); + + zxmy( 3, x, 2, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array([ + 2.0, // 0 + 3.0, // 0 + 4.0, + 5.0, + 6.0, // 1 + 7.0, // 1 + 8.0, + 9.0, + 10.0, // 2 + 11.0 // 2 + ]); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + 4.0, + 5.0, + // (3.0*6.0-4.0*7.0) + (3.0*7.0+4.0*6.0)i + -10.0, + 45.0, + 8.0, + 9.0, + // (5.0*10.0-6.0*11.0) + (5.0*11.0+6.0*10.0)i + -16.0, + 115.0 + ]); + + zxmy( 3, x, 1, 0, y, 2, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + y = new Complex128Array([ + 4.0, // 2 + 5.0, // 2 + 3.0, // 1 + 4.0, // 1 + 2.0, // 0 + 3.0 // 0 + ]); + expected = new Complex128Array([ + // (1.0*4.0-2.0*5.0) + (1.0*5.0+2.0*4.0)i + -6.0, + 13.0, + // (3.0*3.0-4.0*4.0) + (3.0*4.0+4.0*3.0)i + -7.0, + 24.0, + // (5.0*2.0-6.0*3.0) + (5.0*3.0+6.0*2.0)i + -8.0, + 27.0 + ]); + + zxmy( 3, x, -2, 4, y, -1, 2 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex128Array([ + 10.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + y0 = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 2.0, // 0 + 3.0, // 0 + 4.0, // 1 + 5.0, // 1 + 6.0, // 2 + 7.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + zxmy( 3, x1, 1, 0, y1, 1, 0 ); + t.strictEqual( isSameComplex128Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex128Array( 100 ); + y = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmul( xv, yv ), i ); + } + zxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + y = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmul( xv, yv ), i ); + } + zxmy( x.length, x, 1, 0, y, 1, 0 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.zxmy.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.zxmy.js new file mode 100644 index 000000000000..f09cbbc6aee2 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.zxmy.js @@ -0,0 +1,321 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var cmul = require( '@stdlib/complex/float64/base/mul' ); +var zxmy = require( './../lib/zxmy.js' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', function test( t ) { + t.strictEqual( zxmy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + zxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + expected = new Complex128Array([ + // (1.0*5.0-2.0*6.0) + (1.0*6.0+2.0*5.0)i + -7.0, + 16.0, + // (3.0*7.0-4.0*8.0) + (3.0*8.0+4.0*7.0)i + -11.0, + 52.0 + ]); + + zxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', function test( t ) { + var out; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + out = zxmy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + zxmy( 0, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + zxmy( -4, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 5.0, // 1 + 6.0, // 1 + 0.0, + 0.0, + 9.0, // 2 + 10.0 // 2 + ]); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (5.0*4.0-6.0*5.0) + (5.0*5.0+6.0*4.0)i + -10.0, + 49.0, + // (9.0*6.0-10.0*7.0) + (9.0*7.0+10.0*6.0)i + -16.0, + 123.0 + ]); + + zxmy( 3, x, 2, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array([ + 2.0, // 0 + 3.0, // 0 + 4.0, + 5.0, + 6.0, // 1 + 7.0, // 1 + 8.0, + 9.0, + 10.0, // 2 + 11.0 // 2 + ]); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + 4.0, + 5.0, + // (3.0*6.0-4.0*7.0) + (3.0*7.0+4.0*6.0)i + -10.0, + 45.0, + 8.0, + 9.0, + // (5.0*10.0-6.0*11.0) + (5.0*11.0+6.0*10.0)i + -16.0, + 115.0 + ]); + + zxmy( 3, x, 1, y, 2 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + y = new Complex128Array([ + 4.0, // 2 + 5.0, // 2 + 3.0, // 1 + 4.0, // 1 + 2.0, // 0 + 3.0 // 0 + ]); + expected = new Complex128Array([ + // (1.0*4.0-2.0*5.0) + (1.0*5.0+2.0*4.0)i + -6.0, + 13.0, + // (3.0*3.0-4.0*4.0) + (3.0*4.0+4.0*3.0)i + -7.0, + 24.0, + // (5.0*2.0-6.0*3.0) + (5.0*3.0+6.0*2.0)i + -8.0, + 27.0 + ]); + + zxmy( 3, x, -2, y, -1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex128Array([ + 10.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + y0 = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 2.0, // 0 + 3.0, // 0 + 4.0, // 1 + 5.0, // 1 + 6.0, // 2 + 7.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + zxmy( 3, x1, 1, y1, 1 ); + t.strictEqual( isSameComplex128Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex128Array( 100 ); + y = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmul( xv, yv ), i ); + } + zxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + y = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmul( xv, yv ), i ); + } + zxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.zxmy.native.js b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.zxmy.native.js new file mode 100644 index 000000000000..51a2f2e19773 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/zxmy/test/test.zxmy.native.js @@ -0,0 +1,330 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable stdlib/empty-line-before-comment */ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var tape = require( 'tape' ); +var isSameComplex128Array = require( '@stdlib/assert/is-same-complex128array' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex128 = require( '@stdlib/complex/float64/ctor' ); +var cmul = require( '@stdlib/complex/float64/base/mul' ); +var tryRequire = require( '@stdlib/utils/try-require' ); + + +// VARIABLES // + +var zxmy = tryRequire( resolve( __dirname, './../lib/zxmy.native.js' ) ); +var opts = { + 'skip': ( zxmy instanceof Error ) +}; + + +// TESTS // + +tape( 'main export is a function', opts, function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof zxmy, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 5', opts, function test( t ) { + t.strictEqual( zxmy.length, 5, 'has expected arity' ); + t.end(); +}); + +tape( 'the function multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + zxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 5.0, 6.0, 7.0, 8.0 ] ); + expected = new Complex128Array([ + // (1.0*5.0-2.0*6.0) + (1.0*6.0+2.0*5.0)i + -7.0, + 16.0, + // (3.0*7.0-4.0*8.0) + (3.0*8.0+4.0*7.0)i + -11.0, + 52.0 + ]); + + zxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function returns a reference to the output array', opts, function test( t ) { + var out; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + out = zxmy( x.length, x, 1, y, 1 ); + + t.strictEqual( out, y, 'same reference' ); + t.end(); +}); + +tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `y` unchanged', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0 ] ); + y = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array( [ 4.0, 5.0, 6.0, 7.0 ] ); + + zxmy( 0, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + zxmy( -4, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `x` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 1.0, // 0 + 2.0, // 0 + 0.0, + 0.0, + 5.0, // 1 + 6.0, // 1 + 0.0, + 0.0, + 9.0, // 2 + 10.0 // 2 + ]); + y = new Complex128Array( [ 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ] ); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (5.0*4.0-6.0*5.0) + (5.0*5.0+6.0*4.0)i + -10.0, + 49.0, + // (9.0*6.0-10.0*7.0) + (9.0*7.0+10.0*6.0)i + -16.0, + 123.0 + ]); + + zxmy( 3, x, 2, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a `y` stride', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); + y = new Complex128Array([ + 2.0, // 0 + 3.0, // 0 + 4.0, + 5.0, + 6.0, // 1 + 7.0, // 1 + 8.0, + 9.0, + 10.0, // 2 + 11.0 // 2 + ]); + expected = new Complex128Array([ + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + 4.0, + 5.0, + // (3.0*6.0-4.0*7.0) + (3.0*7.0+4.0*6.0)i + -10.0, + 45.0, + 8.0, + 9.0, + // (5.0*10.0-6.0*11.0) + (5.0*11.0+6.0*10.0)i + -16.0, + 115.0 + ]); + + zxmy( 3, x, 1, y, 2 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports negative strides', opts, function test( t ) { + var expected; + var x; + var y; + + x = new Complex128Array([ + 1.0, // 2 + 2.0, // 2 + 0.0, + 0.0, + 3.0, // 1 + 4.0, // 1 + 0.0, + 0.0, + 5.0, // 0 + 6.0 // 0 + ]); + y = new Complex128Array([ + 4.0, // 2 + 5.0, // 2 + 3.0, // 1 + 4.0, // 1 + 2.0, // 0 + 3.0 // 0 + ]); + expected = new Complex128Array([ + // (1.0*4.0-2.0*5.0) + (1.0*5.0+2.0*4.0)i + -6.0, + 13.0, + // (3.0*3.0-4.0*4.0) + (3.0*4.0+4.0*3.0)i + -7.0, + 24.0, + // (5.0*2.0-6.0*3.0) + (5.0*3.0+6.0*2.0)i + -8.0, + 27.0 + ]); + + zxmy( 3, x, -2, y, -1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var expected; + var x0; + var y0; + var x1; + var y1; + + x0 = new Complex128Array([ + 10.0, + 0.0, + 1.0, // 0 + 2.0, // 0 + 3.0, // 1 + 4.0, // 1 + 5.0, // 2 + 6.0 // 2 + ]); + y0 = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + 2.0, // 0 + 3.0, // 0 + 4.0, // 1 + 5.0, // 1 + 6.0, // 2 + 7.0 // 2 + ]); + + x1 = new Complex128Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + y1 = new Complex128Array( y0.buffer, y0.BYTES_PER_ELEMENT*2 ); + + expected = new Complex128Array([ + 10.0, + 0.0, + 10.0, + 0.0, + // (1.0*2.0-2.0*3.0) + (1.0*3.0+2.0*2.0)i + -4.0, + 7.0, + // (3.0*4.0-4.0*5.0) + (3.0*5.0+4.0*4.0)i + -8.0, + 31.0, + // (5.0*6.0-6.0*7.0) + (5.0*7.0+6.0*6.0)i + -12.0, + 71.0 + ]); + + zxmy( 3, x1, 1, y1, 1 ); + t.strictEqual( isSameComplex128Array( y0, expected ), true, 'returns expected value' ); + t.end(); +}); + +tape( 'if both strides are equal to `1`, the function efficiently multiplies elements of `x` by the corresponding elements of `y` and assigns the results to `y`', opts, function test( t ) { + var expected; + var xv; + var yv; + var x; + var y; + var i; + + x = new Complex128Array( 100 ); + y = new Complex128Array( 100 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmul( xv, yv ), i ); + } + zxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + x = new Complex128Array( 240 ); + y = new Complex128Array( 240 ); + expected = new Complex128Array( x.length ); + for ( i = 0; i < x.length; i++ ) { + xv = new Complex128( i, 0.0 ); + yv = new Complex128( x.length - i, 0.0 ); + x.set( xv, i ); + y.set( yv, i ); + expected.set( cmul( xv, yv ), i ); + } + zxmy( x.length, x, 1, y, 1 ); + t.strictEqual( isSameComplex128Array( y, expected ), true, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/lib/index.js b/lib/node_modules/@stdlib/blas/lib/index.js index af1b825edd0b..4f81b57dc567 100644 --- a/lib/node_modules/@stdlib/blas/lib/index.js +++ b/lib/node_modules/@stdlib/blas/lib/index.js @@ -36,6 +36,15 @@ var setReadOnly = require( '@stdlib/utils/define-read-only-property' ); */ var ns = {}; +/** +* @name asum +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/asum} +*/ +setReadOnly( ns, 'asum', require( '@stdlib/blas/asum' ) ); + /** * @name base * @memberof ns @@ -90,6 +99,15 @@ setReadOnly( ns, 'gdot', require( '@stdlib/blas/gdot' ) ); */ setReadOnly( ns, 'gswap', require( '@stdlib/blas/gswap' ) ); +/** +* @name nrm2 +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/blas/nrm2} +*/ +setReadOnly( ns, 'nrm2', require( '@stdlib/blas/nrm2' ) ); + /** * @name sdot * @memberof ns diff --git a/lib/node_modules/@stdlib/blas/nrm2/README.md b/lib/node_modules/@stdlib/blas/nrm2/README.md new file mode 100644 index 000000000000..b26d23740942 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/README.md @@ -0,0 +1,231 @@ + + +# nrm2 + +> Compute the L2-norm along one or more [ndarray][@stdlib/ndarray/ctor] dimensions. + +
+ +## Usage + +```javascript +var nrm2 = require( '@stdlib/blas/nrm2' ); +``` + +#### nrm2( x\[, options] ) + +Computes the L2-norm along one or more [ndarray][@stdlib/ndarray/ctor] dimensions. + +```javascript +var array = require( '@stdlib/ndarray/array' ); + +var x = array( [ 1.0, -2.0, 2.0 ] ); + +var y = nrm2( x ); +// returns [ 3.0 ] +``` + +The function has the following parameters: + +- **x**: input [ndarray][@stdlib/ndarray/ctor]. Must have a numeric or "generic" [data type][@stdlib/ndarray/dtypes]. +- **options**: function options (_optional_). + +The function accepts the following options: + +- **dims**: list of dimensions over which to perform a reduction. If not provided, the function performs a reduction over all elements in a provided input [ndarray][@stdlib/ndarray/ctor]. +- **dtype**: output ndarray [data type][@stdlib/ndarray/dtypes]. Must be a real-valued floating-point or "generic" [data type][@stdlib/ndarray/dtypes]. +- **keepdims**: boolean indicating whether the reduced dimensions should be included in the returned [ndarray][@stdlib/ndarray/ctor] as singleton dimensions. Default: `false`. + +By default, the function performs a reduction over all elements in a provided input [ndarray][@stdlib/ndarray/ctor]. To perform a reduction over specific dimensions, provide a `dims` option. + +```javascript +var array = require( '@stdlib/ndarray/array' ); + +var x = array( [ 3.0, 0.0, 4.0, 0.0 ], { + 'shape': [ 2, 2 ], + 'order': 'row-major' +}); +// returns [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ] + +var y = nrm2( x, { + 'dims': [ 0 ] +}); +// returns [ 5.0, 0.0 ] + +y = nrm2( x, { + 'dims': [ 1 ] +}); +// returns [ 3.0, 4.0 ] + +y = nrm2( x, { + 'dims': [ 0, 1 ] +}); +// returns [ 5.0 ] +``` + +By default, the function excludes reduced dimensions from the output [ndarray][@stdlib/ndarray/ctor]. To include the reduced dimensions as singleton dimensions, set the `keepdims` option to `true`. + +```javascript +var array = require( '@stdlib/ndarray/array' ); + +var x = array( [ 3.0, 0.0, 4.0, 0.0 ], { + 'shape': [ 2, 2 ], + 'order': 'row-major' +}); +// returns [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ] + +var y = nrm2( x, { + 'dims': [ 0 ], + 'keepdims': true +}); +// returns [ [ 5.0, 0.0 ] ] + +y = nrm2( x, { + 'dims': [ 1 ], + 'keepdims': true +}); +// returns [ [ 3.0 ], [ 4.0 ] ] + +y = nrm2( x, { + 'dims': [ 0, 1 ], + 'keepdims': true +}); +// returns [ [ 5.0 ] ] +``` + +By default, the function returns an [ndarray][@stdlib/ndarray/ctor] having a [data type][@stdlib/ndarray/dtypes] determined by the function's output data type [policy][@stdlib/ndarray/output-dtype-policies]. To override the default behavior, set the `dtype` option. + +```javascript +var getDType = require( '@stdlib/ndarray/dtype' ); +var array = require( '@stdlib/ndarray/array' ); + +var x = array( [ 1.0, -2.0, 2.0 ], { + 'dtype': 'generic' +}); + +var y = nrm2( x, { + 'dtype': 'float64' +}); +// returns [ 3.0 ] + +var dt = String( getDType( y ) ); +// returns 'float64' +``` + +#### nrm2.assign( x, out\[, options] ) + +Computes the L2-norm along one or more [ndarray][@stdlib/ndarray/ctor] dimensions and assigns results to a provided output [ndarray][@stdlib/ndarray/ctor]. + +```javascript +var array = require( '@stdlib/ndarray/array' ); +var zeros = require( '@stdlib/ndarray/zeros' ); + +var x = array( [ 1.0, -2.0, 2.0 ] ); +var y = zeros( [] ); + +var out = nrm2.assign( x, y ); +// returns [ 3.0 ] + +var bool = ( out === y ); +// returns true +``` + +The method has the following parameters: + +- **x**: input [ndarray][@stdlib/ndarray/ctor]. Must have a numeric or "generic" [data type][@stdlib/ndarray/dtypes]. +- **out**: output [ndarray][@stdlib/ndarray/ctor]. +- **options**: function options (_optional_). + +The method accepts the following options: + +- **dims**: list of dimensions over which to perform a reduction. If not provided, the function performs a reduction over all elements in a provided input [ndarray][@stdlib/ndarray/ctor]. + +
+ + + +
+ +## Notes + +- Setting the `keepdims` option to `true` can be useful when wanting to ensure that the output [ndarray][@stdlib/ndarray/ctor] is [broadcast-compatible][@stdlib/ndarray/base/broadcast-shapes] with ndarrays having the same shape as the input [ndarray][@stdlib/ndarray/ctor]. +- The output data type [policy][@stdlib/ndarray/output-dtype-policies] only applies to the main function and specifies that, by default, the function must return an [ndarray][@stdlib/ndarray/ctor] having a real-valued floating-point or "generic" [data type][@stdlib/ndarray/dtypes]. For the `assign` method, the output [ndarray][@stdlib/ndarray/ctor] is allowed to have any supported output [data type][@stdlib/ndarray/dtypes]. + +
+ + + +
+ +## Examples + + + +```javascript +var uniform = require( '@stdlib/random/uniform' ); +var getDType = require( '@stdlib/ndarray/dtype' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var nrm2 = require( '@stdlib/blas/nrm2' ); + +// Generate an array of random numbers: +var x = uniform( [ 5, 5 ], -10.0, 10.0 ); +console.log( ndarray2array( x ) ); + +// Perform a reduction: +var y = nrm2( x, { + 'dims': [ 0 ] +}); + +// Resolve the output array data type: +var dt = getDType( y ); +console.log( dt ); + +// Print the results: +console.log( ndarray2array( y ) ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/nrm2/benchmark/benchmark.assign.js b/lib/node_modules/@stdlib/blas/nrm2/benchmark/benchmark.assign.js new file mode 100644 index 000000000000..3755b234afc1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/benchmark/benchmark.assign.js @@ -0,0 +1,105 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var uniform = require( '@stdlib/random/uniform' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var nrm2 = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var out = zeros( [], options ); + var x = uniform( [ len ], -50.0, 50.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var o; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + o = nrm2.assign( x, out ); + if ( typeof o !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( o.get() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:assign:dtype=%s,len=%d', pkg, options.dtype, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/nrm2/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/nrm2/benchmark/benchmark.js new file mode 100644 index 000000000000..adcdf529b36f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/benchmark/benchmark.js @@ -0,0 +1,103 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var pow = require( '@stdlib/math/base/special/pow' ); +var uniform = require( '@stdlib/random/uniform' ); +var format = require( '@stdlib/string/format' ); +var pkg = require( './../package.json' ).name; +var nrm2 = require( './../lib' ); + + +// VARIABLES // + +var options = { + 'dtype': 'float64' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( [ len ], -50.0, 50.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var o; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + o = nrm2( x ); + if ( typeof o !== 'object' ) { + b.fail( 'should return an ndarray' ); + } + } + b.toc(); + if ( isnan( o.get() ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var len; + var min; + var max; + var f; + var i; + + min = 1; // 10^min + max = 6; // 10^max + + for ( i = min; i <= max; i++ ) { + len = pow( 10, i ); + f = createBenchmark( len ); + bench( format( '%s:dtype=%s,len=%d', pkg, options.dtype, len ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/nrm2/docs/repl.txt b/lib/node_modules/@stdlib/blas/nrm2/docs/repl.txt new file mode 100644 index 000000000000..6da321ed4603 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/docs/repl.txt @@ -0,0 +1,74 @@ + +{{alias}}( x[, options] ) + Computes the L2-norm along one or more ndarray dimensions. + + Parameters + ---------- + x: ndarray + Input array. Must have a numeric or "generic" data type. + + options: Object (optional) + Function options. + + options.dtype: string|DataType (optional) + Output array data type. Must be a real-valued floating-point or + "generic" data type. + + options.dims: Array (optional) + List of dimensions over which to perform a reduction. If not provided, + the function performs a reduction over all elements in a provided input + ndarray. + + options.keepdims: boolean (optional) + Boolean indicating whether the reduced dimensions should be included in + the returned ndarray as singleton dimensions. Default: false. + + Returns + ------- + out: ndarray + Output array. + + Examples + -------- + > var x = {{alias:@stdlib/ndarray/array}}( [ 1.0, -2.0, 2.0 ] ); + > var y = {{alias}}( x ) + [ 3.0 ] + + +{{alias}}.assign( x, out[, options] ) + Computes the L2-norm along one or more ndarray dimensions and assigns + results to a provided output ndarray. + + Parameters + ---------- + x: ndarray + Input array. Must have a numeric or "generic" data type. + + out: ndarray + Output array. + + options: Object (optional) + Function options. + + options.dims: Array (optional) + List of dimensions over which to perform a reduction. If not provided, + the function performs a reduction over all elements in a provided input + ndarray. + + Returns + ------- + out: ndarray + Output array. + + Examples + -------- + > var x = {{alias:@stdlib/ndarray/array}}( [ 1.0, -2.0, 2.0 ] ); + > var out = {{alias:@stdlib/ndarray/zeros}}( [] ); + > var y = {{alias}}.assign( x, out ) + [ 3.0 ] + > var bool = ( out === y ) + true + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/nrm2/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/nrm2/docs/types/index.d.ts new file mode 100644 index 000000000000..4755b4afd9de --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/docs/types/index.d.ts @@ -0,0 +1,139 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { ArrayLike } from '@stdlib/types/array'; +import { RealFloatingPointAndGenericDataType as DataType, typedndarray } from '@stdlib/types/ndarray'; + +/** +* Input array. +*/ +type InputArray = typedndarray; + +/** +* Output array. +*/ +type OutputArray = typedndarray; + +/** +* Interface defining "base" options. +*/ +interface BaseOptions { + /** + * List of dimensions over which to perform a reduction. + */ + dims?: ArrayLike; +} + +/** +* Interface defining options. +*/ +interface Options extends BaseOptions { + /** + * Output array data type. + */ + dtype?: DataType; + + /** + * Boolean indicating whether the reduced dimensions should be included in the returned array as singleton dimensions. Default: `false`. + */ + keepdims?: boolean; +} + +/** +* Interface for performing a reduction on an ndarray. +*/ +interface Unary { + /** + * Computes the L2-norm along one or more ndarray dimensions. + * + * @param x - input ndarray + * @param options - function options + * @returns output ndarray + * + * @example + * var array = require( '@stdlib/ndarray/array' ); + * + * var x = array( [ 1.0, -2.0, 2.0 ] ); + * + * var y = nrm2( x ); + * // returns [ 3.0 ] + */ + ( x: InputArray, options?: Options ): OutputArray; // NOTE: we lose type specificity here, but retaining specificity would likely be difficult and/or tedious to completely enumerate, as the output ndarray data type is dependent on how `x` interacts with output data type policy and whether that policy has been overridden by `options.dtype`. + + /** + * Computes the L2-norm along one or more ndarray dimensions and assigns results to a provided output ndarray. + * + * @param x - input ndarray + * @param out - output ndarray + * @param options - function options + * @returns output ndarray + * + * @example + * var array = require( '@stdlib/ndarray/array' ); + * var zeros = require( '@stdlib/ndarray/zeros' ); + * + * var x = array( [ 1.0, -2.0, 2.0 ] ); + * var y = zeros( [] ); + * + * var out = nrm2.assign( x, y ); + * // returns [ 3.0 ] + * + * var bool = ( out === y ); + * // returns true + */ + assign = OutputArray>( x: InputArray, out: U, options?: BaseOptions ): U; +} + +/** +* Computes the L2-norm along one or more ndarray dimensions. +* +* @param x - input ndarray +* @param options - function options +* @returns output ndarray +* +* @example +* var array = require( '@stdlib/ndarray/array' ); +* +* var x = array( [ 1.0, -2.0, 2.0 ] ); +* +* var y = nrm2( x ); +* // returns [ 3.0 ] +* +* @example +* var array = require( '@stdlib/ndarray/array' ); +* var zeros = require( '@stdlib/ndarray/zeros' ); +* +* var x = array( [ 1.0, -2.0, 2.0 ] ); +* var y = zeros( [] ); +* +* var out = nrm2.assign( x, y ); +* // returns [ 3.0 ] +* +* var bool = ( out === y ); +* // returns true +*/ +declare const nrm2: Unary; + + +// EXPORTS // + +export = nrm2; diff --git a/lib/node_modules/@stdlib/blas/nrm2/docs/types/test.ts b/lib/node_modules/@stdlib/blas/nrm2/docs/types/test.ts new file mode 100644 index 000000000000..4ed199277da9 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/docs/types/test.ts @@ -0,0 +1,230 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import zeros = require( '@stdlib/ndarray/zeros' ); +import empty = require( '@stdlib/ndarray/empty' ); +import nrm2 = require( './index' ); + + +// TESTS // + +// The function returns an ndarray... +{ + nrm2( empty( [ 2, 2 ], { 'dtype': 'float64' } ) ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'float64' } ), {} ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'float32' } ) ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'float32' } ), {} ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'int32' } ) ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'int32' } ), {} ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'complex128' } ) ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'complex128' } ), {} ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'complex64' } ) ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'complex64' } ), {} ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'generic' } ) ); // $ExpectType OutputArray + nrm2( empty( [ 2, 2 ], { 'dtype': 'generic' } ), {} ); // $ExpectType OutputArray +} + +// The compiler throws an error if the function is provided a first argument which is not an ndarray... +{ + nrm2( '5' ); // $ExpectError + nrm2( 5 ); // $ExpectError + nrm2( true ); // $ExpectError + nrm2( false ); // $ExpectError + nrm2( null ); // $ExpectError + nrm2( void 0 ); // $ExpectError + nrm2( {} ); // $ExpectError + nrm2( ( x: number ): number => x ); // $ExpectError + + nrm2( '5', {} ); // $ExpectError + nrm2( 5, {} ); // $ExpectError + nrm2( true, {} ); // $ExpectError + nrm2( false, {} ); // $ExpectError + nrm2( null, {} ); // $ExpectError + nrm2( void 0, {} ); // $ExpectError + nrm2( {}, {} ); // $ExpectError + nrm2( ( x: number ): number => x, {} ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not an object... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2( x, '5' ); // $ExpectError + nrm2( x, true ); // $ExpectError + nrm2( x, false ); // $ExpectError + nrm2( x, null ); // $ExpectError + nrm2( x, [] ); // $ExpectError + nrm2( x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an invalid `dtype` option... +{ + const x = empty( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2( x, { 'dtype': '5' } ); // $ExpectError + nrm2( x, { 'dtype': 5 } ); // $ExpectError + nrm2( x, { 'dtype': true } ); // $ExpectError + nrm2( x, { 'dtype': false } ); // $ExpectError + nrm2( x, { 'dtype': null } ); // $ExpectError + nrm2( x, { 'dtype': [] } ); // $ExpectError + nrm2( x, { 'dtype': {} } ); // $ExpectError + nrm2( x, { 'dtype': ( x: number ): number => x } ); // $ExpectError +} + +// The compiler throws an error if the function is provided an invalid `keepdims` option... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2( x, { 'keepdims': '5' } ); // $ExpectError + nrm2( x, { 'keepdims': 5 } ); // $ExpectError + nrm2( x, { 'keepdims': null } ); // $ExpectError + nrm2( x, { 'keepdims': [] } ); // $ExpectError + nrm2( x, { 'keepdims': {} } ); // $ExpectError + nrm2( x, { 'keepdims': ( x: number ): number => x } ); // $ExpectError +} + +// The compiler throws an error if the function is provided an invalid `dims` option... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2( x, { 'dims': '5' } ); // $ExpectError + nrm2( x, { 'dims': 5 } ); // $ExpectError + nrm2( x, { 'dims': true } ); // $ExpectError + nrm2( x, { 'dims': false } ); // $ExpectError + nrm2( x, { 'dims': null } ); // $ExpectError + nrm2( x, { 'dims': {} } ); // $ExpectError + nrm2( x, { 'dims': ( x: number ): number => x } ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2(); // $ExpectError + nrm2( x, {}, {} ); // $ExpectError +} + +// Attached to the function is an `assign` method which returns an ndarray... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2.assign( x, x ); // $ExpectType float64ndarray + nrm2.assign( x, x, {} ); // $ExpectType float64ndarray +} + +// The compiler throws an error if the `assign` method is provided a first argument which is not an ndarray... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2.assign( '5', x ); // $ExpectError + nrm2.assign( 5, x ); // $ExpectError + nrm2.assign( true, x ); // $ExpectError + nrm2.assign( false, x ); // $ExpectError + nrm2.assign( null, x ); // $ExpectError + nrm2.assign( void 0, x ); // $ExpectError + nrm2.assign( {}, x ); // $ExpectError + nrm2.assign( ( x: number ): number => x, x ); // $ExpectError + + nrm2.assign( '5', x, {} ); // $ExpectError + nrm2.assign( 5, x, {} ); // $ExpectError + nrm2.assign( true, x, {} ); // $ExpectError + nrm2.assign( false, x, {} ); // $ExpectError + nrm2.assign( null, x, {} ); // $ExpectError + nrm2.assign( void 0, x, {} ); // $ExpectError + nrm2.assign( {}, x, {} ); // $ExpectError + nrm2.assign( ( x: number ): number => x, x, {} ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided a second argument which is not an ndarray... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2.assign( x, '5' ); // $ExpectError + nrm2.assign( x, 5 ); // $ExpectError + nrm2.assign( x, true ); // $ExpectError + nrm2.assign( x, false ); // $ExpectError + nrm2.assign( x, null ); // $ExpectError + nrm2.assign( x, void 0 ); // $ExpectError + nrm2.assign( x, ( x: number ): number => x ); // $ExpectError + + nrm2.assign( x, '5', {} ); // $ExpectError + nrm2.assign( x, 5, {} ); // $ExpectError + nrm2.assign( x, true, {} ); // $ExpectError + nrm2.assign( x, false, {} ); // $ExpectError + nrm2.assign( x, null, {} ); // $ExpectError + nrm2.assign( x, void 0, {} ); // $ExpectError + nrm2.assign( x, ( x: number ): number => x, {} ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided a third argument which is not an object... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2.assign( x, x, '5' ); // $ExpectError + nrm2.assign( x, x, true ); // $ExpectError + nrm2.assign( x, x, false ); // $ExpectError + nrm2.assign( x, x, null ); // $ExpectError + nrm2.assign( x, x, [] ); // $ExpectError + nrm2.assign( x, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided an invalid `dims` option... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2.assign( x, x, { 'dims': '5' } ); // $ExpectError + nrm2.assign( x, x, { 'dims': 5 } ); // $ExpectError + nrm2.assign( x, x, { 'dims': true } ); // $ExpectError + nrm2.assign( x, x, { 'dims': false } ); // $ExpectError + nrm2.assign( x, x, { 'dims': null } ); // $ExpectError + nrm2.assign( x, x, { 'dims': {} } ); // $ExpectError + nrm2.assign( x, x, { 'dims': ( x: number ): number => x } ); // $ExpectError +} + +// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... +{ + const x = zeros( [ 2, 2 ], { + 'dtype': 'float64' + }); + + nrm2.assign(); // $ExpectError + nrm2.assign( x ); // $ExpectError + nrm2.assign( x, x, {}, {} ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/nrm2/examples/index.js b/lib/node_modules/@stdlib/blas/nrm2/examples/index.js new file mode 100644 index 000000000000..4c998168e02a --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/examples/index.js @@ -0,0 +1,40 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var uniform = require( '@stdlib/random/uniform' ); +var getDType = require( '@stdlib/ndarray/dtype' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var nrm2 = require( './../lib' ); + +// Generate an array of random numbers: +var x = uniform( [ 5, 5 ], -10.0, 10.0 ); +console.log( ndarray2array( x ) ); + +// Perform a reduction: +var y = nrm2( x, { + 'dims': [ 0 ] +}); + +// Resolve the output array data type: +var dt = getDType( y ); +console.log( dt ); + +// Print the results: +console.log( ndarray2array( y ) ); diff --git a/lib/node_modules/@stdlib/blas/nrm2/lib/index.js b/lib/node_modules/@stdlib/blas/nrm2/lib/index.js new file mode 100644 index 000000000000..e76ace961c12 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/lib/index.js @@ -0,0 +1,60 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Compute the L2-norm along one or more ndarray dimensions. +* +* @module @stdlib/blas/nrm2 +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var ndarray = require( '@stdlib/ndarray/ctor' ); +* var nrm2 = require( '@stdlib/blas/nrm2' ); +* +* // Create a data buffer: +* var xbuf = new Float64Array( [ 0.0, 1.0, -2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* // Define the shape of the input array: +* var sh = [ 3, 1, 2 ]; +* +* // Define the array strides: +* var sx = [ 4, 4, 1 ]; +* +* // Define the index offset: +* var ox = 1; +* +* // Create an input ndarray: +* var x = new ndarray( 'float64', xbuf, sh, sx, ox, 'row-major' ); +* +* // Perform reduction: +* var out = nrm2( x ); +* // returns [ 3.0 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; + +// exports: { "assign": "main.assign" } diff --git a/lib/node_modules/@stdlib/blas/nrm2/lib/main.js b/lib/node_modules/@stdlib/blas/nrm2/lib/main.js new file mode 100644 index 000000000000..68ae34f2c78d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/lib/main.js @@ -0,0 +1,104 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var dtypes = require( '@stdlib/ndarray/dtypes' ); +var gnrm2 = require( '@stdlib/blas/base/ndarray/gnrm2' ); +var dnrm2 = require( '@stdlib/blas/base/ndarray/dnrm2' ); +var snrm2 = require( '@stdlib/blas/base/ndarray/snrm2' ); +var dznrm2 = require( '@stdlib/blas/base/ndarray/dznrm2' ); +var scnrm2 = require( '@stdlib/blas/base/ndarray/scnrm2' ); +var factory = require( '@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-factory' ); + + +// VARIABLES // + +var idtypes = dtypes( 'numeric_and_generic' ); +var odtypes = dtypes( 'real_floating_point_and_generic' ); +var policies = { + 'output': 'real_floating_point_and_generic', + 'casting': 'none' +}; +var table = { + 'types': [ + 'float64', // input + 'float32', // input + 'complex128', // input + 'complex64' // input + ], + 'fcns': [ + dnrm2, + snrm2, + dznrm2, + scnrm2 + ], + 'default': gnrm2 +}; + + +// MAIN // + +/** +* Computes the L2-norm along one or more ndarray dimensions. +* +* @name nrm2 +* @type {Function} +* @param {ndarray} x - input ndarray +* @param {Options} [options] - function options +* @param {IntegerArray} [options.dims] - list of dimensions over which to perform a reduction +* @param {boolean} [options.keepdims=false] - boolean indicating whether the reduced dimensions should be included in the returned ndarray as singleton dimensions +* @param {*} [options.dtype] - output ndarray data type +* @throws {TypeError} first argument must be an ndarray-like object +* @throws {TypeError} options argument must be an object +* @throws {RangeError} dimension indices must not exceed input ndarray bounds +* @throws {RangeError} number of dimension indices must not exceed the number of input ndarray dimensions +* @throws {Error} must provide valid options +* @returns {ndarray} output ndarray +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var ndarray = require( '@stdlib/ndarray/ctor' ); +* +* // Create a data buffer: +* var xbuf = new Float64Array( [ 0.0, 1.0, -2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] ); +* +* // Define the shape of the input array: +* var sh = [ 3, 1, 2 ]; +* +* // Define the array strides: +* var sx = [ 4, 4, 1 ]; +* +* // Define the index offset: +* var ox = 1; +* +* // Create an input ndarray: +* var x = new ndarray( 'float64', xbuf, sh, sx, ox, 'row-major' ); +* +* // Perform reduction: +* var out = nrm2( x ); +* // returns [ 3.0 ] +*/ +var nrm2 = factory( table, [ idtypes ], odtypes, policies ); + + +// EXPORTS // + +module.exports = nrm2; diff --git a/lib/node_modules/@stdlib/blas/nrm2/package.json b/lib/node_modules/@stdlib/blas/nrm2/package.json new file mode 100644 index 000000000000..422c770f7db6 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/package.json @@ -0,0 +1,71 @@ +{ + "name": "@stdlib/blas/nrm2", + "version": "0.0.0", + "description": "Compute the L2-norm along one or more ndarray dimensions.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 1", + "linear", + "algebra", + "subroutines", + "nrm2", + "norm", + "l2-norm", + "euclidean", + "magnitude", + "vector", + "array", + "ndarray" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/blas/nrm2/test/test.assign.js b/lib/node_modules/@stdlib/blas/nrm2/test/test.assign.js new file mode 100644 index 000000000000..5796080c841c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/test/test.assign.js @@ -0,0 +1,765 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var empty = require( '@stdlib/ndarray/empty' ); +var emptyLike = require( '@stdlib/ndarray/empty-like' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var nrm2 = require( './../lib' ).assign; + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nrm2, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object', function test( t ) { + var values; + var out; + var i; + + out = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( value, out ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object (options)', function test( t ) { + var values; + var out; + var i; + + out = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( value, out, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object having a supported data type', function test( t ) { + var values; + var out; + var i; + + out = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + empty( [ 2, 2 ], { + 'dtype': 'bool' + }) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( value, out ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object having a supported data type (options)', function test( t ) { + var values; + var out; + var i; + + out = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + empty( [ 2, 2 ], { + 'dtype': 'bool' + }) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( value, out, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a second argument which is not an ndarray-like object', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, value ); + }; + } +}); + +tape( 'the function throws an error if provided a second argument which is not an ndarray-like object (options)', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, value, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a third argument which is not an object', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, out, value ); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which is not an array-like object of integers', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [ 'a' ], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, out, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains out-of-bounds indices', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [ 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ -10 ], + [ 20 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, out, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains too many indices', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [], { + 'dtype': 'generic' + }); + + values = [ + [ 0, 1, 2 ], + [ 0, 1, 2, 3 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, out, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains duplicate indices', function test( t ) { + var values; + var out; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + out = zeros( [], { + 'dtype': 'generic' + }); + + values = [ + [ 0, 0 ], + [ 1, 1 ], + [ 0, 1, 0 ], + [ 1, 0, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, out, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided an output array which has an invalid shape (default)', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ 2, 2 ], + [ 2 ], + [ 4, 4 ], + [ 4 ], + [ 1 ], + [ 1, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + var out = zeros( value, { + 'dtype': 'generic' + }); + nrm2( x, out ); + }; + } +}); + +tape( 'the function throws an error if provided an output array which has an invalid shape (all dimensions)', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ 2, 2 ], + [ 2 ], + [ 4, 4 ], + [ 4 ], + [ 1 ], + [ 1, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + var out = zeros( value, { + 'dtype': 'generic' + }); + nrm2( x, out, { + 'dims': [ 0, 1 ] + }); + }; + } +}); + +tape( 'the function throws an error if provided an output array which has an invalid shape (some dimensions)', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [], + [ 4, 4 ], + [ 4 ], + [ 1 ], + [ 1, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + var out = zeros( value, { + 'dtype': 'generic' + }); + nrm2( x, out, { + 'dims': [ 0 ] + }); + }; + } +}); + +tape( 'the function performs a reduction on an ndarray (default, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [] + }); + + actual = nrm2( x, out ); + expected = 5.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (default, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [] + }); + + actual = nrm2( x, out ); + expected = 5.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (all dimensions, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [] + }); + + actual = nrm2( x, out, { + 'dims': [ 0, 1 ] + }); + expected = 5.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (all dimensions, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [] + }); + + actual = nrm2( x, out, { + 'dims': [ 0, 1 ] + }); + expected = 5.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (no dimensions, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [ 2, 2 ] + }); + + actual = nrm2( x, out, { + 'dims': [] + }); + expected = [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (no dimensions, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [ 2, 2 ] + }); + + actual = nrm2( x, out, { + 'dims': [] + }); + expected = [ [ 3.0, 4.0 ], [ 0.0, 0.0 ] ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying reduction dimensions (row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [ 2 ] + }); + + actual = nrm2( x, out, { + 'dims': [ 0 ] + }); + expected = [ 5.0, 0.0 ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = emptyLike( x, { + 'shape': [ 2 ] + }); + + actual = nrm2( x, out, { + 'dims': [ 1 ] + }); + expected = [ 3.0, 4.0 ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying reduction dimensions (column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [ 2 ] + }); + + actual = nrm2( x, out, { + 'dims': [ 0 ] + }); + expected = [ 3.0, 4.0 ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + out = emptyLike( x, { + 'shape': [ 2 ] + }); + + actual = nrm2( x, out, { + 'dims': [ 1 ] + }); + expected = [ 5.0, 0.0 ]; + + t.strictEqual( actual, out, 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (complex128)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = new Complex128Array( [ 1.0, 2.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0 ] ); + x = new ndarray( 'complex128', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = empty( [], { + 'dtype': 'float64' + }); + + actual = nrm2( x, out ); + expected = 5.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (complex64)', function test( t ) { + var expected; + var actual; + var xbuf; + var out; + var x; + + xbuf = new Complex64Array( [ 1.0, 2.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0 ] ); + x = new ndarray( 'complex64', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + out = empty( [], { + 'dtype': 'float32' + }); + + actual = nrm2( x, out ); + expected = 5.0; + + t.strictEqual( actual, out, 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/nrm2/test/test.js b/lib/node_modules/@stdlib/blas/nrm2/test/test.js new file mode 100644 index 000000000000..59838084192e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/test/test.js @@ -0,0 +1,39 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isMethod = require( '@stdlib/assert/is-method' ); +var nrm2 = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nrm2, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'attached to the main export is an `assign` method', function test( t ) { + t.strictEqual( isMethod( nrm2, 'assign' ), true, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/nrm2/test/test.main.js b/lib/node_modules/@stdlib/blas/nrm2/test/test.main.js new file mode 100644 index 000000000000..2409b88ba386 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/nrm2/test/test.main.js @@ -0,0 +1,795 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var isndarrayLike = require( '@stdlib/assert/is-ndarray-like' ); +var ndarray = require( '@stdlib/ndarray/ctor' ); +var zeros = require( '@stdlib/ndarray/zeros' ); +var empty = require( '@stdlib/ndarray/empty' ); +var Complex128Array = require( '@stdlib/array/complex128' ); +var Complex64Array = require( '@stdlib/array/complex64' ); +var ndarray2array = require( '@stdlib/ndarray/to-array' ); +var getDType = require( '@stdlib/ndarray/dtype' ); +var getShape = require( '@stdlib/ndarray/shape' ); +var getOrder = require( '@stdlib/ndarray/order' ); +var nrm2 = require( './../lib' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof nrm2, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( value ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object (options)', function test( t ) { + var values; + var i; + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( value, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object having a supported data type', function test( t ) { + var values; + var i; + + values = [ + empty( [ 2, 2 ], { + 'dtype': 'bool' + }) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( value ); + }; + } +}); + +tape( 'the function throws an error if provided a first argument which is not an ndarray-like object having a supported data type (options)', function test( t ) { + var values; + var i; + + values = [ + empty( [ 2, 2 ], { + 'dtype': 'bool' + }) + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( value, {} ); + }; + } +}); + +tape( 'the function throws an error if provided a second argument which is not an object', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [], + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, value ); + }; + } +}); + +tape( 'the function throws an error if provided a `dtype` option which is not a supported data type', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + 'foo', + 'bar', + 'beep', + 'boop' + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, { + 'dtype': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `keepdims` option which is not a boolean', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + null, + void 0, + [], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, { + 'keepdims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which is not an array-like object of integers', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + '5', + 5, + NaN, + true, + false, + null, + void 0, + [ 'a' ], + {}, + function noop() {} + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), TypeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains out-of-bounds indices', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ -10 ], + [ 0, 20 ], + [ 20 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains too many indices', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ 0, 1, 2 ], + [ 0, 1, 2, 3 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, { + 'dims': value + }); + }; + } +}); + +tape( 'the function throws an error if provided a `dims` option which contains duplicate indices', function test( t ) { + var values; + var x; + var i; + + x = zeros( [ 2, 2 ], { + 'dtype': 'generic' + }); + + values = [ + [ 0, 0 ], + [ 1, 1 ], + [ 0, 1, 0 ], + [ 1, 0, 1 ] + ]; + for ( i = 0; i < values.length; i++ ) { + t.throws( badValue( values[ i ] ), Error, 'throws an error when provided ' + values[ i ] ); + } + t.end(); + + function badValue( value ) { + return function badValue() { + nrm2( x, { + 'dims': value + }); + }; + } +}); + +tape( 'the function performs a reduction on an ndarray (default, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x ); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (default, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x ); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (all dimensions, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dims': [ 0, 1 ] + }); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dims': [ 0, 1 ], + 'keepdims': false + }); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dims': [ 0, 1 ], + 'keepdims': true + }); + expected = [ [ 5.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 1, 1 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (all dimensions, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dims': [ 0, 1 ] + }); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dims': [ 0, 1 ], + 'keepdims': false + }); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dims': [ 0, 1 ], + 'keepdims': true + }); + expected = [ [ 5.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 1, 1 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (no dimensions, row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dims': [], + 'keepdims': false + }); + expected = [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dims': [], + 'keepdims': true + }); + expected = [ [ 3.0, 0.0 ], [ 4.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (no dimensions, column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dims': [], + 'keepdims': false + }); + expected = [ [ 3.0, 4.0 ], [ 0.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dims': [], + 'keepdims': true + }); + expected = [ [ 3.0, 4.0 ], [ 0.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying reduction dimensions (row-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dims': [ 0 ], + 'keepdims': false + }); + expected = [ 5.0, 0.0 ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dims': [ 0 ], + 'keepdims': true + }); + expected = [ [ 5.0, 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 1, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dims': [ 1 ], + 'keepdims': false + }); + expected = [ 3.0, 4.0 ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dims': [ 1 ], + 'keepdims': true + }); + expected = [ [ 3.0 ], [ 4.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 1 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying reduction dimensions (column-major)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dims': [ 0 ], + 'keepdims': false + }); + expected = [ 3.0, 4.0 ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dims': [ 0 ], + 'keepdims': true + }); + expected = [ [ 3.0, 4.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 1, 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dims': [ 1 ], + 'keepdims': false + }); + expected = [ 5.0, 0.0 ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dims': [ 1 ], + 'keepdims': true + }); + expected = [ [ 5.0 ], [ 0.0 ] ]; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'generic', 'returns expected value' ); + t.deepEqual( getShape( actual ), [ 2, 1 ], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.deepEqual( ndarray2array( actual ), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports specifying the output array data type', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x, { + 'dtype': 'float64' + }); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'float64', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + xbuf = [ 3.0, 0.0, 4.0, 0.0 ]; + x = new ndarray( 'generic', xbuf, [ 2, 2 ], [ 1, 2 ], 0, 'column-major' ); + + actual = nrm2( x, { + 'dtype': 'float64' + }); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'float64', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( getOrder( actual ), getOrder( x ), 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (complex128)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = new Complex128Array( [ 1.0, 2.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0 ] ); + x = new ndarray( 'complex128', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x ); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'float64', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function performs a reduction on an ndarray (complex64)', function test( t ) { + var expected; + var actual; + var xbuf; + var x; + + xbuf = new Complex64Array( [ 1.0, 2.0, 2.0, 4.0, 0.0, 0.0, 0.0, 0.0 ] ); + x = new ndarray( 'complex64', xbuf, [ 2, 2 ], [ 2, 1 ], 0, 'row-major' ); + + actual = nrm2( x ); + expected = 5.0; + + t.strictEqual( isndarrayLike( actual ), true, 'returns expected value' ); + t.strictEqual( String( getDType( actual ) ), 'float32', 'returns expected value' ); + t.deepEqual( getShape( actual ), [], 'returns expected value' ); + t.strictEqual( actual.get(), expected, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/constants/float32/e/README.md b/lib/node_modules/@stdlib/constants/float32/e/README.md index 30c74a9f504e..08ce1d6826b7 100644 --- a/lib/node_modules/@stdlib/constants/float32/e/README.md +++ b/lib/node_modules/@stdlib/constants/float32/e/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# E +# FLOAT32_E > The mathematical constant [_e_][e]. @@ -27,15 +27,15 @@ limitations under the License. ## Usage ```javascript -var E = require( '@stdlib/constants/float32/e' ); +var FLOAT32_E = require( '@stdlib/constants/float32/e' ); ``` -#### E +#### FLOAT32_E The mathematical constant [_e_][e], also known as Euler's number or Napier's constant. [_e_][e] is the base of the natural logarithm. ```javascript -var bool = ( E === 2.7182817459106445 ); +var bool = ( FLOAT32_E === 2.7182817459106445 ); // returns true ``` @@ -52,9 +52,9 @@ var bool = ( E === 2.7182817459106445 ); ```javascript -var E = require( '@stdlib/constants/float32/e' ); +var FLOAT32_E = require( '@stdlib/constants/float32/e' ); -console.log( E ); +console.log( FLOAT32_E ); // => 2.7182817459106445 ``` diff --git a/lib/node_modules/@stdlib/constants/float32/e/docs/types/index.d.ts b/lib/node_modules/@stdlib/constants/float32/e/docs/types/index.d.ts index a4af37e9df15..248a15a2a3fd 100644 --- a/lib/node_modules/@stdlib/constants/float32/e/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/constants/float32/e/docs/types/index.d.ts @@ -22,12 +22,12 @@ * Euler's number. * * @example -* var e = E; +* var e = FLOAT32_E; * // returns 2.7182817459106445 */ -declare const E: number; +declare const FLOAT32_E: number; // EXPORTS // -export = E; +export = FLOAT32_E; diff --git a/lib/node_modules/@stdlib/constants/float32/e/docs/types/test.ts b/lib/node_modules/@stdlib/constants/float32/e/docs/types/test.ts index 763c1963b354..16d394f58c95 100644 --- a/lib/node_modules/@stdlib/constants/float32/e/docs/types/test.ts +++ b/lib/node_modules/@stdlib/constants/float32/e/docs/types/test.ts @@ -16,7 +16,7 @@ * limitations under the License. */ -import E = require( './index' ); +import FLOAT32_E = require( './index' ); // TESTS // @@ -24,5 +24,5 @@ import E = require( './index' ); // The export is a number... { // eslint-disable-next-line @typescript-eslint/no-unused-expressions - E; // $ExpectType number + FLOAT32_E; // $ExpectType number } diff --git a/lib/node_modules/@stdlib/constants/float32/e/examples/index.js b/lib/node_modules/@stdlib/constants/float32/e/examples/index.js index 3ac8e579c54e..797348125c01 100644 --- a/lib/node_modules/@stdlib/constants/float32/e/examples/index.js +++ b/lib/node_modules/@stdlib/constants/float32/e/examples/index.js @@ -18,7 +18,7 @@ 'use strict'; -var E = require( './../lib' ); +var FLOAT32_E = require( './../lib' ); -console.log( E ); +console.log( FLOAT32_E ); // => 2.7182817459106445 diff --git a/lib/node_modules/@stdlib/constants/float32/e/lib/index.js b/lib/node_modules/@stdlib/constants/float32/e/lib/index.js index 6e01b0e44dc5..ce9f8e588b85 100644 --- a/lib/node_modules/@stdlib/constants/float32/e/lib/index.js +++ b/lib/node_modules/@stdlib/constants/float32/e/lib/index.js @@ -45,9 +45,9 @@ var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' ); * @see [OEIS]{@link https://oeis.org/A001113} * @see [Wikipedia]{@link https://en.wikipedia.org/wiki/E_(mathematical_constant)} */ -var E = float64ToFloat32( 2.718281828459045 ); +var FLOAT32_E = float64ToFloat32( 2.718281828459045 ); // EXPORTS // -module.exports = E; +module.exports = FLOAT32_E; diff --git a/lib/node_modules/@stdlib/constants/float32/e/test/test.js b/lib/node_modules/@stdlib/constants/float32/e/test/test.js index f34ecc589d50..2bb92564541b 100644 --- a/lib/node_modules/@stdlib/constants/float32/e/test/test.js +++ b/lib/node_modules/@stdlib/constants/float32/e/test/test.js @@ -21,18 +21,18 @@ // MODULES // var tape = require( 'tape' ); -var E = require( './../lib' ); +var FLOAT32_E = require( './../lib' ); // TESTS // tape( 'main export is a number', function test( t ) { t.ok( true, __filename ); - t.strictEqual( typeof E, 'number', 'main export is a number' ); + t.strictEqual( typeof FLOAT32_E, 'number', 'main export is a number' ); t.end(); }); tape( 'export is a single-precision floating-point number equal to 2.7182817459106445', function test( t ) { - t.strictEqual( E, 2.7182817459106445, 'returns expected value' ); + t.strictEqual( FLOAT32_E, 2.7182817459106445, 'returns expected value' ); t.end(); }); diff --git a/lib/node_modules/@stdlib/constants/float64/fourth-root-eps/README.md b/lib/node_modules/@stdlib/constants/float64/fourth-root-eps/README.md index 3e6d2e254472..9d181374eedd 100644 --- a/lib/node_modules/@stdlib/constants/float64/fourth-root-eps/README.md +++ b/lib/node_modules/@stdlib/constants/float64/fourth-root-eps/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# FOURTH_ROOT_EPS +# FLOAT64_FOURTH_ROOT_EPS > [Fourth root][nth-root] of [double-precision floating-point epsilon][@stdlib/constants/float64/eps]. @@ -27,15 +27,15 @@ limitations under the License. ## Usage ```javascript -var FOURTH_ROOT_EPS = require( '@stdlib/constants/float64/fourth-root-eps' ); +var FLOAT64_FOURTH_ROOT_EPS = require( '@stdlib/constants/float64/fourth-root-eps' ); ``` -#### FOURTH_ROOT_EPS +#### FLOAT64_FOURTH_ROOT_EPS [Fourth root][nth-root] of [double-precision floating-point epsilon][@stdlib/constants/float64/eps]. ```javascript -var bool = ( FOURTH_ROOT_EPS === 0.0001220703125 ); +var bool = ( FLOAT64_FOURTH_ROOT_EPS === 0.0001220703125 ); // returns true ``` @@ -50,9 +50,9 @@ var bool = ( FOURTH_ROOT_EPS === 0.0001220703125 ); ```javascript -var FOURTH_ROOT_EPS = require( '@stdlib/constants/float64/fourth-root-eps' ); +var FLOAT64_FOURTH_ROOT_EPS = require( '@stdlib/constants/float64/fourth-root-eps' ); -var out = FOURTH_ROOT_EPS; +var out = FLOAT64_FOURTH_ROOT_EPS; // returns 0.0001220703125 ``` diff --git a/lib/node_modules/@stdlib/constants/float64/gamma-lanczos-g/README.md b/lib/node_modules/@stdlib/constants/float64/gamma-lanczos-g/README.md index 686ff4476f5d..2e7afb9c0624 100644 --- a/lib/node_modules/@stdlib/constants/float64/gamma-lanczos-g/README.md +++ b/lib/node_modules/@stdlib/constants/float64/gamma-lanczos-g/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# GAMMA_LANCZOS_G +# FLOAT64_GAMMA_LANCZOS_G > Arbitrary constant `g` to be used in Lanczos approximation functions. @@ -33,15 +33,15 @@ limitations under the License. ## Usage ```javascript -var GAMMA_LANCZOS_G = require( '@stdlib/constants/float64/gamma-lanczos-g' ); +var FLOAT64_GAMMA_LANCZOS_G = require( '@stdlib/constants/float64/gamma-lanczos-g' ); ``` -#### GAMMA_LANCZOS_G +#### FLOAT64_GAMMA_LANCZOS_G Arbitrary constant `g` to be used in [Lanczos approximation][lanczos-approximation] functions. ```javascript -var bool = ( GAMMA_LANCZOS_G === 10.900511 ); +var bool = ( FLOAT64_GAMMA_LANCZOS_G === 10.900511 ); // returns true ``` @@ -56,9 +56,9 @@ var bool = ( GAMMA_LANCZOS_G === 10.900511 ); ```javascript -var GAMMA_LANCZOS_G = require( '@stdlib/constants/float64/gamma-lanczos-g' ); +var FLOAT64_GAMMA_LANCZOS_G = require( '@stdlib/constants/float64/gamma-lanczos-g' ); -console.log( GAMMA_LANCZOS_G ); +console.log( FLOAT64_GAMMA_LANCZOS_G ); // => 10.900511 ``` diff --git a/lib/node_modules/@stdlib/constants/float64/log10-e/lib/index.js b/lib/node_modules/@stdlib/constants/float64/log10-e/lib/index.js index 4a79ea3d0454..afaf8807864f 100644 --- a/lib/node_modules/@stdlib/constants/float64/log10-e/lib/index.js +++ b/lib/node_modules/@stdlib/constants/float64/log10-e/lib/index.js @@ -39,7 +39,7 @@ * @type {number} * @default 0.4342944819032518 * @see [OEIS]{@link https://oeis.org/A001113} -* @see [Wikipedia]{@link https://en.wikipedia.org/wiki/E_%27mathematical_constant%28} +* @see [Wikipedia]{@link https://en.wikipedia.org/wiki/E_(mathematical_constant)} */ var LOG10E = 4.34294481903251827651128918916605082294397005803666566114453783165864649208870774729224949338431748318706106745e-01; // eslint-disable-line max-len diff --git a/lib/node_modules/@stdlib/constants/float64/log2-e/lib/index.js b/lib/node_modules/@stdlib/constants/float64/log2-e/lib/index.js index 31486b72ae76..20b753dbe352 100644 --- a/lib/node_modules/@stdlib/constants/float64/log2-e/lib/index.js +++ b/lib/node_modules/@stdlib/constants/float64/log2-e/lib/index.js @@ -39,7 +39,7 @@ * @type {number} * @default 1.4426950408889634 * @see [OEIS]{@link https://oeis.org/A001113} -* @see [Wikipedia]{@link https://en.wikipedia.org/wiki/E_%27mathematical_constant%28} +* @see [Wikipedia]{@link https://en.wikipedia.org/wiki/E_(mathematical_constant)} */ var LOG2E = 1.442695040888963407359924681001892137426645954152985934135; diff --git a/lib/node_modules/@stdlib/constants/float64/nan/README.md b/lib/node_modules/@stdlib/constants/float64/nan/README.md index fb4aed288650..e605da490f8a 100644 --- a/lib/node_modules/@stdlib/constants/float64/nan/README.md +++ b/lib/node_modules/@stdlib/constants/float64/nan/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# NAN +# FLOAT64_NAN > [Double-precision floating-point][ieee754] `NaN`. diff --git a/lib/node_modules/@stdlib/constants/float64/ninf/README.md b/lib/node_modules/@stdlib/constants/float64/ninf/README.md index f5fa27bc67b6..c90b13fd9ffa 100644 --- a/lib/node_modules/@stdlib/constants/float64/ninf/README.md +++ b/lib/node_modules/@stdlib/constants/float64/ninf/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# NINF +# FLOAT64_NINF > [Double-precision floating-point][ieee754] negative infinity. diff --git a/lib/node_modules/@stdlib/constants/float64/pinf/README.md b/lib/node_modules/@stdlib/constants/float64/pinf/README.md index cc7dc4db3798..35852909706b 100644 --- a/lib/node_modules/@stdlib/constants/float64/pinf/README.md +++ b/lib/node_modules/@stdlib/constants/float64/pinf/README.md @@ -18,7 +18,7 @@ limitations under the License. --> -# PINF +# FLOAT64_PINF > [Double-precision floating-point][ieee754] positive infinity. diff --git a/lib/node_modules/@stdlib/constants/float64/pinf/lib/index.js b/lib/node_modules/@stdlib/constants/float64/pinf/lib/index.js index 5759d844b535..8c15c27cee6a 100644 --- a/lib/node_modules/@stdlib/constants/float64/pinf/lib/index.js +++ b/lib/node_modules/@stdlib/constants/float64/pinf/lib/index.js @@ -48,7 +48,7 @@ * @default Number.POSITIVE_INFINITY * @see [IEEE 754]{@link https://en.wikipedia.org/wiki/IEEE_754-1985} */ -var FLOAT64_PINF = Number.POSITIVE_INFINITY; // eslint-disable-line stdlib/require-globals +var FLOAT64_PINF = Number.POSITIVE_INFINITY; // EXPORTS // diff --git a/lib/node_modules/@stdlib/datasets/cmudict/datapackage.json b/lib/node_modules/@stdlib/datasets/cmudict/datapackage.json index 87562e5cec7c..9ce2c0ba799a 100644 --- a/lib/node_modules/@stdlib/datasets/cmudict/datapackage.json +++ b/lib/node_modules/@stdlib/datasets/cmudict/datapackage.json @@ -92,10 +92,6 @@ } ], "keywords": [ - "stdlib", - "datasets", - "dataset", - "data", "words", "speech", "language", diff --git a/lib/node_modules/@stdlib/datasets/stopwords-en/datapackage.json b/lib/node_modules/@stdlib/datasets/stopwords-en/datapackage.json index ffea016e2e94..4e0275ec4b8c 100644 --- a/lib/node_modules/@stdlib/datasets/stopwords-en/datapackage.json +++ b/lib/node_modules/@stdlib/datasets/stopwords-en/datapackage.json @@ -37,5 +37,5 @@ "english", "en" ], - "license": "CC0 AND PDDL-1.0" + "license": "PDDL-1.0 AND CC0-1.0" } diff --git a/lib/node_modules/@stdlib/error/tools/database/data/data.csv b/lib/node_modules/@stdlib/error/tools/database/data/data.csv index 9aaef17dd440..eb7f59e26178 100644 --- a/lib/node_modules/@stdlib/error/tools/database/data/data.csv +++ b/lib/node_modules/@stdlib/error/tools/database/data/data.csv @@ -1279,3 +1279,7 @@ "Kc","invalid argument. Third argument must be a valid shape. Value: `%s`.","TypeError" "Kd","invalid argument. Fifth argument must be a recognized/supported data type. Value: `%s`.","TypeError" "Ke","invalid argument. Second argument must be a supported distance metric. Value: `%s`.","TypeError" +"Kf","invalid argument. Must provide an integer on the interval [-(2^63), 2^63-1]. Value: `%s`.","TypeError" +"Kg","invalid argument. Must provide an integer on the interval [-(2^53-1), 2^53-1]. Value: `%s`.","TypeError" +"Kh","invalid argument. First argument must be a string encoding an integer on the interval [0, 2^64). Value: `%s`.","RangeError" +"Ki","invalid argument. Second argument must be an integer on the interval [2, 36]. Value: `%s`.","RangeError" diff --git a/lib/node_modules/@stdlib/error/tools/database/data/data.json b/lib/node_modules/@stdlib/error/tools/database/data/data.json index 98b1ddeb8c07..3ac965d99158 100644 --- a/lib/node_modules/@stdlib/error/tools/database/data/data.json +++ b/lib/node_modules/@stdlib/error/tools/database/data/data.json @@ -1 +1 @@ -{"10":"invalid operation. Cannot reset a REPL which has already closed.","11":"invalid operation. Cannot clear a REPL which has already closed.","12":"invalid operation. Cannot clear the line of a REPL which has already closed.","13":"invalid operation. Cannot clear the command buffer of a REPL which has already closed.","14":"invalid argument. Provided command either does not contain an `await` expression or contains a top-level `return` which is not allowed.","15":"invalid argument. Must provide a program AST node.","16":"invalid invocation. Insufficient arguments. Must provide a REPL instance.","17":"invalid operation. No presentation to reload. Use the `load()` method to load a presentation.","18":"invalid operation. No presentation file to watch. Use the `load()` method to load a presentation.","19":"unexpected error. Encountered a \"rename\" event for the source presentation file. No longer watching source presentation file for changes.","20":"invalid argument. Must provide a username or, to get a list of repositories an authenticated user is watching, an access token.","21":"unexpected error. Unable to resolve package directory as unable to find a `package.json` in a parent directory.","22":"invalid argument. Source code does not contain JSDoc comment with function options.","23":"unexpected error. Unable to resolve root project directory.","24":"invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.","25":"invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.","26":"invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.","27":"invalid argument. Array-like object and typed array arguments must have a length which is a multiple of two. Length: `%u`.","28":"invalid argument. ArrayBuffer byte length must be a multiple of `%u`. Byte length: `%u`.","29":"invalid argument. Environment lacks Symbol.iterator support. Must provide a length, ArrayBuffer, typed array, or array-like object. Value: `%s`.","30":"invalid argument. Fourth argument must be a nonnegative integer. Value: `%s`.","31":"invalid argument. Fifth argument must be a function. Value: `%s`.","32":"invalid argument. Fourth argument must be a function. Value: `%s`.","33":"invalid argument. Second argument must be either an integer (starting index) or a callback function. Value: `%s`.","34":"invalid argument. Third argument must be either an integer (ending index) or a callback function. Value: `%s`.","35":"invalid argument. Second argument must be either an integer (starting view index) or a callback function. Value: `%s`.","36":"invalid argument. Third argument must be either an integer (ending view index) or a callback function. Value: `%s`.","37":"invalid argument. Second argument must be a recognized data type. Value: `%s`.","38":"invalid argument. First argument must be array-like. Value: `%s`.","39":"invalid argument. Second argument must be a string. Value: `%s`.","40":"invalid argument. Must provide either a Date object, a JavaScript timestamp (i.e., a nonnegative integer), or a date string. Value: `%s`.","41":"invalid option. Unrecognized rounding mode. Option: `%s`.","42":"invalid argument. Third argument must be either a nonnegative integer or an options object. Value: `%s`.","43":"invalid argument. Fourth argument must be an object. Value: `%s`.","44":"invalid argument. First argument must an iterator protocol-compliant object. Value: `%s`.","45":"invalid argument. Second argument must be a positive integer. Value: `%s`.","46":"invalid argument. First argument must be an iterator protocol-compliant object. Value: `%s`.","47":"invalid argument. Must provide an object. Value: `%s`.","48":"invalid argument. Object property values must be functions. Key: `%s`. Value: `%s`.","49":"invalid argument. First argument must be a number. Value: `%s`.","50":"invalid option. Second `%s` parameter option must be a positive integer. Option: `%s`.","51":"invalid argument. First argument must be an array. Value: `%s`.","52":"invalid argument. First argument must be an array of length `%u`. Value: `%s`.","53":"invalid argument. First argument must be an array of length %u. Value: `%s`.","54":"unexpected error. Scaling weight vector by nonpositive value, likely due to too large value of eta * lambda. Value: `%f`.","55":"invalid argument. Second argument must be a boolean. Value: `%s`.","56":"invalid argument. Must provide either a valid data source, options argument, or both. Value: `%s`.","57":"invalid option. `%s` option must be an array-like object, typed-array-like, a Buffer, or an ndarray. Option: `%s`.","58":"invalid option. Data source must be an array-like object, typed-array-like, a Buffer, or an ndarray. Value: `%s`.","59":"invalid option. `%s` option must be a recognized casting mode. Option: `%s`.","60":"invalid argument. Input string must have a length equal to %u. Value: `%s`.","61":"invalid assignment. `%s` must be a boolean. Value: `%s`.","62":"invalid assignment. `%s` must be a string. Value: `%s`.","63":"invalid assignment. `%s` must be one of the following: \"%s\". Value: `%s`.","64":"invalid assignment. `%s` must be a positive number. Value: `%s`.","65":"invalid assignment. `%s` must be either an array of strings or an empty array. Value: `%s`.","66":"invalid assignment. `%s` must be a number or number array. Value: `%s`.","67":"invalid assignment. A `%s` must be a number on the interval: [0, 1]. Value: `%f`.","68":"invalid assignment. `%s` must be a string or a string array. Value: `%s`","69":"invalid assignment. Unsupported/unrecognized line style. Must be one of the following: \"%s\". Value: `%s`.","70":"invalid argument. Must provide a Uint32Array. Value: `%s`.","71":"invalid argument. First argument must be a positive number. Value: `%s`.","72":"invalid argument. Second argument must be a positive number. Value: `%s`.","73":"invalid argument. Second argument must be a probability. Value: `%s`.","74":"invalid option. `%s` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `%s`.","75":"invalid option. `%s` option must have a `MIN` property specifying the minimum possible pseudorandom integer value.","76":"invalid option. `%s` option must have a `MAX` property specifying the maximum possible pseudorandom integer value.","77":"invalid argument. First argument must be an integer and not NaN. Value: `%s`.","78":"invalid argument. Second argument must be an integer and not NaN. Value: `%s`.","79":"invalid argument. Minimum support must be less than or equal to maximum support. Value: `[%d,%d]`.","80":"invalid argument. First argument must be either a string containing presentation text or an options object specifying a presentation file to load. Value: `%s`.","81":"invalid argument. Second argument must be an options object. Value: `%s`.","82":"invalid argument. Invalid presentation identifier. Must be either a string or nonnegative integer. Value: `%s`.","83":"invalid argument. Workspace name already exists. Value: `%s`.","84":"invalid argument. Must provide a string, regular expression, nonnegative integer, or an array of nonnegative integers. Value: `%s`.","85":"invalid argument. Unrecognized tutorial name. Value: `%s`.","86":"invalid argument. Documentation argument must be a string. Value: `%s`.","87":"invalid option. `%s` option must be a regular expression. Option: `%s`.","88":"internal error. Unrecognized pattern type: `%s`.","89":"invalid option. `%s` option must be a readable stream. Option: `%s`.","90":"invalid argument. Denominator degrees of freedom must be a positive number. Value: `%s`.","91":"invalid argument. Scale parameter must be a number. Value: `%s`.","92":"invalid argument. Mean parameter `%s` must be a probability. Value: `%s`.","93":"invalid argument. Population size must be a nonnegative integer. Value: `%s`.","94":"invalid argument. Subpopulation size must be a nonnegative integer. Value: `%s`.","95":"invalid argument. Number of draws must be a nonnegative integer. Value: `%s`.","96":"invalid assignment. Must be a nonnegative integer. Value: `%s`.","97":"invalid assignment. Must be larger than or equal to %u. Value: `%u`.","98":"invalid assignment. Must be less than or equal to %u. Value: `%u`.","99":"invalid argument. Number of trials until experiment is stopped must be a positive number. Value: `%s`.","00":"not implemented","01":"invalid invocation. `this` context must be a constructor.","02":"invalid invocation. `this` is not a complex number array.","03":"invalid arguments. Target array lacks sufficient storage to accommodate source values.","04":"invalid arguments. Creating a generic array from an ArrayBuffer is not supported.","05":"invalid arguments. Must provide a length, typed array, array-like object, or an iterable.","06":"invalid arguments. Generated array exceeds maximum array length.","07":"invalid arguments. If either of the first two arguments are complex numbers, the output array must be a complex number array or a \"generic\" array-like object.","08":"invalid arguments. If either of the first two arguments are complex numbers, the output array data type must be a complex number data type or \"generic\".","09":"not supported. The current environment does not support SharedArrayBuffers, and, unfortunately, SharedArrayBuffers cannot be polyfilled. For shared memory applications, upgrade your runtime environment to one which supports SharedArrayBuffers.","0A":"insufficient arguments. Must provide a search value.","0B":"invalid argument. Attempted to add duplicate listener.","0C":"exception","0D":"unexpected error. Benchmark failed.","0E":"unexpected error. Invalid benchmark.","0F":"unexpected error.","0G":"invalid invocation. Constructor must be called with the `new` keyword.","0H":"unexpected error. Max retries exceeded. Too many open files.","0I":"insufficient arguments. Must provide two or more iterators.","0J":"insufficient arguments. Must provide both an iterator and a static value.","0K":"invalid invocation. `this` is not a fluent interface iterator.","0L":"insufficient arguments. Must provide a hash function.","0M":"invalid argument. Iterator arguments must be iterator protocol-compliant objects.","0N":"insufficient arguments. Must provide at least one iterator function.","0O":"invalid argument. Providing a number is not supported.","0P":"invalid argument. Providing a complex number is not supported.","0Q":"invalid argument. Providing an ndarray is not supported.","0R":"invalid argument. Providing an array-like object is not supported.","0S":"invalid argument. If the first argument is an ndarray, the second argument must be an ndarray.","0T":"invalid argument. Output array must have the same number of elements (i.e., length) as the input array.","0U":"invalid argument. If the first argument is an array-like object, the second argument must be an array-like object.","0V":"invalid argument. Providing a number is not supported. Consider providing a zero-dimensional ndarray containing the numeric value.","0W":"invalid argument. Providing a complex number is not supported. Consider providing a zero-dimensional ndarray containing the complex number value.","0X":"invalid arguments. Must provide either a data source, array shape, or both.","0Y":"invalid arguments. Array shape is incompatible with provided data source. Number of data source elements does not match array shape.","0Z":"invalid argument. Cannot broadcast an array to a shape having fewer dimensions. Arrays can only be broadcasted to shapes having the same or more dimensions.","0a":"invalid argument. First argument must contain at least one element.","0b":"invalid arguments. The length of the first argument is incompatible with the second and third arguments.","0c":"invalid argument. Must provide an ndarray having two or more dimensions.","0d":"invalid arguments. Arrays must have the same shape.","0e":"invalid invocation. Cannot write to a read-only array.","0f":"invalid argument. Fourth argument length must be equal to 1 when creating a zero-dimensional ndarray.","0g":"invalid arguments. The input buffer is incompatible with the specified meta data. Ensure that the offset is valid with regard to the strides array and that the buffer has enough elements to satisfy the desired array shape.","0h":"invalid arguments. Interface must accept at least one input and/or output ndarray. Based on the provided arguments, `nin+nout` equals `0`.","0i":"invalid arguments. Fourth argument does not equal the number of input and output ndarrays.","0j":"invalid argument. Unexpected number of types. A type must be specified for each input and output ndarray for each provided ndarray function.","0k":"invalid argument. The third argument must have the same number of elements as the first argument.","0l":"invalid invocation. Insufficient arguments.","0m":"invalid invocation. Too many arguments.","0n":"invalid arguments. Unable to resolve an ndarray function supporting the provided array argument data types.","0o":"invalid operation. Unable to load Electron. Ensure Electron is installed and try again.","0p":"invalid operation. A browser environment has no support for changing the current working directory.","0q":"invalid operation. The environment does not support reading from `stdin`.","0r":"unexpected error. PRNG returned NaN.","0s":"invalid argument. Third argument must be less than or equal to the first argument.","0t":"invalid argument. Second argument must be less than or equal to the first argument.","0u":"invalid operation. Cannot delete the `base` workspace.","0v":"invalid invocation. Must provide either a string containing presentation text or an options object specifying a presentation file to load.","0w":"invalid argument. When not provided presentation text, an options argument must specify a presentation file to load.","0x":"invalid invocation. Not currently in a presentation workspace. Must provide either a string or nonnegative integer which corresponds to the identifier of the presentation to be stopped.","0y":"unexpected error. Command execution terminated.","0z":"invalid operation. Cannot load a file into a REPL which has already closed.","1A":"invalid arguments. First and second arguments must be arrays having the same length.","1B":"invalid arguments. Subpopulation size must be less than or equal to population size.","1C":"invalid arguments. Number of draws must be less than or equal to population size.","1D":"invalid argument. First argument must contain at least one element greater than zero (i.e., the total number number of observations must be greater than zero).","1E":"invalid arguments. First and second arguments must have the same length.","1F":"invalid arguments. First and second arguments must be arrays having the same length.","1G":"invalid arguments. First and second argument must have the same length.","1H":"invalid arguments. Not enough observations. First and second arguments must contain at least four observations.","1I":"invalid arguments. The first and second arguments must have the same length.","1J":"`x` or `x - y` cannot be zero for all elements.","1K":"invalid arguments. Strided array parameters are incompatible with the provided array-like object. Linear index exceeds array bounds.","1L":"invalid arguments. Unable to resolve a strided array function supporting the provided array argument data types.","1M":"invalid arguments. Interface must accept at least one strided input and/or output array. Based on the provided arguments, `nin+nout` equals `0`.","1N":"invalid argument. Unexpected number of types. A type must be specified for each strided input and output array for each provided strided array function.","1O":"invalid argument. Fourth argument is incompatible with the number of strided input and output arrays.","1P":"invalid argument. Input array offset must be a nonnegative integer.","1Q":"invalid argument. Output array offset must be a nonnegative integer.","1R":"invalid argument. Input array must be an array-like object.","1S":"invalid argument. Output array must be an array-like object.","1T":"invalid argument. Input array has insufficient elements based on the associated stride and the number of indexed elements.","1U":"invalid argument. Output array has insufficient elements based on the associated stride and the number of indexed elements.","1V":"insufficient arguments. Must provide either an array of code points or one or more code points as separate arguments.","1W":"invalid argument. Third argument must not be an empty string.","1X":"invalid argument. Pad string must not be an empty string.","1Y":"insufficient arguments. Must provide multiple functions to compose.","1Z":"insufficient arguments. Must provide multiple functions to execute sequentially.","1a":"invalid arguments. First and last arguments must be the same length.","1b":"insufficient arguments. Must provide at least two objects.","1c":"invalid invocation. `this` is not a compact adjacency matrix.","1d":"invalid argument. Cannot specify one or more accessors and a value or writable attribute in the property descriptor.","1e":"invalid argument. The list does not contain the provided list node.","1f":"unexpected error. Unable to resolve global object.","1g":"invalid argument. The output ndarray must be writable. Cannot write to a read-only ndarray.","1h":"invalid arguments. Input and output arrays must have the same length.","1i":"invalid arguments. Input and output arrays must have the same number of elements (i.e., length).","1j":"invalid arguments. Input ndarrays must be broadcast compatible.","1k":"invalid arguments. Input arrays must have the same number of elements (i.e., length).","1l":"insufficient arguments. Must provide both a target object and one or more source objects.","1m":"invalid invocation. `this` is not host tuple.","1n":"invalid invocation. `this` is not the host tuple factory.","1o":"not implemented. Please post an issue on the @stdlib/stdlib issue tracker if you would like this to be implemented.","1p":"invalid argument. Second argument must have a length equal to the size of the outermost input array dimension.","1q":"evaluation error. Did not receive timing results.","1r":"evaluation error. Unable to retrieve evaluation results. Ensure that the provided snippet does not return prematurely.","1s":"invalid argument. Must provide a zipped array.","1t":"invalid argument. Array must only contain arrays.","1u":"invalid argument. Indices must be specified as an array.","1v":"invalid argument. All indices must be integers.","1w":"invalid argument. Must provide valid indices (i.e., an index must be on the interval [0, len], where len is the tuple length).","1x":"insufficient arguments. Must provide at least one array.","1y":"invalid argument. Must provide a username or, to get who an authenticated user is following, an access token.","1z":"invalid argument. Must provide a username or, to get a list of repositories an authenticated user has starred, an access token.","2A":"invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.","2B":"invalid argument. First argument must be an ArrayBuffer. Value: `%s`.","2C":"invalid argument. Byte offset must be a nonnegative integer. Value: `%s`.","2D":"invalid argument. Byte offset must be a multiple of `%u`. Value: `%u`.","2E":"invalid arguments. ArrayBuffer view byte length must be a multiple of %u. View byte length: `%u`.","2F":"invalid argument. Length must be a nonnegative integer. Value: `%s`.","2G":"invalid arguments. ArrayBuffer has insufficient capacity. Either decrease the array length or provide a bigger buffer. Minimum capacity: `%u`.","2H":"invalid argument. Second argument must be a function. Value: `%s`.","2I":"invalid argument. First argument must have a length which is a multiple of two. Length: `%u`.","2J":"invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.","2K":"invalid argument. Must provide a nonnegative integer. Value: `%s`.","2L":"invalid argument. Index argument must be a nonnegative integer. Value: `%s`.","2M":"invalid argument. Index argument is out-of-bounds. Value: `%u`.","2N":"invalid argument. First argument must be either a complex number, an array-like object, or a complex number array. Value: `%s`.","2O":"invalid argument. First argument must be an array-like object. Value: `%s`.","2P":"invalid argument. Second argument must be a recognized array data type. Value: `%s`.","2Q":"invalid argument. Second argument must have a recognized/supported data type. Type: `%s`. Value: `%s`.","2R":"invalid argument. Unable to parse %s date.","2S":"invalid argument. Numeric %s date must be either a Unix or JavaScript timestamp.","2T":"invalid argument. %s date must either be a date string, Date object, Unix timestamp, or JavaScript timestamp.","2U":"invalid argument. Length must be a positive integer. Value: `%s`.","2V":"invalid argument. Options argument must be an object. Value: `%s`.","2W":"invalid option. `%s` option must be a string. Option: `%s`.","2X":"invalid option. `%s` option must be one of the following: \"%s\". Option: `%s`.","2Y":"invalid argument. Must provide a recognized data type. Value: `%s`.","2Z":"invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.","2a":"invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.","2b":"invalid argument. Callback argument must be a function. Value: `%s`.","2c":"invalid argument. Iterator argument must be an iterator protocol-compliant object. Value: `%s`.","2d":"invalid argument. First argument must be a nonnegative integer. Value: `%s`.","2e":"invalid argument. Third argument must be a recognized data type. Value: `%s`.","2f":"invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.","2g":"invalid argument. Start must be numeric. Value: `%s`.","2h":"invalid argument. Stop must be numeric. Value: `%s`.","2i":"invalid argument. Increment must be numeric. Value: `%s`.","2j":"invalid argument. First argument must be either a real or complex number. Value: `%s`.","2k":"invalid argument. Second argument must be either a real or complex number. Value: `%s`.","2l":"invalid argument. Third argument must be an array-like object. Value: `%s`.","2m":"invalid argument. Third argument must be a nonnegative integer. Value: `%s`.","2n":"invalid option. `%s` option must be a real or complex floating-point data type or \"generic\". Option: `%s`.","2o":"invalid option. `%s` option must be a boolean. Option: `%s`.","2p":"invalid argument. Exponent of start value must be numeric. Value: `%s`.","2q":"invalid argument. Exponent of stop value must be numeric. Value: `%s`.","2r":"invalid argument. First argument must be either an array length or an array-like object. Value: `%s`.","2s":"invalid argument. Must provide a typed array or ArrayBuffer. Value: `%s`.","2t":"invalid option. `%s` option must be a nonnegative integer. Option: `%s`.","2u":"invalid argument. Must provide an array-like object. Value: `%s`.","2v":"invalid option. `%s` option must be either `1` or `-1`. Option: `%s`.","2w":"invalid argument. Second argument must be either a function or an options object. Value: `%s`.","2x":"invalid argument. Must provide a typed array. Value: `%s`.","2y":"invalid argument. Second argument must be an array-like object. Value: `%s`.","2z":"invalid argument. Third argument must be an integer. Value: `%s`.","3A":"invalid argument. Key path must be a string or a key array. Value: `%s`.","3B":"invalid argument. Must provide a string. Value: `%s`.","3C":"invalid argument. Must provide a valid position (i.e., a nonnegative integer). Value: `%s`.","3D":"invalid argument. Must provide a valid position (i.e., within string bounds). Value: `%u`.","3E":"invalid argument. Second argument must be callable. Value: `%s`.","3F":"invalid argument. First argument must be a string. Value: `%s`.","3G":"invalid argument. Fourth argument must be one of the following: \"%s\". Value: `%s`.","3H":"invalid argument. Fifth argument must be one of the following: \"%s\". Value: `%s`.","3I":"invalid argument. Second argument must be either an object (except null) or a function. Value: `%s`.","3J":"invalid argument. Must provide a function. Value: `%s`.","3K":"invalid argument. Must provide either an options object or a callback function. Value: `%s`.","3L":"invalid argument. First argument must be an object. Value: `%s`.","3M":"invalid option. `%s` option must be a writable stream. Option: `%s`.","3N":"invalid argument. Third argument must be a function. Value: `%s`.","3O":"invalid option. `%s` option must be either a positive integer or `null`. Option: `%s`.","3P":"invalid option. `%s` option must be a positive integer. Option: `%s`.","3Q":"invalid argument. First argument must be a 1-dimensional ndarray containing double-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float64Array). Value: `%s`.","3R":"invalid argument. Second argument must be a 1-dimensional ndarray containing double-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float64Array). Value: `%s`.","3S":"invalid argument. Arrays must be the same length. First argument length: `%u`. Second argument length: `%u`.","3T":"invalid argument. First argument must be either an array-like object or a one-dimensional ndarray. Value: `%s`.","3U":"invalid argument. Second argument must be either an array-like object or a one-dimensional ndarray. Value: `%s`.","3V":"invalid argument. First argument must be a 1-dimensional ndarray containing single-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float32Array). Value: `%s`.","3W":"invalid argument. Second argument must be a 1-dimensional ndarray containing single-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float32Array). Value: `%s`.","3X":"invalid argument. Second argument must be a nonnegative integer. Value: `%s`.","3Y":"invalid argument. Second argument must not exceed the number of bytes in the input ArrayBuffer. Value: `%s`.","3Z":"invalid argument. Last argument must be a nonnegative integer. Value: `%s`.","3a":"invalid argument. Last argument must not exceed the number of bytes in the input ArrayBuffer. Value: `%s`.","3b":"invalid argument. Must provide a Buffer. Value: `%s`.","3c":"invalid argument. First argument must be a function. Value: `%s`.","3d":"invalid argument. Third argument must be a constructor function. Value: `%s`.","3e":"invalid argument. Real component must be a number. Value: `%s`.","3f":"invalid argument. Imaginary component must be a number. Value: `%s`.","3g":"invalid option. `%s` option must be one of the following: \"%s\". Option: `%s`.","3h":"invalid argument. Unsupported/unrecognized dataset name. Value: `%s`.","3i":"invalid option. Unrecognized `%s`. Option: `[%s]`.","3j":"invalid option. `%s` option must be a string or an array of strings. Option: `%s`.","3k":"invalid option. `%s` option must be a positive integer or an array of positive integers. Option: `%s`.","3l":"invalid option. `%s` option must be a positive integer array of length two. Option: `%s`.","3m":"invalid option. `%s` option cannot be less than 1790. Option: `%s`.","3n":"invalid option. `%s` option cannot be greater than 5000. Option: `%s`.","3o":"invalid argument. Must provide an error object. Value: `%s`.","3p":"invalid argument. First argument must be a valid file descriptor (i.e., nonnegative integer). Value: `%s`.","3q":"invalid argument. Last argument must be a function. Value: `%s`.","3r":"invalid argument. Must provide a valid file descriptor (i.e., a nonnegative integer). Value: `%s`.","3s":"invalid argument. First argument must be an array of strings. Value: `%s`.","3t":"invalid argument. Options argument must be either a string or an object. Value: `%s`.","3u":"invalid argument. Predicate function must be a function. Value: `%s`.","3v":"invalid argument. First argument must be an iterator. Value: `%s`.","3w":"invalid argument. Must provide an iterator. Value: `%s`.","3x":"invalid argument. Must provide an iterator protocol-compliant object. Argument: `%u`. Value: `%s`.","3y":"invalid argument. Must provide an iterator protocol-compliant object. Value: `%s`.","3z":"invalid argument. Unable to parse date string. Value: `%s`.","4A":"invalid argument. Second argument must be a number. Value: `%s`.","4B":"invalid argument. Third argument must be a number. Value: `%s`.","4C":"invalid argument. Hash function argument must be a function. Value: `%s`.","4D":"invalid option. `%s` option must be a positive number. Option: `%s`.","4E":"invalid argument. Third argument must be either a nonnegative integer or an object. Value: `%s`.","4F":"invalid arguments. All arguments must be functions. Value: `%s`.","4G":"invalid argument. Each iterator function, except the last iterator function, within an iterator pipeline must return an iterator. Value: `%s`.","4H":"invalid argument. Must provide an an iterator. Value: `%s`.","4I":"invalid return value. Callback function must return an integer. Value: `%s`.","4J":"invalid argument. Fourth argument must be a boolean. Value: `%s`.","4K":"invalid return value. Callback function must return a positive integer. Value: `%s`.","4L":"invalid argument. Fifth argument must be a callback function. Value: `%s`.","4M":"invalid argument. Third argument must be either an integer (starting index) or a callback function. Value: `%s`.","4N":"invalid argument. Fourth argument must be either an integer (ending index) or a callback function. Value: `%s`.","4O":"invalid argument. Unrecognized/unsupported scale function. Value: `%s`.","4P":"invalid argument. Must provide an iterator protocol-compliant object or a number. Argument: `%u`. Value: `%s`.","4Q":"invalid argument. First argument must be a finite number. Value: `%s`.","4R":"invalid option. `%s` option must be a positive finite number. Option: `%s`.","4S":"invalid option. `%s` option must be one of the following: \"%s\". Option: `%s`.","4T":"invalid option. `%s` option must be less than or equal to 79. Option: `%u`.","4U":"invalid option. `%s` option must be less than or equal to 77. Option: `%u`.","4V":"invalid argument. Must provide an argument having a supported data type. Value: `%s`.","4W":"invalid option. Unsupported policy for determining an output array data type. Option: `%s`.","4X":"invalid option. `%s` option must be a recognized/supported data type. Option: `%s`.","4Y":"invalid option. `%s` option must be a recognized/supported output array data type policy. Option: `%s`.","4Z":"invalid argument. Resolution table must be an object. Value: `%s`.","4a":"invalid argument. Resolution table `%s` field value must be either a function or null. Value: `%s`.","4b":"invalid argument. First argument must be a positive integer. Value: `%s`.","4c":"invalid argument. First argument must be a one-dimensional ndarray. Value: `%s`.","4d":"invalid argument. Second argument must be either +1 or -1. Value: `%s`.","4e":"invalid argument. First argument must be a one-dimensional ndarray of length %u. Actual length: `%u`.","4f":"invalid argument. First argument must be an ndarray. Value: `%s`.","4g":"invalid argument. First argument must be an ndarray whose last dimension is of size `%u`. Actual size: `%u`.","4h":"invalid argument. Second argument is incompatible with model loss function. Probability predictions are only supported when the loss function is one of the following: \"%s\". Model loss function: `%s`.","4i":"invalid argument. Second argument must be a string value equal to either \"label\", \"probability\", or \"linear\". Value: `%s`.","4j":"invalid argument. Attempting to scale a weight vector by a nonpositive value. This is likely due to too large a value of `eta*lambda`. Value: `%f`.","4k":"invalid option. `%s` option must be a nonnegative number. Option: `%s`.","4l":"invalid option. `%s` option must be an array-like object. Option: `%s`.","4m":"invalid option. First `%s` option must be one of the following: \"%s\". Option: `%s`.","4n":"invalid option. Second `%s` option must be a positive number. Option: `%s`.","4o":"invalid option. Third `%s` option must be a number. Option: `%s`.","4p":"invalid argument. Argument specifying number of dimensions must be a positive integer. Value: `%s`.","4q":"invalid argument. First argument must either be a positive integer specifying the number of clusters or a matrix containing initial centroids. Value: `%s`.","4r":"invalid option. First `%s` parameter option must be greater than or equal to the number of clusters. Options: `%f`.","4s":"invalid argument. Must provide a 1-dimensional ndarray. Value: `%s`.","4t":"invalid argument. Vector length must match centroid dimensions. Expected: `%u``. Actual: `%u``.","4u":"invalid argument. Output argument must be a 1-dimensional ndarray. Value: `%s`.","4v":"invalid argument. Must provide a 2-dimensional ndarray. Value: `%s`.","4w":"invalid argument. Number of matrix columns must match centroid dimensions. Expected: `%u``. Actual: `%u`.","4x":"invalid argument. Output vector length must match the number of data points. Expected: `%u`. Actual: `%u`.","4y":"invalid option. `%s` option method must be one of the following: \"%s\". Option: `%s`.","4z":"invalid option. First `%s` parameter option must be a positive integer. Option: `%s`.","5A":"invalid option. `%s` option must be a recognized data type. Option: `%s`.","5B":"invalid option. Data type cast is not allowed. Casting mode: `%s`. From: `%s`. To: `%s`.","5C":"invalid option. `%s` option must be a recognized order. Option: `%s`.","5D":"invalid option. `%s` option must be an array-like object containing nonnegative integers. Option: `%s`.","5E":"invalid argument. Linear index must not exceed array dimensions. Number of array elements: `%u`. Value: `%d`.","5F":"invalid argument. Input array cannot be broadcast to the specified shape, as the specified shape has a dimension whose size is less than the size of the corresponding dimension in the input array. Array shape: (%s). Desired shape: (%s). Dimension: %u.","5G":"invalid argument. Input array and the specified shape are broadcast incompatible. Array shape: (%s). Desired shape: (%s). Dimension: %u.","5H":"invalid argument. Specified axis is out-of-bounds. Must be on the interval: [-%u-1, %u]. Value: `%d`.","5I":"invalid argument. Index must be on the interval: [0, %f]. Value: `%f`.","5J":"invalid argument. Subscripts must not exceed array dimensions. Subscript: `%u`. Value: `%d`.","5K":"invalid argument. First argument must be a recognized data type. Value: `%s`.","5L":"invalid argument. First argument must have a recognized data type. Value: `%s`.","5M":"invalid arguments. Number of indices must match the number of dimensions. ndims: `%u`. nargs: `%u`.","5N":"invalid argument. Indices must be integer valued. Argument: `%u`. Value: `%s`.","5O":"invalid argument. Index must be an integer. Value: `%s`.","5P":"invalid argument. First argument must be a supported ndarray data type. Value: `%s`.","5Q":"invalid argument. Second argument must be an array-like object, typed-array-like, or a Buffer. Value: `%s`.","5R":"invalid argument. Second argument `get` and `set` properties must be functions. Value: `%s`.","5S":"invalid argument. Third argument must be an array-like object containing nonnegative integers. Value: `%s`.","5T":"invalid argument. Number of dimensions must not exceed %u due to stack limits. Value: `%u`.","5U":"invalid argument. Fourth argument must be an array-like object containing integers. Value: `%s`.","5V":"invalid argument. Fourth argument length must match the number of dimensions. Expected number of dimensions: `%u`. Strides length: `%u`.","5W":"invalid argument. Fourth argument must contain a single element equal to `0`. Value: `%d`.","5X":"invalid argument. Fifth argument must be a nonnegative integer. Value: `%s`.","5Y":"invalid argument. Sixth argument must be a supported order. Value: `%s`.","5Z":"invalid argument. Indices must be integer valued. Argument: `%i`. Value: `%u`.","5a":"invalid option. `%s` option must be a recognized mode. Option: `%s`.","5b":"invalid option. `%s` option must be an array containing recognized modes. Option: `%s`.","5c":"invalid option. Each submode must be a recognized mode. Option: `%s`.","5d":"invalid argument. First argument must be either a function or an array of functions. Value: `%s`.","5e":"invalid argument. Third argument must be an array-like object or null. Value: `%s`.","5f":"invalid argument. Fourth argument must be a positive integer. Value: `%s`.","5g":"invalid argument. Sixth argument must be a nonnegative integer. Value: `%s`.","5h":"invalid argument. Input array must be an ndarray-like object. Value: `%s`.","5i":"invalid argument. Output array must be an ndarray-like object. Value: `%s`.","5j":"invalid argument. Output argument must be either an array, typed array, or object. Value: `%s`.","5k":"invalid argument. Shape argument must be an array-like object containing nonnegative integers. Value: `%s`.","5l":"invalid argument. Linear index must be integer valued. Value: `%s`.","5m":"invalid option. `%s` option must be a supported/recognized mode. Option: `%s`.","5n":"invalid option. `%s` option must be a supported/recognized order. Option: `%s`.","5o":"invalid argument. First argument must be an array-like object containing nonnegative integers. Value: `%s`.","5p":"invalid argument. Number of provided subscripts must match the number of dimensions. ndims: `%u`. Number of subscripts: `%u`.","5q":"invalid argument. Subscripts must be integer valued. Argument: `%u`. Value: `%s`.","5r":"invalid option. `%s` option cannot be an empty array.","5s":"invalid argument. First argument must be either a nonnegative integer or an array of nonnegative integers. Value: `%s`.","5t":"invalid argument. First argument must be an ndarray-like object. Value: `%s`.","5u":"invalid option. `%s` option must either be a nonnegative integer or an array of nonnegative integers. Option: `%s`.","5v":"invalid option. `%s` option must be either a Buffer or a string. Option: `%s`.","5w":"invalid argument. Request listener must be a function. Value: `%s`.","5x":"invalid argument. Third argument must be a positive integer. Value: `%s`.","5y":"invalid argument. Number of topics must be a positive integer. Value: `%s`.","5z":"invalid argument. First argument must be a nonnegative integer which is less than the total number of topics. Value: `%s`.","6A":"invalid assignment. `%s` must be a nonnegative integer or nonnegative integer array. Value: `%s`.","6B":"invalid assignment. `%s` must be a nonnegative integer. Value: `%s`.","6C":"invalid assignment. Unrecognized/unsupported `%s`. Must be one of the following: \"%s\". Value: `%s`.","6D":"invalid assignment. Unrecognized/unsupported `%s`. Value: `%s`.","6E":"invalid assignment. `%s` must be a nonnegative integer or null. Value: `%s`.","6F":"invalid assignment. `%s` must be a string or null. Value: `%s`.","6G":"invalid argument. Must provide a supported viewer. Value: `%s`.","6H":"invalid assignment. `%s` must be a function. Value: `%s`.","6I":"invalid assignment. `%s` must be either null or an array. Value: `%s`.","6J":"invalid assignment. `%s` must be a string, function, or null. Value: `%s`.","6K":"invalid argument. `options` argument must be an object. Value: `%s`.","6L":"invalid assignment. `%s` must be a number. Value: `%s`.","6M":"invalid assignment. `%s` must be a number on the interval `[0,1]`. Value: `%f`.","6N":"invalid assignment. `%s` must be array-like. Value: `%s`.","6O":"invalid arguments. Must provide equal length array-like objects. x length: `%u`, y length: `%u`.","6P":"invalid assignment. `%s` must be a string or a function. Value: `%s`.","6Q":"invalid assignment. `%s` must be a number or a function. Value: `%s`.","6R":"invalid assignment. `%s` must be one of the following: \"%s\". Value: `%s`.","6S":"invalid assignment. `%s` must be a nonnegative integer or a function. Value: `%s`.","6T":"invalid assignment. `%s` must be a supported symbol. Symbols: \"%s\". Value: `%s`.","6U":"invalid argument. `options` argument must be a plain object. Value: `%s`.","6V":"invalid assignment. `%s` must be either a string or a string array. Value: `%s`.","6W":"invalid assignment. `%s` must be a string or a string array. Value: `%s`.","6X":"invalid assignment. `%s` must be a string or string array. Value: `%s`.","6Y":"invalid assignment. Unrecognized/unsupported symbol. Value: `[%s]`.","6Z":"invalid assignment. `%s` must be an array. Value: `%s`.","6a":"invalid assignment. `%s` must be either a finite number, Date, or null. Value: `%s`.","6b":"invalid assignment. `%s` must be a boolean or boolean array. Value: `%s`.","6c":"invalid assignment. `%s` must be either a string or string array. Value: `%s`.","6d":"invalid assignment. Unrecognized/unsupported orientation. A `%s` value must be one of the following: \"%s\". Value: `%s`.","6e":"invalid assignment. `%s` must be either a finite number or null. Value: `%s`.","6f":"invalid state. x and y are different lengths. x length: `%u`, y length: `%u`.","6g":"invalid state. Each `x[i]:y[i]` pair must be the same length. x[%u].length: `%u`, y[","6h":"invalid assignment. `%s` must be a positive integer or null. Value: `%s`.","6i":"invalid assignment. `%s` size is smaller than the number of data elements. Number of elements: `%u`. Value: `%u`.","6j":"invalid assignment. `%s` must be an array-like object or an ndarray. Value: `%s`.","6k":"invalid assignment. `%s` length exceeds maximum data buffer size. Buffer size: `%u`. Length: `%u`.","6l":"invalid assignment. `%s` must be a finite number or null. Value: `%s`.","6m":"invalid assignment. `%s` must be a finite number or null. Value: `%s.","6n":"invalid assignment. Must be an array or typed array. Value: `%s`.","6o":"invalid option. `%s` option must be an array or typed array. Option: `%s`.","6p":"invalid option. `%s` option must be a function. Option: `%s`.","6q":"invalid argument. Encoding argument must be a string. Value: `%s`.","6r":"invalid argument. Must provide either a string, nonnegative integer, or an options object. Value: `%s`.","6s":"invalid argument. First argument must be either a string or nonnegative integer. Value: `%s`.","6t":"invalid argument. Unable to parse mask expression. Ensure the expression is properly formatted, only uses the class letters \"u\", \"g\", \"o\", and \"a\", only uses the operators \"+\", \"-\", and \"=\", and only uses the permission symbols \"r\", \"w\", and \"x\". Value: `%s`.","6u":"invalid option. `%s` option must be a pseudorandom number generator function. Option: `%s`.","6v":"invalid argument. First argument must be a number and not NaN. Value: `%s`.","6w":"invalid argument. Second argument must be a number and not NaN. Value: `%s`.","6x":"invalid argument. Minimum support must be less than maximum support. Value: `[%f,%f]`.","6y":"invalid argument. First argument must be a probability. Value: `%s`.","6z":"invalid option. `%s` option must be a Uint32Array. Option: `%s`.","7A":"invalid argument. First argument must be a positive number and not NaN. Value: `%s`.","7B":"invalid argument. Second argument must be a positive number and not NaN. Value: `%s`.","7C":"invalid argument. Third argument must be a number and not NaN. Value: `%s`.","7D":"invalid argument. Third argument must be less than or equal to the first argument. Value: `%u`.","7E":"invalid argument. Second argument must be less than or equal to the first argument. Value: `%u`.","7F":"invalid %s. State array has insufficient length.","7G":"invalid %s. State array has an incompatible schema version. Expected: `%s`. Actual: `%s`.","7H":"invalid %s. State array has an incompatible number of sections. Expected: `%s`. Actual: `%s`.","7I":"invalid %s. State array has an incompatible state length. Expected: `%u`. Actual: `%u`.","7J":"invalid %s. State array length is incompatible with seed section length. Expected: `%u`. Actual: `%u`.","7K":"invalid option. `%s` option must be an Int32Array. Option: `%s`.","7L":"invalid option. `%s` option must be a positive integer less than the maximum signed 32-bit integer. Option: `%u`.","7M":"invalid option. `%s` option must be either a positive integer less than the maximum signed 32-bit integer or an array-like object containing integer values less than the maximum signed 32-bit integer. Option: `%s`.","7N":"invalid argument. Must provide an Int32Array. Value: `%s`.","7O":"invalid %s. State array has an incompatible table length. Expected: `%s`. Actual: `%s`.","7P":"invalid %s. `state` array has insufficient length.","7Q":"invalid %s. `state` array has an incompatible schema version. Expected: %s. Actual: %s.","7R":"invalid %s. `state` array has an incompatible number of sections. Expected: %s. Actual: %s.","7S":"invalid %s. `state` array has an incompatible state length. Expected: `%u`. Actual: `%u`.","7T":"invalid %s. `state` array has an incompatible section length. Expected: `%u`. Actual: `%u`.","7U":"invalid %s. `state` array length is incompatible with seed section length. Expected: `%u`. Actual: `%u`.","7V":"invalid option. `%s` option must be a positive integer less than or equal to the maximum unsigned 32-bit integer. Option: `%u`.","7W":"invalid option. `%s` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `%u`.","7X":"invalid argument. Second argument must be on the interval: (0, 1). Value: `%f`.","7Y":"invalid option. `%s` option cannot be undefined. Option: `%s`.","7Z":"invalid option. Unrecognized/unsupported PRNG. Option: `%s`.","7a":"invalid argument. First argument must be a positive number or an options object. Value: `%s`.","7b":"invalid arguments. Parameters must satisfy the following condition: %s. Value: `[%f, %f, %f]`.","7c":"invalid argument. Scale parameter must be a positive number. Value: `%s`.","7d":"invalid argument. Shape parameter must be a positive number. Value: `%s`.","7e":"invalid argument. First argument must be an integer. Value: `%s`.","7f":"invalid argument. Second argument must be an integer. Value: `%s`.","7g":"invalid argument. `n` must be less than or equal to `N`. Value: `%u`.","7h":"invalid argument. `K` must be less than or equal to `N`. Value: `%u`.","7i":"invalid argument. `%s` argument must be array-like. Value: `%s`.","7j":"invalid input option. `size` option must be less than or equal to the length of `x` when `replace` is `false`. Option: `%s`.","7k":"invalid input option. `size` option must be less than or equal to the population size when `replace` is `false`. Option: `%s`.","7l":"invalid option. `%s` option must be an array of probabilities that sum to one. Option: `%s`.","7m":"invalid argument. Minimum support must be less than maximum support. Value: `[%s,%s]`.","7n":"invalid option. `%s` option must be a string or null. Option: `%s`.","7o":"invalid argument. Minimum support must be less than or equal to maximum support. Value: `[%s,%s]`.","7p":"invalid argument. Must be one of the following: \"%s\". Value: `%s`.","7q":"invalid argument. Mode must be one of the following: \"%s\". Value: `%s`.","7r":"invalid argument. Must be one of the following: \"%s\". Value: `%s`.","7s":"invalid operation. Alias already exists in the provided context. Alias: `%s`. Value: `%s`.","7t":"invalid argument. Unrecognized workspace name. Value: `%s`.","7u":"invalid operation. Cannot read from write-only variable `%s`.","7v":"Cannot assign to read only property %s of object #","7w":"invalid option. `%s` option must be a regular expression or an array-like object. Option: `%s`.","7x":"invalid option. `%s` option must be one of `%s`. Option: `%s`.","7y":"invalid argument. Must provide either an options object or a workspace name. Value: `%s`.","7z":"invalid argument. Must provide either a string or regular expression. Value: `%s`.","8A":"invalid argument. Must provide an integer. Value: `%s`.","8B":"invalid argument. Must provide a positive integer. Value: `%s`.","8C":"invalid argument. Presentation text must be a string. Value: `%s`.","8D":"invalid argument. REPL argument must be a REPL instance. Value: `%s`.","8E":"unexpected error. Unable to reload presentation. Error: %s","8F":"unexpected error. Unable to watch presentation source file. Error: %s","8G":"invalid option. `%s` option must be either a recognized string or boolean. Option: `%s`.","8H":"invalid option. `%s` option must be either a positive integer or null. Option: `%s`.","8I":"invalid operation. Alias already exists in REPL context. Alias: `%s`. Value: `%s`.","8J":"invalid argument. Third argument must be an object. Value: `%s`.","8K":"invalid option. `%s` option must be less than or equal to the period. Option: `%u`.","8L":"invalid option. `%s` option must be greater than 2. Option: `%s`.","8M":"invalid option. `%s` option must be an integer. Option: `%s`.","8N":"invalid option. `%s` option must be an positive integer. Option: `%s`.","8O":"invalid option. `%s` option must be less than the period. Option: `%s`.","8P":"invalid option. `%s` option must be a number. Option: `%s`.","8Q":"invalid option. `%s` option must be an positive even integer. Option: `%s`.","8R":"invalid argument. First argument must be a numeric array. Value: `%s`.","8S":"invalid argument. First argument must contain at least two elements. Value: `%s`.","8T":"invalid argument. Second argument must be an array. Value: `%s`.","8U":"invalid argument. Second argument must contain at least two unique elements. Value: `%s`.","8V":"invalid option. `%s` option must be a number on the interval: [0, 1]. Option: `%f`.","8W":"invalid option. `%s` option must be an array containing at least two unique elements. Option: `%s`.","8X":"invalid argument. Must provide array-like arguments. Value: `%s`.","8Y":"invalid argument. Supplied arrays cannot be empty. Value: `%s`.","8Z":"invalid option. `%s` option must be an array. Option: `%s`.","8a":"invalid argument. Minimum support must be a number. Value: `%s`.","8b":"invalid argument. Maximum support must be a number. Value: `%s`.","8c":"invalid arguments. Minimum support must be less than maximum support. Value: `%f, %f`.","8d":"invalid assignment. Must be a number. Value: `%s`.","8e":"invalid assignment. Must be less than %f. Value: `%f`.","8f":"invalid assignment. Must be greater than %f. Value: `%f`.","8g":"invalid argument. Mean parameter `p` must be a probability. Value: `%s`.","8h":"invalid assignment. Must be a probability. Value: `%s`.","8i":"invalid argument. First shape parameter must be a positive number. Value: `%s`.","8j":"invalid argument. Second shape parameter must be a positive number. Value: `%s`.","8k":"invalid assignment. Must be a positive number. Value: `%s`.","8l":"invalid argument. Number of trials must be a positive integer. Value: `%s`.","8m":"invalid argument. Success probability must be a number between 0 and 1. Value: `%s`.","8n":"invalid assignment. Must be a positive integer. Value: `%s`.","8o":"invalid assignment. Must be a number on the interval: [0, 1]. Value: `%s`.","8p":"invalid argument. Location parameter must be a number. Value: `%s`.","8q":"invalid argument. Rate parameter must be a positive number. Value: `%s`.","8r":"invalid argument. Mean parameter `%s` must be a number. Value: `%s`.","8s":"invalid argument. Minimum support must be an integer. Value: `%s`.","8t":"invalid argument. Maximum support must be an integer. Value: `%s`.","8u":"invalid arguments. Minimum support must be less than or equal to maximum support. Value: `%d, %d`.","8v":"invalid assignment. Must be an integer. Value: `%s`.","8w":"invalid assignment. Must be less than or equal to %u. Value: `%d`.","8x":"invalid assignment. Must be greater than or equal to %u. Value: `%s`.","8y":"invalid argument. Shape parameter must be a positive integer. Value: `%s`.","8z":"invalid argument. Numerator degrees of freedom must be a positive number. Value: `%s`.","9A":"invalid argument. Mean parameter `lambda` must be a positive number. Value: `%s`.","9B":"invalid argument. Mode must be a number. Value: `%s`.","9C":"invalid arguments. Parameters must satisfy the following condition: %s. a: `%f`. b: `%f`. c: `%f`.","9D":"invalid assignment. Must be less than or equal to both the maximum support and the mode. Value: `%f`.","9E":"invalid assignment. Must be greater than or equal to both the minimum support and the mode. Value: `%f`.","9F":"invalid assignment. Must be greater than or equal to the minimum support and less than or equal to the maximum support. Value: `%f`.","9G":"invalid argument. An array argument must contain two elements. Value: `%s`.","9H":"invalid argument. Must provide a nonnegative integer or a two-element array. Value: `%s`.","9I":"invalid arguments. Number of successes cannot be larger than the total number of observations. x: `%u`. n: `%u`.","9J":"invalid option. `%s` option must be a probability. Option: `%f`.","9K":"invalid argument. Unsupported/unrecognized distribution name. Value: `%s`.","9L":"invalid argument. First argument must contain nonnegative integers. Index: `%u`. Value: `%s`.","9M":"invalid argument. Probability mass function (PMF) arguments must be numbers. Argument: `%u`. Value: `%s`.","9N":"invalid argument. Second argument must be either an array-like object (or one-dimensional ndarray) of probabilities summing to one, an array-like object (or one-dimensional ndarray) of expected frequencies, or a discrete probability distribution name. Value: `%s`.","9O":"invalid argument. Second argument must only contain numbers. Index: `%u`. Value: `%s`.","9P":"invalid argument. Second argument must only contain nonnegative numbers. Index: `%u`. Value: `%d`.","9Q":"invalid option. `%s` option must be a number on the interval: [0, 1]. Value: `%s`.","9R":"invalid argument. First argument must be an array of arrays or ndarray-like object with dimension two. Value: `%s`.","9S":"invalid argument. First argument must contain nonnegative integers. Value: `%s`.","9T":"invalid argument. First argument must either specify the order of the covariance matrix or be a square 2-dimensional ndarray for storing the covariance matrix. Value: `%s`.","9U":"invalid argument. Second argument must be a 1-dimensional ndarray. Value: `%s`.","9V":"invalid argument. The number of elements (means) in the second argument must match covariance matrix dimensions. Expected: `%u`. Actual: `%u`.","9W":"invalid argument. Vector length must match covariance matrix dimensions. Expected: `%u`. Actual: `%u`.","9X":"invalid argument. Must provide a number. Value: `%s`.","9Y":"invalid argument. Must provide a nonnegative number. Value: `%s`.","9Z":"invalid argument. Must provide a nonnegative number on the interval [0,1]. Value: `%f`.","9a":"invalid argument. Output argument must be an array-like object. Value: `%s`.","9b":"invalid argument. Window size must be a positive integer. Value: `%s`.","9c":"invalid argument. Window size must be greater than or equal to 3. Value: `%s`.","9d":"invalid option. `%s` option must be on the interval [0,1]. Option: `%f`.","9e":"invalid argument. First argument must either specify the order of the correlation distance matrix or be a square 2-dimensional ndarray for storing the correlation distance matrix. Value: `%s`.","9f":"invalid argument. The number of elements (means) in the second argument must match correlation distance matrix dimensions. Expected: `%u`. Actual: `%u`.","9g":"invalid argument. Vector length must match correlation matrix dimensions. Expected: `%u`. Actual: `%u`.","9h":"invalid argument. Vector length must match correlation distance matrix dimensions. Expected: `%u`. Actual: `%u`.","9i":"invalid argument. First argument must either specify the order of the correlation matrix or be a square 2-dimensional ndarray for storing the correlation matrix. Value: `%s`.","9j":"invalid argument. Unsupported/unrecognized kernel. Value: `%s`.","9k":"invalid argument. Second argument must be a numeric array. Value: `%s`.","9l":"invalid option. Lower bound `%s` must be strictly less than the upper bound `%s`.","9m":"invalid option. `%s` option must be an array of positive numbers. Option: `%s`.","9n":"invalid option. `%s` option must be an array of length two. Option: `%s`.","9o":"invalid option. `%s` option must be a string denoting a known kernel function or a custom function. Option: `%s`.","9p":"invalid arguments. First argument and `%s` must be arrays having the same length.","9q":"invalid invocation. Incorrect number of arguments. Must provide at least two array-like arguments. Value: `%s`.","9r":"invalid option. `%s` must be a number on the interval: [0, 1]. Value: `%f`.","9s":"invalid argument. First argument must be a typed array or number array. Value: `%s`.","9t":"invalid argument. Second argument must be either a CDF function or a string. Value: `%s`.","9u":"invalid argument. Distribution parameter must be a number. Value: `%s`.","9v":"invalid option. `%s` option must contain at least two unique elements. Value: `%s`.","9w":"invalid argument. Provided arrays cannot be empty. Value: `%s`.","9x":"invalid argument. First argument must be an array of probabilities. Value: `%s`.","9y":"invalid argument. When specified, `%s` arguments must contain at least a length of %u. Value: `%u`.","9z":"invalid argument. Second argument must be one of the following: %s. Value: `%s`.","A0":"invalid option. `%s` option must be a number in `[0,1]`. Option: `%s`.","A1":"invalid option. `%s` option must be a number on the interval: [-1, 1]. Option: `%s`.","A2":"invalid argument. First argument must contain at least two elements. Value: `%s`.","A3":"invalid argument. Second argument must be either a numeric array or an options object. Value: `%s`.","A4":"invalid option. `%s` option must be either `equal` or `unequal`. Option: `%s`.","A5":"invalid argument. `%s` argument must be a numeric array. Value: `%s`.","A6":"invalid option. `%s` option must be one of the following: %s. Option: `%s`.","A7":"invalid argument. Third argument must be a positive number. Value: `%s`.","A8":"invalid argument. Fourth argument must be a positive number. Value: `%s`.","A9":"invalid operation. Serialization function must return a string or Buffer. Value: `%s`.","AA":"invalid argument. In binary mode, a provided value must be a string, Buffer, or Uint8Array. Value: `%s`.","AB":"invalid option. `%s` option must be either a string or a regular expression. Option: `%s`.","AC":"invalid argument. First input array offset must be a nonnegative integer. Value: `%s`.","AD":"invalid argument. Second input array offset must be a nonnegative integer. Value: `%s`.","AE":"invalid argument. Output array offset must be a nonnegative integer. Value: `%s`.","AF":"invalid argument. Must provided recognized data types. Unable to resolve a data type string. Value: `%s`.","AG":"invalid argument. Input array offset must be a nonnegative integer. Value: `%s`.","AH":"invalid argument. Input array stride must be an integer. Value: `%s`.","AI":"invalid argument. Output array stride must be an integer. Value: `%s`.","AJ":"invalid option. `%s` option must be an array of strings. Option: `%s`.","AK":"invalid argument. Must provide a valid position (i.e., within string bounds). Value: `%s`.","AL":"invalid argument. Third argument must be a boolean. Value: `%s`.","AM":"invalid argument. Must provide valid code points (i.e., nonnegative integers). Value: `%s`.","AN":"invalid argument. Must provide a valid code point (cannot exceed max). Value: `%s`.","AO":"invalid argument. Third argument must be a string. Value: `%s`.","AP":"invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.","AQ":"invalid argument. Third argument must be a string or an array of strings. Value: `%s`.","AR":"invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.","AS":"invalid argument. Second argument must be an array of strings. Value: `%s`.","AT":"invalid argument. Second argument must be a string or regular expression. Value: `%s`.","AU":"invalid argument. Third argument must be a string or replacement function. Value: `%s`.","AV":"invalid argument. Must provide a string or an array of strings. Value: `%s`.","AW":"invalid argument. If only providing a single argument, must provide a Date object. Value: `%s`.","AX":"invalid argument. First argument must be either a string or integer. Value: `%s`.","AY":"invalid argument. Day number must be on the interval: `[1, %u]`. Value: `%d`.","AZ":"invalid argument. First argument must be either a string, integer, or Date object. Value: `%s`.","Aa":"invalid argument. An integer month value must be on the interval: [1, 12]. Value: `%s`.","Ab":"invalid argument. Must provide a recognized month. Value: `%s`.","Ac":"invalid argument. Must provide either an integer or a `Date` object. Value: `%s`.","Ad":"invalid argument. Must provide either a string, integer, or Date object. Value: `%s`.","Ae":"invalid argument. Must provide an array of nonnegative integers. Value: `%s`.","Af":"invalid argument. Input array must contain two elements. Value: `%s`.","Ag":"invalid argument. Must provide a collection. Value: `%s`.","Ah":"invalid argument. First argument must be a collection. Value: `%s`.","Ai":"invalid argument. First argument must be either an array, typed array, or an array-like object. Value: `%s`.","Aj":"invalid argument. All arguments must be functions. Value: `%s`.","Ak":"invalid argument. Number of function invocations must be a nonnegative integer. Value: `%s`.","Al":"invalid argument. First argument must be an array of functions. Value: `%s`.","Am":"invalid argument. Last argument must be a collection. Value: `%s`.","An":"invalid argument. Must provide either a valid buffer size (i.e., a positive integer) or an array-like object which can serve as the underlying buffer. Value: `%s`.","Ao":"invalid argument. An iterator must return an array-like object containing vertices. Value: `%s`.","Ap":"invalid argument. Callback must return an array-like object containing vertices. Value: `%s`.","Aq":"invalid argument. Callback must return an array-like object. Value: `%s`.","Ar":"invalid argument. Each element of the adjacency list must be an array-like object. Value: `%s`.","As":"invalid argument. Each element of the edge list must be an array-like object. Value: `%s`.","At":"invalid argument. Second argument must be an array-like object or an iterable. Value: `%s`.","Au":"invalid argument. First argument exceeds matrix dimensions. Value: `%u`.","Av":"invalid argument. Second argument exceeds matrix dimensions. Value: `%u`.","Aw":"invalid argument. Vertex cannot exceed matrix dimensions. Value: `%u`.","Ax":"invalid argument. Second argument must be a recognized output path convention. Value: `%s`.","Ay":"invalid argument. Cannot convert Windows extended-length paths to POSIX paths. Value: `%s`.","Az":"invalid argument. Arity argument must be a positive integer. Value: `%s`.","B0":"invalid argument. Property descriptor must be an object. Value: `%s`.","B1":"invalid argument. The `value` property of the property descriptor must be a function. Value: `%s`.","B2":"invalid argument. Second argument must be an object of property descriptors. Value: `%s`.","B3":"invalid argument. Path must be a string. Value: `%s`.","B4":"invalid argument. Third argument must be a recognized location. Value: `%s`.","B5":"invalid argument. Must provide a recognized iteration direction. Value: `%s`.","B6":"invalid argument. Must provide an object-like value. Value: `%s`.","B7":"invalid argument. Must provide a regular expression string. Value: `%s`.","B8":"invalid argument. Filename must be a string. Value: `%s`.","B9":"invalid argument. First argument must be an array of positive integers. Value: `%s`.","BA":"invalid argument. First argument must be object-like. Value: `%s`.","BB":"invalid argument. Must provide an array of arrays. Value: `%s`.","BC":"invalid argument. Must provide a boolean. Value: `%s`.","BD":"invalid argument. Second argument must have a prototype from which another object can inherit. Value: `%s`.","BE":"invalid argument. A provided constructor must be either an object (except null) or a function. Value: `%s`.","BF":"invalid argument. If the input array is an ndarray, the output array must also be an ndarray. Value: `%s`.","BG":"invalid argument. If the input array is an array-like object, the output array must also be an array-like object. Value: `%s`.","BH":"invalid argument. First argument must be an array-like object or an ndarray. Value: `%s`.","BI":"invalid argument. If the first input array is an ndarray, the second input array must also be an ndarray. Value: `%s`.","BJ":"invalid argument. If the input arrays are ndarrays, the output array must also be an ndarray. Value: `%s`.","BK":"invalid argument. If the first input array is an array-like object, the second input array must also be an array-like object. Value: `%s`.","BL":"invalid argument. If the input arrays are array-like objects, the output array must also be an array-like object. Value: `%s`.","BM":"invalid argument. First argument must be an array-like object containing array-like objects. Index: `%u`. Value: `%s`.","BN":"invalid argument. First argument must be a three-dimensional nested array. Index: `%u`. Value: `%s`.","BO":"invalid argument. First argument must be a four-dimensional nested array. Index: `%u`. Value: `%s`.","BP":"invalid argument. First argument must be a four-dimensional nested array. Indices: (%u, %u). Value: `%s`.","BQ":"invalid argument. First argument must be a four-dimensional nested array. Indices: (%u, %u, %u). Value: `%s`.","BR":"invalid argument. First argument must be a five-dimensional nested array. Index: `%u`. Value: `%s`.","BS":"invalid argument. First argument must be a five-dimensional nested array. Indices: (%u, %u). Value: `%s`.","BT":"invalid argument. First argument must be a five-dimensional nested array. Indices: (%u, %u, %u). Value: `%s`.","BU":"invalid argument. First argument must be a five-dimensional nested array. Indices: (%u, %u, %u, %u). Value: `%s`.","BV":"invalid argument. A merge source must be an object. Value: `%s`.","BW":"invalid option. `%s` option must be either a boolean or a function. Option: `%s`.","BX":"invalid argument. Source argument must be an object. Value: `%s`.","BY":"invalid argument. Target argument must be an object. Value: `%s`.","BZ":"invalid argument. Must provide an array of strings. Value: `%s`.","Ba":"invalid argument. Field names must be distinct. Value: `%s`.","Bb":"invalid argument. Provided field name is reserved. Name: `%s`.","Bc":"invalid arguments. Arguments are incompatible with the number of tuple fields. Number of fields: `%u`. Number of data elements: `%u`.","Bd":"invalid argument. Source is incompatible with the number of tuple fields. Number of fields: `%u`. Source length: `%u`.","Be":"invalid invocation. Number of arguments is incompatible with the number of tuple fields. Number of fields: `%u`. Number of arguments: `%u`.","Bf":"invalid option. `%s` option must be a recognized data type. Option: `%s`.","Bg":"invalid argument. Second argument must be either a string or an array of strings. Value: `%s`.","Bh":"invalid argument. Must provide a valid URI. Value: `%s`.","Bi":"unexpected error. Child process failed with exit code: `%u`.","Bj":"unexpected error. Child process failed due to termination signal: `%s`.","Bk":"invalid argument. Reviver argument must be a function. Value: `%s`.","Bl":"invalid argument. Second argument must be an array-like object containing nonnegative integers. Value: `%s`.","Bm":"invalid argument. Must provide either an array, typed array, or an array-like object. Value: `%s`.","Bn":"invalid argument. Must provide a recognized type. Value: `%s`.","Bo":"invalid argument. Second argument must be an array containing only nonnegative integers. Value: `%s`.","Bp":"invalid invocation. Unexpected number of input arguments. Expected: `%u`. Actual: `%u`.","Bq":"evaluation error. Encountered an error when evaluating snippet. %s","Br":"invalid option. `%s` option must be a positive integer or null. Option: `%s`.","Bs":"insufficient arguments. Expected %u argument(s) and only received %u argument(s).","Bt":"invalid invocation. The configured arity exceeds the number of possible curried function invocations. Expected: %u. Actual: %u.","Bu":"invalid invocation. Number of arguments exceeds the number of possible curried function invocations. Expected: `%u`. Actual: `%u`.","Bv":"invalid invocation. The configured arity exceeds the number of possible curried function invocations. Expected: `%u`. Actual: `%u`.","Bw":"invalid argument. Must provide array arguments. Value: `%s`.","Bx":"invalid argument. Last argument must be either an array or an options object. Value: `%s`.","By":"invalid argument. Repository slug must be a string. Value: `%s`.","Bz":"invalid argument. Issue title must be a string. Value: `%s`.","C0":"invalid option. `%s` must be one of the following: \"%s\". Option: `%s`.","C1":"invalid argument. Repository name must be a string. Value: `%s`.","C2":"invalid option. `%s` option must be a valid URI. Option: `%s`.","C3":"invalid option. `%s` option must be a 20-character string. Option: `%s`.","C4":"invalid option. `%s` option must be a 40-character string. Option: `%s`.","C5":"invalid argument. Token id must be a nonnegative integer. Value: `%s`.","C6":"invalid argument. Workflow identifier must be a string. Value: `%s`.","C7":"invalid option. `%s` option must be an object of input key-value pairs. Option: `%s`.","C8":"invalid option. `%s` option must be a positive integer or \"last\". Option: `%s`.","C9":"invalid option. `%s` organization name option must be a string. Option: `%s`.","CA":"invalid option. Unknown method. Option: `%s`.","CB":"invalid option. Unrecognized `%s` option. Must be one of the following: \"%s\". Option: `%s`.","CC":"invalid argument. Repository slug must consist of an owner and a repository (e.g., \"stdlib-js/utils\"). Value: `%s`.","CD":"invalid argument. Topics argument must be an array of strings. Value: `%s`.","CE":"invalid option. `%s` option must be one of the following: \"%s\" or \"%s\". Option: `%s`.","CF":"invalid argument. Must provide a supported license SPDX identifier. Value: `%s`.","CG":"invalid argument. Must provide a supported file type. Value: `%s`.","CH":"invalid argument. First argument must be either a string or Buffer. Value: `%s`.","CI":"invalid argument. Second argument must be either a string or Buffer. Value: `%s`.","CJ":"invalid argument. A header object must map each filename extension to a license header string. `%s: %s`. Value: `%s`.","CK":"invalid argument. Second argument must be either a string or an object whose keys are filename extensions and whose values are header strings. Value: `%s`.","CL":"invalid argument. Second argument must be either a string, Buffer, or regular expression. Value: `%s`.","CM":"invalid argument. A header object must map each filename extension to a license header string or regular expression. `%s: %s`. Value: `%s`.","CN":"invalid argument. Second argument must be either a string, a regular expression, or an object whose keys are filename extensions and whose values are header strings or regular expressions. Value: `%s`.","CO":"invalid argument. Third argument must be either a string or Buffer. Value: `%s`.","CP":"invalid argument. Third argument must be either a string or an object whose keys are filename extensions and whose values are header strings. Value: `%s`.","CQ":"invalid argument. Database already contains an entry for the provided URI: `%s`.","CR":"invalid argument. Database already contains an entry for the provided id: `%s`.","CS":"invalid argument. First argument must be a URI. Value: `%s`.","CT":"invalid argument. Second argument must be either a string or regular expression. Value: `%s`.","CU":"invalid option. A `%s` option object must map each filename extension to a license header string or regular expression. `%s: %s`. Value: `%s`.","CV":"invalid option. `%s` option must be either a string, a regular expression, or an object whose keys are filename extensions and whose values are header strings or regular expressions. Option: `%s`.","CW":"invalid option. `%s` option must end with \"package.json\". Option: `%s`.","CX":"invalid argument. Last argument must be a callback function. Value: `%s`.","CY":"invalid option. `%s` option must be an array of package names. Option: `%s`.","CZ":"invalid argument. Version argument must be a string. Value: `%s`.","Ca":"invalid argument. Must provide either a string or a Buffer. Value: `%s`.","Cb":"invalid argument. Must provide either a string or Buffer. Value: `%s`.","Cc":"invalid argument. First argument must be either a string or array of strings. Value: `%s`.","Cd":"invalid option. `%s` option must be an object. Option: `%s`.","Ce":"unexpected error. File does not exist. Unable to resolve file: %s.","Cf":"invalid argument. Must provide either a string or an array of strings. Value: `%s`.","Cg":"invalid argument. Must provide either a string or an array of strings. Value: `%s`. Index: `%u`.","Ch":"unexpected error. Failed to sort packages. Detected the following dependency chain containing a cycle: `%s`.","Ci":"invalid node. Equation comments must have a valid label. Node: `%s`.","Cj":"invalid node. Equation comments must have valid alternate text. Node: `%s`.","Ck":"invalid node. Equation comments must have valid raw equation text. Node: `%s`.","Cl":"invalid node. Invalid equation comment. Ensure that the Markdown file includes both starting and ending equation comments. Node: `%s`.","Cm":"invalid node. Equation element must have a valid label. Node: `%s`.","Cn":"unexpected error. Code block configuration settings should be provided as comma-separated `key:value` pairs (e.g., `foo:true, bar:\"string\", baz:[\"error\",2]`). Value: `%s`.","Co":"unexpected error. Code block configuration values should be parseable as JSON. Value: `%s`.","Cp":"unexpected error. Encountered an error when executing code block. File: `%s`. Message: `%s`.","Cq":"unexpected error. Expected code block to throw an exception. File: `%s`.","Cr":"invalid node. Ensure that the Markdown file includes both a starting `
` and closing `
\\n\\n`. Node: `%s`.","Cs":"invalid node. Equation comments must have valid equation text. Node: `%s`.","Ct":"invalid node. Equation comments must have valid labels. Node: `%s`.","Cu":"invalid option. `%s` option must begin with \"@stdlib/\". Option: `%s`.","Cv":"invalid argument. First argument must be a list of file paths. Value: `%s`.","Cw":"invalid arguments. Subpopulation size must be less than or equal to the population size.","Cx":"invalid arguments. Number of draws must be less than or equal to the population size.","Cy":"invalid arguments. Fourth argument is not compatible with the number of input and output ndarrays.","Cz":"invalid arguments. Input buffer is incompatible with the specified meta data. Ensure that the offset is valid with regard to the strides array and that the buffer has enough elements to satisfy the desired array shape.","D0":"invalid arguments. Length of the first argument is incompatible with the second and third arguments.","D1":"invalid argument. Provided collections must have the same length.","D2":"invalid argument. First argument must be an array-like object containing nonnegative integers.","D3":"invalid arguments. Input arrays must have the same length.","D4":"invalid argument. Must provide valid indices (i.e., must be a nonnegative integer less than or equal to the tuple length).","D5":"not implemented. Please post an issue on the @stdlib/stdlib issue tracker if you would like this to be implemented. https://github.com/stdlib-js/stdlib/issues/new/choose","D6":"invalid operation. Parser is unable to parse new chunks, as the parser has been closed. To parse new chunks, create a new parser instance.","D7":"invalid operation. Parser is in an unrecoverable error state. To parse new chunks, create a new parser instance.","D8":"invalid argument. First argument must be a one-dimensional ndarray containing double-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float64Array). Value: `%s`.","D9":"invalid argument. Second argument must be a one-dimensional ndarray containing double-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float64Array). Value: `%s`.","DA":"invalid argument. First argument must be a one-dimensional ndarray containing single-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float32Array). Value: `%s`.","DB":"invalid argument. Second argument must be a one-dimensional ndarray containing single-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float32Array). Value: `%s`.","DC":"invalid assignment. `%s` size is less than the number of data elements. Number of elements: `%u`. Value: `%u`.","DD":"invalid assignment. `%s` must be a string or an array of strings. Value: `%s`.","DE":"invalid assignment. `%s` must be a number or an array of numbers. Value: `%s`.","DF":"invalid assignment. `%s` must be a nonnegative integer or an array of nonnegative integers. Value: `%s`.","DG":"invalid assignment. `%s` must be a finite number, Date, or null. Value: `%s`.","DH":"invalid assignment. `%s` must be a boolean or an array of booleans. Value: `%s`.","DI":"invalid assignment. `%s` must be a number or null. Value: `%s`.","DJ":"invalid assignment. `%s` must be an array of strings or an empty array. Value: `%s`.","DK":"invalid state. x and y are different lengths. x length: `%u`. y length: `%u`.","DL":"invalid state. Each `x[i]:y[i]` pair must be the same length. x[%u].length: `%u`, y[%u].length: `%u`.","DM":"invalid assignment. `%s` must be a number on the interval: [0, 1]. Value: `%f`.","DN":"invalid assignment. `%s` must be null or an array. Value: `%s`.","DO":"invalid arguments. Must provide equal length array-like objects. x length: `%u`. y length: `%u`.","DP":"invalid argument. The number of comparisons must be greater or equal to the number of p-values to be adjusted. Value: `%u`.","DQ":"invalid argument. Second argument must be one of the following: \"%s\". Value: `%s`.","DR":"invalid option. `%s` option must be a number on the interval: [0, 1]. Option: `%s`.","DS":"invalid argument. First argument must contain nonnegative integers. Indices: (%s). Value: `%s`.","DT":"invalid argument. First argument must be an array of arrays or a two-dimensional ndarray-like object. Number of input array dimensions: %u.","DU":"invalid argument. First argument must be an array of arrays or a two-dimensional ndarray-like object. Value: `%s`.","DV":"invalid arguments. Minimum support must be less than maximum support. Value: `(%f, %f)`.","DW":"invalid arguments. Minimum support must be less than or equal to maximum support. Value: `(%d, %d)`.","DX":"invalid argument. Mean parameter must be a positive number. Value: `%s`.","DY":"invalid argument. Mean parameter must be a probability. Value: `%s`.","DZ":"invalid option. `%s` option must be on the interval: [0, 1]. Option: `%f`.","Da":"invalid argument. Must provide a nonnegative number on the interval: [0, 1]. Value: `%f`.","Db":"invalid argument. First argument must either specify the order of the covariance matrix or be a square two-dimensional ndarray for storing the covariance matrix. Value: `%s`.","Dc":"invalid argument. Second argument must be a one-dimensional ndarray. Value: `%s`.","Dd":"invalid argument. Must provide a one-dimensional ndarray. Value: `%s`.","De":"invalid argument. First argument must either specify the order of the correlation distance matrix or be a square two-dimensional ndarray for storing the correlation distance matrix. Value: `%s`.","Df":"invalid argument. First argument must either specify the order of the correlation matrix or be a square two-dimensional ndarray for storing the correlation matrix. Value: `%s`.","Dg":"invalid argument. Input array must be an array-like object. Value: `%s`.","Dh":"invalid argument. Output array must be an array-like object. Value: `%s`.","Di":"invalid argument. Mask array offset must be a nonnegative integer. Value: `%s`.","Dj":"invalid argument. Must provide recognized data types. Unable to resolve a data type string. Value: `%s`.","Dk":"invalid option. `%s` option must be one of the following: ['%s']. Option: `%s`.","Dl":"invalid argument. Database already contains an entry for the provided URI. Value: `%s`.","Dm":"invalid argument. Database already contains an entry for the provided id. Value: `%s`.","Dn":"invalid argument. First argument must be an array of objects. Value: `%s`.","Do":"unexpected error. File does not exist. Unable to resolve file: `%s`.","Dp":"invalid argument. First argument must be either a string or an array of strings. Value: `%s`.","Dq":"invalid argument. First argument must be either a string or an array of strings. Value: `%s`. Index: `%u`.","Dr":"invalid argument. Must provide either an options object or a function. Value: `%s`.","Ds":"invalid option. `%s` option must be a nonnegative integer or an array of nonnegative integers. Option: `%s`.","Dt":"invalid argument. Fourth argument must contain a single element equal to 0. Value: `%d`.","Du":"invalid argument. Indices must be integer valued. Argument: `%i`. Value: `%s`.","Dv":"invalid argument. Must provide an ndarray. Value: `%s`.","Dw":"invalid argument. Second argument must be a supported data type policy. Value: `%s`.","Dx":"invalid argument. Must provide either an integer or a Date object. Value: `%s`.","Dy":"invalid argument. Must provide a valid duration string. Value: `%s`.","Dz":"invalid argument. Day number must be on the interval: [1, %u]. Value: `%d`.","E0":"invalid argument. First argument must be a string or integer. Value: `%s`.","E1":"invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.","E2":"invalid argument. Third argument must be either an integer (starting index) or a function. Value: `%s`.","E3":"invalid argument. Fourth argument must be either an integer (ending index) or a function. Value: `%s`.","E4":"invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.","E5":"invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.","E6":"invalid argument. First argument must be astring. Value: `%s`.","E7":"invalid argument. Second argument must be either an integer (starting index) or a function. Value: `%s`.","E8":"invalid argument. Third argument must be either an integer (ending index) or a function. Value: `%s`.","E9":"invalid argument. ArrayBuffer byte length must be a multiple of %u. Byte length: `%u`.","EA":"invalid argument. Byte offset must be a multiple of %u. Value: `%u`.","EB":"invalid argument. First argument must have a length which is a multiple of %u. Length: `%u`.","EC":"invalid argument. Second argument must be a supported data type. Value: `%s`.","ED":"invalid argument. First argument must be one of the following data types: \"%s\". Value: `%s`.","EE":"invalid argument. Second argument must be either an integer (starting view index) or a function. Value: `%s`.","EF":"invalid argument. Third argument must be either an integer (ending view index) or a function. Value: `%s`.","EG":"invalid option. `size` option must be less than or equal to the length of `x` when `replace` is `false`. Option: `%s`.","EH":"invalid option. `size` option must be less than or equal to the population size when `replace` is `false`. Option: `%s`.","EI":"invalid argument. Second argument must be either a scalar or an ndarray-like object. Value: `%s`.","EJ":"invalid argument. Minimum support must be less than maximum support. Value: `[%f, %f]`.","EK":"invalid argument. Minimum support must be less than or equal to maximum support. Value: `[%d, %d]`.","EL":"invalid %s. `state` array has an incompatible schema version. Expected: `%s`. Actual: `%s.`","EM":"invalid %s. `state` array has an incompatible number of sections. Expected: `%s`. Actual: `%s`.","EN":"invalid argument. Number of draws must be less than or equal to the population size. Value: `%u`.","EO":"invalid argument. Subpopulation size must be less than or equal to the population size. Value: `%u`.","EP":"invalid argument. Must provide a regular expression. Value: `%s`.","EQ":"invalid argument. Second argument must be an object containing property descriptors. Value: `%s`.","ER":"invalid argument. Must provide an object (except null). Value: `%s`.","ES":"invalid argument. First argument must be an object (except null). Value: `%s`.","ET":"unexpected error. Encountered an invalid record. Field %d on line %d contains a closing quote which is not immediately followed by a delimiter or newline.","EU":"unexpected error. Encountered an invalid record. Field %d on line %d contains an opening quote which does not immediately follow a delimiter or newline.","EV":"unexpected error. Encountered an invalid record. Field %d on line %d contains an escape sequence which is not immediately followed by a special character sequence.","EW":"unexpected error. Encountered an invalid record. Field %d on line %d contains an escape sequence within a quoted field which is not immediately followed by a quote sequence.","EX":"invalid argument. First argument must be a function having at least one parameter. Value: `%s`.","EY":"invalid argument. All arguments must be objects. Index: `%u`. Value: `%s`.","EZ":"invalid argument. First argument must be a non-null object. Value: `%s`.","Ea":"invalid argument. First argument must be an ndarray whose last dimension is of size %u. Actual size: `%u`.","Eb":"invalid argument. Attempting to scale a weight vector by a nonpositive value. This is likely due to too large a value of eta * lambda. Value: `%f`.","Ec":"invalid argument. Output argument must be a one-dimensional ndarray. Value: `%s`.","Ed":"invalid argument. Must provide a two-dimensional ndarray. Value: `%s`.","Ee":"invalid argument. Number of matrix columns must match centroid dimensions. Expected: `%u`. Actual: `%u`.","Ef":"invalid argument. First argument must be an integer, null, or undefined. Value: `%s`.","Eg":"invalid argument. Second argument must be an integer, null, or undefined. Value: `%s`.","Eh":"invalid argument. Third argument must be an integer, null, or undefined. Value: `%s`.","Ei":"invalid argument. Third argument cannot be zero. Value: `%s`.","Ej":"invalid argument. First argument must be a valid subsequence string. Value: `%s`.","Ek":"invalid argument. A subsequence string must have a non-zero increment. Value: `%s`.","El":"invalid argument. The subsequence string resolves to a slice which exceeds index bounds. Value: `%s`.","Em":"invalid argument. Provided arguments must be either a Slice, integer, null, or undefined. Argument: `%d`. Value: `%s`.","En":"invalid operation. Unsupported slice operation. Value: `%s`.","Eo":"invalid operation. Number of array dimensions does not match the number of slice dimensions. Array shape: (%s). Slice dimensions: %u.","Ep":"invalid operation. Slice exceeds array bounds. Array shape: (%s).","Eq":"invalid operation. A subsequence increment must be a non-zero integer. Value: `%s`.","Er":"invalid operation. A subsequence may only include a single ellipsis. Value: `%s`.","Es":"invalid argument. Cannot write to a read-only array.","Et":"invalid argument. Number of slice dimensions does not match the number of array dimensions. Array shape: (%s). Slice dimensions: %u.","Eu":"invalid argument. Slice arguments must be either a Slice, integer, null, or undefined. Value: `%s`.","Ev":"invalid operation. Number of slice dimensions does not match the number of array dimensions. Array shape: (%s). Slice dimensions: %u.","Ew":"invalid operation. Assigned value cannot be safely cast to the target array data type. Data types: [%s, %s].","Ex":"invalid operation. Unsupported target array data type. Data type: `%s`.","Ey":"invalid argument. Index must be on the interval: [0, %d]. Value: `%d`.","Ez":"invalid argument. Slice exceeds array bounds. Array shape: (%s).","F0":"invalid argument. Input array values cannot be safely cast to the output array data type. Data types: [%s, %s].","F1":"invalid argument. Second argument must be an ndarray. Value: `%s`.","F2":"invalid argument. First argument must be an ndarray having at least two dimensions.","F3":"invalid argument. Second argument must be an array of nonnegative integers. Value: `%s`.","F4":"invalid option. Cannot write to read-only array.","F5":"invalid argument. First argument must be an array of nonnegative integers. Value: `%s`.","F6":"invalid argument. Must provide an ndarray having a supported data type. Value: `%s`.","F7":"invalid argument. First argument must be an ndarray having one or more dimensions. Number of dimensions: %d.","F8":"invalid argument. Dimension index exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.","F9":"invalid argument. Third argument must be either a Slice, integer, null, or undefined. Value: `%s`.","FA":"invalid argument. First argument must be an ndarray having at least three dimensions.","FB":"invalid argument. Index must resolve to a value on the interval: [0, %d]. Value: `%d`.","FC":"invalid argument. First argument must be a recognized index mode. Value: `%s`.","FD":"invalid argument. Third argument exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.","FE":"invalid argument. Number of indices does not match the number of array dimensions. Array shape: (%s). Number of indices: %u.","FF":"invalid argument. Each index argument must be either an integer, null, or undefined. Value: `%s`.","FG":"invalid argument. First argument must be a complex number. Value: `%s`.","FH":"invalid arguments. Input arrays must be broadcast compatible.","FI":"invalid argument. The first and second arguments must have the same length.","FJ":"invalid argument. First argument must be either an ndarray or an array of ndarrays. Value: `%s`.","FK":"invalid argument. An ndarray argument must be an ndarray. Value: `%s`.","FL":"invalid argument. Second argument must be a valid property name. Value: `%s`.","FM":"invalid argument. First argument must have a `%s` method.","FN":"invalid argument. Second argument must an array of strings. Value: `%s`.","FO":"invalid argument. Third argument must be a supported data type. Value: `%s`.","FP":"invalid argument. Index argument is out-of-bounds. Value: `%s`.","FQ":"invalid argument. Second argument must be a complex number. Value: `%s`.","FR":"invalid argument. Index arguments must be integers. Value: `%s`.","FS":"invalid argument. Slice exceeds array bounds. Array length: %d.","FT":"invalid argument. Input array and the output array slice are broadcast incompatible. Array length: %u. Desired length: %u.","FU":"invalid operation. Slice exceeds array bounds.","FV":"invalid argument. First argument must be a valid index array.","FW":"invalid operation. This array index instance has already been freed and can no longer be used.","FX":"invalid argument. First argument must be a complex-valued floating-point array. Value: `%s`.","FY":"invalid operation. Index exceeds array bounds.","FZ":"invalid operation. Unrecognized array index type. Value: `%s`.","Fa":"invalid operation. Unable to resolve array index. Value: `%s`.","Fb":"invalid option. `%s` option is missing a `%s` method. Option: `%s`.","Fc":"invalid operation. If not provided an initial value, an array must contain at least one element.","Fd":"invalid arguments. Must provide equal length array-like objects.","Fe":"Index out of bounds","Ff":"invalid option. `%s` option must be less than or equal to 64. Option: `%u`.","Fg":"invalid argument. Unable to parse input string as a complex number. Value: `%s`.","Fh":"invalid operation. Cannot access settings for a REPL which has already closed.","Fi":"invalid argument. First argument must be a recognized setting. Value: `%s`.","Fj":"invalid invocation. `this` is not a boolean array.","Fk":"invalid argument. Unable to parse commits for package: `%s`.","Fl":"invalid argument. Unrecognized release type: `%s`.","Fm":"invalid argument. First argument must be a supported BLAS memory layout. Value: `%s`.","Fn":"invalid argument. First argument must be an existing theme name. Value: `%s`.","Fo":"invalid argument. First argument must not be the default theme name. Value: `%s`.","Fp":"invalid argument. Second argument must be an object. Value: `%s`.","Fq":"invalid arguments. Number of values does not equal the number of falsy values in the mask array.","Fr":"invalid arguments. Insufficient values to satisfy mask array.","Fs":"invalid arguments. Input arguments are not broadcast compatible.","Ft":"invalid arguments. Number of values does not equal the number of truthy values in the mask array.","Fu":"invalid argument. Third argument cannot be safely cast to the input array data type. Data types: [%s, %s].","Fv":"invalid argument. First argument must be a boolean. Value: `%s`.","Fw":"invalid argument. The third argument must be broadcast compatible with the second argument. Array shape: (%d). Desired shape: (%d).","Fx":"invalid argument. First argument must be a valid order. Value: `%s`.","Fy":"invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.","Fz":"invalid argument. Third argument must be a nonnegative integer. Value: `%d`.","G0":"invalid argument. Eighth argument must be non-zero. Value: `%d`.","G1":"invalid argument. Twelfth argument must be non-zero. Value: `%d`.","G2":"invalid argument. Seventh argument must be non-zero. Value: `%d`.","G3":"invalid argument. Tenth argument must be non-zero. Value: `%d`.","G4":"invalid argument. Fourth argument must be greater than or equal to max(1,%d). Value: `%d`.","G5":"invalid argument. First argument must be a string or an array of strings. Value: `%s`.","G6":"invalid option. `%s` option must be a valid mode. Option: `%s`.","G7":"invalid argument. First argument must be a nonnegative integer. Value: `%d`.","G8":"invalid argument. Sixth argument must be greater than or equal to %d. Value: `%d`.","G9":"invalid argument. Eighth argument must be greater than or equal to %d. Value: `%d`.","GA":"invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.","GB":"invalid argument. Sixth argument must be non-zero. Value: `%d`.","GC":"invalid argument. Tenth argument must be greater than or equal to max(1,%d). Value: `%d`.","GD":"invalid argument. First argument must specify whether the reference the lower or upper triangular matrix. Value: `%s`.","GE":"invalid argument. Second argument must be a nonnegative integer. Value: `%d`.","GF":"invalid argument. Fifth argument must be non-zero. Value: `%d`.","GG":"invalid argument. Second argument must be a valid transpose operation. Value: `%s`.","GH":"invalid argument. Fourth argument must be a nonnegative integer. Value: `%d`.","GI":"invalid argument. Ninth argument must be non-zero.","GJ":"invalid argument. Twelfth argument must be non-zero.","GK":"invalid argument. Eleventh argument must be non-zero.","GL":"invalid argument. Fifteenth argument must be non-zero.","GM":"invalid argument. Eighth argument must be greater than or equal to max(1,%d). Value: `%d`.","GN":"invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.","GO":"invalid argument. Third argument must be a valid transpose operation. Value: `%s`.","GP":"invalid argument. Fourth argument must be a valid diagonal type. Value: `%s`.","GQ":"invalid argument. Fifth argument must be a nonnegative integer. Value: `%d`.","GR":"invalid argument. Seventh argument must be greater than or equal to max(1,%d). Value: `%d`.","GS":"invalid argument. Ninth argument must be non-zero. Value: `%d`.","GT":"invalid argument. First argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.","GU":"invalid argument. Third argument must be a valid diagonal type. Value: `%s`.","GV":"invalid argument. First argument must be a valid transpose operation. Value: `%s`.","GW":"invalid argument. Tenth argument must be non-zero.","GX":"invalid argument. Fourteenth argument must be non-zero.","GY":"invalid arguments. Array must have the same shape.","GZ":"invalid argument. Second argument must be an array of integers. Value: `%s`.","Ga":"invalid argument. First argument must be an ndarray having at least %d dimensions.","Gb":"invalid argument. Dimension indices must be sorted in ascending order. Value: `%s`.","Gc":"invalid argument. Dimension indices must be unique. Value: `%s`.","Gd":"invalid argument. First argument must be an array of ndarrays. Value: `%s`.","Ge":"invalid argument. First argument must be an array of ndarrays which are broadcast-compatible. Value: `%s`.","Gf":"invalid argument. First argument must be an array of ndarrays having at least %d dimensions after broadcasting.","Gg":"invalid argument. Index argument is out-of-bounds. Value: `%d`.","Gh":"invalid argument. Sixth argument must be a nonnegative integer. Value: `%d`.","Gi":"invalid argument. Ninth argument must be greater than or equal to max(1,%d). Value: `%d`.","Gj":"invalid argument. Eleventh argument must be greater than or equal to max(1,%d). Value: `%d`.","Gk":"invalid argument. Fourteenth argument must be greater than or equal to max(1,%d). Value: `%d`.","Gl":"invalid argument. First argument must be an ndarray containing double-precision floating-point numbers. Value: `%s`.","Gm":"invalid argument. Second argument must be an ndarray containing double-precision floating-point numbers. Value: `%s`.","Gn":"invalid argument. First argument must have at least one dimension.","Go":"invalid argument. Second argument must have at least one dimension.","Gp":"invalid argument. Third argument must be a negative integer. Value: `%s`.","Gq":"invalid argument. Third argument must be a value on the interval: [%d,%d]. Value: `%d`.","Gr":"invalid argument. The size of the contracted dimension must be the same for both input ndarrays. Dim(%s,%d) = %d. Dim(%s,%d) = %d.","Gs":"invalid arguments. Input ndarrays must be broadcast compatible. Shape(%s) = (%s). Shape(%s) = (%s).","Gt":"invalid argument. Cannot write to read-only array.","Gu":"invalid arguments. The first and second arguments must have the same shape.","Gv":"unexpected error. Environment does not support WebAssembly.","Gw":"invalid invocation. Unable to perform write operation, as the WebAssembly module is not bound to an underlying WebAssembly memory instance.","Gx":"invalid argument. Second argument is incompatible with the specified byte offset and available memory. Resize the underlying memory instance in order to accommodate the list of provided values.","Gy":"invalid invocation. Unable to perform read operation, as the WebAssembly module is not bound to an underlying WebAssembly memory instance.","Gz":"invalid argument. Second argument is incompatible with the specified byte offset and available memory. Not enough values to fill the provided output array.","H0":"invalid argument. Must provide a WebAssembly memory instance. Value: `%s`.","H1":"invalid argument. First argument must be an ndarray containing single-precision floating-point numbers. Value: `%s`.","H2":"invalid argument. Second argument must be an ndarray containing single-precision floating-point numbers. Value: `%s`.","H3":"invalid invocation. `this` is not a Float64ArrayFE.","H4":"invalid argument. First argument must be a supported byte order. Value: `%s`.","H5":"invalid argument. Second argument must a data type. Value: `%s`.","H6":"invalid argument. First argument must be an ndarray-like object having a supported data type. Value: `%s`.","H7":"invalid argument. Second argument must be an ndarray-like object having a supported data type. Value: `%s`.","H8":"invalid invocation. `this` is not %s %s.","H9":"invalid argument. First argument must be a supported data type. Value: `%s`.","HA":"invalid argument. Must provide an ArrayBuffer. Value: `%s`.","HB":"invalid argument. Second argument must be a data type. Value: `%s`.","HC":"invalid option. Each key object must have a `name` property. Value: `%s`.","HD":"invalid option. Each key object's `name` property must be a string. Value: `%s`.","HE":"invalid option. Each key object's `%s` property must be a boolean. Value: `%s`.","HF":"invalid option. Each action must be an array of objects. Value: `%s`.","HG":"invalid argument. First argument must be a valid index ndarray.","HH":"invalid operation. This ndarray index instance has already been freed and can no longer be used.","HI":"invalid operation. Unrecognized ndarray index type. Value: `%s`.","HJ":"invalid operation. Index exceeds ndarray bounds.","HK":"invalid operation. Number of indices does not match the number of array dimensions. Array shape: (%s). Index dimensions: %u.","HL":"invalid operation. Unable to resolve ndarray index. Value: `%s`.","HM":"invalid argument. First argument is not compatible with the specified index \"kind\". Type: %s. Kind: %s.","HN":"invalid argument. First argument must be greater than or equal to the number of dimensions in the input ndarray. Number of dimensions: %d. Value: `%d`.","HO":"invalid argument. Specified dimension index is out-of-bounds. Must be on the interval: [-%u, %u]. Value: `[%s]`.","HP":"invalid argument. Must provide unique dimension indices. Value: `[%s]`.","HQ":"invalid argument. Must provide the same number of dimension indices as the number of dimensions in the input ndarray. Number of dimensions: %d. Value: `[%s]`.","HR":"invalid argument. Must provide dimension indices which resolve to nonnegative indices arranged in ascending order. Value: `[%s]`.","HS":"invalid argument. Specified axis is out-of-bounds. Must be on the interval: [-%u, %u]. Value: `%d`.","HT":"invalid argument. Each key in the keybindings argument must correspond to a single action. Value: `%s`","HU":"invalid argument. First argument must be a valid action name. Value: `%s`.","HV":"invalid argument. Each key in the keys argument must correspond to a single action. Value: `%s`","HW":"invalid argument. Second argument must be an array of data types. Value: `%s`.","HX":"invalid argument. Third argument must be an array of data types. Value: `%s`.","HY":"invalid argument. Fourth argument must be a supported output data type policy. Value: `%s`.","HZ":"invalid argument. First argument must have one of the following data types: \"%s\". Data type: `%s`.","Ha":"invalid arguments. Arrays must have the same number of dimensions (i.e., same rank). ndims(x) == %d. ndims(y) == %d.","Hb":"invalid argument. Third argument contains an out-of-bounds dimension index. Value: [%s].","Hc":"invalid argument. Third argument must contain a list of unique dimension indices. Value: [%s].","Hd":"invalid argument. Number of specified dimensions cannot exceed the number of dimensions in the input array. ndims(x) == %d. Value: [%s].","He":"invalid argument. Arrays which are not being reduced must have the same number of non-reduced dimensions. ndims(x) == %d. Number of reduced dimensions: %d. ndims(arrays[%d]) == %d.","Hf":"invalid argument. Non-reduced dimensions must be consistent across all provided arrays. Input array shape: [%s]. Non-reduced dimension indices: [%s]. Non-reduced dimensions: [%s]. Array shape: [%s] (index: %d).","Hg":"invalid argument. The second argument cannot be safely cast to the input array data type. Data type: %s. Value: `%s`.","Hh":"invalid argument. Second argument must be broadcast-compatible with the non-reduced dimensions of the input array.","Hi":"invalid argument. Second argument cannot be safely cast to the input array data type. Value: `%s`.","Hj":"invalid argument. Third argument must be an ndarray-like object. Value: `%s`.","Hk":"invalid option. `%s` option must be an array of integers. Option: `%s`.","Hl":"invalid option. `%s` option contains an out-of-bounds dimension index. Option: [%s].","Hm":"invalid option. `%s` option specifies more dimensions than exists in the input array. Number of dimensions: %d. Option: [%s].","Hn":"invalid argument. Number of specified dimensions cannot exceed the number of dimensions in the input array. Number of dimensions: %d. Value: [%s].","Ho":"invalid argument. Arrays which are not being reduced must have the same number of non-reduced dimensions. Input array shape: [%s]. Number of non-reduced dimensions: %d. Array shape: [%s] (index: %d).","Hp":"invalid argument. Second argument must be an ndarray-like object. Value: `%s`.","Hq":"invalid argument. Second argument must have one of the following data types: \"%s\". Data type: `%s`.","Hr":"invalid argument. Fourteenth argument must be non-zero. Value: `%d`.","Hs":"invalid argument. Seventeenth argument must be non-zero. Value: `%d`.","Ht":"invalid argument. Eighteenth argument must be non-zero. Value: `%d`.","Hu":"invalid option. `%s` option contains duplicate indices. Option: [%s].","Hv":"invalid argument. First argument must be an object having a \"default\" property and an associated method.","Hw":"invalid argument. Second argument must contain arrays of data types. Value: `%s`.","Hx":"invalid argument. Argument %d must have one of the following data types: \"%s\". Data type: `%s`.","Hy":"invalid argument. Argument %d must be an ndarray-like object. Value: `%s`.","Hz":"invalid arguments. Input and output arrays must have the same shape.","I0":"invalid argument. First argument specifies an unexpected number of types. A pair of input and output ndarray data types must be specified for each provided strided function.","I1":"invalid argument. First argument specifies an unexpected number of types. An input ndarray data type must be specified for each provided strided function.","I2":"invalid argument. Array arguments after the first two arrays must have the same number of loop dimensions. Input array shape: [%s]. Number of loop dimensions: %d. Array shape: [%s] (index: %d).","I3":"invalid argument. Loop dimensions must be consistent across all provided arrays. Input array shape: [%s]. Loop dimension indices: [%s]. Loop dimensions: [%s]. Array shape: [%s] (index: %d).","I4":"invalid argument. First argument must be an object having a \"types\" property whose associated value is an array-like object.","I5":"invalid argument. First argument must be an object having a \"fcns\" property whose associated value is an array-like object containing functions.","I6":"invalid argument. Fourth argument must be an object having a supported output data type policy. Value: `%s`.","I7":"invalid argument. Fourth argument must be an object having a supported casting policy. Value: `%s`.","I8":"invalid operation. Unable to promote the input and output data types. Input data type: %s. Output data type: %s.","I9":"invalid argument. Third argument must be a supported casting policy. Value: `%s`.","IA":"invalid option. `%s` option must be an object containing properties having values which are objects. Option: `%s`.","IB":"invalid option. `%s` option must be an object having %s `%s` property which is an array of strings. Option: `%s`.","IC":"invalid option. `%s` option must have %s `%s` property.","ID":"invalid argument. Second argument must be either an ndarray or a numeric scalar value. Value: `%s`.","IE":"invalid argument. Eleventh argument must be non-zero. Value: `%d`.","IF":"invalid option. `%s` option must be a valid memory layout. Option: `%s`.","IG":"invalid arguments. Arrays must have the same number of dimensions (i.e., same rank). ndims(x) == %d. ndims(y) == %d. ndims(z) == %d.","IH":"invalid argument. Unable to resolve an output data type. The output data type policy is \"same\" and yet the input data types are not equal. Data types: [%s].","II":"invalid argument. Unable to apply type promotion rules when resolving a data type to which the input data types can be safely cast. Data types: [%s].","IJ":"invalid argument. %s argument must have one of the following data types: \"%s\". Data type: `%s`.","IK":"invalid option. `%s` option must be a valid index mode. Option: `%s`.","IL":"invalid option. `%s` option must be a memory layout. Option: `%s`.","IM":"invalid argument. ArrayBuffer is incompatible with the specified data type. Value: `%s`.","IN":"invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, iterable, data type, or options object. Value: `%s`.","IO":"invalid argument. First argument must be a length, ArrayBuffer, typed array, array-like object, or iterable. Value: `%s`.","IP":"invalid argument. Third argument must be a recognized/supported data type. Value: `%s`.","IQ":"invalid argument. Fourth argument must be a recognized/supported data type. Value: `%s`.","IR":"invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.","IS":"invalid argument. Second argument must have an integer data type. Value: `%s`.","IT":"invalid argument. Second argument must be an integer or an ndarray-like object. Value: `%s`.","IU":"invalid argument. Union types may only be initialized by a single member.","IV":"invalid invocation. `this` is not a struct instance.","IW":"invalid operation. struct does not have any fields.","IX":"unexpected error. Unrecognized data type. Value: `%s`.","IY":"invalid assignment. Assigned value cannot be cast to the data type of `%s`. Data types: [%s, %s].","IZ":"invalid argument. Field objects must have the following properties: \"%s\". Value: `%s`.","Ia":"invalid argument. Union types cannot contain nested union types. Value: `%s`.","Ib":"invalid argument. Union types can only contain one field with a default value. Value: `%s`.","Ic":"invalid argument. Union types must contain fields having the same byte length. Value: `%s`.","Id":"invalid argument. `%s` field must be a string. Value: `%s`.","Ie":"invalid argument. `%s` field must be a boolean. Value: `%s`.","If":"invalid argument. `%s` field must be a positive integer. Value: `%s`.","Ig":"invalid assignment. `%s` must be a `struct` instance. Value: `%s`.","Ih":"invalid assignment. Assigned value cannot be cast to the data type of `%s`. Value: `%s`.","Ii":"invalid assignment. `%s` must be a `struct` instance having the same byte length.","Ij":"invalid assignment. `%s` must be an array-like object. Value: `%s`.","Ik":"invalid assignment. `%s` must be an array-like object having length %u.","Il":"invalid argument. Byte length must be a nonnegative integer. Value: `%s`.","Im":"invalid argument. ArrayBuffer has insufficient capacity. Minimum capacity: `%u`.","In":"invalid argument. First argument must be a `struct` instance. Value: `%s`.","Io":"invalid argument. `%s` field must be one of the following: \"%s\". Value: `%s`.","Ip":"invalid argument. First argument must be an array of objects having unique field names. Value: `%s`.","Iq":"invalid argument. `%s` field must be a non-empty string. Value: `%s`.","Ir":"invalid argument. First argument must be an array of objects. Value: `%s`. Index: `%d`.","Is":"invalid argument. Union types must be an array of objects. Value: `%s`. Index: `%d`.","It":"invalid argument. Field name must be one of the following: \"%s\". Value: `%s`.","Iu":"invalid argument. `%s` field must be either a struct type or one of the following: \"%s\". Value: `%s`.","Iv":"invalid assignment. `%s` must be an array-like object containing `struct` instances having the same byte length.","Iw":"invalid argument. First argument must be one of the following: \"%s\". Value: `%s`.","Ix":"invalid argument. First argument must be an ArrayBuffer or a data object. Value: `%s`.","Iy":"invalid argument. First argument must be either a struct constructor or struct schema. Value: `%s`.","Iz":"invalid argument. Each element of a provided input array must be a valid object or a struct instance having the same layout as elements in the desired output array.","J0":"invalid argument. Environment lacks Symbol.iterator support. First argument must be a length, ArrayBuffer, typed array, or array-like object. Value: `%s`.","J1":"invalid argument. First argument must be a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.","J2":"invalid argument. Each element of a provided input iterable must be either a valid object or a struct instance having the same layout as elements in the desired output array.","J3":"invalid argument. Second argument must be a multiple of %u. Value: `%u`.","J4":"invalid argument. Second argument exceeds the bounds of the ArrayBuffer. Value: `%s`.","J5":"invalid argument. ArrayBuffer view byte length must be a multiple of %u. View byte length: `%u`.","J6":"invalid invocation. `this` is not a %s.","J7":"invalid argument. Must provide either a valid object or a struct instance. Value: `%s`.","J8":"invalid argument. First argument must be a valid orientation. Value: `%s`.","J9":"invalid argument. Second argument must be a valid orientation. Value: `%s`.","JA":"invalid argument. The first argument must be an ndarray. Value: `%s`.","JB":"invalid argument. Second argument must be either an ndarray or a scalar value. Value: `%s`.","JC":"invalid argument. Third argument must be an ndarray. Value: `%s`.","JD":"invalid argument. Third argument must be either an ndarray or an integer. Value: `%s`.","JE":"invalid operation. Environment lacks support for HTTP/2. Ensure that you are running on a Node.js version which supports HTTP/2 and has been built to include support for the Node.js `crypto` module.","JF":"invalid argument. Input arrays must have the same number of dimensions. First array dimensions: %d. Second array dimensions: %d.","JG":"invalid argument. Input arrays must have the same shape. First array shape: [%s]. Second array shape: [%s].","JH":"invalid argument. Output array must have the same number of non-reduced dimensions as input arrays. Input array shape: [%s]. Number of non-reduced dimensions: %d. Output array shape: [%s].","JI":"invalid argument. Array arguments after the first array must have the same number of loop dimensions. Input array shape: [%s]. Number of loop dimensions: %d. Array shape: [%s] (index: %d).","JJ":"invalid argument. Second argument contains an out-of-bounds index. Array shape: (%s). Value: `[%s]`.","JK":"invalid argument. Thirteenth argument must be non-zero. Value: `%d`.","JL":"invalid argument. Sixth argument must be greater than or equal to max(1,%d). Value: `%d`.","JM":"invalid argument. Fifth argument must be non-zero. Value: `%s`.","JN":"invalid argument. Sixth argument must be non-zero. Value: `%s`.","JO":"invalid arguments. Unable to resolve an ndarray function supporting the provided argument data types.","JP":"invalid argument. First argument specifies an unexpected number of types. Two input ndarray data types must be specified for each provided strided function.","JQ":"invalid argument. First argument specifies an unexpected number of types. An output ndarray data type must be specified for each provided strided function.","JR":"invalid operation. Unable to promote the input and output data types. Input data types: [%s]. Output data type: %s.","JS":"invalid argument. Fourth argument must be a supported casting policy. Value: `%s`.","JT":"invalid argument. Fourth argument must be an ndarray. Value: `%s`.","JU":"invalid option. `%s` option must be a supported data type. Option: `%s`.","JV":"invalid argument. First argument must be either a supported data type string, a struct constructor, or another data type instance. Value: `%s`.","JW":"invalid argument. Second argument must be a valid sort order. Value: `%s`.","JX":"invalid argument. Second argument must be either an ndarray, a numeric scalar value, or a supported string. Value: `%s`.","JY":"invalid argument. Unable to apply type promotion rules when resolving a data type to which the input ndarrays can be safely cast. Data types: [%s].","JZ":"invalid argument. The list of input ndarrays cannot be safely cast to the data of the output ndarray. Input data types: [%s]. Output data type: %s.","Ja":"invalid argument. Second argument is not broadcast compatible with the list of input ndarrays. Array shape: (%s). Desired shape: (%s).","Jb":"invalid argument. Second argument must be a negative integer. Value: `%s`.","Jc":"invalid argument. First argument cannot be safely cast to the output data type. Data types: [%s, %s].","Jd":"invalid option. First argument cannot be safely cast to the specified data type. Input data type: %s. Option: `%s`.","Je":"invalid argument. First argument must be an ndarray having at least one dimension.","Jf":"invalid argument. Second argument must be either a number, complex number, or an ndarray. Value: `%s`.","Jg":"invalid argument. Third argument must have one of the following data types: \"%s\". Data type: `%s`.","Jh":"invalid argument. Third argument must be either a number, complex number, or an ndarray. Value: `%s`.","Ji":"invalid argument. Fourth argument must have one of the following data types: \"%s\". Data type: `%s`.","Jj":"invalid argument. Fourth argument must be either a boolean or an ndarray. Value: `%s`.","Jk":"invalid argument. First argument must be a nonnegative integer or an array of nonnegative integers. Value: `%s`.","Jl":"invalid option. `%s` option must be a supported order. Option: `%s`.","Jm":"invalid argument. Argument %d cannot be safely cast to the desired output data type. Output data type: %s. Argument data type: %s.","Jn":"invalid invocation. Must provide at least two arguments.","Jo":"invalid invocation. Must provide at least one argument.","Jp":"invalid argument. Last argument must be a one-dimensional ndarray. Value: `%s`.","Jq":"invalid argument. Each ndarray argument must have fewer than two dimensions. Argument: %d.","Jr":"invalid argument. First argument must contain at least one element greater than zero (i.e., the total number of observations must be greater than zero).","Js":"invalid argument. First argument must be an ndarray having two or more dimensions.","Jt":"invalid invocation. Must provide at least three arguments.","Ju":"invalid invocation. `this` is not a floating-point number array.","Jv":"invalid argument. The number of elements (means) in the second argument must match correlation matrix dimensions. Expected: `%u`. Actual: `%u`.","Jw":"%s %s failed with exit code: %s.","Jx":"%s %s failed due to termination signal: %s.","Jy":"invalid argument. Second argument must be either an ndarray or an integer. Value: `%s`.","Jz":"invalid argument. Second argument cannot be safely cast to the desired output data type. Output data type: %s. Argument data type: %s.","K0":"invalid option. `%s` option must be a zero-dimensional ndarray.","K1":"invalid argument. Second argument must be either an ndarray-like object, a numeric value, or a supported string. Value: `%s`.","K2":"invalid argument. Second argument must be a zero-dimensional ndarray.","K3":"invalid argument. Must provide an integer on the interval [0, 2^64-1]. Value: `%s`.","K4":"invalid argument. Must provide an integer on the interval [0, 2^53-1]. Value: `%s`.","K5":"invalid argument. Must provide an array. Value: `%s`.","K6":"invalid argument. Must provide an array of length 2. Value: `[%s]`.","K7":"invalid argument. Must provide an array of integer values on the interval [%u, %u]. Value: `[%s]`.","K8":"invalid argument. First argument must be a nonnegative integer on the interval [%u, %u]. Value: `%s`.","K9":"invalid argument. Second argument must be a nonnegative integer on the interval [%u, %u]. Value: `%s`.","KA":"invalid argument. Must provide an integer on the interval [%d, %d]. Value: `%s`.","KB":"invalid argument. Fourth argument must be an ndarray-like object. Value: `%s`.","KC":"invalid option. `%s` option must be an array of nonnegative integers. Option: `%s`.","KD":"invalid argument. First argument must have one of the following data types: \"%s\". Value: `%s`.","KE":"invalid argument. Must provide an ndarray having two or more dimensions. Number of dimensions: `%u`.","KF":"invalid option. `%s` option must be a negative integer. Option: `%s`.","KG":"invalid argument. Third argument must be an array of integers. Value: `%s`.","KH":"invalid argument. Third argument must be an array of nonnegative integers. Value: `%s`.","KI":"invalid argument. Must provide a complex-valued floating-point ndarray. Value: `%s`.","KJ":"invalid argument. Specified dimension index is out-of-bounds. Must be on the interval: [-%u, %u]. Value: `%d`.","KK":"invalid arguments. Arrays must have the same number of dimensions (i.e., same rank). ndims(x) == %d. ndims(y) == %d. ndims(z) == %d. ndims(w) == %d.","KL":"invalid argument. Second argument must have at least as many elements as the number of dimensions of the first argument. Number of input dimensions: `%u`. Number of repetitions: `%u`.","KM":"invalid argument. Must provide exactly two dimension indices. Value: `[%s]`.","KN":"invalid argument. First argument must be an ndarray having two or more dimensions. Number of dimensions: %d.","KO":"invalid argument. The first argument cannot be safely cast to the output array data type. Data type: %s. Value: `%s`.","KP":"invalid argument. Product of the sizes must be equal to the size of the dimension to be unflattened. Dimension: %d. Size: %d. Value: `[%s]`.","KQ":"invalid argument. First argument must contain one or more ndarrays. Value: `%s`.","KR":"invalid argument. First argument must be an array-like object containing one or more ndarrays. Value: `%s`.","KS":"invalid argument. Must provide one- or two-dimensional ndarrays. Number of dimensions: `%u`.","KT":"invalid argument. All ndarrays must have the same number of columns. Expected number of columns: `%u`. Actual number of columns: `%u`.","KU":"invalid argument. Second argument must be a two-dimensional ndarray. Number of dimensions: `%u`.","KV":"invalid option. Dimension index exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.","KW":"invalid argument. All ndarrays must have the same number of rows. Expected number of rows: `%u`. Actual number of rows: `%u`.","KX":"invalid argument. Second argument must be a string or an array of strings. Value: `%s`.","KY":"invalid invocation. Insufficient arguments. Array shape: (%s). Number of indices: %u.","KZ":"invalid invocation. Too many arguments. Array shape: (%s). Number of indices: %u.","Ka":"invalid argument. Must provide a shape, ArrayBuffer, array-like object, iterable, data type, or options object. Value: `%s`.","Kb":"invalid argument. First argument must be a shape, ArrayBuffer, array-like object, or iterable. Value: `%s`.","Kc":"invalid argument. Third argument must be a valid shape. Value: `%s`.","Kd":"invalid argument. Fifth argument must be a recognized/supported data type. Value: `%s`.","Ke":"invalid argument. Second argument must be a supported distance metric. Value: `%s`."} +{"10":"invalid operation. Cannot reset a REPL which has already closed.","11":"invalid operation. Cannot clear a REPL which has already closed.","12":"invalid operation. Cannot clear the line of a REPL which has already closed.","13":"invalid operation. Cannot clear the command buffer of a REPL which has already closed.","14":"invalid argument. Provided command either does not contain an `await` expression or contains a top-level `return` which is not allowed.","15":"invalid argument. Must provide a program AST node.","16":"invalid invocation. Insufficient arguments. Must provide a REPL instance.","17":"invalid operation. No presentation to reload. Use the `load()` method to load a presentation.","18":"invalid operation. No presentation file to watch. Use the `load()` method to load a presentation.","19":"unexpected error. Encountered a \"rename\" event for the source presentation file. No longer watching source presentation file for changes.","20":"invalid argument. Must provide a username or, to get a list of repositories an authenticated user is watching, an access token.","21":"unexpected error. Unable to resolve package directory as unable to find a `package.json` in a parent directory.","22":"invalid argument. Source code does not contain JSDoc comment with function options.","23":"unexpected error. Unable to resolve root project directory.","24":"invalid argument. An iterator must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.","25":"invalid argument. Callback must return either a two-element array containing real and imaginary components or a complex number. Value: `%s`.","26":"invalid argument. Array-like object arguments must have a length which is a multiple of two. Length: `%u`.","27":"invalid argument. Array-like object and typed array arguments must have a length which is a multiple of two. Length: `%u`.","28":"invalid argument. ArrayBuffer byte length must be a multiple of `%u`. Byte length: `%u`.","29":"invalid argument. Environment lacks Symbol.iterator support. Must provide a length, ArrayBuffer, typed array, or array-like object. Value: `%s`.","30":"invalid argument. Fourth argument must be a nonnegative integer. Value: `%s`.","31":"invalid argument. Fifth argument must be a function. Value: `%s`.","32":"invalid argument. Fourth argument must be a function. Value: `%s`.","33":"invalid argument. Second argument must be either an integer (starting index) or a callback function. Value: `%s`.","34":"invalid argument. Third argument must be either an integer (ending index) or a callback function. Value: `%s`.","35":"invalid argument. Second argument must be either an integer (starting view index) or a callback function. Value: `%s`.","36":"invalid argument. Third argument must be either an integer (ending view index) or a callback function. Value: `%s`.","37":"invalid argument. Second argument must be a recognized data type. Value: `%s`.","38":"invalid argument. First argument must be array-like. Value: `%s`.","39":"invalid argument. Second argument must be a string. Value: `%s`.","40":"invalid argument. Must provide either a Date object, a JavaScript timestamp (i.e., a nonnegative integer), or a date string. Value: `%s`.","41":"invalid option. Unrecognized rounding mode. Option: `%s`.","42":"invalid argument. Third argument must be either a nonnegative integer or an options object. Value: `%s`.","43":"invalid argument. Fourth argument must be an object. Value: `%s`.","44":"invalid argument. First argument must an iterator protocol-compliant object. Value: `%s`.","45":"invalid argument. Second argument must be a positive integer. Value: `%s`.","46":"invalid argument. First argument must be an iterator protocol-compliant object. Value: `%s`.","47":"invalid argument. Must provide an object. Value: `%s`.","48":"invalid argument. Object property values must be functions. Key: `%s`. Value: `%s`.","49":"invalid argument. First argument must be a number. Value: `%s`.","50":"invalid option. Second `%s` parameter option must be a positive integer. Option: `%s`.","51":"invalid argument. First argument must be an array. Value: `%s`.","52":"invalid argument. First argument must be an array of length `%u`. Value: `%s`.","53":"invalid argument. First argument must be an array of length %u. Value: `%s`.","54":"unexpected error. Scaling weight vector by nonpositive value, likely due to too large value of eta * lambda. Value: `%f`.","55":"invalid argument. Second argument must be a boolean. Value: `%s`.","56":"invalid argument. Must provide either a valid data source, options argument, or both. Value: `%s`.","57":"invalid option. `%s` option must be an array-like object, typed-array-like, a Buffer, or an ndarray. Option: `%s`.","58":"invalid option. Data source must be an array-like object, typed-array-like, a Buffer, or an ndarray. Value: `%s`.","59":"invalid option. `%s` option must be a recognized casting mode. Option: `%s`.","60":"invalid argument. Input string must have a length equal to %u. Value: `%s`.","61":"invalid assignment. `%s` must be a boolean. Value: `%s`.","62":"invalid assignment. `%s` must be a string. Value: `%s`.","63":"invalid assignment. `%s` must be one of the following: \"%s\". Value: `%s`.","64":"invalid assignment. `%s` must be a positive number. Value: `%s`.","65":"invalid assignment. `%s` must be either an array of strings or an empty array. Value: `%s`.","66":"invalid assignment. `%s` must be a number or number array. Value: `%s`.","67":"invalid assignment. A `%s` must be a number on the interval: [0, 1]. Value: `%f`.","68":"invalid assignment. `%s` must be a string or a string array. Value: `%s`","69":"invalid assignment. Unsupported/unrecognized line style. Must be one of the following: \"%s\". Value: `%s`.","70":"invalid argument. Must provide a Uint32Array. Value: `%s`.","71":"invalid argument. First argument must be a positive number. Value: `%s`.","72":"invalid argument. Second argument must be a positive number. Value: `%s`.","73":"invalid argument. Second argument must be a probability. Value: `%s`.","74":"invalid option. `%s` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `%s`.","75":"invalid option. `%s` option must have a `MIN` property specifying the minimum possible pseudorandom integer value.","76":"invalid option. `%s` option must have a `MAX` property specifying the maximum possible pseudorandom integer value.","77":"invalid argument. First argument must be an integer and not NaN. Value: `%s`.","78":"invalid argument. Second argument must be an integer and not NaN. Value: `%s`.","79":"invalid argument. Minimum support must be less than or equal to maximum support. Value: `[%d,%d]`.","80":"invalid argument. First argument must be either a string containing presentation text or an options object specifying a presentation file to load. Value: `%s`.","81":"invalid argument. Second argument must be an options object. Value: `%s`.","82":"invalid argument. Invalid presentation identifier. Must be either a string or nonnegative integer. Value: `%s`.","83":"invalid argument. Workspace name already exists. Value: `%s`.","84":"invalid argument. Must provide a string, regular expression, nonnegative integer, or an array of nonnegative integers. Value: `%s`.","85":"invalid argument. Unrecognized tutorial name. Value: `%s`.","86":"invalid argument. Documentation argument must be a string. Value: `%s`.","87":"invalid option. `%s` option must be a regular expression. Option: `%s`.","88":"internal error. Unrecognized pattern type: `%s`.","89":"invalid option. `%s` option must be a readable stream. Option: `%s`.","90":"invalid argument. Denominator degrees of freedom must be a positive number. Value: `%s`.","91":"invalid argument. Scale parameter must be a number. Value: `%s`.","92":"invalid argument. Mean parameter `%s` must be a probability. Value: `%s`.","93":"invalid argument. Population size must be a nonnegative integer. Value: `%s`.","94":"invalid argument. Subpopulation size must be a nonnegative integer. Value: `%s`.","95":"invalid argument. Number of draws must be a nonnegative integer. Value: `%s`.","96":"invalid assignment. Must be a nonnegative integer. Value: `%s`.","97":"invalid assignment. Must be larger than or equal to %u. Value: `%u`.","98":"invalid assignment. Must be less than or equal to %u. Value: `%u`.","99":"invalid argument. Number of trials until experiment is stopped must be a positive number. Value: `%s`.","00":"not implemented","01":"invalid invocation. `this` context must be a constructor.","02":"invalid invocation. `this` is not a complex number array.","03":"invalid arguments. Target array lacks sufficient storage to accommodate source values.","04":"invalid arguments. Creating a generic array from an ArrayBuffer is not supported.","05":"invalid arguments. Must provide a length, typed array, array-like object, or an iterable.","06":"invalid arguments. Generated array exceeds maximum array length.","07":"invalid arguments. If either of the first two arguments are complex numbers, the output array must be a complex number array or a \"generic\" array-like object.","08":"invalid arguments. If either of the first two arguments are complex numbers, the output array data type must be a complex number data type or \"generic\".","09":"not supported. The current environment does not support SharedArrayBuffers, and, unfortunately, SharedArrayBuffers cannot be polyfilled. For shared memory applications, upgrade your runtime environment to one which supports SharedArrayBuffers.","0A":"insufficient arguments. Must provide a search value.","0B":"invalid argument. Attempted to add duplicate listener.","0C":"exception","0D":"unexpected error. Benchmark failed.","0E":"unexpected error. Invalid benchmark.","0F":"unexpected error.","0G":"invalid invocation. Constructor must be called with the `new` keyword.","0H":"unexpected error. Max retries exceeded. Too many open files.","0I":"insufficient arguments. Must provide two or more iterators.","0J":"insufficient arguments. Must provide both an iterator and a static value.","0K":"invalid invocation. `this` is not a fluent interface iterator.","0L":"insufficient arguments. Must provide a hash function.","0M":"invalid argument. Iterator arguments must be iterator protocol-compliant objects.","0N":"insufficient arguments. Must provide at least one iterator function.","0O":"invalid argument. Providing a number is not supported.","0P":"invalid argument. Providing a complex number is not supported.","0Q":"invalid argument. Providing an ndarray is not supported.","0R":"invalid argument. Providing an array-like object is not supported.","0S":"invalid argument. If the first argument is an ndarray, the second argument must be an ndarray.","0T":"invalid argument. Output array must have the same number of elements (i.e., length) as the input array.","0U":"invalid argument. If the first argument is an array-like object, the second argument must be an array-like object.","0V":"invalid argument. Providing a number is not supported. Consider providing a zero-dimensional ndarray containing the numeric value.","0W":"invalid argument. Providing a complex number is not supported. Consider providing a zero-dimensional ndarray containing the complex number value.","0X":"invalid arguments. Must provide either a data source, array shape, or both.","0Y":"invalid arguments. Array shape is incompatible with provided data source. Number of data source elements does not match array shape.","0Z":"invalid argument. Cannot broadcast an array to a shape having fewer dimensions. Arrays can only be broadcasted to shapes having the same or more dimensions.","0a":"invalid argument. First argument must contain at least one element.","0b":"invalid arguments. The length of the first argument is incompatible with the second and third arguments.","0c":"invalid argument. Must provide an ndarray having two or more dimensions.","0d":"invalid arguments. Arrays must have the same shape.","0e":"invalid invocation. Cannot write to a read-only array.","0f":"invalid argument. Fourth argument length must be equal to 1 when creating a zero-dimensional ndarray.","0g":"invalid arguments. The input buffer is incompatible with the specified meta data. Ensure that the offset is valid with regard to the strides array and that the buffer has enough elements to satisfy the desired array shape.","0h":"invalid arguments. Interface must accept at least one input and/or output ndarray. Based on the provided arguments, `nin+nout` equals `0`.","0i":"invalid arguments. Fourth argument does not equal the number of input and output ndarrays.","0j":"invalid argument. Unexpected number of types. A type must be specified for each input and output ndarray for each provided ndarray function.","0k":"invalid argument. The third argument must have the same number of elements as the first argument.","0l":"invalid invocation. Insufficient arguments.","0m":"invalid invocation. Too many arguments.","0n":"invalid arguments. Unable to resolve an ndarray function supporting the provided array argument data types.","0o":"invalid operation. Unable to load Electron. Ensure Electron is installed and try again.","0p":"invalid operation. A browser environment has no support for changing the current working directory.","0q":"invalid operation. The environment does not support reading from `stdin`.","0r":"unexpected error. PRNG returned NaN.","0s":"invalid argument. Third argument must be less than or equal to the first argument.","0t":"invalid argument. Second argument must be less than or equal to the first argument.","0u":"invalid operation. Cannot delete the `base` workspace.","0v":"invalid invocation. Must provide either a string containing presentation text or an options object specifying a presentation file to load.","0w":"invalid argument. When not provided presentation text, an options argument must specify a presentation file to load.","0x":"invalid invocation. Not currently in a presentation workspace. Must provide either a string or nonnegative integer which corresponds to the identifier of the presentation to be stopped.","0y":"unexpected error. Command execution terminated.","0z":"invalid operation. Cannot load a file into a REPL which has already closed.","1A":"invalid arguments. First and second arguments must be arrays having the same length.","1B":"invalid arguments. Subpopulation size must be less than or equal to population size.","1C":"invalid arguments. Number of draws must be less than or equal to population size.","1D":"invalid argument. First argument must contain at least one element greater than zero (i.e., the total number number of observations must be greater than zero).","1E":"invalid arguments. First and second arguments must have the same length.","1F":"invalid arguments. First and second arguments must be arrays having the same length.","1G":"invalid arguments. First and second argument must have the same length.","1H":"invalid arguments. Not enough observations. First and second arguments must contain at least four observations.","1I":"invalid arguments. The first and second arguments must have the same length.","1J":"`x` or `x - y` cannot be zero for all elements.","1K":"invalid arguments. Strided array parameters are incompatible with the provided array-like object. Linear index exceeds array bounds.","1L":"invalid arguments. Unable to resolve a strided array function supporting the provided array argument data types.","1M":"invalid arguments. Interface must accept at least one strided input and/or output array. Based on the provided arguments, `nin+nout` equals `0`.","1N":"invalid argument. Unexpected number of types. A type must be specified for each strided input and output array for each provided strided array function.","1O":"invalid argument. Fourth argument is incompatible with the number of strided input and output arrays.","1P":"invalid argument. Input array offset must be a nonnegative integer.","1Q":"invalid argument. Output array offset must be a nonnegative integer.","1R":"invalid argument. Input array must be an array-like object.","1S":"invalid argument. Output array must be an array-like object.","1T":"invalid argument. Input array has insufficient elements based on the associated stride and the number of indexed elements.","1U":"invalid argument. Output array has insufficient elements based on the associated stride and the number of indexed elements.","1V":"insufficient arguments. Must provide either an array of code points or one or more code points as separate arguments.","1W":"invalid argument. Third argument must not be an empty string.","1X":"invalid argument. Pad string must not be an empty string.","1Y":"insufficient arguments. Must provide multiple functions to compose.","1Z":"insufficient arguments. Must provide multiple functions to execute sequentially.","1a":"invalid arguments. First and last arguments must be the same length.","1b":"insufficient arguments. Must provide at least two objects.","1c":"invalid invocation. `this` is not a compact adjacency matrix.","1d":"invalid argument. Cannot specify one or more accessors and a value or writable attribute in the property descriptor.","1e":"invalid argument. The list does not contain the provided list node.","1f":"unexpected error. Unable to resolve global object.","1g":"invalid argument. The output ndarray must be writable. Cannot write to a read-only ndarray.","1h":"invalid arguments. Input and output arrays must have the same length.","1i":"invalid arguments. Input and output arrays must have the same number of elements (i.e., length).","1j":"invalid arguments. Input ndarrays must be broadcast compatible.","1k":"invalid arguments. Input arrays must have the same number of elements (i.e., length).","1l":"insufficient arguments. Must provide both a target object and one or more source objects.","1m":"invalid invocation. `this` is not host tuple.","1n":"invalid invocation. `this` is not the host tuple factory.","1o":"not implemented. Please post an issue on the @stdlib/stdlib issue tracker if you would like this to be implemented.","1p":"invalid argument. Second argument must have a length equal to the size of the outermost input array dimension.","1q":"evaluation error. Did not receive timing results.","1r":"evaluation error. Unable to retrieve evaluation results. Ensure that the provided snippet does not return prematurely.","1s":"invalid argument. Must provide a zipped array.","1t":"invalid argument. Array must only contain arrays.","1u":"invalid argument. Indices must be specified as an array.","1v":"invalid argument. All indices must be integers.","1w":"invalid argument. Must provide valid indices (i.e., an index must be on the interval [0, len], where len is the tuple length).","1x":"insufficient arguments. Must provide at least one array.","1y":"invalid argument. Must provide a username or, to get who an authenticated user is following, an access token.","1z":"invalid argument. Must provide a username or, to get a list of repositories an authenticated user has starred, an access token.","2A":"invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.","2B":"invalid argument. First argument must be an ArrayBuffer. Value: `%s`.","2C":"invalid argument. Byte offset must be a nonnegative integer. Value: `%s`.","2D":"invalid argument. Byte offset must be a multiple of `%u`. Value: `%u`.","2E":"invalid arguments. ArrayBuffer view byte length must be a multiple of %u. View byte length: `%u`.","2F":"invalid argument. Length must be a nonnegative integer. Value: `%s`.","2G":"invalid arguments. ArrayBuffer has insufficient capacity. Either decrease the array length or provide a bigger buffer. Minimum capacity: `%u`.","2H":"invalid argument. Second argument must be a function. Value: `%s`.","2I":"invalid argument. First argument must have a length which is a multiple of two. Length: `%u`.","2J":"invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.","2K":"invalid argument. Must provide a nonnegative integer. Value: `%s`.","2L":"invalid argument. Index argument must be a nonnegative integer. Value: `%s`.","2M":"invalid argument. Index argument is out-of-bounds. Value: `%u`.","2N":"invalid argument. First argument must be either a complex number, an array-like object, or a complex number array. Value: `%s`.","2O":"invalid argument. First argument must be an array-like object. Value: `%s`.","2P":"invalid argument. Second argument must be a recognized array data type. Value: `%s`.","2Q":"invalid argument. Second argument must have a recognized/supported data type. Type: `%s`. Value: `%s`.","2R":"invalid argument. Unable to parse %s date.","2S":"invalid argument. Numeric %s date must be either a Unix or JavaScript timestamp.","2T":"invalid argument. %s date must either be a date string, Date object, Unix timestamp, or JavaScript timestamp.","2U":"invalid argument. Length must be a positive integer. Value: `%s`.","2V":"invalid argument. Options argument must be an object. Value: `%s`.","2W":"invalid option. `%s` option must be a string. Option: `%s`.","2X":"invalid option. `%s` option must be one of the following: \"%s\". Option: `%s`.","2Y":"invalid argument. Must provide a recognized data type. Value: `%s`.","2Z":"invalid argument. Environment lacks Symbol.iterator support. Must provide a length, typed array, or array-like object. Value: `%s`.","2a":"invalid argument. Must provide a length, typed array, array-like object, or an iterable. Value: `%s`.","2b":"invalid argument. Callback argument must be a function. Value: `%s`.","2c":"invalid argument. Iterator argument must be an iterator protocol-compliant object. Value: `%s`.","2d":"invalid argument. First argument must be a nonnegative integer. Value: `%s`.","2e":"invalid argument. Third argument must be a recognized data type. Value: `%s`.","2f":"invalid argument. First argument must be either an array, typed array, or complex typed array. Value: `%s`.","2g":"invalid argument. Start must be numeric. Value: `%s`.","2h":"invalid argument. Stop must be numeric. Value: `%s`.","2i":"invalid argument. Increment must be numeric. Value: `%s`.","2j":"invalid argument. First argument must be either a real or complex number. Value: `%s`.","2k":"invalid argument. Second argument must be either a real or complex number. Value: `%s`.","2l":"invalid argument. Third argument must be an array-like object. Value: `%s`.","2m":"invalid argument. Third argument must be a nonnegative integer. Value: `%s`.","2n":"invalid option. `%s` option must be a real or complex floating-point data type or \"generic\". Option: `%s`.","2o":"invalid option. `%s` option must be a boolean. Option: `%s`.","2p":"invalid argument. Exponent of start value must be numeric. Value: `%s`.","2q":"invalid argument. Exponent of stop value must be numeric. Value: `%s`.","2r":"invalid argument. First argument must be either an array length or an array-like object. Value: `%s`.","2s":"invalid argument. Must provide a typed array or ArrayBuffer. Value: `%s`.","2t":"invalid option. `%s` option must be a nonnegative integer. Option: `%s`.","2u":"invalid argument. Must provide an array-like object. Value: `%s`.","2v":"invalid option. `%s` option must be either `1` or `-1`. Option: `%s`.","2w":"invalid argument. Second argument must be either a function or an options object. Value: `%s`.","2x":"invalid argument. Must provide a typed array. Value: `%s`.","2y":"invalid argument. Second argument must be an array-like object. Value: `%s`.","2z":"invalid argument. Third argument must be an integer. Value: `%s`.","3A":"invalid argument. Key path must be a string or a key array. Value: `%s`.","3B":"invalid argument. Must provide a string. Value: `%s`.","3C":"invalid argument. Must provide a valid position (i.e., a nonnegative integer). Value: `%s`.","3D":"invalid argument. Must provide a valid position (i.e., within string bounds). Value: `%u`.","3E":"invalid argument. Second argument must be callable. Value: `%s`.","3F":"invalid argument. First argument must be a string. Value: `%s`.","3G":"invalid argument. Fourth argument must be one of the following: \"%s\". Value: `%s`.","3H":"invalid argument. Fifth argument must be one of the following: \"%s\". Value: `%s`.","3I":"invalid argument. Second argument must be either an object (except null) or a function. Value: `%s`.","3J":"invalid argument. Must provide a function. Value: `%s`.","3K":"invalid argument. Must provide either an options object or a callback function. Value: `%s`.","3L":"invalid argument. First argument must be an object. Value: `%s`.","3M":"invalid option. `%s` option must be a writable stream. Option: `%s`.","3N":"invalid argument. Third argument must be a function. Value: `%s`.","3O":"invalid option. `%s` option must be either a positive integer or `null`. Option: `%s`.","3P":"invalid option. `%s` option must be a positive integer. Option: `%s`.","3Q":"invalid argument. First argument must be a 1-dimensional ndarray containing double-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float64Array). Value: `%s`.","3R":"invalid argument. Second argument must be a 1-dimensional ndarray containing double-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float64Array). Value: `%s`.","3S":"invalid argument. Arrays must be the same length. First argument length: `%u`. Second argument length: `%u`.","3T":"invalid argument. First argument must be either an array-like object or a one-dimensional ndarray. Value: `%s`.","3U":"invalid argument. Second argument must be either an array-like object or a one-dimensional ndarray. Value: `%s`.","3V":"invalid argument. First argument must be a 1-dimensional ndarray containing single-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float32Array). Value: `%s`.","3W":"invalid argument. Second argument must be a 1-dimensional ndarray containing single-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float32Array). Value: `%s`.","3X":"invalid argument. Second argument must be a nonnegative integer. Value: `%s`.","3Y":"invalid argument. Second argument must not exceed the number of bytes in the input ArrayBuffer. Value: `%s`.","3Z":"invalid argument. Last argument must be a nonnegative integer. Value: `%s`.","3a":"invalid argument. Last argument must not exceed the number of bytes in the input ArrayBuffer. Value: `%s`.","3b":"invalid argument. Must provide a Buffer. Value: `%s`.","3c":"invalid argument. First argument must be a function. Value: `%s`.","3d":"invalid argument. Third argument must be a constructor function. Value: `%s`.","3e":"invalid argument. Real component must be a number. Value: `%s`.","3f":"invalid argument. Imaginary component must be a number. Value: `%s`.","3g":"invalid option. `%s` option must be one of the following: \"%s\". Option: `%s`.","3h":"invalid argument. Unsupported/unrecognized dataset name. Value: `%s`.","3i":"invalid option. Unrecognized `%s`. Option: `[%s]`.","3j":"invalid option. `%s` option must be a string or an array of strings. Option: `%s`.","3k":"invalid option. `%s` option must be a positive integer or an array of positive integers. Option: `%s`.","3l":"invalid option. `%s` option must be a positive integer array of length two. Option: `%s`.","3m":"invalid option. `%s` option cannot be less than 1790. Option: `%s`.","3n":"invalid option. `%s` option cannot be greater than 5000. Option: `%s`.","3o":"invalid argument. Must provide an error object. Value: `%s`.","3p":"invalid argument. First argument must be a valid file descriptor (i.e., nonnegative integer). Value: `%s`.","3q":"invalid argument. Last argument must be a function. Value: `%s`.","3r":"invalid argument. Must provide a valid file descriptor (i.e., a nonnegative integer). Value: `%s`.","3s":"invalid argument. First argument must be an array of strings. Value: `%s`.","3t":"invalid argument. Options argument must be either a string or an object. Value: `%s`.","3u":"invalid argument. Predicate function must be a function. Value: `%s`.","3v":"invalid argument. First argument must be an iterator. Value: `%s`.","3w":"invalid argument. Must provide an iterator. Value: `%s`.","3x":"invalid argument. Must provide an iterator protocol-compliant object. Argument: `%u`. Value: `%s`.","3y":"invalid argument. Must provide an iterator protocol-compliant object. Value: `%s`.","3z":"invalid argument. Unable to parse date string. Value: `%s`.","4A":"invalid argument. Second argument must be a number. Value: `%s`.","4B":"invalid argument. Third argument must be a number. Value: `%s`.","4C":"invalid argument. Hash function argument must be a function. Value: `%s`.","4D":"invalid option. `%s` option must be a positive number. Option: `%s`.","4E":"invalid argument. Third argument must be either a nonnegative integer or an object. Value: `%s`.","4F":"invalid arguments. All arguments must be functions. Value: `%s`.","4G":"invalid argument. Each iterator function, except the last iterator function, within an iterator pipeline must return an iterator. Value: `%s`.","4H":"invalid argument. Must provide an an iterator. Value: `%s`.","4I":"invalid return value. Callback function must return an integer. Value: `%s`.","4J":"invalid argument. Fourth argument must be a boolean. Value: `%s`.","4K":"invalid return value. Callback function must return a positive integer. Value: `%s`.","4L":"invalid argument. Fifth argument must be a callback function. Value: `%s`.","4M":"invalid argument. Third argument must be either an integer (starting index) or a callback function. Value: `%s`.","4N":"invalid argument. Fourth argument must be either an integer (ending index) or a callback function. Value: `%s`.","4O":"invalid argument. Unrecognized/unsupported scale function. Value: `%s`.","4P":"invalid argument. Must provide an iterator protocol-compliant object or a number. Argument: `%u`. Value: `%s`.","4Q":"invalid argument. First argument must be a finite number. Value: `%s`.","4R":"invalid option. `%s` option must be a positive finite number. Option: `%s`.","4S":"invalid option. `%s` option must be one of the following: \"%s\". Option: `%s`.","4T":"invalid option. `%s` option must be less than or equal to 79. Option: `%u`.","4U":"invalid option. `%s` option must be less than or equal to 77. Option: `%u`.","4V":"invalid argument. Must provide an argument having a supported data type. Value: `%s`.","4W":"invalid option. Unsupported policy for determining an output array data type. Option: `%s`.","4X":"invalid option. `%s` option must be a recognized/supported data type. Option: `%s`.","4Y":"invalid option. `%s` option must be a recognized/supported output array data type policy. Option: `%s`.","4Z":"invalid argument. Resolution table must be an object. Value: `%s`.","4a":"invalid argument. Resolution table `%s` field value must be either a function or null. Value: `%s`.","4b":"invalid argument. First argument must be a positive integer. Value: `%s`.","4c":"invalid argument. First argument must be a one-dimensional ndarray. Value: `%s`.","4d":"invalid argument. Second argument must be either +1 or -1. Value: `%s`.","4e":"invalid argument. First argument must be a one-dimensional ndarray of length %u. Actual length: `%u`.","4f":"invalid argument. First argument must be an ndarray. Value: `%s`.","4g":"invalid argument. First argument must be an ndarray whose last dimension is of size `%u`. Actual size: `%u`.","4h":"invalid argument. Second argument is incompatible with model loss function. Probability predictions are only supported when the loss function is one of the following: \"%s\". Model loss function: `%s`.","4i":"invalid argument. Second argument must be a string value equal to either \"label\", \"probability\", or \"linear\". Value: `%s`.","4j":"invalid argument. Attempting to scale a weight vector by a nonpositive value. This is likely due to too large a value of `eta*lambda`. Value: `%f`.","4k":"invalid option. `%s` option must be a nonnegative number. Option: `%s`.","4l":"invalid option. `%s` option must be an array-like object. Option: `%s`.","4m":"invalid option. First `%s` option must be one of the following: \"%s\". Option: `%s`.","4n":"invalid option. Second `%s` option must be a positive number. Option: `%s`.","4o":"invalid option. Third `%s` option must be a number. Option: `%s`.","4p":"invalid argument. Argument specifying number of dimensions must be a positive integer. Value: `%s`.","4q":"invalid argument. First argument must either be a positive integer specifying the number of clusters or a matrix containing initial centroids. Value: `%s`.","4r":"invalid option. First `%s` parameter option must be greater than or equal to the number of clusters. Options: `%f`.","4s":"invalid argument. Must provide a 1-dimensional ndarray. Value: `%s`.","4t":"invalid argument. Vector length must match centroid dimensions. Expected: `%u``. Actual: `%u``.","4u":"invalid argument. Output argument must be a 1-dimensional ndarray. Value: `%s`.","4v":"invalid argument. Must provide a 2-dimensional ndarray. Value: `%s`.","4w":"invalid argument. Number of matrix columns must match centroid dimensions. Expected: `%u``. Actual: `%u`.","4x":"invalid argument. Output vector length must match the number of data points. Expected: `%u`. Actual: `%u`.","4y":"invalid option. `%s` option method must be one of the following: \"%s\". Option: `%s`.","4z":"invalid option. First `%s` parameter option must be a positive integer. Option: `%s`.","5A":"invalid option. `%s` option must be a recognized data type. Option: `%s`.","5B":"invalid option. Data type cast is not allowed. Casting mode: `%s`. From: `%s`. To: `%s`.","5C":"invalid option. `%s` option must be a recognized order. Option: `%s`.","5D":"invalid option. `%s` option must be an array-like object containing nonnegative integers. Option: `%s`.","5E":"invalid argument. Linear index must not exceed array dimensions. Number of array elements: `%u`. Value: `%d`.","5F":"invalid argument. Input array cannot be broadcast to the specified shape, as the specified shape has a dimension whose size is less than the size of the corresponding dimension in the input array. Array shape: (%s). Desired shape: (%s). Dimension: %u.","5G":"invalid argument. Input array and the specified shape are broadcast incompatible. Array shape: (%s). Desired shape: (%s). Dimension: %u.","5H":"invalid argument. Specified axis is out-of-bounds. Must be on the interval: [-%u-1, %u]. Value: `%d`.","5I":"invalid argument. Index must be on the interval: [0, %f]. Value: `%f`.","5J":"invalid argument. Subscripts must not exceed array dimensions. Subscript: `%u`. Value: `%d`.","5K":"invalid argument. First argument must be a recognized data type. Value: `%s`.","5L":"invalid argument. First argument must have a recognized data type. Value: `%s`.","5M":"invalid arguments. Number of indices must match the number of dimensions. ndims: `%u`. nargs: `%u`.","5N":"invalid argument. Indices must be integer valued. Argument: `%u`. Value: `%s`.","5O":"invalid argument. Index must be an integer. Value: `%s`.","5P":"invalid argument. First argument must be a supported ndarray data type. Value: `%s`.","5Q":"invalid argument. Second argument must be an array-like object, typed-array-like, or a Buffer. Value: `%s`.","5R":"invalid argument. Second argument `get` and `set` properties must be functions. Value: `%s`.","5S":"invalid argument. Third argument must be an array-like object containing nonnegative integers. Value: `%s`.","5T":"invalid argument. Number of dimensions must not exceed %u due to stack limits. Value: `%u`.","5U":"invalid argument. Fourth argument must be an array-like object containing integers. Value: `%s`.","5V":"invalid argument. Fourth argument length must match the number of dimensions. Expected number of dimensions: `%u`. Strides length: `%u`.","5W":"invalid argument. Fourth argument must contain a single element equal to `0`. Value: `%d`.","5X":"invalid argument. Fifth argument must be a nonnegative integer. Value: `%s`.","5Y":"invalid argument. Sixth argument must be a supported order. Value: `%s`.","5Z":"invalid argument. Indices must be integer valued. Argument: `%i`. Value: `%u`.","5a":"invalid option. `%s` option must be a recognized mode. Option: `%s`.","5b":"invalid option. `%s` option must be an array containing recognized modes. Option: `%s`.","5c":"invalid option. Each submode must be a recognized mode. Option: `%s`.","5d":"invalid argument. First argument must be either a function or an array of functions. Value: `%s`.","5e":"invalid argument. Third argument must be an array-like object or null. Value: `%s`.","5f":"invalid argument. Fourth argument must be a positive integer. Value: `%s`.","5g":"invalid argument. Sixth argument must be a nonnegative integer. Value: `%s`.","5h":"invalid argument. Input array must be an ndarray-like object. Value: `%s`.","5i":"invalid argument. Output array must be an ndarray-like object. Value: `%s`.","5j":"invalid argument. Output argument must be either an array, typed array, or object. Value: `%s`.","5k":"invalid argument. Shape argument must be an array-like object containing nonnegative integers. Value: `%s`.","5l":"invalid argument. Linear index must be integer valued. Value: `%s`.","5m":"invalid option. `%s` option must be a supported/recognized mode. Option: `%s`.","5n":"invalid option. `%s` option must be a supported/recognized order. Option: `%s`.","5o":"invalid argument. First argument must be an array-like object containing nonnegative integers. Value: `%s`.","5p":"invalid argument. Number of provided subscripts must match the number of dimensions. ndims: `%u`. Number of subscripts: `%u`.","5q":"invalid argument. Subscripts must be integer valued. Argument: `%u`. Value: `%s`.","5r":"invalid option. `%s` option cannot be an empty array.","5s":"invalid argument. First argument must be either a nonnegative integer or an array of nonnegative integers. Value: `%s`.","5t":"invalid argument. First argument must be an ndarray-like object. Value: `%s`.","5u":"invalid option. `%s` option must either be a nonnegative integer or an array of nonnegative integers. Option: `%s`.","5v":"invalid option. `%s` option must be either a Buffer or a string. Option: `%s`.","5w":"invalid argument. Request listener must be a function. Value: `%s`.","5x":"invalid argument. Third argument must be a positive integer. Value: `%s`.","5y":"invalid argument. Number of topics must be a positive integer. Value: `%s`.","5z":"invalid argument. First argument must be a nonnegative integer which is less than the total number of topics. Value: `%s`.","6A":"invalid assignment. `%s` must be a nonnegative integer or nonnegative integer array. Value: `%s`.","6B":"invalid assignment. `%s` must be a nonnegative integer. Value: `%s`.","6C":"invalid assignment. Unrecognized/unsupported `%s`. Must be one of the following: \"%s\". Value: `%s`.","6D":"invalid assignment. Unrecognized/unsupported `%s`. Value: `%s`.","6E":"invalid assignment. `%s` must be a nonnegative integer or null. Value: `%s`.","6F":"invalid assignment. `%s` must be a string or null. Value: `%s`.","6G":"invalid argument. Must provide a supported viewer. Value: `%s`.","6H":"invalid assignment. `%s` must be a function. Value: `%s`.","6I":"invalid assignment. `%s` must be either null or an array. Value: `%s`.","6J":"invalid assignment. `%s` must be a string, function, or null. Value: `%s`.","6K":"invalid argument. `options` argument must be an object. Value: `%s`.","6L":"invalid assignment. `%s` must be a number. Value: `%s`.","6M":"invalid assignment. `%s` must be a number on the interval `[0,1]`. Value: `%f`.","6N":"invalid assignment. `%s` must be array-like. Value: `%s`.","6O":"invalid arguments. Must provide equal length array-like objects. x length: `%u`, y length: `%u`.","6P":"invalid assignment. `%s` must be a string or a function. Value: `%s`.","6Q":"invalid assignment. `%s` must be a number or a function. Value: `%s`.","6R":"invalid assignment. `%s` must be one of the following: \"%s\". Value: `%s`.","6S":"invalid assignment. `%s` must be a nonnegative integer or a function. Value: `%s`.","6T":"invalid assignment. `%s` must be a supported symbol. Symbols: \"%s\". Value: `%s`.","6U":"invalid argument. `options` argument must be a plain object. Value: `%s`.","6V":"invalid assignment. `%s` must be either a string or a string array. Value: `%s`.","6W":"invalid assignment. `%s` must be a string or a string array. Value: `%s`.","6X":"invalid assignment. `%s` must be a string or string array. Value: `%s`.","6Y":"invalid assignment. Unrecognized/unsupported symbol. Value: `[%s]`.","6Z":"invalid assignment. `%s` must be an array. Value: `%s`.","6a":"invalid assignment. `%s` must be either a finite number, Date, or null. Value: `%s`.","6b":"invalid assignment. `%s` must be a boolean or boolean array. Value: `%s`.","6c":"invalid assignment. `%s` must be either a string or string array. Value: `%s`.","6d":"invalid assignment. Unrecognized/unsupported orientation. A `%s` value must be one of the following: \"%s\". Value: `%s`.","6e":"invalid assignment. `%s` must be either a finite number or null. Value: `%s`.","6f":"invalid state. x and y are different lengths. x length: `%u`, y length: `%u`.","6g":"invalid state. Each `x[i]:y[i]` pair must be the same length. x[%u].length: `%u`, y[","6h":"invalid assignment. `%s` must be a positive integer or null. Value: `%s`.","6i":"invalid assignment. `%s` size is smaller than the number of data elements. Number of elements: `%u`. Value: `%u`.","6j":"invalid assignment. `%s` must be an array-like object or an ndarray. Value: `%s`.","6k":"invalid assignment. `%s` length exceeds maximum data buffer size. Buffer size: `%u`. Length: `%u`.","6l":"invalid assignment. `%s` must be a finite number or null. Value: `%s`.","6m":"invalid assignment. `%s` must be a finite number or null. Value: `%s.","6n":"invalid assignment. Must be an array or typed array. Value: `%s`.","6o":"invalid option. `%s` option must be an array or typed array. Option: `%s`.","6p":"invalid option. `%s` option must be a function. Option: `%s`.","6q":"invalid argument. Encoding argument must be a string. Value: `%s`.","6r":"invalid argument. Must provide either a string, nonnegative integer, or an options object. Value: `%s`.","6s":"invalid argument. First argument must be either a string or nonnegative integer. Value: `%s`.","6t":"invalid argument. Unable to parse mask expression. Ensure the expression is properly formatted, only uses the class letters \"u\", \"g\", \"o\", and \"a\", only uses the operators \"+\", \"-\", and \"=\", and only uses the permission symbols \"r\", \"w\", and \"x\". Value: `%s`.","6u":"invalid option. `%s` option must be a pseudorandom number generator function. Option: `%s`.","6v":"invalid argument. First argument must be a number and not NaN. Value: `%s`.","6w":"invalid argument. Second argument must be a number and not NaN. Value: `%s`.","6x":"invalid argument. Minimum support must be less than maximum support. Value: `[%f,%f]`.","6y":"invalid argument. First argument must be a probability. Value: `%s`.","6z":"invalid option. `%s` option must be a Uint32Array. Option: `%s`.","7A":"invalid argument. First argument must be a positive number and not NaN. Value: `%s`.","7B":"invalid argument. Second argument must be a positive number and not NaN. Value: `%s`.","7C":"invalid argument. Third argument must be a number and not NaN. Value: `%s`.","7D":"invalid argument. Third argument must be less than or equal to the first argument. Value: `%u`.","7E":"invalid argument. Second argument must be less than or equal to the first argument. Value: `%u`.","7F":"invalid %s. State array has insufficient length.","7G":"invalid %s. State array has an incompatible schema version. Expected: `%s`. Actual: `%s`.","7H":"invalid %s. State array has an incompatible number of sections. Expected: `%s`. Actual: `%s`.","7I":"invalid %s. State array has an incompatible state length. Expected: `%u`. Actual: `%u`.","7J":"invalid %s. State array length is incompatible with seed section length. Expected: `%u`. Actual: `%u`.","7K":"invalid option. `%s` option must be an Int32Array. Option: `%s`.","7L":"invalid option. `%s` option must be a positive integer less than the maximum signed 32-bit integer. Option: `%u`.","7M":"invalid option. `%s` option must be either a positive integer less than the maximum signed 32-bit integer or an array-like object containing integer values less than the maximum signed 32-bit integer. Option: `%s`.","7N":"invalid argument. Must provide an Int32Array. Value: `%s`.","7O":"invalid %s. State array has an incompatible table length. Expected: `%s`. Actual: `%s`.","7P":"invalid %s. `state` array has insufficient length.","7Q":"invalid %s. `state` array has an incompatible schema version. Expected: %s. Actual: %s.","7R":"invalid %s. `state` array has an incompatible number of sections. Expected: %s. Actual: %s.","7S":"invalid %s. `state` array has an incompatible state length. Expected: `%u`. Actual: `%u`.","7T":"invalid %s. `state` array has an incompatible section length. Expected: `%u`. Actual: `%u`.","7U":"invalid %s. `state` array length is incompatible with seed section length. Expected: `%u`. Actual: `%u`.","7V":"invalid option. `%s` option must be a positive integer less than or equal to the maximum unsigned 32-bit integer. Option: `%u`.","7W":"invalid option. `%s` option must be either a positive integer less than or equal to the maximum unsigned 32-bit integer or an array-like object containing integer values less than or equal to the maximum unsigned 32-bit integer. Option: `%u`.","7X":"invalid argument. Second argument must be on the interval: (0, 1). Value: `%f`.","7Y":"invalid option. `%s` option cannot be undefined. Option: `%s`.","7Z":"invalid option. Unrecognized/unsupported PRNG. Option: `%s`.","7a":"invalid argument. First argument must be a positive number or an options object. Value: `%s`.","7b":"invalid arguments. Parameters must satisfy the following condition: %s. Value: `[%f, %f, %f]`.","7c":"invalid argument. Scale parameter must be a positive number. Value: `%s`.","7d":"invalid argument. Shape parameter must be a positive number. Value: `%s`.","7e":"invalid argument. First argument must be an integer. Value: `%s`.","7f":"invalid argument. Second argument must be an integer. Value: `%s`.","7g":"invalid argument. `n` must be less than or equal to `N`. Value: `%u`.","7h":"invalid argument. `K` must be less than or equal to `N`. Value: `%u`.","7i":"invalid argument. `%s` argument must be array-like. Value: `%s`.","7j":"invalid input option. `size` option must be less than or equal to the length of `x` when `replace` is `false`. Option: `%s`.","7k":"invalid input option. `size` option must be less than or equal to the population size when `replace` is `false`. Option: `%s`.","7l":"invalid option. `%s` option must be an array of probabilities that sum to one. Option: `%s`.","7m":"invalid argument. Minimum support must be less than maximum support. Value: `[%s,%s]`.","7n":"invalid option. `%s` option must be a string or null. Option: `%s`.","7o":"invalid argument. Minimum support must be less than or equal to maximum support. Value: `[%s,%s]`.","7p":"invalid argument. Must be one of the following: \"%s\". Value: `%s`.","7q":"invalid argument. Mode must be one of the following: \"%s\". Value: `%s`.","7r":"invalid argument. Must be one of the following: \"%s\". Value: `%s`.","7s":"invalid operation. Alias already exists in the provided context. Alias: `%s`. Value: `%s`.","7t":"invalid argument. Unrecognized workspace name. Value: `%s`.","7u":"invalid operation. Cannot read from write-only variable `%s`.","7v":"Cannot assign to read only property %s of object #","7w":"invalid option. `%s` option must be a regular expression or an array-like object. Option: `%s`.","7x":"invalid option. `%s` option must be one of `%s`. Option: `%s`.","7y":"invalid argument. Must provide either an options object or a workspace name. Value: `%s`.","7z":"invalid argument. Must provide either a string or regular expression. Value: `%s`.","8A":"invalid argument. Must provide an integer. Value: `%s`.","8B":"invalid argument. Must provide a positive integer. Value: `%s`.","8C":"invalid argument. Presentation text must be a string. Value: `%s`.","8D":"invalid argument. REPL argument must be a REPL instance. Value: `%s`.","8E":"unexpected error. Unable to reload presentation. Error: %s","8F":"unexpected error. Unable to watch presentation source file. Error: %s","8G":"invalid option. `%s` option must be either a recognized string or boolean. Option: `%s`.","8H":"invalid option. `%s` option must be either a positive integer or null. Option: `%s`.","8I":"invalid operation. Alias already exists in REPL context. Alias: `%s`. Value: `%s`.","8J":"invalid argument. Third argument must be an object. Value: `%s`.","8K":"invalid option. `%s` option must be less than or equal to the period. Option: `%u`.","8L":"invalid option. `%s` option must be greater than 2. Option: `%s`.","8M":"invalid option. `%s` option must be an integer. Option: `%s`.","8N":"invalid option. `%s` option must be an positive integer. Option: `%s`.","8O":"invalid option. `%s` option must be less than the period. Option: `%s`.","8P":"invalid option. `%s` option must be a number. Option: `%s`.","8Q":"invalid option. `%s` option must be an positive even integer. Option: `%s`.","8R":"invalid argument. First argument must be a numeric array. Value: `%s`.","8S":"invalid argument. First argument must contain at least two elements. Value: `%s`.","8T":"invalid argument. Second argument must be an array. Value: `%s`.","8U":"invalid argument. Second argument must contain at least two unique elements. Value: `%s`.","8V":"invalid option. `%s` option must be a number on the interval: [0, 1]. Option: `%f`.","8W":"invalid option. `%s` option must be an array containing at least two unique elements. Option: `%s`.","8X":"invalid argument. Must provide array-like arguments. Value: `%s`.","8Y":"invalid argument. Supplied arrays cannot be empty. Value: `%s`.","8Z":"invalid option. `%s` option must be an array. Option: `%s`.","8a":"invalid argument. Minimum support must be a number. Value: `%s`.","8b":"invalid argument. Maximum support must be a number. Value: `%s`.","8c":"invalid arguments. Minimum support must be less than maximum support. Value: `%f, %f`.","8d":"invalid assignment. Must be a number. Value: `%s`.","8e":"invalid assignment. Must be less than %f. Value: `%f`.","8f":"invalid assignment. Must be greater than %f. Value: `%f`.","8g":"invalid argument. Mean parameter `p` must be a probability. Value: `%s`.","8h":"invalid assignment. Must be a probability. Value: `%s`.","8i":"invalid argument. First shape parameter must be a positive number. Value: `%s`.","8j":"invalid argument. Second shape parameter must be a positive number. Value: `%s`.","8k":"invalid assignment. Must be a positive number. Value: `%s`.","8l":"invalid argument. Number of trials must be a positive integer. Value: `%s`.","8m":"invalid argument. Success probability must be a number between 0 and 1. Value: `%s`.","8n":"invalid assignment. Must be a positive integer. Value: `%s`.","8o":"invalid assignment. Must be a number on the interval: [0, 1]. Value: `%s`.","8p":"invalid argument. Location parameter must be a number. Value: `%s`.","8q":"invalid argument. Rate parameter must be a positive number. Value: `%s`.","8r":"invalid argument. Mean parameter `%s` must be a number. Value: `%s`.","8s":"invalid argument. Minimum support must be an integer. Value: `%s`.","8t":"invalid argument. Maximum support must be an integer. Value: `%s`.","8u":"invalid arguments. Minimum support must be less than or equal to maximum support. Value: `%d, %d`.","8v":"invalid assignment. Must be an integer. Value: `%s`.","8w":"invalid assignment. Must be less than or equal to %u. Value: `%d`.","8x":"invalid assignment. Must be greater than or equal to %u. Value: `%s`.","8y":"invalid argument. Shape parameter must be a positive integer. Value: `%s`.","8z":"invalid argument. Numerator degrees of freedom must be a positive number. Value: `%s`.","9A":"invalid argument. Mean parameter `lambda` must be a positive number. Value: `%s`.","9B":"invalid argument. Mode must be a number. Value: `%s`.","9C":"invalid arguments. Parameters must satisfy the following condition: %s. a: `%f`. b: `%f`. c: `%f`.","9D":"invalid assignment. Must be less than or equal to both the maximum support and the mode. Value: `%f`.","9E":"invalid assignment. Must be greater than or equal to both the minimum support and the mode. Value: `%f`.","9F":"invalid assignment. Must be greater than or equal to the minimum support and less than or equal to the maximum support. Value: `%f`.","9G":"invalid argument. An array argument must contain two elements. Value: `%s`.","9H":"invalid argument. Must provide a nonnegative integer or a two-element array. Value: `%s`.","9I":"invalid arguments. Number of successes cannot be larger than the total number of observations. x: `%u`. n: `%u`.","9J":"invalid option. `%s` option must be a probability. Option: `%f`.","9K":"invalid argument. Unsupported/unrecognized distribution name. Value: `%s`.","9L":"invalid argument. First argument must contain nonnegative integers. Index: `%u`. Value: `%s`.","9M":"invalid argument. Probability mass function (PMF) arguments must be numbers. Argument: `%u`. Value: `%s`.","9N":"invalid argument. Second argument must be either an array-like object (or one-dimensional ndarray) of probabilities summing to one, an array-like object (or one-dimensional ndarray) of expected frequencies, or a discrete probability distribution name. Value: `%s`.","9O":"invalid argument. Second argument must only contain numbers. Index: `%u`. Value: `%s`.","9P":"invalid argument. Second argument must only contain nonnegative numbers. Index: `%u`. Value: `%d`.","9Q":"invalid option. `%s` option must be a number on the interval: [0, 1]. Value: `%s`.","9R":"invalid argument. First argument must be an array of arrays or ndarray-like object with dimension two. Value: `%s`.","9S":"invalid argument. First argument must contain nonnegative integers. Value: `%s`.","9T":"invalid argument. First argument must either specify the order of the covariance matrix or be a square 2-dimensional ndarray for storing the covariance matrix. Value: `%s`.","9U":"invalid argument. Second argument must be a 1-dimensional ndarray. Value: `%s`.","9V":"invalid argument. The number of elements (means) in the second argument must match covariance matrix dimensions. Expected: `%u`. Actual: `%u`.","9W":"invalid argument. Vector length must match covariance matrix dimensions. Expected: `%u`. Actual: `%u`.","9X":"invalid argument. Must provide a number. Value: `%s`.","9Y":"invalid argument. Must provide a nonnegative number. Value: `%s`.","9Z":"invalid argument. Must provide a nonnegative number on the interval [0,1]. Value: `%f`.","9a":"invalid argument. Output argument must be an array-like object. Value: `%s`.","9b":"invalid argument. Window size must be a positive integer. Value: `%s`.","9c":"invalid argument. Window size must be greater than or equal to 3. Value: `%s`.","9d":"invalid option. `%s` option must be on the interval [0,1]. Option: `%f`.","9e":"invalid argument. First argument must either specify the order of the correlation distance matrix or be a square 2-dimensional ndarray for storing the correlation distance matrix. Value: `%s`.","9f":"invalid argument. The number of elements (means) in the second argument must match correlation distance matrix dimensions. Expected: `%u`. Actual: `%u`.","9g":"invalid argument. Vector length must match correlation matrix dimensions. Expected: `%u`. Actual: `%u`.","9h":"invalid argument. Vector length must match correlation distance matrix dimensions. Expected: `%u`. Actual: `%u`.","9i":"invalid argument. First argument must either specify the order of the correlation matrix or be a square 2-dimensional ndarray for storing the correlation matrix. Value: `%s`.","9j":"invalid argument. Unsupported/unrecognized kernel. Value: `%s`.","9k":"invalid argument. Second argument must be a numeric array. Value: `%s`.","9l":"invalid option. Lower bound `%s` must be strictly less than the upper bound `%s`.","9m":"invalid option. `%s` option must be an array of positive numbers. Option: `%s`.","9n":"invalid option. `%s` option must be an array of length two. Option: `%s`.","9o":"invalid option. `%s` option must be a string denoting a known kernel function or a custom function. Option: `%s`.","9p":"invalid arguments. First argument and `%s` must be arrays having the same length.","9q":"invalid invocation. Incorrect number of arguments. Must provide at least two array-like arguments. Value: `%s`.","9r":"invalid option. `%s` must be a number on the interval: [0, 1]. Value: `%f`.","9s":"invalid argument. First argument must be a typed array or number array. Value: `%s`.","9t":"invalid argument. Second argument must be either a CDF function or a string. Value: `%s`.","9u":"invalid argument. Distribution parameter must be a number. Value: `%s`.","9v":"invalid option. `%s` option must contain at least two unique elements. Value: `%s`.","9w":"invalid argument. Provided arrays cannot be empty. Value: `%s`.","9x":"invalid argument. First argument must be an array of probabilities. Value: `%s`.","9y":"invalid argument. When specified, `%s` arguments must contain at least a length of %u. Value: `%u`.","9z":"invalid argument. Second argument must be one of the following: %s. Value: `%s`.","A0":"invalid option. `%s` option must be a number in `[0,1]`. Option: `%s`.","A1":"invalid option. `%s` option must be a number on the interval: [-1, 1]. Option: `%s`.","A2":"invalid argument. First argument must contain at least two elements. Value: `%s`.","A3":"invalid argument. Second argument must be either a numeric array or an options object. Value: `%s`.","A4":"invalid option. `%s` option must be either `equal` or `unequal`. Option: `%s`.","A5":"invalid argument. `%s` argument must be a numeric array. Value: `%s`.","A6":"invalid option. `%s` option must be one of the following: %s. Option: `%s`.","A7":"invalid argument. Third argument must be a positive number. Value: `%s`.","A8":"invalid argument. Fourth argument must be a positive number. Value: `%s`.","A9":"invalid operation. Serialization function must return a string or Buffer. Value: `%s`.","AA":"invalid argument. In binary mode, a provided value must be a string, Buffer, or Uint8Array. Value: `%s`.","AB":"invalid option. `%s` option must be either a string or a regular expression. Option: `%s`.","AC":"invalid argument. First input array offset must be a nonnegative integer. Value: `%s`.","AD":"invalid argument. Second input array offset must be a nonnegative integer. Value: `%s`.","AE":"invalid argument. Output array offset must be a nonnegative integer. Value: `%s`.","AF":"invalid argument. Must provided recognized data types. Unable to resolve a data type string. Value: `%s`.","AG":"invalid argument. Input array offset must be a nonnegative integer. Value: `%s`.","AH":"invalid argument. Input array stride must be an integer. Value: `%s`.","AI":"invalid argument. Output array stride must be an integer. Value: `%s`.","AJ":"invalid option. `%s` option must be an array of strings. Option: `%s`.","AK":"invalid argument. Must provide a valid position (i.e., within string bounds). Value: `%s`.","AL":"invalid argument. Third argument must be a boolean. Value: `%s`.","AM":"invalid argument. Must provide valid code points (i.e., nonnegative integers). Value: `%s`.","AN":"invalid argument. Must provide a valid code point (cannot exceed max). Value: `%s`.","AO":"invalid argument. Third argument must be a string. Value: `%s`.","AP":"invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.","AQ":"invalid argument. Third argument must be a string or an array of strings. Value: `%s`.","AR":"invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.","AS":"invalid argument. Second argument must be an array of strings. Value: `%s`.","AT":"invalid argument. Second argument must be a string or regular expression. Value: `%s`.","AU":"invalid argument. Third argument must be a string or replacement function. Value: `%s`.","AV":"invalid argument. Must provide a string or an array of strings. Value: `%s`.","AW":"invalid argument. If only providing a single argument, must provide a Date object. Value: `%s`.","AX":"invalid argument. First argument must be either a string or integer. Value: `%s`.","AY":"invalid argument. Day number must be on the interval: `[1, %u]`. Value: `%d`.","AZ":"invalid argument. First argument must be either a string, integer, or Date object. Value: `%s`.","Aa":"invalid argument. An integer month value must be on the interval: [1, 12]. Value: `%s`.","Ab":"invalid argument. Must provide a recognized month. Value: `%s`.","Ac":"invalid argument. Must provide either an integer or a `Date` object. Value: `%s`.","Ad":"invalid argument. Must provide either a string, integer, or Date object. Value: `%s`.","Ae":"invalid argument. Must provide an array of nonnegative integers. Value: `%s`.","Af":"invalid argument. Input array must contain two elements. Value: `%s`.","Ag":"invalid argument. Must provide a collection. Value: `%s`.","Ah":"invalid argument. First argument must be a collection. Value: `%s`.","Ai":"invalid argument. First argument must be either an array, typed array, or an array-like object. Value: `%s`.","Aj":"invalid argument. All arguments must be functions. Value: `%s`.","Ak":"invalid argument. Number of function invocations must be a nonnegative integer. Value: `%s`.","Al":"invalid argument. First argument must be an array of functions. Value: `%s`.","Am":"invalid argument. Last argument must be a collection. Value: `%s`.","An":"invalid argument. Must provide either a valid buffer size (i.e., a positive integer) or an array-like object which can serve as the underlying buffer. Value: `%s`.","Ao":"invalid argument. An iterator must return an array-like object containing vertices. Value: `%s`.","Ap":"invalid argument. Callback must return an array-like object containing vertices. Value: `%s`.","Aq":"invalid argument. Callback must return an array-like object. Value: `%s`.","Ar":"invalid argument. Each element of the adjacency list must be an array-like object. Value: `%s`.","As":"invalid argument. Each element of the edge list must be an array-like object. Value: `%s`.","At":"invalid argument. Second argument must be an array-like object or an iterable. Value: `%s`.","Au":"invalid argument. First argument exceeds matrix dimensions. Value: `%u`.","Av":"invalid argument. Second argument exceeds matrix dimensions. Value: `%u`.","Aw":"invalid argument. Vertex cannot exceed matrix dimensions. Value: `%u`.","Ax":"invalid argument. Second argument must be a recognized output path convention. Value: `%s`.","Ay":"invalid argument. Cannot convert Windows extended-length paths to POSIX paths. Value: `%s`.","Az":"invalid argument. Arity argument must be a positive integer. Value: `%s`.","B0":"invalid argument. Property descriptor must be an object. Value: `%s`.","B1":"invalid argument. The `value` property of the property descriptor must be a function. Value: `%s`.","B2":"invalid argument. Second argument must be an object of property descriptors. Value: `%s`.","B3":"invalid argument. Path must be a string. Value: `%s`.","B4":"invalid argument. Third argument must be a recognized location. Value: `%s`.","B5":"invalid argument. Must provide a recognized iteration direction. Value: `%s`.","B6":"invalid argument. Must provide an object-like value. Value: `%s`.","B7":"invalid argument. Must provide a regular expression string. Value: `%s`.","B8":"invalid argument. Filename must be a string. Value: `%s`.","B9":"invalid argument. First argument must be an array of positive integers. Value: `%s`.","BA":"invalid argument. First argument must be object-like. Value: `%s`.","BB":"invalid argument. Must provide an array of arrays. Value: `%s`.","BC":"invalid argument. Must provide a boolean. Value: `%s`.","BD":"invalid argument. Second argument must have a prototype from which another object can inherit. Value: `%s`.","BE":"invalid argument. A provided constructor must be either an object (except null) or a function. Value: `%s`.","BF":"invalid argument. If the input array is an ndarray, the output array must also be an ndarray. Value: `%s`.","BG":"invalid argument. If the input array is an array-like object, the output array must also be an array-like object. Value: `%s`.","BH":"invalid argument. First argument must be an array-like object or an ndarray. Value: `%s`.","BI":"invalid argument. If the first input array is an ndarray, the second input array must also be an ndarray. Value: `%s`.","BJ":"invalid argument. If the input arrays are ndarrays, the output array must also be an ndarray. Value: `%s`.","BK":"invalid argument. If the first input array is an array-like object, the second input array must also be an array-like object. Value: `%s`.","BL":"invalid argument. If the input arrays are array-like objects, the output array must also be an array-like object. Value: `%s`.","BM":"invalid argument. First argument must be an array-like object containing array-like objects. Index: `%u`. Value: `%s`.","BN":"invalid argument. First argument must be a three-dimensional nested array. Index: `%u`. Value: `%s`.","BO":"invalid argument. First argument must be a four-dimensional nested array. Index: `%u`. Value: `%s`.","BP":"invalid argument. First argument must be a four-dimensional nested array. Indices: (%u, %u). Value: `%s`.","BQ":"invalid argument. First argument must be a four-dimensional nested array. Indices: (%u, %u, %u). Value: `%s`.","BR":"invalid argument. First argument must be a five-dimensional nested array. Index: `%u`. Value: `%s`.","BS":"invalid argument. First argument must be a five-dimensional nested array. Indices: (%u, %u). Value: `%s`.","BT":"invalid argument. First argument must be a five-dimensional nested array. Indices: (%u, %u, %u). Value: `%s`.","BU":"invalid argument. First argument must be a five-dimensional nested array. Indices: (%u, %u, %u, %u). Value: `%s`.","BV":"invalid argument. A merge source must be an object. Value: `%s`.","BW":"invalid option. `%s` option must be either a boolean or a function. Option: `%s`.","BX":"invalid argument. Source argument must be an object. Value: `%s`.","BY":"invalid argument. Target argument must be an object. Value: `%s`.","BZ":"invalid argument. Must provide an array of strings. Value: `%s`.","Ba":"invalid argument. Field names must be distinct. Value: `%s`.","Bb":"invalid argument. Provided field name is reserved. Name: `%s`.","Bc":"invalid arguments. Arguments are incompatible with the number of tuple fields. Number of fields: `%u`. Number of data elements: `%u`.","Bd":"invalid argument. Source is incompatible with the number of tuple fields. Number of fields: `%u`. Source length: `%u`.","Be":"invalid invocation. Number of arguments is incompatible with the number of tuple fields. Number of fields: `%u`. Number of arguments: `%u`.","Bf":"invalid option. `%s` option must be a recognized data type. Option: `%s`.","Bg":"invalid argument. Second argument must be either a string or an array of strings. Value: `%s`.","Bh":"invalid argument. Must provide a valid URI. Value: `%s`.","Bi":"unexpected error. Child process failed with exit code: `%u`.","Bj":"unexpected error. Child process failed due to termination signal: `%s`.","Bk":"invalid argument. Reviver argument must be a function. Value: `%s`.","Bl":"invalid argument. Second argument must be an array-like object containing nonnegative integers. Value: `%s`.","Bm":"invalid argument. Must provide either an array, typed array, or an array-like object. Value: `%s`.","Bn":"invalid argument. Must provide a recognized type. Value: `%s`.","Bo":"invalid argument. Second argument must be an array containing only nonnegative integers. Value: `%s`.","Bp":"invalid invocation. Unexpected number of input arguments. Expected: `%u`. Actual: `%u`.","Bq":"evaluation error. Encountered an error when evaluating snippet. %s","Br":"invalid option. `%s` option must be a positive integer or null. Option: `%s`.","Bs":"insufficient arguments. Expected %u argument(s) and only received %u argument(s).","Bt":"invalid invocation. The configured arity exceeds the number of possible curried function invocations. Expected: %u. Actual: %u.","Bu":"invalid invocation. Number of arguments exceeds the number of possible curried function invocations. Expected: `%u`. Actual: `%u`.","Bv":"invalid invocation. The configured arity exceeds the number of possible curried function invocations. Expected: `%u`. Actual: `%u`.","Bw":"invalid argument. Must provide array arguments. Value: `%s`.","Bx":"invalid argument. Last argument must be either an array or an options object. Value: `%s`.","By":"invalid argument. Repository slug must be a string. Value: `%s`.","Bz":"invalid argument. Issue title must be a string. Value: `%s`.","C0":"invalid option. `%s` must be one of the following: \"%s\". Option: `%s`.","C1":"invalid argument. Repository name must be a string. Value: `%s`.","C2":"invalid option. `%s` option must be a valid URI. Option: `%s`.","C3":"invalid option. `%s` option must be a 20-character string. Option: `%s`.","C4":"invalid option. `%s` option must be a 40-character string. Option: `%s`.","C5":"invalid argument. Token id must be a nonnegative integer. Value: `%s`.","C6":"invalid argument. Workflow identifier must be a string. Value: `%s`.","C7":"invalid option. `%s` option must be an object of input key-value pairs. Option: `%s`.","C8":"invalid option. `%s` option must be a positive integer or \"last\". Option: `%s`.","C9":"invalid option. `%s` organization name option must be a string. Option: `%s`.","CA":"invalid option. Unknown method. Option: `%s`.","CB":"invalid option. Unrecognized `%s` option. Must be one of the following: \"%s\". Option: `%s`.","CC":"invalid argument. Repository slug must consist of an owner and a repository (e.g., \"stdlib-js/utils\"). Value: `%s`.","CD":"invalid argument. Topics argument must be an array of strings. Value: `%s`.","CE":"invalid option. `%s` option must be one of the following: \"%s\" or \"%s\". Option: `%s`.","CF":"invalid argument. Must provide a supported license SPDX identifier. Value: `%s`.","CG":"invalid argument. Must provide a supported file type. Value: `%s`.","CH":"invalid argument. First argument must be either a string or Buffer. Value: `%s`.","CI":"invalid argument. Second argument must be either a string or Buffer. Value: `%s`.","CJ":"invalid argument. A header object must map each filename extension to a license header string. `%s: %s`. Value: `%s`.","CK":"invalid argument. Second argument must be either a string or an object whose keys are filename extensions and whose values are header strings. Value: `%s`.","CL":"invalid argument. Second argument must be either a string, Buffer, or regular expression. Value: `%s`.","CM":"invalid argument. A header object must map each filename extension to a license header string or regular expression. `%s: %s`. Value: `%s`.","CN":"invalid argument. Second argument must be either a string, a regular expression, or an object whose keys are filename extensions and whose values are header strings or regular expressions. Value: `%s`.","CO":"invalid argument. Third argument must be either a string or Buffer. Value: `%s`.","CP":"invalid argument. Third argument must be either a string or an object whose keys are filename extensions and whose values are header strings. Value: `%s`.","CQ":"invalid argument. Database already contains an entry for the provided URI: `%s`.","CR":"invalid argument. Database already contains an entry for the provided id: `%s`.","CS":"invalid argument. First argument must be a URI. Value: `%s`.","CT":"invalid argument. Second argument must be either a string or regular expression. Value: `%s`.","CU":"invalid option. A `%s` option object must map each filename extension to a license header string or regular expression. `%s: %s`. Value: `%s`.","CV":"invalid option. `%s` option must be either a string, a regular expression, or an object whose keys are filename extensions and whose values are header strings or regular expressions. Option: `%s`.","CW":"invalid option. `%s` option must end with \"package.json\". Option: `%s`.","CX":"invalid argument. Last argument must be a callback function. Value: `%s`.","CY":"invalid option. `%s` option must be an array of package names. Option: `%s`.","CZ":"invalid argument. Version argument must be a string. Value: `%s`.","Ca":"invalid argument. Must provide either a string or a Buffer. Value: `%s`.","Cb":"invalid argument. Must provide either a string or Buffer. Value: `%s`.","Cc":"invalid argument. First argument must be either a string or array of strings. Value: `%s`.","Cd":"invalid option. `%s` option must be an object. Option: `%s`.","Ce":"unexpected error. File does not exist. Unable to resolve file: %s.","Cf":"invalid argument. Must provide either a string or an array of strings. Value: `%s`.","Cg":"invalid argument. Must provide either a string or an array of strings. Value: `%s`. Index: `%u`.","Ch":"unexpected error. Failed to sort packages. Detected the following dependency chain containing a cycle: `%s`.","Ci":"invalid node. Equation comments must have a valid label. Node: `%s`.","Cj":"invalid node. Equation comments must have valid alternate text. Node: `%s`.","Ck":"invalid node. Equation comments must have valid raw equation text. Node: `%s`.","Cl":"invalid node. Invalid equation comment. Ensure that the Markdown file includes both starting and ending equation comments. Node: `%s`.","Cm":"invalid node. Equation element must have a valid label. Node: `%s`.","Cn":"unexpected error. Code block configuration settings should be provided as comma-separated `key:value` pairs (e.g., `foo:true, bar:\"string\", baz:[\"error\",2]`). Value: `%s`.","Co":"unexpected error. Code block configuration values should be parseable as JSON. Value: `%s`.","Cp":"unexpected error. Encountered an error when executing code block. File: `%s`. Message: `%s`.","Cq":"unexpected error. Expected code block to throw an exception. File: `%s`.","Cr":"invalid node. Ensure that the Markdown file includes both a starting `
` and closing `
\\n\\n`. Node: `%s`.","Cs":"invalid node. Equation comments must have valid equation text. Node: `%s`.","Ct":"invalid node. Equation comments must have valid labels. Node: `%s`.","Cu":"invalid option. `%s` option must begin with \"@stdlib/\". Option: `%s`.","Cv":"invalid argument. First argument must be a list of file paths. Value: `%s`.","Cw":"invalid arguments. Subpopulation size must be less than or equal to the population size.","Cx":"invalid arguments. Number of draws must be less than or equal to the population size.","Cy":"invalid arguments. Fourth argument is not compatible with the number of input and output ndarrays.","Cz":"invalid arguments. Input buffer is incompatible with the specified meta data. Ensure that the offset is valid with regard to the strides array and that the buffer has enough elements to satisfy the desired array shape.","D0":"invalid arguments. Length of the first argument is incompatible with the second and third arguments.","D1":"invalid argument. Provided collections must have the same length.","D2":"invalid argument. First argument must be an array-like object containing nonnegative integers.","D3":"invalid arguments. Input arrays must have the same length.","D4":"invalid argument. Must provide valid indices (i.e., must be a nonnegative integer less than or equal to the tuple length).","D5":"not implemented. Please post an issue on the @stdlib/stdlib issue tracker if you would like this to be implemented. https://github.com/stdlib-js/stdlib/issues/new/choose","D6":"invalid operation. Parser is unable to parse new chunks, as the parser has been closed. To parse new chunks, create a new parser instance.","D7":"invalid operation. Parser is in an unrecoverable error state. To parse new chunks, create a new parser instance.","D8":"invalid argument. First argument must be a one-dimensional ndarray containing double-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float64Array). Value: `%s`.","D9":"invalid argument. Second argument must be a one-dimensional ndarray containing double-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float64Array). Value: `%s`.","DA":"invalid argument. First argument must be a one-dimensional ndarray containing single-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float32Array). Value: `%s`.","DB":"invalid argument. Second argument must be a one-dimensional ndarray containing single-precision floating-point numbers (i.e., an ndarray whose underlying data buffer is a Float32Array). Value: `%s`.","DC":"invalid assignment. `%s` size is less than the number of data elements. Number of elements: `%u`. Value: `%u`.","DD":"invalid assignment. `%s` must be a string or an array of strings. Value: `%s`.","DE":"invalid assignment. `%s` must be a number or an array of numbers. Value: `%s`.","DF":"invalid assignment. `%s` must be a nonnegative integer or an array of nonnegative integers. Value: `%s`.","DG":"invalid assignment. `%s` must be a finite number, Date, or null. Value: `%s`.","DH":"invalid assignment. `%s` must be a boolean or an array of booleans. Value: `%s`.","DI":"invalid assignment. `%s` must be a number or null. Value: `%s`.","DJ":"invalid assignment. `%s` must be an array of strings or an empty array. Value: `%s`.","DK":"invalid state. x and y are different lengths. x length: `%u`. y length: `%u`.","DL":"invalid state. Each `x[i]:y[i]` pair must be the same length. x[%u].length: `%u`, y[%u].length: `%u`.","DM":"invalid assignment. `%s` must be a number on the interval: [0, 1]. Value: `%f`.","DN":"invalid assignment. `%s` must be null or an array. Value: `%s`.","DO":"invalid arguments. Must provide equal length array-like objects. x length: `%u`. y length: `%u`.","DP":"invalid argument. The number of comparisons must be greater or equal to the number of p-values to be adjusted. Value: `%u`.","DQ":"invalid argument. Second argument must be one of the following: \"%s\". Value: `%s`.","DR":"invalid option. `%s` option must be a number on the interval: [0, 1]. Option: `%s`.","DS":"invalid argument. First argument must contain nonnegative integers. Indices: (%s). Value: `%s`.","DT":"invalid argument. First argument must be an array of arrays or a two-dimensional ndarray-like object. Number of input array dimensions: %u.","DU":"invalid argument. First argument must be an array of arrays or a two-dimensional ndarray-like object. Value: `%s`.","DV":"invalid arguments. Minimum support must be less than maximum support. Value: `(%f, %f)`.","DW":"invalid arguments. Minimum support must be less than or equal to maximum support. Value: `(%d, %d)`.","DX":"invalid argument. Mean parameter must be a positive number. Value: `%s`.","DY":"invalid argument. Mean parameter must be a probability. Value: `%s`.","DZ":"invalid option. `%s` option must be on the interval: [0, 1]. Option: `%f`.","Da":"invalid argument. Must provide a nonnegative number on the interval: [0, 1]. Value: `%f`.","Db":"invalid argument. First argument must either specify the order of the covariance matrix or be a square two-dimensional ndarray for storing the covariance matrix. Value: `%s`.","Dc":"invalid argument. Second argument must be a one-dimensional ndarray. Value: `%s`.","Dd":"invalid argument. Must provide a one-dimensional ndarray. Value: `%s`.","De":"invalid argument. First argument must either specify the order of the correlation distance matrix or be a square two-dimensional ndarray for storing the correlation distance matrix. Value: `%s`.","Df":"invalid argument. First argument must either specify the order of the correlation matrix or be a square two-dimensional ndarray for storing the correlation matrix. Value: `%s`.","Dg":"invalid argument. Input array must be an array-like object. Value: `%s`.","Dh":"invalid argument. Output array must be an array-like object. Value: `%s`.","Di":"invalid argument. Mask array offset must be a nonnegative integer. Value: `%s`.","Dj":"invalid argument. Must provide recognized data types. Unable to resolve a data type string. Value: `%s`.","Dk":"invalid option. `%s` option must be one of the following: ['%s']. Option: `%s`.","Dl":"invalid argument. Database already contains an entry for the provided URI. Value: `%s`.","Dm":"invalid argument. Database already contains an entry for the provided id. Value: `%s`.","Dn":"invalid argument. First argument must be an array of objects. Value: `%s`.","Do":"unexpected error. File does not exist. Unable to resolve file: `%s`.","Dp":"invalid argument. First argument must be either a string or an array of strings. Value: `%s`.","Dq":"invalid argument. First argument must be either a string or an array of strings. Value: `%s`. Index: `%u`.","Dr":"invalid argument. Must provide either an options object or a function. Value: `%s`.","Ds":"invalid option. `%s` option must be a nonnegative integer or an array of nonnegative integers. Option: `%s`.","Dt":"invalid argument. Fourth argument must contain a single element equal to 0. Value: `%d`.","Du":"invalid argument. Indices must be integer valued. Argument: `%i`. Value: `%s`.","Dv":"invalid argument. Must provide an ndarray. Value: `%s`.","Dw":"invalid argument. Second argument must be a supported data type policy. Value: `%s`.","Dx":"invalid argument. Must provide either an integer or a Date object. Value: `%s`.","Dy":"invalid argument. Must provide a valid duration string. Value: `%s`.","Dz":"invalid argument. Day number must be on the interval: [1, %u]. Value: `%d`.","E0":"invalid argument. First argument must be a string or integer. Value: `%s`.","E1":"invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.","E2":"invalid argument. Third argument must be either an integer (starting index) or a function. Value: `%s`.","E3":"invalid argument. Fourth argument must be either an integer (ending index) or a function. Value: `%s`.","E4":"invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.","E5":"invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.","E6":"invalid argument. First argument must be astring. Value: `%s`.","E7":"invalid argument. Second argument must be either an integer (starting index) or a function. Value: `%s`.","E8":"invalid argument. Third argument must be either an integer (ending index) or a function. Value: `%s`.","E9":"invalid argument. ArrayBuffer byte length must be a multiple of %u. Byte length: `%u`.","EA":"invalid argument. Byte offset must be a multiple of %u. Value: `%u`.","EB":"invalid argument. First argument must have a length which is a multiple of %u. Length: `%u`.","EC":"invalid argument. Second argument must be a supported data type. Value: `%s`.","ED":"invalid argument. First argument must be one of the following data types: \"%s\". Value: `%s`.","EE":"invalid argument. Second argument must be either an integer (starting view index) or a function. Value: `%s`.","EF":"invalid argument. Third argument must be either an integer (ending view index) or a function. Value: `%s`.","EG":"invalid option. `size` option must be less than or equal to the length of `x` when `replace` is `false`. Option: `%s`.","EH":"invalid option. `size` option must be less than or equal to the population size when `replace` is `false`. Option: `%s`.","EI":"invalid argument. Second argument must be either a scalar or an ndarray-like object. Value: `%s`.","EJ":"invalid argument. Minimum support must be less than maximum support. Value: `[%f, %f]`.","EK":"invalid argument. Minimum support must be less than or equal to maximum support. Value: `[%d, %d]`.","EL":"invalid %s. `state` array has an incompatible schema version. Expected: `%s`. Actual: `%s.`","EM":"invalid %s. `state` array has an incompatible number of sections. Expected: `%s`. Actual: `%s`.","EN":"invalid argument. Number of draws must be less than or equal to the population size. Value: `%u`.","EO":"invalid argument. Subpopulation size must be less than or equal to the population size. Value: `%u`.","EP":"invalid argument. Must provide a regular expression. Value: `%s`.","EQ":"invalid argument. Second argument must be an object containing property descriptors. Value: `%s`.","ER":"invalid argument. Must provide an object (except null). Value: `%s`.","ES":"invalid argument. First argument must be an object (except null). Value: `%s`.","ET":"unexpected error. Encountered an invalid record. Field %d on line %d contains a closing quote which is not immediately followed by a delimiter or newline.","EU":"unexpected error. Encountered an invalid record. Field %d on line %d contains an opening quote which does not immediately follow a delimiter or newline.","EV":"unexpected error. Encountered an invalid record. Field %d on line %d contains an escape sequence which is not immediately followed by a special character sequence.","EW":"unexpected error. Encountered an invalid record. Field %d on line %d contains an escape sequence within a quoted field which is not immediately followed by a quote sequence.","EX":"invalid argument. First argument must be a function having at least one parameter. Value: `%s`.","EY":"invalid argument. All arguments must be objects. Index: `%u`. Value: `%s`.","EZ":"invalid argument. First argument must be a non-null object. Value: `%s`.","Ea":"invalid argument. First argument must be an ndarray whose last dimension is of size %u. Actual size: `%u`.","Eb":"invalid argument. Attempting to scale a weight vector by a nonpositive value. This is likely due to too large a value of eta * lambda. Value: `%f`.","Ec":"invalid argument. Output argument must be a one-dimensional ndarray. Value: `%s`.","Ed":"invalid argument. Must provide a two-dimensional ndarray. Value: `%s`.","Ee":"invalid argument. Number of matrix columns must match centroid dimensions. Expected: `%u`. Actual: `%u`.","Ef":"invalid argument. First argument must be an integer, null, or undefined. Value: `%s`.","Eg":"invalid argument. Second argument must be an integer, null, or undefined. Value: `%s`.","Eh":"invalid argument. Third argument must be an integer, null, or undefined. Value: `%s`.","Ei":"invalid argument. Third argument cannot be zero. Value: `%s`.","Ej":"invalid argument. First argument must be a valid subsequence string. Value: `%s`.","Ek":"invalid argument. A subsequence string must have a non-zero increment. Value: `%s`.","El":"invalid argument. The subsequence string resolves to a slice which exceeds index bounds. Value: `%s`.","Em":"invalid argument. Provided arguments must be either a Slice, integer, null, or undefined. Argument: `%d`. Value: `%s`.","En":"invalid operation. Unsupported slice operation. Value: `%s`.","Eo":"invalid operation. Number of array dimensions does not match the number of slice dimensions. Array shape: (%s). Slice dimensions: %u.","Ep":"invalid operation. Slice exceeds array bounds. Array shape: (%s).","Eq":"invalid operation. A subsequence increment must be a non-zero integer. Value: `%s`.","Er":"invalid operation. A subsequence may only include a single ellipsis. Value: `%s`.","Es":"invalid argument. Cannot write to a read-only array.","Et":"invalid argument. Number of slice dimensions does not match the number of array dimensions. Array shape: (%s). Slice dimensions: %u.","Eu":"invalid argument. Slice arguments must be either a Slice, integer, null, or undefined. Value: `%s`.","Ev":"invalid operation. Number of slice dimensions does not match the number of array dimensions. Array shape: (%s). Slice dimensions: %u.","Ew":"invalid operation. Assigned value cannot be safely cast to the target array data type. Data types: [%s, %s].","Ex":"invalid operation. Unsupported target array data type. Data type: `%s`.","Ey":"invalid argument. Index must be on the interval: [0, %d]. Value: `%d`.","Ez":"invalid argument. Slice exceeds array bounds. Array shape: (%s).","F0":"invalid argument. Input array values cannot be safely cast to the output array data type. Data types: [%s, %s].","F1":"invalid argument. Second argument must be an ndarray. Value: `%s`.","F2":"invalid argument. First argument must be an ndarray having at least two dimensions.","F3":"invalid argument. Second argument must be an array of nonnegative integers. Value: `%s`.","F4":"invalid option. Cannot write to read-only array.","F5":"invalid argument. First argument must be an array of nonnegative integers. Value: `%s`.","F6":"invalid argument. Must provide an ndarray having a supported data type. Value: `%s`.","F7":"invalid argument. First argument must be an ndarray having one or more dimensions. Number of dimensions: %d.","F8":"invalid argument. Dimension index exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.","F9":"invalid argument. Third argument must be either a Slice, integer, null, or undefined. Value: `%s`.","FA":"invalid argument. First argument must be an ndarray having at least three dimensions.","FB":"invalid argument. Index must resolve to a value on the interval: [0, %d]. Value: `%d`.","FC":"invalid argument. First argument must be a recognized index mode. Value: `%s`.","FD":"invalid argument. Third argument exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.","FE":"invalid argument. Number of indices does not match the number of array dimensions. Array shape: (%s). Number of indices: %u.","FF":"invalid argument. Each index argument must be either an integer, null, or undefined. Value: `%s`.","FG":"invalid argument. First argument must be a complex number. Value: `%s`.","FH":"invalid arguments. Input arrays must be broadcast compatible.","FI":"invalid argument. The first and second arguments must have the same length.","FJ":"invalid argument. First argument must be either an ndarray or an array of ndarrays. Value: `%s`.","FK":"invalid argument. An ndarray argument must be an ndarray. Value: `%s`.","FL":"invalid argument. Second argument must be a valid property name. Value: `%s`.","FM":"invalid argument. First argument must have a `%s` method.","FN":"invalid argument. Second argument must an array of strings. Value: `%s`.","FO":"invalid argument. Third argument must be a supported data type. Value: `%s`.","FP":"invalid argument. Index argument is out-of-bounds. Value: `%s`.","FQ":"invalid argument. Second argument must be a complex number. Value: `%s`.","FR":"invalid argument. Index arguments must be integers. Value: `%s`.","FS":"invalid argument. Slice exceeds array bounds. Array length: %d.","FT":"invalid argument. Input array and the output array slice are broadcast incompatible. Array length: %u. Desired length: %u.","FU":"invalid operation. Slice exceeds array bounds.","FV":"invalid argument. First argument must be a valid index array.","FW":"invalid operation. This array index instance has already been freed and can no longer be used.","FX":"invalid argument. First argument must be a complex-valued floating-point array. Value: `%s`.","FY":"invalid operation. Index exceeds array bounds.","FZ":"invalid operation. Unrecognized array index type. Value: `%s`.","Fa":"invalid operation. Unable to resolve array index. Value: `%s`.","Fb":"invalid option. `%s` option is missing a `%s` method. Option: `%s`.","Fc":"invalid operation. If not provided an initial value, an array must contain at least one element.","Fd":"invalid arguments. Must provide equal length array-like objects.","Fe":"Index out of bounds","Ff":"invalid option. `%s` option must be less than or equal to 64. Option: `%u`.","Fg":"invalid argument. Unable to parse input string as a complex number. Value: `%s`.","Fh":"invalid operation. Cannot access settings for a REPL which has already closed.","Fi":"invalid argument. First argument must be a recognized setting. Value: `%s`.","Fj":"invalid invocation. `this` is not a boolean array.","Fk":"invalid argument. Unable to parse commits for package: `%s`.","Fl":"invalid argument. Unrecognized release type: `%s`.","Fm":"invalid argument. First argument must be a supported BLAS memory layout. Value: `%s`.","Fn":"invalid argument. First argument must be an existing theme name. Value: `%s`.","Fo":"invalid argument. First argument must not be the default theme name. Value: `%s`.","Fp":"invalid argument. Second argument must be an object. Value: `%s`.","Fq":"invalid arguments. Number of values does not equal the number of falsy values in the mask array.","Fr":"invalid arguments. Insufficient values to satisfy mask array.","Fs":"invalid arguments. Input arguments are not broadcast compatible.","Ft":"invalid arguments. Number of values does not equal the number of truthy values in the mask array.","Fu":"invalid argument. Third argument cannot be safely cast to the input array data type. Data types: [%s, %s].","Fv":"invalid argument. First argument must be a boolean. Value: `%s`.","Fw":"invalid argument. The third argument must be broadcast compatible with the second argument. Array shape: (%d). Desired shape: (%d).","Fx":"invalid argument. First argument must be a valid order. Value: `%s`.","Fy":"invalid argument. Second argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.","Fz":"invalid argument. Third argument must be a nonnegative integer. Value: `%d`.","G0":"invalid argument. Eighth argument must be non-zero. Value: `%d`.","G1":"invalid argument. Twelfth argument must be non-zero. Value: `%d`.","G2":"invalid argument. Seventh argument must be non-zero. Value: `%d`.","G3":"invalid argument. Tenth argument must be non-zero. Value: `%d`.","G4":"invalid argument. Fourth argument must be greater than or equal to max(1,%d). Value: `%d`.","G5":"invalid argument. First argument must be a string or an array of strings. Value: `%s`.","G6":"invalid option. `%s` option must be a valid mode. Option: `%s`.","G7":"invalid argument. First argument must be a nonnegative integer. Value: `%d`.","G8":"invalid argument. Sixth argument must be greater than or equal to %d. Value: `%d`.","G9":"invalid argument. Eighth argument must be greater than or equal to %d. Value: `%d`.","GA":"invalid argument. Second argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.","GB":"invalid argument. Sixth argument must be non-zero. Value: `%d`.","GC":"invalid argument. Tenth argument must be greater than or equal to max(1,%d). Value: `%d`.","GD":"invalid argument. First argument must specify whether the reference the lower or upper triangular matrix. Value: `%s`.","GE":"invalid argument. Second argument must be a nonnegative integer. Value: `%d`.","GF":"invalid argument. Fifth argument must be non-zero. Value: `%d`.","GG":"invalid argument. Second argument must be a valid transpose operation. Value: `%s`.","GH":"invalid argument. Fourth argument must be a nonnegative integer. Value: `%d`.","GI":"invalid argument. Ninth argument must be non-zero.","GJ":"invalid argument. Twelfth argument must be non-zero.","GK":"invalid argument. Eleventh argument must be non-zero.","GL":"invalid argument. Fifteenth argument must be non-zero.","GM":"invalid argument. Eighth argument must be greater than or equal to max(1,%d). Value: `%d`.","GN":"invalid argument. First argument must specify whether to reference the lower or upper triangular matrix. Value: `%s`.","GO":"invalid argument. Third argument must be a valid transpose operation. Value: `%s`.","GP":"invalid argument. Fourth argument must be a valid diagonal type. Value: `%s`.","GQ":"invalid argument. Fifth argument must be a nonnegative integer. Value: `%d`.","GR":"invalid argument. Seventh argument must be greater than or equal to max(1,%d). Value: `%d`.","GS":"invalid argument. Ninth argument must be non-zero. Value: `%d`.","GT":"invalid argument. First argument must specify whether the lower or upper triangular matrix is supplied. Value: `%s`.","GU":"invalid argument. Third argument must be a valid diagonal type. Value: `%s`.","GV":"invalid argument. First argument must be a valid transpose operation. Value: `%s`.","GW":"invalid argument. Tenth argument must be non-zero.","GX":"invalid argument. Fourteenth argument must be non-zero.","GY":"invalid arguments. Array must have the same shape.","GZ":"invalid argument. Second argument must be an array of integers. Value: `%s`.","Ga":"invalid argument. First argument must be an ndarray having at least %d dimensions.","Gb":"invalid argument. Dimension indices must be sorted in ascending order. Value: `%s`.","Gc":"invalid argument. Dimension indices must be unique. Value: `%s`.","Gd":"invalid argument. First argument must be an array of ndarrays. Value: `%s`.","Ge":"invalid argument. First argument must be an array of ndarrays which are broadcast-compatible. Value: `%s`.","Gf":"invalid argument. First argument must be an array of ndarrays having at least %d dimensions after broadcasting.","Gg":"invalid argument. Index argument is out-of-bounds. Value: `%d`.","Gh":"invalid argument. Sixth argument must be a nonnegative integer. Value: `%d`.","Gi":"invalid argument. Ninth argument must be greater than or equal to max(1,%d). Value: `%d`.","Gj":"invalid argument. Eleventh argument must be greater than or equal to max(1,%d). Value: `%d`.","Gk":"invalid argument. Fourteenth argument must be greater than or equal to max(1,%d). Value: `%d`.","Gl":"invalid argument. First argument must be an ndarray containing double-precision floating-point numbers. Value: `%s`.","Gm":"invalid argument. Second argument must be an ndarray containing double-precision floating-point numbers. Value: `%s`.","Gn":"invalid argument. First argument must have at least one dimension.","Go":"invalid argument. Second argument must have at least one dimension.","Gp":"invalid argument. Third argument must be a negative integer. Value: `%s`.","Gq":"invalid argument. Third argument must be a value on the interval: [%d,%d]. Value: `%d`.","Gr":"invalid argument. The size of the contracted dimension must be the same for both input ndarrays. Dim(%s,%d) = %d. Dim(%s,%d) = %d.","Gs":"invalid arguments. Input ndarrays must be broadcast compatible. Shape(%s) = (%s). Shape(%s) = (%s).","Gt":"invalid argument. Cannot write to read-only array.","Gu":"invalid arguments. The first and second arguments must have the same shape.","Gv":"unexpected error. Environment does not support WebAssembly.","Gw":"invalid invocation. Unable to perform write operation, as the WebAssembly module is not bound to an underlying WebAssembly memory instance.","Gx":"invalid argument. Second argument is incompatible with the specified byte offset and available memory. Resize the underlying memory instance in order to accommodate the list of provided values.","Gy":"invalid invocation. Unable to perform read operation, as the WebAssembly module is not bound to an underlying WebAssembly memory instance.","Gz":"invalid argument. Second argument is incompatible with the specified byte offset and available memory. Not enough values to fill the provided output array.","H0":"invalid argument. Must provide a WebAssembly memory instance. Value: `%s`.","H1":"invalid argument. First argument must be an ndarray containing single-precision floating-point numbers. Value: `%s`.","H2":"invalid argument. Second argument must be an ndarray containing single-precision floating-point numbers. Value: `%s`.","H3":"invalid invocation. `this` is not a Float64ArrayFE.","H4":"invalid argument. First argument must be a supported byte order. Value: `%s`.","H5":"invalid argument. Second argument must a data type. Value: `%s`.","H6":"invalid argument. First argument must be an ndarray-like object having a supported data type. Value: `%s`.","H7":"invalid argument. Second argument must be an ndarray-like object having a supported data type. Value: `%s`.","H8":"invalid invocation. `this` is not %s %s.","H9":"invalid argument. First argument must be a supported data type. Value: `%s`.","HA":"invalid argument. Must provide an ArrayBuffer. Value: `%s`.","HB":"invalid argument. Second argument must be a data type. Value: `%s`.","HC":"invalid option. Each key object must have a `name` property. Value: `%s`.","HD":"invalid option. Each key object's `name` property must be a string. Value: `%s`.","HE":"invalid option. Each key object's `%s` property must be a boolean. Value: `%s`.","HF":"invalid option. Each action must be an array of objects. Value: `%s`.","HG":"invalid argument. First argument must be a valid index ndarray.","HH":"invalid operation. This ndarray index instance has already been freed and can no longer be used.","HI":"invalid operation. Unrecognized ndarray index type. Value: `%s`.","HJ":"invalid operation. Index exceeds ndarray bounds.","HK":"invalid operation. Number of indices does not match the number of array dimensions. Array shape: (%s). Index dimensions: %u.","HL":"invalid operation. Unable to resolve ndarray index. Value: `%s`.","HM":"invalid argument. First argument is not compatible with the specified index \"kind\". Type: %s. Kind: %s.","HN":"invalid argument. First argument must be greater than or equal to the number of dimensions in the input ndarray. Number of dimensions: %d. Value: `%d`.","HO":"invalid argument. Specified dimension index is out-of-bounds. Must be on the interval: [-%u, %u]. Value: `[%s]`.","HP":"invalid argument. Must provide unique dimension indices. Value: `[%s]`.","HQ":"invalid argument. Must provide the same number of dimension indices as the number of dimensions in the input ndarray. Number of dimensions: %d. Value: `[%s]`.","HR":"invalid argument. Must provide dimension indices which resolve to nonnegative indices arranged in ascending order. Value: `[%s]`.","HS":"invalid argument. Specified axis is out-of-bounds. Must be on the interval: [-%u, %u]. Value: `%d`.","HT":"invalid argument. Each key in the keybindings argument must correspond to a single action. Value: `%s`","HU":"invalid argument. First argument must be a valid action name. Value: `%s`.","HV":"invalid argument. Each key in the keys argument must correspond to a single action. Value: `%s`","HW":"invalid argument. Second argument must be an array of data types. Value: `%s`.","HX":"invalid argument. Third argument must be an array of data types. Value: `%s`.","HY":"invalid argument. Fourth argument must be a supported output data type policy. Value: `%s`.","HZ":"invalid argument. First argument must have one of the following data types: \"%s\". Data type: `%s`.","Ha":"invalid arguments. Arrays must have the same number of dimensions (i.e., same rank). ndims(x) == %d. ndims(y) == %d.","Hb":"invalid argument. Third argument contains an out-of-bounds dimension index. Value: [%s].","Hc":"invalid argument. Third argument must contain a list of unique dimension indices. Value: [%s].","Hd":"invalid argument. Number of specified dimensions cannot exceed the number of dimensions in the input array. ndims(x) == %d. Value: [%s].","He":"invalid argument. Arrays which are not being reduced must have the same number of non-reduced dimensions. ndims(x) == %d. Number of reduced dimensions: %d. ndims(arrays[%d]) == %d.","Hf":"invalid argument. Non-reduced dimensions must be consistent across all provided arrays. Input array shape: [%s]. Non-reduced dimension indices: [%s]. Non-reduced dimensions: [%s]. Array shape: [%s] (index: %d).","Hg":"invalid argument. The second argument cannot be safely cast to the input array data type. Data type: %s. Value: `%s`.","Hh":"invalid argument. Second argument must be broadcast-compatible with the non-reduced dimensions of the input array.","Hi":"invalid argument. Second argument cannot be safely cast to the input array data type. Value: `%s`.","Hj":"invalid argument. Third argument must be an ndarray-like object. Value: `%s`.","Hk":"invalid option. `%s` option must be an array of integers. Option: `%s`.","Hl":"invalid option. `%s` option contains an out-of-bounds dimension index. Option: [%s].","Hm":"invalid option. `%s` option specifies more dimensions than exists in the input array. Number of dimensions: %d. Option: [%s].","Hn":"invalid argument. Number of specified dimensions cannot exceed the number of dimensions in the input array. Number of dimensions: %d. Value: [%s].","Ho":"invalid argument. Arrays which are not being reduced must have the same number of non-reduced dimensions. Input array shape: [%s]. Number of non-reduced dimensions: %d. Array shape: [%s] (index: %d).","Hp":"invalid argument. Second argument must be an ndarray-like object. Value: `%s`.","Hq":"invalid argument. Second argument must have one of the following data types: \"%s\". Data type: `%s`.","Hr":"invalid argument. Fourteenth argument must be non-zero. Value: `%d`.","Hs":"invalid argument. Seventeenth argument must be non-zero. Value: `%d`.","Ht":"invalid argument. Eighteenth argument must be non-zero. Value: `%d`.","Hu":"invalid option. `%s` option contains duplicate indices. Option: [%s].","Hv":"invalid argument. First argument must be an object having a \"default\" property and an associated method.","Hw":"invalid argument. Second argument must contain arrays of data types. Value: `%s`.","Hx":"invalid argument. Argument %d must have one of the following data types: \"%s\". Data type: `%s`.","Hy":"invalid argument. Argument %d must be an ndarray-like object. Value: `%s`.","Hz":"invalid arguments. Input and output arrays must have the same shape.","I0":"invalid argument. First argument specifies an unexpected number of types. A pair of input and output ndarray data types must be specified for each provided strided function.","I1":"invalid argument. First argument specifies an unexpected number of types. An input ndarray data type must be specified for each provided strided function.","I2":"invalid argument. Array arguments after the first two arrays must have the same number of loop dimensions. Input array shape: [%s]. Number of loop dimensions: %d. Array shape: [%s] (index: %d).","I3":"invalid argument. Loop dimensions must be consistent across all provided arrays. Input array shape: [%s]. Loop dimension indices: [%s]. Loop dimensions: [%s]. Array shape: [%s] (index: %d).","I4":"invalid argument. First argument must be an object having a \"types\" property whose associated value is an array-like object.","I5":"invalid argument. First argument must be an object having a \"fcns\" property whose associated value is an array-like object containing functions.","I6":"invalid argument. Fourth argument must be an object having a supported output data type policy. Value: `%s`.","I7":"invalid argument. Fourth argument must be an object having a supported casting policy. Value: `%s`.","I8":"invalid operation. Unable to promote the input and output data types. Input data type: %s. Output data type: %s.","I9":"invalid argument. Third argument must be a supported casting policy. Value: `%s`.","IA":"invalid option. `%s` option must be an object containing properties having values which are objects. Option: `%s`.","IB":"invalid option. `%s` option must be an object having %s `%s` property which is an array of strings. Option: `%s`.","IC":"invalid option. `%s` option must have %s `%s` property.","ID":"invalid argument. Second argument must be either an ndarray or a numeric scalar value. Value: `%s`.","IE":"invalid argument. Eleventh argument must be non-zero. Value: `%d`.","IF":"invalid option. `%s` option must be a valid memory layout. Option: `%s`.","IG":"invalid arguments. Arrays must have the same number of dimensions (i.e., same rank). ndims(x) == %d. ndims(y) == %d. ndims(z) == %d.","IH":"invalid argument. Unable to resolve an output data type. The output data type policy is \"same\" and yet the input data types are not equal. Data types: [%s].","II":"invalid argument. Unable to apply type promotion rules when resolving a data type to which the input data types can be safely cast. Data types: [%s].","IJ":"invalid argument. %s argument must have one of the following data types: \"%s\". Data type: `%s`.","IK":"invalid option. `%s` option must be a valid index mode. Option: `%s`.","IL":"invalid option. `%s` option must be a memory layout. Option: `%s`.","IM":"invalid argument. ArrayBuffer is incompatible with the specified data type. Value: `%s`.","IN":"invalid argument. Must provide a length, ArrayBuffer, typed array, array-like object, iterable, data type, or options object. Value: `%s`.","IO":"invalid argument. First argument must be a length, ArrayBuffer, typed array, array-like object, or iterable. Value: `%s`.","IP":"invalid argument. Third argument must be a recognized/supported data type. Value: `%s`.","IQ":"invalid argument. Fourth argument must be a recognized/supported data type. Value: `%s`.","IR":"invalid argument. Fifth argument must be greater than or equal to max(1,%d). Value: `%d`.","IS":"invalid argument. Second argument must have an integer data type. Value: `%s`.","IT":"invalid argument. Second argument must be an integer or an ndarray-like object. Value: `%s`.","IU":"invalid argument. Union types may only be initialized by a single member.","IV":"invalid invocation. `this` is not a struct instance.","IW":"invalid operation. struct does not have any fields.","IX":"unexpected error. Unrecognized data type. Value: `%s`.","IY":"invalid assignment. Assigned value cannot be cast to the data type of `%s`. Data types: [%s, %s].","IZ":"invalid argument. Field objects must have the following properties: \"%s\". Value: `%s`.","Ia":"invalid argument. Union types cannot contain nested union types. Value: `%s`.","Ib":"invalid argument. Union types can only contain one field with a default value. Value: `%s`.","Ic":"invalid argument. Union types must contain fields having the same byte length. Value: `%s`.","Id":"invalid argument. `%s` field must be a string. Value: `%s`.","Ie":"invalid argument. `%s` field must be a boolean. Value: `%s`.","If":"invalid argument. `%s` field must be a positive integer. Value: `%s`.","Ig":"invalid assignment. `%s` must be a `struct` instance. Value: `%s`.","Ih":"invalid assignment. Assigned value cannot be cast to the data type of `%s`. Value: `%s`.","Ii":"invalid assignment. `%s` must be a `struct` instance having the same byte length.","Ij":"invalid assignment. `%s` must be an array-like object. Value: `%s`.","Ik":"invalid assignment. `%s` must be an array-like object having length %u.","Il":"invalid argument. Byte length must be a nonnegative integer. Value: `%s`.","Im":"invalid argument. ArrayBuffer has insufficient capacity. Minimum capacity: `%u`.","In":"invalid argument. First argument must be a `struct` instance. Value: `%s`.","Io":"invalid argument. `%s` field must be one of the following: \"%s\". Value: `%s`.","Ip":"invalid argument. First argument must be an array of objects having unique field names. Value: `%s`.","Iq":"invalid argument. `%s` field must be a non-empty string. Value: `%s`.","Ir":"invalid argument. First argument must be an array of objects. Value: `%s`. Index: `%d`.","Is":"invalid argument. Union types must be an array of objects. Value: `%s`. Index: `%d`.","It":"invalid argument. Field name must be one of the following: \"%s\". Value: `%s`.","Iu":"invalid argument. `%s` field must be either a struct type or one of the following: \"%s\". Value: `%s`.","Iv":"invalid assignment. `%s` must be an array-like object containing `struct` instances having the same byte length.","Iw":"invalid argument. First argument must be one of the following: \"%s\". Value: `%s`.","Ix":"invalid argument. First argument must be an ArrayBuffer or a data object. Value: `%s`.","Iy":"invalid argument. First argument must be either a struct constructor or struct schema. Value: `%s`.","Iz":"invalid argument. Each element of a provided input array must be a valid object or a struct instance having the same layout as elements in the desired output array.","J0":"invalid argument. Environment lacks Symbol.iterator support. First argument must be a length, ArrayBuffer, typed array, or array-like object. Value: `%s`.","J1":"invalid argument. First argument must be a length, ArrayBuffer, typed array, array-like object, or an iterable. Value: `%s`.","J2":"invalid argument. Each element of a provided input iterable must be either a valid object or a struct instance having the same layout as elements in the desired output array.","J3":"invalid argument. Second argument must be a multiple of %u. Value: `%u`.","J4":"invalid argument. Second argument exceeds the bounds of the ArrayBuffer. Value: `%s`.","J5":"invalid argument. ArrayBuffer view byte length must be a multiple of %u. View byte length: `%u`.","J6":"invalid invocation. `this` is not a %s.","J7":"invalid argument. Must provide either a valid object or a struct instance. Value: `%s`.","J8":"invalid argument. First argument must be a valid orientation. Value: `%s`.","J9":"invalid argument. Second argument must be a valid orientation. Value: `%s`.","JA":"invalid argument. The first argument must be an ndarray. Value: `%s`.","JB":"invalid argument. Second argument must be either an ndarray or a scalar value. Value: `%s`.","JC":"invalid argument. Third argument must be an ndarray. Value: `%s`.","JD":"invalid argument. Third argument must be either an ndarray or an integer. Value: `%s`.","JE":"invalid operation. Environment lacks support for HTTP/2. Ensure that you are running on a Node.js version which supports HTTP/2 and has been built to include support for the Node.js `crypto` module.","JF":"invalid argument. Input arrays must have the same number of dimensions. First array dimensions: %d. Second array dimensions: %d.","JG":"invalid argument. Input arrays must have the same shape. First array shape: [%s]. Second array shape: [%s].","JH":"invalid argument. Output array must have the same number of non-reduced dimensions as input arrays. Input array shape: [%s]. Number of non-reduced dimensions: %d. Output array shape: [%s].","JI":"invalid argument. Array arguments after the first array must have the same number of loop dimensions. Input array shape: [%s]. Number of loop dimensions: %d. Array shape: [%s] (index: %d).","JJ":"invalid argument. Second argument contains an out-of-bounds index. Array shape: (%s). Value: `[%s]`.","JK":"invalid argument. Thirteenth argument must be non-zero. Value: `%d`.","JL":"invalid argument. Sixth argument must be greater than or equal to max(1,%d). Value: `%d`.","JM":"invalid argument. Fifth argument must be non-zero. Value: `%s`.","JN":"invalid argument. Sixth argument must be non-zero. Value: `%s`.","JO":"invalid arguments. Unable to resolve an ndarray function supporting the provided argument data types.","JP":"invalid argument. First argument specifies an unexpected number of types. Two input ndarray data types must be specified for each provided strided function.","JQ":"invalid argument. First argument specifies an unexpected number of types. An output ndarray data type must be specified for each provided strided function.","JR":"invalid operation. Unable to promote the input and output data types. Input data types: [%s]. Output data type: %s.","JS":"invalid argument. Fourth argument must be a supported casting policy. Value: `%s`.","JT":"invalid argument. Fourth argument must be an ndarray. Value: `%s`.","JU":"invalid option. `%s` option must be a supported data type. Option: `%s`.","JV":"invalid argument. First argument must be either a supported data type string, a struct constructor, or another data type instance. Value: `%s`.","JW":"invalid argument. Second argument must be a valid sort order. Value: `%s`.","JX":"invalid argument. Second argument must be either an ndarray, a numeric scalar value, or a supported string. Value: `%s`.","JY":"invalid argument. Unable to apply type promotion rules when resolving a data type to which the input ndarrays can be safely cast. Data types: [%s].","JZ":"invalid argument. The list of input ndarrays cannot be safely cast to the data of the output ndarray. Input data types: [%s]. Output data type: %s.","Ja":"invalid argument. Second argument is not broadcast compatible with the list of input ndarrays. Array shape: (%s). Desired shape: (%s).","Jb":"invalid argument. Second argument must be a negative integer. Value: `%s`.","Jc":"invalid argument. First argument cannot be safely cast to the output data type. Data types: [%s, %s].","Jd":"invalid option. First argument cannot be safely cast to the specified data type. Input data type: %s. Option: `%s`.","Je":"invalid argument. First argument must be an ndarray having at least one dimension.","Jf":"invalid argument. Second argument must be either a number, complex number, or an ndarray. Value: `%s`.","Jg":"invalid argument. Third argument must have one of the following data types: \"%s\". Data type: `%s`.","Jh":"invalid argument. Third argument must be either a number, complex number, or an ndarray. Value: `%s`.","Ji":"invalid argument. Fourth argument must have one of the following data types: \"%s\". Data type: `%s`.","Jj":"invalid argument. Fourth argument must be either a boolean or an ndarray. Value: `%s`.","Jk":"invalid argument. First argument must be a nonnegative integer or an array of nonnegative integers. Value: `%s`.","Jl":"invalid option. `%s` option must be a supported order. Option: `%s`.","Jm":"invalid argument. Argument %d cannot be safely cast to the desired output data type. Output data type: %s. Argument data type: %s.","Jn":"invalid invocation. Must provide at least two arguments.","Jo":"invalid invocation. Must provide at least one argument.","Jp":"invalid argument. Last argument must be a one-dimensional ndarray. Value: `%s`.","Jq":"invalid argument. Each ndarray argument must have fewer than two dimensions. Argument: %d.","Jr":"invalid argument. First argument must contain at least one element greater than zero (i.e., the total number of observations must be greater than zero).","Js":"invalid argument. First argument must be an ndarray having two or more dimensions.","Jt":"invalid invocation. Must provide at least three arguments.","Ju":"invalid invocation. `this` is not a floating-point number array.","Jv":"invalid argument. The number of elements (means) in the second argument must match correlation matrix dimensions. Expected: `%u`. Actual: `%u`.","Jw":"%s %s failed with exit code: %s.","Jx":"%s %s failed due to termination signal: %s.","Jy":"invalid argument. Second argument must be either an ndarray or an integer. Value: `%s`.","Jz":"invalid argument. Second argument cannot be safely cast to the desired output data type. Output data type: %s. Argument data type: %s.","K0":"invalid option. `%s` option must be a zero-dimensional ndarray.","K1":"invalid argument. Second argument must be either an ndarray-like object, a numeric value, or a supported string. Value: `%s`.","K2":"invalid argument. Second argument must be a zero-dimensional ndarray.","K3":"invalid argument. Must provide an integer on the interval [0, 2^64-1]. Value: `%s`.","K4":"invalid argument. Must provide an integer on the interval [0, 2^53-1]. Value: `%s`.","K5":"invalid argument. Must provide an array. Value: `%s`.","K6":"invalid argument. Must provide an array of length 2. Value: `[%s]`.","K7":"invalid argument. Must provide an array of integer values on the interval [%u, %u]. Value: `[%s]`.","K8":"invalid argument. First argument must be a nonnegative integer on the interval [%u, %u]. Value: `%s`.","K9":"invalid argument. Second argument must be a nonnegative integer on the interval [%u, %u]. Value: `%s`.","KA":"invalid argument. Must provide an integer on the interval [%d, %d]. Value: `%s`.","KB":"invalid argument. Fourth argument must be an ndarray-like object. Value: `%s`.","KC":"invalid option. `%s` option must be an array of nonnegative integers. Option: `%s`.","KD":"invalid argument. First argument must have one of the following data types: \"%s\". Value: `%s`.","KE":"invalid argument. Must provide an ndarray having two or more dimensions. Number of dimensions: `%u`.","KF":"invalid option. `%s` option must be a negative integer. Option: `%s`.","KG":"invalid argument. Third argument must be an array of integers. Value: `%s`.","KH":"invalid argument. Third argument must be an array of nonnegative integers. Value: `%s`.","KI":"invalid argument. Must provide a complex-valued floating-point ndarray. Value: `%s`.","KJ":"invalid argument. Specified dimension index is out-of-bounds. Must be on the interval: [-%u, %u]. Value: `%d`.","KK":"invalid arguments. Arrays must have the same number of dimensions (i.e., same rank). ndims(x) == %d. ndims(y) == %d. ndims(z) == %d. ndims(w) == %d.","KL":"invalid argument. Second argument must have at least as many elements as the number of dimensions of the first argument. Number of input dimensions: `%u`. Number of repetitions: `%u`.","KM":"invalid argument. Must provide exactly two dimension indices. Value: `[%s]`.","KN":"invalid argument. First argument must be an ndarray having two or more dimensions. Number of dimensions: %d.","KO":"invalid argument. The first argument cannot be safely cast to the output array data type. Data type: %s. Value: `%s`.","KP":"invalid argument. Product of the sizes must be equal to the size of the dimension to be unflattened. Dimension: %d. Size: %d. Value: `[%s]`.","KQ":"invalid argument. First argument must contain one or more ndarrays. Value: `%s`.","KR":"invalid argument. First argument must be an array-like object containing one or more ndarrays. Value: `%s`.","KS":"invalid argument. Must provide one- or two-dimensional ndarrays. Number of dimensions: `%u`.","KT":"invalid argument. All ndarrays must have the same number of columns. Expected number of columns: `%u`. Actual number of columns: `%u`.","KU":"invalid argument. Second argument must be a two-dimensional ndarray. Number of dimensions: `%u`.","KV":"invalid option. Dimension index exceeds the number of dimensions. Number of dimensions: %d. Value: `%d`.","KW":"invalid argument. All ndarrays must have the same number of rows. Expected number of rows: `%u`. Actual number of rows: `%u`.","KX":"invalid argument. Second argument must be a string or an array of strings. Value: `%s`.","KY":"invalid invocation. Insufficient arguments. Array shape: (%s). Number of indices: %u.","KZ":"invalid invocation. Too many arguments. Array shape: (%s). Number of indices: %u.","Ka":"invalid argument. Must provide a shape, ArrayBuffer, array-like object, iterable, data type, or options object. Value: `%s`.","Kb":"invalid argument. First argument must be a shape, ArrayBuffer, array-like object, or iterable. Value: `%s`.","Kc":"invalid argument. Third argument must be a valid shape. Value: `%s`.","Kd":"invalid argument. Fifth argument must be a recognized/supported data type. Value: `%s`.","Ke":"invalid argument. Second argument must be a supported distance metric. Value: `%s`.","Kf":"invalid argument. Must provide an integer on the interval [-(2^63), 2^63-1]. Value: `%s`.","Kg":"invalid argument. Must provide an integer on the interval [-(2^53-1), 2^53-1]. Value: `%s`.","Kh":"invalid argument. First argument must be a string encoding an integer on the interval [0, 2^64). Value: `%s`.","Ki":"invalid argument. Second argument must be an integer on the interval [2, 36]. Value: `%s`."} diff --git a/lib/node_modules/@stdlib/error/tools/id2pkg/data/data.csv b/lib/node_modules/@stdlib/error/tools/id2pkg/data/data.csv index bee041acfcee..766db347e4ad 100644 --- a/lib/node_modules/@stdlib/error/tools/id2pkg/data/data.csv +++ b/lib/node_modules/@stdlib/error/tools/id2pkg/data/data.csv @@ -194,8 +194,46 @@ "295",@stdlib/stats-strided-dmeanpw "296",@stdlib/stats/strided/dmeanwd "297",@stdlib/stats-strided-dmeanwd -"298",@stdlib/stats/strided/dmediansorted -"299",@stdlib/stats-strided-dmediansorted +"300",@stdlib/blas/ext/base/cxmy +"301",@stdlib/blas-ext-base-cxmy +"302",@stdlib/blas/ext/base/dfill-equal +"303",@stdlib/blas-ext-base-dfill-equal +"304",@stdlib/blas/ext/base/dfill-nan +"305",@stdlib/blas-ext-base-dfill-nan +"306",@stdlib/blas/ext/base/dfill-not-equal +"307",@stdlib/blas-ext-base-dfill-not-equal +"308",@stdlib/blas/ext/base/dfirst-index-equal +"309",@stdlib/blas-ext-base-dfirst-index-equal +"310",@stdlib/blas/ext/base/ndarray/zxmy +"311",@stdlib/blas-ext-base-ndarray-zxmy +"312",@stdlib/blas/ext/base/sfill-equal +"313",@stdlib/blas-ext-base-sfill-equal +"314",@stdlib/blas/ext/base/sfill-nan +"315",@stdlib/blas-ext-base-sfill-nan +"316",@stdlib/blas/ext/base/sfill-not-equal +"317",@stdlib/blas-ext-base-sfill-not-equal +"318",@stdlib/blas/ext/base/sfirst-index-equal +"319",@stdlib/blas-ext-base-sfirst-index-equal +"320",@stdlib/number/uint64/base/set-high-word +"321",@stdlib/number-uint64-base-set-high-word +"322",@stdlib/number/uint64/base/string2words +"323",@stdlib/number-uint64-base-string2words +"324",@stdlib/stats/base/dists/anglit/cdf +"325",@stdlib/stats-base-dists-anglit-cdf +"326",@stdlib/stats/base/dists/anglit/entropy +"327",@stdlib/stats-base-dists-anglit-entropy +"328",@stdlib/stats/base/dists/anglit/mode +"329",@stdlib/stats-base-dists-anglit-mode +"330",@stdlib/stats/incr/nanmsumprod +"331",@stdlib/stats-incr-nanmsumprod +"332",@stdlib/stats/incr/nanmvmr +"333",@stdlib/stats-incr-nanmvmr +"334",@stdlib/stats/incr/nanpcorr +"335",@stdlib/stats-incr-nanpcorr +"336",@stdlib/stats/incr/nanpcorr2 +"337",@stdlib/stats-incr-nanpcorr2 +"338",@stdlib/stats/incr/nanpcorrdist +"339",@stdlib/stats-incr-nanpcorrdist "1Yi",@stdlib/array/base/accessor-getter "1Yj",@stdlib/array-base-accessor-getter "1Yk",@stdlib/array/base/accessor-setter @@ -1297,6 +1335,8 @@ "06v",@stdlib/assert-is-int16array "06w",@stdlib/assert/is-int32array "06x",@stdlib/assert-is-int32array +"2zW",@stdlib/assert/is-int64 +"2zX",@stdlib/assert-is-int64 "06y",@stdlib/assert/is-int8array "06z",@stdlib/assert-is-int8array "070",@stdlib/assert/is-integer-array @@ -1792,6 +1832,8 @@ "2dJ",@stdlib/blas-base-ndarray-caxpy "2dK",@stdlib/blas/base/ndarray/ccopy "2dL",@stdlib/blas-base-ndarray-ccopy +"2zY",@stdlib/blas/base/ndarray/cgemv +"2zZ",@stdlib/blas-base-ndarray-cgemv "2dM",@stdlib/blas/base/ndarray/cscal "2dN",@stdlib/blas-base-ndarray-cscal "2dO",@stdlib/blas/base/ndarray/csscal @@ -1806,14 +1848,22 @@ "2dX",@stdlib/blas-base-ndarray-dcopy "2Ss",@stdlib/blas/base/ndarray/ddot "2St",@stdlib/blas-base-ndarray-ddot +"2za",@stdlib/blas/base/ndarray/dgemv +"2zb",@stdlib/blas-base-ndarray-dgemv +"2zc",@stdlib/blas/base/ndarray/dger +"2zd",@stdlib/blas-base-ndarray-dger "2dY",@stdlib/blas/base/ndarray/dnrm2 "2dZ",@stdlib/blas-base-ndarray-dnrm2 "2da",@stdlib/blas/base/ndarray/dscal "2db",@stdlib/blas-base-ndarray-dscal "2dc",@stdlib/blas/base/ndarray/dsdot "2dd",@stdlib/blas-base-ndarray-dsdot +"2ze",@stdlib/blas/base/ndarray/dspr +"2zf",@stdlib/blas-base-ndarray-dspr "2de",@stdlib/blas/base/ndarray/dswap "2df",@stdlib/blas-base-ndarray-dswap +"2zg",@stdlib/blas/base/ndarray/dsyr2 +"2zh",@stdlib/blas-base-ndarray-dsyr2 "2dg",@stdlib/blas/base/ndarray/dzasum "2dh",@stdlib/blas-base-ndarray-dzasum "2di",@stdlib/blas/base/ndarray/dznrm2 @@ -1826,12 +1876,20 @@ "2dp",@stdlib/blas-base-ndarray-gcopy "2Su",@stdlib/blas/base/ndarray/gdot "2Sv",@stdlib/blas-base-ndarray-gdot +"2zi",@stdlib/blas/base/ndarray/ggemm +"2zj",@stdlib/blas-base-ndarray-ggemm +"2zk",@stdlib/blas/base/ndarray/ggemv +"2zl",@stdlib/blas-base-ndarray-ggemv +"2zm",@stdlib/blas/base/ndarray/gger +"2zn",@stdlib/blas-base-ndarray-gger "2dq",@stdlib/blas/base/ndarray/gnrm2 "2dr",@stdlib/blas-base-ndarray-gnrm2 "2ds",@stdlib/blas/base/ndarray/gscal "2dt",@stdlib/blas-base-ndarray-gscal "2du",@stdlib/blas/base/ndarray/gswap "2dv",@stdlib/blas-base-ndarray-gswap +"2zo",@stdlib/blas/base/ndarray/gsyr +"2zp",@stdlib/blas-base-ndarray-gsyr "2dw",@stdlib/blas/base/ndarray/idamax "2dx",@stdlib/blas-base-ndarray-idamax "2us",@stdlib/blas/base/ndarray/igamax @@ -1854,10 +1912,16 @@ "2Sx",@stdlib/blas-base-ndarray-sdot "2eA",@stdlib/blas/base/ndarray/sdsdot "2eB",@stdlib/blas-base-ndarray-sdsdot +"2zq",@stdlib/blas/base/ndarray/sgemv +"2zr",@stdlib/blas-base-ndarray-sgemv +"2zs",@stdlib/blas/base/ndarray/sger +"2zt",@stdlib/blas-base-ndarray-sger "2eC",@stdlib/blas/base/ndarray/snrm2 "2eD",@stdlib/blas-base-ndarray-snrm2 "2eE",@stdlib/blas/base/ndarray/sscal "2eF",@stdlib/blas-base-ndarray-sscal +"2zu",@stdlib/blas/base/ndarray/sspr +"2zv",@stdlib/blas-base-ndarray-sspr "2eG",@stdlib/blas/base/ndarray/sswap "2eH",@stdlib/blas-base-ndarray-sswap "2eI",@stdlib/blas/base/ndarray/zaxpy @@ -2034,6 +2098,8 @@ "2ed",@stdlib/blas-ext-base-clast-index-of-row "2ee",@stdlib/blas/ext/base/cone-to "2ef",@stdlib/blas-ext-base-cone-to +"2zw",@stdlib/blas/ext/base/creplicate +"2zx",@stdlib/blas-ext-base-creplicate "2Hs",@stdlib/blas/ext/base/csum "2Ht",@stdlib/blas-ext-base-csum "2Hu",@stdlib/blas/ext/base/csumkbn @@ -2042,6 +2108,8 @@ "2eh",@stdlib/blas-ext-base-cunitspace "2xe",@stdlib/blas/ext/base/cwapx "2xf",@stdlib/blas-ext-base-cwapx +"2zy",@stdlib/blas/ext/base/cwax +"2zz",@stdlib/blas-ext-base-cwax "2ei",@stdlib/blas/ext/base/cwhere "2ej",@stdlib/blas-ext-base-cwhere "2v0",@stdlib/blas/ext/base/cwxsa @@ -2110,6 +2178,8 @@ "2f3",@stdlib/blas-ext-base-dindex-of-column "2vE",@stdlib/blas/ext/base/dindex-of-falsy "2vF",@stdlib/blas-ext-base-dindex-of-falsy +"30A",@stdlib/blas/ext/base/dindex-of-not-equal +"30B",@stdlib/blas-ext-base-dindex-of-not-equal "2f4",@stdlib/blas/ext/base/dindex-of-row "2f5",@stdlib/blas-ext-base-dindex-of-row "2vG",@stdlib/blas/ext/base/dindex-of-truthy @@ -2166,6 +2236,8 @@ "2fD",@stdlib/blas-ext-base-done-to "2vM",@stdlib/blas/ext/base/dones "2vN",@stdlib/blas-ext-base-dones +"30C",@stdlib/blas/ext/base/dreplicate +"30D",@stdlib/blas-ext-base-dreplicate "0D8",@stdlib/blas/ext/base/drev "0D9",@stdlib/blas-ext-base-drev "2YQ",@stdlib/blas/ext/base/drrss @@ -2226,10 +2298,14 @@ "2fP",@stdlib/blas-ext-base-dvander "2vQ",@stdlib/blas/ext/base/dwapx "2vR",@stdlib/blas-ext-base-dwapx +"30E",@stdlib/blas/ext/base/dwax +"30F",@stdlib/blas-ext-base-dwax "2fQ",@stdlib/blas/ext/base/dwhere "2fR",@stdlib/blas-ext-base-dwhere "2vS",@stdlib/blas/ext/base/dwxsa "2vT",@stdlib/blas-ext-base-dwxsa +"30G",@stdlib/blas/ext/base/dxdy +"30H",@stdlib/blas-ext-base-dxdy "2xq",@stdlib/blas/ext/base/dxmy "2xr",@stdlib/blas-ext-base-dxmy "2vU",@stdlib/blas/ext/base/dxpy @@ -2298,18 +2374,38 @@ "2vj",@stdlib/blas-ext-base-gevery "0EC",@stdlib/blas/ext/base/gfill-by "0ED",@stdlib/blas-ext-base-gfill-by +"30I",@stdlib/blas/ext/base/gfill-equal +"30J",@stdlib/blas-ext-base-gfill-equal +"30K",@stdlib/blas/ext/base/gfill-less-than +"30L",@stdlib/blas-ext-base-gfill-less-than +"30M",@stdlib/blas/ext/base/gfill-nan +"30N",@stdlib/blas-ext-base-gfill-nan +"30O",@stdlib/blas/ext/base/gfill-not-equal +"30P",@stdlib/blas-ext-base-gfill-not-equal "0EE",@stdlib/blas/ext/base/gfill "0EF",@stdlib/blas-ext-base-gfill "2Sy",@stdlib/blas/ext/base/gfind-index "2Sz",@stdlib/blas-ext-base-gfind-index "2T0",@stdlib/blas/ext/base/gfind-last-index "2T1",@stdlib/blas-ext-base-gfind-last-index +"30Q",@stdlib/blas/ext/base/gfirst-index-equal +"30R",@stdlib/blas-ext-base-gfirst-index-equal +"30S",@stdlib/blas/ext/base/gfirst-index-greater-than +"30T",@stdlib/blas-ext-base-gfirst-index-greater-than +"30U",@stdlib/blas/ext/base/gfirst-index-less-than +"30V",@stdlib/blas-ext-base-gfirst-index-less-than +"30W",@stdlib/blas/ext/base/gfirst-index-not-equal +"30X",@stdlib/blas-ext-base-gfirst-index-not-equal "2fo",@stdlib/blas/ext/base/gindex-of-column "2fp",@stdlib/blas-ext-base-gindex-of-column "2vk",@stdlib/blas/ext/base/gindex-of-falsy "2vl",@stdlib/blas-ext-base-gindex-of-falsy +"30Y",@stdlib/blas/ext/base/gindex-of-not-equal +"30Z",@stdlib/blas-ext-base-gindex-of-not-equal "2W2",@stdlib/blas/ext/base/gindex-of-row "2W3",@stdlib/blas-ext-base-gindex-of-row +"30a",@stdlib/blas/ext/base/gindex-of-same-value +"30b",@stdlib/blas-ext-base-gindex-of-same-value "2vm",@stdlib/blas/ext/base/gindex-of-truthy "2vn",@stdlib/blas-ext-base-gindex-of-truthy "2No",@stdlib/blas/ext/base/gindex-of @@ -2318,6 +2414,8 @@ "2fr",@stdlib/blas-ext-base-gjoin-between "2Yw",@stdlib/blas/ext/base/gjoin "2Yx",@stdlib/blas-ext-base-gjoin +"30c",@stdlib/blas/ext/base/glast-index-equal +"30d",@stdlib/blas-ext-base-glast-index-equal "2xu",@stdlib/blas/ext/base/glast-index-of-falsy "2xv",@stdlib/blas-ext-base-glast-index-of-falsy "2fs",@stdlib/blas/ext/base/glast-index-of-row @@ -2404,6 +2502,8 @@ "2w1",@stdlib/blas-ext-base-gwxsa "2y4",@stdlib/blas/ext/base/gwxsy "2y5",@stdlib/blas-ext-base-gwxsy +"30e",@stdlib/blas/ext/base/gxdy +"30f",@stdlib/blas-ext-base-gxdy "2y6",@stdlib/blas/ext/base/gxmy "2y7",@stdlib/blas-ext-base-gxmy "2w2",@stdlib/blas/ext/base/gxpy @@ -2428,6 +2528,8 @@ "2Yz",@stdlib/blas-ext-base-ndarray-csumkbn "2gK",@stdlib/blas/ext/base/ndarray/cunitspace "2gL",@stdlib/blas-ext-base-ndarray-cunitspace +"30g",@stdlib/blas/ext/base/ndarray/cxmy +"30h",@stdlib/blas-ext-base-ndarray-cxmy "2yA",@stdlib/blas/ext/base/ndarray/cxpy "2yB",@stdlib/blas-ext-base-ndarray-cxpy "2gM",@stdlib/blas/ext/base/ndarray/cxsa @@ -2436,6 +2538,8 @@ "2yD",@stdlib/blas-ext-base-ndarray-cxsy "2gO",@stdlib/blas/ext/base/ndarray/czero-to "2gP",@stdlib/blas-ext-base-ndarray-czero-to +"30i",@stdlib/blas/ext/base/ndarray/dany +"30j",@stdlib/blas-ext-base-ndarray-dany "2gQ",@stdlib/blas/ext/base/ndarray/daxpb "2gR",@stdlib/blas-ext-base-ndarray-daxpb "2w6",@stdlib/blas/ext/base/ndarray/daxpby @@ -2454,6 +2558,8 @@ "2gX",@stdlib/blas-ext-base-ndarray-dcusumpw "2w8",@stdlib/blas/ext/base/ndarray/ddiff "2w9",@stdlib/blas-ext-base-ndarray-ddiff +"30k",@stdlib/blas/ext/base/ndarray/dfill-not-equal +"30l",@stdlib/blas-ext-base-ndarray-dfill-not-equal "2wA",@stdlib/blas/ext/base/ndarray/dindex-of-falsy "2wB",@stdlib/blas-ext-base-ndarray-dindex-of-falsy "2Ns",@stdlib/blas/ext/base/ndarray/dindex-of @@ -2494,6 +2600,8 @@ "2gt",@stdlib/blas-ext-base-ndarray-dsumpw "2gu",@stdlib/blas/ext/base/ndarray/dunitspace "2gv",@stdlib/blas-ext-base-ndarray-dunitspace +"30m",@stdlib/blas/ext/base/ndarray/dxmy +"30n",@stdlib/blas-ext-base-ndarray-dxmy "2yE",@stdlib/blas/ext/base/ndarray/dxpy "2yF",@stdlib/blas-ext-base-ndarray-dxpy "2gw",@stdlib/blas/ext/base/ndarray/dxsa @@ -2502,6 +2610,8 @@ "2yH",@stdlib/blas-ext-base-ndarray-dxsy "2gy",@stdlib/blas/ext/base/ndarray/dzero-to "2gz",@stdlib/blas-ext-base-ndarray-dzero-to +"30o",@stdlib/blas/ext/base/ndarray/gany +"30p",@stdlib/blas-ext-base-ndarray-gany "2h0",@stdlib/blas/ext/base/ndarray/gaxpb "2h1",@stdlib/blas-ext-base-ndarray-gaxpb "2wC",@stdlib/blas/ext/base/ndarray/gaxpby @@ -2518,6 +2628,8 @@ "2h9",@stdlib/blas-ext-base-ndarray-gcusumors "2hA",@stdlib/blas/ext/base/ndarray/gcusumpw "2hB",@stdlib/blas-ext-base-ndarray-gcusumpw +"30q",@stdlib/blas/ext/base/ndarray/gfill-not-equal +"30r",@stdlib/blas-ext-base-ndarray-gfill-not-equal "2T4",@stdlib/blas/ext/base/ndarray/gfind-index "2T5",@stdlib/blas-ext-base-ndarray-gfind-index "2T6",@stdlib/blas/ext/base/ndarray/gfind-last-index @@ -2564,6 +2676,8 @@ "2hV",@stdlib/blas-ext-base-ndarray-gsumpw "2hW",@stdlib/blas/ext/base/ndarray/gunitspace "2hX",@stdlib/blas-ext-base-ndarray-gunitspace +"30s",@stdlib/blas/ext/base/ndarray/gxmy +"30t",@stdlib/blas-ext-base-ndarray-gxmy "2yI",@stdlib/blas/ext/base/ndarray/gxpy "2yJ",@stdlib/blas-ext-base-ndarray-gxpy "2wI",@stdlib/blas/ext/base/ndarray/gxsa @@ -2574,6 +2688,8 @@ "2hZ",@stdlib/blas-ext-base-ndarray-gzero-to "2FM",@stdlib/blas/ext/base/ndarray "2FN",@stdlib/blas-ext-base-ndarray +"30u",@stdlib/blas/ext/base/ndarray/sany +"30v",@stdlib/blas-ext-base-ndarray-sany "2ha",@stdlib/blas/ext/base/ndarray/saxpb "2hb",@stdlib/blas-ext-base-ndarray-saxpb "2wK",@stdlib/blas/ext/base/ndarray/saxpby @@ -2590,6 +2706,8 @@ "2ZH",@stdlib/blas-ext-base-ndarray-scusumkbn2 "2he",@stdlib/blas/ext/base/ndarray/scusumors "2hf",@stdlib/blas-ext-base-ndarray-scusumors +"30w",@stdlib/blas/ext/base/ndarray/sfill-not-equal +"30x",@stdlib/blas-ext-base-ndarray-sfill-not-equal "2O0",@stdlib/blas/ext/base/ndarray/sindex-of "2O1",@stdlib/blas-ext-base-ndarray-sindex-of "2O2",@stdlib/blas/ext/base/ndarray/slast-index-of @@ -2624,6 +2742,8 @@ "2hx",@stdlib/blas-ext-base-ndarray-ssumpw "2hy",@stdlib/blas/ext/base/ndarray/sunitspace "2hz",@stdlib/blas-ext-base-ndarray-sunitspace +"30y",@stdlib/blas/ext/base/ndarray/sxmy +"30z",@stdlib/blas-ext-base-ndarray-sxmy "2yM",@stdlib/blas/ext/base/ndarray/sxpy "2yN",@stdlib/blas-ext-base-ndarray-sxpy "2i0",@stdlib/blas/ext/base/ndarray/sxsa @@ -2656,6 +2776,8 @@ "2iD",@stdlib/blas-ext-base-ndarray-zzero-to "0Eq",@stdlib/blas/ext/base "0Er",@stdlib/blas-ext-base +"2zE",@stdlib/blas/ext/base/sany +"2zF",@stdlib/blas-ext-base-sany "0Es",@stdlib/blas/ext/base/sapx "0Et",@stdlib/blas-ext-base-sapx "0Eu",@stdlib/blas/ext/base/sapxsum @@ -2762,6 +2884,8 @@ "2iZ",@stdlib/blas-ext-base-sone-to "2wm",@stdlib/blas/ext/base/sones "2wn",@stdlib/blas-ext-base-sones +"31A",@stdlib/blas/ext/base/sreplicate +"31B",@stdlib/blas-ext-base-sreplicate "0Fe",@stdlib/blas/ext/base/srev "0Ff",@stdlib/blas-ext-base-srev "2yc",@stdlib/blas/ext/base/ssome @@ -2796,10 +2920,14 @@ "2if",@stdlib/blas-ext-base-svander "2wo",@stdlib/blas/ext/base/swapx "2wp",@stdlib/blas-ext-base-swapx +"31C",@stdlib/blas/ext/base/swax +"31D",@stdlib/blas-ext-base-swax "2ig",@stdlib/blas/ext/base/swhere "2ih",@stdlib/blas-ext-base-swhere "2wq",@stdlib/blas/ext/base/swxsa "2wr",@stdlib/blas-ext-base-swxsa +"31E",@stdlib/blas/ext/base/sxdy +"31F",@stdlib/blas-ext-base-sxdy "2ye",@stdlib/blas/ext/base/sxmy "2yf",@stdlib/blas-ext-base-sxmy "2ws",@stdlib/blas/ext/base/sxpy @@ -2848,6 +2976,8 @@ "2it",@stdlib/blas-ext-base-zindex-of-column "2iu",@stdlib/blas/ext/base/zindex-of-row "2iv",@stdlib/blas-ext-base-zindex-of-row +"31G",@stdlib/blas/ext/base/zindex-of-truthy +"31H",@stdlib/blas-ext-base-zindex-of-truthy "2iw",@stdlib/blas/ext/base/zindex-of "2ix",@stdlib/blas-ext-base-zindex-of "2iy",@stdlib/blas/ext/base/zlast-index-of-row @@ -2856,6 +2986,8 @@ "2j1",@stdlib/blas-ext-base-znancount "2j2",@stdlib/blas/ext/base/zone-to "2j3",@stdlib/blas-ext-base-zone-to +"31I",@stdlib/blas/ext/base/zreplicate +"31J",@stdlib/blas-ext-base-zreplicate "2I2",@stdlib/blas/ext/base/zsum "2I3",@stdlib/blas-ext-base-zsum "2I4",@stdlib/blas/ext/base/zsumkbn @@ -2864,10 +2996,14 @@ "2j5",@stdlib/blas-ext-base-zunitspace "2yi",@stdlib/blas/ext/base/zwapx "2yj",@stdlib/blas-ext-base-zwapx +"31K",@stdlib/blas/ext/base/zwax +"31L",@stdlib/blas-ext-base-zwax "2j6",@stdlib/blas/ext/base/zwhere "2j7",@stdlib/blas-ext-base-zwhere "2wy",@stdlib/blas/ext/base/zwxsa "2wz",@stdlib/blas-ext-base-zwxsa +"31M",@stdlib/blas/ext/base/zxmy +"31N",@stdlib/blas-ext-base-zxmy "2x0",@stdlib/blas/ext/base/zxpy "2x1",@stdlib/blas-ext-base-zxpy "2j8",@stdlib/blas/ext/base/zxsa @@ -2914,6 +3050,8 @@ "0G5",@stdlib/blas-gdot "0G6",@stdlib/blas/gswap "0G7",@stdlib/blas-gswap +"31O",@stdlib/blas/nrm2 +"31P",@stdlib/blas-nrm2 "0G9",@stdlib/blas "0GA",@stdlib/blas/sdot "0GB",@stdlib/blas-sdot @@ -3713,6 +3851,8 @@ "2x3",@stdlib/fft-base-fftpack-cffti "2x4",@stdlib/fft/base/fftpack/cosqi "2x5",@stdlib/fft-base-fftpack-cosqi +"31Q",@stdlib/fft/base/fftpack/costi +"31R",@stdlib/fft-base-fftpack-costi "2kI",@stdlib/fft/base/fftpack/decompose "2kJ",@stdlib/fft-base-fftpack-decompose "2x6",@stdlib/fft/base/fftpack @@ -3721,6 +3861,8 @@ "2x9",@stdlib/fft-base-fftpack-rffti "2ym",@stdlib/fft/base/fftpack/sinqi "2yn",@stdlib/fft-base-fftpack-sinqi +"31S",@stdlib/fft/base/fftpack/sinti +"31T",@stdlib/fft-base-fftpack-sinti "2xA",@stdlib/fft/base "2xB",@stdlib/fft-base "2xD",@stdlib/fft @@ -5347,6 +5489,32 @@ "2l1",@stdlib/ml-base-kmeans-metrics "2xG",@stdlib/ml/base/kmeans/results/struct-factory "2xH",@stdlib/ml-base-kmeans-results-struct-factory +"31U",@stdlib/ml/base/loss/float64/epsilon-insensitive-gradient +"31V",@stdlib/ml-base-loss-float64-epsilon-insensitive-gradient +"31W",@stdlib/ml/base/loss/float64/squared-epsilon-insensitive-gradient +"31X",@stdlib/ml-base-loss-float64-squared-epsilon-insensitive-gradient +"31Y",@stdlib/ml/base/loss/float64/squared-error-gradient +"31Z",@stdlib/ml-base-loss-float64-squared-error-gradient +"31a",@stdlib/ml/base/sgd-classification/learning-rate-enum2str +"31b",@stdlib/ml-base-sgd-classification-learning-rate-enum2str +"31c",@stdlib/ml/base/sgd-classification/learning-rate-resolve-enum +"31d",@stdlib/ml-base-sgd-classification-learning-rate-resolve-enum +"31e",@stdlib/ml/base/sgd-classification/learning-rate-resolve-str +"31f",@stdlib/ml-base-sgd-classification-learning-rate-resolve-str +"31g",@stdlib/ml/base/sgd-classification/learning-rate-str2enum +"31h",@stdlib/ml-base-sgd-classification-learning-rate-str2enum +"31i",@stdlib/ml/base/sgd-classification/learning-rates +"31j",@stdlib/ml-base-sgd-classification-learning-rates +"31k",@stdlib/ml/base/sgd-classification/loss-function-enum2str +"31l",@stdlib/ml-base-sgd-classification-loss-function-enum2str +"31m",@stdlib/ml/base/sgd-classification/loss-function-resolve-enum +"31n",@stdlib/ml-base-sgd-classification-loss-function-resolve-enum +"31o",@stdlib/ml/base/sgd-classification/loss-function-resolve-str +"31p",@stdlib/ml-base-sgd-classification-loss-function-resolve-str +"31q",@stdlib/ml/base/sgd-classification/loss-function-str2enum +"31r",@stdlib/ml-base-sgd-classification-loss-function-str2enum +"31s",@stdlib/ml/base/sgd-classification/loss-functions +"31t",@stdlib/ml-base-sgd-classification-loss-functions "0h0",@stdlib/ml/incr/binary-classification "0h1",@stdlib/ml-incr-binary-classification "0h2",@stdlib/ml/incr/kmeans @@ -6519,6 +6687,8 @@ "0lh",@stdlib/number-int32-base-to-uint32 "0li",@stdlib/number/int32 "0lj",@stdlib/number-int32 +"2zG",@stdlib/number/int64/ctor +"2zH",@stdlib/number-int64-ctor "2Tw",@stdlib/number/int8/base/identity "2Tx",@stdlib/number-int8-base-identity "2Ya",@stdlib/number/int8/base @@ -6568,6 +6738,14 @@ "2xN",@stdlib/number-uint64-base-add "2xO",@stdlib/number/uint64/base/assert/is-equal "2xP",@stdlib/number-uint64-base-assert-is-equal +"31u",@stdlib/number/uint64/base/bigint2words +"31v",@stdlib/number-uint64-base-bigint2words +"31w",@stdlib/number/uint64/base/get-high-word +"31x",@stdlib/number-uint64-base-get-high-word +"31y",@stdlib/number/uint64/base/get-low-word +"31z",@stdlib/number-uint64-base-get-low-word +"2zI",@stdlib/number/uint64/base/number2words +"2zJ",@stdlib/number-uint64-base-number2words "2xQ",@stdlib/number/uint64/base/to-words "2xR",@stdlib/number-uint64-base-to-words "2p4",@stdlib/number/uint64/ctor @@ -7522,6 +7700,12 @@ "2xT",@stdlib/stats-base-dists-anglit-mean "2xU",@stdlib/stats/base/dists/anglit/median "2xV",@stdlib/stats-base-dists-anglit-median +"2zK",@stdlib/stats/base/dists/anglit/quantile +"2zL",@stdlib/stats-base-dists-anglit-quantile +"32A",@stdlib/stats/base/dists/anglit/stdev +"32B",@stdlib/stats-base-dists-anglit-stdev +"32C",@stdlib/stats/base/dists/anglit/variance +"32D",@stdlib/stats-base-dists-anglit-variance "0ty",@stdlib/stats/base/dists/arcsine/cdf "0tz",@stdlib/stats-base-dists-arcsine-cdf "0u0",@stdlib/stats/base/dists/arcsine/ctor @@ -8164,6 +8348,18 @@ "14X",@stdlib/stats-base-dists-levy-stdev "14Y",@stdlib/stats/base/dists/levy/variance "14Z",@stdlib/stats-base-dists-levy-variance +"32E",@stdlib/stats/base/dists/log-logistic/cdf +"32F",@stdlib/stats-base-dists-log-logistic-cdf +"2zM",@stdlib/stats/base/dists/log-logistic/mean +"2zN",@stdlib/stats-base-dists-log-logistic-mean +"2zO",@stdlib/stats/base/dists/log-logistic/median +"2zP",@stdlib/stats-base-dists-log-logistic-median +"2zQ",@stdlib/stats/base/dists/log-logistic/mode +"2zR",@stdlib/stats-base-dists-log-logistic-mode +"2zS",@stdlib/stats/base/dists/log-logistic/pdf +"2zT",@stdlib/stats-base-dists-log-logistic-pdf +"32G",@stdlib/stats/base/dists/log-logistic/quantile +"32H",@stdlib/stats-base-dists-log-logistic-quantile "14a",@stdlib/stats/base/dists/logistic/cdf "14b",@stdlib/stats-base-dists-logistic-cdf "14c",@stdlib/stats/base/dists/logistic/ctor @@ -8438,6 +8634,8 @@ "18x",@stdlib/stats-base-dists-triangular-pdf "18y",@stdlib/stats/base/dists/triangular/quantile "18z",@stdlib/stats-base-dists-triangular-quantile +"2zU",@stdlib/stats/base/dists/tukey-lambda/mode +"2zV",@stdlib/stats-base-dists-tukey-lambda-mode "19A",@stdlib/stats/base/dists/uniform/cdf "19B",@stdlib/stats-base-dists-uniform-cdf "19C",@stdlib/stats/base/dists/uniform/ctor @@ -9082,6 +9280,8 @@ "1J3",@stdlib/stats-incr-mrss "1J4",@stdlib/stats/incr/mse "1J5",@stdlib/stats-incr-mse +"32I",@stdlib/stats/incr/mskewness +"32J",@stdlib/stats-incr-mskewness "1J6",@stdlib/stats/incr/mstdev "1J7",@stdlib/stats-incr-mstdev "1J8",@stdlib/stats/incr/msum @@ -9100,24 +9300,66 @@ "1JL",@stdlib/stats-incr-mvmr "1JM",@stdlib/stats/incr/nancount "1JN",@stdlib/stats-incr-nancount +"32K",@stdlib/stats/incr/nancovariance +"32L",@stdlib/stats-incr-nancovariance +"32M",@stdlib/stats/incr/nancv +"32N",@stdlib/stats-incr-nancv +"32O",@stdlib/stats/incr/nanewstdev +"32P",@stdlib/stats-incr-nanewstdev +"32Q",@stdlib/stats/incr/nanewvariance +"32R",@stdlib/stats-incr-nanewvariance "2We",@stdlib/stats/incr/nangmean "2Wf",@stdlib/stats-incr-nangmean "2Wg",@stdlib/stats/incr/nanhmean "2Wh",@stdlib/stats-incr-nanhmean +"32S",@stdlib/stats/incr/nankurtosis +"32T",@stdlib/stats-incr-nankurtosis +"32U",@stdlib/stats/incr/nanmae +"32V",@stdlib/stats-incr-nanmae +"32W",@stdlib/stats/incr/nanmapcorr +"32X",@stdlib/stats-incr-nanmapcorr +"32Y",@stdlib/stats/incr/nanmape +"32Z",@stdlib/stats-incr-nanmape +"32a",@stdlib/stats/incr/nanmax +"32b",@stdlib/stats-incr-nanmax "2GU",@stdlib/stats/incr/nanmaxabs "2GV",@stdlib/stats-incr-nanmaxabs "2Yo",@stdlib/stats/incr/nanmcv "2Yp",@stdlib/stats-incr-nanmcv +"32c",@stdlib/stats/incr/nanmda +"32d",@stdlib/stats-incr-nanmda +"32e",@stdlib/stats/incr/nanme +"32f",@stdlib/stats-incr-nanme "2As",@stdlib/stats/incr/nanmean "2At",@stdlib/stats-incr-nanmean "2Au",@stdlib/stats/incr/nanmeanabs "2Av",@stdlib/stats-incr-nanmeanabs +"32g",@stdlib/stats/incr/nanmeanvar +"32h",@stdlib/stats-incr-nanmeanvar +"32i",@stdlib/stats/incr/nanmgmean +"32j",@stdlib/stats-incr-nanmgmean +"32k",@stdlib/stats/incr/nanmhmean +"32l",@stdlib/stats-incr-nanmhmean +"32m",@stdlib/stats/incr/nanmidrange +"32n",@stdlib/stats-incr-nanmidrange "2Wi",@stdlib/stats/incr/nanmin "2Wj",@stdlib/stats-incr-nanmin "2tC",@stdlib/stats/incr/nanmmape "2tD",@stdlib/stats-incr-nanmmape +"32o",@stdlib/stats/incr/nanmmaxabs +"32p",@stdlib/stats-incr-nanmmaxabs +"32q",@stdlib/stats/incr/nanmmean +"32r",@stdlib/stats-incr-nanmmean +"32s",@stdlib/stats/incr/nanmmin +"32t",@stdlib/stats-incr-nanmmin "2tE",@stdlib/stats/incr/nanmmse "2tF",@stdlib/stats-incr-nanmmse +"32u",@stdlib/stats/incr/nanmpcorr +"32v",@stdlib/stats-incr-nanmpcorr +"32w",@stdlib/stats/incr/nanmrange +"32x",@stdlib/stats-incr-nanmrange +"32y",@stdlib/stats/incr/nanmrss +"32z",@stdlib/stats-incr-nanmrss "2xW",@stdlib/stats/incr/nanmse "2xX",@stdlib/stats-incr-nanmse "2GW",@stdlib/stats/incr/nanmstdev @@ -9126,6 +9368,10 @@ "2QD",@stdlib/stats-incr-nanmsum "2xY",@stdlib/stats/incr/nanmsumabs "2xZ",@stdlib/stats-incr-nanmsumabs +"33A",@stdlib/stats/incr/nanprod +"33B",@stdlib/stats-incr-nanprod +"33C",@stdlib/stats/incr/nanrange +"33D",@stdlib/stats-incr-nanrange "2xa",@stdlib/stats/incr/nanrmse "2xb",@stdlib/stats-incr-nanrmse "2Aw",@stdlib/stats/incr/nanskewness @@ -9413,6 +9659,8 @@ "2QP",@stdlib/stats-strided-dmeanvar "2QQ",@stdlib/stats/strided/dmeanvarpn "2QR",@stdlib/stats-strided-dmeanvarpn +"33E",@stdlib/stats/strided/dmedian-sorted +"33F",@stdlib/stats-strided-dmedian-sorted "29A",@stdlib/stats/strided/dmidrange "29B",@stdlib/stats-strided-dmidrange "2to",@stdlib/stats/strided/dmidrangeabs diff --git a/lib/node_modules/@stdlib/error/tools/id2pkg/data/data.json b/lib/node_modules/@stdlib/error/tools/id2pkg/data/data.json index 15494cafc934..fd9ef0139380 100644 --- a/lib/node_modules/@stdlib/error/tools/id2pkg/data/data.json +++ b/lib/node_modules/@stdlib/error/tools/id2pkg/data/data.json @@ -1 +1 @@ -{"100":"@stdlib/stats/base/dists/f/cdf","101":"@stdlib/stats-base-dists-f-cdf","102":"@stdlib/stats/base/dists/f/ctor","103":"@stdlib/stats-base-dists-f-ctor","104":"@stdlib/stats/base/dists/f/entropy","105":"@stdlib/stats-base-dists-f-entropy","106":"@stdlib/stats/base/dists/f/kurtosis","107":"@stdlib/stats-base-dists-f-kurtosis","108":"@stdlib/stats/base/dists/f/mean","109":"@stdlib/stats-base-dists-f-mean","110":"@stdlib/stats/base/dists/gamma/logcdf","111":"@stdlib/stats-base-dists-gamma-logcdf","112":"@stdlib/stats/base/dists/gamma/logpdf","113":"@stdlib/stats-base-dists-gamma-logpdf","114":"@stdlib/stats/base/dists/gamma/mean","115":"@stdlib/stats-base-dists-gamma-mean","116":"@stdlib/stats/base/dists/gamma/mgf","117":"@stdlib/stats-base-dists-gamma-mgf","118":"@stdlib/stats/base/dists/gamma/mode","119":"@stdlib/stats-base-dists-gamma-mode","120":"@stdlib/stats/base/dists/gumbel/logcdf","121":"@stdlib/stats-base-dists-gumbel-logcdf","122":"@stdlib/stats/base/dists/gumbel/logpdf","123":"@stdlib/stats-base-dists-gumbel-logpdf","124":"@stdlib/stats/base/dists/gumbel/mean","125":"@stdlib/stats-base-dists-gumbel-mean","126":"@stdlib/stats/base/dists/gumbel/median","127":"@stdlib/stats-base-dists-gumbel-median","128":"@stdlib/stats/base/dists/gumbel/mgf","129":"@stdlib/stats-base-dists-gumbel-mgf","130":"@stdlib/stats/base/dists/invgamma","131":"@stdlib/stats-base-dists-invgamma","132":"@stdlib/stats/base/dists/invgamma/pdf","133":"@stdlib/stats-base-dists-invgamma-pdf","134":"@stdlib/stats/base/dists/invgamma/quantile","135":"@stdlib/stats-base-dists-invgamma-quantile","136":"@stdlib/stats/base/dists/invgamma/skewness","137":"@stdlib/stats-base-dists-invgamma-skewness","138":"@stdlib/stats/base/dists/invgamma/stdev","139":"@stdlib/stats-base-dists-invgamma-stdev","140":"@stdlib/stats/base/dists/laplace/pdf","141":"@stdlib/stats-base-dists-laplace-pdf","142":"@stdlib/stats/base/dists/laplace/quantile","143":"@stdlib/stats-base-dists-laplace-quantile","144":"@stdlib/stats/base/dists/laplace/skewness","145":"@stdlib/stats-base-dists-laplace-skewness","146":"@stdlib/stats/base/dists/laplace/stdev","147":"@stdlib/stats-base-dists-laplace-stdev","148":"@stdlib/stats/base/dists/laplace/variance","149":"@stdlib/stats-base-dists-laplace-variance","150":"@stdlib/stats/base/dists/logistic/skewness","151":"@stdlib/stats-base-dists-logistic-skewness","152":"@stdlib/stats/base/dists/logistic/stdev","153":"@stdlib/stats-base-dists-logistic-stdev","154":"@stdlib/stats/base/dists/logistic/variance","155":"@stdlib/stats-base-dists-logistic-variance","156":"@stdlib/stats/base/dists/lognormal/cdf","157":"@stdlib/stats-base-dists-lognormal-cdf","158":"@stdlib/stats/base/dists/lognormal/ctor","159":"@stdlib/stats-base-dists-lognormal-ctor","160":"@stdlib/stats/base/dists/normal/ctor","161":"@stdlib/stats-base-dists-normal-ctor","162":"@stdlib/stats/base/dists/normal/entropy","163":"@stdlib/stats-base-dists-normal-entropy","164":"@stdlib/stats/base/dists/normal/kurtosis","165":"@stdlib/stats-base-dists-normal-kurtosis","166":"@stdlib/stats/base/dists/normal/logpdf","167":"@stdlib/stats-base-dists-normal-logpdf","168":"@stdlib/stats/base/dists/normal/mean","169":"@stdlib/stats-base-dists-normal-mean","170":"@stdlib/stats/base/dists/poisson/ctor","171":"@stdlib/stats-base-dists-poisson-ctor","172":"@stdlib/stats/base/dists/poisson/entropy","173":"@stdlib/stats-base-dists-poisson-entropy","174":"@stdlib/stats/base/dists/poisson/kurtosis","175":"@stdlib/stats-base-dists-poisson-kurtosis","176":"@stdlib/stats/base/dists/poisson/logpmf","177":"@stdlib/stats-base-dists-poisson-logpmf","178":"@stdlib/stats/base/dists/poisson/mean","179":"@stdlib/stats-base-dists-poisson-mean","180":"@stdlib/stats/base/dists/signrank","181":"@stdlib/stats-base-dists-signrank","182":"@stdlib/stats/base/dists/signrank/pdf","183":"@stdlib/stats-base-dists-signrank-pdf","184":"@stdlib/stats/base/dists/signrank/quantile","185":"@stdlib/stats-base-dists-signrank-quantile","186":"@stdlib/stats/base/dists/t/cdf","187":"@stdlib/stats-base-dists-t-cdf","188":"@stdlib/stats/base/dists/t/ctor","189":"@stdlib/stats-base-dists-t-ctor","190":"@stdlib/stats/base/dists/triangular/skewness","191":"@stdlib/stats-base-dists-triangular-skewness","192":"@stdlib/stats/base/dists/triangular/stdev","193":"@stdlib/stats-base-dists-triangular-stdev","194":"@stdlib/stats/base/dists/triangular/variance","195":"@stdlib/stats-base-dists-triangular-variance","196":"@stdlib/stats/base/dists/truncated-normal","197":"@stdlib/stats-base-dists-truncated-normal","198":"@stdlib/stats/base/dists/truncated-normal/pdf","199":"@stdlib/stats-base-dists-truncated-normal-pdf","202":"@stdlib/blas/base/dspr","203":"@stdlib/blas-base-dspr","204":"@stdlib/blas/ext/base/cfill","205":"@stdlib/blas-ext-base-cfill","206":"@stdlib/constants/float32/max-safe-nth-factorial","207":"@stdlib/constants-float32-max-safe-nth-factorial","208":"@stdlib/constants/float32/max-safe-nth-fibonacci","209":"@stdlib/constants-float32-max-safe-nth-fibonacci","210":"@stdlib/ndarray/base/assert/has-equal-shape","211":"@stdlib/ndarray-base-assert-has-equal-shape","212":"@stdlib/ndarray/base/fill","213":"@stdlib/ndarray-base-fill","214":"@stdlib/ndarray/base/to-reversed","215":"@stdlib/ndarray-base-to-reversed","216":"@stdlib/strided/base/read-dataview","217":"@stdlib/strided-base-read-dataview","218":"@stdlib/strided/base/strided2object","219":"@stdlib/strided-base-strided2object","220":"@stdlib/array/base/nulls","221":"@stdlib/array-base-nulls","222":"@stdlib/array/byte-orders","223":"@stdlib/array-byte-orders","224":"@stdlib/array/fixed-endian-factory","225":"@stdlib/array-fixed-endian-factory","226":"@stdlib/array/fixed-endian-float32","227":"@stdlib/array-fixed-endian-float32","228":"@stdlib/array/little-endian-factory","229":"@stdlib/array-little-endian-factory","230":"@stdlib/constants/float32/half-ln-two","231":"@stdlib/constants-float32-half-ln-two","232":"@stdlib/constants/float32/ln-two","233":"@stdlib/constants-float32-ln-two","234":"@stdlib/constants/float32/max-base10-exponent-subnormal","235":"@stdlib/constants-float32-max-base10-exponent-subnormal","236":"@stdlib/constants/float32/max-base10-exponent","237":"@stdlib/constants-float32-max-base10-exponent","238":"@stdlib/constants/float32/min-base10-exponent-subnormal","239":"@stdlib/constants-float32-min-base10-exponent-subnormal","240":"@stdlib/array/base/broadcasted-ternary5d","241":"@stdlib/array-base-broadcasted-ternary5d","242":"@stdlib/array/base/mskbinary4d","243":"@stdlib/array-base-mskbinary4d","244":"@stdlib/array/base/mskbinary5d","245":"@stdlib/array-base-mskbinary5d","246":"@stdlib/array/base/mskunary4d","247":"@stdlib/array-base-mskunary4d","248":"@stdlib/array/base/mskunary5d","249":"@stdlib/array-base-mskunary5d","250":"@stdlib/ndarray/index","251":"@stdlib/ndarray-index","252":"@stdlib/ndarray/map","253":"@stdlib/ndarray-map","254":"@stdlib/ndarray/reject","255":"@stdlib/ndarray-reject","256":"@stdlib/ndarray/to-fancy","257":"@stdlib/ndarray-to-fancy","258":"@stdlib/ndarray/to-json","259":"@stdlib/ndarray-to-json","260":"@stdlib/ndarray/base/spread-dimensions","261":"@stdlib/ndarray-base-spread-dimensions","262":"@stdlib/ndarray/base/to-normalized-indices","263":"@stdlib/ndarray-base-to-normalized-indices","264":"@stdlib/ndarray/base/to-unique-normalized-indices","265":"@stdlib/ndarray-base-to-unique-normalized-indices","266":"@stdlib/blas/base/zdscal","267":"@stdlib/blas-base-zdscal","268":"@stdlib/lapack/base/zlacgv","269":"@stdlib/lapack-base-zlacgv","270":"@stdlib/blas/base/wasm/snrm2","271":"@stdlib/blas-base-wasm-snrm2","272":"@stdlib/blas/base/wasm/srot","273":"@stdlib/blas-base-wasm-srot","274":"@stdlib/blas/base/wasm/sscal","275":"@stdlib/blas-base-wasm-sscal","276":"@stdlib/blas/base/wasm/zcopy","277":"@stdlib/blas-base-wasm-zcopy","278":"@stdlib/blas/base/wasm/zdrot","279":"@stdlib/blas-base-wasm-zdrot","280":"@stdlib/napi/argv-bool","281":"@stdlib/napi-argv-bool","282":"@stdlib/ndarray/base/assert/is-output-data-type-policy","283":"@stdlib/ndarray-base-assert-is-output-data-type-policy","284":"@stdlib/number/float32/base/add","285":"@stdlib/number-float32-base-add","286":"@stdlib/number/float32/base/div","287":"@stdlib/number-float32-base-div","288":"@stdlib/number/float32/base/mul","289":"@stdlib/number-float32-base-mul","290":"@stdlib/stats/strided/dmeanlipw","291":"@stdlib/stats-strided-dmeanlipw","292":"@stdlib/stats/strided/dmeanors","293":"@stdlib/stats-strided-dmeanors","294":"@stdlib/stats/strided/dmeanpw","295":"@stdlib/stats-strided-dmeanpw","296":"@stdlib/stats/strided/dmeanwd","297":"@stdlib/stats-strided-dmeanwd","298":"@stdlib/stats/strided/dmediansorted","299":"@stdlib/stats-strided-dmediansorted","1Yi":"@stdlib/array/base/accessor-getter","1Yj":"@stdlib/array-base-accessor-getter","1Yk":"@stdlib/array/base/accessor-setter","1Yl":"@stdlib/array-base-accessor-setter","1Ym":"@stdlib/array/base/accessor","1Yn":"@stdlib/array-base-accessor","1Yo":"@stdlib/array/base/accessors","1Yp":"@stdlib/array-base-accessors","1oK":"@stdlib/array/base/any-by-right","1oL":"@stdlib/array-base-any-by-right","1oM":"@stdlib/array/base/any-by","1oN":"@stdlib/array-base-any-by","2HQ":"@stdlib/array/base/any-has-own-property","2HR":"@stdlib/array-base-any-has-own-property","2HS":"@stdlib/array/base/any-has-property","2HT":"@stdlib/array-base-any-has-property","2HU":"@stdlib/array/base/any-is-entry-in","2HV":"@stdlib/array-base-any-is-entry-in","2HW":"@stdlib/array/base/any-is-entry","2HX":"@stdlib/array-base-any-is-entry","1oO":"@stdlib/array/base/any","1oP":"@stdlib/array-base-any","000":"@stdlib/array/base/arraylike2object","001":"@stdlib/array-base-arraylike2object","1Yq":"@stdlib/array/base/assert/contains","1Yr":"@stdlib/array-base-assert-contains","2N8":"@stdlib/array/base/assert/has-almost-equal-values","2N9":"@stdlib/array-base-assert-has-almost-equal-values","2co":"@stdlib/array/base/assert/has-almost-same-values","2cp":"@stdlib/array-base-assert-has-almost-same-values","1zi":"@stdlib/array/base/assert/has-equal-values-indexed","1zj":"@stdlib/array-base-assert-has-equal-values-indexed","1zk":"@stdlib/array/base/assert/has-equal-values","1zl":"@stdlib/array-base-assert-has-equal-values","1oQ":"@stdlib/array/base/assert/has-same-values","1oR":"@stdlib/array-base-assert-has-same-values","1Ys":"@stdlib/array/base/assert/is-accessor-array","1Yt":"@stdlib/array-base-assert-is-accessor-array","1w6":"@stdlib/array/base/assert/is-boolean-data-type","1w7":"@stdlib/array-base-assert-is-boolean-data-type","1w8":"@stdlib/array/base/assert/is-booleanarray","1w9":"@stdlib/array-base-assert-is-booleanarray","21o":"@stdlib/array/base/assert/is-byte-order","21p":"@stdlib/array-base-assert-is-byte-order","1qs":"@stdlib/array/base/assert/is-complex-floating-point-data-type","1qt":"@stdlib/array-base-assert-is-complex-floating-point-data-type","1s4":"@stdlib/array/base/assert/is-complex-typed-array","1s5":"@stdlib/array-base-assert-is-complex-typed-array","1oS":"@stdlib/array/base/assert/is-complex128array","1oT":"@stdlib/array-base-assert-is-complex128array","1oU":"@stdlib/array/base/assert/is-complex64array","1oV":"@stdlib/array-base-assert-is-complex64array","1qu":"@stdlib/array/base/assert/is-data-type","1qv":"@stdlib/array-base-assert-is-data-type","1qw":"@stdlib/array/base/assert/is-floating-point-data-type","1qx":"@stdlib/array-base-assert-is-floating-point-data-type","1qy":"@stdlib/array/base/assert/is-integer-data-type","1qz":"@stdlib/array-base-assert-is-integer-data-type","1r0":"@stdlib/array/base/assert/is-mostly-safe-data-type-cast","1r1":"@stdlib/array-base-assert-is-mostly-safe-data-type-cast","1r2":"@stdlib/array/base/assert/is-numeric-data-type","1r3":"@stdlib/array-base-assert-is-numeric-data-type","1r4":"@stdlib/array/base/assert/is-real-data-type","1r5":"@stdlib/array-base-assert-is-real-data-type","1r6":"@stdlib/array/base/assert/is-real-floating-point-data-type","1r7":"@stdlib/array-base-assert-is-real-floating-point-data-type","1r8":"@stdlib/array/base/assert/is-safe-data-type-cast","1r9":"@stdlib/array-base-assert-is-safe-data-type-cast","1rA":"@stdlib/array/base/assert/is-same-kind-data-type-cast","1rB":"@stdlib/array-base-assert-is-same-kind-data-type-cast","1rC":"@stdlib/array/base/assert/is-signed-integer-data-type","1rD":"@stdlib/array-base-assert-is-signed-integer-data-type","25a":"@stdlib/array/base/assert/is-sorted-ascending","25b":"@stdlib/array-base-assert-is-sorted-ascending","1rE":"@stdlib/array/base/assert/is-unsigned-integer-data-type","1rF":"@stdlib/array-base-assert-is-unsigned-integer-data-type","1Yu":"@stdlib/array/base/assert","1Yv":"@stdlib/array-base-assert","1oW":"@stdlib/array/base/at","1oX":"@stdlib/array-base-at","1oY":"@stdlib/array/base/at2d","1oZ":"@stdlib/array-base-at2d","1oa":"@stdlib/array/base/at3d","1ob":"@stdlib/array-base-at3d","1oc":"@stdlib/array/base/at4d","1od":"@stdlib/array-base-at4d","1oe":"@stdlib/array/base/at5d","1of":"@stdlib/array-base-at5d","1og":"@stdlib/array/base/atnd","1oh":"@stdlib/array-base-atnd","29O":"@stdlib/array/base/banded/filled2d-by","29P":"@stdlib/array-base-banded-filled2d-by","2Eg":"@stdlib/array/base/banded","2Eh":"@stdlib/array-base-banded","29Q":"@stdlib/array/base/banded/to-compact","29R":"@stdlib/array-base-banded-to-compact","1ne":"@stdlib/array/base/bifurcate-entries-by","1nf":"@stdlib/array-base-bifurcate-entries-by","1n2":"@stdlib/array/base/bifurcate-entries","1n3":"@stdlib/array-base-bifurcate-entries","1ng":"@stdlib/array/base/bifurcate-indices-by","1nh":"@stdlib/array-base-bifurcate-indices-by","1n4":"@stdlib/array/base/bifurcate-indices","1n5":"@stdlib/array-base-bifurcate-indices","1ni":"@stdlib/array/base/bifurcate-values-by","1nj":"@stdlib/array-base-bifurcate-values-by","1n6":"@stdlib/array/base/bifurcate-values","1n7":"@stdlib/array-base-bifurcate-values","1i0":"@stdlib/array/base/binary2d","1i1":"@stdlib/array-base-binary2d","1i2":"@stdlib/array/base/binary3d","1i3":"@stdlib/array-base-binary3d","1i4":"@stdlib/array/base/binary4d","1i5":"@stdlib/array-base-binary4d","1i6":"@stdlib/array/base/binary5d","1i7":"@stdlib/array-base-binary5d","1i8":"@stdlib/array/base/binarynd","1i9":"@stdlib/array-base-binarynd","1hM":"@stdlib/array/base/broadcast-array","1hN":"@stdlib/array-base-broadcast-array","1iA":"@stdlib/array/base/broadcasted-binary2d","1iB":"@stdlib/array-base-broadcasted-binary2d","1iC":"@stdlib/array/base/broadcasted-binary3d","1iD":"@stdlib/array-base-broadcasted-binary3d","1iE":"@stdlib/array/base/broadcasted-binary4d","1iF":"@stdlib/array-base-broadcasted-binary4d","1iG":"@stdlib/array/base/broadcasted-binary5d","1iH":"@stdlib/array-base-broadcasted-binary5d","1ke":"@stdlib/array/base/broadcasted-quaternary2d","1kf":"@stdlib/array-base-broadcasted-quaternary2d","23o":"@stdlib/array/base/broadcasted-quaternary3d","23p":"@stdlib/array-base-broadcasted-quaternary3d","23q":"@stdlib/array/base/broadcasted-quaternary4d","23r":"@stdlib/array-base-broadcasted-quaternary4d","23s":"@stdlib/array/base/broadcasted-quaternary5d","23t":"@stdlib/array-base-broadcasted-quaternary5d","1kg":"@stdlib/array/base/broadcasted-quinary2d","1kh":"@stdlib/array-base-broadcasted-quinary2d","23u":"@stdlib/array/base/broadcasted-quinary4d","23v":"@stdlib/array-base-broadcasted-quinary4d","1ki":"@stdlib/array/base/broadcasted-ternary2d","1kj":"@stdlib/array-base-broadcasted-ternary2d","23w":"@stdlib/array/base/broadcasted-ternary3d","23x":"@stdlib/array-base-broadcasted-ternary3d","23y":"@stdlib/array/base/broadcasted-ternary4d","23z":"@stdlib/array-base-broadcasted-ternary4d","1iI":"@stdlib/array/base/broadcasted-unary2d","1iJ":"@stdlib/array-base-broadcasted-unary2d","1iK":"@stdlib/array/base/broadcasted-unary3d","1iL":"@stdlib/array-base-broadcasted-unary3d","1iM":"@stdlib/array/base/broadcasted-unary4d","1iN":"@stdlib/array-base-broadcasted-unary4d","1iO":"@stdlib/array/base/broadcasted-unary5d","1iP":"@stdlib/array-base-broadcasted-unary5d","1Yw":"@stdlib/array/base/cartesian-power","1Yx":"@stdlib/array-base-cartesian-power","1Yy":"@stdlib/array/base/cartesian-product","1Yz":"@stdlib/array-base-cartesian-product","1Z0":"@stdlib/array/base/cartesian-square","1Z1":"@stdlib/array-base-cartesian-square","1Z2":"@stdlib/array/base/copy-indexed","1Z3":"@stdlib/array-base-copy-indexed","002":"@stdlib/array/base/copy","003":"@stdlib/array-base-copy","1s6":"@stdlib/array/base/count-falsy","1s7":"@stdlib/array-base-count-falsy","1sO":"@stdlib/array/base/count-if","1sP":"@stdlib/array-base-count-if","2EU":"@stdlib/array/base/count-ifs","2EV":"@stdlib/array-base-count-ifs","1sQ":"@stdlib/array/base/count-same-value-zero","1sR":"@stdlib/array-base-count-same-value-zero","1s8":"@stdlib/array/base/count-same-value","1s9":"@stdlib/array-base-count-same-value","1sA":"@stdlib/array/base/count-truthy","1sB":"@stdlib/array-base-count-truthy","21q":"@stdlib/array/base/cuany-by-right","21r":"@stdlib/array-base-cuany-by-right","21s":"@stdlib/array/base/cuany-by","21t":"@stdlib/array-base-cuany-by","1wA":"@stdlib/array/base/cuany","1wB":"@stdlib/array-base-cuany","22E":"@stdlib/array/base/cuevery-by-right","22F":"@stdlib/array-base-cuevery-by-right","21u":"@stdlib/array/base/cuevery-by","21v":"@stdlib/array-base-cuevery-by","1wC":"@stdlib/array/base/cuevery","1wD":"@stdlib/array-base-cuevery","21U":"@stdlib/array/base/cunone-by-right","21V":"@stdlib/array-base-cunone-by-right","21W":"@stdlib/array/base/cunone-by","21X":"@stdlib/array-base-cunone-by","1ww":"@stdlib/array/base/cunone","1wx":"@stdlib/array-base-cunone","21Y":"@stdlib/array/base/cusome-by-right","21Z":"@stdlib/array-base-cusome-by-right","21w":"@stdlib/array/base/cusome-by","21x":"@stdlib/array-base-cusome-by","21y":"@stdlib/array/base/cusome","21z":"@stdlib/array-base-cusome","1n8":"@stdlib/array/base/dedupe","1n9":"@stdlib/array-base-dedupe","2SS":"@stdlib/array/base/entries2objects","2ST":"@stdlib/array-base-entries2objects","2SU":"@stdlib/array/base/entries2views","2SV":"@stdlib/array-base-entries2views","1oi":"@stdlib/array/base/every-by-right","1oj":"@stdlib/array-base-every-by-right","1ok":"@stdlib/array/base/every-by","1ol":"@stdlib/array-base-every-by","1om":"@stdlib/array/base/every","1on":"@stdlib/array-base-every","2cq":"@stdlib/array/base/falses","2cr":"@stdlib/array-base-falses","1rG":"@stdlib/array/base/fancy-slice-assign","1rH":"@stdlib/array-base-fancy-slice-assign","1rI":"@stdlib/array/base/fancy-slice","1rJ":"@stdlib/array-base-fancy-slice","29S":"@stdlib/array/base/fill-by","29T":"@stdlib/array-base-fill-by","25c":"@stdlib/array/base/fill","25d":"@stdlib/array-base-fill","004":"@stdlib/array/base/filled-by","005":"@stdlib/array-base-filled-by","006":"@stdlib/array/base/filled","007":"@stdlib/array-base-filled","1hO":"@stdlib/array/base/filled2d-by","1hP":"@stdlib/array-base-filled2d-by","1Z4":"@stdlib/array/base/filled2d","1Z5":"@stdlib/array-base-filled2d","1hQ":"@stdlib/array/base/filled3d-by","1hR":"@stdlib/array-base-filled3d-by","1hS":"@stdlib/array/base/filled3d","1hT":"@stdlib/array-base-filled3d","1hU":"@stdlib/array/base/filled4d-by","1hV":"@stdlib/array-base-filled4d-by","1hW":"@stdlib/array/base/filled4d","1hX":"@stdlib/array-base-filled4d","1hY":"@stdlib/array/base/filled5d-by","1hZ":"@stdlib/array-base-filled5d-by","1ha":"@stdlib/array/base/filled5d","1hb":"@stdlib/array-base-filled5d","1iQ":"@stdlib/array/base/fillednd-by","1iR":"@stdlib/array-base-fillednd-by","1hc":"@stdlib/array/base/fillednd","1hd":"@stdlib/array-base-fillednd","1oo":"@stdlib/array/base/filter","1op":"@stdlib/array-base-filter","1mm":"@stdlib/array/base/first","1mn":"@stdlib/array-base-first","1he":"@stdlib/array/base/flatten-by","1hf":"@stdlib/array-base-flatten-by","1Z6":"@stdlib/array/base/flatten","1Z7":"@stdlib/array-base-flatten","1Z8":"@stdlib/array/base/flatten2d-by","1Z9":"@stdlib/array-base-flatten2d-by","1ZA":"@stdlib/array/base/flatten2d","1ZB":"@stdlib/array-base-flatten2d","1ZC":"@stdlib/array/base/flatten3d-by","1ZD":"@stdlib/array-base-flatten3d-by","1ZE":"@stdlib/array/base/flatten3d","1ZF":"@stdlib/array-base-flatten3d","1ZG":"@stdlib/array/base/flatten4d-by","1ZH":"@stdlib/array-base-flatten4d-by","1ZI":"@stdlib/array/base/flatten4d","1ZJ":"@stdlib/array-base-flatten4d","1ZK":"@stdlib/array/base/flatten5d-by","1ZL":"@stdlib/array-base-flatten5d-by","1ZM":"@stdlib/array/base/flatten5d","1ZN":"@stdlib/array-base-flatten5d","1lg":"@stdlib/array/base/fliplr2d","1lh":"@stdlib/array-base-fliplr2d","1mI":"@stdlib/array/base/fliplr3d","1mJ":"@stdlib/array-base-fliplr3d","1mK":"@stdlib/array/base/fliplr4d","1mL":"@stdlib/array-base-fliplr4d","1mM":"@stdlib/array/base/fliplr5d","1mN":"@stdlib/array-base-fliplr5d","1li":"@stdlib/array/base/flipud2d","1lj":"@stdlib/array-base-flipud2d","1nA":"@stdlib/array/base/flipud3d","1nB":"@stdlib/array-base-flipud3d","1nC":"@stdlib/array/base/flipud4d","1nD":"@stdlib/array-base-flipud4d","1nE":"@stdlib/array/base/flipud5d","1nF":"@stdlib/array-base-flipud5d","26K":"@stdlib/array/base/for-each","26L":"@stdlib/array-base-for-each","1lk":"@stdlib/array/base/from-strided","1ll":"@stdlib/array-base-from-strided","1ZO":"@stdlib/array/base/getter","1ZP":"@stdlib/array-base-getter","1nk":"@stdlib/array/base/group-entries-by","1nl":"@stdlib/array-base-group-entries-by","1nG":"@stdlib/array/base/group-entries","1nH":"@stdlib/array-base-group-entries","1nm":"@stdlib/array/base/group-indices-by","1nn":"@stdlib/array-base-group-indices-by","1nI":"@stdlib/array/base/group-indices","1nJ":"@stdlib/array-base-group-indices","1no":"@stdlib/array/base/group-values-by","1np":"@stdlib/array-base-group-values-by","2SW":"@stdlib/array/base/group-values-on-key","2SX":"@stdlib/array-base-group-values-on-key","1nK":"@stdlib/array/base/group-values","1nL":"@stdlib/array-base-group-values","008":"@stdlib/array/base/incrspace","009":"@stdlib/array-base-incrspace","2DY":"@stdlib/array/base/index-of-same-value","2DZ":"@stdlib/array-base-index-of-same-value","1mo":"@stdlib/array/base/index-of","1mp":"@stdlib/array-base-index-of","25e":"@stdlib/array/base/indices-complement","25f":"@stdlib/array-base-indices-complement","2Vy":"@stdlib/array/base/insert-at","2Vz":"@stdlib/array-base-insert-at","1t0":"@stdlib/array/base/join","1t1":"@stdlib/array-base-join","2Da":"@stdlib/array/base/last-index-of-same-value","2Db":"@stdlib/array-base-last-index-of-same-value","1mq":"@stdlib/array/base/last-index-of","1mr":"@stdlib/array-base-last-index-of","1ZQ":"@stdlib/array/base/last","1ZR":"@stdlib/array-base-last","00A":"@stdlib/array/base/linspace","00B":"@stdlib/array-base-linspace","2Dc":"@stdlib/array/base/linspace2d","2Dd":"@stdlib/array-base-linspace2d","00C":"@stdlib/array/base/logspace","00D":"@stdlib/array-base-logspace","29U":"@stdlib/array/base/map","29V":"@stdlib/array-base-map","1lm":"@stdlib/array/base/map2d","1ln":"@stdlib/array-base-map2d","1lo":"@stdlib/array/base/map3d","1lp":"@stdlib/array-base-map3d","1mO":"@stdlib/array/base/map4d","1mP":"@stdlib/array-base-map4d","1mQ":"@stdlib/array/base/map5d","1mR":"@stdlib/array-base-map5d","1rK":"@stdlib/array/base/min-signed-integer-dtype","1rL":"@stdlib/array-base-min-signed-integer-dtype","1rM":"@stdlib/array/base/min-unsigned-integer-dtype","1rN":"@stdlib/array-base-min-unsigned-integer-dtype","1ia":"@stdlib/array/base/mskbinary2d","1ib":"@stdlib/array-base-mskbinary2d","22G":"@stdlib/array/base/mskbinary3d","22H":"@stdlib/array-base-mskbinary3d","1uM":"@stdlib/array/base/mskfilter-map","1uN":"@stdlib/array-base-mskfilter-map","1oq":"@stdlib/array/base/mskfilter","1or":"@stdlib/array-base-mskfilter","25g":"@stdlib/array/base/mskfilter2","25h":"@stdlib/array-base-mskfilter2","25i":"@stdlib/array/base/mskfiltern","25j":"@stdlib/array-base-mskfiltern","1wE":"@stdlib/array/base/mskput","1wF":"@stdlib/array-base-mskput","1uO":"@stdlib/array/base/mskreject-map","1uP":"@stdlib/array-base-mskreject-map","1rO":"@stdlib/array/base/mskreject","1rP":"@stdlib/array-base-mskreject","1ic":"@stdlib/array/base/mskunary2d","1id":"@stdlib/array-base-mskunary2d","1ie":"@stdlib/array/base/mskunary3d","1if":"@stdlib/array-base-mskunary3d","1ZS":"@stdlib/array/base/n-cartesian-product","1ZT":"@stdlib/array-base-n-cartesian-product","2SY":"@stdlib/array/base/nested2objects","2SZ":"@stdlib/array-base-nested2objects","2Sa":"@stdlib/array/base/nested2views","2Sb":"@stdlib/array-base-nested2views","1os":"@stdlib/array/base/none-by-right","1ot":"@stdlib/array-base-none-by-right","1ou":"@stdlib/array/base/none-by","1ov":"@stdlib/array-base-none-by","1ow":"@stdlib/array/base/none","1ox":"@stdlib/array-base-none","1hg":"@stdlib/array/base/one-to","1hh":"@stdlib/array-base-one-to","00E":"@stdlib/array/base/ones","00F":"@stdlib/array-base-ones","1ZU":"@stdlib/array/base/ones2d","1ZV":"@stdlib/array-base-ones2d","1hi":"@stdlib/array/base/ones3d","1hj":"@stdlib/array-base-ones3d","1hk":"@stdlib/array/base/ones4d","1hl":"@stdlib/array-base-ones4d","1hm":"@stdlib/array/base/ones5d","1hn":"@stdlib/array-base-ones5d","1ho":"@stdlib/array/base/onesnd","1hp":"@stdlib/array-base-onesnd","00G":"@stdlib/array/base","00H":"@stdlib/array-base","1wG":"@stdlib/array/base/place","1wH":"@stdlib/array-base-place","1wI":"@stdlib/array/base/put","1wJ":"@stdlib/array-base-put","1kk":"@stdlib/array/base/quaternary2d","1kl":"@stdlib/array-base-quaternary2d","1lq":"@stdlib/array/base/quaternary3d","1lr":"@stdlib/array-base-quaternary3d","1ls":"@stdlib/array/base/quaternary4d","1lt":"@stdlib/array-base-quaternary4d","1lu":"@stdlib/array/base/quaternary5d","1lv":"@stdlib/array-base-quaternary5d","1km":"@stdlib/array/base/quinary2d","1kn":"@stdlib/array-base-quinary2d","1nM":"@stdlib/array/base/quinary3d","1nN":"@stdlib/array-base-quinary3d","1nO":"@stdlib/array/base/quinary4d","1nP":"@stdlib/array-base-quinary4d","1nQ":"@stdlib/array/base/quinary5d","1nR":"@stdlib/array-base-quinary5d","1rQ":"@stdlib/array/base/reject","1rR":"@stdlib/array-base-reject","2Sc":"@stdlib/array/base/rekey-views","2Sd":"@stdlib/array-base-rekey-views","2Se":"@stdlib/array/base/rekey","2Sf":"@stdlib/array-base-rekey","1yy":"@stdlib/array/base/remove-at","1yz":"@stdlib/array-base-remove-at","2De":"@stdlib/array/base/reshape","2Df":"@stdlib/array-base-reshape","1lw":"@stdlib/array/base/resolve-getter","1lx":"@stdlib/array-base-resolve-getter","1oy":"@stdlib/array/base/resolve-setter","1oz":"@stdlib/array-base-resolve-setter","1p0":"@stdlib/array/base/reverse","1p1":"@stdlib/array-base-reverse","25k":"@stdlib/array/base/scatter-filled","25l":"@stdlib/array-base-scatter-filled","25m":"@stdlib/array/base/scattered","25n":"@stdlib/array-base-scattered","1ZW":"@stdlib/array/base/setter","1ZX":"@stdlib/array-base-setter","1ms":"@stdlib/array/base/slice","1mt":"@stdlib/array-base-slice","1ko":"@stdlib/array/base/strided2array2d","1kp":"@stdlib/array-base-strided2array2d","1kq":"@stdlib/array/base/strided2array3d","1kr":"@stdlib/array-base-strided2array3d","1ks":"@stdlib/array/base/strided2array4d","1kt":"@stdlib/array-base-strided2array4d","1ku":"@stdlib/array/base/strided2array5d","1kv":"@stdlib/array-base-strided2array5d","29W":"@stdlib/array/base/symmetric-banded/filled2d-by","29X":"@stdlib/array-base-symmetric-banded-filled2d-by","2Ei":"@stdlib/array/base/symmetric-banded","2Ej":"@stdlib/array-base-symmetric-banded","29Y":"@stdlib/array/base/symmetric-banded/to-compact","29Z":"@stdlib/array-base-symmetric-banded-to-compact","29a":"@stdlib/array/base/symmetric/filled2d-by","29b":"@stdlib/array-base-symmetric-filled2d-by","2Ek":"@stdlib/array/base/symmetric","2El":"@stdlib/array-base-symmetric","1ly":"@stdlib/array/base/take-indexed","1lz":"@stdlib/array-base-take-indexed","25o":"@stdlib/array/base/take-indexed2","25p":"@stdlib/array-base-take-indexed2","1t2":"@stdlib/array/base/take-map","1t3":"@stdlib/array-base-take-map","1ZY":"@stdlib/array/base/take","1ZZ":"@stdlib/array-base-take","1m0":"@stdlib/array/base/take2d","1m1":"@stdlib/array-base-take2d","1mS":"@stdlib/array/base/take3d","1mT":"@stdlib/array-base-take3d","1kw":"@stdlib/array/base/ternary2d","1kx":"@stdlib/array-base-ternary2d","1ky":"@stdlib/array/base/ternary3d","1kz":"@stdlib/array-base-ternary3d","1l0":"@stdlib/array/base/ternary4d","1l1":"@stdlib/array-base-ternary4d","1l2":"@stdlib/array/base/ternary5d","1l3":"@stdlib/array-base-ternary5d","1Za":"@stdlib/array/base/to-accessor-array","1Zb":"@stdlib/array-base-to-accessor-array","1nS":"@stdlib/array/base/to-deduped","1nT":"@stdlib/array-base-to-deduped","2cs":"@stdlib/array/base/to-filled","2ct":"@stdlib/array-base-to-filled","2W0":"@stdlib/array/base/to-inserted-at","2W1":"@stdlib/array-base-to-inserted-at","1p2":"@stdlib/array/base/to-reversed","1p3":"@stdlib/array-base-to-reversed","2cu":"@stdlib/array/base/trues","2cv":"@stdlib/array-base-trues","1ig":"@stdlib/array/base/unary2d-by","1ih":"@stdlib/array-base-unary2d-by","1hq":"@stdlib/array/base/unary2d","1hr":"@stdlib/array-base-unary2d","24A":"@stdlib/array/base/unary3d-by","24B":"@stdlib/array-base-unary3d-by","1iS":"@stdlib/array/base/unary3d","1iT":"@stdlib/array-base-unary3d","24C":"@stdlib/array/base/unary4d-by","24D":"@stdlib/array-base-unary4d-by","1iU":"@stdlib/array/base/unary4d","1iV":"@stdlib/array-base-unary4d","24E":"@stdlib/array/base/unary5d-by","24F":"@stdlib/array-base-unary5d-by","1iW":"@stdlib/array/base/unary5d","1iX":"@stdlib/array-base-unary5d","1iY":"@stdlib/array/base/unarynd","1iZ":"@stdlib/array-base-unarynd","00I":"@stdlib/array/base/unitspace","00J":"@stdlib/array-base-unitspace","1wK":"@stdlib/array/base/where","1wL":"@stdlib/array-base-where","1sS":"@stdlib/array/base/with","1sT":"@stdlib/array-base-with","1z0":"@stdlib/array/base/without","1z1":"@stdlib/array-base-without","1Zc":"@stdlib/array/base/zero-to","1Zd":"@stdlib/array-base-zero-to","00K":"@stdlib/array/base/zeros","00L":"@stdlib/array-base-zeros","1Ze":"@stdlib/array/base/zeros2d","1Zf":"@stdlib/array-base-zeros2d","1hs":"@stdlib/array/base/zeros3d","1ht":"@stdlib/array-base-zeros3d","1hu":"@stdlib/array/base/zeros4d","1hv":"@stdlib/array-base-zeros4d","1hw":"@stdlib/array/base/zeros5d","1hx":"@stdlib/array-base-zeros5d","1hy":"@stdlib/array/base/zerosnd","1hz":"@stdlib/array-base-zerosnd","2Sg":"@stdlib/array/base/zip","2Sh":"@stdlib/array-base-zip","2Re":"@stdlib/array/base/zip2object","2Rf":"@stdlib/array-base-zip2object","2Si":"@stdlib/array/base/zip2objects","2Sj":"@stdlib/array-base-zip2objects","2Sk":"@stdlib/array/base/zip2views","2Sl":"@stdlib/array-base-zip2views","1uQ":"@stdlib/array/bool","1uR":"@stdlib/array-bool","00M":"@stdlib/array/buffer","00N":"@stdlib/array-buffer","1p4":"@stdlib/array/cartesian-power","1p5":"@stdlib/array-cartesian-power","1p6":"@stdlib/array/cartesian-product","1p7":"@stdlib/array-cartesian-product","1p8":"@stdlib/array/cartesian-square","1p9":"@stdlib/array-cartesian-square","00O":"@stdlib/array/complex128","00P":"@stdlib/array-complex128","00Q":"@stdlib/array/complex64","00R":"@stdlib/array-complex64","00S":"@stdlib/array/convert-same","00T":"@stdlib/array-convert-same","00U":"@stdlib/array/convert","00V":"@stdlib/array-convert","00W":"@stdlib/array/ctors","00X":"@stdlib/array-ctors","00Y":"@stdlib/array/dataview","00Z":"@stdlib/array-dataview","00a":"@stdlib/array/datespace","00b":"@stdlib/array-datespace","1nq":"@stdlib/array/defaults","1nr":"@stdlib/array-defaults","00c":"@stdlib/array/dtype","00d":"@stdlib/array-dtype","00e":"@stdlib/array/dtypes","00f":"@stdlib/array-dtypes","1Zg":"@stdlib/array/empty-like","1Zh":"@stdlib/array-empty-like","1Zi":"@stdlib/array/empty","1Zj":"@stdlib/array-empty","2um":"@stdlib/array/falses","2un":"@stdlib/array-falses","00g":"@stdlib/array/filled-by","00h":"@stdlib/array-filled-by","00i":"@stdlib/array/filled","00j":"@stdlib/array-filled","21a":"@stdlib/array/fixed-endian-float64","21b":"@stdlib/array-fixed-endian-float64","2cw":"@stdlib/array/float16","2cx":"@stdlib/array-float16","00k":"@stdlib/array/float32","00l":"@stdlib/array-float32","00m":"@stdlib/array/float64","00n":"@stdlib/array-float64","00o":"@stdlib/array/from-iterator","00p":"@stdlib/array-from-iterator","1rS":"@stdlib/array/from-scalar","1rT":"@stdlib/array-from-scalar","00q":"@stdlib/array/full-like","00r":"@stdlib/array-full-like","00s":"@stdlib/array/full","00t":"@stdlib/array-full","00u":"@stdlib/array/incrspace","00v":"@stdlib/array-incrspace","1ry":"@stdlib/array/index","1rz":"@stdlib/array-index","00w":"@stdlib/array/int16","00x":"@stdlib/array-int16","00y":"@stdlib/array/int32","00z":"@stdlib/array-int32","010":"@stdlib/array/int8","011":"@stdlib/array-int8","012":"@stdlib/array/linspace","013":"@stdlib/array-linspace","22A":"@stdlib/array/little-endian-float32","22B":"@stdlib/array-little-endian-float32","22C":"@stdlib/array/little-endian-float64","22D":"@stdlib/array-little-endian-float64","014":"@stdlib/array/logspace","015":"@stdlib/array-logspace","016":"@stdlib/array/min-dtype","017":"@stdlib/array-min-dtype","1rU":"@stdlib/array/mostly-safe-casts","1rV":"@stdlib/array-mostly-safe-casts","1sC":"@stdlib/array/mskfilter","1sD":"@stdlib/array-mskfilter","1wM":"@stdlib/array/mskput","1wN":"@stdlib/array-mskput","1sE":"@stdlib/array/mskreject","1sF":"@stdlib/array-mskreject","1Zk":"@stdlib/array/nans-like","1Zl":"@stdlib/array-nans-like","1Zm":"@stdlib/array/nans","1Zn":"@stdlib/array-nans","018":"@stdlib/array/next-dtype","019":"@stdlib/array-next-dtype","2cy":"@stdlib/array/nulls","2cz":"@stdlib/array-nulls","1pA":"@stdlib/array/one-to-like","1pB":"@stdlib/array-one-to-like","1pC":"@stdlib/array/one-to","1pD":"@stdlib/array-one-to","01A":"@stdlib/array/ones-like","01B":"@stdlib/array-ones-like","01C":"@stdlib/array/ones","01D":"@stdlib/array-ones","01F":"@stdlib/array","1wO":"@stdlib/array/place","1wP":"@stdlib/array-place","01G":"@stdlib/array/pool","01H":"@stdlib/array-pool","01I":"@stdlib/array/promotion-rules","01J":"@stdlib/array-promotion-rules","1wQ":"@stdlib/array/put","1wR":"@stdlib/array-put","01K":"@stdlib/array/reviver","01L":"@stdlib/array-reviver","01M":"@stdlib/array/safe-casts","01N":"@stdlib/array-safe-casts","01O":"@stdlib/array/same-kind-casts","01P":"@stdlib/array-same-kind-casts","01Q":"@stdlib/array/shape","01R":"@stdlib/array-shape","01S":"@stdlib/array/shared-buffer","01T":"@stdlib/array-shared-buffer","1pE":"@stdlib/array/slice","1pF":"@stdlib/array-slice","2KE":"@stdlib/array/struct-factory","2KF":"@stdlib/array-struct-factory","1s0":"@stdlib/array/take","1s1":"@stdlib/array-take","01U":"@stdlib/array/to-circular-iterator","01V":"@stdlib/array-to-circular-iterator","1rW":"@stdlib/array/to-fancy","1rX":"@stdlib/array-to-fancy","01W":"@stdlib/array/to-iterator-right","01X":"@stdlib/array-to-iterator-right","01Y":"@stdlib/array/to-iterator","01Z":"@stdlib/array-to-iterator","01a":"@stdlib/array/to-json","01b":"@stdlib/array-to-json","01c":"@stdlib/array/to-sparse-iterator-right","01d":"@stdlib/array-to-sparse-iterator-right","01e":"@stdlib/array/to-sparse-iterator","01f":"@stdlib/array-to-sparse-iterator","01g":"@stdlib/array/to-strided-iterator","01h":"@stdlib/array-to-strided-iterator","01i":"@stdlib/array/to-view-iterator-right","01j":"@stdlib/array-to-view-iterator-right","01k":"@stdlib/array/to-view-iterator","01l":"@stdlib/array-to-view-iterator","2uo":"@stdlib/array/trues","2up":"@stdlib/array-trues","01m":"@stdlib/array/typed-complex-ctors","01n":"@stdlib/array-typed-complex-ctors","01o":"@stdlib/array/typed-complex-dtypes","01p":"@stdlib/array-typed-complex-dtypes","01q":"@stdlib/array/typed-complex","01r":"@stdlib/array-typed-complex","01s":"@stdlib/array/typed-ctors","01t":"@stdlib/array-typed-ctors","01u":"@stdlib/array/typed-dtypes","01v":"@stdlib/array-typed-dtypes","01w":"@stdlib/array/typed-float-ctors","01x":"@stdlib/array-typed-float-ctors","01y":"@stdlib/array/typed-float-dtypes","01z":"@stdlib/array-typed-float-dtypes","020":"@stdlib/array/typed-integer-ctors","021":"@stdlib/array-typed-integer-ctors","022":"@stdlib/array/typed-integer-dtypes","023":"@stdlib/array-typed-integer-dtypes","024":"@stdlib/array/typed-real-ctors","025":"@stdlib/array-typed-real-ctors","026":"@stdlib/array/typed-real-dtypes","027":"@stdlib/array-typed-real-dtypes","028":"@stdlib/array/typed-real-float-ctors","029":"@stdlib/array-typed-real-float-ctors","02A":"@stdlib/array/typed-real-float-dtypes","02B":"@stdlib/array-typed-real-float-dtypes","02C":"@stdlib/array/typed-real","02D":"@stdlib/array-typed-real","02E":"@stdlib/array/typed-signed-integer-ctors","02F":"@stdlib/array-typed-signed-integer-ctors","02G":"@stdlib/array/typed-signed-integer-dtypes","02H":"@stdlib/array-typed-signed-integer-dtypes","02I":"@stdlib/array/typed-unsigned-integer-ctors","02J":"@stdlib/array-typed-unsigned-integer-ctors","02K":"@stdlib/array/typed-unsigned-integer-dtypes","02L":"@stdlib/array-typed-unsigned-integer-dtypes","02M":"@stdlib/array/typed","02N":"@stdlib/array-typed","02O":"@stdlib/array/uint16","02P":"@stdlib/array-uint16","02Q":"@stdlib/array/uint32","02R":"@stdlib/array-uint32","02S":"@stdlib/array/uint8","02T":"@stdlib/array-uint8","02U":"@stdlib/array/uint8c","02V":"@stdlib/array-uint8c","1pG":"@stdlib/array/zero-to-like","1pH":"@stdlib/array-zero-to-like","1pI":"@stdlib/array/zero-to","1pJ":"@stdlib/array-zero-to","02W":"@stdlib/array/zeros-like","02X":"@stdlib/array-zeros-like","02Y":"@stdlib/array/zeros","02Z":"@stdlib/array-zeros","02a":"@stdlib/assert/contains","02b":"@stdlib/assert-contains","02c":"@stdlib/assert/deep-equal","02d":"@stdlib/assert-deep-equal","02e":"@stdlib/assert/deep-has-own-property","02f":"@stdlib/assert-deep-has-own-property","02g":"@stdlib/assert/deep-has-property","02h":"@stdlib/assert-deep-has-property","02i":"@stdlib/assert/has-arraybuffer-support","02j":"@stdlib/assert-has-arraybuffer-support","02k":"@stdlib/assert/has-arrow-function-support","02l":"@stdlib/assert-has-arrow-function-support","02m":"@stdlib/assert/has-async-await-support","02n":"@stdlib/assert-has-async-await-support","02o":"@stdlib/assert/has-async-iterator-symbol-support","02p":"@stdlib/assert-has-async-iterator-symbol-support","1zm":"@stdlib/assert/has-atob-support","1zn":"@stdlib/assert-has-atob-support","02q":"@stdlib/assert/has-bigint-support","02r":"@stdlib/assert-has-bigint-support","02s":"@stdlib/assert/has-bigint64array-support","02t":"@stdlib/assert-has-bigint64array-support","02u":"@stdlib/assert/has-biguint64array-support","02v":"@stdlib/assert-has-biguint64array-support","1zo":"@stdlib/assert/has-btoa-support","1zp":"@stdlib/assert-has-btoa-support","02w":"@stdlib/assert/has-class-support","02x":"@stdlib/assert-has-class-support","02y":"@stdlib/assert/has-dataview-support","02z":"@stdlib/assert-has-dataview-support","030":"@stdlib/assert/has-define-properties-support","031":"@stdlib/assert-has-define-properties-support","032":"@stdlib/assert/has-define-property-support","033":"@stdlib/assert-has-define-property-support","2NA":"@stdlib/assert/has-float16array-support","2NB":"@stdlib/assert-has-float16array-support","034":"@stdlib/assert/has-float32array-support","035":"@stdlib/assert-has-float32array-support","036":"@stdlib/assert/has-float64array-support","037":"@stdlib/assert-has-float64array-support","038":"@stdlib/assert/has-function-name-support","039":"@stdlib/assert-has-function-name-support","03A":"@stdlib/assert/has-generator-support","03B":"@stdlib/assert-has-generator-support","03C":"@stdlib/assert/has-globalthis-support","03D":"@stdlib/assert-has-globalthis-support","2XY":"@stdlib/assert/has-has-instance-symbol-support","2XZ":"@stdlib/assert-has-has-instance-symbol-support","03E":"@stdlib/assert/has-int16array-support","03F":"@stdlib/assert-has-int16array-support","03G":"@stdlib/assert/has-int32array-support","03H":"@stdlib/assert-has-int32array-support","03I":"@stdlib/assert/has-int8array-support","03J":"@stdlib/assert-has-int8array-support","2Wk":"@stdlib/assert/has-is-concat-spreadable-symbol-support","2Wl":"@stdlib/assert-has-is-concat-spreadable-symbol-support","03K":"@stdlib/assert/has-iterator-symbol-support","03L":"@stdlib/assert-has-iterator-symbol-support","03M":"@stdlib/assert/has-map-support","03N":"@stdlib/assert-has-map-support","2Xa":"@stdlib/assert/has-match-symbol-support","2Xb":"@stdlib/assert-has-match-symbol-support","03O":"@stdlib/assert/has-node-buffer-support","03P":"@stdlib/assert-has-node-buffer-support","03Q":"@stdlib/assert/has-own-property","03R":"@stdlib/assert-has-own-property","03S":"@stdlib/assert/has-property","03T":"@stdlib/assert-has-property","03U":"@stdlib/assert/has-proxy-support","03V":"@stdlib/assert-has-proxy-support","2Xc":"@stdlib/assert/has-replace-symbol-support","2Xd":"@stdlib/assert-has-replace-symbol-support","2Xe":"@stdlib/assert/has-search-symbol-support","2Xf":"@stdlib/assert-has-search-symbol-support","03W":"@stdlib/assert/has-set-support","03X":"@stdlib/assert-has-set-support","03Y":"@stdlib/assert/has-sharedarraybuffer-support","03Z":"@stdlib/assert-has-sharedarraybuffer-support","2Xg":"@stdlib/assert/has-split-symbol-support","2Xh":"@stdlib/assert-has-split-symbol-support","03a":"@stdlib/assert/has-symbol-support","03b":"@stdlib/assert-has-symbol-support","2Xi":"@stdlib/assert/has-to-primitive-symbol-support","2Xj":"@stdlib/assert-has-to-primitive-symbol-support","03c":"@stdlib/assert/has-tostringtag-support","03d":"@stdlib/assert-has-tostringtag-support","03e":"@stdlib/assert/has-uint16array-support","03f":"@stdlib/assert-has-uint16array-support","03g":"@stdlib/assert/has-uint32array-support","03h":"@stdlib/assert-has-uint32array-support","03i":"@stdlib/assert/has-uint8array-support","03j":"@stdlib/assert-has-uint8array-support","03k":"@stdlib/assert/has-uint8clampedarray-support","03l":"@stdlib/assert-has-uint8clampedarray-support","03m":"@stdlib/assert/has-utf16-surrogate-pair-at","03n":"@stdlib/assert-has-utf16-surrogate-pair-at","03o":"@stdlib/assert/has-wasm-support","03p":"@stdlib/assert-has-wasm-support","03q":"@stdlib/assert/has-weakmap-support","03r":"@stdlib/assert-has-weakmap-support","03s":"@stdlib/assert/has-weakset-support","03t":"@stdlib/assert-has-weakset-support","03u":"@stdlib/assert/instance-of","03v":"@stdlib/assert-instance-of","03w":"@stdlib/assert/is-absolute-http-uri","03x":"@stdlib/assert-is-absolute-http-uri","03y":"@stdlib/assert/is-absolute-path","03z":"@stdlib/assert-is-absolute-path","040":"@stdlib/assert/is-absolute-uri","041":"@stdlib/assert-is-absolute-uri","1Zo":"@stdlib/assert/is-accessor-array","1Zp":"@stdlib/assert-is-accessor-array","042":"@stdlib/assert/is-accessor-property-in","043":"@stdlib/assert-is-accessor-property-in","044":"@stdlib/assert/is-accessor-property","045":"@stdlib/assert-is-accessor-property","2Rg":"@stdlib/assert/is-almost-equal-array","2Rh":"@stdlib/assert-is-almost-equal-array","2Ri":"@stdlib/assert/is-almost-equal-complex128array","2Rj":"@stdlib/assert-is-almost-equal-complex128array","2Rk":"@stdlib/assert/is-almost-equal-complex64array","2Rl":"@stdlib/assert-is-almost-equal-complex64array","2Rm":"@stdlib/assert/is-almost-equal-float32array","2Rn":"@stdlib/assert-is-almost-equal-float32array","2NC":"@stdlib/assert/is-almost-equal-float64array","2ND":"@stdlib/assert-is-almost-equal-float64array","2NE":"@stdlib/assert/is-almost-equal","2NF":"@stdlib/assert-is-almost-equal","2d0":"@stdlib/assert/is-almost-same-array","2d1":"@stdlib/assert-is-almost-same-array","2d2":"@stdlib/assert/is-almost-same-complex128array","2d3":"@stdlib/assert-is-almost-same-complex128array","2d4":"@stdlib/assert/is-almost-same-complex64array","2d5":"@stdlib/assert-is-almost-same-complex64array","2d6":"@stdlib/assert/is-almost-same-float32array","2d7":"@stdlib/assert-is-almost-same-float32array","2d8":"@stdlib/assert/is-almost-same-float64array","2d9":"@stdlib/assert-is-almost-same-float64array","2dA":"@stdlib/assert/is-almost-same-value","2dB":"@stdlib/assert-is-almost-same-value","046":"@stdlib/assert/is-alphagram","047":"@stdlib/assert-is-alphagram","048":"@stdlib/assert/is-alphanumeric","049":"@stdlib/assert-is-alphanumeric","04A":"@stdlib/assert/is-anagram","04B":"@stdlib/assert-is-anagram","04C":"@stdlib/assert/is-arguments","04D":"@stdlib/assert-is-arguments","04E":"@stdlib/assert/is-array-array","04F":"@stdlib/assert-is-array-array","04G":"@stdlib/assert/is-array-length","04H":"@stdlib/assert-is-array-length","04I":"@stdlib/assert/is-array-like-object","04J":"@stdlib/assert-is-array-like-object","04K":"@stdlib/assert/is-array-like","04L":"@stdlib/assert-is-array-like","04M":"@stdlib/assert/is-array","04N":"@stdlib/assert-is-array","04O":"@stdlib/assert/is-arraybuffer-view","04P":"@stdlib/assert-is-arraybuffer-view","04Q":"@stdlib/assert/is-arraybuffer","04R":"@stdlib/assert-is-arraybuffer","04S":"@stdlib/assert/is-arrow-function","04T":"@stdlib/assert-is-arrow-function","04U":"@stdlib/assert/is-ascii","04V":"@stdlib/assert-is-ascii","04W":"@stdlib/assert/is-between-array","04X":"@stdlib/assert-is-between-array","04Y":"@stdlib/assert/is-between","04Z":"@stdlib/assert-is-between","04a":"@stdlib/assert/is-big-endian","04b":"@stdlib/assert-is-big-endian","04c":"@stdlib/assert/is-bigint","04d":"@stdlib/assert-is-bigint","04e":"@stdlib/assert/is-bigint64array","04f":"@stdlib/assert-is-bigint64array","04g":"@stdlib/assert/is-biguint64array","04h":"@stdlib/assert-is-biguint64array","04i":"@stdlib/assert/is-binary-string","04j":"@stdlib/assert-is-binary-string","04k":"@stdlib/assert/is-blank-string","04l":"@stdlib/assert-is-blank-string","04m":"@stdlib/assert/is-boolean-array","04n":"@stdlib/assert-is-boolean-array","04o":"@stdlib/assert/is-boolean","04p":"@stdlib/assert-is-boolean","1vW":"@stdlib/assert/is-booleanarray","1vX":"@stdlib/assert-is-booleanarray","04q":"@stdlib/assert/is-boxed-primitive","04r":"@stdlib/assert-is-boxed-primitive","04s":"@stdlib/assert/is-browser","04t":"@stdlib/assert-is-browser","04u":"@stdlib/assert/is-buffer","04v":"@stdlib/assert-is-buffer","1Zq":"@stdlib/assert/is-camelcase","1Zr":"@stdlib/assert-is-camelcase","04w":"@stdlib/assert/is-capitalized","04x":"@stdlib/assert-is-capitalized","04y":"@stdlib/assert/is-centrosymmetric-matrix","04z":"@stdlib/assert-is-centrosymmetric-matrix","050":"@stdlib/assert/is-circular-array","051":"@stdlib/assert-is-circular-array","052":"@stdlib/assert/is-circular-plain-object","053":"@stdlib/assert-is-circular-plain-object","054":"@stdlib/assert/is-circular","055":"@stdlib/assert-is-circular","056":"@stdlib/assert/is-class","057":"@stdlib/assert-is-class","058":"@stdlib/assert/is-collection","059":"@stdlib/assert-is-collection","05A":"@stdlib/assert/is-complex-like","05B":"@stdlib/assert-is-complex-like","05C":"@stdlib/assert/is-complex-typed-array-like","05D":"@stdlib/assert-is-complex-typed-array-like","05E":"@stdlib/assert/is-complex-typed-array","05F":"@stdlib/assert-is-complex-typed-array","05G":"@stdlib/assert/is-complex","05H":"@stdlib/assert-is-complex","05I":"@stdlib/assert/is-complex128","05J":"@stdlib/assert-is-complex128","05K":"@stdlib/assert/is-complex128array","05L":"@stdlib/assert-is-complex128array","1mU":"@stdlib/assert/is-complex128matrix-like","1mV":"@stdlib/assert-is-complex128matrix-like","1mW":"@stdlib/assert/is-complex128ndarray-like","1mX":"@stdlib/assert-is-complex128ndarray-like","1mY":"@stdlib/assert/is-complex128vector-like","1mZ":"@stdlib/assert-is-complex128vector-like","05M":"@stdlib/assert/is-complex64","05N":"@stdlib/assert-is-complex64","05O":"@stdlib/assert/is-complex64array","05P":"@stdlib/assert-is-complex64array","1ma":"@stdlib/assert/is-complex64matrix-like","1mb":"@stdlib/assert-is-complex64matrix-like","1mc":"@stdlib/assert/is-complex64ndarray-like","1md":"@stdlib/assert-is-complex64ndarray-like","1me":"@stdlib/assert/is-complex64vector-like","1mf":"@stdlib/assert-is-complex64vector-like","05Q":"@stdlib/assert/is-composite","05R":"@stdlib/assert-is-composite","05S":"@stdlib/assert/is-configurable-property-in","05T":"@stdlib/assert-is-configurable-property-in","05U":"@stdlib/assert/is-configurable-property","05V":"@stdlib/assert-is-configurable-property","1Zs":"@stdlib/assert/is-constantcase","1Zt":"@stdlib/assert-is-constantcase","05W":"@stdlib/assert/is-cube-number","05X":"@stdlib/assert-is-cube-number","1Zu":"@stdlib/assert/is-current-year","1Zv":"@stdlib/assert-is-current-year","05Y":"@stdlib/assert/is-darwin","05Z":"@stdlib/assert-is-darwin","05a":"@stdlib/assert/is-data-property-in","05b":"@stdlib/assert-is-data-property-in","05c":"@stdlib/assert/is-data-property","05d":"@stdlib/assert-is-data-property","05e":"@stdlib/assert/is-dataview","05f":"@stdlib/assert-is-dataview","05g":"@stdlib/assert/is-date-object-array","05h":"@stdlib/assert-is-date-object-array","05i":"@stdlib/assert/is-date-object","05j":"@stdlib/assert-is-date-object","05k":"@stdlib/assert/is-digit-string","05l":"@stdlib/assert-is-digit-string","05m":"@stdlib/assert/is-docker","05n":"@stdlib/assert-is-docker","1Zw":"@stdlib/assert/is-domain-name","1Zx":"@stdlib/assert-is-domain-name","1Zy":"@stdlib/assert/is-duration-string","1Zz":"@stdlib/assert-is-duration-string","05o":"@stdlib/assert/is-electron-main","05p":"@stdlib/assert-is-electron-main","05q":"@stdlib/assert/is-electron-renderer","05r":"@stdlib/assert-is-electron-renderer","05s":"@stdlib/assert/is-electron","05t":"@stdlib/assert-is-electron","05u":"@stdlib/assert/is-email-address","05v":"@stdlib/assert-is-email-address","05w":"@stdlib/assert/is-empty-array-like-object","05x":"@stdlib/assert-is-empty-array-like-object","05y":"@stdlib/assert/is-empty-array","05z":"@stdlib/assert-is-empty-array","060":"@stdlib/assert/is-empty-collection","061":"@stdlib/assert-is-empty-collection","062":"@stdlib/assert/is-empty-object","063":"@stdlib/assert-is-empty-object","064":"@stdlib/assert/is-empty-string","065":"@stdlib/assert-is-empty-string","066":"@stdlib/assert/is-enumerable-property-in","067":"@stdlib/assert-is-enumerable-property-in","068":"@stdlib/assert/is-enumerable-property","069":"@stdlib/assert-is-enumerable-property","1zq":"@stdlib/assert/is-equal-array","1zr":"@stdlib/assert-is-equal-array","2HY":"@stdlib/assert/is-equal-booleanarray","2HZ":"@stdlib/assert-is-equal-booleanarray","2Ha":"@stdlib/assert/is-equal-date-object","2Hb":"@stdlib/assert-is-equal-date-object","2Hc":"@stdlib/assert/is-equal-int16array","2Hd":"@stdlib/assert-is-equal-int16array","2He":"@stdlib/assert/is-equal-int32array","2Hf":"@stdlib/assert-is-equal-int32array","2Hg":"@stdlib/assert/is-equal-int8array","2Hh":"@stdlib/assert-is-equal-int8array","2Hi":"@stdlib/assert/is-equal-uint16array","2Hj":"@stdlib/assert-is-equal-uint16array","2Hk":"@stdlib/assert/is-equal-uint32array","2Hl":"@stdlib/assert-is-equal-uint32array","2Hm":"@stdlib/assert/is-equal-uint8array","2Hn":"@stdlib/assert-is-equal-uint8array","2Ho":"@stdlib/assert/is-equal-uint8clampedarray","2Hp":"@stdlib/assert-is-equal-uint8clampedarray","06A":"@stdlib/assert/is-error","06B":"@stdlib/assert-is-error","06C":"@stdlib/assert/is-eval-error","06D":"@stdlib/assert-is-eval-error","06E":"@stdlib/assert/is-even","06F":"@stdlib/assert-is-even","06G":"@stdlib/assert/is-falsy-array","06H":"@stdlib/assert-is-falsy-array","06I":"@stdlib/assert/is-falsy","06J":"@stdlib/assert-is-falsy","06K":"@stdlib/assert/is-finite-array","06L":"@stdlib/assert-is-finite-array","06M":"@stdlib/assert/is-finite","06N":"@stdlib/assert-is-finite","2NG":"@stdlib/assert/is-float16array","2NH":"@stdlib/assert-is-float16array","06O":"@stdlib/assert/is-float32array","06P":"@stdlib/assert-is-float32array","06Q":"@stdlib/assert/is-float32matrix-like","06R":"@stdlib/assert-is-float32matrix-like","06S":"@stdlib/assert/is-float32ndarray-like","06T":"@stdlib/assert-is-float32ndarray-like","06U":"@stdlib/assert/is-float32vector-like","06V":"@stdlib/assert-is-float32vector-like","06W":"@stdlib/assert/is-float64array","06X":"@stdlib/assert-is-float64array","06Y":"@stdlib/assert/is-float64matrix-like","06Z":"@stdlib/assert-is-float64matrix-like","06a":"@stdlib/assert/is-float64ndarray-like","06b":"@stdlib/assert-is-float64ndarray-like","06c":"@stdlib/assert/is-float64vector-like","06d":"@stdlib/assert-is-float64vector-like","06e":"@stdlib/assert/is-function-array","06f":"@stdlib/assert-is-function-array","06g":"@stdlib/assert/is-function","06h":"@stdlib/assert-is-function","06i":"@stdlib/assert/is-generator-object-like","06j":"@stdlib/assert-is-generator-object-like","06k":"@stdlib/assert/is-generator-object","06l":"@stdlib/assert-is-generator-object","06m":"@stdlib/assert/is-gzip-buffer","06n":"@stdlib/assert-is-gzip-buffer","06o":"@stdlib/assert/is-hex-string","06p":"@stdlib/assert-is-hex-string","06q":"@stdlib/assert/is-infinite","06r":"@stdlib/assert-is-infinite","06s":"@stdlib/assert/is-inherited-property","06t":"@stdlib/assert-is-inherited-property","06u":"@stdlib/assert/is-int16array","06v":"@stdlib/assert-is-int16array","06w":"@stdlib/assert/is-int32array","06x":"@stdlib/assert-is-int32array","06y":"@stdlib/assert/is-int8array","06z":"@stdlib/assert-is-int8array","070":"@stdlib/assert/is-integer-array","071":"@stdlib/assert-is-integer-array","072":"@stdlib/assert/is-integer","073":"@stdlib/assert-is-integer","074":"@stdlib/assert/is-iterable-like","075":"@stdlib/assert-is-iterable-like","076":"@stdlib/assert/is-iterator-like","077":"@stdlib/assert-is-iterator-like","078":"@stdlib/assert/is-json","079":"@stdlib/assert-is-json","1a0":"@stdlib/assert/is-kebabcase","1a1":"@stdlib/assert-is-kebabcase","07A":"@stdlib/assert/is-leap-year","07B":"@stdlib/assert-is-leap-year","07C":"@stdlib/assert/is-little-endian","07D":"@stdlib/assert-is-little-endian","07E":"@stdlib/assert/is-localhost","07F":"@stdlib/assert-is-localhost","07G":"@stdlib/assert/is-lowercase","07H":"@stdlib/assert-is-lowercase","07I":"@stdlib/assert/is-matrix-like","07J":"@stdlib/assert-is-matrix-like","07K":"@stdlib/assert/is-method-in","07L":"@stdlib/assert-is-method-in","07M":"@stdlib/assert/is-method","07N":"@stdlib/assert-is-method","07O":"@stdlib/assert/is-mobile","07P":"@stdlib/assert-is-mobile","1ii":"@stdlib/assert/is-multi-slice","1ij":"@stdlib/assert-is-multi-slice","07Q":"@stdlib/assert/is-named-typed-tuple-like","07R":"@stdlib/assert-is-named-typed-tuple-like","07S":"@stdlib/assert/is-nan-array","07T":"@stdlib/assert-is-nan-array","07U":"@stdlib/assert/is-nan","07V":"@stdlib/assert-is-nan","07W":"@stdlib/assert/is-native-function","07X":"@stdlib/assert-is-native-function","2dC":"@stdlib/assert/is-ndarray-descriptor","2dD":"@stdlib/assert-is-ndarray-descriptor","21c":"@stdlib/assert/is-ndarray-like-with-data-type","21d":"@stdlib/assert-is-ndarray-like-with-data-type","07Y":"@stdlib/assert/is-ndarray-like","07Z":"@stdlib/assert-is-ndarray-like","1sG":"@stdlib/assert/is-negative-finite","1sH":"@stdlib/assert-is-negative-finite","07a":"@stdlib/assert/is-negative-integer-array","07b":"@stdlib/assert-is-negative-integer-array","07c":"@stdlib/assert/is-negative-integer","07d":"@stdlib/assert-is-negative-integer","07e":"@stdlib/assert/is-negative-number-array","07f":"@stdlib/assert-is-negative-number-array","07g":"@stdlib/assert/is-negative-number","07h":"@stdlib/assert-is-negative-number","07i":"@stdlib/assert/is-negative-zero","07j":"@stdlib/assert-is-negative-zero","07k":"@stdlib/assert/is-node-builtin","07l":"@stdlib/assert-is-node-builtin","07m":"@stdlib/assert/is-node-duplex-stream-like","07n":"@stdlib/assert-is-node-duplex-stream-like","07o":"@stdlib/assert/is-node-readable-stream-like","07p":"@stdlib/assert-is-node-readable-stream-like","07q":"@stdlib/assert/is-node-repl","07r":"@stdlib/assert-is-node-repl","07s":"@stdlib/assert/is-node-stream-like","07t":"@stdlib/assert-is-node-stream-like","07u":"@stdlib/assert/is-node-transform-stream-like","07v":"@stdlib/assert-is-node-transform-stream-like","07w":"@stdlib/assert/is-node-writable-stream-like","07x":"@stdlib/assert-is-node-writable-stream-like","07y":"@stdlib/assert/is-node","07z":"@stdlib/assert-is-node","080":"@stdlib/assert/is-nonconfigurable-property-in","081":"@stdlib/assert-is-nonconfigurable-property-in","082":"@stdlib/assert/is-nonconfigurable-property","083":"@stdlib/assert-is-nonconfigurable-property","084":"@stdlib/assert/is-nonenumerable-property-in","085":"@stdlib/assert-is-nonenumerable-property-in","086":"@stdlib/assert/is-nonenumerable-property","087":"@stdlib/assert-is-nonenumerable-property","1sI":"@stdlib/assert/is-nonnegative-finite","1sJ":"@stdlib/assert-is-nonnegative-finite","088":"@stdlib/assert/is-nonnegative-integer-array","089":"@stdlib/assert-is-nonnegative-integer-array","08A":"@stdlib/assert/is-nonnegative-integer","08B":"@stdlib/assert-is-nonnegative-integer","08C":"@stdlib/assert/is-nonnegative-number-array","08D":"@stdlib/assert-is-nonnegative-number-array","08E":"@stdlib/assert/is-nonnegative-number","08F":"@stdlib/assert-is-nonnegative-number","1sU":"@stdlib/assert/is-nonpositive-finite","1sV":"@stdlib/assert-is-nonpositive-finite","08G":"@stdlib/assert/is-nonpositive-integer-array","08H":"@stdlib/assert-is-nonpositive-integer-array","08I":"@stdlib/assert/is-nonpositive-integer","08J":"@stdlib/assert-is-nonpositive-integer","08K":"@stdlib/assert/is-nonpositive-number-array","08L":"@stdlib/assert-is-nonpositive-number-array","08M":"@stdlib/assert/is-nonpositive-number","08N":"@stdlib/assert-is-nonpositive-number","08O":"@stdlib/assert/is-nonsymmetric-matrix","08P":"@stdlib/assert-is-nonsymmetric-matrix","08Q":"@stdlib/assert/is-null-array","08R":"@stdlib/assert-is-null-array","08S":"@stdlib/assert/is-null","08T":"@stdlib/assert-is-null","08U":"@stdlib/assert/is-number-array","08V":"@stdlib/assert-is-number-array","08W":"@stdlib/assert/is-number","08X":"@stdlib/assert-is-number","08Y":"@stdlib/assert/is-numeric-array","08Z":"@stdlib/assert-is-numeric-array","08a":"@stdlib/assert/is-object-array","08b":"@stdlib/assert-is-object-array","08c":"@stdlib/assert/is-object-like","08d":"@stdlib/assert-is-object-like","08e":"@stdlib/assert/is-object","08f":"@stdlib/assert-is-object","08g":"@stdlib/assert/is-odd","08h":"@stdlib/assert-is-odd","1a2":"@stdlib/assert/is-pascalcase","1a3":"@stdlib/assert-is-pascalcase","08i":"@stdlib/assert/is-persymmetric-matrix","08j":"@stdlib/assert-is-persymmetric-matrix","08k":"@stdlib/assert/is-plain-object-array","08l":"@stdlib/assert-is-plain-object-array","08m":"@stdlib/assert/is-plain-object","08n":"@stdlib/assert-is-plain-object","1sK":"@stdlib/assert/is-positive-finite","1sL":"@stdlib/assert-is-positive-finite","08o":"@stdlib/assert/is-positive-integer-array","08p":"@stdlib/assert-is-positive-integer-array","08q":"@stdlib/assert/is-positive-integer","08r":"@stdlib/assert-is-positive-integer","08s":"@stdlib/assert/is-positive-number-array","08t":"@stdlib/assert-is-positive-number-array","08u":"@stdlib/assert/is-positive-number","08v":"@stdlib/assert-is-positive-number","08w":"@stdlib/assert/is-positive-zero","08x":"@stdlib/assert-is-positive-zero","08y":"@stdlib/assert/is-prime","08z":"@stdlib/assert-is-prime","090":"@stdlib/assert/is-primitive-array","091":"@stdlib/assert-is-primitive-array","092":"@stdlib/assert/is-primitive","093":"@stdlib/assert-is-primitive","094":"@stdlib/assert/is-prng-like","095":"@stdlib/assert-is-prng-like","096":"@stdlib/assert/is-probability-array","097":"@stdlib/assert-is-probability-array","098":"@stdlib/assert/is-probability","099":"@stdlib/assert-is-probability","09A":"@stdlib/assert/is-property-key","09B":"@stdlib/assert-is-property-key","09C":"@stdlib/assert/is-prototype-of","09D":"@stdlib/assert-is-prototype-of","1sW":"@stdlib/assert/is-ragged-nested-array","1sX":"@stdlib/assert-is-ragged-nested-array","09E":"@stdlib/assert/is-range-error","09F":"@stdlib/assert-is-range-error","09G":"@stdlib/assert/is-read-only-property-in","09H":"@stdlib/assert-is-read-only-property-in","09I":"@stdlib/assert/is-read-only-property","09J":"@stdlib/assert-is-read-only-property","09K":"@stdlib/assert/is-read-write-property-in","09L":"@stdlib/assert-is-read-write-property-in","09M":"@stdlib/assert/is-read-write-property","09N":"@stdlib/assert-is-read-write-property","09O":"@stdlib/assert/is-readable-property-in","09P":"@stdlib/assert-is-readable-property-in","09Q":"@stdlib/assert/is-readable-property","09R":"@stdlib/assert-is-readable-property","09S":"@stdlib/assert/is-reference-error","09T":"@stdlib/assert-is-reference-error","09U":"@stdlib/assert/is-regexp-string","09V":"@stdlib/assert-is-regexp-string","09W":"@stdlib/assert/is-regexp","09X":"@stdlib/assert-is-regexp","09Y":"@stdlib/assert/is-relative-path","09Z":"@stdlib/assert-is-relative-path","09a":"@stdlib/assert/is-relative-uri","09b":"@stdlib/assert-is-relative-uri","09c":"@stdlib/assert/is-safe-integer-array","09d":"@stdlib/assert-is-safe-integer-array","09e":"@stdlib/assert/is-safe-integer","09f":"@stdlib/assert-is-safe-integer","1zs":"@stdlib/assert/is-same-accessor-array","1zt":"@stdlib/assert-is-same-accessor-array","1zu":"@stdlib/assert/is-same-array-like-object","1zv":"@stdlib/assert-is-same-array-like-object","1zw":"@stdlib/assert/is-same-array-like","1zx":"@stdlib/assert-is-same-array-like","1pK":"@stdlib/assert/is-same-array","1pL":"@stdlib/assert-is-same-array","1pM":"@stdlib/assert/is-same-complex128","1pN":"@stdlib/assert-is-same-complex128","1pO":"@stdlib/assert/is-same-complex128array","1pP":"@stdlib/assert-is-same-complex128array","1pQ":"@stdlib/assert/is-same-complex64","1pR":"@stdlib/assert-is-same-complex64","1pS":"@stdlib/assert/is-same-complex64array","1pT":"@stdlib/assert-is-same-complex64array","1pU":"@stdlib/assert/is-same-float32array","1pV":"@stdlib/assert-is-same-float32array","1pW":"@stdlib/assert/is-same-float64array","1pX":"@stdlib/assert-is-same-float64array","09g":"@stdlib/assert/is-same-native-class","09h":"@stdlib/assert-is-same-native-class","09i":"@stdlib/assert/is-same-type","09j":"@stdlib/assert-is-same-type","22I":"@stdlib/assert/is-same-typed-array-like","22J":"@stdlib/assert-is-same-typed-array-like","09k":"@stdlib/assert/is-same-value-zero","09l":"@stdlib/assert-is-same-value-zero","09m":"@stdlib/assert/is-same-value","09n":"@stdlib/assert-is-same-value","1a4":"@stdlib/assert/is-semver","1a5":"@stdlib/assert-is-semver","09o":"@stdlib/assert/is-sharedarraybuffer","09p":"@stdlib/assert-is-sharedarraybuffer","09q":"@stdlib/assert/is-skew-centrosymmetric-matrix","09r":"@stdlib/assert-is-skew-centrosymmetric-matrix","09s":"@stdlib/assert/is-skew-persymmetric-matrix","09t":"@stdlib/assert-is-skew-persymmetric-matrix","09u":"@stdlib/assert/is-skew-symmetric-matrix","09v":"@stdlib/assert-is-skew-symmetric-matrix","1ik":"@stdlib/assert/is-slice","1il":"@stdlib/assert-is-slice","1a6":"@stdlib/assert/is-snakecase","1a7":"@stdlib/assert-is-snakecase","09w":"@stdlib/assert/is-square-matrix","09x":"@stdlib/assert-is-square-matrix","09y":"@stdlib/assert/is-square-number","09z":"@stdlib/assert-is-square-number","0A0":"@stdlib/assert/is-square-triangular-number","0A1":"@stdlib/assert-is-square-triangular-number","1a8":"@stdlib/assert/is-startcase","1a9":"@stdlib/assert-is-startcase","0A2":"@stdlib/assert/is-strict-equal","0A3":"@stdlib/assert-is-strict-equal","0A4":"@stdlib/assert/is-string-array","0A5":"@stdlib/assert-is-string-array","0A6":"@stdlib/assert/is-string","0A7":"@stdlib/assert-is-string","2NI":"@stdlib/assert/is-struct-constructor-like","2NJ":"@stdlib/assert-is-struct-constructor-like","2NK":"@stdlib/assert/is-struct","2NL":"@stdlib/assert-is-struct","0A8":"@stdlib/assert/is-symbol-array","0A9":"@stdlib/assert-is-symbol-array","0AA":"@stdlib/assert/is-symbol","0AB":"@stdlib/assert-is-symbol","0AC":"@stdlib/assert/is-symmetric-matrix","0AD":"@stdlib/assert-is-symmetric-matrix","0AE":"@stdlib/assert/is-syntax-error","0AF":"@stdlib/assert-is-syntax-error","0AG":"@stdlib/assert/is-touch-device","0AH":"@stdlib/assert-is-touch-device","0AI":"@stdlib/assert/is-triangular-number","0AJ":"@stdlib/assert-is-triangular-number","0AK":"@stdlib/assert/is-truthy-array","0AL":"@stdlib/assert-is-truthy-array","0AM":"@stdlib/assert/is-truthy","0AN":"@stdlib/assert-is-truthy","0AO":"@stdlib/assert/is-type-error","0AP":"@stdlib/assert-is-type-error","0AQ":"@stdlib/assert/is-typed-array-length","0AR":"@stdlib/assert-is-typed-array-length","0AS":"@stdlib/assert/is-typed-array-like","0AT":"@stdlib/assert-is-typed-array-like","0AU":"@stdlib/assert/is-typed-array","0AV":"@stdlib/assert-is-typed-array","0AW":"@stdlib/assert/is-uint16array","0AX":"@stdlib/assert-is-uint16array","0AY":"@stdlib/assert/is-uint32array","0AZ":"@stdlib/assert-is-uint32array","2uq":"@stdlib/assert/is-uint64","2ur":"@stdlib/assert-is-uint64","0Aa":"@stdlib/assert/is-uint8array","0Ab":"@stdlib/assert-is-uint8array","0Ac":"@stdlib/assert/is-uint8clampedarray","0Ad":"@stdlib/assert-is-uint8clampedarray","0Ae":"@stdlib/assert/is-unc-path","0Af":"@stdlib/assert-is-unc-path","0Ag":"@stdlib/assert/is-undefined-or-null","0Ah":"@stdlib/assert-is-undefined-or-null","0Ai":"@stdlib/assert/is-undefined","0Aj":"@stdlib/assert-is-undefined","0Ak":"@stdlib/assert/is-unity-probability-array","0Al":"@stdlib/assert-is-unity-probability-array","0Am":"@stdlib/assert/is-uppercase","0An":"@stdlib/assert-is-uppercase","0Ao":"@stdlib/assert/is-uri-error","0Ap":"@stdlib/assert-is-uri-error","0Aq":"@stdlib/assert/is-uri","0Ar":"@stdlib/assert-is-uri","0As":"@stdlib/assert/is-vector-like","0At":"@stdlib/assert-is-vector-like","1zy":"@stdlib/assert/is-wasm-memory","1zz":"@stdlib/assert-is-wasm-memory","0Au":"@stdlib/assert/is-web-worker","0Av":"@stdlib/assert-is-web-worker","1sY":"@stdlib/assert/is-well-formed-string","1sZ":"@stdlib/assert-is-well-formed-string","0Aw":"@stdlib/assert/is-whitespace","0Ax":"@stdlib/assert-is-whitespace","0Ay":"@stdlib/assert/is-windows","0Az":"@stdlib/assert-is-windows","0B0":"@stdlib/assert/is-writable-property-in","0B1":"@stdlib/assert-is-writable-property-in","0B2":"@stdlib/assert/is-writable-property","0B3":"@stdlib/assert-is-writable-property","0B4":"@stdlib/assert/is-write-only-property-in","0B5":"@stdlib/assert-is-write-only-property-in","0B6":"@stdlib/assert/is-write-only-property","0B7":"@stdlib/assert-is-write-only-property","1aA":"@stdlib/assert/napi/equal-typedarray-types","1aB":"@stdlib/assert-napi-equal-typedarray-types","1aC":"@stdlib/assert/napi/equal-types","1aD":"@stdlib/assert-napi-equal-types","1uS":"@stdlib/assert/napi/has-property","1uT":"@stdlib/assert-napi-has-property","2KG":"@stdlib/assert/napi/is-dataview","2KH":"@stdlib/assert-napi-is-dataview","1aE":"@stdlib/assert/napi/is-type","1aF":"@stdlib/assert-napi-is-type","1aG":"@stdlib/assert/napi/is-typedarray","1aH":"@stdlib/assert-napi-is-typedarray","1aI":"@stdlib/assert/napi","1aJ":"@stdlib/assert-napi","1aK":"@stdlib/assert/napi/status-ok","1aL":"@stdlib/assert-napi-status-ok","0B9":"@stdlib/assert","0BA":"@stdlib/assert/tools/array-function","0BB":"@stdlib/assert-tools-array-function","0BC":"@stdlib/assert/tools/array-like-function","0BD":"@stdlib/assert-tools-array-like-function","0BE":"@stdlib/assert/tools","0BF":"@stdlib/assert-tools","0BG":"@stdlib/assert/tools/typed-array-function","0BH":"@stdlib/assert-tools-typed-array-function","0BI":"@stdlib/bench/harness","0BJ":"@stdlib/bench-harness","0BL":"@stdlib/bench","0BM":"@stdlib/bigint/ctor","0BN":"@stdlib/bigint-ctor","0BP":"@stdlib/bigint","1wU":"@stdlib/blas/base/assert/is-diagonal-type","1wV":"@stdlib/blas-base-assert-is-diagonal-type","1vY":"@stdlib/blas/base/assert/is-layout","1vZ":"@stdlib/blas-base-assert-is-layout","2NM":"@stdlib/blas/base/assert/is-matrix-orientation","2NN":"@stdlib/blas-base-assert-is-matrix-orientation","1va":"@stdlib/blas/base/assert/is-matrix-triangle","1vb":"@stdlib/blas-base-assert-is-matrix-triangle","1wW":"@stdlib/blas/base/assert/is-operation-side","1wX":"@stdlib/blas-base-assert-is-operation-side","1vc":"@stdlib/blas/base/assert/is-transpose-operation","1vd":"@stdlib/blas-base-assert-is-transpose-operation","1ve":"@stdlib/blas/base/assert","1vf":"@stdlib/blas-base-assert","1xo":"@stdlib/blas/base/caxpy","1xp":"@stdlib/blas-base-caxpy","0BQ":"@stdlib/blas/base/ccopy","0BR":"@stdlib/blas-base-ccopy","2dE":"@stdlib/blas/base/cgemv","2dF":"@stdlib/blas-base-cgemv","1vg":"@stdlib/blas/base/cscal","1vh":"@stdlib/blas-base-cscal","1xY":"@stdlib/blas/base/csrot","1xZ":"@stdlib/blas-base-csrot","2Hq":"@stdlib/blas/base/csscal","2Hr":"@stdlib/blas-base-csscal","0BS":"@stdlib/blas/base/cswap","0BT":"@stdlib/blas-base-cswap","0BU":"@stdlib/blas/base/dasum","0BV":"@stdlib/blas-base-dasum","0BW":"@stdlib/blas/base/daxpy","0BX":"@stdlib/blas-base-daxpy","1vi":"@stdlib/blas/base/dcabs1","1vj":"@stdlib/blas-base-dcabs1","0BY":"@stdlib/blas/base/dcopy","0BZ":"@stdlib/blas-base-dcopy","0Ba":"@stdlib/blas/base/ddot","0Bb":"@stdlib/blas-base-ddot","1z2":"@stdlib/blas/base/dgemm","1z3":"@stdlib/blas-base-dgemm","1yY":"@stdlib/blas/base/dgemv","1yZ":"@stdlib/blas-base-dgemv","1uU":"@stdlib/blas/base/dger","1uV":"@stdlib/blas-base-dger","1wy":"@stdlib/blas/base/diagonal-type-enum2str","1wz":"@stdlib/blas-base-diagonal-type-enum2str","1x0":"@stdlib/blas/base/diagonal-type-resolve-enum","1x1":"@stdlib/blas-base-diagonal-type-resolve-enum","1x2":"@stdlib/blas/base/diagonal-type-resolve-str","1x3":"@stdlib/blas-base-diagonal-type-resolve-str","1x4":"@stdlib/blas/base/diagonal-type-str2enum","1x5":"@stdlib/blas-base-diagonal-type-str2enum","1vk":"@stdlib/blas/base/diagonal-types","1vl":"@stdlib/blas-base-diagonal-types","0Bc":"@stdlib/blas/base/dnrm2","0Bd":"@stdlib/blas-base-dnrm2","1uW":"@stdlib/blas/base/drot","1uX":"@stdlib/blas-base-drot","1aM":"@stdlib/blas/base/drotg","1aN":"@stdlib/blas-base-drotg","1x6":"@stdlib/blas/base/drotm","1x7":"@stdlib/blas-base-drotm","0Be":"@stdlib/blas/base/dscal","0Bf":"@stdlib/blas-base-dscal","0Bg":"@stdlib/blas/base/dsdot","0Bh":"@stdlib/blas-base-dsdot","1x8":"@stdlib/blas/base/dspmv","1x9":"@stdlib/blas-base-dspmv","0Bi":"@stdlib/blas/base/dswap","0Bj":"@stdlib/blas-base-dswap","1xA":"@stdlib/blas/base/dsymv","1xB":"@stdlib/blas-base-dsymv","1ya":"@stdlib/blas/base/dsyr","1yb":"@stdlib/blas-base-dsyr","1yc":"@stdlib/blas/base/dsyr2","1yd":"@stdlib/blas-base-dsyr2","1ye":"@stdlib/blas/base/dtrmv","1yf":"@stdlib/blas-base-dtrmv","1z4":"@stdlib/blas/base/dtrsv","1z5":"@stdlib/blas-base-dtrsv","2dG":"@stdlib/blas/base/dzasum","2dH":"@stdlib/blas-base-dzasum","1xa":"@stdlib/blas/base/dznrm2","1xb":"@stdlib/blas-base-dznrm2","0Bk":"@stdlib/blas/base/gasum","0Bl":"@stdlib/blas-base-gasum","0Bm":"@stdlib/blas/base/gaxpy","0Bn":"@stdlib/blas-base-gaxpy","0Bo":"@stdlib/blas/base/gcopy","0Bp":"@stdlib/blas-base-gcopy","0Bq":"@stdlib/blas/base/gdot","0Br":"@stdlib/blas-base-gdot","2Sm":"@stdlib/blas/base/ggemm","2Sn":"@stdlib/blas-base-ggemm","2So":"@stdlib/blas/base/ggemv","2Sp":"@stdlib/blas-base-ggemv","2NO":"@stdlib/blas/base/gger","2NP":"@stdlib/blas-base-gger","0Bs":"@stdlib/blas/base/gnrm2","0Bt":"@stdlib/blas-base-gnrm2","0Bu":"@stdlib/blas/base/gscal","0Bv":"@stdlib/blas-base-gscal","0Bw":"@stdlib/blas/base/gswap","0Bx":"@stdlib/blas-base-gswap","2Sq":"@stdlib/blas/base/gsyr","2Sr":"@stdlib/blas-base-gsyr","1uY":"@stdlib/blas/base/idamax","1uZ":"@stdlib/blas-base-idamax","2NQ":"@stdlib/blas/base/igamax","2NR":"@stdlib/blas-base-igamax","1ua":"@stdlib/blas/base/isamax","1ub":"@stdlib/blas-base-isamax","1vm":"@stdlib/blas/base/layout-enum2str","1vn":"@stdlib/blas-base-layout-enum2str","1vo":"@stdlib/blas/base/layout-resolve-enum","1vp":"@stdlib/blas-base-layout-resolve-enum","1vq":"@stdlib/blas/base/layout-resolve-str","1vr":"@stdlib/blas-base-layout-resolve-str","1vs":"@stdlib/blas/base/layout-str2enum","1vt":"@stdlib/blas-base-layout-str2enum","1vu":"@stdlib/blas/base/layouts","1vv":"@stdlib/blas-base-layouts","2NS":"@stdlib/blas/base/matrix-orientation-enum2str","2NT":"@stdlib/blas-base-matrix-orientation-enum2str","2NU":"@stdlib/blas/base/matrix-orientation-resolve-enum","2NV":"@stdlib/blas-base-matrix-orientation-resolve-enum","2NW":"@stdlib/blas/base/matrix-orientation-resolve-str","2NX":"@stdlib/blas-base-matrix-orientation-resolve-str","2NY":"@stdlib/blas/base/matrix-orientation-str2enum","2NZ":"@stdlib/blas-base-matrix-orientation-str2enum","2Na":"@stdlib/blas/base/matrix-orientations","2Nb":"@stdlib/blas-base-matrix-orientations","1xC":"@stdlib/blas/base/matrix-triangle-enum2str","1xD":"@stdlib/blas-base-matrix-triangle-enum2str","1xE":"@stdlib/blas/base/matrix-triangle-resolve-enum","1xF":"@stdlib/blas-base-matrix-triangle-resolve-enum","1xG":"@stdlib/blas/base/matrix-triangle-resolve-str","1xH":"@stdlib/blas-base-matrix-triangle-resolve-str","1xI":"@stdlib/blas/base/matrix-triangle-str2enum","1xJ":"@stdlib/blas-base-matrix-triangle-str2enum","1vw":"@stdlib/blas/base/matrix-triangles","1vx":"@stdlib/blas-base-matrix-triangles","2dI":"@stdlib/blas/base/ndarray/caxpy","2dJ":"@stdlib/blas-base-ndarray-caxpy","2dK":"@stdlib/blas/base/ndarray/ccopy","2dL":"@stdlib/blas-base-ndarray-ccopy","2dM":"@stdlib/blas/base/ndarray/cscal","2dN":"@stdlib/blas-base-ndarray-cscal","2dO":"@stdlib/blas/base/ndarray/csscal","2dP":"@stdlib/blas-base-ndarray-csscal","2dQ":"@stdlib/blas/base/ndarray/cswap","2dR":"@stdlib/blas-base-ndarray-cswap","2dS":"@stdlib/blas/base/ndarray/dasum","2dT":"@stdlib/blas-base-ndarray-dasum","2dU":"@stdlib/blas/base/ndarray/daxpy","2dV":"@stdlib/blas-base-ndarray-daxpy","2dW":"@stdlib/blas/base/ndarray/dcopy","2dX":"@stdlib/blas-base-ndarray-dcopy","2Ss":"@stdlib/blas/base/ndarray/ddot","2St":"@stdlib/blas-base-ndarray-ddot","2dY":"@stdlib/blas/base/ndarray/dnrm2","2dZ":"@stdlib/blas-base-ndarray-dnrm2","2da":"@stdlib/blas/base/ndarray/dscal","2db":"@stdlib/blas-base-ndarray-dscal","2dc":"@stdlib/blas/base/ndarray/dsdot","2dd":"@stdlib/blas-base-ndarray-dsdot","2de":"@stdlib/blas/base/ndarray/dswap","2df":"@stdlib/blas-base-ndarray-dswap","2dg":"@stdlib/blas/base/ndarray/dzasum","2dh":"@stdlib/blas-base-ndarray-dzasum","2di":"@stdlib/blas/base/ndarray/dznrm2","2dj":"@stdlib/blas-base-ndarray-dznrm2","2dk":"@stdlib/blas/base/ndarray/gasum","2dl":"@stdlib/blas-base-ndarray-gasum","2dm":"@stdlib/blas/base/ndarray/gaxpy","2dn":"@stdlib/blas-base-ndarray-gaxpy","2do":"@stdlib/blas/base/ndarray/gcopy","2dp":"@stdlib/blas-base-ndarray-gcopy","2Su":"@stdlib/blas/base/ndarray/gdot","2Sv":"@stdlib/blas-base-ndarray-gdot","2dq":"@stdlib/blas/base/ndarray/gnrm2","2dr":"@stdlib/blas-base-ndarray-gnrm2","2ds":"@stdlib/blas/base/ndarray/gscal","2dt":"@stdlib/blas-base-ndarray-gscal","2du":"@stdlib/blas/base/ndarray/gswap","2dv":"@stdlib/blas-base-ndarray-gswap","2dw":"@stdlib/blas/base/ndarray/idamax","2dx":"@stdlib/blas-base-ndarray-idamax","2us":"@stdlib/blas/base/ndarray/igamax","2ut":"@stdlib/blas-base-ndarray-igamax","2uu":"@stdlib/blas/base/ndarray/isamax","2uv":"@stdlib/blas-base-ndarray-isamax","2dy":"@stdlib/blas/base/ndarray","2dz":"@stdlib/blas-base-ndarray","2e0":"@stdlib/blas/base/ndarray/sasum","2e1":"@stdlib/blas-base-ndarray-sasum","2e2":"@stdlib/blas/base/ndarray/saxpy","2e3":"@stdlib/blas-base-ndarray-saxpy","2e4":"@stdlib/blas/base/ndarray/scasum","2e5":"@stdlib/blas-base-ndarray-scasum","2e6":"@stdlib/blas/base/ndarray/scnrm2","2e7":"@stdlib/blas-base-ndarray-scnrm2","2e8":"@stdlib/blas/base/ndarray/scopy","2e9":"@stdlib/blas-base-ndarray-scopy","2Sw":"@stdlib/blas/base/ndarray/sdot","2Sx":"@stdlib/blas-base-ndarray-sdot","2eA":"@stdlib/blas/base/ndarray/sdsdot","2eB":"@stdlib/blas-base-ndarray-sdsdot","2eC":"@stdlib/blas/base/ndarray/snrm2","2eD":"@stdlib/blas-base-ndarray-snrm2","2eE":"@stdlib/blas/base/ndarray/sscal","2eF":"@stdlib/blas-base-ndarray-sscal","2eG":"@stdlib/blas/base/ndarray/sswap","2eH":"@stdlib/blas-base-ndarray-sswap","2eI":"@stdlib/blas/base/ndarray/zaxpy","2eJ":"@stdlib/blas-base-ndarray-zaxpy","2eK":"@stdlib/blas/base/ndarray/zcopy","2eL":"@stdlib/blas-base-ndarray-zcopy","2eM":"@stdlib/blas/base/ndarray/zdscal","2eN":"@stdlib/blas-base-ndarray-zdscal","2eO":"@stdlib/blas/base/ndarray/zscal","2eP":"@stdlib/blas-base-ndarray-zscal","2eQ":"@stdlib/blas/base/ndarray/zswap","2eR":"@stdlib/blas-base-ndarray-zswap","1xK":"@stdlib/blas/base/operation-side-enum2str","1xL":"@stdlib/blas-base-operation-side-enum2str","1xM":"@stdlib/blas/base/operation-side-resolve-enum","1xN":"@stdlib/blas-base-operation-side-resolve-enum","1xO":"@stdlib/blas/base/operation-side-resolve-str","1xP":"@stdlib/blas-base-operation-side-resolve-str","1xQ":"@stdlib/blas/base/operation-side-str2enum","1xR":"@stdlib/blas-base-operation-side-str2enum","1vy":"@stdlib/blas/base/operation-sides","1vz":"@stdlib/blas-base-operation-sides","0By":"@stdlib/blas/base","0Bz":"@stdlib/blas-base","0C0":"@stdlib/blas/base/sasum","0C1":"@stdlib/blas-base-sasum","0C2":"@stdlib/blas/base/saxpy","0C3":"@stdlib/blas-base-saxpy","1w0":"@stdlib/blas/base/scabs1","1w1":"@stdlib/blas-base-scabs1","1xq":"@stdlib/blas/base/scasum","1xr":"@stdlib/blas-base-scasum","1wY":"@stdlib/blas/base/scnrm2","1wZ":"@stdlib/blas-base-scnrm2","0C4":"@stdlib/blas/base/scopy","0C5":"@stdlib/blas-base-scopy","0C6":"@stdlib/blas/base/sdot","0C7":"@stdlib/blas-base-sdot","0C8":"@stdlib/blas/base/sdsdot","0C9":"@stdlib/blas-base-sdsdot","1z6":"@stdlib/blas/base/sgemm","1z7":"@stdlib/blas-base-sgemm","1yg":"@stdlib/blas/base/sgemv","1yh":"@stdlib/blas-base-sgemv","2Nc":"@stdlib/blas/base/sger","2Nd":"@stdlib/blas-base-sger","1uc":"@stdlib/blas/base/shared","1ud":"@stdlib/blas-base-shared","0CA":"@stdlib/blas/base/snrm2","0CB":"@stdlib/blas-base-snrm2","1ue":"@stdlib/blas/base/srot","1uf":"@stdlib/blas-base-srot","1aO":"@stdlib/blas/base/srotg","1aP":"@stdlib/blas-base-srotg","1wa":"@stdlib/blas/base/srotm","1wb":"@stdlib/blas-base-srotm","0CC":"@stdlib/blas/base/sscal","0CD":"@stdlib/blas-base-sscal","1wc":"@stdlib/blas/base/sspmv","1wd":"@stdlib/blas-base-sspmv","1z8":"@stdlib/blas/base/sspr","1z9":"@stdlib/blas-base-sspr","0CE":"@stdlib/blas/base/sswap","0CF":"@stdlib/blas-base-sswap","1we":"@stdlib/blas/base/ssymv","1wf":"@stdlib/blas-base-ssymv","1yi":"@stdlib/blas/base/ssyr","1yj":"@stdlib/blas-base-ssyr","1yk":"@stdlib/blas/base/ssyr2","1yl":"@stdlib/blas-base-ssyr2","1ym":"@stdlib/blas/base/strmv","1yn":"@stdlib/blas-base-strmv","1zA":"@stdlib/blas/base/strsv","1zB":"@stdlib/blas-base-strsv","1wg":"@stdlib/blas/base/transpose-operation-enum2str","1wh":"@stdlib/blas-base-transpose-operation-enum2str","1wi":"@stdlib/blas/base/transpose-operation-resolve-enum","1wj":"@stdlib/blas-base-transpose-operation-resolve-enum","1wk":"@stdlib/blas/base/transpose-operation-resolve-str","1wl":"@stdlib/blas-base-transpose-operation-resolve-str","1wm":"@stdlib/blas/base/transpose-operation-str2enum","1wn":"@stdlib/blas-base-transpose-operation-str2enum","1w2":"@stdlib/blas/base/transpose-operations","1w3":"@stdlib/blas-base-transpose-operations","26M":"@stdlib/blas/base/wasm/ccopy","26N":"@stdlib/blas-base-wasm-ccopy","26O":"@stdlib/blas/base/wasm/cscal","26P":"@stdlib/blas-base-wasm-cscal","26Q":"@stdlib/blas/base/wasm/csrot","26R":"@stdlib/blas-base-wasm-csrot","26S":"@stdlib/blas/base/wasm/cswap","26T":"@stdlib/blas-base-wasm-cswap","26U":"@stdlib/blas/base/wasm/dasum","26V":"@stdlib/blas-base-wasm-dasum","26W":"@stdlib/blas/base/wasm/daxpy","26X":"@stdlib/blas-base-wasm-daxpy","26Y":"@stdlib/blas/base/wasm/dcopy","26Z":"@stdlib/blas-base-wasm-dcopy","26a":"@stdlib/blas/base/wasm/ddot","26b":"@stdlib/blas-base-wasm-ddot","26c":"@stdlib/blas/base/wasm/dnrm2","26d":"@stdlib/blas-base-wasm-dnrm2","26e":"@stdlib/blas/base/wasm/drot","26f":"@stdlib/blas-base-wasm-drot","26g":"@stdlib/blas/base/wasm/drotm","26h":"@stdlib/blas-base-wasm-drotm","26i":"@stdlib/blas/base/wasm/dscal","26j":"@stdlib/blas-base-wasm-dscal","2FC":"@stdlib/blas/base/wasm/dsdot","2FD":"@stdlib/blas-base-wasm-dsdot","26k":"@stdlib/blas/base/wasm/dswap","26l":"@stdlib/blas-base-wasm-dswap","2Ne":"@stdlib/blas/base/wasm/dznrm2","2Nf":"@stdlib/blas-base-wasm-dznrm2","26m":"@stdlib/blas/base/wasm/idamax","26n":"@stdlib/blas-base-wasm-idamax","26o":"@stdlib/blas/base/wasm/isamax","26p":"@stdlib/blas-base-wasm-isamax","26q":"@stdlib/blas/base/wasm","26r":"@stdlib/blas-base-wasm","26s":"@stdlib/blas/base/wasm/sasum","26t":"@stdlib/blas-base-wasm-sasum","26u":"@stdlib/blas/base/wasm/saxpy","26v":"@stdlib/blas-base-wasm-saxpy","2Ng":"@stdlib/blas/base/wasm/scasum","2Nh":"@stdlib/blas-base-wasm-scasum","2Ni":"@stdlib/blas/base/wasm/scnrm2","2Nj":"@stdlib/blas-base-wasm-scnrm2","26w":"@stdlib/blas/base/wasm/scopy","26x":"@stdlib/blas-base-wasm-scopy","26y":"@stdlib/blas/base/wasm/sdot","26z":"@stdlib/blas-base-wasm-sdot","2GA":"@stdlib/blas/base/wasm/sdsdot","2GB":"@stdlib/blas-base-wasm-sdsdot","29c":"@stdlib/blas/base/wasm/srotm","29d":"@stdlib/blas-base-wasm-srotm","2Em":"@stdlib/blas/base/wasm/sswap","2En":"@stdlib/blas-base-wasm-sswap","2VI":"@stdlib/blas/base/wasm/zscal","2VJ":"@stdlib/blas-base-wasm-zscal","27A":"@stdlib/blas/base/wasm/zswap","27B":"@stdlib/blas-base-wasm-zswap","1ug":"@stdlib/blas/base/xerbla","1uh":"@stdlib/blas-base-xerbla","1xc":"@stdlib/blas/base/zaxpy","1xd":"@stdlib/blas-base-zaxpy","1t6":"@stdlib/blas/base/zcopy","1t7":"@stdlib/blas-base-zcopy","1xe":"@stdlib/blas/base/zdrot","1xf":"@stdlib/blas-base-zdrot","1wo":"@stdlib/blas/base/zscal","1wp":"@stdlib/blas-base-zscal","1t8":"@stdlib/blas/base/zswap","1t9":"@stdlib/blas-base-zswap","0CG":"@stdlib/blas/ddot","0CH":"@stdlib/blas-ddot","0CI":"@stdlib/blas/dswap","0CJ":"@stdlib/blas-dswap","2eS":"@stdlib/blas/ext/base/capx","2eT":"@stdlib/blas-ext-base-capx","2eU":"@stdlib/blas/ext/base/caxpb","2eV":"@stdlib/blas-ext-base-caxpb","2uw":"@stdlib/blas/ext/base/caxpby","2ux":"@stdlib/blas-ext-base-caxpby","2uy":"@stdlib/blas/ext/base/cdiff","2uz":"@stdlib/blas-ext-base-cdiff","2eW":"@stdlib/blas/ext/base/cindex-of-column","2eX":"@stdlib/blas-ext-base-cindex-of-column","2eY":"@stdlib/blas/ext/base/cindex-of-row","2eZ":"@stdlib/blas-ext-base-cindex-of-row","2ea":"@stdlib/blas/ext/base/cindex-of","2eb":"@stdlib/blas-ext-base-cindex-of","2ec":"@stdlib/blas/ext/base/clast-index-of-row","2ed":"@stdlib/blas-ext-base-clast-index-of-row","2ee":"@stdlib/blas/ext/base/cone-to","2ef":"@stdlib/blas-ext-base-cone-to","2Hs":"@stdlib/blas/ext/base/csum","2Ht":"@stdlib/blas-ext-base-csum","2Hu":"@stdlib/blas/ext/base/csumkbn","2Hv":"@stdlib/blas-ext-base-csumkbn","2eg":"@stdlib/blas/ext/base/cunitspace","2eh":"@stdlib/blas-ext-base-cunitspace","2xe":"@stdlib/blas/ext/base/cwapx","2xf":"@stdlib/blas-ext-base-cwapx","2ei":"@stdlib/blas/ext/base/cwhere","2ej":"@stdlib/blas-ext-base-cwhere","2v0":"@stdlib/blas/ext/base/cwxsa","2v1":"@stdlib/blas-ext-base-cwxsa","2v2":"@stdlib/blas/ext/base/cxpy","2v3":"@stdlib/blas-ext-base-cxpy","2ek":"@stdlib/blas/ext/base/cxsa","2el":"@stdlib/blas-ext-base-cxsa","2xg":"@stdlib/blas/ext/base/cxsy","2xh":"@stdlib/blas-ext-base-cxsy","2em":"@stdlib/blas/ext/base/czero-to","2en":"@stdlib/blas-ext-base-czero-to","2xi":"@stdlib/blas/ext/base/dany","2xj":"@stdlib/blas-ext-base-dany","0CK":"@stdlib/blas/ext/base/dapx","0CL":"@stdlib/blas-ext-base-dapx","0CM":"@stdlib/blas/ext/base/dapxsum","0CN":"@stdlib/blas-ext-base-dapxsum","0CO":"@stdlib/blas/ext/base/dapxsumkbn","0CP":"@stdlib/blas-ext-base-dapxsumkbn","0CQ":"@stdlib/blas/ext/base/dapxsumkbn2","0CR":"@stdlib/blas-ext-base-dapxsumkbn2","0CS":"@stdlib/blas/ext/base/dapxsumors","0CT":"@stdlib/blas-ext-base-dapxsumors","0CU":"@stdlib/blas/ext/base/dapxsumpw","0CV":"@stdlib/blas-ext-base-dapxsumpw","0CW":"@stdlib/blas/ext/base/dasumpw","0CX":"@stdlib/blas-ext-base-dasumpw","2eo":"@stdlib/blas/ext/base/daxpb","2ep":"@stdlib/blas-ext-base-daxpb","2v4":"@stdlib/blas/ext/base/daxpby","2v5":"@stdlib/blas-ext-base-daxpby","2eq":"@stdlib/blas/ext/base/dcartesian-power","2er":"@stdlib/blas-ext-base-dcartesian-power","2es":"@stdlib/blas/ext/base/dcartesian-product","2et":"@stdlib/blas-ext-base-dcartesian-product","2eu":"@stdlib/blas/ext/base/dcartesian-square","2ev":"@stdlib/blas-ext-base-dcartesian-square","2ew":"@stdlib/blas/ext/base/dcircshift","2ex":"@stdlib/blas-ext-base-dcircshift","2v6":"@stdlib/blas/ext/base/dcuany","2v7":"@stdlib/blas-ext-base-dcuany","2v8":"@stdlib/blas/ext/base/dcuevery","2v9":"@stdlib/blas-ext-base-dcuevery","2vA":"@stdlib/blas/ext/base/dcunone","2vB":"@stdlib/blas-ext-base-dcunone","2vC":"@stdlib/blas/ext/base/dcusome","2vD":"@stdlib/blas-ext-base-dcusome","0CY":"@stdlib/blas/ext/base/dcusum","0CZ":"@stdlib/blas-ext-base-dcusum","0Ca":"@stdlib/blas/ext/base/dcusumkbn","0Cb":"@stdlib/blas-ext-base-dcusumkbn","0Cc":"@stdlib/blas/ext/base/dcusumkbn2","0Cd":"@stdlib/blas-ext-base-dcusumkbn2","0Ce":"@stdlib/blas/ext/base/dcusumors","0Cf":"@stdlib/blas-ext-base-dcusumors","0Cg":"@stdlib/blas/ext/base/dcusumpw","0Ch":"@stdlib/blas-ext-base-dcusumpw","2ey":"@stdlib/blas/ext/base/ddiff","2ez":"@stdlib/blas-ext-base-ddiff","2f0":"@stdlib/blas/ext/base/dediff","2f1":"@stdlib/blas-ext-base-dediff","0Ci":"@stdlib/blas/ext/base/dfill","0Cj":"@stdlib/blas-ext-base-dfill","2f2":"@stdlib/blas/ext/base/dindex-of-column","2f3":"@stdlib/blas-ext-base-dindex-of-column","2vE":"@stdlib/blas/ext/base/dindex-of-falsy","2vF":"@stdlib/blas-ext-base-dindex-of-falsy","2f4":"@stdlib/blas/ext/base/dindex-of-row","2f5":"@stdlib/blas-ext-base-dindex-of-row","2vG":"@stdlib/blas/ext/base/dindex-of-truthy","2vH":"@stdlib/blas-ext-base-dindex-of-truthy","2Nk":"@stdlib/blas/ext/base/dindex-of","2Nl":"@stdlib/blas-ext-base-dindex-of","2xk":"@stdlib/blas/ext/base/dlast-index-of-falsy","2xl":"@stdlib/blas-ext-base-dlast-index-of-falsy","2f6":"@stdlib/blas/ext/base/dlast-index-of-row","2f7":"@stdlib/blas-ext-base-dlast-index-of-row","2xm":"@stdlib/blas/ext/base/dlast-index-of-truthy","2xn":"@stdlib/blas-ext-base-dlast-index-of-truthy","2Nm":"@stdlib/blas/ext/base/dlast-index-of","2Nn":"@stdlib/blas-ext-base-dlast-index-of","2Xk":"@stdlib/blas/ext/base/dlinspace","2Xl":"@stdlib/blas-ext-base-dlinspace","2xo":"@stdlib/blas/ext/base/dlogspace","2xp":"@stdlib/blas-ext-base-dlogspace","2vI":"@stdlib/blas/ext/base/dminheap-sift-down","2vJ":"@stdlib/blas-ext-base-dminheap-sift-down","2f8":"@stdlib/blas/ext/base/dmskrev","2f9":"@stdlib/blas-ext-base-dmskrev","0Ck":"@stdlib/blas/ext/base/dnanasum","0Cl":"@stdlib/blas-ext-base-dnanasum","0Cm":"@stdlib/blas/ext/base/dnanasumors","0Cn":"@stdlib/blas-ext-base-dnanasumors","2fA":"@stdlib/blas/ext/base/dnancount","2fB":"@stdlib/blas-ext-base-dnancount","2Gw":"@stdlib/blas/ext/base/dnancusumkbn","2Gx":"@stdlib/blas-ext-base-dnancusumkbn","0Co":"@stdlib/blas/ext/base/dnannsum","0Cp":"@stdlib/blas-ext-base-dnannsum","0Cq":"@stdlib/blas/ext/base/dnannsumkbn","0Cr":"@stdlib/blas-ext-base-dnannsumkbn","0Cs":"@stdlib/blas/ext/base/dnannsumkbn2","0Ct":"@stdlib/blas-ext-base-dnannsumkbn2","0Cu":"@stdlib/blas/ext/base/dnannsumors","0Cv":"@stdlib/blas-ext-base-dnannsumors","0Cw":"@stdlib/blas/ext/base/dnannsumpw","0Cx":"@stdlib/blas-ext-base-dnannsumpw","0Cy":"@stdlib/blas/ext/base/dnansum","0Cz":"@stdlib/blas-ext-base-dnansum","0D0":"@stdlib/blas/ext/base/dnansumkbn","0D1":"@stdlib/blas-ext-base-dnansumkbn","0D2":"@stdlib/blas/ext/base/dnansumkbn2","0D3":"@stdlib/blas-ext-base-dnansumkbn2","0D4":"@stdlib/blas/ext/base/dnansumors","0D5":"@stdlib/blas-ext-base-dnansumors","0D6":"@stdlib/blas/ext/base/dnansumpw","0D7":"@stdlib/blas-ext-base-dnansumpw","2vK":"@stdlib/blas/ext/base/dnone","2vL":"@stdlib/blas-ext-base-dnone","2fC":"@stdlib/blas/ext/base/done-to","2fD":"@stdlib/blas-ext-base-done-to","2vM":"@stdlib/blas/ext/base/dones","2vN":"@stdlib/blas-ext-base-dones","0D8":"@stdlib/blas/ext/base/drev","0D9":"@stdlib/blas-ext-base-drev","2YQ":"@stdlib/blas/ext/base/drrss","2YR":"@stdlib/blas-ext-base-drrss","2fE":"@stdlib/blas/ext/base/drss","2fF":"@stdlib/blas-ext-base-drss","2fG":"@stdlib/blas/ext/base/drssbl","2fH":"@stdlib/blas-ext-base-drssbl","2fI":"@stdlib/blas/ext/base/drsskbn","2fJ":"@stdlib/blas-ext-base-drsskbn","0DA":"@stdlib/blas/ext/base/dsapxsum","0DB":"@stdlib/blas-ext-base-dsapxsum","0DC":"@stdlib/blas/ext/base/dsapxsumpw","0DD":"@stdlib/blas-ext-base-dsapxsumpw","0DE":"@stdlib/blas/ext/base/dsnannsumors","0DF":"@stdlib/blas-ext-base-dsnannsumors","0DG":"@stdlib/blas/ext/base/dsnansum","0DH":"@stdlib/blas-ext-base-dsnansum","0DI":"@stdlib/blas/ext/base/dsnansumors","0DJ":"@stdlib/blas-ext-base-dsnansumors","0DK":"@stdlib/blas/ext/base/dsnansumpw","0DL":"@stdlib/blas-ext-base-dsnansumpw","2vO":"@stdlib/blas/ext/base/dsome","2vP":"@stdlib/blas-ext-base-dsome","2fK":"@stdlib/blas/ext/base/dsort","2fL":"@stdlib/blas-ext-base-dsort","0DM":"@stdlib/blas/ext/base/dsort2hp","0DN":"@stdlib/blas-ext-base-dsort2hp","0DO":"@stdlib/blas/ext/base/dsort2ins","0DP":"@stdlib/blas-ext-base-dsort2ins","0DQ":"@stdlib/blas/ext/base/dsort2sh","0DR":"@stdlib/blas-ext-base-dsort2sh","0DS":"@stdlib/blas/ext/base/dsorthp","0DT":"@stdlib/blas-ext-base-dsorthp","0DU":"@stdlib/blas/ext/base/dsortins","0DV":"@stdlib/blas-ext-base-dsortins","0DW":"@stdlib/blas/ext/base/dsortsh","0DX":"@stdlib/blas-ext-base-dsortsh","0DY":"@stdlib/blas/ext/base/dssum","0DZ":"@stdlib/blas-ext-base-dssum","0Da":"@stdlib/blas/ext/base/dssumors","0Db":"@stdlib/blas-ext-base-dssumors","0Dc":"@stdlib/blas/ext/base/dssumpw","0Dd":"@stdlib/blas-ext-base-dssumpw","0De":"@stdlib/blas/ext/base/dsum","0Df":"@stdlib/blas-ext-base-dsum","0Dg":"@stdlib/blas/ext/base/dsumkbn","0Dh":"@stdlib/blas-ext-base-dsumkbn","0Di":"@stdlib/blas/ext/base/dsumkbn2","0Dj":"@stdlib/blas-ext-base-dsumkbn2","0Dk":"@stdlib/blas/ext/base/dsumors","0Dl":"@stdlib/blas-ext-base-dsumors","0Dm":"@stdlib/blas/ext/base/dsumpw","0Dn":"@stdlib/blas-ext-base-dsumpw","2fM":"@stdlib/blas/ext/base/dunitspace","2fN":"@stdlib/blas-ext-base-dunitspace","2fO":"@stdlib/blas/ext/base/dvander","2fP":"@stdlib/blas-ext-base-dvander","2vQ":"@stdlib/blas/ext/base/dwapx","2vR":"@stdlib/blas-ext-base-dwapx","2fQ":"@stdlib/blas/ext/base/dwhere","2fR":"@stdlib/blas-ext-base-dwhere","2vS":"@stdlib/blas/ext/base/dwxsa","2vT":"@stdlib/blas-ext-base-dwxsa","2xq":"@stdlib/blas/ext/base/dxmy","2xr":"@stdlib/blas-ext-base-dxmy","2vU":"@stdlib/blas/ext/base/dxpy","2vV":"@stdlib/blas-ext-base-dxpy","2fS":"@stdlib/blas/ext/base/dxsa","2fT":"@stdlib/blas-ext-base-dxsa","2xs":"@stdlib/blas/ext/base/dxsy","2xt":"@stdlib/blas-ext-base-dxsy","2fU":"@stdlib/blas/ext/base/dzero-to","2fV":"@stdlib/blas-ext-base-dzero-to","2vW":"@stdlib/blas/ext/base/dzeros","2vX":"@stdlib/blas-ext-base-dzeros","2vY":"@stdlib/blas/ext/base/gany","2vZ":"@stdlib/blas-ext-base-gany","0Do":"@stdlib/blas/ext/base/gapx","0Dp":"@stdlib/blas-ext-base-gapx","0Dq":"@stdlib/blas/ext/base/gapxsum","0Dr":"@stdlib/blas-ext-base-gapxsum","0Ds":"@stdlib/blas/ext/base/gapxsumkbn","0Dt":"@stdlib/blas-ext-base-gapxsumkbn","0Du":"@stdlib/blas/ext/base/gapxsumkbn2","0Dv":"@stdlib/blas-ext-base-gapxsumkbn2","0Dw":"@stdlib/blas/ext/base/gapxsumors","0Dx":"@stdlib/blas-ext-base-gapxsumors","0Dy":"@stdlib/blas/ext/base/gapxsumpw","0Dz":"@stdlib/blas-ext-base-gapxsumpw","0E0":"@stdlib/blas/ext/base/gasumpw","0E1":"@stdlib/blas-ext-base-gasumpw","2fW":"@stdlib/blas/ext/base/gaxpb","2fX":"@stdlib/blas-ext-base-gaxpb","2fY":"@stdlib/blas/ext/base/gaxpby","2fZ":"@stdlib/blas-ext-base-gaxpby","2fa":"@stdlib/blas/ext/base/gcartesian-power","2fb":"@stdlib/blas-ext-base-gcartesian-power","2va":"@stdlib/blas/ext/base/gcartesian-product","2vb":"@stdlib/blas-ext-base-gcartesian-product","2fc":"@stdlib/blas/ext/base/gcartesian-square","2fd":"@stdlib/blas-ext-base-gcartesian-square","2fe":"@stdlib/blas/ext/base/gcircshift","2ff":"@stdlib/blas-ext-base-gcircshift","2fg":"@stdlib/blas/ext/base/gconjoin","2fh":"@stdlib/blas-ext-base-gconjoin","2vc":"@stdlib/blas/ext/base/gcuany","2vd":"@stdlib/blas-ext-base-gcuany","2fi":"@stdlib/blas/ext/base/gcuevery","2fj":"@stdlib/blas-ext-base-gcuevery","2fk":"@stdlib/blas/ext/base/gcunone","2fl":"@stdlib/blas-ext-base-gcunone","2ve":"@stdlib/blas/ext/base/gcusome","2vf":"@stdlib/blas-ext-base-gcusome","0E2":"@stdlib/blas/ext/base/gcusum","0E3":"@stdlib/blas-ext-base-gcusum","0E4":"@stdlib/blas/ext/base/gcusumkbn","0E5":"@stdlib/blas-ext-base-gcusumkbn","0E6":"@stdlib/blas/ext/base/gcusumkbn2","0E7":"@stdlib/blas-ext-base-gcusumkbn2","0E8":"@stdlib/blas/ext/base/gcusumors","0E9":"@stdlib/blas-ext-base-gcusumors","0EA":"@stdlib/blas/ext/base/gcusumpw","0EB":"@stdlib/blas-ext-base-gcusumpw","2fm":"@stdlib/blas/ext/base/gdiff","2fn":"@stdlib/blas-ext-base-gdiff","2vg":"@stdlib/blas/ext/base/gediff","2vh":"@stdlib/blas-ext-base-gediff","2vi":"@stdlib/blas/ext/base/gevery","2vj":"@stdlib/blas-ext-base-gevery","0EC":"@stdlib/blas/ext/base/gfill-by","0ED":"@stdlib/blas-ext-base-gfill-by","0EE":"@stdlib/blas/ext/base/gfill","0EF":"@stdlib/blas-ext-base-gfill","2Sy":"@stdlib/blas/ext/base/gfind-index","2Sz":"@stdlib/blas-ext-base-gfind-index","2T0":"@stdlib/blas/ext/base/gfind-last-index","2T1":"@stdlib/blas-ext-base-gfind-last-index","2fo":"@stdlib/blas/ext/base/gindex-of-column","2fp":"@stdlib/blas-ext-base-gindex-of-column","2vk":"@stdlib/blas/ext/base/gindex-of-falsy","2vl":"@stdlib/blas-ext-base-gindex-of-falsy","2W2":"@stdlib/blas/ext/base/gindex-of-row","2W3":"@stdlib/blas-ext-base-gindex-of-row","2vm":"@stdlib/blas/ext/base/gindex-of-truthy","2vn":"@stdlib/blas-ext-base-gindex-of-truthy","2No":"@stdlib/blas/ext/base/gindex-of","2Np":"@stdlib/blas-ext-base-gindex-of","2fq":"@stdlib/blas/ext/base/gjoin-between","2fr":"@stdlib/blas-ext-base-gjoin-between","2Yw":"@stdlib/blas/ext/base/gjoin","2Yx":"@stdlib/blas-ext-base-gjoin","2xu":"@stdlib/blas/ext/base/glast-index-of-falsy","2xv":"@stdlib/blas-ext-base-glast-index-of-falsy","2fs":"@stdlib/blas/ext/base/glast-index-of-row","2ft":"@stdlib/blas-ext-base-glast-index-of-row","2vo":"@stdlib/blas/ext/base/glast-index-of-truthy","2vp":"@stdlib/blas-ext-base-glast-index-of-truthy","2Nq":"@stdlib/blas/ext/base/glast-index-of","2Nr":"@stdlib/blas-ext-base-glast-index-of","2Xm":"@stdlib/blas/ext/base/glinspace","2Xn":"@stdlib/blas-ext-base-glinspace","2xw":"@stdlib/blas/ext/base/glogspace","2xx":"@stdlib/blas-ext-base-glogspace","2vq":"@stdlib/blas/ext/base/gminheap-sift-down","2vr":"@stdlib/blas-ext-base-gminheap-sift-down","2vs":"@stdlib/blas/ext/base/gminheapify","2vt":"@stdlib/blas-ext-base-gminheapify","2fu":"@stdlib/blas/ext/base/gmskrev","2fv":"@stdlib/blas-ext-base-gmskrev","2fw":"@stdlib/blas/ext/base/gnancount","2fx":"@stdlib/blas-ext-base-gnancount","0EG":"@stdlib/blas/ext/base/gnannsumkbn","0EH":"@stdlib/blas-ext-base-gnannsumkbn","2Hw":"@stdlib/blas/ext/base/gnannsumpw","2Hx":"@stdlib/blas-ext-base-gnannsumpw","0EI":"@stdlib/blas/ext/base/gnansum","0EJ":"@stdlib/blas-ext-base-gnansum","0EK":"@stdlib/blas/ext/base/gnansumkbn","0EL":"@stdlib/blas-ext-base-gnansumkbn","0EM":"@stdlib/blas/ext/base/gnansumkbn2","0EN":"@stdlib/blas-ext-base-gnansumkbn2","0EO":"@stdlib/blas/ext/base/gnansumors","0EP":"@stdlib/blas-ext-base-gnansumors","0EQ":"@stdlib/blas/ext/base/gnansumpw","0ER":"@stdlib/blas-ext-base-gnansumpw","2vu":"@stdlib/blas/ext/base/gnone","2vv":"@stdlib/blas-ext-base-gnone","2fy":"@stdlib/blas/ext/base/gone-to","2fz":"@stdlib/blas-ext-base-gone-to","2g0":"@stdlib/blas/ext/base/greplicate","2g1":"@stdlib/blas-ext-base-greplicate","0ES":"@stdlib/blas/ext/base/grev","0ET":"@stdlib/blas-ext-base-grev","2vw":"@stdlib/blas/ext/base/gsome","2vx":"@stdlib/blas-ext-base-gsome","2g2":"@stdlib/blas/ext/base/gsort","2g3":"@stdlib/blas-ext-base-gsort","0EU":"@stdlib/blas/ext/base/gsort2hp","0EV":"@stdlib/blas-ext-base-gsort2hp","0EW":"@stdlib/blas/ext/base/gsort2ins","0EX":"@stdlib/blas-ext-base-gsort2ins","0EY":"@stdlib/blas/ext/base/gsort2sh","0EZ":"@stdlib/blas-ext-base-gsort2sh","0Ea":"@stdlib/blas/ext/base/gsorthp","0Eb":"@stdlib/blas-ext-base-gsorthp","0Ec":"@stdlib/blas/ext/base/gsortins","0Ed":"@stdlib/blas-ext-base-gsortins","0Ee":"@stdlib/blas/ext/base/gsortsh","0Ef":"@stdlib/blas-ext-base-gsortsh","0Eg":"@stdlib/blas/ext/base/gsum","0Eh":"@stdlib/blas-ext-base-gsum","0Ei":"@stdlib/blas/ext/base/gsumkbn","0Ej":"@stdlib/blas-ext-base-gsumkbn","0Ek":"@stdlib/blas/ext/base/gsumkbn2","0El":"@stdlib/blas-ext-base-gsumkbn2","0Em":"@stdlib/blas/ext/base/gsumors","0En":"@stdlib/blas-ext-base-gsumors","0Eo":"@stdlib/blas/ext/base/gsumpw","0Ep":"@stdlib/blas-ext-base-gsumpw","2g4":"@stdlib/blas/ext/base/gunitspace","2g5":"@stdlib/blas-ext-base-gunitspace","2g6":"@stdlib/blas/ext/base/gvander","2g7":"@stdlib/blas-ext-base-gvander","2vy":"@stdlib/blas/ext/base/gwapx","2vz":"@stdlib/blas-ext-base-gwapx","2xy":"@stdlib/blas/ext/base/gwax","2xz":"@stdlib/blas-ext-base-gwax","2y0":"@stdlib/blas/ext/base/gwaxpb","2y1":"@stdlib/blas-ext-base-gwaxpb","2g8":"@stdlib/blas/ext/base/gwhere","2g9":"@stdlib/blas-ext-base-gwhere","2y2":"@stdlib/blas/ext/base/gwxpy","2y3":"@stdlib/blas-ext-base-gwxpy","2w0":"@stdlib/blas/ext/base/gwxsa","2w1":"@stdlib/blas-ext-base-gwxsa","2y4":"@stdlib/blas/ext/base/gwxsy","2y5":"@stdlib/blas-ext-base-gwxsy","2y6":"@stdlib/blas/ext/base/gxmy","2y7":"@stdlib/blas-ext-base-gxmy","2w2":"@stdlib/blas/ext/base/gxpy","2w3":"@stdlib/blas-ext-base-gxpy","2gA":"@stdlib/blas/ext/base/gxsa","2gB":"@stdlib/blas-ext-base-gxsa","2y8":"@stdlib/blas/ext/base/gxsy","2y9":"@stdlib/blas-ext-base-gxsy","2gC":"@stdlib/blas/ext/base/gzero-to","2gD":"@stdlib/blas-ext-base-gzero-to","2gE":"@stdlib/blas/ext/base/ndarray/caxpb","2gF":"@stdlib/blas-ext-base-ndarray-caxpb","2w4":"@stdlib/blas/ext/base/ndarray/caxpby","2w5":"@stdlib/blas-ext-base-ndarray-caxpby","2gG":"@stdlib/blas/ext/base/ndarray/cindex-of","2gH":"@stdlib/blas-ext-base-ndarray-cindex-of","2gI":"@stdlib/blas/ext/base/ndarray/cone-to","2gJ":"@stdlib/blas-ext-base-ndarray-cone-to","2Hy":"@stdlib/blas/ext/base/ndarray/csum","2Hz":"@stdlib/blas-ext-base-ndarray-csum","2Yy":"@stdlib/blas/ext/base/ndarray/csumkbn","2Yz":"@stdlib/blas-ext-base-ndarray-csumkbn","2gK":"@stdlib/blas/ext/base/ndarray/cunitspace","2gL":"@stdlib/blas-ext-base-ndarray-cunitspace","2yA":"@stdlib/blas/ext/base/ndarray/cxpy","2yB":"@stdlib/blas-ext-base-ndarray-cxpy","2gM":"@stdlib/blas/ext/base/ndarray/cxsa","2gN":"@stdlib/blas-ext-base-ndarray-cxsa","2yC":"@stdlib/blas/ext/base/ndarray/cxsy","2yD":"@stdlib/blas-ext-base-ndarray-cxsy","2gO":"@stdlib/blas/ext/base/ndarray/czero-to","2gP":"@stdlib/blas-ext-base-ndarray-czero-to","2gQ":"@stdlib/blas/ext/base/ndarray/daxpb","2gR":"@stdlib/blas-ext-base-ndarray-daxpb","2w6":"@stdlib/blas/ext/base/ndarray/daxpby","2w7":"@stdlib/blas-ext-base-ndarray-daxpby","2gS":"@stdlib/blas/ext/base/ndarray/dcircshift","2gT":"@stdlib/blas-ext-base-ndarray-dcircshift","2FE":"@stdlib/blas/ext/base/ndarray/dcusum","2FF":"@stdlib/blas-ext-base-ndarray-dcusum","2Z0":"@stdlib/blas/ext/base/ndarray/dcusumkbn","2Z1":"@stdlib/blas-ext-base-ndarray-dcusumkbn","2Z2":"@stdlib/blas/ext/base/ndarray/dcusumkbn2","2Z3":"@stdlib/blas-ext-base-ndarray-dcusumkbn2","2gU":"@stdlib/blas/ext/base/ndarray/dcusumors","2gV":"@stdlib/blas-ext-base-ndarray-dcusumors","2gW":"@stdlib/blas/ext/base/ndarray/dcusumpw","2gX":"@stdlib/blas-ext-base-ndarray-dcusumpw","2w8":"@stdlib/blas/ext/base/ndarray/ddiff","2w9":"@stdlib/blas-ext-base-ndarray-ddiff","2wA":"@stdlib/blas/ext/base/ndarray/dindex-of-falsy","2wB":"@stdlib/blas-ext-base-ndarray-dindex-of-falsy","2Ns":"@stdlib/blas/ext/base/ndarray/dindex-of","2Nt":"@stdlib/blas-ext-base-ndarray-dindex-of","2Nu":"@stdlib/blas/ext/base/ndarray/dlast-index-of","2Nv":"@stdlib/blas-ext-base-ndarray-dlast-index-of","2Xo":"@stdlib/blas/ext/base/ndarray/dlinspace","2Xp":"@stdlib/blas-ext-base-ndarray-dlinspace","2gY":"@stdlib/blas/ext/base/ndarray/dnansum","2gZ":"@stdlib/blas-ext-base-ndarray-dnansum","2ga":"@stdlib/blas/ext/base/ndarray/dnansumkbn","2gb":"@stdlib/blas-ext-base-ndarray-dnansumkbn","2gc":"@stdlib/blas/ext/base/ndarray/dnansumkbn2","2gd":"@stdlib/blas-ext-base-ndarray-dnansumkbn2","2ge":"@stdlib/blas/ext/base/ndarray/dnansumors","2gf":"@stdlib/blas-ext-base-ndarray-dnansumors","2gg":"@stdlib/blas/ext/base/ndarray/dnansumpw","2gh":"@stdlib/blas-ext-base-ndarray-dnansumpw","2gi":"@stdlib/blas/ext/base/ndarray/done-to","2gj":"@stdlib/blas-ext-base-ndarray-done-to","2gk":"@stdlib/blas/ext/base/ndarray/dsort","2gl":"@stdlib/blas-ext-base-ndarray-dsort","2T2":"@stdlib/blas/ext/base/ndarray/dsorthp","2T3":"@stdlib/blas-ext-base-ndarray-dsorthp","2gm":"@stdlib/blas/ext/base/ndarray/dsortins","2gn":"@stdlib/blas-ext-base-ndarray-dsortins","2go":"@stdlib/blas/ext/base/ndarray/dsortsh","2gp":"@stdlib/blas-ext-base-ndarray-dsortsh","2FG":"@stdlib/blas/ext/base/ndarray/dsum","2FH":"@stdlib/blas-ext-base-ndarray-dsum","2Z4":"@stdlib/blas/ext/base/ndarray/dsumkbn","2Z5":"@stdlib/blas-ext-base-ndarray-dsumkbn","2Z6":"@stdlib/blas/ext/base/ndarray/dsumkbn2","2Z7":"@stdlib/blas-ext-base-ndarray-dsumkbn2","2gq":"@stdlib/blas/ext/base/ndarray/dsumors","2gr":"@stdlib/blas-ext-base-ndarray-dsumors","2gs":"@stdlib/blas/ext/base/ndarray/dsumpw","2gt":"@stdlib/blas-ext-base-ndarray-dsumpw","2gu":"@stdlib/blas/ext/base/ndarray/dunitspace","2gv":"@stdlib/blas-ext-base-ndarray-dunitspace","2yE":"@stdlib/blas/ext/base/ndarray/dxpy","2yF":"@stdlib/blas-ext-base-ndarray-dxpy","2gw":"@stdlib/blas/ext/base/ndarray/dxsa","2gx":"@stdlib/blas-ext-base-ndarray-dxsa","2yG":"@stdlib/blas/ext/base/ndarray/dxsy","2yH":"@stdlib/blas-ext-base-ndarray-dxsy","2gy":"@stdlib/blas/ext/base/ndarray/dzero-to","2gz":"@stdlib/blas-ext-base-ndarray-dzero-to","2h0":"@stdlib/blas/ext/base/ndarray/gaxpb","2h1":"@stdlib/blas-ext-base-ndarray-gaxpb","2wC":"@stdlib/blas/ext/base/ndarray/gaxpby","2wD":"@stdlib/blas-ext-base-ndarray-gaxpby","2h2":"@stdlib/blas/ext/base/ndarray/gcircshift","2h3":"@stdlib/blas-ext-base-ndarray-gcircshift","2FI":"@stdlib/blas/ext/base/ndarray/gcusum","2FJ":"@stdlib/blas-ext-base-ndarray-gcusum","2h4":"@stdlib/blas/ext/base/ndarray/gcusumkbn","2h5":"@stdlib/blas-ext-base-ndarray-gcusumkbn","2h6":"@stdlib/blas/ext/base/ndarray/gcusumkbn2","2h7":"@stdlib/blas-ext-base-ndarray-gcusumkbn2","2h8":"@stdlib/blas/ext/base/ndarray/gcusumors","2h9":"@stdlib/blas-ext-base-ndarray-gcusumors","2hA":"@stdlib/blas/ext/base/ndarray/gcusumpw","2hB":"@stdlib/blas-ext-base-ndarray-gcusumpw","2T4":"@stdlib/blas/ext/base/ndarray/gfind-index","2T5":"@stdlib/blas-ext-base-ndarray-gfind-index","2T6":"@stdlib/blas/ext/base/ndarray/gfind-last-index","2T7":"@stdlib/blas-ext-base-ndarray-gfind-last-index","2wE":"@stdlib/blas/ext/base/ndarray/gindex-of-falsy","2wF":"@stdlib/blas-ext-base-ndarray-gindex-of-falsy","2wG":"@stdlib/blas/ext/base/ndarray/gindex-of-truthy","2wH":"@stdlib/blas-ext-base-ndarray-gindex-of-truthy","2Nw":"@stdlib/blas/ext/base/ndarray/gindex-of","2Nx":"@stdlib/blas-ext-base-ndarray-gindex-of","2hC":"@stdlib/blas/ext/base/ndarray/gjoin-between","2hD":"@stdlib/blas-ext-base-ndarray-gjoin-between","2Z8":"@stdlib/blas/ext/base/ndarray/gjoin","2Z9":"@stdlib/blas-ext-base-ndarray-gjoin","2Ny":"@stdlib/blas/ext/base/ndarray/glast-index-of","2Nz":"@stdlib/blas-ext-base-ndarray-glast-index-of","2Xq":"@stdlib/blas/ext/base/ndarray/glinspace","2Xr":"@stdlib/blas-ext-base-ndarray-glinspace","2hE":"@stdlib/blas/ext/base/ndarray/gnansum","2hF":"@stdlib/blas-ext-base-ndarray-gnansum","2hG":"@stdlib/blas/ext/base/ndarray/gnansumkbn","2hH":"@stdlib/blas-ext-base-ndarray-gnansumkbn","2hI":"@stdlib/blas/ext/base/ndarray/gnansumkbn2","2hJ":"@stdlib/blas-ext-base-ndarray-gnansumkbn2","2hK":"@stdlib/blas/ext/base/ndarray/gnansumors","2hL":"@stdlib/blas-ext-base-ndarray-gnansumors","2hM":"@stdlib/blas/ext/base/ndarray/gnansumpw","2hN":"@stdlib/blas-ext-base-ndarray-gnansumpw","2hO":"@stdlib/blas/ext/base/ndarray/gone-to","2hP":"@stdlib/blas-ext-base-ndarray-gone-to","2hQ":"@stdlib/blas/ext/base/ndarray/gsort","2hR":"@stdlib/blas-ext-base-ndarray-gsort","2T8":"@stdlib/blas/ext/base/ndarray/gsorthp","2T9":"@stdlib/blas-ext-base-ndarray-gsorthp","2FK":"@stdlib/blas/ext/base/ndarray/gsum","2FL":"@stdlib/blas-ext-base-ndarray-gsum","2ZA":"@stdlib/blas/ext/base/ndarray/gsumkbn","2ZB":"@stdlib/blas-ext-base-ndarray-gsumkbn","2ZC":"@stdlib/blas/ext/base/ndarray/gsumkbn2","2ZD":"@stdlib/blas-ext-base-ndarray-gsumkbn2","2hS":"@stdlib/blas/ext/base/ndarray/gsumors","2hT":"@stdlib/blas-ext-base-ndarray-gsumors","2hU":"@stdlib/blas/ext/base/ndarray/gsumpw","2hV":"@stdlib/blas-ext-base-ndarray-gsumpw","2hW":"@stdlib/blas/ext/base/ndarray/gunitspace","2hX":"@stdlib/blas-ext-base-ndarray-gunitspace","2yI":"@stdlib/blas/ext/base/ndarray/gxpy","2yJ":"@stdlib/blas-ext-base-ndarray-gxpy","2wI":"@stdlib/blas/ext/base/ndarray/gxsa","2wJ":"@stdlib/blas-ext-base-ndarray-gxsa","2yK":"@stdlib/blas/ext/base/ndarray/gxsy","2yL":"@stdlib/blas-ext-base-ndarray-gxsy","2hY":"@stdlib/blas/ext/base/ndarray/gzero-to","2hZ":"@stdlib/blas-ext-base-ndarray-gzero-to","2FM":"@stdlib/blas/ext/base/ndarray","2FN":"@stdlib/blas-ext-base-ndarray","2ha":"@stdlib/blas/ext/base/ndarray/saxpb","2hb":"@stdlib/blas-ext-base-ndarray-saxpb","2wK":"@stdlib/blas/ext/base/ndarray/saxpby","2wL":"@stdlib/blas-ext-base-ndarray-saxpby","2hc":"@stdlib/blas/ext/base/ndarray/scircshift","2hd":"@stdlib/blas-ext-base-ndarray-scircshift","2wM":"@stdlib/blas/ext/base/ndarray/scunone","2wN":"@stdlib/blas-ext-base-ndarray-scunone","2FO":"@stdlib/blas/ext/base/ndarray/scusum","2FP":"@stdlib/blas-ext-base-ndarray-scusum","2ZE":"@stdlib/blas/ext/base/ndarray/scusumkbn","2ZF":"@stdlib/blas-ext-base-ndarray-scusumkbn","2ZG":"@stdlib/blas/ext/base/ndarray/scusumkbn2","2ZH":"@stdlib/blas-ext-base-ndarray-scusumkbn2","2he":"@stdlib/blas/ext/base/ndarray/scusumors","2hf":"@stdlib/blas-ext-base-ndarray-scusumors","2O0":"@stdlib/blas/ext/base/ndarray/sindex-of","2O1":"@stdlib/blas-ext-base-ndarray-sindex-of","2O2":"@stdlib/blas/ext/base/ndarray/slast-index-of","2O3":"@stdlib/blas-ext-base-ndarray-slast-index-of","2Xs":"@stdlib/blas/ext/base/ndarray/slinspace","2Xt":"@stdlib/blas-ext-base-ndarray-slinspace","2hg":"@stdlib/blas/ext/base/ndarray/snansum","2hh":"@stdlib/blas-ext-base-ndarray-snansum","2hi":"@stdlib/blas/ext/base/ndarray/snansumkbn","2hj":"@stdlib/blas-ext-base-ndarray-snansumkbn","2hk":"@stdlib/blas/ext/base/ndarray/snansumkbn2","2hl":"@stdlib/blas-ext-base-ndarray-snansumkbn2","2hm":"@stdlib/blas/ext/base/ndarray/snansumors","2hn":"@stdlib/blas-ext-base-ndarray-snansumors","2ho":"@stdlib/blas/ext/base/ndarray/snansumpw","2hp":"@stdlib/blas-ext-base-ndarray-snansumpw","2hq":"@stdlib/blas/ext/base/ndarray/sone-to","2hr":"@stdlib/blas-ext-base-ndarray-sone-to","2hs":"@stdlib/blas/ext/base/ndarray/ssort","2ht":"@stdlib/blas-ext-base-ndarray-ssort","2TA":"@stdlib/blas/ext/base/ndarray/ssorthp","2TB":"@stdlib/blas-ext-base-ndarray-ssorthp","2FQ":"@stdlib/blas/ext/base/ndarray/ssum","2FR":"@stdlib/blas-ext-base-ndarray-ssum","2ZI":"@stdlib/blas/ext/base/ndarray/ssumkbn","2ZJ":"@stdlib/blas-ext-base-ndarray-ssumkbn","2ZK":"@stdlib/blas/ext/base/ndarray/ssumkbn2","2ZL":"@stdlib/blas-ext-base-ndarray-ssumkbn2","2hu":"@stdlib/blas/ext/base/ndarray/ssumors","2hv":"@stdlib/blas-ext-base-ndarray-ssumors","2hw":"@stdlib/blas/ext/base/ndarray/ssumpw","2hx":"@stdlib/blas-ext-base-ndarray-ssumpw","2hy":"@stdlib/blas/ext/base/ndarray/sunitspace","2hz":"@stdlib/blas-ext-base-ndarray-sunitspace","2yM":"@stdlib/blas/ext/base/ndarray/sxpy","2yN":"@stdlib/blas-ext-base-ndarray-sxpy","2i0":"@stdlib/blas/ext/base/ndarray/sxsa","2i1":"@stdlib/blas-ext-base-ndarray-sxsa","2yO":"@stdlib/blas/ext/base/ndarray/sxsy","2yP":"@stdlib/blas-ext-base-ndarray-sxsy","2i2":"@stdlib/blas/ext/base/ndarray/szero-to","2i3":"@stdlib/blas-ext-base-ndarray-szero-to","2i4":"@stdlib/blas/ext/base/ndarray/zaxpb","2i5":"@stdlib/blas-ext-base-ndarray-zaxpb","2wO":"@stdlib/blas/ext/base/ndarray/zaxpby","2wP":"@stdlib/blas-ext-base-ndarray-zaxpby","2i6":"@stdlib/blas/ext/base/ndarray/zindex-of","2i7":"@stdlib/blas-ext-base-ndarray-zindex-of","2i8":"@stdlib/blas/ext/base/ndarray/zone-to","2i9":"@stdlib/blas-ext-base-ndarray-zone-to","2I0":"@stdlib/blas/ext/base/ndarray/zsum","2I1":"@stdlib/blas-ext-base-ndarray-zsum","2ZM":"@stdlib/blas/ext/base/ndarray/zsumkbn","2ZN":"@stdlib/blas-ext-base-ndarray-zsumkbn","2iA":"@stdlib/blas/ext/base/ndarray/zunitspace","2iB":"@stdlib/blas-ext-base-ndarray-zunitspace","2yQ":"@stdlib/blas/ext/base/ndarray/zxpy","2yR":"@stdlib/blas-ext-base-ndarray-zxpy","2wQ":"@stdlib/blas/ext/base/ndarray/zxsa","2wR":"@stdlib/blas-ext-base-ndarray-zxsa","2yS":"@stdlib/blas/ext/base/ndarray/zxsy","2yT":"@stdlib/blas-ext-base-ndarray-zxsy","2iC":"@stdlib/blas/ext/base/ndarray/zzero-to","2iD":"@stdlib/blas-ext-base-ndarray-zzero-to","0Eq":"@stdlib/blas/ext/base","0Er":"@stdlib/blas-ext-base","0Es":"@stdlib/blas/ext/base/sapx","0Et":"@stdlib/blas-ext-base-sapx","0Eu":"@stdlib/blas/ext/base/sapxsum","0Ev":"@stdlib/blas-ext-base-sapxsum","0Ew":"@stdlib/blas/ext/base/sapxsumkbn","0Ex":"@stdlib/blas-ext-base-sapxsumkbn","0Ey":"@stdlib/blas/ext/base/sapxsumkbn2","0Ez":"@stdlib/blas-ext-base-sapxsumkbn2","0F0":"@stdlib/blas/ext/base/sapxsumors","0F1":"@stdlib/blas-ext-base-sapxsumors","0F2":"@stdlib/blas/ext/base/sapxsumpw","0F3":"@stdlib/blas-ext-base-sapxsumpw","0F4":"@stdlib/blas/ext/base/sasumpw","0F5":"@stdlib/blas-ext-base-sasumpw","2iE":"@stdlib/blas/ext/base/saxpb","2iF":"@stdlib/blas-ext-base-saxpb","2wS":"@stdlib/blas/ext/base/saxpby","2wT":"@stdlib/blas-ext-base-saxpby","2iG":"@stdlib/blas/ext/base/scartesian-power","2iH":"@stdlib/blas-ext-base-scartesian-power","2wU":"@stdlib/blas/ext/base/scartesian-product","2wV":"@stdlib/blas-ext-base-scartesian-product","2iI":"@stdlib/blas/ext/base/scartesian-square","2iJ":"@stdlib/blas-ext-base-scartesian-square","2iK":"@stdlib/blas/ext/base/scircshift","2iL":"@stdlib/blas-ext-base-scircshift","2wW":"@stdlib/blas/ext/base/scuany","2wX":"@stdlib/blas-ext-base-scuany","2wY":"@stdlib/blas/ext/base/scuevery","2wZ":"@stdlib/blas-ext-base-scuevery","2wa":"@stdlib/blas/ext/base/scunone","2wb":"@stdlib/blas-ext-base-scunone","2wc":"@stdlib/blas/ext/base/scusome","2wd":"@stdlib/blas-ext-base-scusome","0F6":"@stdlib/blas/ext/base/scusum","0F7":"@stdlib/blas-ext-base-scusum","0F8":"@stdlib/blas/ext/base/scusumkbn","0F9":"@stdlib/blas-ext-base-scusumkbn","0FA":"@stdlib/blas/ext/base/scusumkbn2","0FB":"@stdlib/blas-ext-base-scusumkbn2","0FC":"@stdlib/blas/ext/base/scusumors","0FD":"@stdlib/blas-ext-base-scusumors","0FE":"@stdlib/blas/ext/base/scusumpw","0FF":"@stdlib/blas-ext-base-scusumpw","2iM":"@stdlib/blas/ext/base/sdiff","2iN":"@stdlib/blas-ext-base-sdiff","0FG":"@stdlib/blas/ext/base/sdsapxsum","0FH":"@stdlib/blas-ext-base-sdsapxsum","0FI":"@stdlib/blas/ext/base/sdsapxsumpw","0FJ":"@stdlib/blas-ext-base-sdsapxsumpw","0FK":"@stdlib/blas/ext/base/sdsnansum","0FL":"@stdlib/blas-ext-base-sdsnansum","0FM":"@stdlib/blas/ext/base/sdsnansumpw","0FN":"@stdlib/blas-ext-base-sdsnansumpw","0FO":"@stdlib/blas/ext/base/sdssum","0FP":"@stdlib/blas-ext-base-sdssum","0FQ":"@stdlib/blas/ext/base/sdssumpw","0FR":"@stdlib/blas-ext-base-sdssumpw","2iO":"@stdlib/blas/ext/base/sediff","2iP":"@stdlib/blas-ext-base-sediff","0FS":"@stdlib/blas/ext/base/sfill","0FT":"@stdlib/blas-ext-base-sfill","2iQ":"@stdlib/blas/ext/base/sindex-of-column","2iR":"@stdlib/blas-ext-base-sindex-of-column","2we":"@stdlib/blas/ext/base/sindex-of-falsy","2wf":"@stdlib/blas-ext-base-sindex-of-falsy","2iS":"@stdlib/blas/ext/base/sindex-of-row","2iT":"@stdlib/blas-ext-base-sindex-of-row","2wg":"@stdlib/blas/ext/base/sindex-of-truthy","2wh":"@stdlib/blas-ext-base-sindex-of-truthy","2O4":"@stdlib/blas/ext/base/sindex-of","2O5":"@stdlib/blas-ext-base-sindex-of","2yU":"@stdlib/blas/ext/base/slast-index-of-falsy","2yV":"@stdlib/blas-ext-base-slast-index-of-falsy","2iU":"@stdlib/blas/ext/base/slast-index-of-row","2iV":"@stdlib/blas-ext-base-slast-index-of-row","2yW":"@stdlib/blas/ext/base/slast-index-of-truthy","2yX":"@stdlib/blas-ext-base-slast-index-of-truthy","2O6":"@stdlib/blas/ext/base/slast-index-of","2O7":"@stdlib/blas-ext-base-slast-index-of","2Xu":"@stdlib/blas/ext/base/slinspace","2Xv":"@stdlib/blas-ext-base-slinspace","2yY":"@stdlib/blas/ext/base/slogspace","2yZ":"@stdlib/blas-ext-base-slogspace","2wi":"@stdlib/blas/ext/base/sminheap-sift-down","2wj":"@stdlib/blas-ext-base-sminheap-sift-down","2wk":"@stdlib/blas/ext/base/smskrev","2wl":"@stdlib/blas-ext-base-smskrev","2iW":"@stdlib/blas/ext/base/snancount","2iX":"@stdlib/blas-ext-base-snancount","0FU":"@stdlib/blas/ext/base/snansum","0FV":"@stdlib/blas-ext-base-snansum","0FW":"@stdlib/blas/ext/base/snansumkbn","0FX":"@stdlib/blas-ext-base-snansumkbn","0FY":"@stdlib/blas/ext/base/snansumkbn2","0FZ":"@stdlib/blas-ext-base-snansumkbn2","0Fa":"@stdlib/blas/ext/base/snansumors","0Fb":"@stdlib/blas-ext-base-snansumors","0Fc":"@stdlib/blas/ext/base/snansumpw","0Fd":"@stdlib/blas-ext-base-snansumpw","2ya":"@stdlib/blas/ext/base/snone","2yb":"@stdlib/blas-ext-base-snone","2iY":"@stdlib/blas/ext/base/sone-to","2iZ":"@stdlib/blas-ext-base-sone-to","2wm":"@stdlib/blas/ext/base/sones","2wn":"@stdlib/blas-ext-base-sones","0Fe":"@stdlib/blas/ext/base/srev","0Ff":"@stdlib/blas-ext-base-srev","2yc":"@stdlib/blas/ext/base/ssome","2yd":"@stdlib/blas-ext-base-ssome","2ia":"@stdlib/blas/ext/base/ssort","2ib":"@stdlib/blas-ext-base-ssort","0Fg":"@stdlib/blas/ext/base/ssort2hp","0Fh":"@stdlib/blas-ext-base-ssort2hp","0Fi":"@stdlib/blas/ext/base/ssort2ins","0Fj":"@stdlib/blas-ext-base-ssort2ins","0Fk":"@stdlib/blas/ext/base/ssort2sh","0Fl":"@stdlib/blas-ext-base-ssort2sh","0Fm":"@stdlib/blas/ext/base/ssorthp","0Fn":"@stdlib/blas-ext-base-ssorthp","0Fo":"@stdlib/blas/ext/base/ssortins","0Fp":"@stdlib/blas-ext-base-ssortins","0Fq":"@stdlib/blas/ext/base/ssortsh","0Fr":"@stdlib/blas-ext-base-ssortsh","0Fs":"@stdlib/blas/ext/base/ssum","0Ft":"@stdlib/blas-ext-base-ssum","0Fu":"@stdlib/blas/ext/base/ssumkbn","0Fv":"@stdlib/blas-ext-base-ssumkbn","0Fw":"@stdlib/blas/ext/base/ssumkbn2","0Fx":"@stdlib/blas-ext-base-ssumkbn2","0Fy":"@stdlib/blas/ext/base/ssumors","0Fz":"@stdlib/blas-ext-base-ssumors","0G0":"@stdlib/blas/ext/base/ssumpw","0G1":"@stdlib/blas-ext-base-ssumpw","2ic":"@stdlib/blas/ext/base/sunitspace","2id":"@stdlib/blas-ext-base-sunitspace","2ie":"@stdlib/blas/ext/base/svander","2if":"@stdlib/blas-ext-base-svander","2wo":"@stdlib/blas/ext/base/swapx","2wp":"@stdlib/blas-ext-base-swapx","2ig":"@stdlib/blas/ext/base/swhere","2ih":"@stdlib/blas-ext-base-swhere","2wq":"@stdlib/blas/ext/base/swxsa","2wr":"@stdlib/blas-ext-base-swxsa","2ye":"@stdlib/blas/ext/base/sxmy","2yf":"@stdlib/blas-ext-base-sxmy","2ws":"@stdlib/blas/ext/base/sxpy","2wt":"@stdlib/blas-ext-base-sxpy","2ii":"@stdlib/blas/ext/base/sxsa","2ij":"@stdlib/blas-ext-base-sxsa","2yg":"@stdlib/blas/ext/base/sxsy","2yh":"@stdlib/blas-ext-base-sxsy","2ik":"@stdlib/blas/ext/base/szero-to","2il":"@stdlib/blas-ext-base-szero-to","2wu":"@stdlib/blas/ext/base/szeros","2wv":"@stdlib/blas-ext-base-szeros","2Gy":"@stdlib/blas/ext/base/wasm/dapx","2Gz":"@stdlib/blas-ext-base-wasm-dapx","29e":"@stdlib/blas/ext/base/wasm/dapxsum","29f":"@stdlib/blas-ext-base-wasm-dapxsum","27C":"@stdlib/blas/ext/base/wasm/dapxsumkbn","27D":"@stdlib/blas-ext-base-wasm-dapxsumkbn","29g":"@stdlib/blas/ext/base/wasm/dapxsumors","29h":"@stdlib/blas-ext-base-wasm-dapxsumors","29i":"@stdlib/blas/ext/base/wasm/dapxsumpw","29j":"@stdlib/blas-ext-base-wasm-dapxsumpw","29k":"@stdlib/blas/ext/base/wasm/dasumpw","29l":"@stdlib/blas-ext-base-wasm-dasumpw","2GC":"@stdlib/blas/ext/base/wasm/dnanasumors","2GD":"@stdlib/blas-ext-base-wasm-dnanasumors","2O8":"@stdlib/blas/ext/base/wasm/dnansumkbn2","2O9":"@stdlib/blas-ext-base-wasm-dnansumkbn2","29m":"@stdlib/blas/ext/base/wasm/dnansumpw","29n":"@stdlib/blas-ext-base-wasm-dnansumpw","27E":"@stdlib/blas/ext/base/wasm","27F":"@stdlib/blas-ext-base-wasm","2GE":"@stdlib/blas/ext/base/wasm/sapxsumkbn","2GF":"@stdlib/blas-ext-base-wasm-sapxsumkbn","2im":"@stdlib/blas/ext/base/zapx","2in":"@stdlib/blas-ext-base-zapx","2io":"@stdlib/blas/ext/base/zaxpb","2ip":"@stdlib/blas-ext-base-zaxpb","2ww":"@stdlib/blas/ext/base/zaxpby","2wx":"@stdlib/blas-ext-base-zaxpby","2iq":"@stdlib/blas/ext/base/zdiff","2ir":"@stdlib/blas-ext-base-zdiff","21e":"@stdlib/blas/ext/base/zfill","21f":"@stdlib/blas-ext-base-zfill","2is":"@stdlib/blas/ext/base/zindex-of-column","2it":"@stdlib/blas-ext-base-zindex-of-column","2iu":"@stdlib/blas/ext/base/zindex-of-row","2iv":"@stdlib/blas-ext-base-zindex-of-row","2iw":"@stdlib/blas/ext/base/zindex-of","2ix":"@stdlib/blas-ext-base-zindex-of","2iy":"@stdlib/blas/ext/base/zlast-index-of-row","2iz":"@stdlib/blas-ext-base-zlast-index-of-row","2j0":"@stdlib/blas/ext/base/znancount","2j1":"@stdlib/blas-ext-base-znancount","2j2":"@stdlib/blas/ext/base/zone-to","2j3":"@stdlib/blas-ext-base-zone-to","2I2":"@stdlib/blas/ext/base/zsum","2I3":"@stdlib/blas-ext-base-zsum","2I4":"@stdlib/blas/ext/base/zsumkbn","2I5":"@stdlib/blas-ext-base-zsumkbn","2j4":"@stdlib/blas/ext/base/zunitspace","2j5":"@stdlib/blas-ext-base-zunitspace","2yi":"@stdlib/blas/ext/base/zwapx","2yj":"@stdlib/blas-ext-base-zwapx","2j6":"@stdlib/blas/ext/base/zwhere","2j7":"@stdlib/blas-ext-base-zwhere","2wy":"@stdlib/blas/ext/base/zwxsa","2wz":"@stdlib/blas-ext-base-zwxsa","2x0":"@stdlib/blas/ext/base/zxpy","2x1":"@stdlib/blas-ext-base-zxpy","2j8":"@stdlib/blas/ext/base/zxsa","2j9":"@stdlib/blas-ext-base-zxsa","2yk":"@stdlib/blas/ext/base/zxsy","2yl":"@stdlib/blas-ext-base-zxsy","2jA":"@stdlib/blas/ext/base/zzero-to","2jB":"@stdlib/blas-ext-base-zzero-to","2jC":"@stdlib/blas/ext/circshift","2jD":"@stdlib/blas-ext-circshift","2FS":"@stdlib/blas/ext/cusum","2FT":"@stdlib/blas-ext-cusum","2TC":"@stdlib/blas/ext/find-index","2TD":"@stdlib/blas-ext-find-index","2TE":"@stdlib/blas/ext/find-last-index","2TF":"@stdlib/blas-ext-find-last-index","2Ro":"@stdlib/blas/ext/index-of","2Rp":"@stdlib/blas-ext-index-of","2jE":"@stdlib/blas/ext/join","2jF":"@stdlib/blas-ext-join","2VK":"@stdlib/blas/ext/last-index-of","2VL":"@stdlib/blas-ext-last-index-of","2YS":"@stdlib/blas/ext/linspace","2YT":"@stdlib/blas-ext-linspace","2jG":"@stdlib/blas/ext/one-to","2jH":"@stdlib/blas-ext-one-to","0G2":"@stdlib/blas/ext","0G3":"@stdlib/blas-ext","2jI":"@stdlib/blas/ext/sort","2jJ":"@stdlib/blas-ext-sort","2WM":"@stdlib/blas/ext/sorthp","2WN":"@stdlib/blas-ext-sorthp","2FU":"@stdlib/blas/ext/sum","2FV":"@stdlib/blas-ext-sum","2jK":"@stdlib/blas/ext/to-sorted","2jL":"@stdlib/blas-ext-to-sorted","2Wm":"@stdlib/blas/ext/to-sortedhp","2Wn":"@stdlib/blas-ext-to-sortedhp","2jM":"@stdlib/blas/ext/unitspace","2jN":"@stdlib/blas-ext-unitspace","2jO":"@stdlib/blas/ext/zero-to","2jP":"@stdlib/blas-ext-zero-to","0G4":"@stdlib/blas/gdot","0G5":"@stdlib/blas-gdot","0G6":"@stdlib/blas/gswap","0G7":"@stdlib/blas-gswap","0G9":"@stdlib/blas","0GA":"@stdlib/blas/sdot","0GB":"@stdlib/blas-sdot","0GC":"@stdlib/blas/sswap","0GD":"@stdlib/blas-sswap","21g":"@stdlib/blas/tools","21h":"@stdlib/blas-tools","21i":"@stdlib/blas/tools/swap-factory","21j":"@stdlib/blas-tools-swap-factory","1aQ":"@stdlib/boolean/ctor","1aR":"@stdlib/boolean-ctor","1aT":"@stdlib/boolean","0GE":"@stdlib/buffer/alloc-unsafe","0GF":"@stdlib/buffer-alloc-unsafe","0GG":"@stdlib/buffer/ctor","0GH":"@stdlib/buffer-ctor","0GI":"@stdlib/buffer/from-array","0GJ":"@stdlib/buffer-from-array","0GK":"@stdlib/buffer/from-arraybuffer","0GL":"@stdlib/buffer-from-arraybuffer","0GM":"@stdlib/buffer/from-buffer","0GN":"@stdlib/buffer-from-buffer","0GO":"@stdlib/buffer/from-string","0GP":"@stdlib/buffer-from-string","0GR":"@stdlib/buffer","0GS":"@stdlib/buffer/reviver","0GT":"@stdlib/buffer-reviver","0GU":"@stdlib/buffer/to-json","0GV":"@stdlib/buffer-to-json","0GW":"@stdlib/cli/ctor","0GX":"@stdlib/cli-ctor","0GZ":"@stdlib/cli","2jQ":"@stdlib/complex/base/assert/is-almost-equal","2jR":"@stdlib/complex-base-assert-is-almost-equal","2jS":"@stdlib/complex/base/assert/is-almost-same-value","2jT":"@stdlib/complex-base-assert-is-almost-same-value","1po":"@stdlib/complex/base/assert","1pp":"@stdlib/complex-base-assert","1aU":"@stdlib/complex/base/cast-return","1aV":"@stdlib/complex-base-cast-return","1aW":"@stdlib/complex/base","1aX":"@stdlib/complex-base","1sa":"@stdlib/complex/base/parse","1sb":"@stdlib/complex-base-parse","0Ga":"@stdlib/complex/base/wrap-function","0Gb":"@stdlib/complex-base-wrap-function","0Gc":"@stdlib/complex/cmplx","0Gd":"@stdlib/complex-cmplx","0Gi":"@stdlib/complex/ctors","0Gj":"@stdlib/complex-ctors","0Gk":"@stdlib/complex/dtype","0Gl":"@stdlib/complex-dtype","0Gm":"@stdlib/complex/dtypes","0Gn":"@stdlib/complex-dtypes","1xs":"@stdlib/complex/float32/base/add","1xt":"@stdlib/complex-float32-base-add","2jU":"@stdlib/complex/float32/base/add3","2jV":"@stdlib/complex-float32-base-add3","2OA":"@stdlib/complex/float32/base/assert/is-almost-equal","2OB":"@stdlib/complex-float32-base-assert-is-almost-equal","2jW":"@stdlib/complex/float32/base/assert/is-almost-same-value","2jX":"@stdlib/complex-float32-base-assert-is-almost-same-value","1ui":"@stdlib/complex/float32/base/assert/is-equal","1uj":"@stdlib/complex-float32-base-assert-is-equal","1uk":"@stdlib/complex/float32/base/assert/is-not-equal","1ul":"@stdlib/complex-float32-base-assert-is-not-equal","1um":"@stdlib/complex/float32/base/assert/is-same-value-zero","1un":"@stdlib/complex-float32-base-assert-is-same-value-zero","1uo":"@stdlib/complex/float32/base/assert/is-same-value","1up":"@stdlib/complex-float32-base-assert-is-same-value","1xu":"@stdlib/complex/float32/base/assert","1xv":"@stdlib/complex-float32-base-assert","29o":"@stdlib/complex/float32/base/identity","29p":"@stdlib/complex-float32-base-identity","2VM":"@stdlib/complex/float32/base/mul-add","2VN":"@stdlib/complex-float32-base-mul-add","1xw":"@stdlib/complex/float32/base/mul","1xx":"@stdlib/complex-float32-base-mul","29q":"@stdlib/complex/float32/base/neg","29r":"@stdlib/complex-float32-base-neg","1xy":"@stdlib/complex/float32/base","1xz":"@stdlib/complex-float32-base","2I6":"@stdlib/complex/float32/base/scale","2I7":"@stdlib/complex-float32-base-scale","29s":"@stdlib/complex/float32/base/sub","29t":"@stdlib/complex-float32-base-sub","1y0":"@stdlib/complex/float32/conj","1y1":"@stdlib/complex-float32-conj","0Go":"@stdlib/complex/float32/ctor","1y2":"@stdlib/complex/float32/imag","1y3":"@stdlib/complex-float32-imag","1uq":"@stdlib/complex/float32","1ur":"@stdlib/complex-float32","1sc":"@stdlib/complex/float32/parse","1y4":"@stdlib/complex/float32/real","1y5":"@stdlib/complex-float32-real","1y6":"@stdlib/complex/float32/reim","1y7":"@stdlib/complex-float32-reim","0H8":"@stdlib/complex/float32/reviver","1y8":"@stdlib/complex/float64/base/add","1y9":"@stdlib/complex-float64-base-add","2jY":"@stdlib/complex/float64/base/add3","2jZ":"@stdlib/complex-float64-base-add3","2OC":"@stdlib/complex/float64/base/assert/is-almost-equal","2OD":"@stdlib/complex-float64-base-assert-is-almost-equal","2ja":"@stdlib/complex/float64/base/assert/is-almost-same-value","2jb":"@stdlib/complex-float64-base-assert-is-almost-same-value","1pY":"@stdlib/complex/float64/base/assert/is-equal","1us":"@stdlib/complex/float64/base/assert/is-not-equal","1ut":"@stdlib/complex-float64-base-assert-is-not-equal","1uu":"@stdlib/complex/float64/base/assert/is-same-value-zero","1uv":"@stdlib/complex-float64-base-assert-is-same-value-zero","1uw":"@stdlib/complex/float64/base/assert/is-same-value","1ux":"@stdlib/complex-float64-base-assert-is-same-value","1yA":"@stdlib/complex/float64/base/assert","1yB":"@stdlib/complex-float64-base-assert","29u":"@stdlib/complex/float64/base/div","29v":"@stdlib/complex-float64-base-div","29w":"@stdlib/complex/float64/base/identity","29x":"@stdlib/complex-float64-base-identity","27G":"@stdlib/complex/float64/base/mul-add","27H":"@stdlib/complex-float64-base-mul-add","1yC":"@stdlib/complex/float64/base/mul","1yD":"@stdlib/complex-float64-base-mul","29y":"@stdlib/complex/float64/base/neg","29z":"@stdlib/complex-float64-base-neg","1yE":"@stdlib/complex/float64/base","1yF":"@stdlib/complex-float64-base","27I":"@stdlib/complex/float64/base/scale","27J":"@stdlib/complex-float64-base-scale","2A0":"@stdlib/complex/float64/base/sub","2A1":"@stdlib/complex-float64-base-sub","1yG":"@stdlib/complex/float64/conj","1yH":"@stdlib/complex-float64-conj","0Gq":"@stdlib/complex/float64/ctor","1yI":"@stdlib/complex/float64/imag","1yJ":"@stdlib/complex-float64-imag","1uy":"@stdlib/complex/float64","1uz":"@stdlib/complex-float64","1se":"@stdlib/complex/float64/parse","1yK":"@stdlib/complex/float64/real","1yL":"@stdlib/complex-float64-real","1yM":"@stdlib/complex/float64/reim","1yN":"@stdlib/complex-float64-reim","0HA":"@stdlib/complex/float64/reviver","0Gx":"@stdlib/complex","0Gy":"@stdlib/complex/promotion-rules","0Gz":"@stdlib/complex-promotion-rules","0HC":"@stdlib/complex/reviver","0HD":"@stdlib/complex-reviver","2A2":"@stdlib/console/log-each-map","2A3":"@stdlib/console-log-each-map","1aY":"@stdlib/console/log-each","1aZ":"@stdlib/console-log-each","1aa":"@stdlib/console/log","1ab":"@stdlib/console-log","1ad":"@stdlib/console","0HE":"@stdlib/constants/array/max-array-length","0HF":"@stdlib/constants-array-max-array-length","0HG":"@stdlib/constants/array/max-typed-array-length","0HH":"@stdlib/constants-array-max-typed-array-length","0HI":"@stdlib/constants/array","0HJ":"@stdlib/constants-array","1pq":"@stdlib/constants/complex128/nan","1pr":"@stdlib/constants-complex128-nan","0HK":"@stdlib/constants/complex128/num-bytes","0HL":"@stdlib/constants-complex128-num-bytes","0HM":"@stdlib/constants/complex128","0HN":"@stdlib/constants-complex128","1ps":"@stdlib/constants/complex128/zero","1pt":"@stdlib/constants-complex128-zero","1pu":"@stdlib/constants/complex64/nan","1pv":"@stdlib/constants-complex64-nan","0HO":"@stdlib/constants/complex64/num-bytes","0HP":"@stdlib/constants-complex64-num-bytes","0HQ":"@stdlib/constants/complex64","0HR":"@stdlib/constants-complex64","1pw":"@stdlib/constants/complex64/zero","1px":"@stdlib/constants-complex64-zero","2jc":"@stdlib/constants/float16/abs-mask","2jd":"@stdlib/constants-float16-abs-mask","2ZO":"@stdlib/constants/float16/apery","2ZP":"@stdlib/constants-float16-apery","2ZQ":"@stdlib/constants/float16/catalan","2ZR":"@stdlib/constants-float16-catalan","0HS":"@stdlib/constants/float16/cbrt-eps","0HT":"@stdlib/constants-float16-cbrt-eps","2ZS":"@stdlib/constants/float16/e","2ZT":"@stdlib/constants-float16-e","0HU":"@stdlib/constants/float16/eps","0HV":"@stdlib/constants-float16-eps","2ZU":"@stdlib/constants/float16/eulergamma","2ZV":"@stdlib/constants-float16-eulergamma","0HW":"@stdlib/constants/float16/exponent-bias","0HX":"@stdlib/constants-float16-exponent-bias","2ZW":"@stdlib/constants/float16/exponent-mask","2ZX":"@stdlib/constants-float16-exponent-mask","2ZY":"@stdlib/constants/float16/fourth-pi","2ZZ":"@stdlib/constants-float16-fourth-pi","2je":"@stdlib/constants/float16/half-ln-two","2jf":"@stdlib/constants-float16-half-ln-two","2Za":"@stdlib/constants/float16/half-pi","2Zb":"@stdlib/constants-float16-half-pi","2jg":"@stdlib/constants/float16/ln-half","2jh":"@stdlib/constants-float16-ln-half","2ji":"@stdlib/constants/float16/ln-pi","2jj":"@stdlib/constants-float16-ln-pi","2jk":"@stdlib/constants/float16/ln-sqrt-two-pi","2jl":"@stdlib/constants-float16-ln-sqrt-two-pi","2jm":"@stdlib/constants/float16/ln-ten","2jn":"@stdlib/constants-float16-ln-ten","2jo":"@stdlib/constants/float16/ln-two-pi","2jp":"@stdlib/constants-float16-ln-two-pi","2jq":"@stdlib/constants/float16/ln-two","2jr":"@stdlib/constants-float16-ln-two","2js":"@stdlib/constants/float16/log10-e","2jt":"@stdlib/constants-float16-log10-e","2ju":"@stdlib/constants/float16/log2-e","2jv":"@stdlib/constants-float16-log2-e","2jw":"@stdlib/constants/float16/max-base10-exponent-subnormal","2jx":"@stdlib/constants-float16-max-base10-exponent-subnormal","2jy":"@stdlib/constants/float16/max-base10-exponent","2jz":"@stdlib/constants-float16-max-base10-exponent","2k0":"@stdlib/constants/float16/max-base2-exponent-subnormal","2k1":"@stdlib/constants-float16-max-base2-exponent-subnormal","2Zc":"@stdlib/constants/float16/max-base2-exponent","2Zd":"@stdlib/constants-float16-max-base2-exponent","2Ze":"@stdlib/constants/float16/max-ln","2Zf":"@stdlib/constants-float16-max-ln","0HY":"@stdlib/constants/float16/max-safe-integer","0HZ":"@stdlib/constants-float16-max-safe-integer","0Ha":"@stdlib/constants/float16/max","0Hb":"@stdlib/constants-float16-max","2k2":"@stdlib/constants/float16/min-base10-exponent-subnormal","2k3":"@stdlib/constants-float16-min-base10-exponent-subnormal","2k4":"@stdlib/constants/float16/min-base10-exponent","2k5":"@stdlib/constants-float16-min-base10-exponent","2k6":"@stdlib/constants/float16/min-base2-exponent-subnormal","2k7":"@stdlib/constants-float16-min-base2-exponent-subnormal","2Zg":"@stdlib/constants/float16/min-base2-exponent","2Zh":"@stdlib/constants-float16-min-base2-exponent","2Zi":"@stdlib/constants/float16/min-ln","2Zj":"@stdlib/constants-float16-min-ln","0Hc":"@stdlib/constants/float16/min-safe-integer","0Hd":"@stdlib/constants-float16-min-safe-integer","2k8":"@stdlib/constants/float16/nan","2k9":"@stdlib/constants-float16-nan","0He":"@stdlib/constants/float16/ninf","0Hf":"@stdlib/constants-float16-ninf","0Hg":"@stdlib/constants/float16/num-bytes","0Hh":"@stdlib/constants-float16-num-bytes","2Zk":"@stdlib/constants/float16/num-exponent-bits","2Zl":"@stdlib/constants-float16-num-exponent-bits","2Zm":"@stdlib/constants/float16/num-significand-bits","2Zn":"@stdlib/constants-float16-num-significand-bits","0Hi":"@stdlib/constants/float16","0Hj":"@stdlib/constants-float16","2Zo":"@stdlib/constants/float16/phi","2Zp":"@stdlib/constants-float16-phi","2Zq":"@stdlib/constants/float16/pi-squared","2Zr":"@stdlib/constants-float16-pi-squared","2Zs":"@stdlib/constants/float16/pi","2Zt":"@stdlib/constants-float16-pi","0Hk":"@stdlib/constants/float16/pinf","0Hl":"@stdlib/constants-float16-pinf","0Hm":"@stdlib/constants/float16/precision","0Hn":"@stdlib/constants-float16-precision","2Zu":"@stdlib/constants/float16/sign-mask","2Zv":"@stdlib/constants-float16-sign-mask","2Zw":"@stdlib/constants/float16/significand-mask","2Zx":"@stdlib/constants-float16-significand-mask","0Ho":"@stdlib/constants/float16/smallest-normal","0Hp":"@stdlib/constants-float16-smallest-normal","0Hq":"@stdlib/constants/float16/smallest-subnormal","0Hr":"@stdlib/constants-float16-smallest-subnormal","0Hs":"@stdlib/constants/float16/sqrt-eps","0Ht":"@stdlib/constants-float16-sqrt-eps","2kA":"@stdlib/constants/float16/sqrt-half","2kB":"@stdlib/constants-float16-sqrt-half","2kC":"@stdlib/constants/float16/sqrt-three","2kD":"@stdlib/constants-float16-sqrt-three","2kE":"@stdlib/constants/float16/sqrt-two-pi","2kF":"@stdlib/constants-float16-sqrt-two-pi","2Zy":"@stdlib/constants/float16/sqrt-two","2Zz":"@stdlib/constants-float16-sqrt-two","2a0":"@stdlib/constants/float16/two-pi","2a1":"@stdlib/constants-float16-two-pi","1ae":"@stdlib/constants/float32/abs-mask","1af":"@stdlib/constants-float32-abs-mask","2A4":"@stdlib/constants/float32/apery","2A5":"@stdlib/constants-float32-apery","2Dg":"@stdlib/constants/float32/catalan","2Dh":"@stdlib/constants-float32-catalan","0Hu":"@stdlib/constants/float32/cbrt-eps","0Hv":"@stdlib/constants-float32-cbrt-eps","22y":"@stdlib/constants/float32/e","22z":"@stdlib/constants-float32-e","0Hw":"@stdlib/constants/float32/eps","0Hx":"@stdlib/constants-float32-eps","2Di":"@stdlib/constants/float32/eulergamma","2Dj":"@stdlib/constants-float32-eulergamma","0Hy":"@stdlib/constants/float32/exponent-bias","0Hz":"@stdlib/constants-float32-exponent-bias","1ag":"@stdlib/constants/float32/exponent-mask","1ah":"@stdlib/constants-float32-exponent-mask","1tA":"@stdlib/constants/float32/fourth-pi","1tB":"@stdlib/constants-float32-fourth-pi","2Dk":"@stdlib/constants/float32/fourth-root-eps","2Dl":"@stdlib/constants-float32-fourth-root-eps","2A6":"@stdlib/constants/float32/gamma-lanczos-g","2A7":"@stdlib/constants-float32-gamma-lanczos-g","2a2":"@stdlib/constants/float32/glaisher-kinkelin","2a3":"@stdlib/constants-float32-glaisher-kinkelin","1tC":"@stdlib/constants/float32/half-pi","1tD":"@stdlib/constants-float32-half-pi","24G":"@stdlib/constants/float32/ln-half","24H":"@stdlib/constants-float32-ln-half","24I":"@stdlib/constants/float32/ln-pi","24J":"@stdlib/constants-float32-ln-pi","2A8":"@stdlib/constants/float32/ln-sqrt-two-pi","2A9":"@stdlib/constants-float32-ln-sqrt-two-pi","24K":"@stdlib/constants/float32/ln-ten","24L":"@stdlib/constants-float32-ln-ten","2AA":"@stdlib/constants/float32/ln-two-pi","2AB":"@stdlib/constants-float32-ln-two-pi","2AC":"@stdlib/constants/float32/log10-e","2AD":"@stdlib/constants-float32-log10-e","2AE":"@stdlib/constants/float32/log2-e","2AF":"@stdlib/constants-float32-log2-e","1zC":"@stdlib/constants/float32/max-base2-exponent-subnormal","1zD":"@stdlib/constants-float32-max-base2-exponent-subnormal","1zE":"@stdlib/constants/float32/max-base2-exponent","1zF":"@stdlib/constants-float32-max-base2-exponent","2Dm":"@stdlib/constants/float32/max-ln","2Dn":"@stdlib/constants-float32-max-ln","2FW":"@stdlib/constants/float32/max-nth-double-factorial","2FX":"@stdlib/constants-float32-max-nth-double-factorial","2FY":"@stdlib/constants/float32/max-nth-factorial","2FZ":"@stdlib/constants-float32-max-nth-factorial","21k":"@stdlib/constants/float32/max-safe-fibonacci","21l":"@stdlib/constants-float32-max-safe-fibonacci","0I0":"@stdlib/constants/float32/max-safe-integer","0I1":"@stdlib/constants-float32-max-safe-integer","2Do":"@stdlib/constants/float32/max-safe-lucas","2Dp":"@stdlib/constants-float32-max-safe-lucas","2AG":"@stdlib/constants/float32/max-safe-nth-double-factorial","2AH":"@stdlib/constants-float32-max-safe-nth-double-factorial","24M":"@stdlib/constants/float32/max-safe-nth-lucas","24N":"@stdlib/constants-float32-max-safe-nth-lucas","2AI":"@stdlib/constants/float32/max-safe-nth-tribonacci","2AJ":"@stdlib/constants-float32-max-safe-nth-tribonacci","0I2":"@stdlib/constants/float32/max","0I3":"@stdlib/constants-float32-max","23A":"@stdlib/constants/float32/min-base10-exponent","23B":"@stdlib/constants-float32-min-base10-exponent","1zG":"@stdlib/constants/float32/min-base2-exponent-subnormal","1zH":"@stdlib/constants-float32-min-base2-exponent-subnormal","23C":"@stdlib/constants/float32/min-base2-exponent","23D":"@stdlib/constants-float32-min-base2-exponent","2Dq":"@stdlib/constants/float32/min-ln","2Dr":"@stdlib/constants-float32-min-ln","0I4":"@stdlib/constants/float32/min-safe-integer","0I5":"@stdlib/constants-float32-min-safe-integer","1py":"@stdlib/constants/float32/nan","1pz":"@stdlib/constants-float32-nan","0I6":"@stdlib/constants/float32/ninf","0I7":"@stdlib/constants-float32-ninf","0I8":"@stdlib/constants/float32/num-bytes","0I9":"@stdlib/constants-float32-num-bytes","2kG":"@stdlib/constants/float32/num-exponent-bits","2kH":"@stdlib/constants-float32-num-exponent-bits","2AK":"@stdlib/constants/float32/num-significand-bits","2AL":"@stdlib/constants-float32-num-significand-bits","0IA":"@stdlib/constants/float32","0IB":"@stdlib/constants-float32","1v0":"@stdlib/constants/float32/phi","1v1":"@stdlib/constants-float32-phi","2AM":"@stdlib/constants/float32/pi-squared","2AN":"@stdlib/constants-float32-pi-squared","1tE":"@stdlib/constants/float32/pi","1tF":"@stdlib/constants-float32-pi","0IC":"@stdlib/constants/float32/pinf","0ID":"@stdlib/constants-float32-pinf","0IE":"@stdlib/constants/float32/precision","0IF":"@stdlib/constants-float32-precision","1ai":"@stdlib/constants/float32/sign-mask","1aj":"@stdlib/constants-float32-sign-mask","1ak":"@stdlib/constants/float32/significand-mask","1al":"@stdlib/constants-float32-significand-mask","0IG":"@stdlib/constants/float32/smallest-normal","0IH":"@stdlib/constants-float32-smallest-normal","0II":"@stdlib/constants/float32/smallest-subnormal","0IJ":"@stdlib/constants-float32-smallest-subnormal","0IK":"@stdlib/constants/float32/sqrt-eps","0IL":"@stdlib/constants-float32-sqrt-eps","24O":"@stdlib/constants/float32/sqrt-half-pi","24P":"@stdlib/constants-float32-sqrt-half-pi","24Q":"@stdlib/constants/float32/sqrt-half","24R":"@stdlib/constants-float32-sqrt-half","24S":"@stdlib/constants/float32/sqrt-phi","24T":"@stdlib/constants-float32-sqrt-phi","24U":"@stdlib/constants/float32/sqrt-pi","24V":"@stdlib/constants-float32-sqrt-pi","24W":"@stdlib/constants/float32/sqrt-three","24X":"@stdlib/constants-float32-sqrt-three","24Y":"@stdlib/constants/float32/sqrt-two-pi","24Z":"@stdlib/constants-float32-sqrt-two-pi","24a":"@stdlib/constants/float32/sqrt-two","24b":"@stdlib/constants-float32-sqrt-two","1tG":"@stdlib/constants/float32/two-pi","1tH":"@stdlib/constants-float32-two-pi","0IM":"@stdlib/constants/float64/apery","0IN":"@stdlib/constants-float64-apery","0IO":"@stdlib/constants/float64/catalan","0IP":"@stdlib/constants-float64-catalan","0IQ":"@stdlib/constants/float64/cbrt-eps","0IR":"@stdlib/constants-float64-cbrt-eps","0IS":"@stdlib/constants/float64/e","0IT":"@stdlib/constants-float64-e","0IU":"@stdlib/constants/float64/eps","0IV":"@stdlib/constants-float64-eps","0IW":"@stdlib/constants/float64/eulergamma","0IX":"@stdlib/constants-float64-eulergamma","0IY":"@stdlib/constants/float64/exponent-bias","0IZ":"@stdlib/constants-float64-exponent-bias","0Ia":"@stdlib/constants/float64/fourth-pi","0Ib":"@stdlib/constants-float64-fourth-pi","0Ic":"@stdlib/constants/float64/fourth-root-eps","0Id":"@stdlib/constants-float64-fourth-root-eps","0Ie":"@stdlib/constants/float64/gamma-lanczos-g","0If":"@stdlib/constants-float64-gamma-lanczos-g","0Ig":"@stdlib/constants/float64/glaisher-kinkelin","0Ih":"@stdlib/constants-float64-glaisher-kinkelin","0Ii":"@stdlib/constants/float64/half-ln-two","0Ij":"@stdlib/constants-float64-half-ln-two","0Ik":"@stdlib/constants/float64/half-pi","0Il":"@stdlib/constants-float64-half-pi","1am":"@stdlib/constants/float64/high-word-abs-mask","1an":"@stdlib/constants-float64-high-word-abs-mask","0Im":"@stdlib/constants/float64/high-word-exponent-mask","0In":"@stdlib/constants-float64-high-word-exponent-mask","1ao":"@stdlib/constants/float64/high-word-sign-mask","1ap":"@stdlib/constants-float64-high-word-sign-mask","0Io":"@stdlib/constants/float64/high-word-significand-mask","0Ip":"@stdlib/constants-float64-high-word-significand-mask","0Iq":"@stdlib/constants/float64/ln-half","0Ir":"@stdlib/constants-float64-ln-half","0Is":"@stdlib/constants/float64/ln-pi","0It":"@stdlib/constants-float64-ln-pi","0Iu":"@stdlib/constants/float64/ln-sqrt-two-pi","0Iv":"@stdlib/constants-float64-ln-sqrt-two-pi","0Iw":"@stdlib/constants/float64/ln-ten","0Ix":"@stdlib/constants-float64-ln-ten","0Iy":"@stdlib/constants/float64/ln-two-pi","0Iz":"@stdlib/constants-float64-ln-two-pi","0J0":"@stdlib/constants/float64/ln-two","0J1":"@stdlib/constants-float64-ln-two","0J2":"@stdlib/constants/float64/log10-e","0J3":"@stdlib/constants-float64-log10-e","0J4":"@stdlib/constants/float64/log2-e","0J5":"@stdlib/constants-float64-log2-e","0J6":"@stdlib/constants/float64/max-base10-exponent-subnormal","0J7":"@stdlib/constants-float64-max-base10-exponent-subnormal","0J8":"@stdlib/constants/float64/max-base10-exponent","0J9":"@stdlib/constants-float64-max-base10-exponent","0JA":"@stdlib/constants/float64/max-base2-exponent-subnormal","0JB":"@stdlib/constants-float64-max-base2-exponent-subnormal","0JC":"@stdlib/constants/float64/max-base2-exponent","0JD":"@stdlib/constants-float64-max-base2-exponent","0JE":"@stdlib/constants/float64/max-ln","0JF":"@stdlib/constants-float64-max-ln","2Fa":"@stdlib/constants/float64/max-nth-double-factorial","2Fb":"@stdlib/constants-float64-max-nth-double-factorial","2Fc":"@stdlib/constants/float64/max-nth-factorial","2Fd":"@stdlib/constants-float64-max-nth-factorial","0JG":"@stdlib/constants/float64/max-safe-fibonacci","0JH":"@stdlib/constants-float64-max-safe-fibonacci","0JI":"@stdlib/constants/float64/max-safe-integer","0JJ":"@stdlib/constants-float64-max-safe-integer","0JK":"@stdlib/constants/float64/max-safe-lucas","0JL":"@stdlib/constants-float64-max-safe-lucas","23E":"@stdlib/constants/float64/max-safe-nth-double-factorial","23F":"@stdlib/constants-float64-max-safe-nth-double-factorial","1yO":"@stdlib/constants/float64/max-safe-nth-factorial","1yP":"@stdlib/constants-float64-max-safe-nth-factorial","0JM":"@stdlib/constants/float64/max-safe-nth-fibonacci","0JN":"@stdlib/constants-float64-max-safe-nth-fibonacci","0JO":"@stdlib/constants/float64/max-safe-nth-lucas","0JP":"@stdlib/constants-float64-max-safe-nth-lucas","24c":"@stdlib/constants/float64/max-safe-nth-tribonacci","24d":"@stdlib/constants-float64-max-safe-nth-tribonacci","0JQ":"@stdlib/constants/float64/max","0JR":"@stdlib/constants-float64-max","0JS":"@stdlib/constants/float64/min-base10-exponent-subnormal","0JT":"@stdlib/constants-float64-min-base10-exponent-subnormal","0JU":"@stdlib/constants/float64/min-base10-exponent","0JV":"@stdlib/constants-float64-min-base10-exponent","0JW":"@stdlib/constants/float64/min-base2-exponent-subnormal","0JX":"@stdlib/constants-float64-min-base2-exponent-subnormal","0JY":"@stdlib/constants/float64/min-base2-exponent","0JZ":"@stdlib/constants-float64-min-base2-exponent","0Ja":"@stdlib/constants/float64/min-ln","0Jb":"@stdlib/constants-float64-min-ln","0Jc":"@stdlib/constants/float64/min-safe-integer","0Jd":"@stdlib/constants-float64-min-safe-integer","1q0":"@stdlib/constants/float64/nan","1q1":"@stdlib/constants-float64-nan","0Je":"@stdlib/constants/float64/ninf","0Jf":"@stdlib/constants-float64-ninf","0Jg":"@stdlib/constants/float64/num-bytes","0Jh":"@stdlib/constants-float64-num-bytes","20A":"@stdlib/constants/float64/num-high-word-significand-bits","20B":"@stdlib/constants-float64-num-high-word-significand-bits","0Ji":"@stdlib/constants/float64","0Jj":"@stdlib/constants-float64","0Jk":"@stdlib/constants/float64/phi","0Jl":"@stdlib/constants-float64-phi","0Jm":"@stdlib/constants/float64/pi-squared","0Jn":"@stdlib/constants-float64-pi-squared","0Jo":"@stdlib/constants/float64/pi","0Jp":"@stdlib/constants-float64-pi","0Jq":"@stdlib/constants/float64/pinf","0Jr":"@stdlib/constants-float64-pinf","0Js":"@stdlib/constants/float64/precision","0Jt":"@stdlib/constants-float64-precision","0Ju":"@stdlib/constants/float64/smallest-normal","0Jv":"@stdlib/constants-float64-smallest-normal","0Jw":"@stdlib/constants/float64/smallest-subnormal","0Jx":"@stdlib/constants-float64-smallest-subnormal","0Jy":"@stdlib/constants/float64/sqrt-eps","0Jz":"@stdlib/constants-float64-sqrt-eps","0K0":"@stdlib/constants/float64/sqrt-half-pi","0K1":"@stdlib/constants-float64-sqrt-half-pi","0K2":"@stdlib/constants/float64/sqrt-half","0K3":"@stdlib/constants-float64-sqrt-half","0K4":"@stdlib/constants/float64/sqrt-phi","0K5":"@stdlib/constants-float64-sqrt-phi","0K6":"@stdlib/constants/float64/sqrt-pi","0K7":"@stdlib/constants-float64-sqrt-pi","0K8":"@stdlib/constants/float64/sqrt-three","0K9":"@stdlib/constants-float64-sqrt-three","0KA":"@stdlib/constants/float64/sqrt-two-pi","0KB":"@stdlib/constants-float64-sqrt-two-pi","0KC":"@stdlib/constants/float64/sqrt-two","0KD":"@stdlib/constants-float64-sqrt-two","0KE":"@stdlib/constants/float64/two-pi","0KF":"@stdlib/constants-float64-two-pi","0KG":"@stdlib/constants/int16/max","0KH":"@stdlib/constants-int16-max","0KI":"@stdlib/constants/int16/min","0KJ":"@stdlib/constants-int16-min","0KK":"@stdlib/constants/int16/num-bytes","0KL":"@stdlib/constants-int16-num-bytes","0KM":"@stdlib/constants/int16","0KN":"@stdlib/constants-int16","0KO":"@stdlib/constants/int32/max","0KP":"@stdlib/constants-int32-max","0KQ":"@stdlib/constants/int32/min","0KR":"@stdlib/constants-int32-min","0KS":"@stdlib/constants/int32/num-bytes","0KT":"@stdlib/constants-int32-num-bytes","0KU":"@stdlib/constants/int32","0KV":"@stdlib/constants-int32","0KW":"@stdlib/constants/int8/max","0KX":"@stdlib/constants-int8-max","0KY":"@stdlib/constants/int8/min","0KZ":"@stdlib/constants-int8-min","0Ka":"@stdlib/constants/int8/num-bytes","0Kb":"@stdlib/constants-int8-num-bytes","0Kc":"@stdlib/constants/int8","0Kd":"@stdlib/constants-int8","0Kf":"@stdlib/constants","0Kg":"@stdlib/constants/path/delimiter-posix","0Kh":"@stdlib/constants-path-delimiter-posix","0Ki":"@stdlib/constants/path/delimiter-win32","0Kj":"@stdlib/constants-path-delimiter-win32","0Kk":"@stdlib/constants/path/delimiter","0Kl":"@stdlib/constants-path-delimiter","0Km":"@stdlib/constants/path","0Kn":"@stdlib/constants-path","0Ko":"@stdlib/constants/path/sep-posix","0Kp":"@stdlib/constants-path-sep-posix","0Kq":"@stdlib/constants/path/sep-win32","0Kr":"@stdlib/constants-path-sep-win32","0Ks":"@stdlib/constants/path/sep","0Kt":"@stdlib/constants-path-sep","0Ku":"@stdlib/constants/time/hours-in-day","0Kv":"@stdlib/constants-time-hours-in-day","0Kw":"@stdlib/constants/time/hours-in-week","0Kx":"@stdlib/constants-time-hours-in-week","0Ky":"@stdlib/constants/time/milliseconds-in-day","0Kz":"@stdlib/constants-time-milliseconds-in-day","0L0":"@stdlib/constants/time/milliseconds-in-hour","0L1":"@stdlib/constants-time-milliseconds-in-hour","0L2":"@stdlib/constants/time/milliseconds-in-minute","0L3":"@stdlib/constants-time-milliseconds-in-minute","0L4":"@stdlib/constants/time/milliseconds-in-second","0L5":"@stdlib/constants-time-milliseconds-in-second","0L6":"@stdlib/constants/time/milliseconds-in-week","0L7":"@stdlib/constants-time-milliseconds-in-week","0L8":"@stdlib/constants/time/minutes-in-day","0L9":"@stdlib/constants-time-minutes-in-day","0LA":"@stdlib/constants/time/minutes-in-hour","0LB":"@stdlib/constants-time-minutes-in-hour","0LC":"@stdlib/constants/time/minutes-in-week","0LD":"@stdlib/constants-time-minutes-in-week","0LE":"@stdlib/constants/time/months-in-year","0LF":"@stdlib/constants-time-months-in-year","0LG":"@stdlib/constants/time","0LH":"@stdlib/constants-time","0LI":"@stdlib/constants/time/seconds-in-day","0LJ":"@stdlib/constants-time-seconds-in-day","0LK":"@stdlib/constants/time/seconds-in-hour","0LL":"@stdlib/constants-time-seconds-in-hour","0LM":"@stdlib/constants/time/seconds-in-minute","0LN":"@stdlib/constants-time-seconds-in-minute","0LO":"@stdlib/constants/time/seconds-in-week","0LP":"@stdlib/constants-time-seconds-in-week","0LQ":"@stdlib/constants/uint16/max","0LR":"@stdlib/constants-uint16-max","0LS":"@stdlib/constants/uint16/num-bytes","0LT":"@stdlib/constants-uint16-num-bytes","0LU":"@stdlib/constants/uint16","0LV":"@stdlib/constants-uint16","0LW":"@stdlib/constants/uint32/max","0LX":"@stdlib/constants-uint32-max","0LY":"@stdlib/constants/uint32/num-bytes","0LZ":"@stdlib/constants-uint32-num-bytes","0La":"@stdlib/constants/uint32","0Lb":"@stdlib/constants-uint32","0Lc":"@stdlib/constants/uint8/max","0Ld":"@stdlib/constants-uint8-max","0Le":"@stdlib/constants/uint8/num-bytes","0Lf":"@stdlib/constants-uint8-num-bytes","0Lg":"@stdlib/constants/uint8","0Lh":"@stdlib/constants-uint8","0Li":"@stdlib/constants/unicode/max-bmp","0Lj":"@stdlib/constants-unicode-max-bmp","0Lk":"@stdlib/constants/unicode/max","0Ll":"@stdlib/constants-unicode-max","0Lm":"@stdlib/constants/unicode","0Ln":"@stdlib/constants-unicode","0Lo":"@stdlib/datasets/afinn-111","0Lp":"@stdlib/datasets-afinn-111","0Lq":"@stdlib/datasets/afinn-96","0Lr":"@stdlib/datasets-afinn-96","0Ls":"@stdlib/datasets/anscombes-quartet","0Lt":"@stdlib/datasets-anscombes-quartet","0Lu":"@stdlib/datasets/berndt-cps-wages-1985","0Lv":"@stdlib/datasets-berndt-cps-wages-1985","0Lw":"@stdlib/datasets/cdc-nchs-us-births-1969-1988","0Lx":"@stdlib/datasets-cdc-nchs-us-births-1969-1988","0Ly":"@stdlib/datasets/cdc-nchs-us-births-1994-2003","0Lz":"@stdlib/datasets-cdc-nchs-us-births-1994-2003","0M0":"@stdlib/datasets/cdc-nchs-us-infant-mortality-bw-1915-2013","0M1":"@stdlib/datasets-cdc-nchs-us-infant-mortality-bw-1915-2013","0M2":"@stdlib/datasets/cmudict","0M3":"@stdlib/datasets-cmudict","0M4":"@stdlib/datasets/dale-chall-new","0M5":"@stdlib/datasets-dale-chall-new","0M6":"@stdlib/datasets/emoji-code-picto","0M7":"@stdlib/datasets-emoji-code-picto","0M8":"@stdlib/datasets/emoji-picto-code","0M9":"@stdlib/datasets-emoji-picto-code","0MA":"@stdlib/datasets/emoji","0MB":"@stdlib/datasets-emoji","0MC":"@stdlib/datasets/female-first-names-en","0MD":"@stdlib/datasets-female-first-names-en","0ME":"@stdlib/datasets/fivethirtyeight-ffq","0MF":"@stdlib/datasets-fivethirtyeight-ffq","0MG":"@stdlib/datasets/frb-sf-wage-rigidity","0MH":"@stdlib/datasets-frb-sf-wage-rigidity","0MI":"@stdlib/datasets/harrison-boston-house-prices-corrected","0MJ":"@stdlib/datasets-harrison-boston-house-prices-corrected","0MK":"@stdlib/datasets/harrison-boston-house-prices","0ML":"@stdlib/datasets-harrison-boston-house-prices","0MM":"@stdlib/datasets/herndon-venus-semidiameters","0MN":"@stdlib/datasets-herndon-venus-semidiameters","0MO":"@stdlib/datasets/img-acanthus-mollis","0MP":"@stdlib/datasets-img-acanthus-mollis","0MQ":"@stdlib/datasets/img-airplane-from-above","0MR":"@stdlib/datasets-img-airplane-from-above","0MS":"@stdlib/datasets/img-allium-oreophilum","0MT":"@stdlib/datasets-img-allium-oreophilum","0MU":"@stdlib/datasets/img-black-canyon","0MV":"@stdlib/datasets-img-black-canyon","0MW":"@stdlib/datasets/img-dust-bowl-home","0MX":"@stdlib/datasets-img-dust-bowl-home","0MY":"@stdlib/datasets/img-french-alpine-landscape","0MZ":"@stdlib/datasets-img-french-alpine-landscape","0Ma":"@stdlib/datasets/img-locomotion-house-cat","0Mb":"@stdlib/datasets-img-locomotion-house-cat","0Mc":"@stdlib/datasets/img-locomotion-nude-male","0Md":"@stdlib/datasets-img-locomotion-nude-male","0Me":"@stdlib/datasets/img-march-pastoral","0Mf":"@stdlib/datasets-img-march-pastoral","0Mg":"@stdlib/datasets/img-nagasaki-boats","0Mh":"@stdlib/datasets-img-nagasaki-boats","0Mi":"@stdlib/datasets/liu-negative-opinion-words-en","0Mj":"@stdlib/datasets-liu-negative-opinion-words-en","0Mk":"@stdlib/datasets/liu-positive-opinion-words-en","0Ml":"@stdlib/datasets-liu-positive-opinion-words-en","0Mm":"@stdlib/datasets/male-first-names-en","0Mn":"@stdlib/datasets-male-first-names-en","0Mo":"@stdlib/datasets/minard-napoleons-march","0Mp":"@stdlib/datasets-minard-napoleons-march","0Mq":"@stdlib/datasets/moby-dick","0Mr":"@stdlib/datasets-moby-dick","0Ms":"@stdlib/datasets/month-names-en","0Mt":"@stdlib/datasets-month-names-en","0Mu":"@stdlib/datasets/nightingales-rose","0Mv":"@stdlib/datasets-nightingales-rose","0Mw":"@stdlib/datasets/pace-boston-house-prices","0Mx":"@stdlib/datasets-pace-boston-house-prices","0Mz":"@stdlib/datasets","0N0":"@stdlib/datasets/primes-100k","0N1":"@stdlib/datasets-primes-100k","0N2":"@stdlib/datasets/savoy-stopwords-fin","0N3":"@stdlib/datasets-savoy-stopwords-fin","0N4":"@stdlib/datasets/savoy-stopwords-fr","0N5":"@stdlib/datasets-savoy-stopwords-fr","0N6":"@stdlib/datasets/savoy-stopwords-ger","0N7":"@stdlib/datasets-savoy-stopwords-ger","0N8":"@stdlib/datasets/savoy-stopwords-it","0N9":"@stdlib/datasets-savoy-stopwords-it","0NA":"@stdlib/datasets/savoy-stopwords-por","0NB":"@stdlib/datasets-savoy-stopwords-por","0NC":"@stdlib/datasets/savoy-stopwords-sp","0ND":"@stdlib/datasets-savoy-stopwords-sp","0NE":"@stdlib/datasets/savoy-stopwords-swe","0NF":"@stdlib/datasets-savoy-stopwords-swe","0NG":"@stdlib/datasets/sotu","0NH":"@stdlib/datasets-sotu","0NI":"@stdlib/datasets/spache-revised","0NJ":"@stdlib/datasets-spache-revised","0NK":"@stdlib/datasets/spam-assassin","0NL":"@stdlib/datasets-spam-assassin","0NM":"@stdlib/datasets/ssa-us-births-2000-2014","0NN":"@stdlib/datasets-ssa-us-births-2000-2014","0NO":"@stdlib/datasets/standard-card-deck","0NP":"@stdlib/datasets-standard-card-deck","0NQ":"@stdlib/datasets/stopwords-en","0NR":"@stdlib/datasets-stopwords-en","0NS":"@stdlib/datasets/suthaharan-multi-hop-sensor-network","0NT":"@stdlib/datasets-suthaharan-multi-hop-sensor-network","0NU":"@stdlib/datasets/suthaharan-single-hop-sensor-network","0NV":"@stdlib/datasets-suthaharan-single-hop-sensor-network","0NW":"@stdlib/datasets/us-states-abbr","0NX":"@stdlib/datasets-us-states-abbr","0NY":"@stdlib/datasets/us-states-capitals-names","0NZ":"@stdlib/datasets-us-states-capitals-names","0Na":"@stdlib/datasets/us-states-capitals","0Nb":"@stdlib/datasets-us-states-capitals","0Nc":"@stdlib/datasets/us-states-names-capitals","0Nd":"@stdlib/datasets-us-states-names-capitals","0Ne":"@stdlib/datasets/us-states-names","0Nf":"@stdlib/datasets-us-states-names","27K":"@stdlib/dstructs/circular-buffer","27L":"@stdlib/dstructs-circular-buffer","27M":"@stdlib/dstructs/compact-adjacency-matrix","27N":"@stdlib/dstructs-compact-adjacency-matrix","27O":"@stdlib/dstructs/doubly-linked-list","27P":"@stdlib/dstructs-doubly-linked-list","27Q":"@stdlib/dstructs/fifo","27R":"@stdlib/dstructs-fifo","27S":"@stdlib/dstructs/linked-list","27T":"@stdlib/dstructs-linked-list","27U":"@stdlib/dstructs/named-typed-tuple","27V":"@stdlib/dstructs-named-typed-tuple","27X":"@stdlib/dstructs","27Y":"@stdlib/dstructs/stack","27Z":"@stdlib/dstructs-stack","2KI":"@stdlib/dstructs/struct","2KJ":"@stdlib/dstructs-struct","0Nh":"@stdlib/error","0Ni":"@stdlib/error/reviver","0Nj":"@stdlib/error-reviver","0Nk":"@stdlib/error/to-json","0Nl":"@stdlib/error-to-json","0Nm":"@stdlib/error/tools/database","0Nn":"@stdlib/error-tools-database","0No":"@stdlib/error/tools/fmtprodmsg-factory","0Np":"@stdlib/error-tools-fmtprodmsg-factory","0Nq":"@stdlib/error/tools/fmtprodmsg","0Nr":"@stdlib/error-tools-fmtprodmsg","0Ns":"@stdlib/error/tools/id2msg","0Nt":"@stdlib/error-tools-id2msg","0Nu":"@stdlib/error/tools/id2pkg","0Nv":"@stdlib/error-tools-id2pkg","0Nw":"@stdlib/error/tools/msg2id","0Nx":"@stdlib/error-tools-msg2id","0Ny":"@stdlib/error/tools","0Nz":"@stdlib/error-tools","0O0":"@stdlib/error/tools/pkg2id","0O1":"@stdlib/error-tools-pkg2id","2x2":"@stdlib/fft/base/fftpack/cffti","2x3":"@stdlib/fft-base-fftpack-cffti","2x4":"@stdlib/fft/base/fftpack/cosqi","2x5":"@stdlib/fft-base-fftpack-cosqi","2kI":"@stdlib/fft/base/fftpack/decompose","2kJ":"@stdlib/fft-base-fftpack-decompose","2x6":"@stdlib/fft/base/fftpack","2x7":"@stdlib/fft-base-fftpack","2x8":"@stdlib/fft/base/fftpack/rffti","2x9":"@stdlib/fft-base-fftpack-rffti","2ym":"@stdlib/fft/base/fftpack/sinqi","2yn":"@stdlib/fft-base-fftpack-sinqi","2xA":"@stdlib/fft/base","2xB":"@stdlib/fft-base","2xD":"@stdlib/fft","1v2":"@stdlib/fs/append-file","1v3":"@stdlib/fs-append-file","0O2":"@stdlib/fs/close","0O3":"@stdlib/fs-close","0O4":"@stdlib/fs/exists","0O5":"@stdlib/fs-exists","0O6":"@stdlib/fs/open","0O7":"@stdlib/fs-open","0O9":"@stdlib/fs","0OA":"@stdlib/fs/read-dir","0OB":"@stdlib/fs-read-dir","0OC":"@stdlib/fs/read-file-list","0OD":"@stdlib/fs-read-file-list","0OE":"@stdlib/fs/read-file","0OF":"@stdlib/fs-read-file","0OG":"@stdlib/fs/read-json","0OH":"@stdlib/fs-read-json","23G":"@stdlib/fs/read-ndjson","23H":"@stdlib/fs-read-ndjson","0OI":"@stdlib/fs/read-wasm","0OJ":"@stdlib/fs-read-wasm","0OK":"@stdlib/fs/rename","0OL":"@stdlib/fs-rename","0OM":"@stdlib/fs/resolve-parent-path-by","0ON":"@stdlib/fs-resolve-parent-path-by","0OO":"@stdlib/fs/resolve-parent-path","0OP":"@stdlib/fs-resolve-parent-path","1yS":"@stdlib/fs/resolve-parent-paths","1yT":"@stdlib/fs-resolve-parent-paths","0OQ":"@stdlib/fs/unlink","0OR":"@stdlib/fs-unlink","0OS":"@stdlib/fs/write-file","0OT":"@stdlib/fs-write-file","1aq":"@stdlib/function/ctor","1ar":"@stdlib/function-ctor","1at":"@stdlib/function","27a":"@stdlib/function/thunk","27b":"@stdlib/function-thunk","1au":"@stdlib/function/to-string","1av":"@stdlib/function-to-string","0OU":"@stdlib/iter/advance","0OV":"@stdlib/iter-advance","0OW":"@stdlib/iter/any-by","0OX":"@stdlib/iter-any-by","0OY":"@stdlib/iter/any","0OZ":"@stdlib/iter-any","0Oa":"@stdlib/iter/concat","0Ob":"@stdlib/iter-concat","0Oc":"@stdlib/iter/constant","0Od":"@stdlib/iter-constant","0Oe":"@stdlib/iter/counter","0Of":"@stdlib/iter-counter","23I":"@stdlib/iter/cuany-by","23J":"@stdlib/iter-cuany-by","1xS":"@stdlib/iter/cuany","1xT":"@stdlib/iter-cuany","23K":"@stdlib/iter/cuevery-by","23L":"@stdlib/iter-cuevery-by","23M":"@stdlib/iter/cuevery","23N":"@stdlib/iter-cuevery","1zI":"@stdlib/iter/cunone-by","1zJ":"@stdlib/iter-cunone-by","23O":"@stdlib/iter/cunone","23P":"@stdlib/iter-cunone","23Q":"@stdlib/iter/cusome-by","23R":"@stdlib/iter-cusome-by","1yU":"@stdlib/iter/cusome","1yV":"@stdlib/iter-cusome","0Og":"@stdlib/iter/datespace","0Oh":"@stdlib/iter-datespace","0Oi":"@stdlib/iter/dedupe-by","0Oj":"@stdlib/iter-dedupe-by","0Ok":"@stdlib/iter/dedupe","0Ol":"@stdlib/iter-dedupe","1tI":"@stdlib/iter/do-until-each","1tJ":"@stdlib/iter-do-until-each","1tK":"@stdlib/iter/do-while-each","1tL":"@stdlib/iter-do-while-each","0Om":"@stdlib/iter/empty","0On":"@stdlib/iter-empty","0Oo":"@stdlib/iter/every-by","0Op":"@stdlib/iter-every-by","0Oq":"@stdlib/iter/every","0Or":"@stdlib/iter-every","0Os":"@stdlib/iter/fill","0Ot":"@stdlib/iter-fill","0Ou":"@stdlib/iter/filter-map","0Ov":"@stdlib/iter-filter-map","0Ow":"@stdlib/iter/filter","0Ox":"@stdlib/iter-filter","0Oy":"@stdlib/iter/first","0Oz":"@stdlib/iter-first","0P0":"@stdlib/iter/flow","0P1":"@stdlib/iter-flow","0P2":"@stdlib/iter/for-each","0P3":"@stdlib/iter-for-each","0P4":"@stdlib/iter/head","0P5":"@stdlib/iter-head","0P6":"@stdlib/iter/incrspace","0P7":"@stdlib/iter-incrspace","0P8":"@stdlib/iter/intersection-by-hash","0P9":"@stdlib/iter-intersection-by-hash","0PA":"@stdlib/iter/intersection","0PB":"@stdlib/iter-intersection","0PC":"@stdlib/iter/last","0PD":"@stdlib/iter-last","0PE":"@stdlib/iter/length","0PF":"@stdlib/iter-length","0PG":"@stdlib/iter/linspace","0PH":"@stdlib/iter-linspace","0PI":"@stdlib/iter/logspace","0PJ":"@stdlib/iter-logspace","0PK":"@stdlib/iter/map","0PL":"@stdlib/iter-map","0PM":"@stdlib/iter/mapn","0PN":"@stdlib/iter-mapn","0PO":"@stdlib/iter/none-by","0PP":"@stdlib/iter-none-by","0PQ":"@stdlib/iter/none","0PR":"@stdlib/iter-none","0PS":"@stdlib/iter/nth","0PT":"@stdlib/iter-nth","0PV":"@stdlib/iter","0PW":"@stdlib/iter/pipeline-thunk","0PX":"@stdlib/iter-pipeline-thunk","0PY":"@stdlib/iter/pipeline","0PZ":"@stdlib/iter-pipeline","0Pa":"@stdlib/iter/pop","0Pb":"@stdlib/iter-pop","0Pc":"@stdlib/iter/push","0Pd":"@stdlib/iter-push","0Pe":"@stdlib/iter/reject","0Pf":"@stdlib/iter-reject","0Pg":"@stdlib/iter/replicate-by","0Ph":"@stdlib/iter-replicate-by","0Pi":"@stdlib/iter/replicate","0Pj":"@stdlib/iter-replicate","0Pk":"@stdlib/iter/shift","0Pl":"@stdlib/iter-shift","0Pm":"@stdlib/iter/slice","0Pn":"@stdlib/iter-slice","0Po":"@stdlib/iter/some-by","0Pp":"@stdlib/iter-some-by","0Pq":"@stdlib/iter/some","0Pr":"@stdlib/iter-some","0Ps":"@stdlib/iter/step","0Pt":"@stdlib/iter-step","0Pu":"@stdlib/iter/strided-by","0Pv":"@stdlib/iter-strided-by","0Pw":"@stdlib/iter/strided","0Px":"@stdlib/iter-strided","0Py":"@stdlib/iter/to-array-view-right","0Pz":"@stdlib/iter-to-array-view-right","0Q0":"@stdlib/iter/to-array-view","0Q1":"@stdlib/iter-to-array-view","0Q2":"@stdlib/iter/union","0Q3":"@stdlib/iter-union","0Q4":"@stdlib/iter/unique-by-hash","0Q5":"@stdlib/iter-unique-by-hash","0Q6":"@stdlib/iter/unique-by","0Q7":"@stdlib/iter-unique-by","0Q8":"@stdlib/iter/unique","0Q9":"@stdlib/iter-unique","0QA":"@stdlib/iter/unitspace","0QB":"@stdlib/iter-unitspace","0QC":"@stdlib/iter/unshift","0QD":"@stdlib/iter-unshift","1sg":"@stdlib/iter/until-each","1sh":"@stdlib/iter-until-each","1mu":"@stdlib/iter/while-each","1mv":"@stdlib/iter-while-each","27c":"@stdlib/lapack/base/clacgv","27d":"@stdlib/lapack-base-clacgv","27e":"@stdlib/lapack/base/clacpy","27f":"@stdlib/lapack-base-clacpy","27g":"@stdlib/lapack/base/claset","27h":"@stdlib/lapack-base-claset","2H0":"@stdlib/lapack/base/claswp","2H1":"@stdlib/lapack-base-claswp","27i":"@stdlib/lapack/base/crot","27j":"@stdlib/lapack-base-crot","1zK":"@stdlib/lapack/base/dge-trans","1zL":"@stdlib/lapack-base-dge-trans","2I8":"@stdlib/lapack/base/dgttrf","2I9":"@stdlib/lapack-base-dgttrf","2yo":"@stdlib/lapack/base/disnan","2yp":"@stdlib/lapack-base-disnan","1yo":"@stdlib/lapack/base/dlacpy","1yp":"@stdlib/lapack-base-dlacpy","2TG":"@stdlib/lapack/base/dladiv","2TH":"@stdlib/lapack-base-dladiv","2xE":"@stdlib/lapack/base/dlaisnan","2xF":"@stdlib/lapack-base-dlaisnan","20C":"@stdlib/lapack/base/dlamch","20D":"@stdlib/lapack-base-dlamch","2IA":"@stdlib/lapack/base/dlapy2","2IB":"@stdlib/lapack-base-dlapy2","2IC":"@stdlib/lapack/base/dlapy3","2ID":"@stdlib/lapack-base-dlapy3","2yq":"@stdlib/lapack/base/dlarf","2yr":"@stdlib/lapack-base-dlarf","2V0":"@stdlib/lapack/base/dlarf1f","2V1":"@stdlib/lapack-base-dlarf1f","2OE":"@stdlib/lapack/base/dlaset","2OF":"@stdlib/lapack-base-dlaset","1yq":"@stdlib/lapack/base/dlassq","1yr":"@stdlib/lapack-base-dlassq","1xg":"@stdlib/lapack/base/dlaswp","1xh":"@stdlib/lapack-base-dlaswp","1ys":"@stdlib/lapack/base/dpttrf","1yt":"@stdlib/lapack-base-dpttrf","2IE":"@stdlib/lapack/base/iladlc","2IF":"@stdlib/lapack-base-iladlc","2IG":"@stdlib/lapack/base/iladlr","2IH":"@stdlib/lapack-base-iladlr","1xi":"@stdlib/lapack/base","1xj":"@stdlib/lapack-base","1zM":"@stdlib/lapack/base/sge-trans","1zN":"@stdlib/lapack-base-sge-trans","2OG":"@stdlib/lapack/base/shared","2OH":"@stdlib/lapack-base-shared","1yu":"@stdlib/lapack/base/slacpy","1yv":"@stdlib/lapack-base-slacpy","1zO":"@stdlib/lapack/base/slaswp","1zP":"@stdlib/lapack-base-slaswp","1yw":"@stdlib/lapack/base/spttrf","1yx":"@stdlib/lapack-base-spttrf","2OI":"@stdlib/lapack/base/xerbla","2OJ":"@stdlib/lapack-base-xerbla","26A":"@stdlib/lapack/base/zlacpy","26B":"@stdlib/lapack-base-zlacpy","27k":"@stdlib/lapack/base/zlaset","27l":"@stdlib/lapack-base-zlaset","2GG":"@stdlib/lapack/base/zlaswp","2GH":"@stdlib/lapack-base-zlaswp","26C":"@stdlib/lapack/base/zrot","26D":"@stdlib/lapack-base-zrot","1xl":"@stdlib/lapack","27m":"@stdlib/math/array","27n":"@stdlib/math-array","27o":"@stdlib/math/array/special/abs","27p":"@stdlib/math-array-special-abs","27q":"@stdlib/math/array/special","27r":"@stdlib/math-array-special","27s":"@stdlib/math/array/tools","27t":"@stdlib/math-array-tools","27u":"@stdlib/math/array/tools/unary-factory","27v":"@stdlib/math-array-tools-unary-factory","27w":"@stdlib/math/array/tools/unary","27x":"@stdlib/math-array-tools-unary","0QE":"@stdlib/math/base/assert/int32-is-even","0QF":"@stdlib/math-base-assert-int32-is-even","0QG":"@stdlib/math/base/assert/int32-is-odd","0QH":"@stdlib/math-base-assert-int32-is-odd","0QI":"@stdlib/math/base/assert/is-composite","0QJ":"@stdlib/math-base-assert-is-composite","0QK":"@stdlib/math/base/assert/is-coprime","0QL":"@stdlib/math-base-assert-is-coprime","0QM":"@stdlib/math/base/assert/is-even","0QN":"@stdlib/math-base-assert-is-even","23S":"@stdlib/math/base/assert/is-evenf","23T":"@stdlib/math-base-assert-is-evenf","0QO":"@stdlib/math/base/assert/is-finite","0QP":"@stdlib/math-base-assert-is-finite","0QQ":"@stdlib/math/base/assert/is-finitef","0QR":"@stdlib/math-base-assert-is-finitef","0QS":"@stdlib/math/base/assert/is-infinite","0QT":"@stdlib/math-base-assert-is-infinite","0QU":"@stdlib/math/base/assert/is-infinitef","0QV":"@stdlib/math-base-assert-is-infinitef","0QW":"@stdlib/math/base/assert/is-integer","0QX":"@stdlib/math-base-assert-is-integer","1zQ":"@stdlib/math/base/assert/is-integerf","1zR":"@stdlib/math-base-assert-is-integerf","0QY":"@stdlib/math/base/assert/is-nan","0QZ":"@stdlib/math-base-assert-is-nan","0Qa":"@stdlib/math/base/assert/is-nanf","0Qb":"@stdlib/math-base-assert-is-nanf","1aw":"@stdlib/math/base/assert/is-negative-finite","1ax":"@stdlib/math-base-assert-is-negative-finite","0Qc":"@stdlib/math/base/assert/is-negative-integer","0Qd":"@stdlib/math-base-assert-is-negative-integer","2TI":"@stdlib/math/base/assert/is-negative-integerf","2TJ":"@stdlib/math-base-assert-is-negative-integerf","0Qe":"@stdlib/math/base/assert/is-negative-zero","0Qf":"@stdlib/math-base-assert-is-negative-zero","0Qg":"@stdlib/math/base/assert/is-negative-zerof","0Qh":"@stdlib/math-base-assert-is-negative-zerof","1ay":"@stdlib/math/base/assert/is-nonnegative-finite","1az":"@stdlib/math-base-assert-is-nonnegative-finite","0Qi":"@stdlib/math/base/assert/is-nonnegative-integer","0Qj":"@stdlib/math-base-assert-is-nonnegative-integer","20E":"@stdlib/math/base/assert/is-nonnegative-integerf","20F":"@stdlib/math-base-assert-is-nonnegative-integerf","1b0":"@stdlib/math/base/assert/is-nonpositive-finite","1b1":"@stdlib/math-base-assert-is-nonpositive-finite","0Qk":"@stdlib/math/base/assert/is-nonpositive-integer","0Ql":"@stdlib/math-base-assert-is-nonpositive-integer","0Qm":"@stdlib/math/base/assert/is-odd","0Qn":"@stdlib/math-base-assert-is-odd","24e":"@stdlib/math/base/assert/is-oddf","24f":"@stdlib/math-base-assert-is-oddf","1b2":"@stdlib/math/base/assert/is-positive-finite","1b3":"@stdlib/math-base-assert-is-positive-finite","0Qo":"@stdlib/math/base/assert/is-positive-integer","0Qp":"@stdlib/math-base-assert-is-positive-integer","0Qq":"@stdlib/math/base/assert/is-positive-zero","0Qr":"@stdlib/math-base-assert-is-positive-zero","0Qs":"@stdlib/math/base/assert/is-positive-zerof","0Qt":"@stdlib/math-base-assert-is-positive-zerof","0Qu":"@stdlib/math/base/assert/is-prime","0Qv":"@stdlib/math-base-assert-is-prime","0Qw":"@stdlib/math/base/assert/is-probability","0Qx":"@stdlib/math-base-assert-is-probability","25q":"@stdlib/math/base/assert/is-probabilityf","25r":"@stdlib/math-base-assert-is-probabilityf","0Qy":"@stdlib/math/base/assert/is-safe-integer","0Qz":"@stdlib/math-base-assert-is-safe-integer","0R0":"@stdlib/math/base/assert","0R1":"@stdlib/math-base-assert","0R2":"@stdlib/math/base/assert/uint32-is-pow2","0R3":"@stdlib/math-base-assert-uint32-is-pow2","0R4":"@stdlib/math/base/napi/binary","0R5":"@stdlib/math-base-napi-binary","0R6":"@stdlib/math/base/napi","0R7":"@stdlib/math-base-napi","1m2":"@stdlib/math/base/napi/quaternary","1m3":"@stdlib/math-base-napi-quaternary","1m4":"@stdlib/math/base/napi/quinary","1m5":"@stdlib/math-base-napi-quinary","0R8":"@stdlib/math/base/napi/ternary","0R9":"@stdlib/math-base-napi-ternary","0RA":"@stdlib/math/base/napi/unary","0RB":"@stdlib/math-base-napi-unary","0Ro":"@stdlib/math/base","0Rp":"@stdlib/math-base","0Rq":"@stdlib/math/base/special/abs","0Rr":"@stdlib/math-base-special-abs","0Rs":"@stdlib/math/base/special/abs2","0Rt":"@stdlib/math-base-special-abs2","0Ru":"@stdlib/math/base/special/abs2f","0Rv":"@stdlib/math-base-special-abs2f","0Rw":"@stdlib/math/base/special/absf","0Rx":"@stdlib/math-base-special-absf","2TK":"@stdlib/math/base/special/absgammalnf","2TL":"@stdlib/math-base-special-absgammalnf","0Ry":"@stdlib/math/base/special/acos","0Rz":"@stdlib/math-base-special-acos","1tM":"@stdlib/math/base/special/acosd","1tN":"@stdlib/math-base-special-acosd","23U":"@stdlib/math/base/special/acosdf","23V":"@stdlib/math-base-special-acosdf","1tO":"@stdlib/math/base/special/acosf","1tP":"@stdlib/math-base-special-acosf","0S0":"@stdlib/math/base/special/acosh","0S1":"@stdlib/math-base-special-acosh","2kK":"@stdlib/math/base/special/acoshf","2kL":"@stdlib/math-base-special-acoshf","0S2":"@stdlib/math/base/special/acot","0S3":"@stdlib/math-base-special-acot","1tQ":"@stdlib/math/base/special/acotd","1tR":"@stdlib/math-base-special-acotd","20G":"@stdlib/math/base/special/acotdf","20H":"@stdlib/math-base-special-acotdf","1tS":"@stdlib/math/base/special/acotf","1tT":"@stdlib/math-base-special-acotf","0S4":"@stdlib/math/base/special/acoth","0S5":"@stdlib/math-base-special-acoth","2kM":"@stdlib/math/base/special/acothf","2kN":"@stdlib/math-base-special-acothf","0S6":"@stdlib/math/base/special/acovercos","0S7":"@stdlib/math-base-special-acovercos","20I":"@stdlib/math/base/special/acovercosf","20J":"@stdlib/math-base-special-acovercosf","0S8":"@stdlib/math/base/special/acoversin","0S9":"@stdlib/math-base-special-acoversin","20K":"@stdlib/math/base/special/acoversinf","20L":"@stdlib/math-base-special-acoversinf","0SA":"@stdlib/math/base/special/acsc","0SB":"@stdlib/math-base-special-acsc","1tU":"@stdlib/math/base/special/acscd","1tV":"@stdlib/math-base-special-acscd","1v4":"@stdlib/math/base/special/acscdf","1v5":"@stdlib/math-base-special-acscdf","1tW":"@stdlib/math/base/special/acscf","1tX":"@stdlib/math-base-special-acscf","0SC":"@stdlib/math/base/special/acsch","0SD":"@stdlib/math-base-special-acsch","0SE":"@stdlib/math/base/special/ahavercos","0SF":"@stdlib/math-base-special-ahavercos","23W":"@stdlib/math/base/special/ahavercosf","23X":"@stdlib/math-base-special-ahavercosf","0SG":"@stdlib/math/base/special/ahaversin","0SH":"@stdlib/math-base-special-ahaversin","23Y":"@stdlib/math/base/special/ahaversinf","23Z":"@stdlib/math-base-special-ahaversinf","1b6":"@stdlib/math/base/special/asec","1b7":"@stdlib/math-base-special-asec","1tY":"@stdlib/math/base/special/asecd","1tZ":"@stdlib/math-base-special-asecd","1v6":"@stdlib/math/base/special/asecdf","1v7":"@stdlib/math-base-special-asecdf","1ta":"@stdlib/math/base/special/asecf","1tb":"@stdlib/math-base-special-asecf","0SI":"@stdlib/math/base/special/asech","0SJ":"@stdlib/math-base-special-asech","0SK":"@stdlib/math/base/special/asin","0SL":"@stdlib/math-base-special-asin","1tc":"@stdlib/math/base/special/asind","1td":"@stdlib/math-base-special-asind","1v8":"@stdlib/math/base/special/asindf","1v9":"@stdlib/math-base-special-asindf","1te":"@stdlib/math/base/special/asinf","1tf":"@stdlib/math-base-special-asinf","0SM":"@stdlib/math/base/special/asinh","0SN":"@stdlib/math-base-special-asinh","2kO":"@stdlib/math/base/special/asinhf","2kP":"@stdlib/math-base-special-asinhf","0SO":"@stdlib/math/base/special/atan","0SP":"@stdlib/math-base-special-atan","0SQ":"@stdlib/math/base/special/atan2","0SR":"@stdlib/math-base-special-atan2","2Ds":"@stdlib/math/base/special/atan2d","2Dt":"@stdlib/math-base-special-atan2d","2II":"@stdlib/math/base/special/atan2f","2IJ":"@stdlib/math-base-special-atan2f","1tg":"@stdlib/math/base/special/atand","1th":"@stdlib/math-base-special-atand","20M":"@stdlib/math/base/special/atandf","20N":"@stdlib/math-base-special-atandf","1ti":"@stdlib/math/base/special/atanf","1tj":"@stdlib/math-base-special-atanf","0SS":"@stdlib/math/base/special/atanh","0ST":"@stdlib/math-base-special-atanh","2kQ":"@stdlib/math/base/special/atanhf","2kR":"@stdlib/math-base-special-atanhf","0SU":"@stdlib/math/base/special/avercos","0SV":"@stdlib/math-base-special-avercos","20O":"@stdlib/math/base/special/avercosf","20P":"@stdlib/math-base-special-avercosf","0SW":"@stdlib/math/base/special/aversin","0SX":"@stdlib/math-base-special-aversin","20Q":"@stdlib/math/base/special/aversinf","20R":"@stdlib/math-base-special-aversinf","0SY":"@stdlib/math/base/special/bernoulli","0SZ":"@stdlib/math-base-special-bernoulli","2H2":"@stdlib/math/base/special/bernoullif","2H3":"@stdlib/math-base-special-bernoullif","0Sa":"@stdlib/math/base/special/besselj0","0Sb":"@stdlib/math-base-special-besselj0","0Sc":"@stdlib/math/base/special/besselj1","0Sd":"@stdlib/math-base-special-besselj1","0Se":"@stdlib/math/base/special/bessely0","0Sf":"@stdlib/math-base-special-bessely0","0Sg":"@stdlib/math/base/special/bessely1","0Sh":"@stdlib/math-base-special-bessely1","0Si":"@stdlib/math/base/special/beta","0Sj":"@stdlib/math-base-special-beta","0Sk":"@stdlib/math/base/special/betainc","0Sl":"@stdlib/math-base-special-betainc","0Sm":"@stdlib/math/base/special/betaincinv","0Sn":"@stdlib/math-base-special-betaincinv","0So":"@stdlib/math/base/special/betaln","0Sp":"@stdlib/math-base-special-betaln","0Sq":"@stdlib/math/base/special/binet","0Sr":"@stdlib/math-base-special-binet","0Ss":"@stdlib/math/base/special/binomcoef","0St":"@stdlib/math-base-special-binomcoef","2IK":"@stdlib/math/base/special/binomcoeff","2IL":"@stdlib/math-base-special-binomcoeff","0Su":"@stdlib/math/base/special/binomcoefln","0Sv":"@stdlib/math-base-special-binomcoefln","0Sw":"@stdlib/math/base/special/boxcox","0Sx":"@stdlib/math-base-special-boxcox","0Sy":"@stdlib/math/base/special/boxcox1p","0Sz":"@stdlib/math-base-special-boxcox1p","0T0":"@stdlib/math/base/special/boxcox1pinv","0T1":"@stdlib/math-base-special-boxcox1pinv","0T2":"@stdlib/math/base/special/boxcoxinv","0T3":"@stdlib/math-base-special-boxcoxinv","0T4":"@stdlib/math/base/special/cabs","0T5":"@stdlib/math-base-special-cabs","0T6":"@stdlib/math/base/special/cabs2","0T7":"@stdlib/math-base-special-cabs2","0T8":"@stdlib/math/base/special/cabs2f","0T9":"@stdlib/math-base-special-cabs2f","0TA":"@stdlib/math/base/special/cabsf","0TB":"@stdlib/math-base-special-cabsf","0TC":"@stdlib/math/base/special/cbrt","0TD":"@stdlib/math-base-special-cbrt","0TE":"@stdlib/math/base/special/cbrtf","0TF":"@stdlib/math-base-special-cbrtf","0TG":"@stdlib/math/base/special/cceil","0TH":"@stdlib/math-base-special-cceil","0TI":"@stdlib/math/base/special/cceilf","0TJ":"@stdlib/math-base-special-cceilf","0TK":"@stdlib/math/base/special/cceiln","0TL":"@stdlib/math-base-special-cceiln","0TM":"@stdlib/math/base/special/ccis","0TN":"@stdlib/math-base-special-ccis","0TO":"@stdlib/math/base/special/ceil","0TP":"@stdlib/math-base-special-ceil","0TQ":"@stdlib/math/base/special/ceil10","0TR":"@stdlib/math-base-special-ceil10","0TS":"@stdlib/math/base/special/ceil2","0TT":"@stdlib/math-base-special-ceil2","0TU":"@stdlib/math/base/special/ceilb","0TV":"@stdlib/math-base-special-ceilb","0TW":"@stdlib/math/base/special/ceilf","0TX":"@stdlib/math-base-special-ceilf","0TY":"@stdlib/math/base/special/ceiln","0TZ":"@stdlib/math-base-special-ceiln","0Ta":"@stdlib/math/base/special/ceilsd","0Tb":"@stdlib/math-base-special-ceilsd","0Tc":"@stdlib/math/base/special/cexp","0Td":"@stdlib/math-base-special-cexp","0Te":"@stdlib/math/base/special/cflipsign","0Tf":"@stdlib/math-base-special-cflipsign","0Tg":"@stdlib/math/base/special/cflipsignf","0Th":"@stdlib/math-base-special-cflipsignf","0Ti":"@stdlib/math/base/special/cfloor","0Tj":"@stdlib/math-base-special-cfloor","23a":"@stdlib/math/base/special/cfloorf","23b":"@stdlib/math-base-special-cfloorf","0Tk":"@stdlib/math/base/special/cfloorn","0Tl":"@stdlib/math-base-special-cfloorn","0Tq":"@stdlib/math/base/special/cinv","0Tr":"@stdlib/math-base-special-cinv","2IM":"@stdlib/math/base/special/cinvf","2IN":"@stdlib/math-base-special-cinvf","0Ts":"@stdlib/math/base/special/clamp","0Tt":"@stdlib/math-base-special-clamp","0Tu":"@stdlib/math/base/special/clampf","0Tv":"@stdlib/math-base-special-clampf","0Tw":"@stdlib/math/base/special/copysign","0Tx":"@stdlib/math-base-special-copysign","0Ty":"@stdlib/math/base/special/copysignf","0Tz":"@stdlib/math-base-special-copysignf","0U0":"@stdlib/math/base/special/cos","0U1":"@stdlib/math-base-special-cos","1tk":"@stdlib/math/base/special/cosd","1tl":"@stdlib/math-base-special-cosd","2TM":"@stdlib/math/base/special/cosdf","2TN":"@stdlib/math-base-special-cosdf","2KK":"@stdlib/math/base/special/cosf","2KL":"@stdlib/math-base-special-cosf","0U2":"@stdlib/math/base/special/cosh","0U3":"@stdlib/math-base-special-cosh","2kS":"@stdlib/math/base/special/coshf","2kT":"@stdlib/math-base-special-coshf","0U4":"@stdlib/math/base/special/cosm1","0U5":"@stdlib/math-base-special-cosm1","2KM":"@stdlib/math/base/special/cosm1f","2KN":"@stdlib/math-base-special-cosm1f","0U6":"@stdlib/math/base/special/cospi","0U7":"@stdlib/math-base-special-cospi","2Rq":"@stdlib/math/base/special/cospif","2Rr":"@stdlib/math-base-special-cospif","0U8":"@stdlib/math/base/special/cot","0U9":"@stdlib/math-base-special-cot","1tm":"@stdlib/math/base/special/cotd","1tn":"@stdlib/math-base-special-cotd","2TO":"@stdlib/math/base/special/cotdf","2TP":"@stdlib/math-base-special-cotdf","2TQ":"@stdlib/math/base/special/cotf","2TR":"@stdlib/math-base-special-cotf","0UA":"@stdlib/math/base/special/coth","0UB":"@stdlib/math-base-special-coth","0UC":"@stdlib/math/base/special/covercos","0UD":"@stdlib/math-base-special-covercos","2KO":"@stdlib/math/base/special/covercosf","2KP":"@stdlib/math-base-special-covercosf","0UE":"@stdlib/math/base/special/coversin","0UF":"@stdlib/math-base-special-coversin","2KQ":"@stdlib/math/base/special/coversinf","2KR":"@stdlib/math-base-special-coversinf","0UG":"@stdlib/math/base/special/cphase","0UH":"@stdlib/math-base-special-cphase","2KS":"@stdlib/math/base/special/cphasef","2KT":"@stdlib/math-base-special-cphasef","0UI":"@stdlib/math/base/special/cpolar","0UJ":"@stdlib/math-base-special-cpolar","2Rs":"@stdlib/math/base/special/cpolarf","2Rt":"@stdlib/math-base-special-cpolarf","0UK":"@stdlib/math/base/special/cround","0UL":"@stdlib/math-base-special-cround","23c":"@stdlib/math/base/special/croundf","23d":"@stdlib/math-base-special-croundf","0UM":"@stdlib/math/base/special/croundn","0UN":"@stdlib/math-base-special-croundn","1si":"@stdlib/math/base/special/csc","1sj":"@stdlib/math-base-special-csc","1to":"@stdlib/math/base/special/cscd","1tp":"@stdlib/math-base-special-cscd","2TS":"@stdlib/math/base/special/cscdf","2TT":"@stdlib/math-base-special-cscdf","2KU":"@stdlib/math/base/special/cscf","2KV":"@stdlib/math-base-special-cscf","0UO":"@stdlib/math/base/special/csch","0UP":"@stdlib/math-base-special-csch","0UQ":"@stdlib/math/base/special/csignum","0UR":"@stdlib/math-base-special-csignum","2Du":"@stdlib/math/base/special/csignumf","2Dv":"@stdlib/math-base-special-csignumf","0US":"@stdlib/math/base/special/deg2rad","0UT":"@stdlib/math-base-special-deg2rad","0UU":"@stdlib/math/base/special/deg2radf","0UV":"@stdlib/math-base-special-deg2radf","0UW":"@stdlib/math/base/special/digamma","0UX":"@stdlib/math-base-special-digamma","0UY":"@stdlib/math/base/special/dirac-delta","0UZ":"@stdlib/math-base-special-dirac-delta","25s":"@stdlib/math/base/special/dirac-deltaf","25t":"@stdlib/math-base-special-dirac-deltaf","0Ua":"@stdlib/math/base/special/dirichlet-eta","0Ub":"@stdlib/math-base-special-dirichlet-eta","0Uc":"@stdlib/math/base/special/ellipe","0Ud":"@stdlib/math-base-special-ellipe","1b8":"@stdlib/math/base/special/ellipj","1b9":"@stdlib/math-base-special-ellipj","0Ue":"@stdlib/math/base/special/ellipk","0Uf":"@stdlib/math-base-special-ellipk","0Ug":"@stdlib/math/base/special/erf","0Uh":"@stdlib/math-base-special-erf","0Ui":"@stdlib/math/base/special/erfc","0Uj":"@stdlib/math-base-special-erfc","0Uk":"@stdlib/math/base/special/erfcinv","0Ul":"@stdlib/math-base-special-erfcinv","1bA":"@stdlib/math/base/special/erfcx","1bB":"@stdlib/math-base-special-erfcx","0Um":"@stdlib/math/base/special/erfinv","0Un":"@stdlib/math-base-special-erfinv","0Uo":"@stdlib/math/base/special/exp","0Up":"@stdlib/math-base-special-exp","0Uq":"@stdlib/math/base/special/exp10","0Ur":"@stdlib/math-base-special-exp10","0Us":"@stdlib/math/base/special/exp2","0Ut":"@stdlib/math-base-special-exp2","0Uu":"@stdlib/math/base/special/expit","0Uv":"@stdlib/math-base-special-expit","0Uw":"@stdlib/math/base/special/expm1","0Ux":"@stdlib/math-base-special-expm1","0Uy":"@stdlib/math/base/special/expm1rel","0Uz":"@stdlib/math-base-special-expm1rel","0V0":"@stdlib/math/base/special/factorial","0V1":"@stdlib/math-base-special-factorial","1mG":"@stdlib/math/base/special/factorial2","1mH":"@stdlib/math-base-special-factorial2","2IO":"@stdlib/math/base/special/factorial2f","2IP":"@stdlib/math-base-special-factorial2f","0V2":"@stdlib/math/base/special/factorialln","0V3":"@stdlib/math-base-special-factorialln","2TU":"@stdlib/math/base/special/factoriallnf","2TV":"@stdlib/math-base-special-factoriallnf","0V4":"@stdlib/math/base/special/falling-factorial","0V5":"@stdlib/math-base-special-falling-factorial","0V6":"@stdlib/math/base/special/fast/abs","0V7":"@stdlib/math-base-special-fast-abs","2V2":"@stdlib/math/base/special/fast/absf","2V3":"@stdlib/math-base-special-fast-absf","0V8":"@stdlib/math/base/special/fast/acosh","0V9":"@stdlib/math-base-special-fast-acosh","0VA":"@stdlib/math/base/special/fast/alpha-max-plus-beta-min","0VB":"@stdlib/math-base-special-fast-alpha-max-plus-beta-min","0VC":"@stdlib/math/base/special/fast/asinh","0VD":"@stdlib/math-base-special-fast-asinh","0VE":"@stdlib/math/base/special/fast/atanh","0VF":"@stdlib/math-base-special-fast-atanh","2kU":"@stdlib/math/base/special/fast/atanhf","2kV":"@stdlib/math-base-special-fast-atanhf","0VG":"@stdlib/math/base/special/fast/hypot","0VH":"@stdlib/math-base-special-fast-hypot","2VO":"@stdlib/math/base/special/fast/hypotf","2VP":"@stdlib/math-base-special-fast-hypotf","0VI":"@stdlib/math/base/special/fast/max","0VJ":"@stdlib/math-base-special-fast-max","2W4":"@stdlib/math/base/special/fast/maxf","2W5":"@stdlib/math-base-special-fast-maxf","0VK":"@stdlib/math/base/special/fast/min","0VL":"@stdlib/math-base-special-fast-min","2WO":"@stdlib/math/base/special/fast/minf","2WP":"@stdlib/math-base-special-fast-minf","0VM":"@stdlib/math/base/special/fast","0VN":"@stdlib/math-base-special-fast","0VO":"@stdlib/math/base/special/fast/pow-int","0VP":"@stdlib/math-base-special-fast-pow-int","0VQ":"@stdlib/math/base/special/fast/uint32-log2","0VR":"@stdlib/math-base-special-fast-uint32-log2","0VS":"@stdlib/math/base/special/fast/uint32-sqrt","0VT":"@stdlib/math-base-special-fast-uint32-sqrt","0VU":"@stdlib/math/base/special/fibonacci-index","0VV":"@stdlib/math-base-special-fibonacci-index","2EW":"@stdlib/math/base/special/fibonacci-indexf","2EX":"@stdlib/math-base-special-fibonacci-indexf","0VW":"@stdlib/math/base/special/fibonacci","0VX":"@stdlib/math-base-special-fibonacci","2Dw":"@stdlib/math/base/special/fibonaccif","2Dx":"@stdlib/math-base-special-fibonaccif","0VY":"@stdlib/math/base/special/flipsign","0VZ":"@stdlib/math-base-special-flipsign","0Va":"@stdlib/math/base/special/flipsignf","0Vb":"@stdlib/math-base-special-flipsignf","0Vc":"@stdlib/math/base/special/floor","0Vd":"@stdlib/math-base-special-floor","0Ve":"@stdlib/math/base/special/floor10","0Vf":"@stdlib/math-base-special-floor10","0Vg":"@stdlib/math/base/special/floor2","0Vh":"@stdlib/math-base-special-floor2","2kW":"@stdlib/math/base/special/floor2f","2kX":"@stdlib/math-base-special-floor2f","0Vi":"@stdlib/math/base/special/floorb","0Vj":"@stdlib/math-base-special-floorb","0Vk":"@stdlib/math/base/special/floorf","0Vl":"@stdlib/math-base-special-floorf","0Vm":"@stdlib/math/base/special/floorn","0Vn":"@stdlib/math-base-special-floorn","2kY":"@stdlib/math/base/special/floornf","2kZ":"@stdlib/math-base-special-floornf","0Vo":"@stdlib/math/base/special/floorsd","0Vp":"@stdlib/math-base-special-floorsd","1yQ":"@stdlib/math/base/special/fmod","1yR":"@stdlib/math-base-special-fmod","23e":"@stdlib/math/base/special/fmodf","23f":"@stdlib/math-base-special-fmodf","0Vq":"@stdlib/math/base/special/fresnel","0Vr":"@stdlib/math-base-special-fresnel","0Vs":"@stdlib/math/base/special/fresnelc","0Vt":"@stdlib/math-base-special-fresnelc","0Vu":"@stdlib/math/base/special/fresnels","0Vv":"@stdlib/math-base-special-fresnels","0Vw":"@stdlib/math/base/special/frexp","0Vx":"@stdlib/math-base-special-frexp","2KW":"@stdlib/math/base/special/frexpf","2KX":"@stdlib/math-base-special-frexpf","0Vy":"@stdlib/math/base/special/gamma-delta-ratio","0Vz":"@stdlib/math-base-special-gamma-delta-ratio","0W0":"@stdlib/math/base/special/gamma-lanczos-sum-expg-scaled","0W1":"@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled","2KY":"@stdlib/math/base/special/gamma-lanczos-sum-expg-scaledf","2KZ":"@stdlib/math-base-special-gamma-lanczos-sum-expg-scaledf","0W2":"@stdlib/math/base/special/gamma-lanczos-sum","0W3":"@stdlib/math-base-special-gamma-lanczos-sum","0W4":"@stdlib/math/base/special/gamma","0W5":"@stdlib/math-base-special-gamma","0W6":"@stdlib/math/base/special/gamma1pm1","0W7":"@stdlib/math-base-special-gamma1pm1","0W8":"@stdlib/math/base/special/gammainc","0W9":"@stdlib/math-base-special-gammainc","0WA":"@stdlib/math/base/special/gammaincinv","0WB":"@stdlib/math-base-special-gammaincinv","0WC":"@stdlib/math/base/special/gammaln","0WD":"@stdlib/math-base-special-gammaln","1bC":"@stdlib/math/base/special/gammasgn","1bD":"@stdlib/math-base-special-gammasgn","2H4":"@stdlib/math/base/special/gammasgnf","2H5":"@stdlib/math-base-special-gammasgnf","0WE":"@stdlib/math/base/special/gcd","0WF":"@stdlib/math-base-special-gcd","23g":"@stdlib/math/base/special/gcdf","23h":"@stdlib/math-base-special-gcdf","0WG":"@stdlib/math/base/special/hacovercos","0WH":"@stdlib/math-base-special-hacovercos","2Ka":"@stdlib/math/base/special/hacovercosf","2Kb":"@stdlib/math-base-special-hacovercosf","0WI":"@stdlib/math/base/special/hacoversin","0WJ":"@stdlib/math-base-special-hacoversin","2Kc":"@stdlib/math/base/special/hacoversinf","2Kd":"@stdlib/math-base-special-hacoversinf","0WK":"@stdlib/math/base/special/havercos","0WL":"@stdlib/math-base-special-havercos","2Ke":"@stdlib/math/base/special/havercosf","2Kf":"@stdlib/math-base-special-havercosf","0WM":"@stdlib/math/base/special/haversin","0WN":"@stdlib/math-base-special-haversin","2Kg":"@stdlib/math/base/special/haversinf","2Kh":"@stdlib/math-base-special-haversinf","0WO":"@stdlib/math/base/special/heaviside","0WP":"@stdlib/math-base-special-heaviside","26E":"@stdlib/math/base/special/heavisidef","26F":"@stdlib/math-base-special-heavisidef","27y":"@stdlib/math/base/special/hyp2f1","27z":"@stdlib/math-base-special-hyp2f1","0WQ":"@stdlib/math/base/special/hypot","0WR":"@stdlib/math-base-special-hypot","0WS":"@stdlib/math/base/special/hypotf","0WT":"@stdlib/math-base-special-hypotf","0WY":"@stdlib/math/base/special/inv","0WZ":"@stdlib/math-base-special-inv","0Wa":"@stdlib/math/base/special/invf","0Wb":"@stdlib/math-base-special-invf","0Wc":"@stdlib/math/base/special/kernel-betainc","0Wd":"@stdlib/math-base-special-kernel-betainc","0We":"@stdlib/math/base/special/kernel-betaincinv","0Wf":"@stdlib/math-base-special-kernel-betaincinv","0Wg":"@stdlib/math/base/special/kernel-cos","0Wh":"@stdlib/math-base-special-kernel-cos","2IQ":"@stdlib/math/base/special/kernel-cosf","2IR":"@stdlib/math-base-special-kernel-cosf","1vA":"@stdlib/math/base/special/kernel-log1p","1vB":"@stdlib/math-base-special-kernel-log1p","2OK":"@stdlib/math/base/special/kernel-log1pf","2OL":"@stdlib/math-base-special-kernel-log1pf","0Wi":"@stdlib/math/base/special/kernel-sin","0Wj":"@stdlib/math-base-special-kernel-sin","2Ru":"@stdlib/math/base/special/kernel-sincos","2Rv":"@stdlib/math-base-special-kernel-sincos","2TW":"@stdlib/math/base/special/kernel-sincosf","2TX":"@stdlib/math-base-special-kernel-sincosf","2IS":"@stdlib/math/base/special/kernel-sinf","2IT":"@stdlib/math-base-special-kernel-sinf","0Wk":"@stdlib/math/base/special/kernel-tan","0Wl":"@stdlib/math-base-special-kernel-tan","2Ki":"@stdlib/math/base/special/kernel-tanf","2Kj":"@stdlib/math-base-special-kernel-tanf","0Wm":"@stdlib/math/base/special/kronecker-delta","0Wn":"@stdlib/math-base-special-kronecker-delta","0Wo":"@stdlib/math/base/special/kronecker-deltaf","0Wp":"@stdlib/math-base-special-kronecker-deltaf","0Wq":"@stdlib/math/base/special/labs","0Wr":"@stdlib/math-base-special-labs","0Ws":"@stdlib/math/base/special/lcm","0Wt":"@stdlib/math-base-special-lcm","24g":"@stdlib/math/base/special/lcmf","24h":"@stdlib/math-base-special-lcmf","0Wu":"@stdlib/math/base/special/ldexp","0Wv":"@stdlib/math-base-special-ldexp","20S":"@stdlib/math/base/special/ldexpf","20T":"@stdlib/math-base-special-ldexpf","0Ww":"@stdlib/math/base/special/ln","0Wx":"@stdlib/math-base-special-ln","1wq":"@stdlib/math/base/special/lnf","1wr":"@stdlib/math-base-special-lnf","0Wy":"@stdlib/math/base/special/log","0Wz":"@stdlib/math-base-special-log","0X0":"@stdlib/math/base/special/log10","0X1":"@stdlib/math-base-special-log10","0X2":"@stdlib/math/base/special/log1mexp","0X3":"@stdlib/math-base-special-log1mexp","0X4":"@stdlib/math/base/special/log1p","0X5":"@stdlib/math-base-special-log1p","0X6":"@stdlib/math/base/special/log1pexp","0X7":"@stdlib/math-base-special-log1pexp","2a4":"@stdlib/math/base/special/log1pf","2a5":"@stdlib/math-base-special-log1pf","1im":"@stdlib/math/base/special/log1pmx","1in":"@stdlib/math-base-special-log1pmx","0X8":"@stdlib/math/base/special/log2","0X9":"@stdlib/math-base-special-log2","0XA":"@stdlib/math/base/special/logaddexp","0XB":"@stdlib/math-base-special-logaddexp","20U":"@stdlib/math/base/special/logf","20V":"@stdlib/math-base-special-logf","0XC":"@stdlib/math/base/special/logit","0XD":"@stdlib/math-base-special-logit","2GI":"@stdlib/math/base/special/logitf","2GJ":"@stdlib/math-base-special-logitf","0XE":"@stdlib/math/base/special/lucas","0XF":"@stdlib/math-base-special-lucas","2Eo":"@stdlib/math/base/special/lucasf","2Ep":"@stdlib/math-base-special-lucasf","0XG":"@stdlib/math/base/special/max","0XH":"@stdlib/math-base-special-max","0XI":"@stdlib/math/base/special/maxabs","0XJ":"@stdlib/math-base-special-maxabs","20W":"@stdlib/math/base/special/maxabsf","20X":"@stdlib/math-base-special-maxabsf","1bE":"@stdlib/math/base/special/maxabsn","1bF":"@stdlib/math-base-special-maxabsn","20Y":"@stdlib/math/base/special/maxf","20Z":"@stdlib/math-base-special-maxf","1bG":"@stdlib/math/base/special/maxn","1bH":"@stdlib/math-base-special-maxn","0XK":"@stdlib/math/base/special/min","0XL":"@stdlib/math-base-special-min","0XM":"@stdlib/math/base/special/minabs","0XN":"@stdlib/math-base-special-minabs","20a":"@stdlib/math/base/special/minabsf","20b":"@stdlib/math-base-special-minabsf","1bI":"@stdlib/math/base/special/minabsn","1bJ":"@stdlib/math-base-special-minabsn","20c":"@stdlib/math/base/special/minf","20d":"@stdlib/math-base-special-minf","0XO":"@stdlib/math/base/special/minmax","0XP":"@stdlib/math-base-special-minmax","0XQ":"@stdlib/math/base/special/minmaxabs","0XR":"@stdlib/math-base-special-minmaxabs","2Kk":"@stdlib/math/base/special/minmaxabsf","2Kl":"@stdlib/math-base-special-minmaxabsf","1bK":"@stdlib/math/base/special/minmaxabsn","1bL":"@stdlib/math-base-special-minmaxabsn","2Km":"@stdlib/math/base/special/minmaxf","2Kn":"@stdlib/math-base-special-minmaxf","1bM":"@stdlib/math/base/special/minmaxn","1bN":"@stdlib/math-base-special-minmaxn","1bO":"@stdlib/math/base/special/minn","1bP":"@stdlib/math-base-special-minn","0XS":"@stdlib/math/base/special/modf","0XT":"@stdlib/math-base-special-modf","2Ko":"@stdlib/math/base/special/modff","2Kp":"@stdlib/math-base-special-modff","1ws":"@stdlib/math/base/special/nanmax","1wt":"@stdlib/math-base-special-nanmax","23i":"@stdlib/math/base/special/nanmaxf","23j":"@stdlib/math-base-special-nanmaxf","1wu":"@stdlib/math/base/special/nanmin","1wv":"@stdlib/math-base-special-nanmin","23k":"@stdlib/math/base/special/nanminf","23l":"@stdlib/math-base-special-nanminf","0XU":"@stdlib/math/base/special/negafibonacci","0XV":"@stdlib/math-base-special-negafibonacci","2IU":"@stdlib/math/base/special/negafibonaccif","2IV":"@stdlib/math-base-special-negafibonaccif","0XW":"@stdlib/math/base/special/negalucas","0XX":"@stdlib/math-base-special-negalucas","24i":"@stdlib/math/base/special/negalucasf","24j":"@stdlib/math-base-special-negalucasf","0XY":"@stdlib/math/base/special/nonfibonacci","0XZ":"@stdlib/math-base-special-nonfibonacci","24k":"@stdlib/math/base/special/nonfibonaccif","24l":"@stdlib/math-base-special-nonfibonaccif","0Xa":"@stdlib/math/base/special","0Xb":"@stdlib/math-base-special","0Xc":"@stdlib/math/base/special/pdiff","0Xd":"@stdlib/math-base-special-pdiff","0Xe":"@stdlib/math/base/special/pdifff","0Xf":"@stdlib/math-base-special-pdifff","0Xg":"@stdlib/math/base/special/polygamma","0Xh":"@stdlib/math-base-special-polygamma","0Xi":"@stdlib/math/base/special/pow","0Xj":"@stdlib/math-base-special-pow","2a6":"@stdlib/math/base/special/powf","2a7":"@stdlib/math-base-special-powf","0Xk":"@stdlib/math/base/special/powm1","0Xl":"@stdlib/math-base-special-powm1","0Xm":"@stdlib/math/base/special/rad2deg","0Xn":"@stdlib/math-base-special-rad2deg","1tq":"@stdlib/math/base/special/rad2degf","1tr":"@stdlib/math-base-special-rad2degf","0Xo":"@stdlib/math/base/special/ramp","0Xp":"@stdlib/math-base-special-ramp","0Xq":"@stdlib/math/base/special/rampf","0Xr":"@stdlib/math-base-special-rampf","1bQ":"@stdlib/math/base/special/rcbrt","1bR":"@stdlib/math-base-special-rcbrt","1vC":"@stdlib/math/base/special/rcbrtf","1vD":"@stdlib/math-base-special-rcbrtf","0Xs":"@stdlib/math/base/special/rempio2","0Xt":"@stdlib/math-base-special-rempio2","2IW":"@stdlib/math/base/special/rempio2f","2IX":"@stdlib/math-base-special-rempio2f","0Xu":"@stdlib/math/base/special/riemann-zeta","0Xv":"@stdlib/math-base-special-riemann-zeta","0Xw":"@stdlib/math/base/special/rising-factorial","0Xx":"@stdlib/math-base-special-rising-factorial","2OM":"@stdlib/math/base/special/round-nearest-even","2ON":"@stdlib/math-base-special-round-nearest-even","0Xy":"@stdlib/math/base/special/round","0Xz":"@stdlib/math-base-special-round","0Y0":"@stdlib/math/base/special/round10","0Y1":"@stdlib/math-base-special-round10","0Y2":"@stdlib/math/base/special/round2","0Y3":"@stdlib/math-base-special-round2","0Y4":"@stdlib/math/base/special/roundb","0Y5":"@stdlib/math-base-special-roundb","1zS":"@stdlib/math/base/special/roundf","1zT":"@stdlib/math-base-special-roundf","0Y6":"@stdlib/math/base/special/roundn","0Y7":"@stdlib/math-base-special-roundn","2ka":"@stdlib/math/base/special/roundnf","2kb":"@stdlib/math-base-special-roundnf","0Y8":"@stdlib/math/base/special/roundsd","0Y9":"@stdlib/math-base-special-roundsd","0YA":"@stdlib/math/base/special/rsqrt","0YB":"@stdlib/math-base-special-rsqrt","0YC":"@stdlib/math/base/special/rsqrtf","0YD":"@stdlib/math-base-special-rsqrtf","23m":"@stdlib/math/base/special/sec","23n":"@stdlib/math-base-special-sec","1ts":"@stdlib/math/base/special/secd","1tt":"@stdlib/math-base-special-secd","2TY":"@stdlib/math/base/special/secdf","2TZ":"@stdlib/math-base-special-secdf","2Kq":"@stdlib/math/base/special/secf","2Kr":"@stdlib/math-base-special-secf","2OO":"@stdlib/math/base/special/sech","2OP":"@stdlib/math-base-special-sech","0YE":"@stdlib/math/base/special/sici","0YF":"@stdlib/math-base-special-sici","0YG":"@stdlib/math/base/special/signum","0YH":"@stdlib/math-base-special-signum","0YI":"@stdlib/math/base/special/signumf","0YJ":"@stdlib/math-base-special-signumf","0YK":"@stdlib/math/base/special/sin","0YL":"@stdlib/math-base-special-sin","0YM":"@stdlib/math/base/special/sinc","0YN":"@stdlib/math-base-special-sinc","2Ta":"@stdlib/math/base/special/sincf","2Tb":"@stdlib/math-base-special-sincf","0YO":"@stdlib/math/base/special/sincos","0YP":"@stdlib/math-base-special-sincos","2AO":"@stdlib/math/base/special/sincosd","2AP":"@stdlib/math-base-special-sincosd","2kc":"@stdlib/math/base/special/sincosdf","2kd":"@stdlib/math-base-special-sincosdf","2Tc":"@stdlib/math/base/special/sincosf","2Td":"@stdlib/math-base-special-sincosf","0YQ":"@stdlib/math/base/special/sincospi","0YR":"@stdlib/math-base-special-sincospi","2AQ":"@stdlib/math/base/special/sind","2AR":"@stdlib/math-base-special-sind","2Te":"@stdlib/math/base/special/sindf","2Tf":"@stdlib/math-base-special-sindf","2Ks":"@stdlib/math/base/special/sinf","2Kt":"@stdlib/math-base-special-sinf","0YS":"@stdlib/math/base/special/sinh","0YT":"@stdlib/math-base-special-sinh","0YU":"@stdlib/math/base/special/sinpi","0YV":"@stdlib/math-base-special-sinpi","2Rw":"@stdlib/math/base/special/sinpif","2Rx":"@stdlib/math-base-special-sinpif","0YW":"@stdlib/math/base/special/spence","0YX":"@stdlib/math-base-special-spence","2IY":"@stdlib/math/base/special/spencef","2IZ":"@stdlib/math-base-special-spencef","0YY":"@stdlib/math/base/special/sqrt","0YZ":"@stdlib/math-base-special-sqrt","0Ya":"@stdlib/math/base/special/sqrt1pm1","0Yb":"@stdlib/math-base-special-sqrt1pm1","0Yc":"@stdlib/math/base/special/sqrtf","0Yd":"@stdlib/math-base-special-sqrtf","1bS":"@stdlib/math/base/special/sqrtpi","1bT":"@stdlib/math-base-special-sqrtpi","24m":"@stdlib/math/base/special/sqrtpif","24n":"@stdlib/math-base-special-sqrtpif","0Ye":"@stdlib/math/base/special/tan","0Yf":"@stdlib/math-base-special-tan","1tu":"@stdlib/math/base/special/tand","1tv":"@stdlib/math-base-special-tand","2Tg":"@stdlib/math/base/special/tandf","2Th":"@stdlib/math-base-special-tandf","2Ku":"@stdlib/math/base/special/tanf","2Kv":"@stdlib/math-base-special-tanf","0Yg":"@stdlib/math/base/special/tanh","0Yh":"@stdlib/math-base-special-tanh","0Yi":"@stdlib/math/base/special/tribonacci","0Yj":"@stdlib/math-base-special-tribonacci","2Ia":"@stdlib/math/base/special/tribonaccif","2Ib":"@stdlib/math-base-special-tribonaccif","0Yk":"@stdlib/math/base/special/trigamma","0Yl":"@stdlib/math-base-special-trigamma","2Ti":"@stdlib/math/base/special/trigammaf","2Tj":"@stdlib/math-base-special-trigammaf","0Ym":"@stdlib/math/base/special/trunc","0Yn":"@stdlib/math-base-special-trunc","0Yo":"@stdlib/math/base/special/trunc10","0Yp":"@stdlib/math-base-special-trunc10","0Yq":"@stdlib/math/base/special/trunc2","0Yr":"@stdlib/math-base-special-trunc2","0Ys":"@stdlib/math/base/special/truncb","0Yt":"@stdlib/math-base-special-truncb","0Yu":"@stdlib/math/base/special/truncf","0Yv":"@stdlib/math-base-special-truncf","0Yw":"@stdlib/math/base/special/truncn","0Yx":"@stdlib/math-base-special-truncn","0Yy":"@stdlib/math/base/special/truncsd","0Yz":"@stdlib/math-base-special-truncsd","0Z0":"@stdlib/math/base/special/vercos","0Z1":"@stdlib/math-base-special-vercos","2Kw":"@stdlib/math/base/special/vercosf","2Kx":"@stdlib/math-base-special-vercosf","0Z2":"@stdlib/math/base/special/versin","0Z3":"@stdlib/math-base-special-versin","2Ky":"@stdlib/math/base/special/versinf","2Kz":"@stdlib/math-base-special-versinf","0Z4":"@stdlib/math/base/special/wrap","0Z5":"@stdlib/math-base-special-wrap","2Ic":"@stdlib/math/base/special/wrapf","2Id":"@stdlib/math-base-special-wrapf","0Z6":"@stdlib/math/base/special/xlog1py","0Z7":"@stdlib/math-base-special-xlog1py","0Z8":"@stdlib/math/base/special/xlogy","0Z9":"@stdlib/math-base-special-xlogy","20e":"@stdlib/math/base/special/xlogyf","20f":"@stdlib/math-base-special-xlogyf","2ke":"@stdlib/math/base/tools/chebyshev-series","2kf":"@stdlib/math-base-tools-chebyshev-series","2kg":"@stdlib/math/base/tools/chebyshev-seriesf","2kh":"@stdlib/math-base-tools-chebyshev-seriesf","0ZA":"@stdlib/math/base/tools/continued-fraction","0ZB":"@stdlib/math-base-tools-continued-fraction","1bU":"@stdlib/math/base/tools/evalpoly-compile-c","1bV":"@stdlib/math-base-tools-evalpoly-compile-c","0ZC":"@stdlib/math/base/tools/evalpoly-compile","0ZD":"@stdlib/math-base-tools-evalpoly-compile","0ZE":"@stdlib/math/base/tools/evalpoly","0ZF":"@stdlib/math-base-tools-evalpoly","1tw":"@stdlib/math/base/tools/evalpolyf","1tx":"@stdlib/math-base-tools-evalpolyf","1bW":"@stdlib/math/base/tools/evalrational-compile-c","1bX":"@stdlib/math-base-tools-evalrational-compile-c","0ZG":"@stdlib/math/base/tools/evalrational-compile","0ZH":"@stdlib/math-base-tools-evalrational-compile","0ZI":"@stdlib/math/base/tools/evalrational","0ZJ":"@stdlib/math-base-tools-evalrational","1ty":"@stdlib/math/base/tools/evalrationalf","1tz":"@stdlib/math-base-tools-evalrationalf","0ZK":"@stdlib/math/base/tools/fibpoly","0ZL":"@stdlib/math-base-tools-fibpoly","0ZM":"@stdlib/math/base/tools/hermitepoly","0ZN":"@stdlib/math-base-tools-hermitepoly","0ZO":"@stdlib/math/base/tools/lucaspoly","0ZP":"@stdlib/math-base-tools-lucaspoly","0ZQ":"@stdlib/math/base/tools/normhermitepoly","0ZR":"@stdlib/math-base-tools-normhermitepoly","1vE":"@stdlib/math/base/tools/normhermitepolyf","1vF":"@stdlib/math-base-tools-normhermitepolyf","0ZS":"@stdlib/math/base/tools","0ZT":"@stdlib/math-base-tools","0ZU":"@stdlib/math/base/tools/sum-series","0ZV":"@stdlib/math-base-tools-sum-series","0ZW":"@stdlib/math/base/utils/absolute-difference","0ZX":"@stdlib/math-base-utils-absolute-difference","0ZY":"@stdlib/math/base/utils/float64-epsilon-difference","0ZZ":"@stdlib/math-base-utils-float64-epsilon-difference","0Za":"@stdlib/math/base/utils","0Zb":"@stdlib/math-base-utils","0Zc":"@stdlib/math/base/utils/relative-difference","0Zd":"@stdlib/math-base-utils-relative-difference","0Ze":"@stdlib/math/iter/ops/add","0Zf":"@stdlib/math-iter-ops-add","0Zg":"@stdlib/math/iter/ops/divide","0Zh":"@stdlib/math-iter-ops-divide","0Zi":"@stdlib/math/iter/ops/mod","0Zj":"@stdlib/math-iter-ops-mod","0Zk":"@stdlib/math/iter/ops/multiply","0Zl":"@stdlib/math-iter-ops-multiply","0Zm":"@stdlib/math/iter/ops","0Zn":"@stdlib/math-iter-ops","0Zo":"@stdlib/math/iter/ops/subtract","0Zp":"@stdlib/math-iter-ops-subtract","0Zq":"@stdlib/math/iter","0Zr":"@stdlib/math-iter","0Zs":"@stdlib/math/iter/sequences/composites","0Zt":"@stdlib/math-iter-sequences-composites","0Zu":"@stdlib/math/iter/sequences/continued-fraction","0Zv":"@stdlib/math-iter-sequences-continued-fraction","0Zw":"@stdlib/math/iter/sequences/cubes","0Zx":"@stdlib/math-iter-sequences-cubes","0Zy":"@stdlib/math/iter/sequences/even-integers","0Zz":"@stdlib/math-iter-sequences-even-integers","0a0":"@stdlib/math/iter/sequences/factorials","0a1":"@stdlib/math-iter-sequences-factorials","0a2":"@stdlib/math/iter/sequences/fibonacci","0a3":"@stdlib/math-iter-sequences-fibonacci","0a4":"@stdlib/math/iter/sequences/fifth-powers","0a5":"@stdlib/math-iter-sequences-fifth-powers","0a6":"@stdlib/math/iter/sequences/fourth-powers","0a7":"@stdlib/math-iter-sequences-fourth-powers","0a8":"@stdlib/math/iter/sequences/integers","0a9":"@stdlib/math-iter-sequences-integers","0aA":"@stdlib/math/iter/sequences/lucas","0aB":"@stdlib/math-iter-sequences-lucas","0aC":"@stdlib/math/iter/sequences/negafibonacci","0aD":"@stdlib/math-iter-sequences-negafibonacci","0aE":"@stdlib/math/iter/sequences/negalucas","0aF":"@stdlib/math-iter-sequences-negalucas","0aG":"@stdlib/math/iter/sequences/negative-even-integers","0aH":"@stdlib/math-iter-sequences-negative-even-integers","0aI":"@stdlib/math/iter/sequences/negative-integers","0aJ":"@stdlib/math-iter-sequences-negative-integers","0aK":"@stdlib/math/iter/sequences/negative-odd-integers","0aL":"@stdlib/math-iter-sequences-negative-odd-integers","0aM":"@stdlib/math/iter/sequences/nonfibonacci","0aN":"@stdlib/math-iter-sequences-nonfibonacci","0aO":"@stdlib/math/iter/sequences/nonnegative-even-integers","0aP":"@stdlib/math-iter-sequences-nonnegative-even-integers","0aQ":"@stdlib/math/iter/sequences/nonnegative-integers","0aR":"@stdlib/math-iter-sequences-nonnegative-integers","0aS":"@stdlib/math/iter/sequences/nonpositive-even-integers","0aT":"@stdlib/math-iter-sequences-nonpositive-even-integers","0aU":"@stdlib/math/iter/sequences/nonpositive-integers","0aV":"@stdlib/math-iter-sequences-nonpositive-integers","0aW":"@stdlib/math/iter/sequences/nonsquares","0aX":"@stdlib/math-iter-sequences-nonsquares","0aY":"@stdlib/math/iter/sequences/odd-integers","0aZ":"@stdlib/math-iter-sequences-odd-integers","0aa":"@stdlib/math/iter/sequences","0ab":"@stdlib/math-iter-sequences","0ac":"@stdlib/math/iter/sequences/positive-even-integers","0ad":"@stdlib/math-iter-sequences-positive-even-integers","0ae":"@stdlib/math/iter/sequences/positive-integers","0af":"@stdlib/math-iter-sequences-positive-integers","0ag":"@stdlib/math/iter/sequences/positive-odd-integers","0ah":"@stdlib/math-iter-sequences-positive-odd-integers","0ai":"@stdlib/math/iter/sequences/primes","0aj":"@stdlib/math-iter-sequences-primes","0ak":"@stdlib/math/iter/sequences/squared-triangular","0al":"@stdlib/math-iter-sequences-squared-triangular","0am":"@stdlib/math/iter/sequences/squares","0an":"@stdlib/math-iter-sequences-squares","0ao":"@stdlib/math/iter/sequences/triangular","0ap":"@stdlib/math-iter-sequences-triangular","1sk":"@stdlib/math/iter/sequences/tribonacci","1sl":"@stdlib/math-iter-sequences-tribonacci","0aq":"@stdlib/math/iter/special/abs","0ar":"@stdlib/math-iter-special-abs","0as":"@stdlib/math/iter/special/abs2","0at":"@stdlib/math-iter-special-abs2","0au":"@stdlib/math/iter/special/acos","0av":"@stdlib/math-iter-special-acos","0aw":"@stdlib/math/iter/special/acosh","0ax":"@stdlib/math-iter-special-acosh","0ay":"@stdlib/math/iter/special/acot","0az":"@stdlib/math-iter-special-acot","0b0":"@stdlib/math/iter/special/acoth","0b1":"@stdlib/math-iter-special-acoth","0b2":"@stdlib/math/iter/special/acovercos","0b3":"@stdlib/math-iter-special-acovercos","0b4":"@stdlib/math/iter/special/acoversin","0b5":"@stdlib/math-iter-special-acoversin","0b6":"@stdlib/math/iter/special/ahavercos","0b7":"@stdlib/math-iter-special-ahavercos","0b8":"@stdlib/math/iter/special/ahaversin","0b9":"@stdlib/math-iter-special-ahaversin","0bA":"@stdlib/math/iter/special/asin","0bB":"@stdlib/math-iter-special-asin","0bC":"@stdlib/math/iter/special/asinh","0bD":"@stdlib/math-iter-special-asinh","0bE":"@stdlib/math/iter/special/atan","0bF":"@stdlib/math-iter-special-atan","0bG":"@stdlib/math/iter/special/atan2","0bH":"@stdlib/math-iter-special-atan2","0bI":"@stdlib/math/iter/special/atanh","0bJ":"@stdlib/math-iter-special-atanh","0bK":"@stdlib/math/iter/special/avercos","0bL":"@stdlib/math-iter-special-avercos","0bM":"@stdlib/math/iter/special/aversin","0bN":"@stdlib/math-iter-special-aversin","0bO":"@stdlib/math/iter/special/besselj0","0bP":"@stdlib/math-iter-special-besselj0","0bQ":"@stdlib/math/iter/special/besselj1","0bR":"@stdlib/math-iter-special-besselj1","0bS":"@stdlib/math/iter/special/bessely0","0bT":"@stdlib/math-iter-special-bessely0","0bU":"@stdlib/math/iter/special/bessely1","0bV":"@stdlib/math-iter-special-bessely1","0bW":"@stdlib/math/iter/special/beta","0bX":"@stdlib/math-iter-special-beta","0bY":"@stdlib/math/iter/special/betaln","0bZ":"@stdlib/math-iter-special-betaln","0ba":"@stdlib/math/iter/special/binet","0bb":"@stdlib/math-iter-special-binet","0bc":"@stdlib/math/iter/special/cbrt","0bd":"@stdlib/math-iter-special-cbrt","0be":"@stdlib/math/iter/special/ceil","0bf":"@stdlib/math-iter-special-ceil","0bg":"@stdlib/math/iter/special/ceil10","0bh":"@stdlib/math-iter-special-ceil10","0bi":"@stdlib/math/iter/special/ceil2","0bj":"@stdlib/math-iter-special-ceil2","0bk":"@stdlib/math/iter/special/cos","0bl":"@stdlib/math-iter-special-cos","0bm":"@stdlib/math/iter/special/cosh","0bn":"@stdlib/math-iter-special-cosh","0bo":"@stdlib/math/iter/special/cosm1","0bp":"@stdlib/math-iter-special-cosm1","0bq":"@stdlib/math/iter/special/cospi","0br":"@stdlib/math-iter-special-cospi","0bs":"@stdlib/math/iter/special/covercos","0bt":"@stdlib/math-iter-special-covercos","0bu":"@stdlib/math/iter/special/coversin","0bv":"@stdlib/math-iter-special-coversin","0bw":"@stdlib/math/iter/special/deg2rad","0bx":"@stdlib/math-iter-special-deg2rad","0by":"@stdlib/math/iter/special/digamma","0bz":"@stdlib/math-iter-special-digamma","0c0":"@stdlib/math/iter/special/dirac-delta","0c1":"@stdlib/math-iter-special-dirac-delta","0c2":"@stdlib/math/iter/special/dirichlet-eta","0c3":"@stdlib/math-iter-special-dirichlet-eta","0c4":"@stdlib/math/iter/special/ellipe","0c5":"@stdlib/math-iter-special-ellipe","0c6":"@stdlib/math/iter/special/ellipk","0c7":"@stdlib/math-iter-special-ellipk","0c8":"@stdlib/math/iter/special/erf","0c9":"@stdlib/math-iter-special-erf","0cA":"@stdlib/math/iter/special/erfc","0cB":"@stdlib/math-iter-special-erfc","0cC":"@stdlib/math/iter/special/erfcinv","0cD":"@stdlib/math-iter-special-erfcinv","0cE":"@stdlib/math/iter/special/erfinv","0cF":"@stdlib/math-iter-special-erfinv","0cG":"@stdlib/math/iter/special/exp","0cH":"@stdlib/math-iter-special-exp","0cI":"@stdlib/math/iter/special/exp10","0cJ":"@stdlib/math-iter-special-exp10","0cK":"@stdlib/math/iter/special/exp2","0cL":"@stdlib/math-iter-special-exp2","0cM":"@stdlib/math/iter/special/expit","0cN":"@stdlib/math-iter-special-expit","0cO":"@stdlib/math/iter/special/expm1","0cP":"@stdlib/math-iter-special-expm1","0cQ":"@stdlib/math/iter/special/expm1rel","0cR":"@stdlib/math-iter-special-expm1rel","0cS":"@stdlib/math/iter/special/factorial","0cT":"@stdlib/math-iter-special-factorial","0cU":"@stdlib/math/iter/special/factorialln","0cV":"@stdlib/math-iter-special-factorialln","0cW":"@stdlib/math/iter/special/floor","0cX":"@stdlib/math-iter-special-floor","0cY":"@stdlib/math/iter/special/floor10","0cZ":"@stdlib/math-iter-special-floor10","0ca":"@stdlib/math/iter/special/floor2","0cb":"@stdlib/math-iter-special-floor2","0cc":"@stdlib/math/iter/special/fresnelc","0cd":"@stdlib/math-iter-special-fresnelc","0ce":"@stdlib/math/iter/special/fresnels","0cf":"@stdlib/math-iter-special-fresnels","0cg":"@stdlib/math/iter/special/gamma","0ch":"@stdlib/math-iter-special-gamma","0ci":"@stdlib/math/iter/special/gamma1pm1","0cj":"@stdlib/math-iter-special-gamma1pm1","0ck":"@stdlib/math/iter/special/gammaln","0cl":"@stdlib/math-iter-special-gammaln","0cm":"@stdlib/math/iter/special/hacovercos","0cn":"@stdlib/math-iter-special-hacovercos","0co":"@stdlib/math/iter/special/hacoversin","0cp":"@stdlib/math-iter-special-hacoversin","0cq":"@stdlib/math/iter/special/havercos","0cr":"@stdlib/math-iter-special-havercos","0cs":"@stdlib/math/iter/special/haversin","0ct":"@stdlib/math-iter-special-haversin","0cu":"@stdlib/math/iter/special/inv","0cv":"@stdlib/math-iter-special-inv","0cw":"@stdlib/math/iter/special/ln","0cx":"@stdlib/math-iter-special-ln","0cy":"@stdlib/math/iter/special/log","0cz":"@stdlib/math-iter-special-log","0d0":"@stdlib/math/iter/special/log10","0d1":"@stdlib/math-iter-special-log10","0d2":"@stdlib/math/iter/special/log1mexp","0d3":"@stdlib/math-iter-special-log1mexp","0d4":"@stdlib/math/iter/special/log1p","0d5":"@stdlib/math-iter-special-log1p","0d6":"@stdlib/math/iter/special/log1pexp","0d7":"@stdlib/math-iter-special-log1pexp","0d8":"@stdlib/math/iter/special/log2","0d9":"@stdlib/math-iter-special-log2","0dA":"@stdlib/math/iter/special/logit","0dB":"@stdlib/math-iter-special-logit","0dC":"@stdlib/math/iter/special","0dD":"@stdlib/math-iter-special","0dE":"@stdlib/math/iter/special/pow","0dF":"@stdlib/math-iter-special-pow","0dG":"@stdlib/math/iter/special/rad2deg","0dH":"@stdlib/math-iter-special-rad2deg","0dI":"@stdlib/math/iter/special/ramp","0dJ":"@stdlib/math-iter-special-ramp","0dK":"@stdlib/math/iter/special/riemann-zeta","0dL":"@stdlib/math-iter-special-riemann-zeta","0dM":"@stdlib/math/iter/special/round","0dN":"@stdlib/math-iter-special-round","0dO":"@stdlib/math/iter/special/round10","0dP":"@stdlib/math-iter-special-round10","0dQ":"@stdlib/math/iter/special/round2","0dR":"@stdlib/math-iter-special-round2","0dS":"@stdlib/math/iter/special/rsqrt","0dT":"@stdlib/math-iter-special-rsqrt","0dU":"@stdlib/math/iter/special/signum","0dV":"@stdlib/math-iter-special-signum","0dW":"@stdlib/math/iter/special/sin","0dX":"@stdlib/math-iter-special-sin","0dY":"@stdlib/math/iter/special/sinc","0dZ":"@stdlib/math-iter-special-sinc","0da":"@stdlib/math/iter/special/sinh","0db":"@stdlib/math-iter-special-sinh","0dc":"@stdlib/math/iter/special/sinpi","0dd":"@stdlib/math-iter-special-sinpi","0de":"@stdlib/math/iter/special/spence","0df":"@stdlib/math-iter-special-spence","0dg":"@stdlib/math/iter/special/sqrt","0dh":"@stdlib/math-iter-special-sqrt","0di":"@stdlib/math/iter/special/sqrt1pm1","0dj":"@stdlib/math-iter-special-sqrt1pm1","0dk":"@stdlib/math/iter/special/tan","0dl":"@stdlib/math-iter-special-tan","0dm":"@stdlib/math/iter/special/tanh","0dn":"@stdlib/math-iter-special-tanh","0do":"@stdlib/math/iter/special/trigamma","0dp":"@stdlib/math-iter-special-trigamma","0dq":"@stdlib/math/iter/special/trunc","0dr":"@stdlib/math-iter-special-trunc","0ds":"@stdlib/math/iter/special/trunc10","0dt":"@stdlib/math-iter-special-trunc10","0du":"@stdlib/math/iter/special/trunc2","0dv":"@stdlib/math-iter-special-trunc2","0dw":"@stdlib/math/iter/special/vercos","0dx":"@stdlib/math-iter-special-vercos","0dy":"@stdlib/math/iter/special/versin","0dz":"@stdlib/math-iter-special-versin","0e0":"@stdlib/math/iter/tools/map","0e1":"@stdlib/math-iter-tools-map","0e2":"@stdlib/math/iter/tools/map2","0e3":"@stdlib/math-iter-tools-map2","0e4":"@stdlib/math/iter/tools/map3","0e5":"@stdlib/math-iter-tools-map3","0e6":"@stdlib/math/iter/tools","0e7":"@stdlib/math-iter-tools","0e8":"@stdlib/math/iter/utils/continued-fraction","0e9":"@stdlib/math-iter-utils-continued-fraction","0eA":"@stdlib/math/iter/utils","0eB":"@stdlib/math-iter-utils","0eD":"@stdlib/math","0eE":"@stdlib/math/special/abs","0eF":"@stdlib/math-special-abs","0eG":"@stdlib/math/special","0eH":"@stdlib/math-special","1bY":"@stdlib/math/strided/ops/add-by","1bZ":"@stdlib/math-strided-ops-add-by","0eI":"@stdlib/math/strided/ops/add","0eJ":"@stdlib/math-strided-ops-add","1ba":"@stdlib/math/strided/ops/mul-by","1bb":"@stdlib/math-strided-ops-mul-by","0eK":"@stdlib/math/strided/ops/mul","0eL":"@stdlib/math-strided-ops-mul","0eM":"@stdlib/math/strided/ops","0eN":"@stdlib/math-strided-ops","1bc":"@stdlib/math/strided/ops/sub-by","1bd":"@stdlib/math-strided-ops-sub-by","0eO":"@stdlib/math/strided/ops/sub","0eP":"@stdlib/math-strided-ops-sub","0eQ":"@stdlib/math/strided","0eR":"@stdlib/math-strided","0eS":"@stdlib/math/strided/special/abs-by","0eT":"@stdlib/math-strided-special-abs-by","0eU":"@stdlib/math/strided/special/abs","0eV":"@stdlib/math-strided-special-abs","0eW":"@stdlib/math/strided/special/abs2-by","0eX":"@stdlib/math-strided-special-abs2-by","0eY":"@stdlib/math/strided/special/abs2","0eZ":"@stdlib/math-strided-special-abs2","0ea":"@stdlib/math/strided/special/acos-by","0eb":"@stdlib/math-strided-special-acos-by","0ec":"@stdlib/math/strided/special/acosh-by","0ed":"@stdlib/math-strided-special-acosh-by","0ee":"@stdlib/math/strided/special/acot-by","0ef":"@stdlib/math-strided-special-acot-by","0eg":"@stdlib/math/strided/special/acoth-by","0eh":"@stdlib/math-strided-special-acoth-by","0ei":"@stdlib/math/strided/special/acovercos-by","0ej":"@stdlib/math-strided-special-acovercos-by","0ek":"@stdlib/math/strided/special/acoversin-by","0el":"@stdlib/math-strided-special-acoversin-by","0em":"@stdlib/math/strided/special/ahavercos-by","0en":"@stdlib/math-strided-special-ahavercos-by","0eo":"@stdlib/math/strided/special/ahaversin-by","0ep":"@stdlib/math-strided-special-ahaversin-by","0eq":"@stdlib/math/strided/special/asin-by","0er":"@stdlib/math-strided-special-asin-by","0es":"@stdlib/math/strided/special/asinh-by","0et":"@stdlib/math-strided-special-asinh-by","0eu":"@stdlib/math/strided/special/atan-by","0ev":"@stdlib/math-strided-special-atan-by","0ew":"@stdlib/math/strided/special/atanh-by","0ex":"@stdlib/math-strided-special-atanh-by","0ey":"@stdlib/math/strided/special/avercos-by","0ez":"@stdlib/math-strided-special-avercos-by","0f0":"@stdlib/math/strided/special/aversin-by","0f1":"@stdlib/math-strided-special-aversin-by","0f2":"@stdlib/math/strided/special/besselj0-by","0f3":"@stdlib/math-strided-special-besselj0-by","0f4":"@stdlib/math/strided/special/besselj1-by","0f5":"@stdlib/math-strided-special-besselj1-by","0f6":"@stdlib/math/strided/special/bessely0-by","0f7":"@stdlib/math-strided-special-bessely0-by","0f8":"@stdlib/math/strided/special/bessely1-by","0f9":"@stdlib/math-strided-special-bessely1-by","0fA":"@stdlib/math/strided/special/binet-by","0fB":"@stdlib/math-strided-special-binet-by","1be":"@stdlib/math/strided/special/cbrt-by","1bf":"@stdlib/math-strided-special-cbrt-by","0fC":"@stdlib/math/strided/special/cbrt","0fD":"@stdlib/math-strided-special-cbrt","0fE":"@stdlib/math/strided/special/ceil","0fF":"@stdlib/math-strided-special-ceil","1bg":"@stdlib/math/strided/special/cos-by","1bh":"@stdlib/math-strided-special-cos-by","0fG":"@stdlib/math/strided/special/dabs","0fH":"@stdlib/math-strided-special-dabs","0fI":"@stdlib/math/strided/special/dabs2","0fJ":"@stdlib/math-strided-special-dabs2","1bi":"@stdlib/math/strided/special/dcbrt-by","1bj":"@stdlib/math-strided-special-dcbrt-by","0fK":"@stdlib/math/strided/special/dcbrt","0fL":"@stdlib/math-strided-special-dcbrt","0fM":"@stdlib/math/strided/special/dceil","0fN":"@stdlib/math-strided-special-dceil","0fO":"@stdlib/math/strided/special/ddeg2rad","0fP":"@stdlib/math-strided-special-ddeg2rad","0fQ":"@stdlib/math/strided/special/deg2rad","0fR":"@stdlib/math-strided-special-deg2rad","0fS":"@stdlib/math/strided/special/dfloor","0fT":"@stdlib/math-strided-special-dfloor","0fU":"@stdlib/math/strided/special/dinv","0fV":"@stdlib/math-strided-special-dinv","0fW":"@stdlib/math/strided/special/dmskabs","0fX":"@stdlib/math-strided-special-dmskabs","0fY":"@stdlib/math/strided/special/dmskabs2","0fZ":"@stdlib/math-strided-special-dmskabs2","0fa":"@stdlib/math/strided/special/dmskcbrt","0fb":"@stdlib/math-strided-special-dmskcbrt","0fc":"@stdlib/math/strided/special/dmskceil","0fd":"@stdlib/math-strided-special-dmskceil","0fe":"@stdlib/math/strided/special/dmskdeg2rad","0ff":"@stdlib/math-strided-special-dmskdeg2rad","0fg":"@stdlib/math/strided/special/dmskfloor","0fh":"@stdlib/math-strided-special-dmskfloor","0fi":"@stdlib/math/strided/special/dmskinv","0fj":"@stdlib/math-strided-special-dmskinv","0fk":"@stdlib/math/strided/special/dmskramp","0fl":"@stdlib/math-strided-special-dmskramp","0fm":"@stdlib/math/strided/special/dmskrsqrt","0fn":"@stdlib/math-strided-special-dmskrsqrt","0fo":"@stdlib/math/strided/special/dmsksqrt","0fp":"@stdlib/math-strided-special-dmsksqrt","0fq":"@stdlib/math/strided/special/dmsktrunc","0fr":"@stdlib/math-strided-special-dmsktrunc","0fs":"@stdlib/math/strided/special/dramp","0ft":"@stdlib/math-strided-special-dramp","0fu":"@stdlib/math/strided/special/drsqrt","0fv":"@stdlib/math-strided-special-drsqrt","0fw":"@stdlib/math/strided/special/dsqrt","0fx":"@stdlib/math-strided-special-dsqrt","0fy":"@stdlib/math/strided/special/dtrunc","0fz":"@stdlib/math-strided-special-dtrunc","0g0":"@stdlib/math/strided/special/floor","0g1":"@stdlib/math-strided-special-floor","0g2":"@stdlib/math/strided/special/inv","0g3":"@stdlib/math-strided-special-inv","0g4":"@stdlib/math/strided/special","0g5":"@stdlib/math-strided-special","0g6":"@stdlib/math/strided/special/ramp","0g7":"@stdlib/math-strided-special-ramp","0g8":"@stdlib/math/strided/special/rsqrt","0g9":"@stdlib/math-strided-special-rsqrt","0gA":"@stdlib/math/strided/special/sabs","0gB":"@stdlib/math-strided-special-sabs","0gC":"@stdlib/math/strided/special/sabs2","0gD":"@stdlib/math-strided-special-sabs2","0gE":"@stdlib/math/strided/special/scbrt","0gF":"@stdlib/math-strided-special-scbrt","0gG":"@stdlib/math/strided/special/sceil","0gH":"@stdlib/math-strided-special-sceil","0gI":"@stdlib/math/strided/special/sdeg2rad","0gJ":"@stdlib/math-strided-special-sdeg2rad","0gK":"@stdlib/math/strided/special/sfloor","0gL":"@stdlib/math-strided-special-sfloor","1bk":"@stdlib/math/strided/special/sin-by","1bl":"@stdlib/math-strided-special-sin-by","0gM":"@stdlib/math/strided/special/sinv","0gN":"@stdlib/math-strided-special-sinv","0gO":"@stdlib/math/strided/special/smskabs","0gP":"@stdlib/math-strided-special-smskabs","0gQ":"@stdlib/math/strided/special/smskabs2","0gR":"@stdlib/math-strided-special-smskabs2","0gS":"@stdlib/math/strided/special/smskcbrt","0gT":"@stdlib/math-strided-special-smskcbrt","0gU":"@stdlib/math/strided/special/smskceil","0gV":"@stdlib/math-strided-special-smskceil","0gW":"@stdlib/math/strided/special/smskdeg2rad","0gX":"@stdlib/math-strided-special-smskdeg2rad","0gY":"@stdlib/math/strided/special/smskfloor","0gZ":"@stdlib/math-strided-special-smskfloor","0ga":"@stdlib/math/strided/special/smskinv","0gb":"@stdlib/math-strided-special-smskinv","0gc":"@stdlib/math/strided/special/smskramp","0gd":"@stdlib/math-strided-special-smskramp","0ge":"@stdlib/math/strided/special/smskrsqrt","0gf":"@stdlib/math-strided-special-smskrsqrt","0gg":"@stdlib/math/strided/special/smsksqrt","0gh":"@stdlib/math-strided-special-smsksqrt","0gi":"@stdlib/math/strided/special/smsktrunc","0gj":"@stdlib/math-strided-special-smsktrunc","1bm":"@stdlib/math/strided/special/sqrt-by","1bn":"@stdlib/math-strided-special-sqrt-by","0gk":"@stdlib/math/strided/special/sqrt","0gl":"@stdlib/math-strided-special-sqrt","0gm":"@stdlib/math/strided/special/sramp","0gn":"@stdlib/math-strided-special-sramp","0go":"@stdlib/math/strided/special/srsqrt","0gp":"@stdlib/math-strided-special-srsqrt","0gq":"@stdlib/math/strided/special/ssqrt","0gr":"@stdlib/math-strided-special-ssqrt","0gs":"@stdlib/math/strided/special/strunc","0gt":"@stdlib/math-strided-special-strunc","0gu":"@stdlib/math/strided/special/trunc","0gv":"@stdlib/math-strided-special-trunc","0gw":"@stdlib/math/tools","0gx":"@stdlib/math-tools","0gy":"@stdlib/math/tools/unary","0gz":"@stdlib/math-tools-unary","2ki":"@stdlib/ml/base/kmeans/algorithm-enum2str","2kj":"@stdlib/ml-base-kmeans-algorithm-enum2str","2kk":"@stdlib/ml/base/kmeans/algorithm-resolve-enum","2kl":"@stdlib/ml-base-kmeans-algorithm-resolve-enum","2km":"@stdlib/ml/base/kmeans/algorithm-resolve-str","2kn":"@stdlib/ml-base-kmeans-algorithm-resolve-str","2ko":"@stdlib/ml/base/kmeans/algorithm-str2enum","2kp":"@stdlib/ml-base-kmeans-algorithm-str2enum","2kq":"@stdlib/ml/base/kmeans/algorithms","2kr":"@stdlib/ml-base-kmeans-algorithms","2ks":"@stdlib/ml/base/kmeans/metric-enum2str","2kt":"@stdlib/ml-base-kmeans-metric-enum2str","2ku":"@stdlib/ml/base/kmeans/metric-resolve-enum","2kv":"@stdlib/ml-base-kmeans-metric-resolve-enum","2kw":"@stdlib/ml/base/kmeans/metric-resolve-str","2kx":"@stdlib/ml-base-kmeans-metric-resolve-str","2ky":"@stdlib/ml/base/kmeans/metric-str2enum","2kz":"@stdlib/ml-base-kmeans-metric-str2enum","2l0":"@stdlib/ml/base/kmeans/metrics","2l1":"@stdlib/ml-base-kmeans-metrics","2xG":"@stdlib/ml/base/kmeans/results/struct-factory","2xH":"@stdlib/ml-base-kmeans-results-struct-factory","0h0":"@stdlib/ml/incr/binary-classification","0h1":"@stdlib/ml-incr-binary-classification","0h2":"@stdlib/ml/incr/kmeans","0h3":"@stdlib/ml-incr-kmeans","0h4":"@stdlib/ml/incr","0h5":"@stdlib/ml-incr","0h6":"@stdlib/ml/incr/sgd-regression","0h7":"@stdlib/ml-incr-sgd-regression","0h9":"@stdlib/ml","2ys":"@stdlib/ml/strided/dkmeans-distance","2yt":"@stdlib/ml-strided-dkmeans-distance","0hA":"@stdlib/namespace/alias2pkg","0hB":"@stdlib/namespace-alias2pkg","0hC":"@stdlib/namespace/alias2related","0hD":"@stdlib/namespace-alias2related","0hE":"@stdlib/namespace/alias2standalone","0hF":"@stdlib/namespace-alias2standalone","0hG":"@stdlib/namespace/aliases","0hH":"@stdlib/namespace-aliases","0hJ":"@stdlib/namespace","0hK":"@stdlib/namespace/pkg2alias","0hL":"@stdlib/namespace-pkg2alias","0hM":"@stdlib/namespace/pkg2related","0hN":"@stdlib/namespace-pkg2related","0hO":"@stdlib/namespace/pkg2standalone","0hP":"@stdlib/namespace-pkg2standalone","0hQ":"@stdlib/namespace/standalone2pkg","0hR":"@stdlib/namespace-standalone2pkg","2l2":"@stdlib/napi/argv-booleanarray","2l3":"@stdlib/napi-argv-booleanarray","1vG":"@stdlib/napi/argv-complex128","1vH":"@stdlib/napi-argv-complex128","1bo":"@stdlib/napi/argv-complex128array","1bp":"@stdlib/napi-argv-complex128array","1vI":"@stdlib/napi/argv-complex64","1vJ":"@stdlib/napi-argv-complex64","1bq":"@stdlib/napi/argv-complex64array","1br":"@stdlib/napi-argv-complex64array","2L0":"@stdlib/napi/argv-dataview-cast","2L1":"@stdlib/napi-argv-dataview-cast","2L2":"@stdlib/napi/argv-dataview","2L3":"@stdlib/napi-argv-dataview","1bs":"@stdlib/napi/argv-double","1bt":"@stdlib/napi-argv-double","1bu":"@stdlib/napi/argv-float","1bv":"@stdlib/napi-argv-float","1bw":"@stdlib/napi/argv-float32array","1bx":"@stdlib/napi-argv-float32array","1by":"@stdlib/napi/argv-float64array","1bz":"@stdlib/napi-argv-float64array","1c0":"@stdlib/napi/argv-int16array","1c1":"@stdlib/napi-argv-int16array","1c2":"@stdlib/napi/argv-int32","1c3":"@stdlib/napi-argv-int32","1c4":"@stdlib/napi/argv-int32array","1c5":"@stdlib/napi-argv-int32array","1c6":"@stdlib/napi/argv-int64","1c7":"@stdlib/napi-argv-int64","1c8":"@stdlib/napi/argv-int8array","1c9":"@stdlib/napi-argv-int8array","2l4":"@stdlib/napi/argv-strided-booleanarray","2l5":"@stdlib/napi-argv-strided-booleanarray","2l6":"@stdlib/napi/argv-strided-booleanarray2d","2l7":"@stdlib/napi-argv-strided-booleanarray2d","1cA":"@stdlib/napi/argv-strided-complex128array","1cB":"@stdlib/napi-argv-strided-complex128array","20g":"@stdlib/napi/argv-strided-complex128array2d","20h":"@stdlib/napi-argv-strided-complex128array2d","1cC":"@stdlib/napi/argv-strided-complex64array","1cD":"@stdlib/napi-argv-strided-complex64array","20i":"@stdlib/napi/argv-strided-complex64array2d","20j":"@stdlib/napi-argv-strided-complex64array2d","1cE":"@stdlib/napi/argv-strided-float32array","1cF":"@stdlib/napi-argv-strided-float32array","20k":"@stdlib/napi/argv-strided-float32array2d","20l":"@stdlib/napi-argv-strided-float32array2d","1cG":"@stdlib/napi/argv-strided-float64array","1cH":"@stdlib/napi-argv-strided-float64array","20m":"@stdlib/napi/argv-strided-float64array2d","20n":"@stdlib/napi-argv-strided-float64array2d","1cI":"@stdlib/napi/argv-strided-int16array","1cJ":"@stdlib/napi-argv-strided-int16array","20o":"@stdlib/napi/argv-strided-int16array2d","20p":"@stdlib/napi-argv-strided-int16array2d","1cK":"@stdlib/napi/argv-strided-int32array","1cL":"@stdlib/napi-argv-strided-int32array","20q":"@stdlib/napi/argv-strided-int32array2d","20r":"@stdlib/napi-argv-strided-int32array2d","1cM":"@stdlib/napi/argv-strided-int8array","1cN":"@stdlib/napi-argv-strided-int8array","20s":"@stdlib/napi/argv-strided-int8array2d","20t":"@stdlib/napi-argv-strided-int8array2d","1cO":"@stdlib/napi/argv-strided-uint16array","1cP":"@stdlib/napi-argv-strided-uint16array","20u":"@stdlib/napi/argv-strided-uint16array2d","20v":"@stdlib/napi-argv-strided-uint16array2d","1cQ":"@stdlib/napi/argv-strided-uint32array","1cR":"@stdlib/napi-argv-strided-uint32array","20w":"@stdlib/napi/argv-strided-uint32array2d","20x":"@stdlib/napi-argv-strided-uint32array2d","1cS":"@stdlib/napi/argv-strided-uint8array","1cT":"@stdlib/napi-argv-strided-uint8array","20y":"@stdlib/napi/argv-strided-uint8array2d","20z":"@stdlib/napi-argv-strided-uint8array2d","1cU":"@stdlib/napi/argv-uint16array","1cV":"@stdlib/napi-argv-uint16array","1cW":"@stdlib/napi/argv-uint32","1cX":"@stdlib/napi-argv-uint32","1cY":"@stdlib/napi/argv-uint32array","1cZ":"@stdlib/napi-argv-uint32array","2l8":"@stdlib/napi/argv-uint64","2l9":"@stdlib/napi-argv-uint64","1ca":"@stdlib/napi/argv-uint8array","1cb":"@stdlib/napi-argv-uint8array","1cc":"@stdlib/napi/argv","1cd":"@stdlib/napi-argv","2xI":"@stdlib/napi/create-boolean","2xJ":"@stdlib/napi-create-boolean","1vK":"@stdlib/napi/create-complex-like","1vL":"@stdlib/napi-create-complex-like","1vM":"@stdlib/napi/create-double","1vN":"@stdlib/napi-create-double","1vO":"@stdlib/napi/create-int32","1vP":"@stdlib/napi-create-int32","2lA":"@stdlib/napi/create-int64","2lB":"@stdlib/napi-create-int64","1vQ":"@stdlib/napi/create-uint32","1vR":"@stdlib/napi-create-uint32","2lC":"@stdlib/napi/create-uint64","2lD":"@stdlib/napi-create-uint64","1ce":"@stdlib/napi/export","1cf":"@stdlib/napi-export","1ch":"@stdlib/napi","2WQ":"@stdlib/ndarray/any-by","2WR":"@stdlib/ndarray-any-by","2WS":"@stdlib/ndarray/any","2WT":"@stdlib/ndarray-any","0hS":"@stdlib/ndarray/array","0hT":"@stdlib/ndarray-array","1q2":"@stdlib/ndarray/at","1q3":"@stdlib/ndarray-at","2VQ":"@stdlib/ndarray/base/any-by","2VR":"@stdlib/ndarray-base-any-by","2V4":"@stdlib/ndarray/base/any","2V5":"@stdlib/ndarray-base-any","2lE":"@stdlib/ndarray/base/append-singleton-dimensions","2lF":"@stdlib/ndarray-base-append-singleton-dimensions","0hU":"@stdlib/ndarray/base/assert/is-allowed-data-type-cast","0hV":"@stdlib/ndarray-base-assert-is-allowed-data-type-cast","2yu":"@stdlib/ndarray/base/assert/is-binary-data-type","2yv":"@stdlib/ndarray-base-assert-is-binary-data-type","1xm":"@stdlib/ndarray/base/assert/is-boolean-data-type","1xn":"@stdlib/ndarray-base-assert-is-boolean-data-type","2Fe":"@stdlib/ndarray/base/assert/is-boolean-index-data-type","2Ff":"@stdlib/ndarray-base-assert-is-boolean-index-data-type","0hW":"@stdlib/ndarray/base/assert/is-buffer-length-compatible-shape","0hX":"@stdlib/ndarray-base-assert-is-buffer-length-compatible-shape","0hY":"@stdlib/ndarray/base/assert/is-buffer-length-compatible","0hZ":"@stdlib/ndarray-base-assert-is-buffer-length-compatible","0ha":"@stdlib/ndarray/base/assert/is-casting-mode","0hb":"@stdlib/ndarray-base-assert-is-casting-mode","0hc":"@stdlib/ndarray/base/assert/is-column-major-contiguous","0hd":"@stdlib/ndarray-base-assert-is-column-major-contiguous","25u":"@stdlib/ndarray/base/assert/is-column-major-string","25v":"@stdlib/ndarray-base-assert-is-column-major-string","0he":"@stdlib/ndarray/base/assert/is-column-major","0hf":"@stdlib/ndarray-base-assert-is-column-major","2Wo":"@stdlib/ndarray/base/assert/is-complex-floating-point-data-type-char","2Wp":"@stdlib/ndarray-base-assert-is-complex-floating-point-data-type-char","1ci":"@stdlib/ndarray/base/assert/is-complex-floating-point-data-type","1cj":"@stdlib/ndarray-base-assert-is-complex-floating-point-data-type","0hg":"@stdlib/ndarray/base/assert/is-contiguous","0hh":"@stdlib/ndarray-base-assert-is-contiguous","2W6":"@stdlib/ndarray/base/assert/is-data-type-object","2W7":"@stdlib/ndarray-base-assert-is-data-type-object","2OQ":"@stdlib/ndarray/base/assert/is-data-type-string","2OR":"@stdlib/ndarray-base-assert-is-data-type-string","0hi":"@stdlib/ndarray/base/assert/is-data-type","0hj":"@stdlib/ndarray-base-assert-is-data-type","2W8":"@stdlib/ndarray/base/assert/is-equal-data-type","2W9":"@stdlib/ndarray-base-assert-is-equal-data-type","1ck":"@stdlib/ndarray/base/assert/is-floating-point-data-type","1cl":"@stdlib/ndarray-base-assert-is-floating-point-data-type","2yw":"@stdlib/ndarray/base/assert/is-generic-data-type","2yx":"@stdlib/ndarray-base-assert-is-generic-data-type","2Fg":"@stdlib/ndarray/base/assert/is-index-data-type","2Fh":"@stdlib/ndarray-base-assert-is-index-data-type","0hk":"@stdlib/ndarray/base/assert/is-index-mode","0hl":"@stdlib/ndarray-base-assert-is-index-mode","2Fi":"@stdlib/ndarray/base/assert/is-input-casting-policy","2Fj":"@stdlib/ndarray-base-assert-is-input-casting-policy","1cm":"@stdlib/ndarray/base/assert/is-integer-data-type","1cn":"@stdlib/ndarray-base-assert-is-integer-data-type","2Fk":"@stdlib/ndarray/base/assert/is-integer-index-data-type","2Fl":"@stdlib/ndarray-base-assert-is-integer-index-data-type","2Fm":"@stdlib/ndarray/base/assert/is-mask-index-data-type","2Fn":"@stdlib/ndarray-base-assert-is-mask-index-data-type","1kE":"@stdlib/ndarray/base/assert/is-mostly-safe-data-type-cast","1kF":"@stdlib/ndarray-base-assert-is-mostly-safe-data-type-cast","1co":"@stdlib/ndarray/base/assert/is-numeric-data-type","1cp":"@stdlib/ndarray-base-assert-is-numeric-data-type","0hm":"@stdlib/ndarray/base/assert/is-order","0hn":"@stdlib/ndarray-base-assert-is-order","0ho":"@stdlib/ndarray/base/assert/is-read-only","0hp":"@stdlib/ndarray-base-assert-is-read-only","1cq":"@stdlib/ndarray/base/assert/is-real-data-type","1cr":"@stdlib/ndarray-base-assert-is-real-data-type","1cs":"@stdlib/ndarray/base/assert/is-real-floating-point-data-type","1ct":"@stdlib/ndarray-base-assert-is-real-floating-point-data-type","0hq":"@stdlib/ndarray/base/assert/is-row-major-contiguous","0hr":"@stdlib/ndarray-base-assert-is-row-major-contiguous","25w":"@stdlib/ndarray/base/assert/is-row-major-string","25x":"@stdlib/ndarray-base-assert-is-row-major-string","0hs":"@stdlib/ndarray/base/assert/is-row-major","0ht":"@stdlib/ndarray-base-assert-is-row-major","0hu":"@stdlib/ndarray/base/assert/is-safe-data-type-cast","0hv":"@stdlib/ndarray-base-assert-is-safe-data-type-cast","0hw":"@stdlib/ndarray/base/assert/is-same-kind-data-type-cast","0hx":"@stdlib/ndarray-base-assert-is-same-kind-data-type-cast","2AS":"@stdlib/ndarray/base/assert/is-scalar-mostly-safe-compatible","2AT":"@stdlib/ndarray-base-assert-is-scalar-mostly-safe-compatible","1cu":"@stdlib/ndarray/base/assert/is-signed-integer-data-type","1cv":"@stdlib/ndarray-base-assert-is-signed-integer-data-type","0hy":"@stdlib/ndarray/base/assert/is-single-segment-compatible","0hz":"@stdlib/ndarray-base-assert-is-single-segment-compatible","2L4":"@stdlib/ndarray/base/assert/is-struct-data-type","2L5":"@stdlib/ndarray-base-assert-is-struct-data-type","1cw":"@stdlib/ndarray/base/assert/is-unsigned-integer-data-type","1cx":"@stdlib/ndarray-base-assert-is-unsigned-integer-data-type","0i0":"@stdlib/ndarray/base/assert","0i1":"@stdlib/ndarray-base-assert","2xK":"@stdlib/ndarray/base/assign-diagonal","2xL":"@stdlib/ndarray-base-assign-diagonal","2lG":"@stdlib/ndarray/base/assign-scalar","2lH":"@stdlib/ndarray-base-assign-scalar","1kG":"@stdlib/ndarray/base/assign","1kH":"@stdlib/ndarray-base-assign","2lI":"@stdlib/ndarray/base/atleast1d","2lJ":"@stdlib/ndarray-base-atleast1d","2lK":"@stdlib/ndarray/base/atleast2d","2lL":"@stdlib/ndarray-base-atleast2d","2lM":"@stdlib/ndarray/base/atleast3d","2lN":"@stdlib/ndarray-base-atleast3d","2lO":"@stdlib/ndarray/base/atleastnd","2lP":"@stdlib/ndarray-base-atleastnd","2VS":"@stdlib/ndarray/base/binary-input-casting-dtype","2VT":"@stdlib/ndarray-base-binary-input-casting-dtype","1cy":"@stdlib/ndarray/base/binary-loop-interchange-order","1cz":"@stdlib/ndarray-base-binary-loop-interchange-order","2Gi":"@stdlib/ndarray/base/binary-output-dtype","2Gj":"@stdlib/ndarray-base-binary-output-dtype","2VU":"@stdlib/ndarray/base/binary-reduce-strided1d-dispatch-factory","2VV":"@stdlib/ndarray-base-binary-reduce-strided1d-dispatch-factory","2VW":"@stdlib/ndarray/base/binary-reduce-strided1d-dispatch","2VX":"@stdlib/ndarray-base-binary-reduce-strided1d-dispatch","2Tk":"@stdlib/ndarray/base/binary-reduce-strided1d","2Tl":"@stdlib/ndarray-base-binary-reduce-strided1d","1d0":"@stdlib/ndarray/base/binary-tiling-block-size","1d1":"@stdlib/ndarray-base-binary-tiling-block-size","2Gk":"@stdlib/ndarray/base/binary","2Gl":"@stdlib/ndarray-base-binary","0i2":"@stdlib/ndarray/base/bind2vind","0i3":"@stdlib/ndarray-base-bind2vind","2VY":"@stdlib/ndarray/base/broadcast-array-except-dimensions","2VZ":"@stdlib/ndarray-base-broadcast-array-except-dimensions","0i4":"@stdlib/ndarray/base/broadcast-array","0i5":"@stdlib/ndarray-base-broadcast-array","1nU":"@stdlib/ndarray/base/broadcast-arrays","1nV":"@stdlib/ndarray-base-broadcast-arrays","2lQ":"@stdlib/ndarray/base/broadcast-scalar-like","2lR":"@stdlib/ndarray-base-broadcast-scalar-like","1d2":"@stdlib/ndarray/base/broadcast-scalar","1d3":"@stdlib/ndarray-base-broadcast-scalar","0i6":"@stdlib/ndarray/base/broadcast-shapes","0i7":"@stdlib/ndarray-base-broadcast-shapes","0i8":"@stdlib/ndarray/base/buffer-ctors","0i9":"@stdlib/ndarray-base-buffer-ctors","0iA":"@stdlib/ndarray/base/buffer-dtype-enum","0iB":"@stdlib/ndarray-base-buffer-dtype-enum","0iC":"@stdlib/ndarray/base/buffer-dtype","0iD":"@stdlib/ndarray-base-buffer-dtype","0iE":"@stdlib/ndarray/base/buffer","0iF":"@stdlib/ndarray-base-buffer","0iG":"@stdlib/ndarray/base/bytes-per-element","0iH":"@stdlib/ndarray-base-bytes-per-element","0iI":"@stdlib/ndarray/base/char2dtype","0iJ":"@stdlib/ndarray-base-char2dtype","0iK":"@stdlib/ndarray/base/clamp-index","0iL":"@stdlib/ndarray-base-clamp-index","2Xw":"@stdlib/ndarray/base/complement-shape","2Xx":"@stdlib/ndarray-base-complement-shape","2lS":"@stdlib/ndarray/base/consensus-order","2lT":"@stdlib/ndarray-base-consensus-order","2Wq":"@stdlib/ndarray/base/copy","2Wr":"@stdlib/ndarray-base-copy","2Ie":"@stdlib/ndarray/base/count-falsy","2If":"@stdlib/ndarray-base-count-falsy","2Ig":"@stdlib/ndarray/base/count-if","2Ih":"@stdlib/ndarray-base-count-if","2Ii":"@stdlib/ndarray/base/count-truthy","2Ij":"@stdlib/ndarray-base-count-truthy","0iM":"@stdlib/ndarray/base/ctor","0iN":"@stdlib/ndarray-base-ctor","1kI":"@stdlib/ndarray/base/data-buffer","1kJ":"@stdlib/ndarray-base-data-buffer","2lU":"@stdlib/ndarray/base/descriptor","2lV":"@stdlib/ndarray-base-descriptor","2lW":"@stdlib/ndarray/base/diagonal","2lX":"@stdlib/ndarray-base-diagonal","2WA":"@stdlib/ndarray/base/dtype-alignment","2WB":"@stdlib/ndarray-base-dtype-alignment","0iO":"@stdlib/ndarray/base/dtype-char","0iP":"@stdlib/ndarray-base-dtype-char","2Ws":"@stdlib/ndarray/base/dtype-chars","2Wt":"@stdlib/ndarray-base-dtype-chars","0iQ":"@stdlib/ndarray/base/dtype-desc","0iR":"@stdlib/ndarray-base-dtype-desc","0iS":"@stdlib/ndarray/base/dtype-enum2str","0iT":"@stdlib/ndarray-base-dtype-enum2str","2WU":"@stdlib/ndarray/base/dtype-enums","2WV":"@stdlib/ndarray-base-dtype-enums","2WW":"@stdlib/ndarray/base/dtype-objects","2WX":"@stdlib/ndarray-base-dtype-objects","0iU":"@stdlib/ndarray/base/dtype-resolve-enum","0iV":"@stdlib/ndarray-base-dtype-resolve-enum","0iW":"@stdlib/ndarray/base/dtype-resolve-str","0iX":"@stdlib/ndarray-base-dtype-resolve-str","0iY":"@stdlib/ndarray/base/dtype-str2enum","0iZ":"@stdlib/ndarray-base-dtype-str2enum","2WY":"@stdlib/ndarray/base/dtype-strings","2WZ":"@stdlib/ndarray-base-dtype-strings","1kK":"@stdlib/ndarray/base/dtype","1kL":"@stdlib/ndarray-base-dtype","0ia":"@stdlib/ndarray/base/dtype2c","0ib":"@stdlib/ndarray-base-dtype2c","2WC":"@stdlib/ndarray/base/dtypes2enums","2WD":"@stdlib/ndarray-base-dtypes2enums","0ic":"@stdlib/ndarray/base/dtypes2signatures","0id":"@stdlib/ndarray-base-dtypes2signatures","2lY":"@stdlib/ndarray/base/dtypes2strings","2lZ":"@stdlib/ndarray-base-dtypes2strings","1d4":"@stdlib/ndarray/base/empty-like","1d5":"@stdlib/ndarray-base-empty-like","1d6":"@stdlib/ndarray/base/empty","1d7":"@stdlib/ndarray-base-empty","2Eq":"@stdlib/ndarray/base/every-by","2Er":"@stdlib/ndarray-base-every-by","2AU":"@stdlib/ndarray/base/every","2AV":"@stdlib/ndarray-base-every","0ie":"@stdlib/ndarray/base/expand-dimensions","0if":"@stdlib/ndarray-base-expand-dimensions","2la":"@stdlib/ndarray/base/falses-like","2lb":"@stdlib/ndarray-base-falses-like","2lc":"@stdlib/ndarray/base/falses","2ld":"@stdlib/ndarray-base-falses","2AW":"@stdlib/ndarray/base/fill-by","2AX":"@stdlib/ndarray-base-fill-by","2le":"@stdlib/ndarray/base/fill-diagonal","2lf":"@stdlib/ndarray-base-fill-diagonal","2Va":"@stdlib/ndarray/base/find","2Vb":"@stdlib/ndarray-base-find","1ns":"@stdlib/ndarray/base/flag","1nt":"@stdlib/ndarray-base-flag","1nW":"@stdlib/ndarray/base/flags","1nX":"@stdlib/ndarray-base-flags","2Wu":"@stdlib/ndarray/base/flatten-shape-from","2Wv":"@stdlib/ndarray-base-flatten-shape-from","2Vc":"@stdlib/ndarray/base/flatten-shape","2Vd":"@stdlib/ndarray-base-flatten-shape","1l4":"@stdlib/ndarray/base/fliplr","1l5":"@stdlib/ndarray-base-fliplr","1l6":"@stdlib/ndarray/base/flipud","1l7":"@stdlib/ndarray-base-flipud","1yW":"@stdlib/ndarray/base/for-each","1yX":"@stdlib/ndarray-base-for-each","2Tm":"@stdlib/ndarray/base/from-array","2Tn":"@stdlib/ndarray-base-from-array","24o":"@stdlib/ndarray/base/from-scalar-like","24p":"@stdlib/ndarray-base-from-scalar-like","0ig":"@stdlib/ndarray/base/from-scalar","0ih":"@stdlib/ndarray-base-from-scalar","2lg":"@stdlib/ndarray/base/full-by","2lh":"@stdlib/ndarray-base-full-by","2li":"@stdlib/ndarray/base/full","2lj":"@stdlib/ndarray-base-full","0ii":"@stdlib/ndarray/base/function-object","0ij":"@stdlib/ndarray-base-function-object","2Dy":"@stdlib/ndarray/base/includes","2Dz":"@stdlib/ndarray-base-includes","0ik":"@stdlib/ndarray/base/ind","0il":"@stdlib/ndarray-base-ind","0im":"@stdlib/ndarray/base/ind2sub","0in":"@stdlib/ndarray-base-ind2sub","0io":"@stdlib/ndarray/base/iteration-order","0ip":"@stdlib/ndarray-base-iteration-order","2H6":"@stdlib/ndarray/base/loop-interchange-order","2H7":"@stdlib/ndarray-base-loop-interchange-order","1zU":"@stdlib/ndarray/base/map","1zV":"@stdlib/ndarray-base-map","0iq":"@stdlib/ndarray/base/max-view-buffer-index","0ir":"@stdlib/ndarray-base-max-view-buffer-index","2lk":"@stdlib/ndarray/base/maybe-broadcast-array-except-dimensions","2ll":"@stdlib/ndarray-base-maybe-broadcast-array-except-dimensions","0is":"@stdlib/ndarray/base/maybe-broadcast-array","0it":"@stdlib/ndarray-base-maybe-broadcast-array","1nY":"@stdlib/ndarray/base/maybe-broadcast-arrays","1nZ":"@stdlib/ndarray-base-maybe-broadcast-arrays","0iu":"@stdlib/ndarray/base/meta-data-props","0iv":"@stdlib/ndarray-base-meta-data-props","24q":"@stdlib/ndarray/base/min-signed-integer-dtype","24r":"@stdlib/ndarray-base-min-signed-integer-dtype","24s":"@stdlib/ndarray/base/min-unsigned-integer-dtype","24t":"@stdlib/ndarray-base-min-unsigned-integer-dtype","0iw":"@stdlib/ndarray/base/min-view-buffer-index","0ix":"@stdlib/ndarray-base-min-view-buffer-index","0iy":"@stdlib/ndarray/base/minmax-view-buffer-index","0iz":"@stdlib/ndarray-base-minmax-view-buffer-index","2lm":"@stdlib/ndarray/base/nans-like","2ln":"@stdlib/ndarray-base-nans-like","2lo":"@stdlib/ndarray/base/nans","2lp":"@stdlib/ndarray-base-nans","0j0":"@stdlib/ndarray/base/napi/addon-arguments","0j1":"@stdlib/ndarray-base-napi-addon-arguments","0j2":"@stdlib/ndarray/base/napi/dtype-string-to-dtype","0j3":"@stdlib/ndarray-base-napi-dtype-string-to-dtype","0j4":"@stdlib/ndarray/base/napi","0j5":"@stdlib/ndarray-base-napi","0j6":"@stdlib/ndarray/base/napi/typedarray-type-to-dtype","0j7":"@stdlib/ndarray-base-napi-typedarray-type-to-dtype","0j8":"@stdlib/ndarray/base/napi/unary","0j9":"@stdlib/ndarray-base-napi-unary","2lq":"@stdlib/ndarray/base/ndarraylike2descriptor","2lr":"@stdlib/ndarray-base-ndarraylike2descriptor","1zW":"@stdlib/ndarray/base/ndarraylike2ndarray","1zX":"@stdlib/ndarray-base-ndarraylike2ndarray","0jA":"@stdlib/ndarray/base/ndarraylike2object","0jB":"@stdlib/ndarray-base-ndarraylike2object","2OS":"@stdlib/ndarray/base/ndarraylike2scalar","2OT":"@stdlib/ndarray-base-ndarraylike2scalar","1jc":"@stdlib/ndarray/base/ndims","1jd":"@stdlib/ndarray-base-ndims","1je":"@stdlib/ndarray/base/next-cartesian-index","1jf":"@stdlib/ndarray-base-next-cartesian-index","0jC":"@stdlib/ndarray/base/nonsingleton-dimensions","0jD":"@stdlib/ndarray-base-nonsingleton-dimensions","1l8":"@stdlib/ndarray/base/normalize-index","1l9":"@stdlib/ndarray-base-normalize-index","25y":"@stdlib/ndarray/base/normalize-indices","25z":"@stdlib/ndarray-base-normalize-indices","1d8":"@stdlib/ndarray/base/nullary-loop-interchange-order","1d9":"@stdlib/ndarray-base-nullary-loop-interchange-order","2WE":"@stdlib/ndarray/base/nullary-strided1d-dispatch-factory","2WF":"@stdlib/ndarray-base-nullary-strided1d-dispatch-factory","2Ve":"@stdlib/ndarray/base/nullary-strided1d-dispatch","2Vf":"@stdlib/ndarray-base-nullary-strided1d-dispatch","2V6":"@stdlib/ndarray/base/nullary-strided1d","2V7":"@stdlib/ndarray-base-nullary-strided1d","1dA":"@stdlib/ndarray/base/nullary-tiling-block-size","1dB":"@stdlib/ndarray-base-nullary-tiling-block-size","1dC":"@stdlib/ndarray/base/nullary","1dD":"@stdlib/ndarray-base-nullary","2ls":"@stdlib/ndarray/base/nulls-like","2lt":"@stdlib/ndarray-base-nulls-like","2lu":"@stdlib/ndarray/base/nulls","2lv":"@stdlib/ndarray-base-nulls","1nu":"@stdlib/ndarray/base/numel-dimension","1nv":"@stdlib/ndarray-base-numel-dimension","0jE":"@stdlib/ndarray/base/numel","0jF":"@stdlib/ndarray-base-numel","1jg":"@stdlib/ndarray/base/offset","1jh":"@stdlib/ndarray-base-offset","2lw":"@stdlib/ndarray/base/ones-like","2lx":"@stdlib/ndarray-base-ones-like","2ly":"@stdlib/ndarray/base/ones","2lz":"@stdlib/ndarray-base-ones","1kM":"@stdlib/ndarray/base/order","1kN":"@stdlib/ndarray-base-order","2Gm":"@stdlib/ndarray/base/output-dtype","2Gn":"@stdlib/ndarray-base-output-dtype","2m0":"@stdlib/ndarray/base/output-order","2m1":"@stdlib/ndarray-base-output-order","1dE":"@stdlib/ndarray/base/output-policy-enum2str","1dF":"@stdlib/ndarray-base-output-policy-enum2str","1dG":"@stdlib/ndarray/base/output-policy-resolve-enum","1dH":"@stdlib/ndarray-base-output-policy-resolve-enum","1dI":"@stdlib/ndarray/base/output-policy-resolve-str","1dJ":"@stdlib/ndarray-base-output-policy-resolve-str","1dK":"@stdlib/ndarray/base/output-policy-str2enum","1dL":"@stdlib/ndarray-base-output-policy-str2enum","0jG":"@stdlib/ndarray/base","0jH":"@stdlib/ndarray-base","2Wa":"@stdlib/ndarray/base/pop","2Wb":"@stdlib/ndarray-base-pop","0jI":"@stdlib/ndarray/base/prepend-singleton-dimensions","0jJ":"@stdlib/ndarray-base-prepend-singleton-dimensions","2Go":"@stdlib/ndarray/base/promote-dtypes","2Gp":"@stdlib/ndarray-base-promote-dtypes","2m2":"@stdlib/ndarray/base/quaternary-loop-interchange-order","2m3":"@stdlib/ndarray-base-quaternary-loop-interchange-order","2m4":"@stdlib/ndarray/base/quaternary-tiling-block-size","2m5":"@stdlib/ndarray-base-quaternary-tiling-block-size","2m6":"@stdlib/ndarray/base/quinary-loop-interchange-order","2m7":"@stdlib/ndarray-base-quinary-loop-interchange-order","2m8":"@stdlib/ndarray/base/quinary-tiling-block-size","2m9":"@stdlib/ndarray-base-quinary-tiling-block-size","2mA":"@stdlib/ndarray/base/reinterpret-boolean","2mB":"@stdlib/ndarray-base-reinterpret-boolean","2mC":"@stdlib/ndarray/base/reinterpret-complex","2mD":"@stdlib/ndarray-base-reinterpret-complex","2mE":"@stdlib/ndarray/base/reinterpret-complex128","2mF":"@stdlib/ndarray-base-reinterpret-complex128","2mG":"@stdlib/ndarray/base/reinterpret-complex64","2mH":"@stdlib/ndarray-base-reinterpret-complex64","0jK":"@stdlib/ndarray/base/remove-singleton-dimensions","0jL":"@stdlib/ndarray-base-remove-singleton-dimensions","1lA":"@stdlib/ndarray/base/reverse-dimension","1lB":"@stdlib/ndarray-base-reverse-dimension","2mI":"@stdlib/ndarray/base/reverse-dimensions","2mJ":"@stdlib/ndarray-base-reverse-dimensions","1kO":"@stdlib/ndarray/base/reverse","1kP":"@stdlib/ndarray-base-reverse","2mK":"@stdlib/ndarray/base/rot180","2mL":"@stdlib/ndarray-base-rot180","2mM":"@stdlib/ndarray/base/rot90","2mN":"@stdlib/ndarray-base-rot90","2mO":"@stdlib/ndarray/base/rotl90","2mP":"@stdlib/ndarray-base-rotl90","2mQ":"@stdlib/ndarray/base/rotr90","2mR":"@stdlib/ndarray-base-rotr90","0jM":"@stdlib/ndarray/base/serialize-meta-data","0jN":"@stdlib/ndarray-base-serialize-meta-data","1ji":"@stdlib/ndarray/base/shape","1jj":"@stdlib/ndarray-base-shape","0jO":"@stdlib/ndarray/base/shape2strides","0jP":"@stdlib/ndarray-base-shape2strides","2Wc":"@stdlib/ndarray/base/shift","2Wd":"@stdlib/ndarray-base-shift","0jQ":"@stdlib/ndarray/base/singleton-dimensions","0jR":"@stdlib/ndarray-base-singleton-dimensions","1jO":"@stdlib/ndarray/base/slice-assign","1jP":"@stdlib/ndarray-base-slice-assign","1lC":"@stdlib/ndarray/base/slice-dimension-from","1lD":"@stdlib/ndarray-base-slice-dimension-from","1lE":"@stdlib/ndarray/base/slice-dimension-to","1lF":"@stdlib/ndarray-base-slice-dimension-to","1kQ":"@stdlib/ndarray/base/slice-dimension","1kR":"@stdlib/ndarray-base-slice-dimension","1lG":"@stdlib/ndarray/base/slice-from","1lH":"@stdlib/ndarray-base-slice-from","1lI":"@stdlib/ndarray/base/slice-to","1lJ":"@stdlib/ndarray-base-slice-to","1jQ":"@stdlib/ndarray/base/slice","1jR":"@stdlib/ndarray-base-slice","2Ik":"@stdlib/ndarray/base/some-by","2Il":"@stdlib/ndarray-base-some-by","2Ww":"@stdlib/ndarray/base/some","2Wx":"@stdlib/ndarray-base-some","1mg":"@stdlib/ndarray/base/stride","1mh":"@stdlib/ndarray-base-stride","1jk":"@stdlib/ndarray/base/strides","1jl":"@stdlib/ndarray-base-strides","0jS":"@stdlib/ndarray/base/strides2offset","0jT":"@stdlib/ndarray-base-strides2offset","0jU":"@stdlib/ndarray/base/strides2order","0jV":"@stdlib/ndarray-base-strides2order","0jW":"@stdlib/ndarray/base/sub2ind","0jX":"@stdlib/ndarray-base-sub2ind","2mS":"@stdlib/ndarray/base/ternary-loop-interchange-order","2mT":"@stdlib/ndarray-base-ternary-loop-interchange-order","2mU":"@stdlib/ndarray/base/ternary-output-dtype","2mV":"@stdlib/ndarray-base-ternary-output-dtype","2mW":"@stdlib/ndarray/base/ternary-tiling-block-size","2mX":"@stdlib/ndarray-base-ternary-tiling-block-size","2mY":"@stdlib/ndarray/base/ternary","2mZ":"@stdlib/ndarray-base-ternary","2ma":"@stdlib/ndarray/base/tile","2mb":"@stdlib/ndarray-base-tile","2mc":"@stdlib/ndarray/base/tiling-block-size","2md":"@stdlib/ndarray-base-tiling-block-size","0jY":"@stdlib/ndarray/base/to-array","0jZ":"@stdlib/ndarray-base-to-array","2a8":"@stdlib/ndarray/base/to-flippedlr","2a9":"@stdlib/ndarray-base-to-flippedlr","2aA":"@stdlib/ndarray/base/to-flippedud","2aB":"@stdlib/ndarray-base-to-flippedud","2me":"@stdlib/ndarray/base/to-reversed-dimension","2mf":"@stdlib/ndarray-base-to-reversed-dimension","2mg":"@stdlib/ndarray/base/to-reversed-dimensions","2mh":"@stdlib/ndarray-base-to-reversed-dimensions","2mi":"@stdlib/ndarray/base/to-rot180","2mj":"@stdlib/ndarray-base-to-rot180","2mk":"@stdlib/ndarray/base/to-rot90","2ml":"@stdlib/ndarray-base-to-rot90","2mm":"@stdlib/ndarray/base/to-rotl90","2mn":"@stdlib/ndarray-base-to-rotl90","2mo":"@stdlib/ndarray/base/to-rotr90","2mp":"@stdlib/ndarray-base-to-rotr90","2mq":"@stdlib/ndarray/base/to-transposed","2mr":"@stdlib/ndarray-base-to-transposed","2ms":"@stdlib/ndarray/base/to-unflattened","2mt":"@stdlib/ndarray-base-to-unflattened","0ja":"@stdlib/ndarray/base/transpose","0jb":"@stdlib/ndarray-base-transpose","2mu":"@stdlib/ndarray/base/trues-like","2mv":"@stdlib/ndarray-base-trues-like","2mw":"@stdlib/ndarray/base/trues","2mx":"@stdlib/ndarray-base-trues","26G":"@stdlib/ndarray/base/unary-accumulate","26H":"@stdlib/ndarray-base-unary-accumulate","2Vg":"@stdlib/ndarray/base/unary-addon-dispatch","2Vh":"@stdlib/ndarray-base-unary-addon-dispatch","1dM":"@stdlib/ndarray/base/unary-by","1dN":"@stdlib/ndarray-base-unary-by","2Fo":"@stdlib/ndarray/base/unary-input-casting-dtype","2Fp":"@stdlib/ndarray-base-unary-input-casting-dtype","1dO":"@stdlib/ndarray/base/unary-loop-interchange-order","1dP":"@stdlib/ndarray-base-unary-loop-interchange-order","1dQ":"@stdlib/ndarray/base/unary-output-dtype","1dR":"@stdlib/ndarray-base-unary-output-dtype","2OU":"@stdlib/ndarray/base/unary-reduce-strided1d-assign-struct","2OV":"@stdlib/ndarray-base-unary-reduce-strided1d-assign-struct","2Im":"@stdlib/ndarray/base/unary-reduce-strided1d-by","2In":"@stdlib/ndarray-base-unary-reduce-strided1d-by","2Io":"@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-by-factory","2Ip":"@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-by-factory","2Iq":"@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-by","2Ir":"@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-by","2Fq":"@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-factory","2Fr":"@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-factory","2Fs":"@stdlib/ndarray/base/unary-reduce-strided1d-dispatch","2Ft":"@stdlib/ndarray-base-unary-reduce-strided1d-dispatch","2Es":"@stdlib/ndarray/base/unary-reduce-strided1d","2Et":"@stdlib/ndarray-base-unary-reduce-strided1d","2Is":"@stdlib/ndarray/base/unary-reduce-subarray-by","2It":"@stdlib/ndarray-base-unary-reduce-subarray-by","2AY":"@stdlib/ndarray/base/unary-reduce-subarray","2AZ":"@stdlib/ndarray-base-unary-reduce-subarray","2Fu":"@stdlib/ndarray/base/unary-strided1d-dispatch-factory","2Fv":"@stdlib/ndarray-base-unary-strided1d-dispatch-factory","2Fw":"@stdlib/ndarray/base/unary-strided1d-dispatch","2Fx":"@stdlib/ndarray-base-unary-strided1d-dispatch","2Fy":"@stdlib/ndarray/base/unary-strided1d","2Fz":"@stdlib/ndarray-base-unary-strided1d","1dS":"@stdlib/ndarray/base/unary-tiling-block-size","1dT":"@stdlib/ndarray-base-unary-tiling-block-size","0jc":"@stdlib/ndarray/base/unary","0jd":"@stdlib/ndarray-base-unary","2my":"@stdlib/ndarray/base/unflatten-shape","2mz":"@stdlib/ndarray-base-unflatten-shape","2n0":"@stdlib/ndarray/base/unflatten","2n1":"@stdlib/ndarray-base-unflatten","0je":"@stdlib/ndarray/base/vind2bind","0jf":"@stdlib/ndarray-base-vind2bind","0jg":"@stdlib/ndarray/base/wrap-index","0jh":"@stdlib/ndarray-base-wrap-index","0ji":"@stdlib/ndarray/base/zeros-like","0jj":"@stdlib/ndarray-base-zeros-like","0jk":"@stdlib/ndarray/base/zeros","0jl":"@stdlib/ndarray-base-zeros","2To":"@stdlib/ndarray/base/zip2views1d","2Tp":"@stdlib/ndarray-base-zip2views1d","1jm":"@stdlib/ndarray/broadcast-array","1jn":"@stdlib/ndarray-broadcast-array","1na":"@stdlib/ndarray/broadcast-arrays","1nb":"@stdlib/ndarray-broadcast-arrays","2n2":"@stdlib/ndarray/broadcast-scalar-like","2n3":"@stdlib/ndarray-broadcast-scalar-like","2n4":"@stdlib/ndarray/broadcast-scalar","2n5":"@stdlib/ndarray-broadcast-scalar","0jm":"@stdlib/ndarray/casting-modes","0jn":"@stdlib/ndarray-casting-modes","2n6":"@stdlib/ndarray/colcat","2n7":"@stdlib/ndarray-colcat","2Wy":"@stdlib/ndarray/concat","2Wz":"@stdlib/ndarray-concat","2aC":"@stdlib/ndarray/concat1d","2aD":"@stdlib/ndarray-concat1d","2Xy":"@stdlib/ndarray/copy","2Xz":"@stdlib/ndarray-copy","2Iu":"@stdlib/ndarray/count-falsy","2Iv":"@stdlib/ndarray-count-falsy","2Iw":"@stdlib/ndarray/count-if","2Ix":"@stdlib/ndarray-count-if","2Iy":"@stdlib/ndarray/count-truthy","2Iz":"@stdlib/ndarray-count-truthy","0jo":"@stdlib/ndarray/ctor","0jp":"@stdlib/ndarray-ctor","1kS":"@stdlib/ndarray/data-buffer","1kT":"@stdlib/ndarray-data-buffer","1dU":"@stdlib/ndarray/defaults","1dV":"@stdlib/ndarray-defaults","2n8":"@stdlib/ndarray/diagonal","2n9":"@stdlib/ndarray-diagonal","1dW":"@stdlib/ndarray/dispatch-by","1dX":"@stdlib/ndarray-dispatch-by","0jq":"@stdlib/ndarray/dispatch","0jr":"@stdlib/ndarray-dispatch","2WG":"@stdlib/ndarray/dtype-ctor","2WH":"@stdlib/ndarray-dtype-ctor","1kU":"@stdlib/ndarray/dtype","1kV":"@stdlib/ndarray-dtype","0js":"@stdlib/ndarray/dtypes","0jt":"@stdlib/ndarray-dtypes","1dY":"@stdlib/ndarray/empty-like","1dZ":"@stdlib/ndarray-empty-like","1da":"@stdlib/ndarray/empty","1db":"@stdlib/ndarray-empty","2nA":"@stdlib/ndarray/every-by","2nB":"@stdlib/ndarray-every-by","2E0":"@stdlib/ndarray/every","2E1":"@stdlib/ndarray-every","2nC":"@stdlib/ndarray/falses-like","2nD":"@stdlib/ndarray-falses-like","2nE":"@stdlib/ndarray/falses","2nF":"@stdlib/ndarray-falses","1j6":"@stdlib/ndarray/fancy","1j7":"@stdlib/ndarray-fancy","2Aa":"@stdlib/ndarray/fill-by","2Ab":"@stdlib/ndarray-fill-by","2Vi":"@stdlib/ndarray/fill-slice","2Vj":"@stdlib/ndarray-fill-slice","2Ac":"@stdlib/ndarray/fill","2Ad":"@stdlib/ndarray-fill","24u":"@stdlib/ndarray/filter-map","24v":"@stdlib/ndarray-filter-map","24w":"@stdlib/ndarray/filter","24x":"@stdlib/ndarray-filter","2nG":"@stdlib/ndarray/find-last","2nH":"@stdlib/ndarray-find-last","2X0":"@stdlib/ndarray/find","2X1":"@stdlib/ndarray-find","2nI":"@stdlib/ndarray/first","2nJ":"@stdlib/ndarray-first","1nw":"@stdlib/ndarray/flag","1nx":"@stdlib/ndarray-flag","1ny":"@stdlib/ndarray/flags","1nz":"@stdlib/ndarray-flags","2WI":"@stdlib/ndarray/flatten-by","2WJ":"@stdlib/ndarray-flatten-by","2nK":"@stdlib/ndarray/flatten-from-by","2nL":"@stdlib/ndarray-flatten-from-by","2X2":"@stdlib/ndarray/flatten-from","2X3":"@stdlib/ndarray-flatten-from","2Vk":"@stdlib/ndarray/flatten","2Vl":"@stdlib/ndarray-flatten","2aE":"@stdlib/ndarray/fliplr","2aF":"@stdlib/ndarray-fliplr","2aG":"@stdlib/ndarray/flipud","2aH":"@stdlib/ndarray-flipud","24y":"@stdlib/ndarray/for-each","24z":"@stdlib/ndarray-for-each","2nM":"@stdlib/ndarray/from-scalar-like","2nN":"@stdlib/ndarray-from-scalar-like","0ju":"@stdlib/ndarray/from-scalar","0jv":"@stdlib/ndarray-from-scalar","2nO":"@stdlib/ndarray/hconcat","2nP":"@stdlib/ndarray-hconcat","2E2":"@stdlib/ndarray/includes","2E3":"@stdlib/ndarray-includes","0jw":"@stdlib/ndarray/ind2sub","0jx":"@stdlib/ndarray-ind2sub","0jy":"@stdlib/ndarray/index-modes","0jz":"@stdlib/ndarray-index-modes","2G0":"@stdlib/ndarray/input-casting-policies","2G1":"@stdlib/ndarray-input-casting-policies","1lK":"@stdlib/ndarray/iter/column-entries","1lL":"@stdlib/ndarray-iter-column-entries","1jo":"@stdlib/ndarray/iter/columns","1jp":"@stdlib/ndarray-iter-columns","1jq":"@stdlib/ndarray/iter/entries","1jr":"@stdlib/ndarray-iter-entries","1js":"@stdlib/ndarray/iter/indices","1jt":"@stdlib/ndarray-iter-indices","1zY":"@stdlib/ndarray/iter/interleave-subarrays","1zZ":"@stdlib/ndarray-iter-interleave-subarrays","1lM":"@stdlib/ndarray/iter/matrices","1lN":"@stdlib/ndarray-iter-matrices","1lO":"@stdlib/ndarray/iter/matrix-entries","1lP":"@stdlib/ndarray-iter-matrix-entries","1ju":"@stdlib/ndarray/iter","1jv":"@stdlib/ndarray-iter","1lQ":"@stdlib/ndarray/iter/row-entries","1lR":"@stdlib/ndarray-iter-row-entries","1jw":"@stdlib/ndarray/iter/rows","1jx":"@stdlib/ndarray-iter-rows","1za":"@stdlib/ndarray/iter/select-dimension","1zb":"@stdlib/ndarray-iter-select-dimension","1zc":"@stdlib/ndarray/iter/stacks","1zd":"@stdlib/ndarray-iter-stacks","1ze":"@stdlib/ndarray/iter/subarrays","1zf":"@stdlib/ndarray-iter-subarrays","1jy":"@stdlib/ndarray/iter/to-array-each","1jz":"@stdlib/ndarray-iter-to-array-each","1k0":"@stdlib/ndarray/iter/values","1k1":"@stdlib/ndarray-iter-values","2nQ":"@stdlib/ndarray/last","2nR":"@stdlib/ndarray-last","2yy":"@stdlib/ndarray/matrix/complex128","2yz":"@stdlib/ndarray-matrix-complex128","2z0":"@stdlib/ndarray/matrix/complex64","2z1":"@stdlib/ndarray-matrix-complex64","2z2":"@stdlib/ndarray/matrix/ctor","2z3":"@stdlib/ndarray-matrix-ctor","2z4":"@stdlib/ndarray/matrix/float32","2z5":"@stdlib/ndarray-matrix-float32","2z6":"@stdlib/ndarray/matrix/float64","2z7":"@stdlib/ndarray-matrix-float64","2z8":"@stdlib/ndarray/matrix/int32","2z9":"@stdlib/ndarray-matrix-int32","2zA":"@stdlib/ndarray/matrix","2zB":"@stdlib/ndarray-matrix","1k2":"@stdlib/ndarray/maybe-broadcast-array","1k3":"@stdlib/ndarray-maybe-broadcast-array","1nc":"@stdlib/ndarray/maybe-broadcast-arrays","1nd":"@stdlib/ndarray-maybe-broadcast-arrays","0k0":"@stdlib/ndarray/min-dtype","0k1":"@stdlib/ndarray-min-dtype","1kW":"@stdlib/ndarray/mostly-safe-casts","1kX":"@stdlib/ndarray-mostly-safe-casts","2nS":"@stdlib/ndarray/nans-like","2nT":"@stdlib/ndarray-nans-like","2nU":"@stdlib/ndarray/nans","2nV":"@stdlib/ndarray-nans","1zg":"@stdlib/ndarray/ndarraylike2ndarray","1zh":"@stdlib/ndarray-ndarraylike2ndarray","2nW":"@stdlib/ndarray/ndarraylike2scalar","2nX":"@stdlib/ndarray-ndarraylike2scalar","1k4":"@stdlib/ndarray/ndims","1k5":"@stdlib/ndarray-ndims","0k2":"@stdlib/ndarray/next-dtype","0k3":"@stdlib/ndarray-next-dtype","1o0":"@stdlib/ndarray/numel-dimension","1o1":"@stdlib/ndarray-numel-dimension","1k6":"@stdlib/ndarray/numel","1k7":"@stdlib/ndarray-numel","1k8":"@stdlib/ndarray/offset","1k9":"@stdlib/ndarray-offset","2nY":"@stdlib/ndarray/ones-like","2nZ":"@stdlib/ndarray-ones-like","2na":"@stdlib/ndarray/ones","2nb":"@stdlib/ndarray-ones","1kY":"@stdlib/ndarray/order","1kZ":"@stdlib/ndarray-order","0k4":"@stdlib/ndarray/orders","0k5":"@stdlib/ndarray-orders","1dc":"@stdlib/ndarray/output-dtype-policies","1dd":"@stdlib/ndarray-output-dtype-policies","0k7":"@stdlib/ndarray","2X4":"@stdlib/ndarray/pop","2X5":"@stdlib/ndarray-pop","2nc":"@stdlib/ndarray/prepend-singleton-dimensions","2nd":"@stdlib/ndarray-prepend-singleton-dimensions","0k8":"@stdlib/ndarray/promotion-rules","0k9":"@stdlib/ndarray-promotion-rules","2ne":"@stdlib/ndarray/push","2nf":"@stdlib/ndarray-push","2ng":"@stdlib/ndarray/remove-singleton-dimensions","2nh":"@stdlib/ndarray-remove-singleton-dimensions","2X6":"@stdlib/ndarray/reverse-dimension","2X7":"@stdlib/ndarray-reverse-dimension","2ni":"@stdlib/ndarray/reverse-dimensions","2nj":"@stdlib/ndarray-reverse-dimensions","2X8":"@stdlib/ndarray/reverse","2X9":"@stdlib/ndarray-reverse","2nk":"@stdlib/ndarray/rot180","2nl":"@stdlib/ndarray-rot180","2nm":"@stdlib/ndarray/rot90","2nn":"@stdlib/ndarray-rot90","2no":"@stdlib/ndarray/rotl90","2np":"@stdlib/ndarray-rotl90","2nq":"@stdlib/ndarray/rotr90","2nr":"@stdlib/ndarray-rotr90","2ns":"@stdlib/ndarray/rowcat","2nt":"@stdlib/ndarray-rowcat","0kA":"@stdlib/ndarray/safe-casts","0kB":"@stdlib/ndarray-safe-casts","0kC":"@stdlib/ndarray/same-kind-casts","0kD":"@stdlib/ndarray-same-kind-casts","1kA":"@stdlib/ndarray/shape","1kB":"@stdlib/ndarray-shape","2XA":"@stdlib/ndarray/shift","2XB":"@stdlib/ndarray-shift","1jS":"@stdlib/ndarray/slice-assign","1jT":"@stdlib/ndarray-slice-assign","1lS":"@stdlib/ndarray/slice-dimension-from","1lT":"@stdlib/ndarray-slice-dimension-from","1lU":"@stdlib/ndarray/slice-dimension-to","1lV":"@stdlib/ndarray-slice-dimension-to","1ka":"@stdlib/ndarray/slice-dimension","1kb":"@stdlib/ndarray-slice-dimension","1mw":"@stdlib/ndarray/slice-from","1mx":"@stdlib/ndarray-slice-from","1mi":"@stdlib/ndarray/slice-to","1mj":"@stdlib/ndarray-slice-to","1jU":"@stdlib/ndarray/slice","1jV":"@stdlib/ndarray-slice","2J0":"@stdlib/ndarray/some-by","2J1":"@stdlib/ndarray-some-by","2YU":"@stdlib/ndarray/some","2YV":"@stdlib/ndarray-some","2nu":"@stdlib/ndarray/spread-dimensions","2nv":"@stdlib/ndarray-spread-dimensions","1mk":"@stdlib/ndarray/stride","1ml":"@stdlib/ndarray-stride","1kC":"@stdlib/ndarray/strides","1kD":"@stdlib/ndarray-strides","0kE":"@stdlib/ndarray/sub2ind","0kF":"@stdlib/ndarray-sub2ind","1de":"@stdlib/ndarray/to-array","1df":"@stdlib/ndarray-to-array","2nw":"@stdlib/ndarray/to-flippedlr","2nx":"@stdlib/ndarray-to-flippedlr","2ny":"@stdlib/ndarray/to-flippedud","2nz":"@stdlib/ndarray-to-flippedud","2o0":"@stdlib/ndarray/to-locale-string","2o1":"@stdlib/ndarray-to-locale-string","2o2":"@stdlib/ndarray/to-reversed-dimension","2o3":"@stdlib/ndarray-to-reversed-dimension","2o4":"@stdlib/ndarray/to-reversed-dimensions","2o5":"@stdlib/ndarray-to-reversed-dimensions","2XC":"@stdlib/ndarray/to-reversed","2XD":"@stdlib/ndarray-to-reversed","2o6":"@stdlib/ndarray/to-rot180","2o7":"@stdlib/ndarray-to-rot180","2o8":"@stdlib/ndarray/to-rot90","2o9":"@stdlib/ndarray-to-rot90","2oA":"@stdlib/ndarray/to-rotl90","2oB":"@stdlib/ndarray-to-rotl90","2oC":"@stdlib/ndarray/to-rotr90","2oD":"@stdlib/ndarray-to-rotr90","2oE":"@stdlib/ndarray/to-string","2oF":"@stdlib/ndarray-to-string","2oG":"@stdlib/ndarray/to-transposed","2oH":"@stdlib/ndarray-to-transposed","2oI":"@stdlib/ndarray/to-unflattened","2oJ":"@stdlib/ndarray-to-unflattened","2oK":"@stdlib/ndarray/transpose","2oL":"@stdlib/ndarray-transpose","2oM":"@stdlib/ndarray/trues-like","2oN":"@stdlib/ndarray-trues-like","2oO":"@stdlib/ndarray/trues","2oP":"@stdlib/ndarray-trues","2oQ":"@stdlib/ndarray/unflatten","2oR":"@stdlib/ndarray-unflatten","2oS":"@stdlib/ndarray/unshift","2oT":"@stdlib/ndarray-unshift","2oU":"@stdlib/ndarray/vconcat","2oV":"@stdlib/ndarray-vconcat","2J2":"@stdlib/ndarray/vector/bool","2J3":"@stdlib/ndarray-vector-bool","2J4":"@stdlib/ndarray/vector/complex128","2J5":"@stdlib/ndarray-vector-complex128","2J6":"@stdlib/ndarray/vector/complex64","2J7":"@stdlib/ndarray-vector-complex64","2H8":"@stdlib/ndarray/vector/ctor","2H9":"@stdlib/ndarray-vector-ctor","2HA":"@stdlib/ndarray/vector/float32","2HB":"@stdlib/ndarray-vector-float32","2HC":"@stdlib/ndarray/vector/float64","2HD":"@stdlib/ndarray-vector-float64","2J8":"@stdlib/ndarray/vector/int16","2J9":"@stdlib/ndarray-vector-int16","2JA":"@stdlib/ndarray/vector/int32","2JB":"@stdlib/ndarray-vector-int32","2JC":"@stdlib/ndarray/vector/int8","2JD":"@stdlib/ndarray-vector-int8","2JE":"@stdlib/ndarray/vector","2JF":"@stdlib/ndarray-vector","2JG":"@stdlib/ndarray/vector/uint16","2JH":"@stdlib/ndarray-vector-uint16","2JI":"@stdlib/ndarray/vector/uint32","2JJ":"@stdlib/ndarray-vector-uint32","2JK":"@stdlib/ndarray/vector/uint8","2JL":"@stdlib/ndarray-vector-uint8","2JM":"@stdlib/ndarray/vector/uint8c","2JN":"@stdlib/ndarray-vector-uint8c","2V8":"@stdlib/ndarray/with","2V9":"@stdlib/ndarray-with","0kG":"@stdlib/ndarray/zeros-like","0kH":"@stdlib/ndarray-zeros-like","0kI":"@stdlib/ndarray/zeros","0kJ":"@stdlib/ndarray-zeros","0kK":"@stdlib/net/disposable-http-server","0kL":"@stdlib/net-disposable-http-server","0kM":"@stdlib/net/http-server","0kN":"@stdlib/net-http-server","2Tq":"@stdlib/net/http2-secure-server","2Tr":"@stdlib/net-http2-secure-server","0kP":"@stdlib/net","0kQ":"@stdlib/net/simple-http-server","0kR":"@stdlib/net-simple-http-server","1dg":"@stdlib/nlp/expand-acronyms","1dh":"@stdlib/nlp-expand-acronyms","0kS":"@stdlib/nlp/expand-contractions","0kT":"@stdlib/nlp-expand-contractions","0kU":"@stdlib/nlp/lda","0kV":"@stdlib/nlp-lda","0kW":"@stdlib/nlp/ordinalize","0kX":"@stdlib/nlp-ordinalize","0kZ":"@stdlib/nlp","0ka":"@stdlib/nlp/porter-stemmer","0kb":"@stdlib/nlp-porter-stemmer","1di":"@stdlib/nlp/sentencize","1dj":"@stdlib/nlp-sentencize","0kc":"@stdlib/nlp/tokenize","0kd":"@stdlib/nlp-tokenize","0ke":"@stdlib/number/ctor","0kf":"@stdlib/number-ctor","2oW":"@stdlib/number/float16/base/assert/is-almost-equal","2oX":"@stdlib/number-float16-base-assert-is-almost-equal","2oY":"@stdlib/number/float16/base/assert/is-nan","2oZ":"@stdlib/number-float16-base-assert-is-nan","2oa":"@stdlib/number/float16/base/assert/is-negative-zero","2ob":"@stdlib/number-float16-base-assert-is-negative-zero","2oc":"@stdlib/number/float16/base/assert/is-positive-zero","2od":"@stdlib/number-float16-base-assert-is-positive-zero","2aI":"@stdlib/number/float16/base/exponent","2aJ":"@stdlib/number-float16-base-exponent","2oe":"@stdlib/number/float16/base/from-binary-string","2of":"@stdlib/number-float16-base-from-binary-string","2aK":"@stdlib/number/float16/base/from-word","2aL":"@stdlib/number-float16-base-from-word","2og":"@stdlib/number/float16/base/mul","2oh":"@stdlib/number-float16-base-mul","2oi":"@stdlib/number/float16/base/signbit","2oj":"@stdlib/number-float16-base-signbit","2ok":"@stdlib/number/float16/base/significand","2ol":"@stdlib/number-float16-base-significand","2om":"@stdlib/number/float16/base/sub","2on":"@stdlib/number-float16-base-sub","2aM":"@stdlib/number/float16/base/to-binary-string","2aN":"@stdlib/number-float16-base-to-binary-string","2oo":"@stdlib/number/float16/base/to-float32","2op":"@stdlib/number-float16-base-to-float32","2oq":"@stdlib/number/float16/base/to-float64","2or":"@stdlib/number-float16-base-to-float64","2aO":"@stdlib/number/float16/base/to-word","2aP":"@stdlib/number-float16-base-to-word","2os":"@stdlib/number/float16/base/ulp-difference","2ot":"@stdlib/number-float16-base-ulp-difference","2ou":"@stdlib/number/float16/ctor","2ov":"@stdlib/number-float16-ctor","2OW":"@stdlib/number/float32/base/assert/is-almost-equal","2OX":"@stdlib/number-float32-base-assert-is-almost-equal","2ow":"@stdlib/number/float32/base/assert/is-almost-same-value","2ox":"@stdlib/number-float32-base-assert-is-almost-same-value","1q4":"@stdlib/number/float32/base/assert/is-same-value-zero","1q5":"@stdlib/number-float32-base-assert-is-same-value-zero","1q6":"@stdlib/number/float32/base/assert/is-same-value","1q7":"@stdlib/number-float32-base-assert-is-same-value","1q8":"@stdlib/number/float32/base/assert","1q9":"@stdlib/number-float32-base-assert","0kg":"@stdlib/number/float32/base/exponent","0kh":"@stdlib/number-float32-base-exponent","0ki":"@stdlib/number/float32/base/from-binary-string","0kj":"@stdlib/number-float32-base-from-binary-string","0kk":"@stdlib/number/float32/base/from-word","0kl":"@stdlib/number-float32-base-from-word","2Ae":"@stdlib/number/float32/base/identity","2Af":"@stdlib/number-float32-base-identity","0km":"@stdlib/number/float32/base/normalize","0kn":"@stdlib/number-float32-base-normalize","0ko":"@stdlib/number/float32/base","0kp":"@stdlib/number-float32-base","0kq":"@stdlib/number/float32/base/signbit","0kr":"@stdlib/number-float32-base-signbit","0ks":"@stdlib/number/float32/base/significand","0kt":"@stdlib/number-float32-base-significand","28A":"@stdlib/number/float32/base/sub","28B":"@stdlib/number-float32-base-sub","0ku":"@stdlib/number/float32/base/to-binary-string","0kv":"@stdlib/number-float32-base-to-binary-string","2oy":"@stdlib/number/float32/base/to-float16","2oz":"@stdlib/number-float32-base-to-float16","0kw":"@stdlib/number/float32/base/to-int32","0kx":"@stdlib/number-float32-base-to-int32","0ky":"@stdlib/number/float32/base/to-uint32","0kz":"@stdlib/number-float32-base-to-uint32","0l0":"@stdlib/number/float32/base/to-word","0l1":"@stdlib/number-float32-base-to-word","2OY":"@stdlib/number/float32/base/ulp-difference","2OZ":"@stdlib/number-float32-base-ulp-difference","0l2":"@stdlib/number/float32","0l3":"@stdlib/number-float32","28C":"@stdlib/number/float64/base/add","28D":"@stdlib/number-float64-base-add","28E":"@stdlib/number/float64/base/add3","28F":"@stdlib/number-float64-base-add3","28G":"@stdlib/number/float64/base/add4","28H":"@stdlib/number-float64-base-add4","28I":"@stdlib/number/float64/base/add5","28J":"@stdlib/number-float64-base-add5","2Oa":"@stdlib/number/float64/base/assert/is-almost-equal","2Ob":"@stdlib/number-float64-base-assert-is-almost-equal","2p0":"@stdlib/number/float64/base/assert/is-almost-same-value","2p1":"@stdlib/number-float64-base-assert-is-almost-same-value","1qA":"@stdlib/number/float64/base/assert/is-same-value-zero","1qB":"@stdlib/number-float64-base-assert-is-same-value-zero","1qC":"@stdlib/number/float64/base/assert/is-same-value","1qD":"@stdlib/number-float64-base-assert-is-same-value","1qE":"@stdlib/number/float64/base/assert","1qF":"@stdlib/number-float64-base-assert","28K":"@stdlib/number/float64/base/div","28L":"@stdlib/number-float64-base-div","0l4":"@stdlib/number/float64/base/exponent","0l5":"@stdlib/number-float64-base-exponent","0l6":"@stdlib/number/float64/base/from-binary-string","0l7":"@stdlib/number-float64-base-from-binary-string","0l8":"@stdlib/number/float64/base/from-int64-bytes","0l9":"@stdlib/number-float64-base-from-int64-bytes","0lA":"@stdlib/number/float64/base/from-words","0lB":"@stdlib/number-float64-base-from-words","0lC":"@stdlib/number/float64/base/get-high-word","0lD":"@stdlib/number-float64-base-get-high-word","0lE":"@stdlib/number/float64/base/get-low-word","0lF":"@stdlib/number-float64-base-get-low-word","2Ag":"@stdlib/number/float64/base/identity","2Ah":"@stdlib/number-float64-base-identity","28M":"@stdlib/number/float64/base/mul","28N":"@stdlib/number-float64-base-mul","0lG":"@stdlib/number/float64/base/normalize","0lH":"@stdlib/number-float64-base-normalize","0lI":"@stdlib/number/float64/base","0lJ":"@stdlib/number-float64-base","0lK":"@stdlib/number/float64/base/set-high-word","0lL":"@stdlib/number-float64-base-set-high-word","0lM":"@stdlib/number/float64/base/set-low-word","0lN":"@stdlib/number-float64-base-set-low-word","0lO":"@stdlib/number/float64/base/signbit","0lP":"@stdlib/number-float64-base-signbit","28O":"@stdlib/number/float64/base/sub","28P":"@stdlib/number-float64-base-sub","2p2":"@stdlib/number/float64/base/sub3","2p3":"@stdlib/number-float64-base-sub3","0lQ":"@stdlib/number/float64/base/to-binary-string","0lR":"@stdlib/number-float64-base-to-binary-string","2YW":"@stdlib/number/float64/base/to-float16","2YX":"@stdlib/number-float64-base-to-float16","0lS":"@stdlib/number/float64/base/to-float32","0lT":"@stdlib/number-float64-base-to-float32","0lU":"@stdlib/number/float64/base/to-int32","0lV":"@stdlib/number-float64-base-to-int32","0lW":"@stdlib/number/float64/base/to-int64-bytes","0lX":"@stdlib/number-float64-base-to-int64-bytes","0lY":"@stdlib/number/float64/base/to-uint32","0lZ":"@stdlib/number-float64-base-to-uint32","0la":"@stdlib/number/float64/base/to-words","0lb":"@stdlib/number-float64-base-to-words","2L6":"@stdlib/number/float64/base/ulp-difference","2L7":"@stdlib/number-float64-base-ulp-difference","0lc":"@stdlib/number/float64","0ld":"@stdlib/number-float64","1dk":"@stdlib/number/float64/reviver","1dl":"@stdlib/number-float64-reviver","1dm":"@stdlib/number/float64/to-json","1dn":"@stdlib/number-float64-to-json","2Ts":"@stdlib/number/int16/base/identity","2Tt":"@stdlib/number-int16-base-identity","2YY":"@stdlib/number/int16/base","2YZ":"@stdlib/number-int16-base","2Tu":"@stdlib/number/int32/base/identity","2Tv":"@stdlib/number-int32-base-identity","2Ai":"@stdlib/number/int32/base/mul","2Aj":"@stdlib/number-int32-base-mul","2Ak":"@stdlib/number/int32/base/muldw","2Al":"@stdlib/number-int32-base-muldw","0le":"@stdlib/number/int32/base","0lf":"@stdlib/number-int32-base","0lg":"@stdlib/number/int32/base/to-uint32","0lh":"@stdlib/number-int32-base-to-uint32","0li":"@stdlib/number/int32","0lj":"@stdlib/number-int32","2Tw":"@stdlib/number/int8/base/identity","2Tx":"@stdlib/number-int8-base-identity","2Ya":"@stdlib/number/int8/base","2Yb":"@stdlib/number-int8-base","0ll":"@stdlib/number","2L8":"@stdlib/number/uint16/base/add","2L9":"@stdlib/number-uint16-base-add","0lm":"@stdlib/number/uint16/base/from-binary-string","0ln":"@stdlib/number-uint16-base-from-binary-string","2Ty":"@stdlib/number/uint16/base/identity","2Tz":"@stdlib/number-uint16-base-identity","2LA":"@stdlib/number/uint16/base/mul","2LB":"@stdlib/number-uint16-base-mul","0lo":"@stdlib/number/uint16/base","0lp":"@stdlib/number-uint16-base","2LC":"@stdlib/number/uint16/base/sub","2LD":"@stdlib/number-uint16-base-sub","0lq":"@stdlib/number/uint16/base/to-binary-string","0lr":"@stdlib/number-uint16-base-to-binary-string","0ls":"@stdlib/number/uint16","0lt":"@stdlib/number-uint16","2LE":"@stdlib/number/uint32/base/add","2LF":"@stdlib/number-uint32-base-add","0lu":"@stdlib/number/uint32/base/from-binary-string","0lv":"@stdlib/number-uint32-base-from-binary-string","2U0":"@stdlib/number/uint32/base/identity","2U1":"@stdlib/number-uint32-base-identity","28Q":"@stdlib/number/uint32/base/mul","28R":"@stdlib/number-uint32-base-mul","2Am":"@stdlib/number/uint32/base/muldw","2An":"@stdlib/number-uint32-base-muldw","0lw":"@stdlib/number/uint32/base","0lx":"@stdlib/number-uint32-base","0ly":"@stdlib/number/uint32/base/rotl","0lz":"@stdlib/number-uint32-base-rotl","0m0":"@stdlib/number/uint32/base/rotr","0m1":"@stdlib/number-uint32-base-rotr","2LG":"@stdlib/number/uint32/base/sub","2LH":"@stdlib/number-uint32-base-sub","0m2":"@stdlib/number/uint32/base/to-binary-string","0m3":"@stdlib/number-uint32-base-to-binary-string","0m4":"@stdlib/number/uint32/base/to-int32","0m5":"@stdlib/number-uint32-base-to-int32","0m6":"@stdlib/number/uint32","0m7":"@stdlib/number-uint32","2xM":"@stdlib/number/uint64/base/add","2xN":"@stdlib/number-uint64-base-add","2xO":"@stdlib/number/uint64/base/assert/is-equal","2xP":"@stdlib/number-uint64-base-assert-is-equal","2xQ":"@stdlib/number/uint64/base/to-words","2xR":"@stdlib/number-uint64-base-to-words","2p4":"@stdlib/number/uint64/ctor","2p5":"@stdlib/number-uint64-ctor","2LI":"@stdlib/number/uint8/base/add","2LJ":"@stdlib/number-uint8-base-add","0m8":"@stdlib/number/uint8/base/from-binary-string","0m9":"@stdlib/number-uint8-base-from-binary-string","2U2":"@stdlib/number/uint8/base/identity","2U3":"@stdlib/number-uint8-base-identity","2LK":"@stdlib/number/uint8/base/mul","2LL":"@stdlib/number-uint8-base-mul","0mA":"@stdlib/number/uint8/base","0mB":"@stdlib/number-uint8-base","2LM":"@stdlib/number/uint8/base/sub","2LN":"@stdlib/number-uint8-base-sub","0mC":"@stdlib/number/uint8/base/to-binary-string","0mD":"@stdlib/number-uint8-base-to-binary-string","0mE":"@stdlib/number/uint8","0mF":"@stdlib/number-uint8","2aQ":"@stdlib/object/any-in-by","2aR":"@stdlib/object-any-in-by","2aS":"@stdlib/object/any-own-by","2aT":"@stdlib/object-any-own-by","2Ry":"@stdlib/object/assign-in","2Rz":"@stdlib/object-assign-in","1do":"@stdlib/object/assign","1dp":"@stdlib/object-assign","2p6":"@stdlib/object/bifurcate-in","2p7":"@stdlib/object-bifurcate-in","2p8":"@stdlib/object/bifurcate-own","2p9":"@stdlib/object-bifurcate-own","2pA":"@stdlib/object/capitalize-keys","2pB":"@stdlib/object-capitalize-keys","2pC":"@stdlib/object/common-keys-in","2pD":"@stdlib/object-common-keys-in","2pE":"@stdlib/object/common-keys","2pF":"@stdlib/object-common-keys","1dq":"@stdlib/object/ctor","1dr":"@stdlib/object-ctor","2pG":"@stdlib/object/deep-get","2pH":"@stdlib/object-deep-get","2pI":"@stdlib/object/deep-set","2pJ":"@stdlib/object-deep-set","2Eu":"@stdlib/object/every-in-by","2Ev":"@stdlib/object-every-in-by","2Oc":"@stdlib/object/every-own-by","2Od":"@stdlib/object-every-own-by","2pK":"@stdlib/object/for-in","2pL":"@stdlib/object-for-in","2pM":"@stdlib/object/for-own","2pN":"@stdlib/object-for-own","2pO":"@stdlib/object/inverse-by","2pP":"@stdlib/object-inverse-by","2pQ":"@stdlib/object/inverse","2pR":"@stdlib/object-inverse","2pS":"@stdlib/object/lowercase-keys","2pT":"@stdlib/object-lowercase-keys","2aU":"@stdlib/object/move-property","2aV":"@stdlib/object-move-property","2Oe":"@stdlib/object/none-in-by","2Of":"@stdlib/object-none-in-by","2aW":"@stdlib/object/none-own-by","2aX":"@stdlib/object-none-own-by","1dt":"@stdlib/object","2Og":"@stdlib/object/some-in-by","2Oh":"@stdlib/object-some-in-by","2aY":"@stdlib/object/some-own-by","2aZ":"@stdlib/object-some-own-by","2pU":"@stdlib/object/uncapitalize-keys","2pV":"@stdlib/object-uncapitalize-keys","2pW":"@stdlib/object/uppercase-keys","2pX":"@stdlib/object-uppercase-keys","0mG":"@stdlib/os/arch","0mH":"@stdlib/os-arch","0mI":"@stdlib/os/byte-order","0mJ":"@stdlib/os-byte-order","0mK":"@stdlib/os/configdir","0mL":"@stdlib/os-configdir","0mM":"@stdlib/os/float-word-order","0mN":"@stdlib/os-float-word-order","0mO":"@stdlib/os/homedir","0mP":"@stdlib/os-homedir","0mQ":"@stdlib/os/num-cpus","0mR":"@stdlib/os-num-cpus","0mT":"@stdlib/os","0mU":"@stdlib/os/platform","0mV":"@stdlib/os-platform","0mW":"@stdlib/os/tmpdir","0mX":"@stdlib/os-tmpdir","0mY":"@stdlib/plot/base/ctor","0mZ":"@stdlib/plot-base-ctor","0ma":"@stdlib/plot/components/svg/annotations","0mb":"@stdlib/plot-components-svg-annotations","0mc":"@stdlib/plot/components/svg/axis","0md":"@stdlib/plot-components-svg-axis","0me":"@stdlib/plot/components/svg/background","0mf":"@stdlib/plot-components-svg-background","0mg":"@stdlib/plot/components/svg/canvas","0mh":"@stdlib/plot-components-svg-canvas","0mi":"@stdlib/plot/components/svg/clip-path","0mj":"@stdlib/plot-components-svg-clip-path","0mk":"@stdlib/plot/components/svg/defs","0ml":"@stdlib/plot-components-svg-defs","0mm":"@stdlib/plot/components/svg/graph","0mn":"@stdlib/plot-components-svg-graph","0mo":"@stdlib/plot/components/svg/marks","0mp":"@stdlib/plot-components-svg-marks","0mq":"@stdlib/plot/components/svg/path","0mr":"@stdlib/plot-components-svg-path","0ms":"@stdlib/plot/components/svg/rug","0mt":"@stdlib/plot-components-svg-rug","0mu":"@stdlib/plot/components/svg/symbols","0mv":"@stdlib/plot-components-svg-symbols","0mw":"@stdlib/plot/components/svg/title","0mx":"@stdlib/plot-components-svg-title","0my":"@stdlib/plot/ctor","0mz":"@stdlib/plot-ctor","0n1":"@stdlib/plot","0n2":"@stdlib/plot/sparklines/base/ctor","0n3":"@stdlib/plot-sparklines-base-ctor","0n4":"@stdlib/plot/sparklines/base","0n5":"@stdlib/plot-sparklines-base","0n6":"@stdlib/plot/sparklines","0n7":"@stdlib/plot-sparklines","0n8":"@stdlib/plot/sparklines/unicode/column","0n9":"@stdlib/plot-sparklines-unicode-column","0nA":"@stdlib/plot/sparklines/unicode/line","0nB":"@stdlib/plot-sparklines-unicode-line","0nC":"@stdlib/plot/sparklines/unicode","0nD":"@stdlib/plot-sparklines-unicode","0nE":"@stdlib/plot/sparklines/unicode/tristate","0nF":"@stdlib/plot-sparklines-unicode-tristate","0nG":"@stdlib/plot/sparklines/unicode/up-down","0nH":"@stdlib/plot-sparklines-unicode-up-down","0nI":"@stdlib/plot/sparklines/unicode/win-loss","0nJ":"@stdlib/plot-sparklines-unicode-win-loss","0nK":"@stdlib/plot/unicode/stemleaf","0nL":"@stdlib/plot-unicode-stemleaf","0nM":"@stdlib/process/argv","0nN":"@stdlib/process-argv","0nO":"@stdlib/process/chdir","0nP":"@stdlib/process-chdir","0nQ":"@stdlib/process/cwd","0nR":"@stdlib/process-cwd","0nS":"@stdlib/process/env","0nT":"@stdlib/process-env","0nU":"@stdlib/process/exec-path","0nV":"@stdlib/process-exec-path","0nW":"@stdlib/process/getegid","0nX":"@stdlib/process-getegid","0nY":"@stdlib/process/geteuid","0nZ":"@stdlib/process-geteuid","0na":"@stdlib/process/getgid","0nb":"@stdlib/process-getgid","0nc":"@stdlib/process/getuid","0nd":"@stdlib/process-getuid","0ne":"@stdlib/process/node-version","0nf":"@stdlib/process-node-version","0nh":"@stdlib/process","0ni":"@stdlib/process/read-stdin","0nj":"@stdlib/process-read-stdin","0nk":"@stdlib/process/umask","0nl":"@stdlib/process-umask","0nm":"@stdlib/proxy/ctor","0nn":"@stdlib/proxy-ctor","0np":"@stdlib/proxy","2pY":"@stdlib/random/arcsine","2pZ":"@stdlib/random-arcsine","1du":"@stdlib/random/array/arcsine","1dv":"@stdlib/random-array-arcsine","1o2":"@stdlib/random/array/bernoulli","1o3":"@stdlib/random-array-bernoulli","1dw":"@stdlib/random/array/beta","1dx":"@stdlib/random-array-beta","1dy":"@stdlib/random/array/betaprime","1dz":"@stdlib/random-array-betaprime","1qG":"@stdlib/random/array/binomial","1qH":"@stdlib/random-array-binomial","1qI":"@stdlib/random/array/cauchy","1qJ":"@stdlib/random-array-cauchy","1o4":"@stdlib/random/array/chi","1o5":"@stdlib/random-array-chi","1o6":"@stdlib/random/array/chisquare","1o7":"@stdlib/random-array-chisquare","1e0":"@stdlib/random/array/cosine","1e1":"@stdlib/random-array-cosine","1e2":"@stdlib/random/array/discrete-uniform","1e3":"@stdlib/random-array-discrete-uniform","1qK":"@stdlib/random/array/erlang","1qL":"@stdlib/random-array-erlang","1e4":"@stdlib/random/array/exponential","1e5":"@stdlib/random-array-exponential","1qM":"@stdlib/random/array/f","1qN":"@stdlib/random-array-f","1qO":"@stdlib/random/array/frechet","1qP":"@stdlib/random-array-frechet","1e6":"@stdlib/random/array/gamma","1e7":"@stdlib/random-array-gamma","1e8":"@stdlib/random/array/geometric","1e9":"@stdlib/random-array-geometric","1qQ":"@stdlib/random/array/gumbel","1qR":"@stdlib/random-array-gumbel","1qS":"@stdlib/random/array/hypergeometric","1qT":"@stdlib/random-array-hypergeometric","1eA":"@stdlib/random/array/invgamma","1eB":"@stdlib/random-array-invgamma","1qU":"@stdlib/random/array/kumaraswamy","1qV":"@stdlib/random-array-kumaraswamy","1qW":"@stdlib/random/array/laplace","1qX":"@stdlib/random-array-laplace","1qY":"@stdlib/random/array/levy","1qZ":"@stdlib/random-array-levy","1qa":"@stdlib/random/array/logistic","1qb":"@stdlib/random-array-logistic","1eC":"@stdlib/random/array/lognormal","1eD":"@stdlib/random-array-lognormal","1eE":"@stdlib/random/array/minstd-shuffle","1eF":"@stdlib/random-array-minstd-shuffle","1eG":"@stdlib/random/array/minstd","1eH":"@stdlib/random-array-minstd","1eI":"@stdlib/random/array/mt19937","1eJ":"@stdlib/random-array-mt19937","1qc":"@stdlib/random/array/negative-binomial","1qd":"@stdlib/random-array-negative-binomial","1eK":"@stdlib/random/array/normal","1eL":"@stdlib/random-array-normal","1eM":"@stdlib/random/array","1eN":"@stdlib/random-array","1qe":"@stdlib/random/array/pareto-type1","1qf":"@stdlib/random-array-pareto-type1","1o8":"@stdlib/random/array/poisson","1o9":"@stdlib/random-array-poisson","1eO":"@stdlib/random/array/randu","1eP":"@stdlib/random-array-randu","1oA":"@stdlib/random/array/rayleigh","1oB":"@stdlib/random-array-rayleigh","1oC":"@stdlib/random/array/t","1oD":"@stdlib/random-array-t","1qg":"@stdlib/random/array/tools/binary-factory","1qh":"@stdlib/random-array-tools-binary-factory","1qi":"@stdlib/random/array/tools/binary","1qj":"@stdlib/random-array-tools-binary","1oE":"@stdlib/random/array/tools/nullary","1oF":"@stdlib/random-array-tools-nullary","1rY":"@stdlib/random/array/tools","1rZ":"@stdlib/random-array-tools","1qk":"@stdlib/random/array/tools/ternary-factory","1ql":"@stdlib/random-array-tools-ternary-factory","1qm":"@stdlib/random/array/tools/ternary","1qn":"@stdlib/random-array-tools-ternary","1oG":"@stdlib/random/array/tools/unary-factory","1oH":"@stdlib/random-array-tools-unary-factory","1oI":"@stdlib/random/array/tools/unary","1oJ":"@stdlib/random-array-tools-unary","1qo":"@stdlib/random/array/triangular","1qp":"@stdlib/random-array-triangular","1eQ":"@stdlib/random/array/uniform","1eR":"@stdlib/random-array-uniform","1qq":"@stdlib/random/array/weibull","1qr":"@stdlib/random-array-weibull","0nq":"@stdlib/random/base/arcsine","0nr":"@stdlib/random-base-arcsine","0ns":"@stdlib/random/base/bernoulli","0nt":"@stdlib/random-base-bernoulli","0nu":"@stdlib/random/base/beta","0nv":"@stdlib/random-base-beta","0nw":"@stdlib/random/base/betaprime","0nx":"@stdlib/random-base-betaprime","0ny":"@stdlib/random/base/binomial","0nz":"@stdlib/random-base-binomial","0o0":"@stdlib/random/base/box-muller","0o1":"@stdlib/random-base-box-muller","0o2":"@stdlib/random/base/cauchy","0o3":"@stdlib/random-base-cauchy","0o4":"@stdlib/random/base/chi","0o5":"@stdlib/random-base-chi","0o6":"@stdlib/random/base/chisquare","0o7":"@stdlib/random-base-chisquare","0o8":"@stdlib/random/base/cosine","0o9":"@stdlib/random-base-cosine","0oA":"@stdlib/random/base/discrete-uniform","0oB":"@stdlib/random-base-discrete-uniform","0oC":"@stdlib/random/base/erlang","0oD":"@stdlib/random-base-erlang","0oE":"@stdlib/random/base/exponential","0oF":"@stdlib/random-base-exponential","0oG":"@stdlib/random/base/f","0oH":"@stdlib/random-base-f","0oI":"@stdlib/random/base/frechet","0oJ":"@stdlib/random-base-frechet","0oK":"@stdlib/random/base/gamma","0oL":"@stdlib/random-base-gamma","0oM":"@stdlib/random/base/geometric","0oN":"@stdlib/random-base-geometric","0oO":"@stdlib/random/base/gumbel","0oP":"@stdlib/random-base-gumbel","0oQ":"@stdlib/random/base/hypergeometric","0oR":"@stdlib/random-base-hypergeometric","0oS":"@stdlib/random/base/improved-ziggurat","0oT":"@stdlib/random-base-improved-ziggurat","0oU":"@stdlib/random/base/invgamma","0oV":"@stdlib/random-base-invgamma","0oW":"@stdlib/random/base/kumaraswamy","0oX":"@stdlib/random-base-kumaraswamy","0oY":"@stdlib/random/base/laplace","0oZ":"@stdlib/random-base-laplace","0oa":"@stdlib/random/base/levy","0ob":"@stdlib/random-base-levy","0oc":"@stdlib/random/base/logistic","0od":"@stdlib/random-base-logistic","0oe":"@stdlib/random/base/lognormal","0of":"@stdlib/random-base-lognormal","0og":"@stdlib/random/base/minstd-shuffle","0oh":"@stdlib/random-base-minstd-shuffle","0oi":"@stdlib/random/base/minstd","0oj":"@stdlib/random-base-minstd","0ok":"@stdlib/random/base/mt19937","0ol":"@stdlib/random-base-mt19937","0om":"@stdlib/random/base/negative-binomial","0on":"@stdlib/random-base-negative-binomial","0oo":"@stdlib/random/base/normal","0op":"@stdlib/random-base-normal","0oq":"@stdlib/random/base","0or":"@stdlib/random-base","0os":"@stdlib/random/base/pareto-type1","0ot":"@stdlib/random-base-pareto-type1","0ou":"@stdlib/random/base/poisson","0ov":"@stdlib/random-base-poisson","0ow":"@stdlib/random/base/randi","0ox":"@stdlib/random-base-randi","0oy":"@stdlib/random/base/randn","0oz":"@stdlib/random-base-randn","0p0":"@stdlib/random/base/randu","0p1":"@stdlib/random-base-randu","0p2":"@stdlib/random/base/rayleigh","0p3":"@stdlib/random-base-rayleigh","0p4":"@stdlib/random/base/reviver","0p5":"@stdlib/random-base-reviver","1sM":"@stdlib/random/base/shared","1sN":"@stdlib/random-base-shared","0p6":"@stdlib/random/base/t","0p7":"@stdlib/random-base-t","0p8":"@stdlib/random/base/triangular","0p9":"@stdlib/random-base-triangular","0pA":"@stdlib/random/base/uniform","0pB":"@stdlib/random-base-uniform","0pC":"@stdlib/random/base/weibull","0pD":"@stdlib/random-base-weibull","2pa":"@stdlib/random/bernoulli","2pb":"@stdlib/random-bernoulli","2pc":"@stdlib/random/beta","2pd":"@stdlib/random-beta","2pe":"@stdlib/random/betaprime","2pf":"@stdlib/random-betaprime","2pg":"@stdlib/random/binomial","2ph":"@stdlib/random-binomial","2pi":"@stdlib/random/cauchy","2pj":"@stdlib/random-cauchy","2pk":"@stdlib/random/chi","2pl":"@stdlib/random-chi","2pm":"@stdlib/random/chisquare","2pn":"@stdlib/random-chisquare","2po":"@stdlib/random/cosine","2pp":"@stdlib/random-cosine","2pq":"@stdlib/random/discrete-uniform","2pr":"@stdlib/random-discrete-uniform","2ps":"@stdlib/random/erlang","2pt":"@stdlib/random-erlang","1eS":"@stdlib/random/exponential","1eT":"@stdlib/random-exponential","2pu":"@stdlib/random/f","2pv":"@stdlib/random-f","2pw":"@stdlib/random/frechet","2px":"@stdlib/random-frechet","2py":"@stdlib/random/gamma","2pz":"@stdlib/random-gamma","2q0":"@stdlib/random/geometric","2q1":"@stdlib/random-geometric","2q2":"@stdlib/random/gumbel","2q3":"@stdlib/random-gumbel","2q4":"@stdlib/random/hypergeometric","2q5":"@stdlib/random-hypergeometric","2q6":"@stdlib/random/invgamma","2q7":"@stdlib/random-invgamma","0pE":"@stdlib/random/iter/arcsine","0pF":"@stdlib/random-iter-arcsine","0pG":"@stdlib/random/iter/bernoulli","0pH":"@stdlib/random-iter-bernoulli","0pI":"@stdlib/random/iter/beta","0pJ":"@stdlib/random-iter-beta","0pK":"@stdlib/random/iter/betaprime","0pL":"@stdlib/random-iter-betaprime","0pM":"@stdlib/random/iter/binomial","0pN":"@stdlib/random-iter-binomial","0pO":"@stdlib/random/iter/box-muller","0pP":"@stdlib/random-iter-box-muller","0pQ":"@stdlib/random/iter/cauchy","0pR":"@stdlib/random-iter-cauchy","0pS":"@stdlib/random/iter/chi","0pT":"@stdlib/random-iter-chi","0pU":"@stdlib/random/iter/chisquare","0pV":"@stdlib/random-iter-chisquare","0pW":"@stdlib/random/iter/cosine","0pX":"@stdlib/random-iter-cosine","0pY":"@stdlib/random/iter/discrete-uniform","0pZ":"@stdlib/random-iter-discrete-uniform","0pa":"@stdlib/random/iter/erlang","0pb":"@stdlib/random-iter-erlang","0pc":"@stdlib/random/iter/exponential","0pd":"@stdlib/random-iter-exponential","0pe":"@stdlib/random/iter/f","0pf":"@stdlib/random-iter-f","0pg":"@stdlib/random/iter/frechet","0ph":"@stdlib/random-iter-frechet","0pi":"@stdlib/random/iter/gamma","0pj":"@stdlib/random-iter-gamma","0pk":"@stdlib/random/iter/geometric","0pl":"@stdlib/random-iter-geometric","0pm":"@stdlib/random/iter/gumbel","0pn":"@stdlib/random-iter-gumbel","0po":"@stdlib/random/iter/hypergeometric","0pp":"@stdlib/random-iter-hypergeometric","0pq":"@stdlib/random/iter/improved-ziggurat","0pr":"@stdlib/random-iter-improved-ziggurat","0ps":"@stdlib/random/iter/invgamma","0pt":"@stdlib/random-iter-invgamma","0pu":"@stdlib/random/iter/kumaraswamy","0pv":"@stdlib/random-iter-kumaraswamy","0pw":"@stdlib/random/iter/laplace","0px":"@stdlib/random-iter-laplace","0py":"@stdlib/random/iter/levy","0pz":"@stdlib/random-iter-levy","0q0":"@stdlib/random/iter/logistic","0q1":"@stdlib/random-iter-logistic","0q2":"@stdlib/random/iter/lognormal","0q3":"@stdlib/random-iter-lognormal","0q4":"@stdlib/random/iter/minstd-shuffle","0q5":"@stdlib/random-iter-minstd-shuffle","0q6":"@stdlib/random/iter/minstd","0q7":"@stdlib/random-iter-minstd","0q8":"@stdlib/random/iter/mt19937","0q9":"@stdlib/random-iter-mt19937","0qA":"@stdlib/random/iter/negative-binomial","0qB":"@stdlib/random-iter-negative-binomial","0qC":"@stdlib/random/iter/normal","0qD":"@stdlib/random-iter-normal","0qE":"@stdlib/random/iter","0qF":"@stdlib/random-iter","0qG":"@stdlib/random/iter/pareto-type1","0qH":"@stdlib/random-iter-pareto-type1","0qI":"@stdlib/random/iter/poisson","0qJ":"@stdlib/random-iter-poisson","0qK":"@stdlib/random/iter/randi","0qL":"@stdlib/random-iter-randi","0qM":"@stdlib/random/iter/randn","0qN":"@stdlib/random-iter-randn","0qO":"@stdlib/random/iter/randu","0qP":"@stdlib/random-iter-randu","0qQ":"@stdlib/random/iter/rayleigh","0qR":"@stdlib/random-iter-rayleigh","0qS":"@stdlib/random/iter/t","0qT":"@stdlib/random-iter-t","0qU":"@stdlib/random/iter/triangular","0qV":"@stdlib/random-iter-triangular","0qW":"@stdlib/random/iter/uniform","0qX":"@stdlib/random-iter-uniform","0qY":"@stdlib/random/iter/weibull","0qZ":"@stdlib/random-iter-weibull","2q8":"@stdlib/random/kumaraswamy","2q9":"@stdlib/random-kumaraswamy","2qA":"@stdlib/random/laplace","2qB":"@stdlib/random-laplace","2qC":"@stdlib/random/levy","2qD":"@stdlib/random-levy","2qE":"@stdlib/random/logistic","2qF":"@stdlib/random-logistic","2qG":"@stdlib/random/lognormal","2qH":"@stdlib/random-lognormal","2qI":"@stdlib/random/negative-binomial","2qJ":"@stdlib/random-negative-binomial","2qK":"@stdlib/random/normal","2qL":"@stdlib/random-normal","0qb":"@stdlib/random","2qM":"@stdlib/random/pareto-type1","2qN":"@stdlib/random-pareto-type1","2qO":"@stdlib/random/poisson","2qP":"@stdlib/random-poisson","2qQ":"@stdlib/random/rayleigh","2qR":"@stdlib/random-rayleigh","0qc":"@stdlib/random/sample","0qd":"@stdlib/random-sample","0qe":"@stdlib/random/shuffle","0qf":"@stdlib/random-shuffle","0qg":"@stdlib/random/streams/arcsine","0qh":"@stdlib/random-streams-arcsine","0qi":"@stdlib/random/streams/bernoulli","0qj":"@stdlib/random-streams-bernoulli","0qk":"@stdlib/random/streams/beta","0ql":"@stdlib/random-streams-beta","0qm":"@stdlib/random/streams/betaprime","0qn":"@stdlib/random-streams-betaprime","0qo":"@stdlib/random/streams/binomial","0qp":"@stdlib/random-streams-binomial","0qq":"@stdlib/random/streams/box-muller","0qr":"@stdlib/random-streams-box-muller","0qs":"@stdlib/random/streams/cauchy","0qt":"@stdlib/random-streams-cauchy","0qu":"@stdlib/random/streams/chi","0qv":"@stdlib/random-streams-chi","0qw":"@stdlib/random/streams/chisquare","0qx":"@stdlib/random-streams-chisquare","0qy":"@stdlib/random/streams/cosine","0qz":"@stdlib/random-streams-cosine","0r0":"@stdlib/random/streams/discrete-uniform","0r1":"@stdlib/random-streams-discrete-uniform","0r2":"@stdlib/random/streams/erlang","0r3":"@stdlib/random-streams-erlang","0r4":"@stdlib/random/streams/exponential","0r5":"@stdlib/random-streams-exponential","0r6":"@stdlib/random/streams/f","0r7":"@stdlib/random-streams-f","0r8":"@stdlib/random/streams/frechet","0r9":"@stdlib/random-streams-frechet","0rA":"@stdlib/random/streams/gamma","0rB":"@stdlib/random-streams-gamma","0rC":"@stdlib/random/streams/geometric","0rD":"@stdlib/random-streams-geometric","0rE":"@stdlib/random/streams/gumbel","0rF":"@stdlib/random-streams-gumbel","0rG":"@stdlib/random/streams/hypergeometric","0rH":"@stdlib/random-streams-hypergeometric","0rI":"@stdlib/random/streams/improved-ziggurat","0rJ":"@stdlib/random-streams-improved-ziggurat","0rK":"@stdlib/random/streams/invgamma","0rL":"@stdlib/random-streams-invgamma","0rM":"@stdlib/random/streams/kumaraswamy","0rN":"@stdlib/random-streams-kumaraswamy","0rO":"@stdlib/random/streams/laplace","0rP":"@stdlib/random-streams-laplace","0rQ":"@stdlib/random/streams/levy","0rR":"@stdlib/random-streams-levy","0rS":"@stdlib/random/streams/logistic","0rT":"@stdlib/random-streams-logistic","0rU":"@stdlib/random/streams/lognormal","0rV":"@stdlib/random-streams-lognormal","0rW":"@stdlib/random/streams/minstd-shuffle","0rX":"@stdlib/random-streams-minstd-shuffle","0rY":"@stdlib/random/streams/minstd","0rZ":"@stdlib/random-streams-minstd","0ra":"@stdlib/random/streams/mt19937","0rb":"@stdlib/random-streams-mt19937","0rc":"@stdlib/random/streams/negative-binomial","0rd":"@stdlib/random-streams-negative-binomial","0re":"@stdlib/random/streams/normal","0rf":"@stdlib/random-streams-normal","0rg":"@stdlib/random/streams","0rh":"@stdlib/random-streams","0ri":"@stdlib/random/streams/pareto-type1","0rj":"@stdlib/random-streams-pareto-type1","0rk":"@stdlib/random/streams/poisson","0rl":"@stdlib/random-streams-poisson","0rm":"@stdlib/random/streams/randi","0rn":"@stdlib/random-streams-randi","0ro":"@stdlib/random/streams/randn","0rp":"@stdlib/random-streams-randn","0rq":"@stdlib/random/streams/randu","0rr":"@stdlib/random-streams-randu","0rs":"@stdlib/random/streams/rayleigh","0rt":"@stdlib/random-streams-rayleigh","0ru":"@stdlib/random/streams/t","0rv":"@stdlib/random-streams-t","0rw":"@stdlib/random/streams/triangular","0rx":"@stdlib/random-streams-triangular","0ry":"@stdlib/random/streams/uniform","0rz":"@stdlib/random-streams-uniform","0s0":"@stdlib/random/streams/weibull","0s1":"@stdlib/random-streams-weibull","1eU":"@stdlib/random/strided/arcsine","1eV":"@stdlib/random-strided-arcsine","1ra":"@stdlib/random/strided/bernoulli","1rb":"@stdlib/random-strided-bernoulli","1eW":"@stdlib/random/strided/beta","1eX":"@stdlib/random-strided-beta","1eY":"@stdlib/random/strided/betaprime","1eZ":"@stdlib/random-strided-betaprime","1rc":"@stdlib/random/strided/chi","1rd":"@stdlib/random-strided-chi","1re":"@stdlib/random/strided/chisquare","1rf":"@stdlib/random-strided-chisquare","1ea":"@stdlib/random/strided/cosine","1eb":"@stdlib/random-strided-cosine","1ec":"@stdlib/random/strided/discrete-uniform","1ed":"@stdlib/random-strided-discrete-uniform","1ee":"@stdlib/random/strided/exponential","1ef":"@stdlib/random-strided-exponential","1eg":"@stdlib/random/strided/gamma","1eh":"@stdlib/random-strided-gamma","1rg":"@stdlib/random/strided/geometric","1rh":"@stdlib/random-strided-geometric","1ei":"@stdlib/random/strided/invgamma","1ej":"@stdlib/random-strided-invgamma","1ek":"@stdlib/random/strided/lognormal","1el":"@stdlib/random-strided-lognormal","1em":"@stdlib/random/strided/minstd-shuffle","1en":"@stdlib/random-strided-minstd-shuffle","1eo":"@stdlib/random/strided/minstd","1ep":"@stdlib/random-strided-minstd","1eq":"@stdlib/random/strided/mt19937","1er":"@stdlib/random-strided-mt19937","1es":"@stdlib/random/strided/normal","1et":"@stdlib/random-strided-normal","1eu":"@stdlib/random/strided","1ev":"@stdlib/random-strided","1ri":"@stdlib/random/strided/poisson","1rj":"@stdlib/random-strided-poisson","1ew":"@stdlib/random/strided/randu","1ex":"@stdlib/random-strided-randu","1rk":"@stdlib/random/strided/rayleigh","1rl":"@stdlib/random-strided-rayleigh","1rm":"@stdlib/random/strided/t","1rn":"@stdlib/random-strided-t","1ro":"@stdlib/random/strided/tools/binary-factory","1rp":"@stdlib/random-strided-tools-binary-factory","1rq":"@stdlib/random/strided/tools","1rr":"@stdlib/random-strided-tools","1rs":"@stdlib/random/strided/tools/ternary-factory","1rt":"@stdlib/random-strided-tools-ternary-factory","1ru":"@stdlib/random/strided/tools/unary-factory","1rv":"@stdlib/random-strided-tools-unary-factory","1ey":"@stdlib/random/strided/uniform","1ez":"@stdlib/random-strided-uniform","1f0":"@stdlib/random/strided/weibull","1f1":"@stdlib/random-strided-weibull","2qS":"@stdlib/random/t","2qT":"@stdlib/random-t","2HE":"@stdlib/random/tools/binary-factory","2HF":"@stdlib/random-tools-binary-factory","2HG":"@stdlib/random/tools/binary","2HH":"@stdlib/random-tools-binary","2GK":"@stdlib/random/tools","2GL":"@stdlib/random-tools","2qU":"@stdlib/random/tools/ternary-factory","2qV":"@stdlib/random-tools-ternary-factory","2qW":"@stdlib/random/tools/ternary","2qX":"@stdlib/random-tools-ternary","2GM":"@stdlib/random/tools/unary-factory","2GN":"@stdlib/random-tools-unary-factory","2GO":"@stdlib/random/tools/unary","2GP":"@stdlib/random-tools-unary","2qY":"@stdlib/random/triangular","2qZ":"@stdlib/random-triangular","2HI":"@stdlib/random/uniform","2HJ":"@stdlib/random-uniform","2qa":"@stdlib/random/weibull","2qb":"@stdlib/random-weibull","0s2":"@stdlib/regexp/basename-posix","0s3":"@stdlib/regexp-basename-posix","0s4":"@stdlib/regexp/basename-windows","0s5":"@stdlib/regexp-basename-windows","0s6":"@stdlib/regexp/basename","0s7":"@stdlib/regexp-basename","0s8":"@stdlib/regexp/color-hexadecimal","0s9":"@stdlib/regexp-color-hexadecimal","0sA":"@stdlib/regexp/decimal-number","0sB":"@stdlib/regexp-decimal-number","0sC":"@stdlib/regexp/dirname-posix","0sD":"@stdlib/regexp-dirname-posix","0sE":"@stdlib/regexp/dirname-windows","0sF":"@stdlib/regexp-dirname-windows","0sG":"@stdlib/regexp/dirname","0sH":"@stdlib/regexp-dirname","1f2":"@stdlib/regexp/duration-string","1f3":"@stdlib/regexp-duration-string","0sI":"@stdlib/regexp/eol","0sJ":"@stdlib/regexp-eol","0sK":"@stdlib/regexp/extended-length-path","0sL":"@stdlib/regexp-extended-length-path","0sM":"@stdlib/regexp/extname-posix","0sN":"@stdlib/regexp-extname-posix","0sO":"@stdlib/regexp/extname-windows","0sP":"@stdlib/regexp-extname-windows","0sQ":"@stdlib/regexp/extname","0sR":"@stdlib/regexp-extname","0sS":"@stdlib/regexp/filename-posix","0sT":"@stdlib/regexp-filename-posix","0sU":"@stdlib/regexp/filename-windows","0sV":"@stdlib/regexp-filename-windows","0sW":"@stdlib/regexp/filename","0sX":"@stdlib/regexp-filename","0sY":"@stdlib/regexp/function-name","0sZ":"@stdlib/regexp-function-name","0sa":"@stdlib/regexp/native-function","0sb":"@stdlib/regexp-native-function","0sd":"@stdlib/regexp","0se":"@stdlib/regexp/regexp","0sf":"@stdlib/regexp-regexp","1f4":"@stdlib/regexp/reviver","1f5":"@stdlib/regexp-reviver","1f6":"@stdlib/regexp/semver","1f7":"@stdlib/regexp-semver","1f8":"@stdlib/regexp/to-json","1f9":"@stdlib/regexp-to-json","0sg":"@stdlib/regexp/unc-path","0sh":"@stdlib/regexp-unc-path","0si":"@stdlib/regexp/utf16-surrogate-pair","0sj":"@stdlib/regexp-utf16-surrogate-pair","0sk":"@stdlib/regexp/utf16-unpaired-surrogate","0sl":"@stdlib/regexp-utf16-unpaired-surrogate","0sm":"@stdlib/regexp/whitespace","0sn":"@stdlib/regexp-whitespace","0so":"@stdlib/repl/code-blocks","0sp":"@stdlib/repl-code-blocks","0sq":"@stdlib/repl/help","0sr":"@stdlib/repl-help","0ss":"@stdlib/repl/info","0st":"@stdlib/repl-info","0sv":"@stdlib/repl","0sw":"@stdlib/repl/presentation","0sx":"@stdlib/repl-presentation","0sy":"@stdlib/repl/server","0sz":"@stdlib/repl-server","0t0":"@stdlib/repl/signature","0t1":"@stdlib/repl-signature","0t2":"@stdlib/repl/typed-signature","0t3":"@stdlib/repl-typed-signature","0t4":"@stdlib/simulate/iter/awgn","0t5":"@stdlib/simulate-iter-awgn","0t6":"@stdlib/simulate/iter/awln","0t7":"@stdlib/simulate-iter-awln","0t8":"@stdlib/simulate/iter/awun","0t9":"@stdlib/simulate-iter-awun","0tA":"@stdlib/simulate/iter/bartlett-hann-pulse","0tB":"@stdlib/simulate-iter-bartlett-hann-pulse","0tC":"@stdlib/simulate/iter/bartlett-pulse","0tD":"@stdlib/simulate-iter-bartlett-pulse","0tE":"@stdlib/simulate/iter/cosine-wave","0tF":"@stdlib/simulate-iter-cosine-wave","0tG":"@stdlib/simulate/iter/dirac-comb","0tH":"@stdlib/simulate-iter-dirac-comb","0tI":"@stdlib/simulate/iter/flat-top-pulse","0tJ":"@stdlib/simulate-iter-flat-top-pulse","0tK":"@stdlib/simulate/iter/hann-pulse","0tL":"@stdlib/simulate-iter-hann-pulse","0tM":"@stdlib/simulate/iter/lanczos-pulse","0tN":"@stdlib/simulate-iter-lanczos-pulse","0tO":"@stdlib/simulate/iter","0tP":"@stdlib/simulate-iter","0tQ":"@stdlib/simulate/iter/periodic-sinc","0tR":"@stdlib/simulate-iter-periodic-sinc","0tS":"@stdlib/simulate/iter/pulse","0tT":"@stdlib/simulate-iter-pulse","0tU":"@stdlib/simulate/iter/sawtooth-wave","0tV":"@stdlib/simulate-iter-sawtooth-wave","0tW":"@stdlib/simulate/iter/sine-wave","0tX":"@stdlib/simulate-iter-sine-wave","0tY":"@stdlib/simulate/iter/square-wave","0tZ":"@stdlib/simulate-iter-square-wave","0ta":"@stdlib/simulate/iter/triangle-wave","0tb":"@stdlib/simulate-iter-triangle-wave","0td":"@stdlib/simulate","1kc":"@stdlib/slice/base/args2multislice","1kd":"@stdlib/slice-base-args2multislice","1rw":"@stdlib/slice/base/int2slice","1rx":"@stdlib/slice-base-int2slice","1j8":"@stdlib/slice/base/length","1j9":"@stdlib/slice-base-length","1jW":"@stdlib/slice/base/nonreduced-dimensions","1jX":"@stdlib/slice-base-nonreduced-dimensions","1jA":"@stdlib/slice/base/normalize-multi-slice","1jB":"@stdlib/slice-base-normalize-multi-slice","1jC":"@stdlib/slice/base/normalize-slice","1jD":"@stdlib/slice-base-normalize-slice","1io":"@stdlib/slice/base","1ip":"@stdlib/slice-base","1jY":"@stdlib/slice/base/reduced-dimensions","1jZ":"@stdlib/slice-base-reduced-dimensions","1ja":"@stdlib/slice/base/sargs2multislice","1jb":"@stdlib/slice-base-sargs2multislice","1jE":"@stdlib/slice/base/seq2multislice","1jF":"@stdlib/slice-base-seq2multislice","1iq":"@stdlib/slice/base/seq2slice","1ir":"@stdlib/slice-base-seq2slice","1jG":"@stdlib/slice/base/shape","1jH":"@stdlib/slice-base-shape","1is":"@stdlib/slice/base/slice2seq","1it":"@stdlib/slice-base-slice2seq","1iu":"@stdlib/slice/base/str2multislice","1iv":"@stdlib/slice-base-str2multislice","1iw":"@stdlib/slice/base/str2slice","1ix":"@stdlib/slice-base-str2slice","1iy":"@stdlib/slice/ctor","1iz":"@stdlib/slice-ctor","1j0":"@stdlib/slice/multi","1j1":"@stdlib/slice-multi","1j3":"@stdlib/slice","1j4":"@stdlib/slice/seq2slice","1j5":"@stdlib/slice-seq2slice","0te":"@stdlib/stats/anova1","0tf":"@stdlib/stats-anova1","2JO":"@stdlib/stats/array/max-by","2JP":"@stdlib/stats-array-max-by","2EY":"@stdlib/stats/array/max","2EZ":"@stdlib/stats-array-max","2GQ":"@stdlib/stats/array/maxabs","2GR":"@stdlib/stats-array-maxabs","2GS":"@stdlib/stats/array/maxsorted","2GT":"@stdlib/stats-array-maxsorted","2HK":"@stdlib/stats/array/mean","2HL":"@stdlib/stats-array-mean","2LO":"@stdlib/stats/array/meankbn","2LP":"@stdlib/stats-array-meankbn","2LQ":"@stdlib/stats/array/meankbn2","2LR":"@stdlib/stats-array-meankbn2","2LS":"@stdlib/stats/array/meanors","2LT":"@stdlib/stats-array-meanors","2LU":"@stdlib/stats/array/meanpn","2LV":"@stdlib/stats-array-meanpn","2LW":"@stdlib/stats/array/meanpw","2LX":"@stdlib/stats-array-meanpw","2LY":"@stdlib/stats/array/meanwd","2LZ":"@stdlib/stats-array-meanwd","2JQ":"@stdlib/stats/array/mediansorted","2JR":"@stdlib/stats-array-mediansorted","2qc":"@stdlib/stats/array/midrange-by","2qd":"@stdlib/stats-array-midrange-by","2qe":"@stdlib/stats/array/midrange","2qf":"@stdlib/stats-array-midrange","2JS":"@stdlib/stats/array/min-by","2JT":"@stdlib/stats-array-min-by","2Ew":"@stdlib/stats/array/min","2Ex":"@stdlib/stats-array-min","2Gq":"@stdlib/stats/array/minabs","2Gr":"@stdlib/stats-array-minabs","2Gs":"@stdlib/stats/array/minsorted","2Gt":"@stdlib/stats-array-minsorted","2Ea":"@stdlib/stats/array/mskmax","2Eb":"@stdlib/stats-array-mskmax","2qg":"@stdlib/stats/array/mskmaxabs","2qh":"@stdlib/stats-array-mskmaxabs","2qi":"@stdlib/stats/array/mskmidrange","2qj":"@stdlib/stats-array-mskmidrange","2Gu":"@stdlib/stats/array/mskmin","2Gv":"@stdlib/stats-array-mskmin","2qk":"@stdlib/stats/array/mskminabs","2ql":"@stdlib/stats-array-mskminabs","2HM":"@stdlib/stats/array/mskrange","2HN":"@stdlib/stats-array-mskrange","2JU":"@stdlib/stats/array/nanmax-by","2JV":"@stdlib/stats-array-nanmax-by","2Ec":"@stdlib/stats/array/nanmax","2Ed":"@stdlib/stats-array-nanmax","2JW":"@stdlib/stats/array/nanmaxabs","2JX":"@stdlib/stats-array-nanmaxabs","2La":"@stdlib/stats/array/nanmean","2Lb":"@stdlib/stats-array-nanmean","2Oi":"@stdlib/stats/array/nanmeanors","2Oj":"@stdlib/stats-array-nanmeanors","2Ok":"@stdlib/stats/array/nanmeanpn","2Ol":"@stdlib/stats-array-nanmeanpn","2Om":"@stdlib/stats/array/nanmeanwd","2On":"@stdlib/stats-array-nanmeanwd","2qm":"@stdlib/stats/array/nanmidrange-by","2qn":"@stdlib/stats-array-nanmidrange-by","2qo":"@stdlib/stats/array/nanmidrange","2qp":"@stdlib/stats-array-nanmidrange","2JY":"@stdlib/stats/array/nanmin-by","2JZ":"@stdlib/stats-array-nanmin-by","2HO":"@stdlib/stats/array/nanmin","2HP":"@stdlib/stats-array-nanmin","2Ja":"@stdlib/stats/array/nanminabs","2Jb":"@stdlib/stats-array-nanminabs","2Lc":"@stdlib/stats/array/nanmskmax","2Ld":"@stdlib/stats-array-nanmskmax","2qq":"@stdlib/stats/array/nanmskmidrange","2qr":"@stdlib/stats-array-nanmskmidrange","2Oo":"@stdlib/stats/array/nanmskmin","2Op":"@stdlib/stats-array-nanmskmin","2Oq":"@stdlib/stats/array/nanmskrange","2Or":"@stdlib/stats-array-nanmskrange","2Os":"@stdlib/stats/array/nanrange-by","2Ot":"@stdlib/stats-array-nanrange-by","2Jc":"@stdlib/stats/array/nanrange","2Jd":"@stdlib/stats-array-nanrange","2Ou":"@stdlib/stats/array/nanstdev","2Ov":"@stdlib/stats-array-nanstdev","2Ow":"@stdlib/stats/array/nanstdevch","2Ox":"@stdlib/stats-array-nanstdevch","2S0":"@stdlib/stats/array/nanstdevpn","2S1":"@stdlib/stats-array-nanstdevpn","2S2":"@stdlib/stats/array/nanstdevtk","2S3":"@stdlib/stats-array-nanstdevtk","2S4":"@stdlib/stats/array/nanstdevwd","2S5":"@stdlib/stats-array-nanstdevwd","2S6":"@stdlib/stats/array/nanstdevyc","2S7":"@stdlib/stats-array-nanstdevyc","2Oy":"@stdlib/stats/array/nanvariance","2Oz":"@stdlib/stats-array-nanvariance","2P0":"@stdlib/stats/array/nanvariancech","2P1":"@stdlib/stats-array-nanvariancech","2P2":"@stdlib/stats/array/nanvariancepn","2P3":"@stdlib/stats-array-nanvariancepn","2P4":"@stdlib/stats/array/nanvariancetk","2P5":"@stdlib/stats-array-nanvariancetk","2P6":"@stdlib/stats/array/nanvariancewd","2P7":"@stdlib/stats-array-nanvariancewd","2P8":"@stdlib/stats/array/nanvarianceyc","2P9":"@stdlib/stats-array-nanvarianceyc","2Je":"@stdlib/stats/array","2Jf":"@stdlib/stats-array","2PA":"@stdlib/stats/array/range-by","2PB":"@stdlib/stats-array-range-by","2Jg":"@stdlib/stats/array/range","2Jh":"@stdlib/stats-array-range","2qs":"@stdlib/stats/array/rangeabs","2qt":"@stdlib/stats-array-rangeabs","2PC":"@stdlib/stats/array/stdev","2PD":"@stdlib/stats-array-stdev","2PE":"@stdlib/stats/array/stdevch","2PF":"@stdlib/stats-array-stdevch","2PG":"@stdlib/stats/array/stdevpn","2PH":"@stdlib/stats-array-stdevpn","2PI":"@stdlib/stats/array/stdevtk","2PJ":"@stdlib/stats-array-stdevtk","2PK":"@stdlib/stats/array/stdevwd","2PL":"@stdlib/stats-array-stdevwd","2PM":"@stdlib/stats/array/stdevyc","2PN":"@stdlib/stats-array-stdevyc","2PO":"@stdlib/stats/array/variance","2PP":"@stdlib/stats-array-variance","2PQ":"@stdlib/stats/array/variancech","2PR":"@stdlib/stats-array-variancech","2PS":"@stdlib/stats/array/variancepn","2PT":"@stdlib/stats-array-variancepn","2PU":"@stdlib/stats/array/variancetk","2PV":"@stdlib/stats-array-variancetk","2PW":"@stdlib/stats/array/variancewd","2PX":"@stdlib/stats-array-variancewd","2Ee":"@stdlib/stats/array/varianceyc","2Ef":"@stdlib/stats-array-varianceyc","0tg":"@stdlib/stats/bartlett-test","0th":"@stdlib/stats-bartlett-test","0ti":"@stdlib/stats/base/cumax","0tj":"@stdlib/stats-base-cumax","0tk":"@stdlib/stats/base/cumaxabs","0tl":"@stdlib/stats-base-cumaxabs","0tm":"@stdlib/stats/base/cumin","0tn":"@stdlib/stats-base-cumin","0to":"@stdlib/stats/base/cuminabs","0tp":"@stdlib/stats-base-cuminabs","2xS":"@stdlib/stats/base/dists/anglit/mean","2xT":"@stdlib/stats-base-dists-anglit-mean","2xU":"@stdlib/stats/base/dists/anglit/median","2xV":"@stdlib/stats-base-dists-anglit-median","0ty":"@stdlib/stats/base/dists/arcsine/cdf","0tz":"@stdlib/stats-base-dists-arcsine-cdf","0u0":"@stdlib/stats/base/dists/arcsine/ctor","0u1":"@stdlib/stats-base-dists-arcsine-ctor","0u2":"@stdlib/stats/base/dists/arcsine/entropy","0u3":"@stdlib/stats-base-dists-arcsine-entropy","0u4":"@stdlib/stats/base/dists/arcsine/kurtosis","0u5":"@stdlib/stats-base-dists-arcsine-kurtosis","0u6":"@stdlib/stats/base/dists/arcsine/logcdf","0u7":"@stdlib/stats-base-dists-arcsine-logcdf","0u8":"@stdlib/stats/base/dists/arcsine/logpdf","0u9":"@stdlib/stats-base-dists-arcsine-logpdf","0uA":"@stdlib/stats/base/dists/arcsine/mean","0uB":"@stdlib/stats-base-dists-arcsine-mean","0uC":"@stdlib/stats/base/dists/arcsine/median","0uD":"@stdlib/stats-base-dists-arcsine-median","0uE":"@stdlib/stats/base/dists/arcsine/mode","0uF":"@stdlib/stats-base-dists-arcsine-mode","0uG":"@stdlib/stats/base/dists/arcsine","0uH":"@stdlib/stats-base-dists-arcsine","0uI":"@stdlib/stats/base/dists/arcsine/pdf","0uJ":"@stdlib/stats-base-dists-arcsine-pdf","0uK":"@stdlib/stats/base/dists/arcsine/quantile","0uL":"@stdlib/stats-base-dists-arcsine-quantile","0uM":"@stdlib/stats/base/dists/arcsine/skewness","0uN":"@stdlib/stats-base-dists-arcsine-skewness","0uO":"@stdlib/stats/base/dists/arcsine/stdev","0uP":"@stdlib/stats-base-dists-arcsine-stdev","0uQ":"@stdlib/stats/base/dists/arcsine/variance","0uR":"@stdlib/stats-base-dists-arcsine-variance","0uS":"@stdlib/stats/base/dists/bernoulli/cdf","0uT":"@stdlib/stats-base-dists-bernoulli-cdf","0uU":"@stdlib/stats/base/dists/bernoulli/ctor","0uV":"@stdlib/stats-base-dists-bernoulli-ctor","0uW":"@stdlib/stats/base/dists/bernoulli/entropy","0uX":"@stdlib/stats-base-dists-bernoulli-entropy","0uY":"@stdlib/stats/base/dists/bernoulli/kurtosis","0uZ":"@stdlib/stats-base-dists-bernoulli-kurtosis","0ua":"@stdlib/stats/base/dists/bernoulli/mean","0ub":"@stdlib/stats-base-dists-bernoulli-mean","0uc":"@stdlib/stats/base/dists/bernoulli/median","0ud":"@stdlib/stats-base-dists-bernoulli-median","0ue":"@stdlib/stats/base/dists/bernoulli/mgf","0uf":"@stdlib/stats-base-dists-bernoulli-mgf","0ug":"@stdlib/stats/base/dists/bernoulli/mode","0uh":"@stdlib/stats-base-dists-bernoulli-mode","0ui":"@stdlib/stats/base/dists/bernoulli","0uj":"@stdlib/stats-base-dists-bernoulli","0uk":"@stdlib/stats/base/dists/bernoulli/pmf","0ul":"@stdlib/stats-base-dists-bernoulli-pmf","0um":"@stdlib/stats/base/dists/bernoulli/quantile","0un":"@stdlib/stats-base-dists-bernoulli-quantile","0uo":"@stdlib/stats/base/dists/bernoulli/skewness","0up":"@stdlib/stats-base-dists-bernoulli-skewness","0uq":"@stdlib/stats/base/dists/bernoulli/stdev","0ur":"@stdlib/stats-base-dists-bernoulli-stdev","0us":"@stdlib/stats/base/dists/bernoulli/variance","0ut":"@stdlib/stats-base-dists-bernoulli-variance","0uu":"@stdlib/stats/base/dists/beta/cdf","0uv":"@stdlib/stats-base-dists-beta-cdf","0uw":"@stdlib/stats/base/dists/beta/ctor","0ux":"@stdlib/stats-base-dists-beta-ctor","0uy":"@stdlib/stats/base/dists/beta/entropy","0uz":"@stdlib/stats-base-dists-beta-entropy","0v0":"@stdlib/stats/base/dists/beta/kurtosis","0v1":"@stdlib/stats-base-dists-beta-kurtosis","0v2":"@stdlib/stats/base/dists/beta/logcdf","0v3":"@stdlib/stats-base-dists-beta-logcdf","0v4":"@stdlib/stats/base/dists/beta/logpdf","0v5":"@stdlib/stats-base-dists-beta-logpdf","0v6":"@stdlib/stats/base/dists/beta/mean","0v7":"@stdlib/stats-base-dists-beta-mean","0v8":"@stdlib/stats/base/dists/beta/median","0v9":"@stdlib/stats-base-dists-beta-median","0vA":"@stdlib/stats/base/dists/beta/mgf","0vB":"@stdlib/stats-base-dists-beta-mgf","0vC":"@stdlib/stats/base/dists/beta/mode","0vD":"@stdlib/stats-base-dists-beta-mode","0vE":"@stdlib/stats/base/dists/beta","0vF":"@stdlib/stats-base-dists-beta","0vG":"@stdlib/stats/base/dists/beta/pdf","0vH":"@stdlib/stats-base-dists-beta-pdf","0vI":"@stdlib/stats/base/dists/beta/quantile","0vJ":"@stdlib/stats-base-dists-beta-quantile","0vK":"@stdlib/stats/base/dists/beta/skewness","0vL":"@stdlib/stats-base-dists-beta-skewness","0vM":"@stdlib/stats/base/dists/beta/stdev","0vN":"@stdlib/stats-base-dists-beta-stdev","0vO":"@stdlib/stats/base/dists/beta/variance","0vP":"@stdlib/stats-base-dists-beta-variance","0vQ":"@stdlib/stats/base/dists/betaprime/cdf","0vR":"@stdlib/stats-base-dists-betaprime-cdf","0vS":"@stdlib/stats/base/dists/betaprime/ctor","0vT":"@stdlib/stats-base-dists-betaprime-ctor","0vU":"@stdlib/stats/base/dists/betaprime/kurtosis","0vV":"@stdlib/stats-base-dists-betaprime-kurtosis","0vW":"@stdlib/stats/base/dists/betaprime/logcdf","0vX":"@stdlib/stats-base-dists-betaprime-logcdf","0vY":"@stdlib/stats/base/dists/betaprime/logpdf","0vZ":"@stdlib/stats-base-dists-betaprime-logpdf","0va":"@stdlib/stats/base/dists/betaprime/mean","0vb":"@stdlib/stats-base-dists-betaprime-mean","0vc":"@stdlib/stats/base/dists/betaprime/mode","0vd":"@stdlib/stats-base-dists-betaprime-mode","0ve":"@stdlib/stats/base/dists/betaprime","0vf":"@stdlib/stats-base-dists-betaprime","0vg":"@stdlib/stats/base/dists/betaprime/pdf","0vh":"@stdlib/stats-base-dists-betaprime-pdf","0vi":"@stdlib/stats/base/dists/betaprime/quantile","0vj":"@stdlib/stats-base-dists-betaprime-quantile","0vk":"@stdlib/stats/base/dists/betaprime/skewness","0vl":"@stdlib/stats-base-dists-betaprime-skewness","0vm":"@stdlib/stats/base/dists/betaprime/stdev","0vn":"@stdlib/stats-base-dists-betaprime-stdev","0vo":"@stdlib/stats/base/dists/betaprime/variance","0vp":"@stdlib/stats-base-dists-betaprime-variance","0vq":"@stdlib/stats/base/dists/binomial/cdf","0vr":"@stdlib/stats-base-dists-binomial-cdf","0vs":"@stdlib/stats/base/dists/binomial/ctor","0vt":"@stdlib/stats-base-dists-binomial-ctor","0vu":"@stdlib/stats/base/dists/binomial/entropy","0vv":"@stdlib/stats-base-dists-binomial-entropy","0vw":"@stdlib/stats/base/dists/binomial/kurtosis","0vx":"@stdlib/stats-base-dists-binomial-kurtosis","0vy":"@stdlib/stats/base/dists/binomial/logpmf","0vz":"@stdlib/stats-base-dists-binomial-logpmf","0w0":"@stdlib/stats/base/dists/binomial/mean","0w1":"@stdlib/stats-base-dists-binomial-mean","0w2":"@stdlib/stats/base/dists/binomial/median","0w3":"@stdlib/stats-base-dists-binomial-median","0w4":"@stdlib/stats/base/dists/binomial/mgf","0w5":"@stdlib/stats-base-dists-binomial-mgf","0w6":"@stdlib/stats/base/dists/binomial/mode","0w7":"@stdlib/stats-base-dists-binomial-mode","0w8":"@stdlib/stats/base/dists/binomial","0w9":"@stdlib/stats-base-dists-binomial","0wA":"@stdlib/stats/base/dists/binomial/pmf","0wB":"@stdlib/stats-base-dists-binomial-pmf","0wC":"@stdlib/stats/base/dists/binomial/quantile","0wD":"@stdlib/stats-base-dists-binomial-quantile","0wE":"@stdlib/stats/base/dists/binomial/skewness","0wF":"@stdlib/stats-base-dists-binomial-skewness","0wG":"@stdlib/stats/base/dists/binomial/stdev","0wH":"@stdlib/stats-base-dists-binomial-stdev","0wI":"@stdlib/stats/base/dists/binomial/variance","0wJ":"@stdlib/stats-base-dists-binomial-variance","28S":"@stdlib/stats/base/dists/bradford/cdf","28T":"@stdlib/stats-base-dists-bradford-cdf","28U":"@stdlib/stats/base/dists/bradford/entropy","28V":"@stdlib/stats-base-dists-bradford-entropy","28W":"@stdlib/stats/base/dists/bradford/mean","28X":"@stdlib/stats-base-dists-bradford-mean","28Y":"@stdlib/stats/base/dists/bradford/median","28Z":"@stdlib/stats-base-dists-bradford-median","28a":"@stdlib/stats/base/dists/bradford/mode","28b":"@stdlib/stats-base-dists-bradford-mode","2U4":"@stdlib/stats/base/dists/bradford","2U5":"@stdlib/stats-base-dists-bradford","2Ao":"@stdlib/stats/base/dists/bradford/pdf","2Ap":"@stdlib/stats-base-dists-bradford-pdf","2Aq":"@stdlib/stats/base/dists/bradford/quantile","2Ar":"@stdlib/stats-base-dists-bradford-quantile","2PY":"@stdlib/stats/base/dists/bradford/skewness","2PZ":"@stdlib/stats-base-dists-bradford-skewness","28c":"@stdlib/stats/base/dists/bradford/stdev","28d":"@stdlib/stats-base-dists-bradford-stdev","28e":"@stdlib/stats/base/dists/bradford/variance","28f":"@stdlib/stats-base-dists-bradford-variance","0wK":"@stdlib/stats/base/dists/cauchy/cdf","0wL":"@stdlib/stats-base-dists-cauchy-cdf","0wM":"@stdlib/stats/base/dists/cauchy/ctor","0wN":"@stdlib/stats-base-dists-cauchy-ctor","0wO":"@stdlib/stats/base/dists/cauchy/entropy","0wP":"@stdlib/stats-base-dists-cauchy-entropy","0wQ":"@stdlib/stats/base/dists/cauchy/logcdf","0wR":"@stdlib/stats-base-dists-cauchy-logcdf","0wS":"@stdlib/stats/base/dists/cauchy/logpdf","0wT":"@stdlib/stats-base-dists-cauchy-logpdf","0wU":"@stdlib/stats/base/dists/cauchy/median","0wV":"@stdlib/stats-base-dists-cauchy-median","0wW":"@stdlib/stats/base/dists/cauchy/mode","0wX":"@stdlib/stats-base-dists-cauchy-mode","0wY":"@stdlib/stats/base/dists/cauchy","0wZ":"@stdlib/stats-base-dists-cauchy","0wa":"@stdlib/stats/base/dists/cauchy/pdf","0wb":"@stdlib/stats-base-dists-cauchy-pdf","0wc":"@stdlib/stats/base/dists/cauchy/quantile","0wd":"@stdlib/stats-base-dists-cauchy-quantile","0we":"@stdlib/stats/base/dists/chi/cdf","0wf":"@stdlib/stats-base-dists-chi-cdf","0wg":"@stdlib/stats/base/dists/chi/ctor","0wh":"@stdlib/stats-base-dists-chi-ctor","0wi":"@stdlib/stats/base/dists/chi/entropy","0wj":"@stdlib/stats-base-dists-chi-entropy","0wk":"@stdlib/stats/base/dists/chi/kurtosis","0wl":"@stdlib/stats-base-dists-chi-kurtosis","0wm":"@stdlib/stats/base/dists/chi/logpdf","0wn":"@stdlib/stats-base-dists-chi-logpdf","0wo":"@stdlib/stats/base/dists/chi/mean","0wp":"@stdlib/stats-base-dists-chi-mean","0wq":"@stdlib/stats/base/dists/chi/mode","0wr":"@stdlib/stats-base-dists-chi-mode","0ws":"@stdlib/stats/base/dists/chi","0wt":"@stdlib/stats-base-dists-chi","0wu":"@stdlib/stats/base/dists/chi/pdf","0wv":"@stdlib/stats-base-dists-chi-pdf","0ww":"@stdlib/stats/base/dists/chi/quantile","0wx":"@stdlib/stats-base-dists-chi-quantile","0wy":"@stdlib/stats/base/dists/chi/skewness","0wz":"@stdlib/stats-base-dists-chi-skewness","0x0":"@stdlib/stats/base/dists/chi/stdev","0x1":"@stdlib/stats-base-dists-chi-stdev","0x2":"@stdlib/stats/base/dists/chi/variance","0x3":"@stdlib/stats-base-dists-chi-variance","0x4":"@stdlib/stats/base/dists/chisquare/cdf","0x5":"@stdlib/stats-base-dists-chisquare-cdf","0x6":"@stdlib/stats/base/dists/chisquare/ctor","0x7":"@stdlib/stats-base-dists-chisquare-ctor","0x8":"@stdlib/stats/base/dists/chisquare/entropy","0x9":"@stdlib/stats-base-dists-chisquare-entropy","0xA":"@stdlib/stats/base/dists/chisquare/kurtosis","0xB":"@stdlib/stats-base-dists-chisquare-kurtosis","0xC":"@stdlib/stats/base/dists/chisquare/logpdf","0xD":"@stdlib/stats-base-dists-chisquare-logpdf","0xE":"@stdlib/stats/base/dists/chisquare/mean","0xF":"@stdlib/stats-base-dists-chisquare-mean","0xG":"@stdlib/stats/base/dists/chisquare/median","0xH":"@stdlib/stats-base-dists-chisquare-median","0xI":"@stdlib/stats/base/dists/chisquare/mgf","0xJ":"@stdlib/stats-base-dists-chisquare-mgf","0xK":"@stdlib/stats/base/dists/chisquare/mode","0xL":"@stdlib/stats-base-dists-chisquare-mode","0xM":"@stdlib/stats/base/dists/chisquare","0xN":"@stdlib/stats-base-dists-chisquare","0xO":"@stdlib/stats/base/dists/chisquare/pdf","0xP":"@stdlib/stats-base-dists-chisquare-pdf","0xQ":"@stdlib/stats/base/dists/chisquare/quantile","0xR":"@stdlib/stats-base-dists-chisquare-quantile","0xS":"@stdlib/stats/base/dists/chisquare/skewness","0xT":"@stdlib/stats-base-dists-chisquare-skewness","0xU":"@stdlib/stats/base/dists/chisquare/stdev","0xV":"@stdlib/stats-base-dists-chisquare-stdev","0xW":"@stdlib/stats/base/dists/chisquare/variance","0xX":"@stdlib/stats-base-dists-chisquare-variance","0xY":"@stdlib/stats/base/dists/cosine/cdf","0xZ":"@stdlib/stats-base-dists-cosine-cdf","0xa":"@stdlib/stats/base/dists/cosine/ctor","0xb":"@stdlib/stats-base-dists-cosine-ctor","0xc":"@stdlib/stats/base/dists/cosine/kurtosis","0xd":"@stdlib/stats-base-dists-cosine-kurtosis","0xe":"@stdlib/stats/base/dists/cosine/logcdf","0xf":"@stdlib/stats-base-dists-cosine-logcdf","0xg":"@stdlib/stats/base/dists/cosine/logpdf","0xh":"@stdlib/stats-base-dists-cosine-logpdf","0xi":"@stdlib/stats/base/dists/cosine/mean","0xj":"@stdlib/stats-base-dists-cosine-mean","0xk":"@stdlib/stats/base/dists/cosine/median","0xl":"@stdlib/stats-base-dists-cosine-median","0xm":"@stdlib/stats/base/dists/cosine/mgf","0xn":"@stdlib/stats-base-dists-cosine-mgf","0xo":"@stdlib/stats/base/dists/cosine/mode","0xp":"@stdlib/stats-base-dists-cosine-mode","0xq":"@stdlib/stats/base/dists/cosine","0xr":"@stdlib/stats-base-dists-cosine","0xs":"@stdlib/stats/base/dists/cosine/pdf","0xt":"@stdlib/stats-base-dists-cosine-pdf","0xu":"@stdlib/stats/base/dists/cosine/quantile","0xv":"@stdlib/stats-base-dists-cosine-quantile","0xw":"@stdlib/stats/base/dists/cosine/skewness","0xx":"@stdlib/stats-base-dists-cosine-skewness","0xy":"@stdlib/stats/base/dists/cosine/stdev","0xz":"@stdlib/stats-base-dists-cosine-stdev","0y0":"@stdlib/stats/base/dists/cosine/variance","0y1":"@stdlib/stats-base-dists-cosine-variance","0y2":"@stdlib/stats/base/dists/degenerate/cdf","0y3":"@stdlib/stats-base-dists-degenerate-cdf","0y4":"@stdlib/stats/base/dists/degenerate/ctor","0y5":"@stdlib/stats-base-dists-degenerate-ctor","0y6":"@stdlib/stats/base/dists/degenerate/entropy","0y7":"@stdlib/stats-base-dists-degenerate-entropy","0y8":"@stdlib/stats/base/dists/degenerate/logcdf","0y9":"@stdlib/stats-base-dists-degenerate-logcdf","0yA":"@stdlib/stats/base/dists/degenerate/logpdf","0yB":"@stdlib/stats-base-dists-degenerate-logpdf","0yC":"@stdlib/stats/base/dists/degenerate/logpmf","0yD":"@stdlib/stats-base-dists-degenerate-logpmf","0yE":"@stdlib/stats/base/dists/degenerate/mean","0yF":"@stdlib/stats-base-dists-degenerate-mean","0yG":"@stdlib/stats/base/dists/degenerate/median","0yH":"@stdlib/stats-base-dists-degenerate-median","0yI":"@stdlib/stats/base/dists/degenerate/mgf","0yJ":"@stdlib/stats-base-dists-degenerate-mgf","0yK":"@stdlib/stats/base/dists/degenerate/mode","0yL":"@stdlib/stats-base-dists-degenerate-mode","0yM":"@stdlib/stats/base/dists/degenerate","0yN":"@stdlib/stats-base-dists-degenerate","0yO":"@stdlib/stats/base/dists/degenerate/pdf","0yP":"@stdlib/stats-base-dists-degenerate-pdf","0yQ":"@stdlib/stats/base/dists/degenerate/pmf","0yR":"@stdlib/stats-base-dists-degenerate-pmf","0yS":"@stdlib/stats/base/dists/degenerate/quantile","0yT":"@stdlib/stats-base-dists-degenerate-quantile","0yU":"@stdlib/stats/base/dists/degenerate/stdev","0yV":"@stdlib/stats-base-dists-degenerate-stdev","0yW":"@stdlib/stats/base/dists/degenerate/variance","0yX":"@stdlib/stats-base-dists-degenerate-variance","0yY":"@stdlib/stats/base/dists/discrete-uniform/cdf","0yZ":"@stdlib/stats-base-dists-discrete-uniform-cdf","0ya":"@stdlib/stats/base/dists/discrete-uniform/ctor","0yb":"@stdlib/stats-base-dists-discrete-uniform-ctor","0yc":"@stdlib/stats/base/dists/discrete-uniform/entropy","0yd":"@stdlib/stats-base-dists-discrete-uniform-entropy","0ye":"@stdlib/stats/base/dists/discrete-uniform/kurtosis","0yf":"@stdlib/stats-base-dists-discrete-uniform-kurtosis","0yg":"@stdlib/stats/base/dists/discrete-uniform/logcdf","0yh":"@stdlib/stats-base-dists-discrete-uniform-logcdf","0yi":"@stdlib/stats/base/dists/discrete-uniform/logpmf","0yj":"@stdlib/stats-base-dists-discrete-uniform-logpmf","0yk":"@stdlib/stats/base/dists/discrete-uniform/mean","0yl":"@stdlib/stats-base-dists-discrete-uniform-mean","0ym":"@stdlib/stats/base/dists/discrete-uniform/median","0yn":"@stdlib/stats-base-dists-discrete-uniform-median","0yo":"@stdlib/stats/base/dists/discrete-uniform/mgf","0yp":"@stdlib/stats-base-dists-discrete-uniform-mgf","0yq":"@stdlib/stats/base/dists/discrete-uniform","0yr":"@stdlib/stats-base-dists-discrete-uniform","0ys":"@stdlib/stats/base/dists/discrete-uniform/pmf","0yt":"@stdlib/stats-base-dists-discrete-uniform-pmf","0yu":"@stdlib/stats/base/dists/discrete-uniform/quantile","0yv":"@stdlib/stats-base-dists-discrete-uniform-quantile","0yw":"@stdlib/stats/base/dists/discrete-uniform/skewness","0yx":"@stdlib/stats-base-dists-discrete-uniform-skewness","0yy":"@stdlib/stats/base/dists/discrete-uniform/stdev","0yz":"@stdlib/stats-base-dists-discrete-uniform-stdev","0z0":"@stdlib/stats/base/dists/discrete-uniform/variance","0z1":"@stdlib/stats-base-dists-discrete-uniform-variance","0z2":"@stdlib/stats/base/dists/erlang/cdf","0z3":"@stdlib/stats-base-dists-erlang-cdf","0z4":"@stdlib/stats/base/dists/erlang/ctor","0z5":"@stdlib/stats-base-dists-erlang-ctor","0z6":"@stdlib/stats/base/dists/erlang/entropy","0z7":"@stdlib/stats-base-dists-erlang-entropy","0z8":"@stdlib/stats/base/dists/erlang/kurtosis","0z9":"@stdlib/stats-base-dists-erlang-kurtosis","0zA":"@stdlib/stats/base/dists/erlang/logpdf","0zB":"@stdlib/stats-base-dists-erlang-logpdf","0zC":"@stdlib/stats/base/dists/erlang/mean","0zD":"@stdlib/stats-base-dists-erlang-mean","0zE":"@stdlib/stats/base/dists/erlang/mgf","0zF":"@stdlib/stats-base-dists-erlang-mgf","0zG":"@stdlib/stats/base/dists/erlang/mode","0zH":"@stdlib/stats-base-dists-erlang-mode","0zI":"@stdlib/stats/base/dists/erlang","0zJ":"@stdlib/stats-base-dists-erlang","0zK":"@stdlib/stats/base/dists/erlang/pdf","0zL":"@stdlib/stats-base-dists-erlang-pdf","0zM":"@stdlib/stats/base/dists/erlang/quantile","0zN":"@stdlib/stats-base-dists-erlang-quantile","0zO":"@stdlib/stats/base/dists/erlang/skewness","0zP":"@stdlib/stats-base-dists-erlang-skewness","0zQ":"@stdlib/stats/base/dists/erlang/stdev","0zR":"@stdlib/stats-base-dists-erlang-stdev","0zS":"@stdlib/stats/base/dists/erlang/variance","0zT":"@stdlib/stats-base-dists-erlang-variance","0zU":"@stdlib/stats/base/dists/exponential/cdf","0zV":"@stdlib/stats-base-dists-exponential-cdf","0zW":"@stdlib/stats/base/dists/exponential/ctor","0zX":"@stdlib/stats-base-dists-exponential-ctor","0zY":"@stdlib/stats/base/dists/exponential/entropy","0zZ":"@stdlib/stats-base-dists-exponential-entropy","0za":"@stdlib/stats/base/dists/exponential/kurtosis","0zb":"@stdlib/stats-base-dists-exponential-kurtosis","0zc":"@stdlib/stats/base/dists/exponential/logcdf","0zd":"@stdlib/stats-base-dists-exponential-logcdf","0ze":"@stdlib/stats/base/dists/exponential/logpdf","0zf":"@stdlib/stats-base-dists-exponential-logpdf","0zg":"@stdlib/stats/base/dists/exponential/mean","0zh":"@stdlib/stats-base-dists-exponential-mean","0zi":"@stdlib/stats/base/dists/exponential/median","0zj":"@stdlib/stats-base-dists-exponential-median","0zk":"@stdlib/stats/base/dists/exponential/mgf","0zl":"@stdlib/stats-base-dists-exponential-mgf","0zm":"@stdlib/stats/base/dists/exponential/mode","0zn":"@stdlib/stats-base-dists-exponential-mode","0zo":"@stdlib/stats/base/dists/exponential","0zp":"@stdlib/stats-base-dists-exponential","0zq":"@stdlib/stats/base/dists/exponential/pdf","0zr":"@stdlib/stats-base-dists-exponential-pdf","0zs":"@stdlib/stats/base/dists/exponential/quantile","0zt":"@stdlib/stats-base-dists-exponential-quantile","0zu":"@stdlib/stats/base/dists/exponential/skewness","0zv":"@stdlib/stats-base-dists-exponential-skewness","0zw":"@stdlib/stats/base/dists/exponential/stdev","0zx":"@stdlib/stats-base-dists-exponential-stdev","0zy":"@stdlib/stats/base/dists/exponential/variance","0zz":"@stdlib/stats-base-dists-exponential-variance","10A":"@stdlib/stats/base/dists/f/mode","10B":"@stdlib/stats-base-dists-f-mode","10C":"@stdlib/stats/base/dists/f","10D":"@stdlib/stats-base-dists-f","10E":"@stdlib/stats/base/dists/f/pdf","10F":"@stdlib/stats-base-dists-f-pdf","10G":"@stdlib/stats/base/dists/f/quantile","10H":"@stdlib/stats-base-dists-f-quantile","10I":"@stdlib/stats/base/dists/f/skewness","10J":"@stdlib/stats-base-dists-f-skewness","10K":"@stdlib/stats/base/dists/f/stdev","10L":"@stdlib/stats-base-dists-f-stdev","10M":"@stdlib/stats/base/dists/f/variance","10N":"@stdlib/stats-base-dists-f-variance","10O":"@stdlib/stats/base/dists/frechet/cdf","10P":"@stdlib/stats-base-dists-frechet-cdf","10Q":"@stdlib/stats/base/dists/frechet/ctor","10R":"@stdlib/stats-base-dists-frechet-ctor","10S":"@stdlib/stats/base/dists/frechet/entropy","10T":"@stdlib/stats-base-dists-frechet-entropy","10U":"@stdlib/stats/base/dists/frechet/kurtosis","10V":"@stdlib/stats-base-dists-frechet-kurtosis","10W":"@stdlib/stats/base/dists/frechet/logcdf","10X":"@stdlib/stats-base-dists-frechet-logcdf","10Y":"@stdlib/stats/base/dists/frechet/logpdf","10Z":"@stdlib/stats-base-dists-frechet-logpdf","10a":"@stdlib/stats/base/dists/frechet/mean","10b":"@stdlib/stats-base-dists-frechet-mean","10c":"@stdlib/stats/base/dists/frechet/median","10d":"@stdlib/stats-base-dists-frechet-median","10e":"@stdlib/stats/base/dists/frechet/mode","10f":"@stdlib/stats-base-dists-frechet-mode","10g":"@stdlib/stats/base/dists/frechet","10h":"@stdlib/stats-base-dists-frechet","10i":"@stdlib/stats/base/dists/frechet/pdf","10j":"@stdlib/stats-base-dists-frechet-pdf","10k":"@stdlib/stats/base/dists/frechet/quantile","10l":"@stdlib/stats-base-dists-frechet-quantile","10m":"@stdlib/stats/base/dists/frechet/skewness","10n":"@stdlib/stats-base-dists-frechet-skewness","10o":"@stdlib/stats/base/dists/frechet/stdev","10p":"@stdlib/stats-base-dists-frechet-stdev","10q":"@stdlib/stats/base/dists/frechet/variance","10r":"@stdlib/stats-base-dists-frechet-variance","10s":"@stdlib/stats/base/dists/gamma/cdf","10t":"@stdlib/stats-base-dists-gamma-cdf","10u":"@stdlib/stats/base/dists/gamma/ctor","10v":"@stdlib/stats-base-dists-gamma-ctor","10w":"@stdlib/stats/base/dists/gamma/entropy","10x":"@stdlib/stats-base-dists-gamma-entropy","10y":"@stdlib/stats/base/dists/gamma/kurtosis","10z":"@stdlib/stats-base-dists-gamma-kurtosis","11A":"@stdlib/stats/base/dists/gamma","11B":"@stdlib/stats-base-dists-gamma","11C":"@stdlib/stats/base/dists/gamma/pdf","11D":"@stdlib/stats-base-dists-gamma-pdf","11E":"@stdlib/stats/base/dists/gamma/quantile","11F":"@stdlib/stats-base-dists-gamma-quantile","11G":"@stdlib/stats/base/dists/gamma/skewness","11H":"@stdlib/stats-base-dists-gamma-skewness","11I":"@stdlib/stats/base/dists/gamma/stdev","11J":"@stdlib/stats-base-dists-gamma-stdev","11K":"@stdlib/stats/base/dists/gamma/variance","11L":"@stdlib/stats-base-dists-gamma-variance","11M":"@stdlib/stats/base/dists/geometric/cdf","11N":"@stdlib/stats-base-dists-geometric-cdf","11O":"@stdlib/stats/base/dists/geometric/ctor","11P":"@stdlib/stats-base-dists-geometric-ctor","11Q":"@stdlib/stats/base/dists/geometric/entropy","11R":"@stdlib/stats-base-dists-geometric-entropy","11S":"@stdlib/stats/base/dists/geometric/kurtosis","11T":"@stdlib/stats-base-dists-geometric-kurtosis","11U":"@stdlib/stats/base/dists/geometric/logcdf","11V":"@stdlib/stats-base-dists-geometric-logcdf","11W":"@stdlib/stats/base/dists/geometric/logpmf","11X":"@stdlib/stats-base-dists-geometric-logpmf","11Y":"@stdlib/stats/base/dists/geometric/mean","11Z":"@stdlib/stats-base-dists-geometric-mean","11a":"@stdlib/stats/base/dists/geometric/median","11b":"@stdlib/stats-base-dists-geometric-median","11c":"@stdlib/stats/base/dists/geometric/mgf","11d":"@stdlib/stats-base-dists-geometric-mgf","11e":"@stdlib/stats/base/dists/geometric/mode","11f":"@stdlib/stats-base-dists-geometric-mode","11g":"@stdlib/stats/base/dists/geometric","11h":"@stdlib/stats-base-dists-geometric","11i":"@stdlib/stats/base/dists/geometric/pmf","11j":"@stdlib/stats-base-dists-geometric-pmf","11k":"@stdlib/stats/base/dists/geometric/quantile","11l":"@stdlib/stats-base-dists-geometric-quantile","11m":"@stdlib/stats/base/dists/geometric/skewness","11n":"@stdlib/stats-base-dists-geometric-skewness","11o":"@stdlib/stats/base/dists/geometric/stdev","11p":"@stdlib/stats-base-dists-geometric-stdev","11q":"@stdlib/stats/base/dists/geometric/variance","11r":"@stdlib/stats-base-dists-geometric-variance","11s":"@stdlib/stats/base/dists/gumbel/cdf","11t":"@stdlib/stats-base-dists-gumbel-cdf","11u":"@stdlib/stats/base/dists/gumbel/ctor","11v":"@stdlib/stats-base-dists-gumbel-ctor","11w":"@stdlib/stats/base/dists/gumbel/entropy","11x":"@stdlib/stats-base-dists-gumbel-entropy","11y":"@stdlib/stats/base/dists/gumbel/kurtosis","11z":"@stdlib/stats-base-dists-gumbel-kurtosis","12A":"@stdlib/stats/base/dists/gumbel/mode","12B":"@stdlib/stats-base-dists-gumbel-mode","12C":"@stdlib/stats/base/dists/gumbel","12D":"@stdlib/stats-base-dists-gumbel","12E":"@stdlib/stats/base/dists/gumbel/pdf","12F":"@stdlib/stats-base-dists-gumbel-pdf","12G":"@stdlib/stats/base/dists/gumbel/quantile","12H":"@stdlib/stats-base-dists-gumbel-quantile","12I":"@stdlib/stats/base/dists/gumbel/skewness","12J":"@stdlib/stats-base-dists-gumbel-skewness","12K":"@stdlib/stats/base/dists/gumbel/stdev","12L":"@stdlib/stats-base-dists-gumbel-stdev","12M":"@stdlib/stats/base/dists/gumbel/variance","12N":"@stdlib/stats-base-dists-gumbel-variance","2qu":"@stdlib/stats/base/dists/halfnormal/entropy","2qv":"@stdlib/stats-base-dists-halfnormal-entropy","2qw":"@stdlib/stats/base/dists/halfnormal/kurtosis","2qx":"@stdlib/stats-base-dists-halfnormal-kurtosis","2qy":"@stdlib/stats/base/dists/halfnormal/logpdf","2qz":"@stdlib/stats-base-dists-halfnormal-logpdf","2r0":"@stdlib/stats/base/dists/halfnormal/mean","2r1":"@stdlib/stats-base-dists-halfnormal-mean","2r2":"@stdlib/stats/base/dists/halfnormal/mode","2r3":"@stdlib/stats-base-dists-halfnormal-mode","2r4":"@stdlib/stats/base/dists/halfnormal/stdev","2r5":"@stdlib/stats-base-dists-halfnormal-stdev","12O":"@stdlib/stats/base/dists/hypergeometric/cdf","12P":"@stdlib/stats-base-dists-hypergeometric-cdf","12Q":"@stdlib/stats/base/dists/hypergeometric/ctor","12R":"@stdlib/stats-base-dists-hypergeometric-ctor","12S":"@stdlib/stats/base/dists/hypergeometric/kurtosis","12T":"@stdlib/stats-base-dists-hypergeometric-kurtosis","12U":"@stdlib/stats/base/dists/hypergeometric/logpmf","12V":"@stdlib/stats-base-dists-hypergeometric-logpmf","12W":"@stdlib/stats/base/dists/hypergeometric/mean","12X":"@stdlib/stats-base-dists-hypergeometric-mean","12Y":"@stdlib/stats/base/dists/hypergeometric/mode","12Z":"@stdlib/stats-base-dists-hypergeometric-mode","12a":"@stdlib/stats/base/dists/hypergeometric","12b":"@stdlib/stats-base-dists-hypergeometric","12c":"@stdlib/stats/base/dists/hypergeometric/pmf","12d":"@stdlib/stats-base-dists-hypergeometric-pmf","12e":"@stdlib/stats/base/dists/hypergeometric/quantile","12f":"@stdlib/stats-base-dists-hypergeometric-quantile","12g":"@stdlib/stats/base/dists/hypergeometric/skewness","12h":"@stdlib/stats-base-dists-hypergeometric-skewness","12i":"@stdlib/stats/base/dists/hypergeometric/stdev","12j":"@stdlib/stats-base-dists-hypergeometric-stdev","12k":"@stdlib/stats/base/dists/hypergeometric/variance","12l":"@stdlib/stats-base-dists-hypergeometric-variance","12m":"@stdlib/stats/base/dists/invgamma/cdf","12n":"@stdlib/stats-base-dists-invgamma-cdf","12o":"@stdlib/stats/base/dists/invgamma/ctor","12p":"@stdlib/stats-base-dists-invgamma-ctor","12q":"@stdlib/stats/base/dists/invgamma/entropy","12r":"@stdlib/stats-base-dists-invgamma-entropy","12s":"@stdlib/stats/base/dists/invgamma/kurtosis","12t":"@stdlib/stats-base-dists-invgamma-kurtosis","12u":"@stdlib/stats/base/dists/invgamma/logpdf","12v":"@stdlib/stats-base-dists-invgamma-logpdf","12w":"@stdlib/stats/base/dists/invgamma/mean","12x":"@stdlib/stats-base-dists-invgamma-mean","12y":"@stdlib/stats/base/dists/invgamma/mode","12z":"@stdlib/stats-base-dists-invgamma-mode","13A":"@stdlib/stats/base/dists/invgamma/variance","13B":"@stdlib/stats-base-dists-invgamma-variance","13C":"@stdlib/stats/base/dists/kumaraswamy/cdf","13D":"@stdlib/stats-base-dists-kumaraswamy-cdf","13E":"@stdlib/stats/base/dists/kumaraswamy/ctor","13F":"@stdlib/stats-base-dists-kumaraswamy-ctor","13G":"@stdlib/stats/base/dists/kumaraswamy/kurtosis","13H":"@stdlib/stats-base-dists-kumaraswamy-kurtosis","13I":"@stdlib/stats/base/dists/kumaraswamy/logcdf","13J":"@stdlib/stats-base-dists-kumaraswamy-logcdf","13K":"@stdlib/stats/base/dists/kumaraswamy/logpdf","13L":"@stdlib/stats-base-dists-kumaraswamy-logpdf","13M":"@stdlib/stats/base/dists/kumaraswamy/mean","13N":"@stdlib/stats-base-dists-kumaraswamy-mean","13O":"@stdlib/stats/base/dists/kumaraswamy/median","13P":"@stdlib/stats-base-dists-kumaraswamy-median","13Q":"@stdlib/stats/base/dists/kumaraswamy/mode","13R":"@stdlib/stats-base-dists-kumaraswamy-mode","13S":"@stdlib/stats/base/dists/kumaraswamy","13T":"@stdlib/stats-base-dists-kumaraswamy","13U":"@stdlib/stats/base/dists/kumaraswamy/pdf","13V":"@stdlib/stats-base-dists-kumaraswamy-pdf","13W":"@stdlib/stats/base/dists/kumaraswamy/quantile","13X":"@stdlib/stats-base-dists-kumaraswamy-quantile","13Y":"@stdlib/stats/base/dists/kumaraswamy/skewness","13Z":"@stdlib/stats-base-dists-kumaraswamy-skewness","13a":"@stdlib/stats/base/dists/kumaraswamy/stdev","13b":"@stdlib/stats-base-dists-kumaraswamy-stdev","13c":"@stdlib/stats/base/dists/kumaraswamy/variance","13d":"@stdlib/stats-base-dists-kumaraswamy-variance","13e":"@stdlib/stats/base/dists/laplace/cdf","13f":"@stdlib/stats-base-dists-laplace-cdf","13g":"@stdlib/stats/base/dists/laplace/ctor","13h":"@stdlib/stats-base-dists-laplace-ctor","13i":"@stdlib/stats/base/dists/laplace/entropy","13j":"@stdlib/stats-base-dists-laplace-entropy","13k":"@stdlib/stats/base/dists/laplace/kurtosis","13l":"@stdlib/stats-base-dists-laplace-kurtosis","13m":"@stdlib/stats/base/dists/laplace/logcdf","13n":"@stdlib/stats-base-dists-laplace-logcdf","13o":"@stdlib/stats/base/dists/laplace/logpdf","13p":"@stdlib/stats-base-dists-laplace-logpdf","13q":"@stdlib/stats/base/dists/laplace/mean","13r":"@stdlib/stats-base-dists-laplace-mean","13s":"@stdlib/stats/base/dists/laplace/median","13t":"@stdlib/stats-base-dists-laplace-median","13u":"@stdlib/stats/base/dists/laplace/mgf","13v":"@stdlib/stats-base-dists-laplace-mgf","13w":"@stdlib/stats/base/dists/laplace/mode","13x":"@stdlib/stats-base-dists-laplace-mode","13y":"@stdlib/stats/base/dists/laplace","13z":"@stdlib/stats-base-dists-laplace","14A":"@stdlib/stats/base/dists/levy/cdf","14B":"@stdlib/stats-base-dists-levy-cdf","14C":"@stdlib/stats/base/dists/levy/ctor","14D":"@stdlib/stats-base-dists-levy-ctor","14E":"@stdlib/stats/base/dists/levy/entropy","14F":"@stdlib/stats-base-dists-levy-entropy","14G":"@stdlib/stats/base/dists/levy/logcdf","14H":"@stdlib/stats-base-dists-levy-logcdf","14I":"@stdlib/stats/base/dists/levy/logpdf","14J":"@stdlib/stats-base-dists-levy-logpdf","14K":"@stdlib/stats/base/dists/levy/mean","14L":"@stdlib/stats-base-dists-levy-mean","14M":"@stdlib/stats/base/dists/levy/median","14N":"@stdlib/stats-base-dists-levy-median","14O":"@stdlib/stats/base/dists/levy/mode","14P":"@stdlib/stats-base-dists-levy-mode","14Q":"@stdlib/stats/base/dists/levy","14R":"@stdlib/stats-base-dists-levy","14S":"@stdlib/stats/base/dists/levy/pdf","14T":"@stdlib/stats-base-dists-levy-pdf","14U":"@stdlib/stats/base/dists/levy/quantile","14V":"@stdlib/stats-base-dists-levy-quantile","14W":"@stdlib/stats/base/dists/levy/stdev","14X":"@stdlib/stats-base-dists-levy-stdev","14Y":"@stdlib/stats/base/dists/levy/variance","14Z":"@stdlib/stats-base-dists-levy-variance","14a":"@stdlib/stats/base/dists/logistic/cdf","14b":"@stdlib/stats-base-dists-logistic-cdf","14c":"@stdlib/stats/base/dists/logistic/ctor","14d":"@stdlib/stats-base-dists-logistic-ctor","14e":"@stdlib/stats/base/dists/logistic/entropy","14f":"@stdlib/stats-base-dists-logistic-entropy","14g":"@stdlib/stats/base/dists/logistic/kurtosis","14h":"@stdlib/stats-base-dists-logistic-kurtosis","14i":"@stdlib/stats/base/dists/logistic/logcdf","14j":"@stdlib/stats-base-dists-logistic-logcdf","14k":"@stdlib/stats/base/dists/logistic/logpdf","14l":"@stdlib/stats-base-dists-logistic-logpdf","14m":"@stdlib/stats/base/dists/logistic/mean","14n":"@stdlib/stats-base-dists-logistic-mean","14o":"@stdlib/stats/base/dists/logistic/median","14p":"@stdlib/stats-base-dists-logistic-median","14q":"@stdlib/stats/base/dists/logistic/mgf","14r":"@stdlib/stats-base-dists-logistic-mgf","14s":"@stdlib/stats/base/dists/logistic/mode","14t":"@stdlib/stats-base-dists-logistic-mode","14u":"@stdlib/stats/base/dists/logistic","14v":"@stdlib/stats-base-dists-logistic","14w":"@stdlib/stats/base/dists/logistic/pdf","14x":"@stdlib/stats-base-dists-logistic-pdf","14y":"@stdlib/stats/base/dists/logistic/quantile","14z":"@stdlib/stats-base-dists-logistic-quantile","15A":"@stdlib/stats/base/dists/lognormal/entropy","15B":"@stdlib/stats-base-dists-lognormal-entropy","15C":"@stdlib/stats/base/dists/lognormal/kurtosis","15D":"@stdlib/stats-base-dists-lognormal-kurtosis","1fA":"@stdlib/stats/base/dists/lognormal/logcdf","1fB":"@stdlib/stats-base-dists-lognormal-logcdf","15E":"@stdlib/stats/base/dists/lognormal/logpdf","15F":"@stdlib/stats-base-dists-lognormal-logpdf","15G":"@stdlib/stats/base/dists/lognormal/mean","15H":"@stdlib/stats-base-dists-lognormal-mean","15I":"@stdlib/stats/base/dists/lognormal/median","15J":"@stdlib/stats-base-dists-lognormal-median","15K":"@stdlib/stats/base/dists/lognormal/mode","15L":"@stdlib/stats-base-dists-lognormal-mode","15M":"@stdlib/stats/base/dists/lognormal","15N":"@stdlib/stats-base-dists-lognormal","15O":"@stdlib/stats/base/dists/lognormal/pdf","15P":"@stdlib/stats-base-dists-lognormal-pdf","15Q":"@stdlib/stats/base/dists/lognormal/quantile","15R":"@stdlib/stats-base-dists-lognormal-quantile","15S":"@stdlib/stats/base/dists/lognormal/skewness","15T":"@stdlib/stats-base-dists-lognormal-skewness","15U":"@stdlib/stats/base/dists/lognormal/stdev","15V":"@stdlib/stats-base-dists-lognormal-stdev","15W":"@stdlib/stats/base/dists/lognormal/variance","15X":"@stdlib/stats-base-dists-lognormal-variance","15Y":"@stdlib/stats/base/dists/negative-binomial/cdf","15Z":"@stdlib/stats-base-dists-negative-binomial-cdf","15a":"@stdlib/stats/base/dists/negative-binomial/ctor","15b":"@stdlib/stats-base-dists-negative-binomial-ctor","15c":"@stdlib/stats/base/dists/negative-binomial/kurtosis","15d":"@stdlib/stats-base-dists-negative-binomial-kurtosis","15e":"@stdlib/stats/base/dists/negative-binomial/logpmf","15f":"@stdlib/stats-base-dists-negative-binomial-logpmf","15g":"@stdlib/stats/base/dists/negative-binomial/mean","15h":"@stdlib/stats-base-dists-negative-binomial-mean","15i":"@stdlib/stats/base/dists/negative-binomial/mgf","15j":"@stdlib/stats-base-dists-negative-binomial-mgf","15k":"@stdlib/stats/base/dists/negative-binomial/mode","15l":"@stdlib/stats-base-dists-negative-binomial-mode","15m":"@stdlib/stats/base/dists/negative-binomial","15n":"@stdlib/stats-base-dists-negative-binomial","15o":"@stdlib/stats/base/dists/negative-binomial/pmf","15p":"@stdlib/stats-base-dists-negative-binomial-pmf","15q":"@stdlib/stats/base/dists/negative-binomial/quantile","15r":"@stdlib/stats-base-dists-negative-binomial-quantile","15s":"@stdlib/stats/base/dists/negative-binomial/skewness","15t":"@stdlib/stats-base-dists-negative-binomial-skewness","15u":"@stdlib/stats/base/dists/negative-binomial/stdev","15v":"@stdlib/stats-base-dists-negative-binomial-stdev","15w":"@stdlib/stats/base/dists/negative-binomial/variance","15x":"@stdlib/stats-base-dists-negative-binomial-variance","15y":"@stdlib/stats/base/dists/normal/cdf","15z":"@stdlib/stats-base-dists-normal-cdf","1fC":"@stdlib/stats/base/dists/normal/logcdf","1fD":"@stdlib/stats-base-dists-normal-logcdf","16A":"@stdlib/stats/base/dists/normal/median","16B":"@stdlib/stats-base-dists-normal-median","16C":"@stdlib/stats/base/dists/normal/mgf","16D":"@stdlib/stats-base-dists-normal-mgf","16E":"@stdlib/stats/base/dists/normal/mode","16F":"@stdlib/stats-base-dists-normal-mode","16G":"@stdlib/stats/base/dists/normal","16H":"@stdlib/stats-base-dists-normal","16I":"@stdlib/stats/base/dists/normal/pdf","16J":"@stdlib/stats-base-dists-normal-pdf","16K":"@stdlib/stats/base/dists/normal/quantile","16L":"@stdlib/stats-base-dists-normal-quantile","16M":"@stdlib/stats/base/dists/normal/skewness","16N":"@stdlib/stats-base-dists-normal-skewness","16O":"@stdlib/stats/base/dists/normal/stdev","16P":"@stdlib/stats-base-dists-normal-stdev","16Q":"@stdlib/stats/base/dists/normal/variance","16R":"@stdlib/stats-base-dists-normal-variance","16S":"@stdlib/stats/base/dists","16T":"@stdlib/stats-base-dists","16U":"@stdlib/stats/base/dists/pareto-type1/cdf","16V":"@stdlib/stats-base-dists-pareto-type1-cdf","16W":"@stdlib/stats/base/dists/pareto-type1/ctor","16X":"@stdlib/stats-base-dists-pareto-type1-ctor","16Y":"@stdlib/stats/base/dists/pareto-type1/entropy","16Z":"@stdlib/stats-base-dists-pareto-type1-entropy","16a":"@stdlib/stats/base/dists/pareto-type1/kurtosis","16b":"@stdlib/stats-base-dists-pareto-type1-kurtosis","16c":"@stdlib/stats/base/dists/pareto-type1/logcdf","16d":"@stdlib/stats-base-dists-pareto-type1-logcdf","16e":"@stdlib/stats/base/dists/pareto-type1/logpdf","16f":"@stdlib/stats-base-dists-pareto-type1-logpdf","16g":"@stdlib/stats/base/dists/pareto-type1/mean","16h":"@stdlib/stats-base-dists-pareto-type1-mean","16i":"@stdlib/stats/base/dists/pareto-type1/median","16j":"@stdlib/stats-base-dists-pareto-type1-median","16k":"@stdlib/stats/base/dists/pareto-type1/mode","16l":"@stdlib/stats-base-dists-pareto-type1-mode","16m":"@stdlib/stats/base/dists/pareto-type1","16n":"@stdlib/stats-base-dists-pareto-type1","16o":"@stdlib/stats/base/dists/pareto-type1/pdf","16p":"@stdlib/stats-base-dists-pareto-type1-pdf","16q":"@stdlib/stats/base/dists/pareto-type1/quantile","16r":"@stdlib/stats-base-dists-pareto-type1-quantile","16s":"@stdlib/stats/base/dists/pareto-type1/skewness","16t":"@stdlib/stats-base-dists-pareto-type1-skewness","16u":"@stdlib/stats/base/dists/pareto-type1/stdev","16v":"@stdlib/stats-base-dists-pareto-type1-stdev","16w":"@stdlib/stats/base/dists/pareto-type1/variance","16x":"@stdlib/stats-base-dists-pareto-type1-variance","25A":"@stdlib/stats/base/dists/planck/cdf","25B":"@stdlib/stats-base-dists-planck-cdf","25C":"@stdlib/stats/base/dists/planck/entropy","25D":"@stdlib/stats-base-dists-planck-entropy","25E":"@stdlib/stats/base/dists/planck/kurtosis","25F":"@stdlib/stats-base-dists-planck-kurtosis","25G":"@stdlib/stats/base/dists/planck/logcdf","25H":"@stdlib/stats-base-dists-planck-logcdf","25I":"@stdlib/stats/base/dists/planck/logpmf","25J":"@stdlib/stats-base-dists-planck-logpmf","25K":"@stdlib/stats/base/dists/planck/mean","25L":"@stdlib/stats-base-dists-planck-mean","25M":"@stdlib/stats/base/dists/planck/median","25N":"@stdlib/stats-base-dists-planck-median","28g":"@stdlib/stats/base/dists/planck/mgf","28h":"@stdlib/stats-base-dists-planck-mgf","25O":"@stdlib/stats/base/dists/planck/mode","25P":"@stdlib/stats-base-dists-planck-mode","2U6":"@stdlib/stats/base/dists/planck","2U7":"@stdlib/stats-base-dists-planck","25Q":"@stdlib/stats/base/dists/planck/pmf","25R":"@stdlib/stats-base-dists-planck-pmf","25S":"@stdlib/stats/base/dists/planck/quantile","25T":"@stdlib/stats-base-dists-planck-quantile","25U":"@stdlib/stats/base/dists/planck/skewness","25V":"@stdlib/stats-base-dists-planck-skewness","25W":"@stdlib/stats/base/dists/planck/stdev","25X":"@stdlib/stats-base-dists-planck-stdev","25Y":"@stdlib/stats/base/dists/planck/variance","25Z":"@stdlib/stats-base-dists-planck-variance","16y":"@stdlib/stats/base/dists/poisson/cdf","16z":"@stdlib/stats-base-dists-poisson-cdf","17A":"@stdlib/stats/base/dists/poisson/median","17B":"@stdlib/stats-base-dists-poisson-median","17C":"@stdlib/stats/base/dists/poisson/mgf","17D":"@stdlib/stats-base-dists-poisson-mgf","17E":"@stdlib/stats/base/dists/poisson/mode","17F":"@stdlib/stats-base-dists-poisson-mode","17G":"@stdlib/stats/base/dists/poisson","17H":"@stdlib/stats-base-dists-poisson","17I":"@stdlib/stats/base/dists/poisson/pmf","17J":"@stdlib/stats-base-dists-poisson-pmf","17K":"@stdlib/stats/base/dists/poisson/quantile","17L":"@stdlib/stats-base-dists-poisson-quantile","17M":"@stdlib/stats/base/dists/poisson/skewness","17N":"@stdlib/stats-base-dists-poisson-skewness","17O":"@stdlib/stats/base/dists/poisson/stdev","17P":"@stdlib/stats-base-dists-poisson-stdev","17Q":"@stdlib/stats/base/dists/poisson/variance","17R":"@stdlib/stats-base-dists-poisson-variance","17S":"@stdlib/stats/base/dists/rayleigh/cdf","17T":"@stdlib/stats-base-dists-rayleigh-cdf","17U":"@stdlib/stats/base/dists/rayleigh/ctor","17V":"@stdlib/stats-base-dists-rayleigh-ctor","17W":"@stdlib/stats/base/dists/rayleigh/entropy","17X":"@stdlib/stats-base-dists-rayleigh-entropy","17Y":"@stdlib/stats/base/dists/rayleigh/kurtosis","17Z":"@stdlib/stats-base-dists-rayleigh-kurtosis","17a":"@stdlib/stats/base/dists/rayleigh/logcdf","17b":"@stdlib/stats-base-dists-rayleigh-logcdf","17c":"@stdlib/stats/base/dists/rayleigh/logpdf","17d":"@stdlib/stats-base-dists-rayleigh-logpdf","17e":"@stdlib/stats/base/dists/rayleigh/mean","17f":"@stdlib/stats-base-dists-rayleigh-mean","17g":"@stdlib/stats/base/dists/rayleigh/median","17h":"@stdlib/stats-base-dists-rayleigh-median","17i":"@stdlib/stats/base/dists/rayleigh/mgf","17j":"@stdlib/stats-base-dists-rayleigh-mgf","17k":"@stdlib/stats/base/dists/rayleigh/mode","17l":"@stdlib/stats-base-dists-rayleigh-mode","17m":"@stdlib/stats/base/dists/rayleigh","17n":"@stdlib/stats-base-dists-rayleigh","17o":"@stdlib/stats/base/dists/rayleigh/pdf","17p":"@stdlib/stats-base-dists-rayleigh-pdf","17q":"@stdlib/stats/base/dists/rayleigh/quantile","17r":"@stdlib/stats-base-dists-rayleigh-quantile","17s":"@stdlib/stats/base/dists/rayleigh/skewness","17t":"@stdlib/stats-base-dists-rayleigh-skewness","17u":"@stdlib/stats/base/dists/rayleigh/stdev","17v":"@stdlib/stats-base-dists-rayleigh-stdev","17w":"@stdlib/stats/base/dists/rayleigh/variance","17x":"@stdlib/stats-base-dists-rayleigh-variance","17y":"@stdlib/stats/base/dists/signrank/cdf","17z":"@stdlib/stats-base-dists-signrank-cdf","1fE":"@stdlib/stats/base/dists/studentized-range/cdf","1fF":"@stdlib/stats-base-dists-studentized-range-cdf","1fG":"@stdlib/stats/base/dists/studentized-range","1fH":"@stdlib/stats-base-dists-studentized-range","1fI":"@stdlib/stats/base/dists/studentized-range/quantile","1fJ":"@stdlib/stats-base-dists-studentized-range-quantile","18A":"@stdlib/stats/base/dists/t/entropy","18B":"@stdlib/stats-base-dists-t-entropy","18C":"@stdlib/stats/base/dists/t/kurtosis","18D":"@stdlib/stats-base-dists-t-kurtosis","18E":"@stdlib/stats/base/dists/t/logcdf","18F":"@stdlib/stats-base-dists-t-logcdf","18G":"@stdlib/stats/base/dists/t/logpdf","18H":"@stdlib/stats-base-dists-t-logpdf","18I":"@stdlib/stats/base/dists/t/mean","18J":"@stdlib/stats-base-dists-t-mean","18K":"@stdlib/stats/base/dists/t/median","18L":"@stdlib/stats-base-dists-t-median","18M":"@stdlib/stats/base/dists/t/mode","18N":"@stdlib/stats-base-dists-t-mode","18O":"@stdlib/stats/base/dists/t","18P":"@stdlib/stats-base-dists-t","18Q":"@stdlib/stats/base/dists/t/pdf","18R":"@stdlib/stats-base-dists-t-pdf","18S":"@stdlib/stats/base/dists/t/quantile","18T":"@stdlib/stats-base-dists-t-quantile","18U":"@stdlib/stats/base/dists/t/skewness","18V":"@stdlib/stats-base-dists-t-skewness","18W":"@stdlib/stats/base/dists/t/stdev","18X":"@stdlib/stats-base-dists-t-stdev","18Y":"@stdlib/stats/base/dists/t/variance","18Z":"@stdlib/stats-base-dists-t-variance","18a":"@stdlib/stats/base/dists/triangular/cdf","18b":"@stdlib/stats-base-dists-triangular-cdf","18c":"@stdlib/stats/base/dists/triangular/ctor","18d":"@stdlib/stats-base-dists-triangular-ctor","18e":"@stdlib/stats/base/dists/triangular/entropy","18f":"@stdlib/stats-base-dists-triangular-entropy","18g":"@stdlib/stats/base/dists/triangular/kurtosis","18h":"@stdlib/stats-base-dists-triangular-kurtosis","18i":"@stdlib/stats/base/dists/triangular/logcdf","18j":"@stdlib/stats-base-dists-triangular-logcdf","18k":"@stdlib/stats/base/dists/triangular/logpdf","18l":"@stdlib/stats-base-dists-triangular-logpdf","18m":"@stdlib/stats/base/dists/triangular/mean","18n":"@stdlib/stats-base-dists-triangular-mean","18o":"@stdlib/stats/base/dists/triangular/median","18p":"@stdlib/stats-base-dists-triangular-median","18q":"@stdlib/stats/base/dists/triangular/mgf","18r":"@stdlib/stats-base-dists-triangular-mgf","18s":"@stdlib/stats/base/dists/triangular/mode","18t":"@stdlib/stats-base-dists-triangular-mode","18u":"@stdlib/stats/base/dists/triangular","18v":"@stdlib/stats-base-dists-triangular","18w":"@stdlib/stats/base/dists/triangular/pdf","18x":"@stdlib/stats-base-dists-triangular-pdf","18y":"@stdlib/stats/base/dists/triangular/quantile","18z":"@stdlib/stats-base-dists-triangular-quantile","19A":"@stdlib/stats/base/dists/uniform/cdf","19B":"@stdlib/stats-base-dists-uniform-cdf","19C":"@stdlib/stats/base/dists/uniform/ctor","19D":"@stdlib/stats-base-dists-uniform-ctor","19E":"@stdlib/stats/base/dists/uniform/entropy","19F":"@stdlib/stats-base-dists-uniform-entropy","19G":"@stdlib/stats/base/dists/uniform/kurtosis","19H":"@stdlib/stats-base-dists-uniform-kurtosis","19I":"@stdlib/stats/base/dists/uniform/logcdf","19J":"@stdlib/stats-base-dists-uniform-logcdf","19K":"@stdlib/stats/base/dists/uniform/logpdf","19L":"@stdlib/stats-base-dists-uniform-logpdf","19M":"@stdlib/stats/base/dists/uniform/mean","19N":"@stdlib/stats-base-dists-uniform-mean","19O":"@stdlib/stats/base/dists/uniform/median","19P":"@stdlib/stats-base-dists-uniform-median","19Q":"@stdlib/stats/base/dists/uniform/mgf","19R":"@stdlib/stats-base-dists-uniform-mgf","19S":"@stdlib/stats/base/dists/uniform","19T":"@stdlib/stats-base-dists-uniform","19U":"@stdlib/stats/base/dists/uniform/pdf","19V":"@stdlib/stats-base-dists-uniform-pdf","19W":"@stdlib/stats/base/dists/uniform/quantile","19X":"@stdlib/stats-base-dists-uniform-quantile","19Y":"@stdlib/stats/base/dists/uniform/skewness","19Z":"@stdlib/stats-base-dists-uniform-skewness","19a":"@stdlib/stats/base/dists/uniform/stdev","19b":"@stdlib/stats-base-dists-uniform-stdev","19c":"@stdlib/stats/base/dists/uniform/variance","19d":"@stdlib/stats-base-dists-uniform-variance","2r6":"@stdlib/stats/base/dists/wald/kurtosis","2r7":"@stdlib/stats-base-dists-wald-kurtosis","2r8":"@stdlib/stats/base/dists/wald/mean","2r9":"@stdlib/stats-base-dists-wald-mean","2rA":"@stdlib/stats/base/dists/wald/mode","2rB":"@stdlib/stats-base-dists-wald-mode","2rC":"@stdlib/stats/base/dists/wald/pdf","2rD":"@stdlib/stats-base-dists-wald-pdf","2rE":"@stdlib/stats/base/dists/wald/skewness","2rF":"@stdlib/stats-base-dists-wald-skewness","2rG":"@stdlib/stats/base/dists/wald/variance","2rH":"@stdlib/stats-base-dists-wald-variance","19e":"@stdlib/stats/base/dists/weibull/cdf","19f":"@stdlib/stats-base-dists-weibull-cdf","19g":"@stdlib/stats/base/dists/weibull/ctor","19h":"@stdlib/stats-base-dists-weibull-ctor","19i":"@stdlib/stats/base/dists/weibull/entropy","19j":"@stdlib/stats-base-dists-weibull-entropy","19k":"@stdlib/stats/base/dists/weibull/kurtosis","19l":"@stdlib/stats-base-dists-weibull-kurtosis","19m":"@stdlib/stats/base/dists/weibull/logcdf","19n":"@stdlib/stats-base-dists-weibull-logcdf","19o":"@stdlib/stats/base/dists/weibull/logpdf","19p":"@stdlib/stats-base-dists-weibull-logpdf","19q":"@stdlib/stats/base/dists/weibull/mean","19r":"@stdlib/stats-base-dists-weibull-mean","19s":"@stdlib/stats/base/dists/weibull/median","19t":"@stdlib/stats-base-dists-weibull-median","19u":"@stdlib/stats/base/dists/weibull/mgf","19v":"@stdlib/stats-base-dists-weibull-mgf","19w":"@stdlib/stats/base/dists/weibull/mode","19x":"@stdlib/stats-base-dists-weibull-mode","19y":"@stdlib/stats/base/dists/weibull","19z":"@stdlib/stats-base-dists-weibull","1A0":"@stdlib/stats/base/dists/weibull/pdf","1A1":"@stdlib/stats-base-dists-weibull-pdf","1A2":"@stdlib/stats/base/dists/weibull/quantile","1A3":"@stdlib/stats-base-dists-weibull-quantile","1A4":"@stdlib/stats/base/dists/weibull/skewness","1A5":"@stdlib/stats-base-dists-weibull-skewness","1A6":"@stdlib/stats/base/dists/weibull/stdev","1A7":"@stdlib/stats-base-dists-weibull-stdev","1A8":"@stdlib/stats/base/dists/weibull/variance","1A9":"@stdlib/stats-base-dists-weibull-variance","2U8":"@stdlib/stats/base/ndarray/covarmtk","2U9":"@stdlib/stats-base-ndarray-covarmtk","2G2":"@stdlib/stats/base/ndarray/cumax","2G3":"@stdlib/stats-base-ndarray-cumax","2Pa":"@stdlib/stats/base/ndarray/cumin","2Pb":"@stdlib/stats-base-ndarray-cumin","2UA":"@stdlib/stats/base/ndarray/dcovarmtk","2UB":"@stdlib/stats-base-ndarray-dcovarmtk","2G4":"@stdlib/stats/base/ndarray/dcumax","2G5":"@stdlib/stats-base-ndarray-dcumax","2aa":"@stdlib/stats/base/ndarray/dcumaxabs","2ab":"@stdlib/stats-base-ndarray-dcumaxabs","2Pc":"@stdlib/stats/base/ndarray/dcumin","2Pd":"@stdlib/stats-base-ndarray-dcumin","2ac":"@stdlib/stats/base/ndarray/dcuminabs","2ad":"@stdlib/stats-base-ndarray-dcuminabs","2Ey":"@stdlib/stats/base/ndarray/dmax","2Ez":"@stdlib/stats-base-ndarray-dmax","2UC":"@stdlib/stats/base/ndarray/dmaxabs","2UD":"@stdlib/stats-base-ndarray-dmaxabs","2ae":"@stdlib/stats/base/ndarray/dmaxabssorted","2af":"@stdlib/stats-base-ndarray-dmaxabssorted","2Vm":"@stdlib/stats/base/ndarray/dmaxsorted","2Vn":"@stdlib/stats-base-ndarray-dmaxsorted","2UE":"@stdlib/stats/base/ndarray/dmean","2UF":"@stdlib/stats-base-ndarray-dmean","2Y0":"@stdlib/stats/base/ndarray/dmeankbn","2Y1":"@stdlib/stats-base-ndarray-dmeankbn","2Y2":"@stdlib/stats/base/ndarray/dmeankbn2","2Y3":"@stdlib/stats-base-ndarray-dmeankbn2","2Y4":"@stdlib/stats/base/ndarray/dmeanli","2Y5":"@stdlib/stats-base-ndarray-dmeanli","2Y6":"@stdlib/stats/base/ndarray/dmeanlipw","2Y7":"@stdlib/stats-base-ndarray-dmeanlipw","2ag":"@stdlib/stats/base/ndarray/dmeanors","2ah":"@stdlib/stats-base-ndarray-dmeanors","2ai":"@stdlib/stats/base/ndarray/dmeanpn","2aj":"@stdlib/stats-base-ndarray-dmeanpn","2ak":"@stdlib/stats/base/ndarray/dmeanpw","2al":"@stdlib/stats-base-ndarray-dmeanpw","2rI":"@stdlib/stats/base/ndarray/dmeanstdev","2rJ":"@stdlib/stats-base-ndarray-dmeanstdev","2am":"@stdlib/stats/base/ndarray/dmeanwd","2an":"@stdlib/stats-base-ndarray-dmeanwd","2ao":"@stdlib/stats/base/ndarray/dmediansorted","2ap":"@stdlib/stats-base-ndarray-dmediansorted","2aq":"@stdlib/stats/base/ndarray/dmidrange","2ar":"@stdlib/stats-base-ndarray-dmidrange","2Pe":"@stdlib/stats/base/ndarray/dmin","2Pf":"@stdlib/stats-base-ndarray-dmin","2UG":"@stdlib/stats/base/ndarray/dminabs","2UH":"@stdlib/stats-base-ndarray-dminabs","2Y8":"@stdlib/stats/base/ndarray/dminsorted","2Y9":"@stdlib/stats-base-ndarray-dminsorted","2as":"@stdlib/stats/base/ndarray/dmskmax","2at":"@stdlib/stats-base-ndarray-dmskmax","2rK":"@stdlib/stats/base/ndarray/dmskmaxabs","2rL":"@stdlib/stats-base-ndarray-dmskmaxabs","2au":"@stdlib/stats/base/ndarray/dmskmin","2av":"@stdlib/stats-base-ndarray-dmskmin","2aw":"@stdlib/stats/base/ndarray/dmskrange","2ax":"@stdlib/stats-base-ndarray-dmskrange","2UI":"@stdlib/stats/base/ndarray/dnanmax","2UJ":"@stdlib/stats-base-ndarray-dnanmax","2Yc":"@stdlib/stats/base/ndarray/dnanmaxabs","2Yd":"@stdlib/stats-base-ndarray-dnanmaxabs","2VA":"@stdlib/stats/base/ndarray/dnanmean","2VB":"@stdlib/stats-base-ndarray-dnanmean","2ay":"@stdlib/stats/base/ndarray/dnanmeanors","2az":"@stdlib/stats-base-ndarray-dnanmeanors","2b0":"@stdlib/stats/base/ndarray/dnanmeanpn","2b1":"@stdlib/stats-base-ndarray-dnanmeanpn","2b2":"@stdlib/stats/base/ndarray/dnanmeanpw","2b3":"@stdlib/stats-base-ndarray-dnanmeanpw","2b4":"@stdlib/stats/base/ndarray/dnanmeanwd","2b5":"@stdlib/stats-base-ndarray-dnanmeanwd","2rM":"@stdlib/stats/base/ndarray/dnanmidrange","2rN":"@stdlib/stats-base-ndarray-dnanmidrange","2UK":"@stdlib/stats/base/ndarray/dnanmin","2UL":"@stdlib/stats-base-ndarray-dnanmin","2Ye":"@stdlib/stats/base/ndarray/dnanminabs","2Yf":"@stdlib/stats-base-ndarray-dnanminabs","2b6":"@stdlib/stats/base/ndarray/dnanmskmax","2b7":"@stdlib/stats-base-ndarray-dnanmskmax","2rO":"@stdlib/stats/base/ndarray/dnanmskmaxabs","2rP":"@stdlib/stats-base-ndarray-dnanmskmaxabs","2b8":"@stdlib/stats/base/ndarray/dnanmskmin","2b9":"@stdlib/stats-base-ndarray-dnanmskmin","2rQ":"@stdlib/stats/base/ndarray/dnanmskminabs","2rR":"@stdlib/stats-base-ndarray-dnanmskminabs","2bA":"@stdlib/stats/base/ndarray/dnanmskrange","2bB":"@stdlib/stats-base-ndarray-dnanmskrange","2rS":"@stdlib/stats/base/ndarray/dnanrange","2rT":"@stdlib/stats-base-ndarray-dnanrange","2rU":"@stdlib/stats/base/ndarray/dnanrangeabs","2rV":"@stdlib/stats-base-ndarray-dnanrangeabs","2rW":"@stdlib/stats/base/ndarray/dnanstdev","2rX":"@stdlib/stats-base-ndarray-dnanstdev","2rY":"@stdlib/stats/base/ndarray/dnanstdevch","2rZ":"@stdlib/stats-base-ndarray-dnanstdevch","2ra":"@stdlib/stats/base/ndarray/dnanstdevpn","2rb":"@stdlib/stats-base-ndarray-dnanstdevpn","2Pg":"@stdlib/stats/base/ndarray/drange","2Ph":"@stdlib/stats-base-ndarray-drange","2rc":"@stdlib/stats/base/ndarray/drangeabs","2rd":"@stdlib/stats-base-ndarray-drangeabs","2re":"@stdlib/stats/base/ndarray/dstdev","2rf":"@stdlib/stats-base-ndarray-dstdev","2rg":"@stdlib/stats/base/ndarray/dstdevch","2rh":"@stdlib/stats-base-ndarray-dstdevch","2ri":"@stdlib/stats/base/ndarray/dstdevpn","2rj":"@stdlib/stats-base-ndarray-dstdevpn","2rk":"@stdlib/stats/base/ndarray/dstdevtk","2rl":"@stdlib/stats-base-ndarray-dstdevtk","2rm":"@stdlib/stats/base/ndarray/dstdevwd","2rn":"@stdlib/stats-base-ndarray-dstdevwd","2ro":"@stdlib/stats/base/ndarray/dstdevyc","2rp":"@stdlib/stats-base-ndarray-dstdevyc","2rq":"@stdlib/stats/base/ndarray/dvariance","2rr":"@stdlib/stats-base-ndarray-dvariance","2Pi":"@stdlib/stats/base/ndarray/dztest","2Pj":"@stdlib/stats-base-ndarray-dztest","2S8":"@stdlib/stats/base/ndarray/dztest2","2S9":"@stdlib/stats-base-ndarray-dztest2","2Ji":"@stdlib/stats/base/ndarray/max-by","2Jj":"@stdlib/stats-base-ndarray-max-by","2F0":"@stdlib/stats/base/ndarray/max","2F1":"@stdlib/stats-base-ndarray-max","2UM":"@stdlib/stats/base/ndarray/maxabs","2UN":"@stdlib/stats-base-ndarray-maxabs","2Vo":"@stdlib/stats/base/ndarray/maxsorted","2Vp":"@stdlib/stats-base-ndarray-maxsorted","2UO":"@stdlib/stats/base/ndarray/mean","2UP":"@stdlib/stats-base-ndarray-mean","2XE":"@stdlib/stats/base/ndarray/meankbn","2XF":"@stdlib/stats-base-ndarray-meankbn","2XG":"@stdlib/stats/base/ndarray/meankbn2","2XH":"@stdlib/stats-base-ndarray-meankbn2","2XI":"@stdlib/stats/base/ndarray/meanors","2XJ":"@stdlib/stats-base-ndarray-meanors","2XK":"@stdlib/stats/base/ndarray/meanpn","2XL":"@stdlib/stats-base-ndarray-meanpn","2XM":"@stdlib/stats/base/ndarray/meanpw","2XN":"@stdlib/stats-base-ndarray-meanpw","2XO":"@stdlib/stats/base/ndarray/meanwd","2XP":"@stdlib/stats-base-ndarray-meanwd","2XQ":"@stdlib/stats/base/ndarray/mediansorted","2XR":"@stdlib/stats-base-ndarray-mediansorted","2rs":"@stdlib/stats/base/ndarray/midrange-by","2rt":"@stdlib/stats-base-ndarray-midrange-by","2ru":"@stdlib/stats/base/ndarray/midrange","2rv":"@stdlib/stats-base-ndarray-midrange","2rw":"@stdlib/stats/base/ndarray/midrangeabs","2rx":"@stdlib/stats-base-ndarray-midrangeabs","2Pk":"@stdlib/stats/base/ndarray/min-by","2Pl":"@stdlib/stats-base-ndarray-min-by","2Pm":"@stdlib/stats/base/ndarray/min","2Pn":"@stdlib/stats-base-ndarray-min","2UQ":"@stdlib/stats/base/ndarray/minabs","2UR":"@stdlib/stats-base-ndarray-minabs","2XS":"@stdlib/stats/base/ndarray/minsorted","2XT":"@stdlib/stats-base-ndarray-minsorted","2XU":"@stdlib/stats/base/ndarray/mskmax","2XV":"@stdlib/stats-base-ndarray-mskmax","2ry":"@stdlib/stats/base/ndarray/mskmaxabs","2rz":"@stdlib/stats-base-ndarray-mskmaxabs","2s0":"@stdlib/stats/base/ndarray/mskmidrange","2s1":"@stdlib/stats-base-ndarray-mskmidrange","2YA":"@stdlib/stats/base/ndarray/mskmin","2YB":"@stdlib/stats-base-ndarray-mskmin","2bC":"@stdlib/stats/base/ndarray/mskrange","2bD":"@stdlib/stats-base-ndarray-mskrange","2bE":"@stdlib/stats/base/ndarray/nanmax-by","2bF":"@stdlib/stats-base-ndarray-nanmax-by","2US":"@stdlib/stats/base/ndarray/nanmax","2UT":"@stdlib/stats-base-ndarray-nanmax","2Yg":"@stdlib/stats/base/ndarray/nanmaxabs","2Yh":"@stdlib/stats-base-ndarray-nanmaxabs","2VC":"@stdlib/stats/base/ndarray/nanmean","2VD":"@stdlib/stats-base-ndarray-nanmean","2bG":"@stdlib/stats/base/ndarray/nanmeanors","2bH":"@stdlib/stats-base-ndarray-nanmeanors","2bI":"@stdlib/stats/base/ndarray/nanmeanpn","2bJ":"@stdlib/stats-base-ndarray-nanmeanpn","2bK":"@stdlib/stats/base/ndarray/nanmeanwd","2bL":"@stdlib/stats-base-ndarray-nanmeanwd","2s2":"@stdlib/stats/base/ndarray/nanmidrange-by","2s3":"@stdlib/stats-base-ndarray-nanmidrange-by","2s4":"@stdlib/stats/base/ndarray/nanmidrange","2s5":"@stdlib/stats-base-ndarray-nanmidrange","2bM":"@stdlib/stats/base/ndarray/nanmin-by","2bN":"@stdlib/stats-base-ndarray-nanmin-by","2UU":"@stdlib/stats/base/ndarray/nanmin","2UV":"@stdlib/stats-base-ndarray-nanmin","2Yi":"@stdlib/stats/base/ndarray/nanminabs","2Yj":"@stdlib/stats-base-ndarray-nanminabs","2bO":"@stdlib/stats/base/ndarray/nanmskmax","2bP":"@stdlib/stats-base-ndarray-nanmskmax","2s6":"@stdlib/stats/base/ndarray/nanmskmidrange","2s7":"@stdlib/stats-base-ndarray-nanmskmidrange","2bQ":"@stdlib/stats/base/ndarray/nanmskmin","2bR":"@stdlib/stats-base-ndarray-nanmskmin","2bS":"@stdlib/stats/base/ndarray/nanmskrange","2bT":"@stdlib/stats-base-ndarray-nanmskrange","2bU":"@stdlib/stats/base/ndarray/nanrange-by","2bV":"@stdlib/stats-base-ndarray-nanrange-by","2bW":"@stdlib/stats/base/ndarray/nanrange","2bX":"@stdlib/stats-base-ndarray-nanrange","2F2":"@stdlib/stats/base/ndarray","2F3":"@stdlib/stats-base-ndarray","2YC":"@stdlib/stats/base/ndarray/range-by","2YD":"@stdlib/stats-base-ndarray-range-by","2Po":"@stdlib/stats/base/ndarray/range","2Pp":"@stdlib/stats-base-ndarray-range","2s8":"@stdlib/stats/base/ndarray/rangeabs","2s9":"@stdlib/stats-base-ndarray-rangeabs","2UW":"@stdlib/stats/base/ndarray/scovarmtk","2UX":"@stdlib/stats-base-ndarray-scovarmtk","2G6":"@stdlib/stats/base/ndarray/scumax","2G7":"@stdlib/stats-base-ndarray-scumax","2Yk":"@stdlib/stats/base/ndarray/scumaxabs","2Yl":"@stdlib/stats-base-ndarray-scumaxabs","2Pq":"@stdlib/stats/base/ndarray/scumin","2Pr":"@stdlib/stats-base-ndarray-scumin","2Ym":"@stdlib/stats/base/ndarray/scuminabs","2Yn":"@stdlib/stats-base-ndarray-scuminabs","2bY":"@stdlib/stats/base/ndarray/sdsmean","2bZ":"@stdlib/stats-base-ndarray-sdsmean","2ba":"@stdlib/stats/base/ndarray/sdsmeanors","2bb":"@stdlib/stats-base-ndarray-sdsmeanors","2bc":"@stdlib/stats/base/ndarray/sdsnanmeanors","2bd":"@stdlib/stats-base-ndarray-sdsnanmeanors","2F4":"@stdlib/stats/base/ndarray/smax","2F5":"@stdlib/stats-base-ndarray-smax","2UY":"@stdlib/stats/base/ndarray/smaxabs","2UZ":"@stdlib/stats-base-ndarray-smaxabs","2YE":"@stdlib/stats/base/ndarray/smaxabssorted","2YF":"@stdlib/stats-base-ndarray-smaxabssorted","2Vq":"@stdlib/stats/base/ndarray/smaxsorted","2Vr":"@stdlib/stats-base-ndarray-smaxsorted","2Ua":"@stdlib/stats/base/ndarray/smean","2Ub":"@stdlib/stats-base-ndarray-smean","2be":"@stdlib/stats/base/ndarray/smeankbn","2bf":"@stdlib/stats-base-ndarray-smeankbn","2bg":"@stdlib/stats/base/ndarray/smeankbn2","2bh":"@stdlib/stats-base-ndarray-smeankbn2","2bi":"@stdlib/stats/base/ndarray/smeanli","2bj":"@stdlib/stats-base-ndarray-smeanli","2bk":"@stdlib/stats/base/ndarray/smeanlipw","2bl":"@stdlib/stats-base-ndarray-smeanlipw","2bm":"@stdlib/stats/base/ndarray/smeanors","2bn":"@stdlib/stats-base-ndarray-smeanors","2bo":"@stdlib/stats/base/ndarray/smeanpn","2bp":"@stdlib/stats-base-ndarray-smeanpn","2bq":"@stdlib/stats/base/ndarray/smeanpw","2br":"@stdlib/stats-base-ndarray-smeanpw","2bs":"@stdlib/stats/base/ndarray/smeanwd","2bt":"@stdlib/stats-base-ndarray-smeanwd","2bu":"@stdlib/stats/base/ndarray/smediansorted","2bv":"@stdlib/stats-base-ndarray-smediansorted","2bw":"@stdlib/stats/base/ndarray/smidrange","2bx":"@stdlib/stats-base-ndarray-smidrange","2Ps":"@stdlib/stats/base/ndarray/smin","2Pt":"@stdlib/stats-base-ndarray-smin","2Uc":"@stdlib/stats/base/ndarray/sminabs","2Ud":"@stdlib/stats-base-ndarray-sminabs","2YG":"@stdlib/stats/base/ndarray/sminsorted","2YH":"@stdlib/stats-base-ndarray-sminsorted","2by":"@stdlib/stats/base/ndarray/smskmax","2bz":"@stdlib/stats-base-ndarray-smskmax","2sA":"@stdlib/stats/base/ndarray/smskmaxabs","2sB":"@stdlib/stats-base-ndarray-smskmaxabs","2sC":"@stdlib/stats/base/ndarray/smskmidrange","2sD":"@stdlib/stats-base-ndarray-smskmidrange","2c0":"@stdlib/stats/base/ndarray/smskmin","2c1":"@stdlib/stats-base-ndarray-smskmin","2c2":"@stdlib/stats/base/ndarray/smskrange","2c3":"@stdlib/stats-base-ndarray-smskrange","2Ue":"@stdlib/stats/base/ndarray/snanmax","2Uf":"@stdlib/stats-base-ndarray-snanmax","2YI":"@stdlib/stats/base/ndarray/snanmaxabs","2YJ":"@stdlib/stats-base-ndarray-snanmaxabs","2VE":"@stdlib/stats/base/ndarray/snanmean","2VF":"@stdlib/stats-base-ndarray-snanmean","2c4":"@stdlib/stats/base/ndarray/snanmeanors","2c5":"@stdlib/stats-base-ndarray-snanmeanors","2c6":"@stdlib/stats/base/ndarray/snanmeanpn","2c7":"@stdlib/stats-base-ndarray-snanmeanpn","2c8":"@stdlib/stats/base/ndarray/snanmeanwd","2c9":"@stdlib/stats-base-ndarray-snanmeanwd","2sE":"@stdlib/stats/base/ndarray/snanmidrange","2sF":"@stdlib/stats-base-ndarray-snanmidrange","2Ug":"@stdlib/stats/base/ndarray/snanmin","2Uh":"@stdlib/stats-base-ndarray-snanmin","2YK":"@stdlib/stats/base/ndarray/snanminabs","2YL":"@stdlib/stats-base-ndarray-snanminabs","2cA":"@stdlib/stats/base/ndarray/snanmskmax","2cB":"@stdlib/stats-base-ndarray-snanmskmax","2sG":"@stdlib/stats/base/ndarray/snanmskmaxabs","2sH":"@stdlib/stats-base-ndarray-snanmskmaxabs","2sI":"@stdlib/stats/base/ndarray/snanmskmidrange","2sJ":"@stdlib/stats-base-ndarray-snanmskmidrange","2cC":"@stdlib/stats/base/ndarray/snanmskmin","2cD":"@stdlib/stats-base-ndarray-snanmskmin","2sK":"@stdlib/stats/base/ndarray/snanmskminabs","2sL":"@stdlib/stats-base-ndarray-snanmskminabs","2cE":"@stdlib/stats/base/ndarray/snanmskrange","2cF":"@stdlib/stats-base-ndarray-snanmskrange","2sM":"@stdlib/stats/base/ndarray/snanrange","2sN":"@stdlib/stats-base-ndarray-snanrange","2Pu":"@stdlib/stats/base/ndarray/srange","2Pv":"@stdlib/stats-base-ndarray-srange","2sO":"@stdlib/stats/base/ndarray/srangeabs","2sP":"@stdlib/stats-base-ndarray-srangeabs","2sQ":"@stdlib/stats/base/ndarray/sstdev","2sR":"@stdlib/stats-base-ndarray-sstdev","2sS":"@stdlib/stats/base/ndarray/sstdevch","2sT":"@stdlib/stats-base-ndarray-sstdevch","2sU":"@stdlib/stats/base/ndarray/sstdevpn","2sV":"@stdlib/stats-base-ndarray-sstdevpn","2sW":"@stdlib/stats/base/ndarray/sstdevtk","2sX":"@stdlib/stats-base-ndarray-sstdevtk","2sY":"@stdlib/stats/base/ndarray/sstdevwd","2sZ":"@stdlib/stats-base-ndarray-sstdevwd","2sa":"@stdlib/stats/base/ndarray/sstdevyc","2sb":"@stdlib/stats-base-ndarray-sstdevyc","2sc":"@stdlib/stats/base/ndarray/stdev","2sd":"@stdlib/stats-base-ndarray-stdev","2se":"@stdlib/stats/base/ndarray/stdevch","2sf":"@stdlib/stats-base-ndarray-stdevch","2sg":"@stdlib/stats/base/ndarray/stdevpn","2sh":"@stdlib/stats-base-ndarray-stdevpn","2si":"@stdlib/stats/base/ndarray/stdevtk","2sj":"@stdlib/stats-base-ndarray-stdevtk","2sk":"@stdlib/stats/base/ndarray/stdevwd","2sl":"@stdlib/stats-base-ndarray-stdevwd","2sm":"@stdlib/stats/base/ndarray/stdevyc","2sn":"@stdlib/stats-base-ndarray-stdevyc","2so":"@stdlib/stats/base/ndarray/svariance","2sp":"@stdlib/stats-base-ndarray-svariance","2sq":"@stdlib/stats/base/ndarray/svariancech","2sr":"@stdlib/stats-base-ndarray-svariancech","2ss":"@stdlib/stats/base/ndarray/svariancepn","2st":"@stdlib/stats-base-ndarray-svariancepn","2su":"@stdlib/stats/base/ndarray/svariancetk","2sv":"@stdlib/stats-base-ndarray-svariancetk","2sw":"@stdlib/stats/base/ndarray/svariancewd","2sx":"@stdlib/stats-base-ndarray-svariancewd","2sy":"@stdlib/stats/base/ndarray/svarianceyc","2sz":"@stdlib/stats-base-ndarray-svarianceyc","2Pw":"@stdlib/stats/base/ndarray/sztest","2Px":"@stdlib/stats-base-ndarray-sztest","2SA":"@stdlib/stats/base/ndarray/sztest2","2SB":"@stdlib/stats-base-ndarray-sztest2","2t0":"@stdlib/stats/base/ndarray/variance","2t1":"@stdlib/stats-base-ndarray-variance","2t2":"@stdlib/stats/base/ndarray/variancech","2t3":"@stdlib/stats-base-ndarray-variancech","2t4":"@stdlib/stats/base/ndarray/variancepn","2t5":"@stdlib/stats-base-ndarray-variancepn","2t6":"@stdlib/stats/base/ndarray/variancetk","2t7":"@stdlib/stats-base-ndarray-variancetk","2t8":"@stdlib/stats/base/ndarray/variancewd","2t9":"@stdlib/stats-base-ndarray-variancewd","2tA":"@stdlib/stats/base/ndarray/varianceyc","2tB":"@stdlib/stats-base-ndarray-varianceyc","2Py":"@stdlib/stats/base/ndarray/ztest","2Pz":"@stdlib/stats-base-ndarray-ztest","2SC":"@stdlib/stats/base/ndarray/ztest2","2SD":"@stdlib/stats-base-ndarray-ztest2","1EK":"@stdlib/stats/base","1EL":"@stdlib/stats-base","1Ec":"@stdlib/stats/base/sdsnanmean","1Ed":"@stdlib/stats-base-sdsnanmean","1Fk":"@stdlib/stats/base/snanstdev","1Fl":"@stdlib/stats-base-snanstdev","1Fm":"@stdlib/stats/base/snanstdevch","1Fn":"@stdlib/stats-base-snanstdevch","1Fo":"@stdlib/stats/base/snanstdevpn","1Fp":"@stdlib/stats-base-snanstdevpn","1Fq":"@stdlib/stats/base/snanstdevtk","1Fr":"@stdlib/stats-base-snanstdevtk","1Fs":"@stdlib/stats/base/snanstdevwd","1Ft":"@stdlib/stats-base-snanstdevwd","1Fu":"@stdlib/stats/base/snanstdevyc","1Fv":"@stdlib/stats-base-snanstdevyc","1Fw":"@stdlib/stats/base/snanvariance","1Fx":"@stdlib/stats-base-snanvariance","1Fy":"@stdlib/stats/base/snanvariancech","1Fz":"@stdlib/stats-base-snanvariancech","1G0":"@stdlib/stats/base/snanvariancepn","1G1":"@stdlib/stats-base-snanvariancepn","1G2":"@stdlib/stats/base/snanvariancetk","1G3":"@stdlib/stats-base-snanvariancetk","1G4":"@stdlib/stats/base/snanvariancewd","1G5":"@stdlib/stats-base-snanvariancewd","1G6":"@stdlib/stats/base/snanvarianceyc","1G7":"@stdlib/stats-base-snanvarianceyc","2Le":"@stdlib/stats/base/ztest/alternative-enum2str","2Lf":"@stdlib/stats-base-ztest-alternative-enum2str","2Lg":"@stdlib/stats/base/ztest/alternative-resolve-enum","2Lh":"@stdlib/stats-base-ztest-alternative-resolve-enum","2Li":"@stdlib/stats/base/ztest/alternative-resolve-str","2Lj":"@stdlib/stats-base-ztest-alternative-resolve-str","2Lk":"@stdlib/stats/base/ztest/alternative-str2enum","2Ll":"@stdlib/stats-base-ztest-alternative-str2enum","2Lm":"@stdlib/stats/base/ztest/alternatives","2Ln":"@stdlib/stats-base-ztest-alternatives","2Lo":"@stdlib/stats/base/ztest/one-sample/results/factory","2Lp":"@stdlib/stats-base-ztest-one-sample-results-factory","2Lq":"@stdlib/stats/base/ztest/one-sample/results/float32","2Lr":"@stdlib/stats-base-ztest-one-sample-results-float32","2Ls":"@stdlib/stats/base/ztest/one-sample/results/float64","2Lt":"@stdlib/stats-base-ztest-one-sample-results-float64","2Lu":"@stdlib/stats/base/ztest/one-sample/results/struct-factory","2Lv":"@stdlib/stats-base-ztest-one-sample-results-struct-factory","2Lw":"@stdlib/stats/base/ztest/one-sample/results/to-json","2Lx":"@stdlib/stats-base-ztest-one-sample-results-to-json","2Ly":"@stdlib/stats/base/ztest/one-sample/results/to-string","2Lz":"@stdlib/stats-base-ztest-one-sample-results-to-string","2Q0":"@stdlib/stats/base/ztest/two-sample/results/factory","2Q1":"@stdlib/stats-base-ztest-two-sample-results-factory","2Q2":"@stdlib/stats/base/ztest/two-sample/results/float32","2Q3":"@stdlib/stats-base-ztest-two-sample-results-float32","2Q4":"@stdlib/stats/base/ztest/two-sample/results/float64","2Q5":"@stdlib/stats-base-ztest-two-sample-results-float64","2Q6":"@stdlib/stats/base/ztest/two-sample/results/struct-factory","2Q7":"@stdlib/stats-base-ztest-two-sample-results-struct-factory","2Q8":"@stdlib/stats/base/ztest/two-sample/results/to-json","2Q9":"@stdlib/stats-base-ztest-two-sample-results-to-json","2QA":"@stdlib/stats/base/ztest/two-sample/results/to-string","2QB":"@stdlib/stats-base-ztest-two-sample-results-to-string","1Gw":"@stdlib/stats/binomial-test","1Gx":"@stdlib/stats-binomial-test","1Gy":"@stdlib/stats/chi2gof","1Gz":"@stdlib/stats-chi2gof","1H0":"@stdlib/stats/chi2test","1H1":"@stdlib/stats-chi2test","2G8":"@stdlib/stats/cumax","2G9":"@stdlib/stats-cumax","2Ui":"@stdlib/stats/cumin","2Uj":"@stdlib/stats-cumin","1H2":"@stdlib/stats/fligner-test","1H3":"@stdlib/stats-fligner-test","1H4":"@stdlib/stats/incr/apcorr","1H5":"@stdlib/stats-incr-apcorr","1H6":"@stdlib/stats/incr/count","1H7":"@stdlib/stats-incr-count","1H8":"@stdlib/stats/incr/covariance","1H9":"@stdlib/stats-incr-covariance","1HA":"@stdlib/stats/incr/covmat","1HB":"@stdlib/stats-incr-covmat","1HC":"@stdlib/stats/incr/cv","1HD":"@stdlib/stats-incr-cv","1HE":"@stdlib/stats/incr/ewmean","1HF":"@stdlib/stats-incr-ewmean","1HG":"@stdlib/stats/incr/ewstdev","1HH":"@stdlib/stats-incr-ewstdev","1HI":"@stdlib/stats/incr/ewvariance","1HJ":"@stdlib/stats-incr-ewvariance","1HK":"@stdlib/stats/incr/gmean","1HL":"@stdlib/stats-incr-gmean","1HM":"@stdlib/stats/incr/grubbs","1HN":"@stdlib/stats-incr-grubbs","1HO":"@stdlib/stats/incr/hmean","1HP":"@stdlib/stats-incr-hmean","1HQ":"@stdlib/stats/incr/kurtosis","1HR":"@stdlib/stats-incr-kurtosis","1HS":"@stdlib/stats/incr/maape","1HT":"@stdlib/stats-incr-maape","1HU":"@stdlib/stats/incr/mae","1HV":"@stdlib/stats-incr-mae","1HW":"@stdlib/stats/incr/mapcorr","1HX":"@stdlib/stats-incr-mapcorr","1HY":"@stdlib/stats/incr/mape","1HZ":"@stdlib/stats-incr-mape","1Ha":"@stdlib/stats/incr/max","1Hb":"@stdlib/stats-incr-max","1Hc":"@stdlib/stats/incr/maxabs","1Hd":"@stdlib/stats-incr-maxabs","1He":"@stdlib/stats/incr/mcovariance","1Hf":"@stdlib/stats-incr-mcovariance","1Hg":"@stdlib/stats/incr/mcv","1Hh":"@stdlib/stats-incr-mcv","1Hi":"@stdlib/stats/incr/mda","1Hj":"@stdlib/stats-incr-mda","1Hk":"@stdlib/stats/incr/me","1Hl":"@stdlib/stats-incr-me","1Hm":"@stdlib/stats/incr/mean","1Hn":"@stdlib/stats-incr-mean","1Ho":"@stdlib/stats/incr/meanabs","1Hp":"@stdlib/stats-incr-meanabs","1Hq":"@stdlib/stats/incr/meanabs2","1Hr":"@stdlib/stats-incr-meanabs2","1Hs":"@stdlib/stats/incr/meanstdev","1Ht":"@stdlib/stats-incr-meanstdev","1Hu":"@stdlib/stats/incr/meanvar","1Hv":"@stdlib/stats-incr-meanvar","1Hw":"@stdlib/stats/incr/mgmean","1Hx":"@stdlib/stats-incr-mgmean","1Hy":"@stdlib/stats/incr/mgrubbs","1Hz":"@stdlib/stats-incr-mgrubbs","1I0":"@stdlib/stats/incr/mhmean","1I1":"@stdlib/stats-incr-mhmean","1I2":"@stdlib/stats/incr/midrange","1I3":"@stdlib/stats-incr-midrange","1I4":"@stdlib/stats/incr/min","1I5":"@stdlib/stats-incr-min","1I6":"@stdlib/stats/incr/minabs","1I7":"@stdlib/stats-incr-minabs","1I8":"@stdlib/stats/incr/minmax","1I9":"@stdlib/stats-incr-minmax","1IA":"@stdlib/stats/incr/minmaxabs","1IB":"@stdlib/stats-incr-minmaxabs","1IC":"@stdlib/stats/incr/mmaape","1ID":"@stdlib/stats-incr-mmaape","1IE":"@stdlib/stats/incr/mmae","1IF":"@stdlib/stats-incr-mmae","1IG":"@stdlib/stats/incr/mmape","1IH":"@stdlib/stats-incr-mmape","1II":"@stdlib/stats/incr/mmax","1IJ":"@stdlib/stats-incr-mmax","1IK":"@stdlib/stats/incr/mmaxabs","1IL":"@stdlib/stats-incr-mmaxabs","1IM":"@stdlib/stats/incr/mmda","1IN":"@stdlib/stats-incr-mmda","1IO":"@stdlib/stats/incr/mme","1IP":"@stdlib/stats-incr-mme","1IQ":"@stdlib/stats/incr/mmean","1IR":"@stdlib/stats-incr-mmean","1IS":"@stdlib/stats/incr/mmeanabs","1IT":"@stdlib/stats-incr-mmeanabs","1IU":"@stdlib/stats/incr/mmeanabs2","1IV":"@stdlib/stats-incr-mmeanabs2","1IW":"@stdlib/stats/incr/mmeanstdev","1IX":"@stdlib/stats-incr-mmeanstdev","1IY":"@stdlib/stats/incr/mmeanvar","1IZ":"@stdlib/stats-incr-mmeanvar","1Ia":"@stdlib/stats/incr/mmidrange","1Ib":"@stdlib/stats-incr-mmidrange","1Ic":"@stdlib/stats/incr/mmin","1Id":"@stdlib/stats-incr-mmin","1Ie":"@stdlib/stats/incr/mminabs","1If":"@stdlib/stats-incr-mminabs","1Ig":"@stdlib/stats/incr/mminmax","1Ih":"@stdlib/stats-incr-mminmax","1Ii":"@stdlib/stats/incr/mminmaxabs","1Ij":"@stdlib/stats-incr-mminmaxabs","1Ik":"@stdlib/stats/incr/mmpe","1Il":"@stdlib/stats-incr-mmpe","1Im":"@stdlib/stats/incr/mmse","1In":"@stdlib/stats-incr-mmse","1Io":"@stdlib/stats/incr/mpcorr","1Ip":"@stdlib/stats-incr-mpcorr","1Iq":"@stdlib/stats/incr/mpcorr2","1Ir":"@stdlib/stats-incr-mpcorr2","1Is":"@stdlib/stats/incr/mpcorrdist","1It":"@stdlib/stats-incr-mpcorrdist","1Iu":"@stdlib/stats/incr/mpe","1Iv":"@stdlib/stats-incr-mpe","1Iw":"@stdlib/stats/incr/mprod","1Ix":"@stdlib/stats-incr-mprod","1Iy":"@stdlib/stats/incr/mrange","1Iz":"@stdlib/stats-incr-mrange","1J0":"@stdlib/stats/incr/mrmse","1J1":"@stdlib/stats-incr-mrmse","1J2":"@stdlib/stats/incr/mrss","1J3":"@stdlib/stats-incr-mrss","1J4":"@stdlib/stats/incr/mse","1J5":"@stdlib/stats-incr-mse","1J6":"@stdlib/stats/incr/mstdev","1J7":"@stdlib/stats-incr-mstdev","1J8":"@stdlib/stats/incr/msum","1J9":"@stdlib/stats-incr-msum","1JA":"@stdlib/stats/incr/msumabs","1JB":"@stdlib/stats-incr-msumabs","1JC":"@stdlib/stats/incr/msumabs2","1JD":"@stdlib/stats-incr-msumabs2","1JE":"@stdlib/stats/incr/msummary","1JF":"@stdlib/stats-incr-msummary","1JG":"@stdlib/stats/incr/msumprod","1JH":"@stdlib/stats-incr-msumprod","1JI":"@stdlib/stats/incr/mvariance","1JJ":"@stdlib/stats-incr-mvariance","1JK":"@stdlib/stats/incr/mvmr","1JL":"@stdlib/stats-incr-mvmr","1JM":"@stdlib/stats/incr/nancount","1JN":"@stdlib/stats-incr-nancount","2We":"@stdlib/stats/incr/nangmean","2Wf":"@stdlib/stats-incr-nangmean","2Wg":"@stdlib/stats/incr/nanhmean","2Wh":"@stdlib/stats-incr-nanhmean","2GU":"@stdlib/stats/incr/nanmaxabs","2GV":"@stdlib/stats-incr-nanmaxabs","2Yo":"@stdlib/stats/incr/nanmcv","2Yp":"@stdlib/stats-incr-nanmcv","2As":"@stdlib/stats/incr/nanmean","2At":"@stdlib/stats-incr-nanmean","2Au":"@stdlib/stats/incr/nanmeanabs","2Av":"@stdlib/stats-incr-nanmeanabs","2Wi":"@stdlib/stats/incr/nanmin","2Wj":"@stdlib/stats-incr-nanmin","2tC":"@stdlib/stats/incr/nanmmape","2tD":"@stdlib/stats-incr-nanmmape","2tE":"@stdlib/stats/incr/nanmmse","2tF":"@stdlib/stats-incr-nanmmse","2xW":"@stdlib/stats/incr/nanmse","2xX":"@stdlib/stats-incr-nanmse","2GW":"@stdlib/stats/incr/nanmstdev","2GX":"@stdlib/stats-incr-nanmstdev","2QC":"@stdlib/stats/incr/nanmsum","2QD":"@stdlib/stats-incr-nanmsum","2xY":"@stdlib/stats/incr/nanmsumabs","2xZ":"@stdlib/stats-incr-nanmsumabs","2xa":"@stdlib/stats/incr/nanrmse","2xb":"@stdlib/stats-incr-nanrmse","2Aw":"@stdlib/stats/incr/nanskewness","2Ax":"@stdlib/stats-incr-nanskewness","2E4":"@stdlib/stats/incr/nanstdev","2E5":"@stdlib/stats-incr-nanstdev","1JO":"@stdlib/stats/incr/nansum","1JP":"@stdlib/stats-incr-nansum","1JQ":"@stdlib/stats/incr/nansumabs","1JR":"@stdlib/stats-incr-nansumabs","1JS":"@stdlib/stats/incr/nansumabs2","1JT":"@stdlib/stats-incr-nansumabs2","2tG":"@stdlib/stats/incr/nanvariance","2tH":"@stdlib/stats-incr-nanvariance","1JU":"@stdlib/stats/incr","1JV":"@stdlib/stats-incr","1JW":"@stdlib/stats/incr/pcorr","1JX":"@stdlib/stats-incr-pcorr","1JY":"@stdlib/stats/incr/pcorr2","1JZ":"@stdlib/stats-incr-pcorr2","1Ja":"@stdlib/stats/incr/pcorrdist","1Jb":"@stdlib/stats-incr-pcorrdist","1Jc":"@stdlib/stats/incr/pcorrdistmat","1Jd":"@stdlib/stats-incr-pcorrdistmat","1Je":"@stdlib/stats/incr/pcorrmat","1Jf":"@stdlib/stats-incr-pcorrmat","1Jg":"@stdlib/stats/incr/prod","1Jh":"@stdlib/stats-incr-prod","1Ji":"@stdlib/stats/incr/range","1Jj":"@stdlib/stats-incr-range","1Jk":"@stdlib/stats/incr/rmse","1Jl":"@stdlib/stats-incr-rmse","1Jm":"@stdlib/stats/incr/rss","1Jn":"@stdlib/stats-incr-rss","1Jo":"@stdlib/stats/incr/skewness","1Jp":"@stdlib/stats-incr-skewness","1Jq":"@stdlib/stats/incr/stdev","1Jr":"@stdlib/stats-incr-stdev","1Js":"@stdlib/stats/incr/sum","1Jt":"@stdlib/stats-incr-sum","1Ju":"@stdlib/stats/incr/sumabs","1Jv":"@stdlib/stats-incr-sumabs","1Jw":"@stdlib/stats/incr/sumabs2","1Jx":"@stdlib/stats-incr-sumabs2","1Jy":"@stdlib/stats/incr/summary","1Jz":"@stdlib/stats-incr-summary","1K0":"@stdlib/stats/incr/sumprod","1K1":"@stdlib/stats-incr-sumprod","1K2":"@stdlib/stats/incr/variance","1K3":"@stdlib/stats-incr-variance","1K4":"@stdlib/stats/incr/vmr","1K5":"@stdlib/stats-incr-vmr","1K6":"@stdlib/stats/incr/wmean","1K7":"@stdlib/stats-incr-wmean","1K8":"@stdlib/stats/iter/cugmean","1K9":"@stdlib/stats-iter-cugmean","1KA":"@stdlib/stats/iter/cuhmean","1KB":"@stdlib/stats-iter-cuhmean","1KC":"@stdlib/stats/iter/cumax","1KD":"@stdlib/stats-iter-cumax","1KE":"@stdlib/stats/iter/cumaxabs","1KF":"@stdlib/stats-iter-cumaxabs","1KG":"@stdlib/stats/iter/cumean","1KH":"@stdlib/stats-iter-cumean","1KI":"@stdlib/stats/iter/cumeanabs","1KJ":"@stdlib/stats-iter-cumeanabs","1KK":"@stdlib/stats/iter/cumeanabs2","1KL":"@stdlib/stats-iter-cumeanabs2","1KM":"@stdlib/stats/iter/cumidrange","1KN":"@stdlib/stats-iter-cumidrange","1KO":"@stdlib/stats/iter/cumin","1KP":"@stdlib/stats-iter-cumin","1KQ":"@stdlib/stats/iter/cuminabs","1KR":"@stdlib/stats-iter-cuminabs","1KS":"@stdlib/stats/iter/cuprod","1KT":"@stdlib/stats-iter-cuprod","1KU":"@stdlib/stats/iter/curange","1KV":"@stdlib/stats-iter-curange","1KW":"@stdlib/stats/iter/cusum","1KX":"@stdlib/stats-iter-cusum","1KY":"@stdlib/stats/iter/cusumabs","1KZ":"@stdlib/stats-iter-cusumabs","1Ka":"@stdlib/stats/iter/cusumabs2","1Kb":"@stdlib/stats-iter-cusumabs2","1Kc":"@stdlib/stats/iter/max","1Kd":"@stdlib/stats-iter-max","1Ke":"@stdlib/stats/iter/maxabs","1Kf":"@stdlib/stats-iter-maxabs","1Kg":"@stdlib/stats/iter/mean","1Kh":"@stdlib/stats-iter-mean","1Ki":"@stdlib/stats/iter/meanabs","1Kj":"@stdlib/stats-iter-meanabs","1Kk":"@stdlib/stats/iter/meanabs2","1Kl":"@stdlib/stats-iter-meanabs2","1Km":"@stdlib/stats/iter/midrange","1Kn":"@stdlib/stats-iter-midrange","1Ko":"@stdlib/stats/iter/min","1Kp":"@stdlib/stats-iter-min","1Kq":"@stdlib/stats/iter/minabs","1Kr":"@stdlib/stats-iter-minabs","1Ks":"@stdlib/stats/iter/mmax","1Kt":"@stdlib/stats-iter-mmax","1Ku":"@stdlib/stats/iter/mmaxabs","1Kv":"@stdlib/stats-iter-mmaxabs","1Kw":"@stdlib/stats/iter/mmean","1Kx":"@stdlib/stats-iter-mmean","1Ky":"@stdlib/stats/iter/mmeanabs","1Kz":"@stdlib/stats-iter-mmeanabs","1L0":"@stdlib/stats/iter/mmeanabs2","1L1":"@stdlib/stats-iter-mmeanabs2","1L2":"@stdlib/stats/iter/mmidrange","1L3":"@stdlib/stats-iter-mmidrange","1L4":"@stdlib/stats/iter/mmin","1L5":"@stdlib/stats-iter-mmin","1L6":"@stdlib/stats/iter/mminabs","1L7":"@stdlib/stats-iter-mminabs","1L8":"@stdlib/stats/iter/mprod","1L9":"@stdlib/stats-iter-mprod","1LA":"@stdlib/stats/iter/mrange","1LB":"@stdlib/stats-iter-mrange","1LC":"@stdlib/stats/iter/msum","1LD":"@stdlib/stats-iter-msum","1LE":"@stdlib/stats/iter/msumabs","1LF":"@stdlib/stats-iter-msumabs","1LG":"@stdlib/stats/iter/msumabs2","1LH":"@stdlib/stats-iter-msumabs2","1LI":"@stdlib/stats/iter","1LJ":"@stdlib/stats-iter","1LK":"@stdlib/stats/iter/prod","1LL":"@stdlib/stats-iter-prod","1LM":"@stdlib/stats/iter/range","1LN":"@stdlib/stats-iter-range","1LO":"@stdlib/stats/iter/stdev","1LP":"@stdlib/stats-iter-stdev","1LQ":"@stdlib/stats/iter/sum","1LR":"@stdlib/stats-iter-sum","1LS":"@stdlib/stats/iter/sumabs","1LT":"@stdlib/stats-iter-sumabs","1LU":"@stdlib/stats/iter/sumabs2","1LV":"@stdlib/stats-iter-sumabs2","1LW":"@stdlib/stats/iter/variance","1LX":"@stdlib/stats-iter-variance","1LY":"@stdlib/stats/kde2d","1LZ":"@stdlib/stats-kde2d","1La":"@stdlib/stats/kruskal-test","1Lb":"@stdlib/stats-kruskal-test","1Lc":"@stdlib/stats/kstest","1Ld":"@stdlib/stats-kstest","1Le":"@stdlib/stats/levene-test","1Lf":"@stdlib/stats-levene-test","1Lg":"@stdlib/stats/lowess","1Lh":"@stdlib/stats-lowess","2Jk":"@stdlib/stats/max-by","2Jl":"@stdlib/stats-max-by","2F6":"@stdlib/stats/max","2F7":"@stdlib/stats-max","2Uk":"@stdlib/stats/maxabs","2Ul":"@stdlib/stats-maxabs","2cG":"@stdlib/stats/maxsorted","2cH":"@stdlib/stats-maxsorted","2Um":"@stdlib/stats/mean","2Un":"@stdlib/stats-mean","2cI":"@stdlib/stats/meankbn","2cJ":"@stdlib/stats-meankbn","2cK":"@stdlib/stats/meankbn2","2cL":"@stdlib/stats-meankbn2","2cM":"@stdlib/stats/meanors","2cN":"@stdlib/stats-meanors","2cO":"@stdlib/stats/meanpn","2cP":"@stdlib/stats-meanpn","2cQ":"@stdlib/stats/meanpw","2cR":"@stdlib/stats-meanpw","2cS":"@stdlib/stats/meanwd","2cT":"@stdlib/stats-meanwd","2cU":"@stdlib/stats/mediansorted","2cV":"@stdlib/stats-mediansorted","2tI":"@stdlib/stats/midrange-by","2tJ":"@stdlib/stats-midrange-by","2tK":"@stdlib/stats/midrange","2tL":"@stdlib/stats-midrange","2Uo":"@stdlib/stats/min-by","2Up":"@stdlib/stats-min-by","2Uq":"@stdlib/stats/min","2Ur":"@stdlib/stats-min","2Us":"@stdlib/stats/minabs","2Ut":"@stdlib/stats-minabs","2cW":"@stdlib/stats/minsorted","2cX":"@stdlib/stats-minsorted","2cY":"@stdlib/stats/nanmax-by","2cZ":"@stdlib/stats-nanmax-by","2Uu":"@stdlib/stats/nanmax","2Uv":"@stdlib/stats-nanmax","2ca":"@stdlib/stats/nanmaxabs","2cb":"@stdlib/stats-nanmaxabs","2VG":"@stdlib/stats/nanmean","2VH":"@stdlib/stats-nanmean","2cc":"@stdlib/stats/nanmeanors","2cd":"@stdlib/stats-nanmeanors","2ce":"@stdlib/stats/nanmeanpn","2cf":"@stdlib/stats-nanmeanpn","2cg":"@stdlib/stats/nanmeanwd","2ch":"@stdlib/stats-nanmeanwd","2tM":"@stdlib/stats/nanmidrange-by","2tN":"@stdlib/stats-nanmidrange-by","2tO":"@stdlib/stats/nanmidrange","2tP":"@stdlib/stats-nanmidrange","2ci":"@stdlib/stats/nanmin-by","2cj":"@stdlib/stats-nanmin-by","2Uw":"@stdlib/stats/nanmin","2Ux":"@stdlib/stats-nanmin","2ck":"@stdlib/stats/nanminabs","2cl":"@stdlib/stats-nanminabs","2tQ":"@stdlib/stats/nanrange-by","2tR":"@stdlib/stats-nanrange-by","2tS":"@stdlib/stats/nanrange","2tT":"@stdlib/stats-nanrange","1Lj":"@stdlib/stats","1Lk":"@stdlib/stats/padjust","1Ll":"@stdlib/stats-padjust","1Lm":"@stdlib/stats/pcorrtest","1Ln":"@stdlib/stats-pcorrtest","2cm":"@stdlib/stats/range-by","2cn":"@stdlib/stats-range-by","2Uy":"@stdlib/stats/range","2Uz":"@stdlib/stats-range","2tU":"@stdlib/stats/rangeabs","2tV":"@stdlib/stats-rangeabs","1Lo":"@stdlib/stats/ranks","1Lp":"@stdlib/stats-ranks","2QE":"@stdlib/stats/strided/covarmtk","2QF":"@stdlib/stats-strided-covarmtk","2QG":"@stdlib/stats/strided/dcovarmtk","2QH":"@stdlib/stats-strided-dcovarmtk","2QI":"@stdlib/stats/strided/dcovmatmtk","2QJ":"@stdlib/stats-strided-dcovmatmtk","28i":"@stdlib/stats/strided/dcumax","28j":"@stdlib/stats-strided-dcumax","28k":"@stdlib/stats/strided/dcumaxabs","28l":"@stdlib/stats-strided-dcumaxabs","2E6":"@stdlib/stats/strided/dcumin","2E7":"@stdlib/stats-strided-dcumin","28m":"@stdlib/stats/strided/dcuminabs","28n":"@stdlib/stats-strided-dcuminabs","2tW":"@stdlib/stats/strided/distances/dchebyshev","2tX":"@stdlib/stats-strided-distances-dchebyshev","2tY":"@stdlib/stats/strided/distances/dcityblock","2tZ":"@stdlib/stats-strided-distances-dcityblock","2ta":"@stdlib/stats/strided/distances/dcorrelation","2tb":"@stdlib/stats-strided-distances-dcorrelation","2tc":"@stdlib/stats/strided/distances/dcosine-distance","2td":"@stdlib/stats-strided-distances-dcosine-distance","2te":"@stdlib/stats/strided/distances/dcosine-similarity","2tf":"@stdlib/stats-strided-distances-dcosine-similarity","2tg":"@stdlib/stats/strided/distances/deuclidean","2th":"@stdlib/stats-strided-distances-deuclidean","2ti":"@stdlib/stats/strided/distances/dminkowski","2tj":"@stdlib/stats-strided-distances-dminkowski","2tk":"@stdlib/stats/strided/distances/dsquared-euclidean","2tl":"@stdlib/stats-strided-distances-dsquared-euclidean","2tm":"@stdlib/stats/strided/distances","2tn":"@stdlib/stats-strided-distances","2zC":"@stdlib/stats/strided/dmax-sorted","2zD":"@stdlib/stats-strided-dmax-sorted","26I":"@stdlib/stats/strided/dmax","26J":"@stdlib/stats-strided-dmax","2xc":"@stdlib/stats/strided/dmaxabs-sorted","2xd":"@stdlib/stats-strided-dmaxabs-sorted","28o":"@stdlib/stats/strided/dmaxabs","28p":"@stdlib/stats-strided-dmaxabs","2Jm":"@stdlib/stats/strided/dmean","2Jn":"@stdlib/stats-strided-dmean","28u":"@stdlib/stats/strided/dmeankbn","28v":"@stdlib/stats-strided-dmeankbn","28w":"@stdlib/stats/strided/dmeankbn2","28x":"@stdlib/stats-strided-dmeankbn2","28y":"@stdlib/stats/strided/dmeanli","28z":"@stdlib/stats-strided-dmeanli","2Jo":"@stdlib/stats/strided/dmeanpn","2Jp":"@stdlib/stats-strided-dmeanpn","2QK":"@stdlib/stats/strided/dmeanstdev","2QL":"@stdlib/stats-strided-dmeanstdev","2QM":"@stdlib/stats/strided/dmeanstdevpn","2QN":"@stdlib/stats-strided-dmeanstdevpn","2QO":"@stdlib/stats/strided/dmeanvar","2QP":"@stdlib/stats-strided-dmeanvar","2QQ":"@stdlib/stats/strided/dmeanvarpn","2QR":"@stdlib/stats-strided-dmeanvarpn","29A":"@stdlib/stats/strided/dmidrange","29B":"@stdlib/stats-strided-dmidrange","2to":"@stdlib/stats/strided/dmidrangeabs","2tp":"@stdlib/stats-strided-dmidrangeabs","29C":"@stdlib/stats/strided/dmin","29D":"@stdlib/stats-strided-dmin","29E":"@stdlib/stats/strided/dminabs","29F":"@stdlib/stats-strided-dminabs","29G":"@stdlib/stats/strided/dminsorted","29H":"@stdlib/stats-strided-dminsorted","2E8":"@stdlib/stats/strided/dmskmax","2E9":"@stdlib/stats-strided-dmskmax","2tq":"@stdlib/stats/strided/dmskmaxabs","2tr":"@stdlib/stats-strided-dmskmaxabs","2ts":"@stdlib/stats/strided/dmskmidrange","2tt":"@stdlib/stats-strided-dmskmidrange","2EA":"@stdlib/stats/strided/dmskmin","2EB":"@stdlib/stats-strided-dmskmin","2EC":"@stdlib/stats/strided/dmskrange","2ED":"@stdlib/stats-strided-dmskrange","29I":"@stdlib/stats/strided/dnanmax","29J":"@stdlib/stats-strided-dnanmax","29K":"@stdlib/stats/strided/dnanmaxabs","29L":"@stdlib/stats-strided-dnanmaxabs","29M":"@stdlib/stats/strided/dnanmean","29N":"@stdlib/stats-strided-dnanmean","2Ay":"@stdlib/stats/strided/dnanmeanors","2Az":"@stdlib/stats-strided-dnanmeanors","2B0":"@stdlib/stats/strided/dnanmeanpn","2B1":"@stdlib/stats-strided-dnanmeanpn","2B2":"@stdlib/stats/strided/dnanmeanpw","2B3":"@stdlib/stats-strided-dnanmeanpw","2B4":"@stdlib/stats/strided/dnanmeanwd","2B5":"@stdlib/stats-strided-dnanmeanwd","2tu":"@stdlib/stats/strided/dnanmidrange","2tv":"@stdlib/stats-strided-dnanmidrange","2B6":"@stdlib/stats/strided/dnanmin","2B7":"@stdlib/stats-strided-dnanmin","2B8":"@stdlib/stats/strided/dnanminabs","2B9":"@stdlib/stats-strided-dnanminabs","2Jq":"@stdlib/stats/strided/dnanmskmax","2Jr":"@stdlib/stats-strided-dnanmskmax","2tw":"@stdlib/stats/strided/dnanmskmaxabs","2tx":"@stdlib/stats-strided-dnanmskmaxabs","2ty":"@stdlib/stats/strided/dnanmskmidrange","2tz":"@stdlib/stats-strided-dnanmskmidrange","2Js":"@stdlib/stats/strided/dnanmskmin","2Jt":"@stdlib/stats-strided-dnanmskmin","2u0":"@stdlib/stats/strided/dnanmskminabs","2u1":"@stdlib/stats-strided-dnanmskminabs","2Ju":"@stdlib/stats/strided/dnanmskrange","2Jv":"@stdlib/stats-strided-dnanmskrange","2BA":"@stdlib/stats/strided/dnanrange","2BB":"@stdlib/stats-strided-dnanrange","2u2":"@stdlib/stats/strided/dnanrangeabs","2u3":"@stdlib/stats-strided-dnanrangeabs","2Jw":"@stdlib/stats/strided/dnanstdev","2Jx":"@stdlib/stats-strided-dnanstdev","2BC":"@stdlib/stats/strided/dnanstdevch","2BD":"@stdlib/stats-strided-dnanstdevch","2BE":"@stdlib/stats/strided/dnanstdevpn","2BF":"@stdlib/stats-strided-dnanstdevpn","2BG":"@stdlib/stats/strided/dnanstdevtk","2BH":"@stdlib/stats-strided-dnanstdevtk","2BI":"@stdlib/stats/strided/dnanstdevwd","2BJ":"@stdlib/stats-strided-dnanstdevwd","2BK":"@stdlib/stats/strided/dnanstdevyc","2BL":"@stdlib/stats-strided-dnanstdevyc","2BM":"@stdlib/stats/strided/dnanvariance","2BN":"@stdlib/stats-strided-dnanvariance","2BO":"@stdlib/stats/strided/dnanvariancech","2BP":"@stdlib/stats-strided-dnanvariancech","2BQ":"@stdlib/stats/strided/dnanvariancepn","2BR":"@stdlib/stats-strided-dnanvariancepn","2BS":"@stdlib/stats/strided/dnanvariancetk","2BT":"@stdlib/stats-strided-dnanvariancetk","2BU":"@stdlib/stats/strided/dnanvariancewd","2BV":"@stdlib/stats-strided-dnanvariancewd","2BW":"@stdlib/stats/strided/dnanvarianceyc","2BX":"@stdlib/stats-strided-dnanvarianceyc","2u4":"@stdlib/stats/strided/dpcorr","2u5":"@stdlib/stats-strided-dpcorr","2u6":"@stdlib/stats/strided/dpcorrwd","2u7":"@stdlib/stats-strided-dpcorrwd","2BY":"@stdlib/stats/strided/drange","2BZ":"@stdlib/stats-strided-drange","2u8":"@stdlib/stats/strided/drangeabs","2u9":"@stdlib/stats-strided-drangeabs","2Jy":"@stdlib/stats/strided/dsem","2Jz":"@stdlib/stats-strided-dsem","2Ba":"@stdlib/stats/strided/dsemch","2Bb":"@stdlib/stats-strided-dsemch","2K0":"@stdlib/stats/strided/dsempn","2K1":"@stdlib/stats-strided-dsempn","2Bc":"@stdlib/stats/strided/dsemtk","2Bd":"@stdlib/stats-strided-dsemtk","2Be":"@stdlib/stats/strided/dsemwd","2Bf":"@stdlib/stats-strided-dsemwd","2Bg":"@stdlib/stats/strided/dsemyc","2Bh":"@stdlib/stats-strided-dsemyc","2Bi":"@stdlib/stats/strided/dsmean","2Bj":"@stdlib/stats-strided-dsmean","2EE":"@stdlib/stats/strided/dsmeanors","2EF":"@stdlib/stats-strided-dsmeanors","2Bk":"@stdlib/stats/strided/dsmeanpn","2Bl":"@stdlib/stats-strided-dsmeanpn","2Bm":"@stdlib/stats/strided/dsmeanpw","2Bn":"@stdlib/stats-strided-dsmeanpw","2Bo":"@stdlib/stats/strided/dsmeanwd","2Bp":"@stdlib/stats-strided-dsmeanwd","2Bq":"@stdlib/stats/strided/dsnanmean","2Br":"@stdlib/stats-strided-dsnanmean","2Bs":"@stdlib/stats/strided/dsnanmeanors","2Bt":"@stdlib/stats-strided-dsnanmeanors","2Bu":"@stdlib/stats/strided/dsnanmeanpn","2Bv":"@stdlib/stats-strided-dsnanmeanpn","2Bw":"@stdlib/stats/strided/dsnanmeanwd","2Bx":"@stdlib/stats-strided-dsnanmeanwd","2K2":"@stdlib/stats/strided/dstdev","2K3":"@stdlib/stats-strided-dstdev","2By":"@stdlib/stats/strided/dstdevch","2Bz":"@stdlib/stats-strided-dstdevch","2C0":"@stdlib/stats/strided/dstdevpn","2C1":"@stdlib/stats-strided-dstdevpn","2C2":"@stdlib/stats/strided/dstdevtk","2C3":"@stdlib/stats-strided-dstdevtk","2C4":"@stdlib/stats/strided/dstdevwd","2C5":"@stdlib/stats-strided-dstdevwd","2C6":"@stdlib/stats/strided/dstdevyc","2C7":"@stdlib/stats-strided-dstdevyc","2C8":"@stdlib/stats/strided/dsvariance","2C9":"@stdlib/stats-strided-dsvariance","2CA":"@stdlib/stats/strided/dsvariancepn","2CB":"@stdlib/stats-strided-dsvariancepn","2CC":"@stdlib/stats/strided/dvariance","2CD":"@stdlib/stats-strided-dvariance","2CE":"@stdlib/stats/strided/dvariancech","2CF":"@stdlib/stats-strided-dvariancech","2CG":"@stdlib/stats/strided/dvariancepn","2CH":"@stdlib/stats-strided-dvariancepn","2CI":"@stdlib/stats/strided/dvariancetk","2CJ":"@stdlib/stats-strided-dvariancetk","2CK":"@stdlib/stats/strided/dvariancewd","2CL":"@stdlib/stats-strided-dvariancewd","2CM":"@stdlib/stats/strided/dvarianceyc","2CN":"@stdlib/stats-strided-dvarianceyc","2M0":"@stdlib/stats/strided/dvarm","2M1":"@stdlib/stats-strided-dvarm","2M2":"@stdlib/stats/strided/dvarmpn","2M3":"@stdlib/stats-strided-dvarmpn","2CO":"@stdlib/stats/strided/dvarmtk","2CP":"@stdlib/stats-strided-dvarmtk","2M4":"@stdlib/stats/strided/dztest","2M5":"@stdlib/stats-strided-dztest","2SE":"@stdlib/stats/strided/dztest2","2SF":"@stdlib/stats-strided-dztest2","2M6":"@stdlib/stats/strided/max-by","2M7":"@stdlib/stats-strided-max-by","2M8":"@stdlib/stats/strided/max","2M9":"@stdlib/stats-strided-max","2MA":"@stdlib/stats/strided/maxabs","2MB":"@stdlib/stats-strided-maxabs","2MC":"@stdlib/stats/strided/maxsorted","2MD":"@stdlib/stats-strided-maxsorted","2ME":"@stdlib/stats/strided/mean","2MF":"@stdlib/stats-strided-mean","2MG":"@stdlib/stats/strided/meankbn","2MH":"@stdlib/stats-strided-meankbn","2MI":"@stdlib/stats/strided/meankbn2","2MJ":"@stdlib/stats-strided-meankbn2","2MK":"@stdlib/stats/strided/meanors","2ML":"@stdlib/stats-strided-meanors","2MM":"@stdlib/stats/strided/meanpn","2MN":"@stdlib/stats-strided-meanpn","2MO":"@stdlib/stats/strided/meanpw","2MP":"@stdlib/stats-strided-meanpw","2MQ":"@stdlib/stats/strided/meanwd","2MR":"@stdlib/stats-strided-meanwd","2MS":"@stdlib/stats/strided/mediansorted","2MT":"@stdlib/stats-strided-mediansorted","2uA":"@stdlib/stats/strided/midrange-by","2uB":"@stdlib/stats-strided-midrange-by","2uC":"@stdlib/stats/strided/midrange","2uD":"@stdlib/stats-strided-midrange","2uE":"@stdlib/stats/strided/midrangeabs","2uF":"@stdlib/stats-strided-midrangeabs","2MU":"@stdlib/stats/strided/min-by","2MV":"@stdlib/stats-strided-min-by","2MW":"@stdlib/stats/strided/min","2MX":"@stdlib/stats-strided-min","2MY":"@stdlib/stats/strided/minabs","2MZ":"@stdlib/stats-strided-minabs","2Ma":"@stdlib/stats/strided/minsorted","2Mb":"@stdlib/stats-strided-minsorted","2Mc":"@stdlib/stats/strided/mskmax","2Md":"@stdlib/stats-strided-mskmax","2uG":"@stdlib/stats/strided/mskmaxabs","2uH":"@stdlib/stats-strided-mskmaxabs","2uI":"@stdlib/stats/strided/mskmidrange","2uJ":"@stdlib/stats-strided-mskmidrange","2Me":"@stdlib/stats/strided/mskmin","2Mf":"@stdlib/stats-strided-mskmin","2uK":"@stdlib/stats/strided/mskminabs","2uL":"@stdlib/stats-strided-mskminabs","2Mg":"@stdlib/stats/strided/mskrange","2Mh":"@stdlib/stats-strided-mskrange","2Mi":"@stdlib/stats/strided/nanmax-by","2Mj":"@stdlib/stats-strided-nanmax-by","2Mk":"@stdlib/stats/strided/nanmax","2Ml":"@stdlib/stats-strided-nanmax","2Mm":"@stdlib/stats/strided/nanmaxabs","2Mn":"@stdlib/stats-strided-nanmaxabs","2QS":"@stdlib/stats/strided/nanmean","2QT":"@stdlib/stats-strided-nanmean","2QU":"@stdlib/stats/strided/nanmeanors","2QV":"@stdlib/stats-strided-nanmeanors","2QW":"@stdlib/stats/strided/nanmeanpn","2QX":"@stdlib/stats-strided-nanmeanpn","2QY":"@stdlib/stats/strided/nanmeanwd","2QZ":"@stdlib/stats-strided-nanmeanwd","2uM":"@stdlib/stats/strided/nanmidrange-by","2uN":"@stdlib/stats-strided-nanmidrange-by","2uO":"@stdlib/stats/strided/nanmidrange","2uP":"@stdlib/stats-strided-nanmidrange","2Mo":"@stdlib/stats/strided/nanmin-by","2Mp":"@stdlib/stats-strided-nanmin-by","2Mq":"@stdlib/stats/strided/nanmin","2Mr":"@stdlib/stats-strided-nanmin","2Ms":"@stdlib/stats/strided/nanminabs","2Mt":"@stdlib/stats-strided-nanminabs","2Qa":"@stdlib/stats/strided/nanmskmax","2Qb":"@stdlib/stats-strided-nanmskmax","2uQ":"@stdlib/stats/strided/nanmskmidrange","2uR":"@stdlib/stats-strided-nanmskmidrange","2Qc":"@stdlib/stats/strided/nanmskmin","2Qd":"@stdlib/stats-strided-nanmskmin","2Qe":"@stdlib/stats/strided/nanmskrange","2Qf":"@stdlib/stats-strided-nanmskrange","2Qg":"@stdlib/stats/strided/nanrange-by","2Qh":"@stdlib/stats-strided-nanrange-by","2Qi":"@stdlib/stats/strided/nanrange","2Qj":"@stdlib/stats-strided-nanrange","2uS":"@stdlib/stats/strided/nanrangeabs","2uT":"@stdlib/stats-strided-nanrangeabs","2SG":"@stdlib/stats/strided/nanstdev","2SH":"@stdlib/stats-strided-nanstdev","2SI":"@stdlib/stats/strided/nanstdevch","2SJ":"@stdlib/stats-strided-nanstdevch","2SK":"@stdlib/stats/strided/nanstdevpn","2SL":"@stdlib/stats-strided-nanstdevpn","2SM":"@stdlib/stats/strided/nanstdevtk","2SN":"@stdlib/stats-strided-nanstdevtk","2SO":"@stdlib/stats/strided/nanstdevwd","2SP":"@stdlib/stats-strided-nanstdevwd","2SQ":"@stdlib/stats/strided/nanstdevyc","2SR":"@stdlib/stats-strided-nanstdevyc","2Qk":"@stdlib/stats/strided/nanvariance","2Ql":"@stdlib/stats-strided-nanvariance","2Qm":"@stdlib/stats/strided/nanvariancech","2Qn":"@stdlib/stats-strided-nanvariancech","2Qo":"@stdlib/stats/strided/nanvariancepn","2Qp":"@stdlib/stats-strided-nanvariancepn","2Qq":"@stdlib/stats/strided/nanvariancetk","2Qr":"@stdlib/stats-strided-nanvariancetk","2Qs":"@stdlib/stats/strided/nanvariancewd","2Qt":"@stdlib/stats-strided-nanvariancewd","2Qu":"@stdlib/stats/strided/nanvarianceyc","2Qv":"@stdlib/stats-strided-nanvarianceyc","2K4":"@stdlib/stats/strided","2K5":"@stdlib/stats-strided","2Qw":"@stdlib/stats/strided/range-by","2Qx":"@stdlib/stats-strided-range-by","2Qy":"@stdlib/stats/strided/range","2Qz":"@stdlib/stats-strided-range","2uU":"@stdlib/stats/strided/rangeabs","2uV":"@stdlib/stats-strided-rangeabs","2R0":"@stdlib/stats/strided/scovarmtk","2R1":"@stdlib/stats-strided-scovarmtk","2CQ":"@stdlib/stats/strided/scumax","2CR":"@stdlib/stats-strided-scumax","2CS":"@stdlib/stats/strided/scumaxabs","2CT":"@stdlib/stats-strided-scumaxabs","2CU":"@stdlib/stats/strided/scumin","2CV":"@stdlib/stats-strided-scumin","2CW":"@stdlib/stats/strided/scuminabs","2CX":"@stdlib/stats-strided-scuminabs","2CY":"@stdlib/stats/strided/sdsmean","2CZ":"@stdlib/stats-strided-sdsmean","2Ca":"@stdlib/stats/strided/sdsmeanors","2Cb":"@stdlib/stats-strided-sdsmeanors","2Vs":"@stdlib/stats/strided/sdsnanmeanors","2Vt":"@stdlib/stats-strided-sdsnanmeanors","2Cc":"@stdlib/stats/strided/smax","2Cd":"@stdlib/stats-strided-smax","2Ce":"@stdlib/stats/strided/smaxabs","2Cf":"@stdlib/stats-strided-smaxabs","2Cg":"@stdlib/stats/strided/smaxabssorted","2Ch":"@stdlib/stats-strided-smaxabssorted","2Ci":"@stdlib/stats/strided/smaxsorted","2Cj":"@stdlib/stats-strided-smaxsorted","2Mu":"@stdlib/stats/strided/smean","2Mv":"@stdlib/stats-strided-smean","2R2":"@stdlib/stats/strided/smeankbn","2R3":"@stdlib/stats-strided-smeankbn","2R4":"@stdlib/stats/strided/smeankbn2","2R5":"@stdlib/stats-strided-smeankbn2","2Ck":"@stdlib/stats/strided/smeanli","2Cl":"@stdlib/stats-strided-smeanli","2R6":"@stdlib/stats/strided/smeanlipw","2R7":"@stdlib/stats-strided-smeanlipw","2R8":"@stdlib/stats/strided/smeanors","2R9":"@stdlib/stats-strided-smeanors","2Mw":"@stdlib/stats/strided/smeanpn","2Mx":"@stdlib/stats-strided-smeanpn","2Cm":"@stdlib/stats/strided/smeanpw","2Cn":"@stdlib/stats-strided-smeanpw","2Co":"@stdlib/stats/strided/smeanwd","2Cp":"@stdlib/stats-strided-smeanwd","2Cq":"@stdlib/stats/strided/smediansorted","2Cr":"@stdlib/stats-strided-smediansorted","2EG":"@stdlib/stats/strided/smidrange","2EH":"@stdlib/stats-strided-smidrange","2Cs":"@stdlib/stats/strided/smin","2Ct":"@stdlib/stats-strided-smin","2Cu":"@stdlib/stats/strided/sminabs","2Cv":"@stdlib/stats-strided-sminabs","2Cw":"@stdlib/stats/strided/sminsorted","2Cx":"@stdlib/stats-strided-sminsorted","2Cy":"@stdlib/stats/strided/smskmax","2Cz":"@stdlib/stats-strided-smskmax","2uW":"@stdlib/stats/strided/smskmaxabs","2uX":"@stdlib/stats-strided-smskmaxabs","2uY":"@stdlib/stats/strided/smskmidrange","2uZ":"@stdlib/stats-strided-smskmidrange","2D0":"@stdlib/stats/strided/smskmin","2D1":"@stdlib/stats-strided-smskmin","2D2":"@stdlib/stats/strided/smskrange","2D3":"@stdlib/stats-strided-smskrange","2D4":"@stdlib/stats/strided/snanmax","2D5":"@stdlib/stats-strided-snanmax","2D6":"@stdlib/stats/strided/snanmaxabs","2D7":"@stdlib/stats-strided-snanmaxabs","2Vu":"@stdlib/stats/strided/snanmean","2Vv":"@stdlib/stats-strided-snanmean","2D8":"@stdlib/stats/strided/snanmeanors","2D9":"@stdlib/stats-strided-snanmeanors","2DA":"@stdlib/stats/strided/snanmeanpn","2DB":"@stdlib/stats-strided-snanmeanpn","2DC":"@stdlib/stats/strided/snanmeanwd","2DD":"@stdlib/stats-strided-snanmeanwd","2ua":"@stdlib/stats/strided/snanmidrange","2ub":"@stdlib/stats-strided-snanmidrange","2DE":"@stdlib/stats/strided/snanmin","2DF":"@stdlib/stats-strided-snanmin","2DG":"@stdlib/stats/strided/snanminabs","2DH":"@stdlib/stats-strided-snanminabs","2K6":"@stdlib/stats/strided/snanmskmax","2K7":"@stdlib/stats-strided-snanmskmax","2uc":"@stdlib/stats/strided/snanmskmaxabs","2ud":"@stdlib/stats-strided-snanmskmaxabs","2ue":"@stdlib/stats/strided/snanmskmidrange","2uf":"@stdlib/stats-strided-snanmskmidrange","2K8":"@stdlib/stats/strided/snanmskmin","2K9":"@stdlib/stats-strided-snanmskmin","2ug":"@stdlib/stats/strided/snanmskminabs","2uh":"@stdlib/stats-strided-snanmskminabs","2KA":"@stdlib/stats/strided/snanmskrange","2KB":"@stdlib/stats-strided-snanmskrange","2DI":"@stdlib/stats/strided/snanrange","2DJ":"@stdlib/stats-strided-snanrange","2DK":"@stdlib/stats/strided/srange","2DL":"@stdlib/stats-strided-srange","2ui":"@stdlib/stats/strided/srangeabs","2uj":"@stdlib/stats-strided-srangeabs","2My":"@stdlib/stats/strided/sstdev","2Mz":"@stdlib/stats-strided-sstdev","2DM":"@stdlib/stats/strided/sstdevch","2DN":"@stdlib/stats-strided-sstdevch","2DO":"@stdlib/stats/strided/sstdevpn","2DP":"@stdlib/stats-strided-sstdevpn","2DQ":"@stdlib/stats/strided/sstdevtk","2DR":"@stdlib/stats-strided-sstdevtk","2Vw":"@stdlib/stats/strided/sstdevwd","2Vx":"@stdlib/stats-strided-sstdevwd","2EI":"@stdlib/stats/strided/sstdevyc","2EJ":"@stdlib/stats-strided-sstdevyc","2RA":"@stdlib/stats/strided/stdev","2RB":"@stdlib/stats-strided-stdev","2RC":"@stdlib/stats/strided/stdevch","2RD":"@stdlib/stats-strided-stdevch","2RE":"@stdlib/stats/strided/stdevpn","2RF":"@stdlib/stats-strided-stdevpn","2RG":"@stdlib/stats/strided/stdevtk","2RH":"@stdlib/stats-strided-stdevtk","2RI":"@stdlib/stats/strided/stdevwd","2RJ":"@stdlib/stats-strided-stdevwd","2RK":"@stdlib/stats/strided/stdevyc","2RL":"@stdlib/stats-strided-stdevyc","2N0":"@stdlib/stats/strided/svariance","2N1":"@stdlib/stats-strided-svariance","2EK":"@stdlib/stats/strided/svariancech","2EL":"@stdlib/stats-strided-svariancech","2EM":"@stdlib/stats/strided/svariancepn","2EN":"@stdlib/stats-strided-svariancepn","2EO":"@stdlib/stats/strided/svariancetk","2EP":"@stdlib/stats-strided-svariancetk","2N2":"@stdlib/stats/strided/svariancewd","2N3":"@stdlib/stats-strided-svariancewd","2EQ":"@stdlib/stats/strided/svarianceyc","2ER":"@stdlib/stats-strided-svarianceyc","2N4":"@stdlib/stats/strided/sztest","2N5":"@stdlib/stats-strided-sztest","2RM":"@stdlib/stats/strided/sztest2","2RN":"@stdlib/stats-strided-sztest2","2RO":"@stdlib/stats/strided/variance","2RP":"@stdlib/stats-strided-variance","2RQ":"@stdlib/stats/strided/variancech","2RR":"@stdlib/stats-strided-variancech","2RS":"@stdlib/stats/strided/variancepn","2RT":"@stdlib/stats-strided-variancepn","2RU":"@stdlib/stats/strided/variancetk","2RV":"@stdlib/stats-strided-variancetk","2RW":"@stdlib/stats/strided/variancewd","2RX":"@stdlib/stats-strided-variancewd","2RY":"@stdlib/stats/strided/varianceyc","2RZ":"@stdlib/stats-strided-varianceyc","2GY":"@stdlib/stats/strided/wasm/dmeanors","2GZ":"@stdlib/stats-strided-wasm-dmeanors","2Yq":"@stdlib/stats/strided/wasm/dmeanpw","2Yr":"@stdlib/stats-strided-wasm-dmeanpw","2KC":"@stdlib/stats/strided/wasm/dmeanwd","2KD":"@stdlib/stats-strided-wasm-dmeanwd","2WK":"@stdlib/stats/strided/wasm/dnanvariancewd","2WL":"@stdlib/stats-strided-wasm-dnanvariancewd","2N6":"@stdlib/stats/strided/ztest","2N7":"@stdlib/stats-strided-ztest","2Ra":"@stdlib/stats/strided/ztest2","2Rb":"@stdlib/stats-strided-ztest2","1Lq":"@stdlib/stats/ttest","1Lr":"@stdlib/stats-ttest","1Ls":"@stdlib/stats/ttest2","1Lt":"@stdlib/stats-ttest2","1Lu":"@stdlib/stats/vartest","1Lv":"@stdlib/stats-vartest","1Lw":"@stdlib/stats/wilcoxon","1Lx":"@stdlib/stats-wilcoxon","1Ly":"@stdlib/stats/ztest","1Lz":"@stdlib/stats-ztest","1M0":"@stdlib/stats/ztest2","1M1":"@stdlib/stats-ztest2","1M2":"@stdlib/streams/node/debug-sink","1M3":"@stdlib/streams-node-debug-sink","1M4":"@stdlib/streams/node/debug","1M5":"@stdlib/streams-node-debug","1M6":"@stdlib/streams/node/empty","1M7":"@stdlib/streams-node-empty","1M8":"@stdlib/streams/node/from-array","1M9":"@stdlib/streams-node-from-array","1MA":"@stdlib/streams/node/from-circular-array","1MB":"@stdlib/streams-node-from-circular-array","1MC":"@stdlib/streams/node/from-constant","1MD":"@stdlib/streams-node-from-constant","1ME":"@stdlib/streams/node/from-iterator","1MF":"@stdlib/streams-node-from-iterator","1MG":"@stdlib/streams/node/from-strided-array","1MH":"@stdlib/streams-node-from-strided-array","1MI":"@stdlib/streams/node/inspect-sink","1MJ":"@stdlib/streams-node-inspect-sink","1MK":"@stdlib/streams/node/inspect","1ML":"@stdlib/streams-node-inspect","1MM":"@stdlib/streams/node/join","1MN":"@stdlib/streams-node-join","1MO":"@stdlib/streams/node","1MP":"@stdlib/streams-node","1MQ":"@stdlib/streams/node/split","1MR":"@stdlib/streams-node-split","1MS":"@stdlib/streams/node/stderr","1MT":"@stdlib/streams-node-stderr","1MU":"@stdlib/streams/node/stdin","1MV":"@stdlib/streams-node-stdin","1MW":"@stdlib/streams/node/stdout","1MX":"@stdlib/streams-node-stdout","1MY":"@stdlib/streams/node/transform","1MZ":"@stdlib/streams-node-transform","1Mb":"@stdlib/streams","1Mc":"@stdlib/strided/base/binary-addon-dispatch","1Md":"@stdlib/strided-base-binary-addon-dispatch","1Me":"@stdlib/strided/base/binary-dtype-signatures","1Mf":"@stdlib/strided-base-binary-dtype-signatures","1Mg":"@stdlib/strided/base/binary-signature-callbacks","1Mh":"@stdlib/strided-base-binary-signature-callbacks","1Mi":"@stdlib/strided/base/binary","1Mj":"@stdlib/strided-base-binary","1Mk":"@stdlib/strided/base/cmap","1Ml":"@stdlib/strided-base-cmap","1Mm":"@stdlib/strided/base/dmap","1Mn":"@stdlib/strided-base-dmap","1Mo":"@stdlib/strided/base/dmap2","1Mp":"@stdlib/strided-base-dmap2","1Mq":"@stdlib/strided/base/dmskmap","1Mr":"@stdlib/strided-base-dmskmap","1Ms":"@stdlib/strided/base/dmskmap2","1Mt":"@stdlib/strided-base-dmskmap2","1Mu":"@stdlib/strided/base/dtype-enum2str","1Mv":"@stdlib/strided-base-dtype-enum2str","1Mw":"@stdlib/strided/base/dtype-resolve-enum","1Mx":"@stdlib/strided-base-dtype-resolve-enum","1My":"@stdlib/strided/base/dtype-resolve-str","1Mz":"@stdlib/strided-base-dtype-resolve-str","1N0":"@stdlib/strided/base/dtype-str2enum","1N1":"@stdlib/strided-base-dtype-str2enum","1N2":"@stdlib/strided/base/function-object","1N3":"@stdlib/strided-base-function-object","1N4":"@stdlib/strided/base/map-by","1N5":"@stdlib/strided-base-map-by","1N6":"@stdlib/strided/base/map-by2","1N7":"@stdlib/strided-base-map-by2","1N8":"@stdlib/strided/base/max-view-buffer-index","1N9":"@stdlib/strided-base-max-view-buffer-index","1NA":"@stdlib/strided/base/meta-data-props","1NB":"@stdlib/strided-base-meta-data-props","1NC":"@stdlib/strided/base/min-view-buffer-index","1ND":"@stdlib/strided-base-min-view-buffer-index","1fK":"@stdlib/strided/base/mskunary-addon-dispatch","1fL":"@stdlib/strided-base-mskunary-addon-dispatch","1fM":"@stdlib/strided/base/mskunary-dtype-signatures","1fN":"@stdlib/strided-base-mskunary-dtype-signatures","1fO":"@stdlib/strided/base/mskunary-signature-callbacks","1fP":"@stdlib/strided-base-mskunary-signature-callbacks","1NE":"@stdlib/strided/base/mskunary","1NF":"@stdlib/strided-base-mskunary","1fQ":"@stdlib/strided/base/nullary-addon-dispatch","1fR":"@stdlib/strided-base-nullary-addon-dispatch","1NG":"@stdlib/strided/base/nullary","1NH":"@stdlib/strided-base-nullary","1NI":"@stdlib/strided/base/offset-view","1NJ":"@stdlib/strided-base-offset-view","1NK":"@stdlib/strided/base","1NL":"@stdlib/strided-base","1NM":"@stdlib/strided/base/quaternary","1NN":"@stdlib/strided-base-quaternary","1NO":"@stdlib/strided/base/quinary","1NP":"@stdlib/strided-base-quinary","1w4":"@stdlib/strided/base/reinterpret-boolean","1w5":"@stdlib/strided-base-reinterpret-boolean","1s2":"@stdlib/strided/base/reinterpret-complex","1s3":"@stdlib/strided-base-reinterpret-complex","1NQ":"@stdlib/strided/base/reinterpret-complex128","1NR":"@stdlib/strided-base-reinterpret-complex128","1NS":"@stdlib/strided/base/reinterpret-complex64","1NT":"@stdlib/strided-base-reinterpret-complex64","2uk":"@stdlib/strided/base/reinterpret-float16","2ul":"@stdlib/strided-base-reinterpret-float16","1NU":"@stdlib/strided/base/smap","1NV":"@stdlib/strided-base-smap","1NW":"@stdlib/strided/base/smap2","1NX":"@stdlib/strided-base-smap2","1NY":"@stdlib/strided/base/smskmap","1NZ":"@stdlib/strided-base-smskmap","1Na":"@stdlib/strided/base/smskmap2","1Nb":"@stdlib/strided-base-smskmap2","1xU":"@stdlib/strided/base/stride2offset","1xV":"@stdlib/strided-base-stride2offset","1Nc":"@stdlib/strided/base/ternary","1Nd":"@stdlib/strided-base-ternary","1Ne":"@stdlib/strided/base/unary-addon-dispatch","1Nf":"@stdlib/strided-base-unary-addon-dispatch","1fS":"@stdlib/strided/base/unary-by","1fT":"@stdlib/strided-base-unary-by","1fU":"@stdlib/strided/base/unary-dtype-signatures","1fV":"@stdlib/strided-base-unary-dtype-signatures","1fW":"@stdlib/strided/base/unary-signature-callbacks","1fX":"@stdlib/strided-base-unary-signature-callbacks","1Ng":"@stdlib/strided/base/unary","1Nh":"@stdlib/strided-base-unary","21A":"@stdlib/strided/base/write-dataview","21B":"@stdlib/strided-base-write-dataview","1Ni":"@stdlib/strided/base/zmap","1Nj":"@stdlib/strided-base-zmap","1Nk":"@stdlib/strided/common","1Nl":"@stdlib/strided-common","1fY":"@stdlib/strided/dispatch-by","1fZ":"@stdlib/strided-dispatch-by","1Nm":"@stdlib/strided/dispatch","1Nn":"@stdlib/strided-dispatch","1No":"@stdlib/strided/dtypes","1Np":"@stdlib/strided-dtypes","1Nq":"@stdlib/strided/napi/addon-arguments","1Nr":"@stdlib/strided-napi-addon-arguments","1Ns":"@stdlib/strided/napi/binary","1Nt":"@stdlib/strided-napi-binary","1Nu":"@stdlib/strided/napi/cmap","1Nv":"@stdlib/strided-napi-cmap","1Nw":"@stdlib/strided/napi/dmap","1Nx":"@stdlib/strided-napi-dmap","1Ny":"@stdlib/strided/napi/dmap2","1Nz":"@stdlib/strided-napi-dmap2","1O0":"@stdlib/strided/napi/dmskmap","1O1":"@stdlib/strided-napi-dmskmap","1O2":"@stdlib/strided/napi/dmskmap2","1O3":"@stdlib/strided-napi-dmskmap2","1O4":"@stdlib/strided/napi/mskunary","1O5":"@stdlib/strided-napi-mskunary","1fa":"@stdlib/strided/napi/nullary","1fb":"@stdlib/strided-napi-nullary","1O6":"@stdlib/strided/napi","1O7":"@stdlib/strided-napi","1O8":"@stdlib/strided/napi/smap","1O9":"@stdlib/strided-napi-smap","1OA":"@stdlib/strided/napi/smap2","1OB":"@stdlib/strided-napi-smap2","1OC":"@stdlib/strided/napi/smskmap","1OD":"@stdlib/strided-napi-smskmap","1OE":"@stdlib/strided/napi/smskmap2","1OF":"@stdlib/strided-napi-smskmap2","1OG":"@stdlib/strided/napi/unary","1OH":"@stdlib/strided-napi-unary","1OI":"@stdlib/strided/napi/zmap","1OJ":"@stdlib/strided-napi-zmap","1OL":"@stdlib/strided","1OM":"@stdlib/string/acronym","1ON":"@stdlib/string-acronym","1my":"@stdlib/string/base/altcase","1mz":"@stdlib/string-base-altcase","21C":"@stdlib/string/base/atob","21D":"@stdlib/string-base-atob","21m":"@stdlib/string/base/base64-to-uint8array","21n":"@stdlib/string-base-base64-to-uint8array","1fc":"@stdlib/string/base/camelcase","1fd":"@stdlib/string-base-camelcase","1fe":"@stdlib/string/base/capitalize","1ff":"@stdlib/string-base-capitalize","1fg":"@stdlib/string/base/code-point-at","1fh":"@stdlib/string-base-code-point-at","2Ys":"@stdlib/string/base/concat","2Yt":"@stdlib/string-base-concat","1fi":"@stdlib/string/base/constantcase","1fj":"@stdlib/string-base-constantcase","1n0":"@stdlib/string/base/distances/hamming","1n1":"@stdlib/string-base-distances-hamming","1fk":"@stdlib/string/base/distances/levenshtein","1fl":"@stdlib/string-base-distances-levenshtein","1fm":"@stdlib/string/base/distances","1fn":"@stdlib/string-base-distances","1fo":"@stdlib/string/base/dotcase","1fp":"@stdlib/string-base-dotcase","1fq":"@stdlib/string/base/ends-with","1fr":"@stdlib/string-base-ends-with","1fs":"@stdlib/string/base/first-code-point","1ft":"@stdlib/string-base-first-code-point","1fu":"@stdlib/string/base/first-grapheme-cluster","1fv":"@stdlib/string-base-first-grapheme-cluster","1fw":"@stdlib/string/base/first","1fx":"@stdlib/string-base-first","1vS":"@stdlib/string/base/for-each-code-point-right","1vT":"@stdlib/string-base-for-each-code-point-right","1fy":"@stdlib/string/base/for-each-code-point","1fz":"@stdlib/string-base-for-each-code-point","1g0":"@stdlib/string/base/for-each-grapheme-cluster","1g1":"@stdlib/string-base-for-each-grapheme-cluster","1sm":"@stdlib/string/base/for-each-right","1sn":"@stdlib/string-base-for-each-right","1g2":"@stdlib/string/base/for-each","1g3":"@stdlib/string-base-for-each","1OO":"@stdlib/string/base/format-interpolate","1OP":"@stdlib/string-base-format-interpolate","1OQ":"@stdlib/string/base/format-tokenize","1OR":"@stdlib/string-base-format-tokenize","1g4":"@stdlib/string/base/headercase","1g5":"@stdlib/string-base-headercase","1g6":"@stdlib/string/base/invcase","1g7":"@stdlib/string-base-invcase","1g8":"@stdlib/string/base/kebabcase","1g9":"@stdlib/string-base-kebabcase","1u0":"@stdlib/string/base/last-code-point","1u1":"@stdlib/string-base-last-code-point","1u2":"@stdlib/string/base/last-grapheme-cluster","1u3":"@stdlib/string-base-last-grapheme-cluster","1u4":"@stdlib/string/base/last","1u5":"@stdlib/string-base-last","1gA":"@stdlib/string/base/left-pad","1gB":"@stdlib/string-base-left-pad","1gC":"@stdlib/string/base/left-trim","1gD":"@stdlib/string-base-left-trim","1gE":"@stdlib/string/base/lowercase","1gF":"@stdlib/string-base-lowercase","1OS":"@stdlib/string/base","1OT":"@stdlib/string-base","1gG":"@stdlib/string/base/pascalcase","1gH":"@stdlib/string-base-pascalcase","1gI":"@stdlib/string/base/percent-encode","1gJ":"@stdlib/string-base-percent-encode","1gK":"@stdlib/string/base/remove-first-code-point","1gL":"@stdlib/string-base-remove-first-code-point","1gM":"@stdlib/string/base/remove-first-grapheme-cluster","1gN":"@stdlib/string-base-remove-first-grapheme-cluster","1gO":"@stdlib/string/base/remove-first","1gP":"@stdlib/string-base-remove-first","1jI":"@stdlib/string/base/remove-last-code-point","1jJ":"@stdlib/string-base-remove-last-code-point","1jK":"@stdlib/string/base/remove-last-grapheme-cluster","1jL":"@stdlib/string-base-remove-last-grapheme-cluster","1jM":"@stdlib/string/base/remove-last","1jN":"@stdlib/string-base-remove-last","1gQ":"@stdlib/string/base/repeat","1gR":"@stdlib/string-base-repeat","1so":"@stdlib/string/base/replace-after-last","1sp":"@stdlib/string-base-replace-after-last","1sq":"@stdlib/string/base/replace-after","1sr":"@stdlib/string-base-replace-after","1ss":"@stdlib/string/base/replace-before-last","1st":"@stdlib/string-base-replace-before-last","1gS":"@stdlib/string/base/replace-before","1gT":"@stdlib/string-base-replace-before","1gU":"@stdlib/string/base/replace","1gV":"@stdlib/string-base-replace","1lW":"@stdlib/string/base/reverse-code-points","1lX":"@stdlib/string-base-reverse-code-points","1lY":"@stdlib/string/base/reverse-grapheme-clusters","1lZ":"@stdlib/string-base-reverse-grapheme-clusters","1la":"@stdlib/string/base/reverse","1lb":"@stdlib/string-base-reverse","1gW":"@stdlib/string/base/right-pad","1gX":"@stdlib/string-base-right-pad","1gY":"@stdlib/string/base/right-trim","1gZ":"@stdlib/string-base-right-trim","2ES":"@stdlib/string/base/slice-code-points","2ET":"@stdlib/string-base-slice-code-points","2DS":"@stdlib/string/base/slice-grapheme-clusters","2DT":"@stdlib/string-base-slice-grapheme-clusters","2DU":"@stdlib/string/base/slice","2DV":"@stdlib/string-base-slice","1ga":"@stdlib/string/base/snakecase","1gb":"@stdlib/string-base-snakecase","1gc":"@stdlib/string/base/startcase","1gd":"@stdlib/string-base-startcase","1ge":"@stdlib/string/base/starts-with","1gf":"@stdlib/string-base-starts-with","1u6":"@stdlib/string/base/stickycase","1u7":"@stdlib/string-base-stickycase","1gg":"@stdlib/string/base/trim","1gh":"@stdlib/string-base-trim","1lc":"@stdlib/string/base/truncate-middle","1ld":"@stdlib/string-base-truncate-middle","1gi":"@stdlib/string/base/uncapitalize","1gj":"@stdlib/string-base-uncapitalize","1gk":"@stdlib/string/base/uppercase","1gl":"@stdlib/string-base-uppercase","1OU":"@stdlib/string/camelcase","1OV":"@stdlib/string-camelcase","1OW":"@stdlib/string/capitalize","1OX":"@stdlib/string-capitalize","1OY":"@stdlib/string/code-point-at","1OZ":"@stdlib/string-code-point-at","1Oa":"@stdlib/string/constantcase","1Ob":"@stdlib/string-constantcase","1gm":"@stdlib/string/dotcase","1gn":"@stdlib/string-dotcase","1Oc":"@stdlib/string/ends-with","1Od":"@stdlib/string-ends-with","1go":"@stdlib/string/first","1gp":"@stdlib/string-first","1gq":"@stdlib/string/for-each","1gr":"@stdlib/string-for-each","1Oe":"@stdlib/string/format","1Of":"@stdlib/string-format","1Og":"@stdlib/string/from-code-point","1Oh":"@stdlib/string-from-code-point","1gs":"@stdlib/string/headercase","1gt":"@stdlib/string-headercase","1Oi":"@stdlib/string/kebabcase","1Oj":"@stdlib/string-kebabcase","1vU":"@stdlib/string/last","1vV":"@stdlib/string-last","1Ok":"@stdlib/string/left-pad","1Ol":"@stdlib/string-left-pad","1Om":"@stdlib/string/left-trim-n","1On":"@stdlib/string-left-trim-n","1Oo":"@stdlib/string/left-trim","1Op":"@stdlib/string-left-trim","1Oq":"@stdlib/string/lowercase","1Or":"@stdlib/string-lowercase","1le":"@stdlib/string/next-code-point-index","1lf":"@stdlib/string-next-code-point-index","1Os":"@stdlib/string/next-grapheme-cluster-break","1Ot":"@stdlib/string-next-grapheme-cluster-break","2DW":"@stdlib/string/num-code-points","2DX":"@stdlib/string-num-code-points","1Ou":"@stdlib/string/num-grapheme-clusters","1Ov":"@stdlib/string-num-grapheme-clusters","1gu":"@stdlib/string/num2words","1gv":"@stdlib/string-num2words","1Ox":"@stdlib/string","1Oy":"@stdlib/string/pad","1Oz":"@stdlib/string-pad","1P0":"@stdlib/string/pascalcase","1P1":"@stdlib/string-pascalcase","1P2":"@stdlib/string/percent-encode","1P3":"@stdlib/string-percent-encode","1P4":"@stdlib/string/prev-grapheme-cluster-break","1P5":"@stdlib/string-prev-grapheme-cluster-break","1P6":"@stdlib/string/remove-first","1P7":"@stdlib/string-remove-first","1P8":"@stdlib/string/remove-last","1P9":"@stdlib/string-remove-last","1PA":"@stdlib/string/remove-punctuation","1PB":"@stdlib/string-remove-punctuation","1PC":"@stdlib/string/remove-utf8-bom","1PD":"@stdlib/string-remove-utf8-bom","1PE":"@stdlib/string/remove-words","1PF":"@stdlib/string-remove-words","1PG":"@stdlib/string/repeat","1PH":"@stdlib/string-repeat","1gw":"@stdlib/string/replace-before","1gx":"@stdlib/string-replace-before","1PI":"@stdlib/string/replace","1PJ":"@stdlib/string-replace","1PK":"@stdlib/string/reverse","1PL":"@stdlib/string-reverse","1PM":"@stdlib/string/right-pad","1PN":"@stdlib/string-right-pad","1PO":"@stdlib/string/right-trim-n","1PP":"@stdlib/string-right-trim-n","1PQ":"@stdlib/string/right-trim","1PR":"@stdlib/string-right-trim","1PS":"@stdlib/string/snakecase","1PT":"@stdlib/string-snakecase","1PU":"@stdlib/string/split-grapheme-clusters","1PV":"@stdlib/string-split-grapheme-clusters","1PW":"@stdlib/string/startcase","1PX":"@stdlib/string-startcase","1PY":"@stdlib/string/starts-with","1PZ":"@stdlib/string-starts-with","1Pa":"@stdlib/string/substring-after-last","1Pb":"@stdlib/string-substring-after-last","1Pc":"@stdlib/string/substring-after","1Pd":"@stdlib/string-substring-after","1Pe":"@stdlib/string/substring-before-last","1Pf":"@stdlib/string-substring-before-last","1Pg":"@stdlib/string/substring-before","1Ph":"@stdlib/string-substring-before","1gy":"@stdlib/string/to-grapheme-cluster-iterator-right","1gz":"@stdlib/string-to-grapheme-cluster-iterator-right","1h0":"@stdlib/string/to-grapheme-cluster-iterator","1h1":"@stdlib/string-to-grapheme-cluster-iterator","1u8":"@stdlib/string/to-well-formed","1u9":"@stdlib/string-to-well-formed","1Pi":"@stdlib/string/tools/grapheme-cluster-break","1Pj":"@stdlib/string-tools-grapheme-cluster-break","1Pk":"@stdlib/string/tools","1Pl":"@stdlib/string-tools","1Pm":"@stdlib/string/trim","1Pn":"@stdlib/string-trim","1Po":"@stdlib/string/truncate-middle","1Pp":"@stdlib/string-truncate-middle","1Pq":"@stdlib/string/truncate","1Pr":"@stdlib/string-truncate","1Ps":"@stdlib/string/uncapitalize","1Pt":"@stdlib/string-uncapitalize","1Pu":"@stdlib/string/uppercase","1Pv":"@stdlib/string-uppercase","1Pw":"@stdlib/string/utf16-to-utf8-array","1Px":"@stdlib/string-utf16-to-utf8-array","1Py":"@stdlib/symbol/async-iterator","1Pz":"@stdlib/symbol-async-iterator","1Q0":"@stdlib/symbol/ctor","1Q1":"@stdlib/symbol-ctor","2YM":"@stdlib/symbol/has-instance","2YN":"@stdlib/symbol-has-instance","2XW":"@stdlib/symbol/is-concat-spreadable","2XX":"@stdlib/symbol-is-concat-spreadable","1Q2":"@stdlib/symbol/iterator","1Q3":"@stdlib/symbol-iterator","1Q5":"@stdlib/symbol","2Yu":"@stdlib/symbol/replace","2Yv":"@stdlib/symbol-replace","2YO":"@stdlib/symbol/to-primitive","2YP":"@stdlib/symbol-to-primitive","1h2":"@stdlib/time/base","1h3":"@stdlib/time-base","1h4":"@stdlib/time/base/parse-duration","1h5":"@stdlib/time-base-parse-duration","1h6":"@stdlib/time/current-year","1h7":"@stdlib/time-current-year","1Q6":"@stdlib/time/day-of-quarter","1Q7":"@stdlib/time-day-of-quarter","1Q8":"@stdlib/time/day-of-year","1Q9":"@stdlib/time-day-of-year","1QA":"@stdlib/time/days-in-month","1QB":"@stdlib/time-days-in-month","1QC":"@stdlib/time/days-in-year","1QD":"@stdlib/time-days-in-year","1h8":"@stdlib/time/duration2ms","1h9":"@stdlib/time-duration2ms","1QE":"@stdlib/time/hours-in-month","1QF":"@stdlib/time-hours-in-month","1QG":"@stdlib/time/hours-in-year","1QH":"@stdlib/time-hours-in-year","1QI":"@stdlib/time/iso-weeks-in-year","1QJ":"@stdlib/time-iso-weeks-in-year","1QK":"@stdlib/time/minutes-in-month","1QL":"@stdlib/time-minutes-in-month","1QM":"@stdlib/time/minutes-in-year","1QN":"@stdlib/time-minutes-in-year","1hA":"@stdlib/time/ms2duration","1hB":"@stdlib/time-ms2duration","1QO":"@stdlib/time/now","1QP":"@stdlib/time-now","1QR":"@stdlib/time","1QS":"@stdlib/time/quarter-of-year","1QT":"@stdlib/time-quarter-of-year","1QU":"@stdlib/time/seconds-in-month","1QV":"@stdlib/time-seconds-in-month","1QW":"@stdlib/time/seconds-in-year","1QX":"@stdlib/time-seconds-in-year","1QY":"@stdlib/time/tic","1QZ":"@stdlib/time-tic","1Qa":"@stdlib/time/toc","1Qb":"@stdlib/time-toc","1Qd":"@stdlib/types","1Qe":"@stdlib/utils/any-by-right","1Qf":"@stdlib/utils-any-by-right","1Qg":"@stdlib/utils/any-by","1Qh":"@stdlib/utils-any-by","1Qi":"@stdlib/utils/any","1Qj":"@stdlib/utils-any","1Qk":"@stdlib/utils/append","1Ql":"@stdlib/utils-append","1Qm":"@stdlib/utils/argument-function","1Qn":"@stdlib/utils-argument-function","1Qo":"@stdlib/utils/async/any-by-right","1Qp":"@stdlib/utils-async-any-by-right","1Qq":"@stdlib/utils/async/any-by","1Qr":"@stdlib/utils-async-any-by","1Qs":"@stdlib/utils/async/bifurcate-by","1Qt":"@stdlib/utils-async-bifurcate-by","1Qu":"@stdlib/utils/async/compose","1Qv":"@stdlib/utils-async-compose","1Qw":"@stdlib/utils/async/count-by","1Qx":"@stdlib/utils-async-count-by","1Qy":"@stdlib/utils/async/do-until","1Qz":"@stdlib/utils-async-do-until","1R0":"@stdlib/utils/async/do-while","1R1":"@stdlib/utils-async-do-while","1R2":"@stdlib/utils/async/every-by-right","1R3":"@stdlib/utils-async-every-by-right","1R4":"@stdlib/utils/async/every-by","1R5":"@stdlib/utils-async-every-by","1R6":"@stdlib/utils/async/for-each-right","1R7":"@stdlib/utils-async-for-each-right","1R8":"@stdlib/utils/async/for-each","1R9":"@stdlib/utils-async-for-each","1RA":"@stdlib/utils/async/function-sequence","1RB":"@stdlib/utils-async-function-sequence","1RC":"@stdlib/utils/async/group-by","1RD":"@stdlib/utils-async-group-by","1RE":"@stdlib/utils/async/if-else","1RF":"@stdlib/utils-async-if-else","1RG":"@stdlib/utils/async/if-then","1RH":"@stdlib/utils-async-if-then","1RI":"@stdlib/utils/async/inmap-right","1RJ":"@stdlib/utils-async-inmap-right","1RK":"@stdlib/utils/async/inmap","1RL":"@stdlib/utils-async-inmap","1RM":"@stdlib/utils/async/map-function","1RN":"@stdlib/utils-async-map-function","1RO":"@stdlib/utils/async/map-keys","1RP":"@stdlib/utils-async-map-keys","1RQ":"@stdlib/utils/async/map-values","1RR":"@stdlib/utils-async-map-values","1RS":"@stdlib/utils/async/none-by-right","1RT":"@stdlib/utils-async-none-by-right","1RU":"@stdlib/utils/async/none-by","1RV":"@stdlib/utils-async-none-by","1RW":"@stdlib/utils/async","1RX":"@stdlib/utils-async","1xW":"@stdlib/utils/async/parallel","1xX":"@stdlib/utils-async-parallel","1RY":"@stdlib/utils/async/reduce-right","1RZ":"@stdlib/utils-async-reduce-right","1Ra":"@stdlib/utils/async/reduce","1Rb":"@stdlib/utils-async-reduce","1Rc":"@stdlib/utils/async/series-waterfall","1Rd":"@stdlib/utils-async-series-waterfall","1Re":"@stdlib/utils/async/some-by-right","1Rf":"@stdlib/utils-async-some-by-right","1Rg":"@stdlib/utils/async/some-by","1Rh":"@stdlib/utils-async-some-by","1Ri":"@stdlib/utils/async/tabulate-by","1Rj":"@stdlib/utils-async-tabulate-by","1Rk":"@stdlib/utils/async/try-catch","1Rl":"@stdlib/utils-async-try-catch","1Rm":"@stdlib/utils/async/try-then","1Rn":"@stdlib/utils-async-try-then","1Ro":"@stdlib/utils/async/until","1Rp":"@stdlib/utils-async-until","1Rq":"@stdlib/utils/async/while","1Rr":"@stdlib/utils-async-while","1Rs":"@stdlib/utils/bifurcate-by","1Rt":"@stdlib/utils-bifurcate-by","1Ry":"@stdlib/utils/bifurcate","1Rz":"@stdlib/utils-bifurcate","1SA":"@stdlib/utils/compose","1SB":"@stdlib/utils-compose","1SC":"@stdlib/utils/constant-function","1SD":"@stdlib/utils-constant-function","1SE":"@stdlib/utils/constructor-name","1SF":"@stdlib/utils-constructor-name","1SG":"@stdlib/utils/convert-path","1SH":"@stdlib/utils-convert-path","1SI":"@stdlib/utils/copy","1SJ":"@stdlib/utils-copy","1SK":"@stdlib/utils/count-by","1SL":"@stdlib/utils-count-by","1SM":"@stdlib/utils/curry-right","1SN":"@stdlib/utils-curry-right","1SO":"@stdlib/utils/curry","1SP":"@stdlib/utils-curry","1hC":"@stdlib/utils/decorate-after","1hD":"@stdlib/utils-decorate-after","1SS":"@stdlib/utils/deep-pluck","1ST":"@stdlib/utils-deep-pluck","1SW":"@stdlib/utils/define-configurable-read-only-accessor","1SX":"@stdlib/utils-define-configurable-read-only-accessor","1SY":"@stdlib/utils/define-configurable-read-only-property","1SZ":"@stdlib/utils-define-configurable-read-only-property","1Sa":"@stdlib/utils/define-configurable-read-write-accessor","1Sb":"@stdlib/utils-define-configurable-read-write-accessor","1Sc":"@stdlib/utils/define-configurable-write-only-accessor","1Sd":"@stdlib/utils-define-configurable-write-only-accessor","1Se":"@stdlib/utils/define-memoized-configurable-read-only-property","1Sf":"@stdlib/utils-define-memoized-configurable-read-only-property","1Sg":"@stdlib/utils/define-memoized-property","1Sh":"@stdlib/utils-define-memoized-property","1Si":"@stdlib/utils/define-memoized-read-only-property","1Sj":"@stdlib/utils-define-memoized-read-only-property","1Sk":"@stdlib/utils/define-nonenumerable-property","1Sl":"@stdlib/utils-define-nonenumerable-property","1Sm":"@stdlib/utils/define-nonenumerable-read-only-accessor","1Sn":"@stdlib/utils-define-nonenumerable-read-only-accessor","1So":"@stdlib/utils/define-nonenumerable-read-only-property","1Sp":"@stdlib/utils-define-nonenumerable-read-only-property","1Sq":"@stdlib/utils/define-nonenumerable-read-write-accessor","1Sr":"@stdlib/utils-define-nonenumerable-read-write-accessor","1Ss":"@stdlib/utils/define-nonenumerable-write-only-accessor","1St":"@stdlib/utils-define-nonenumerable-write-only-accessor","1Su":"@stdlib/utils/define-properties","1Sv":"@stdlib/utils-define-properties","1Sw":"@stdlib/utils/define-property","1Sx":"@stdlib/utils-define-property","1Sy":"@stdlib/utils/define-read-only-accessor","1Sz":"@stdlib/utils-define-read-only-accessor","1T0":"@stdlib/utils/define-read-only-property","1T1":"@stdlib/utils-define-read-only-property","1T2":"@stdlib/utils/define-read-write-accessor","1T3":"@stdlib/utils-define-read-write-accessor","1T4":"@stdlib/utils/define-write-only-accessor","1T5":"@stdlib/utils-define-write-only-accessor","1T6":"@stdlib/utils/dirname","1T7":"@stdlib/utils-dirname","1T8":"@stdlib/utils/do-until-each-right","1T9":"@stdlib/utils-do-until-each-right","1TA":"@stdlib/utils/do-until-each","1TB":"@stdlib/utils-do-until-each","1TC":"@stdlib/utils/do-until","1TD":"@stdlib/utils-do-until","1TE":"@stdlib/utils/do-while-each-right","1TF":"@stdlib/utils-do-while-each-right","1TG":"@stdlib/utils/do-while-each","1TH":"@stdlib/utils-do-while-each","1TI":"@stdlib/utils/do-while","1TJ":"@stdlib/utils-do-while","1hE":"@stdlib/utils/dsv/base","1hF":"@stdlib/utils-dsv-base","1hG":"@stdlib/utils/dsv/base/parse","1hH":"@stdlib/utils-dsv-base-parse","1hI":"@stdlib/utils/dsv","1hJ":"@stdlib/utils-dsv","1TM":"@stdlib/utils/entries-in","1TN":"@stdlib/utils-entries-in","1TO":"@stdlib/utils/entries","1TP":"@stdlib/utils-entries","1TQ":"@stdlib/utils/enumerable-properties-in","1TR":"@stdlib/utils-enumerable-properties-in","1TS":"@stdlib/utils/enumerable-properties","1TT":"@stdlib/utils-enumerable-properties","1TU":"@stdlib/utils/enumerable-property-symbols-in","1TV":"@stdlib/utils-enumerable-property-symbols-in","1TW":"@stdlib/utils/enumerable-property-symbols","1TX":"@stdlib/utils-enumerable-property-symbols","1TY":"@stdlib/utils/escape-regexp-string","1TZ":"@stdlib/utils-escape-regexp-string","1Ta":"@stdlib/utils/eval","1Tb":"@stdlib/utils-eval","1Tc":"@stdlib/utils/every-by-right","1Td":"@stdlib/utils-every-by-right","1Te":"@stdlib/utils/every-by","1Tf":"@stdlib/utils-every-by","1Tg":"@stdlib/utils/every","1Th":"@stdlib/utils-every","1Ti":"@stdlib/utils/extname","1Tj":"@stdlib/utils-extname","1Tm":"@stdlib/utils/filter-arguments","1Tn":"@stdlib/utils-filter-arguments","1To":"@stdlib/utils/find","1Tp":"@stdlib/utils-find","1Tq":"@stdlib/utils/flatten-array","1Tr":"@stdlib/utils-flatten-array","1Ts":"@stdlib/utils/flatten-object","1Tt":"@stdlib/utils-flatten-object","1Tu":"@stdlib/utils/for-each-right","1Tv":"@stdlib/utils-for-each-right","1Tw":"@stdlib/utils/for-each","1Tx":"@stdlib/utils-for-each","1U2":"@stdlib/utils/from-entries","1U3":"@stdlib/utils-from-entries","1U4":"@stdlib/utils/function-name","1U5":"@stdlib/utils-function-name","1U6":"@stdlib/utils/function-sequence","1U7":"@stdlib/utils-function-sequence","1U8":"@stdlib/utils/get-prototype-of","1U9":"@stdlib/utils-get-prototype-of","1UA":"@stdlib/utils/global","1UB":"@stdlib/utils-global","1UC":"@stdlib/utils/group-by","1UD":"@stdlib/utils-group-by","1UE":"@stdlib/utils/group-in","1UF":"@stdlib/utils-group-in","1UG":"@stdlib/utils/group-own","1UH":"@stdlib/utils-group-own","1UI":"@stdlib/utils/group","1UJ":"@stdlib/utils-group","1UK":"@stdlib/utils/identity-function","1UL":"@stdlib/utils-identity-function","1UM":"@stdlib/utils/if-else","1UN":"@stdlib/utils-if-else","1UO":"@stdlib/utils/if-then","1UP":"@stdlib/utils-if-then","1UQ":"@stdlib/utils/index-of","1UR":"@stdlib/utils-index-of","1US":"@stdlib/utils/inherit","1UT":"@stdlib/utils-inherit","1UU":"@stdlib/utils/inherited-enumerable-properties","1UV":"@stdlib/utils-inherited-enumerable-properties","1UW":"@stdlib/utils/inherited-enumerable-property-symbols","1UX":"@stdlib/utils-inherited-enumerable-property-symbols","1UY":"@stdlib/utils/inherited-keys","1UZ":"@stdlib/utils-inherited-keys","1Ua":"@stdlib/utils/inherited-nonenumerable-properties","1Ub":"@stdlib/utils-inherited-nonenumerable-properties","1Uc":"@stdlib/utils/inherited-nonenumerable-property-names","1Ud":"@stdlib/utils-inherited-nonenumerable-property-names","1Ue":"@stdlib/utils/inherited-nonenumerable-property-symbols","1Uf":"@stdlib/utils-inherited-nonenumerable-property-symbols","1Ug":"@stdlib/utils/inherited-properties","1Uh":"@stdlib/utils-inherited-properties","1Ui":"@stdlib/utils/inherited-property-descriptor","1Uj":"@stdlib/utils-inherited-property-descriptor","1Uk":"@stdlib/utils/inherited-property-descriptors","1Ul":"@stdlib/utils-inherited-property-descriptors","1Um":"@stdlib/utils/inherited-property-names","1Un":"@stdlib/utils-inherited-property-names","1Uo":"@stdlib/utils/inherited-property-symbols","1Up":"@stdlib/utils-inherited-property-symbols","1Uq":"@stdlib/utils/inherited-writable-properties","1Ur":"@stdlib/utils-inherited-writable-properties","1Us":"@stdlib/utils/inherited-writable-property-names","1Ut":"@stdlib/utils-inherited-writable-property-names","1Uu":"@stdlib/utils/inherited-writable-property-symbols","1Uv":"@stdlib/utils-inherited-writable-property-symbols","1Uw":"@stdlib/utils/inmap-right","1Ux":"@stdlib/utils-inmap-right","1Uy":"@stdlib/utils/inmap","1Uz":"@stdlib/utils-inmap","1V0":"@stdlib/utils/key-by-right","1V1":"@stdlib/utils-key-by-right","1V2":"@stdlib/utils/key-by","1V3":"@stdlib/utils-key-by","1V4":"@stdlib/utils/keys-in","1V5":"@stdlib/utils-keys-in","1V6":"@stdlib/utils/keys","1V7":"@stdlib/utils-keys","1V8":"@stdlib/utils/library-manifest","1V9":"@stdlib/utils-library-manifest","1VE":"@stdlib/utils/map-arguments","1VF":"@stdlib/utils-map-arguments","1VG":"@stdlib/utils/map-function","1VH":"@stdlib/utils-map-function","1VI":"@stdlib/utils/map-keys","1VJ":"@stdlib/utils-map-keys","1VK":"@stdlib/utils/map-reduce-right","1VL":"@stdlib/utils-map-reduce-right","1VM":"@stdlib/utils/map-reduce","1VN":"@stdlib/utils-map-reduce","1VO":"@stdlib/utils/map-right","1VP":"@stdlib/utils-map-right","1VQ":"@stdlib/utils/map-values","1VR":"@stdlib/utils-map-values","1VS":"@stdlib/utils/map","1VT":"@stdlib/utils-map","1VU":"@stdlib/utils/map2-right","1VV":"@stdlib/utils-map2-right","1VW":"@stdlib/utils/map2","1VX":"@stdlib/utils-map2","1VY":"@stdlib/utils/map2d","1VZ":"@stdlib/utils-map2d","1Va":"@stdlib/utils/map3d","1Vb":"@stdlib/utils-map3d","1Vc":"@stdlib/utils/map4d","1Vd":"@stdlib/utils-map4d","1Ve":"@stdlib/utils/map5d","1Vf":"@stdlib/utils-map5d","1Vg":"@stdlib/utils/mask-arguments","1Vh":"@stdlib/utils-mask-arguments","1Vi":"@stdlib/utils/memoize","1Vj":"@stdlib/utils-memoize","1Vk":"@stdlib/utils/merge","1Vl":"@stdlib/utils-merge","1Vq":"@stdlib/utils/nary-function","1Vr":"@stdlib/utils-nary-function","1Vs":"@stdlib/utils/native-class","1Vt":"@stdlib/utils-native-class","1Vu":"@stdlib/utils/next-tick","1Vv":"@stdlib/utils-next-tick","1Vw":"@stdlib/utils/none-by-right","1Vx":"@stdlib/utils-none-by-right","1Vy":"@stdlib/utils/none-by","1Vz":"@stdlib/utils-none-by","1W0":"@stdlib/utils/none","1W1":"@stdlib/utils-none","1W2":"@stdlib/utils/nonenumerable-properties-in","1W3":"@stdlib/utils-nonenumerable-properties-in","1W4":"@stdlib/utils/nonenumerable-properties","1W5":"@stdlib/utils-nonenumerable-properties","1W6":"@stdlib/utils/nonenumerable-property-names-in","1W7":"@stdlib/utils-nonenumerable-property-names-in","1W8":"@stdlib/utils/nonenumerable-property-names","1W9":"@stdlib/utils-nonenumerable-property-names","1WA":"@stdlib/utils/nonenumerable-property-symbols-in","1WB":"@stdlib/utils-nonenumerable-property-symbols-in","1WC":"@stdlib/utils/nonenumerable-property-symbols","1WD":"@stdlib/utils-nonenumerable-property-symbols","1WE":"@stdlib/utils/nonindex-keys","1WF":"@stdlib/utils-nonindex-keys","1WG":"@stdlib/utils/noop","1WH":"@stdlib/utils-noop","1WM":"@stdlib/utils/omit-by","1WN":"@stdlib/utils-omit-by","1WO":"@stdlib/utils/omit","1WP":"@stdlib/utils-omit","1WQ":"@stdlib/utils/open-url","1WR":"@stdlib/utils-open-url","1WT":"@stdlib/utils","1WU":"@stdlib/utils/papply-right","1WV":"@stdlib/utils-papply-right","1WW":"@stdlib/utils/papply","1WX":"@stdlib/utils-papply","1WY":"@stdlib/utils/parallel","1WZ":"@stdlib/utils-parallel","1Wa":"@stdlib/utils/parse-json","1Wb":"@stdlib/utils-parse-json","1uI":"@stdlib/utils/parse-ndjson","1uJ":"@stdlib/utils-parse-ndjson","1Wc":"@stdlib/utils/pick-arguments","1Wd":"@stdlib/utils-pick-arguments","1We":"@stdlib/utils/pick-by","1Wf":"@stdlib/utils-pick-by","1Wg":"@stdlib/utils/pick","1Wh":"@stdlib/utils-pick","1Wi":"@stdlib/utils/pluck","1Wj":"@stdlib/utils-pluck","1Wk":"@stdlib/utils/pop","1Wl":"@stdlib/utils-pop","1Wm":"@stdlib/utils/prepend","1Wn":"@stdlib/utils-prepend","1Wo":"@stdlib/utils/properties-in","1Wp":"@stdlib/utils-properties-in","1Wq":"@stdlib/utils/properties","1Wr":"@stdlib/utils-properties","1Ws":"@stdlib/utils/property-descriptor-in","1Wt":"@stdlib/utils-property-descriptor-in","1Wu":"@stdlib/utils/property-descriptor","1Wv":"@stdlib/utils-property-descriptor","1Ww":"@stdlib/utils/property-descriptors-in","1Wx":"@stdlib/utils-property-descriptors-in","1Wy":"@stdlib/utils/property-descriptors","1Wz":"@stdlib/utils-property-descriptors","1X0":"@stdlib/utils/property-names-in","1X1":"@stdlib/utils-property-names-in","1X2":"@stdlib/utils/property-names","1X3":"@stdlib/utils-property-names","1X4":"@stdlib/utils/property-symbols-in","1X5":"@stdlib/utils-property-symbols-in","1X6":"@stdlib/utils/property-symbols","1X7":"@stdlib/utils-property-symbols","1X8":"@stdlib/utils/push","1X9":"@stdlib/utils-push","1XA":"@stdlib/utils/real-max","1XB":"@stdlib/utils-real-max","1XC":"@stdlib/utils/real-min","1XD":"@stdlib/utils-real-min","1XE":"@stdlib/utils/reduce-right","1XF":"@stdlib/utils-reduce-right","1XG":"@stdlib/utils/reduce","1XH":"@stdlib/utils-reduce","1XI":"@stdlib/utils/reduce2d","1XJ":"@stdlib/utils-reduce2d","1XK":"@stdlib/utils/regexp-from-string","1XL":"@stdlib/utils-regexp-from-string","1XM":"@stdlib/utils/reject-arguments","1XN":"@stdlib/utils-reject-arguments","1XO":"@stdlib/utils/reorder-arguments","1XP":"@stdlib/utils-reorder-arguments","1XQ":"@stdlib/utils/reverse-arguments","1XR":"@stdlib/utils-reverse-arguments","1XS":"@stdlib/utils/safe-int-max","1XT":"@stdlib/utils-safe-int-max","1XU":"@stdlib/utils/safe-int-min","1XV":"@stdlib/utils-safe-int-min","1XW":"@stdlib/utils/shift","1XX":"@stdlib/utils-shift","1XY":"@stdlib/utils/size-of","1XZ":"@stdlib/utils-size-of","1Xa":"@stdlib/utils/some-by-right","1Xb":"@stdlib/utils-some-by-right","1Xc":"@stdlib/utils/some-by","1Xd":"@stdlib/utils-some-by","1Xe":"@stdlib/utils/some","1Xf":"@stdlib/utils-some","1Xi":"@stdlib/utils/tabulate-by","1Xj":"@stdlib/utils-tabulate-by","1Xk":"@stdlib/utils/tabulate","1Xl":"@stdlib/utils-tabulate","1Xm":"@stdlib/utils/timeit","1Xn":"@stdlib/utils-timeit","1Xo":"@stdlib/utils/try-catch","1Xp":"@stdlib/utils-try-catch","1Xq":"@stdlib/utils/try-function","1Xr":"@stdlib/utils-try-function","1Xs":"@stdlib/utils/try-require","1Xt":"@stdlib/utils-try-require","1Xu":"@stdlib/utils/try-then","1Xv":"@stdlib/utils-try-then","1Xw":"@stdlib/utils/type-max","1Xx":"@stdlib/utils-type-max","1Xy":"@stdlib/utils/type-min","1Xz":"@stdlib/utils-type-min","1Y0":"@stdlib/utils/type-of","1Y1":"@stdlib/utils-type-of","1Y4":"@stdlib/utils/uncurry-right","1Y5":"@stdlib/utils-uncurry-right","1Y6":"@stdlib/utils/uncurry","1Y7":"@stdlib/utils-uncurry","1Y8":"@stdlib/utils/unshift","1Y9":"@stdlib/utils-unshift","1YA":"@stdlib/utils/until-each-right","1YB":"@stdlib/utils-until-each-right","1YC":"@stdlib/utils/until-each","1YD":"@stdlib/utils-until-each","1YE":"@stdlib/utils/until","1YF":"@stdlib/utils-until","1YG":"@stdlib/utils/unzip","1YH":"@stdlib/utils-unzip","1YK":"@stdlib/utils/values-in","1YL":"@stdlib/utils-values-in","1YM":"@stdlib/utils/values","1YN":"@stdlib/utils-values","1YO":"@stdlib/utils/while-each-right","1YP":"@stdlib/utils-while-each-right","1YQ":"@stdlib/utils/while-each","1YR":"@stdlib/utils-while-each","1YS":"@stdlib/utils/while","1YT":"@stdlib/utils-while","1YU":"@stdlib/utils/writable-properties-in","1YV":"@stdlib/utils-writable-properties-in","1YW":"@stdlib/utils/writable-properties","1YX":"@stdlib/utils-writable-properties","1YY":"@stdlib/utils/writable-property-names-in","1YZ":"@stdlib/utils-writable-property-names-in","1Ya":"@stdlib/utils/writable-property-names","1Yb":"@stdlib/utils-writable-property-names","1Yc":"@stdlib/utils/writable-property-symbols-in","1Yd":"@stdlib/utils-writable-property-symbols-in","1Ye":"@stdlib/utils/writable-property-symbols","1Yf":"@stdlib/utils-writable-property-symbols","1Yg":"@stdlib/utils/zip","1Yh":"@stdlib/utils-zip","21E":"@stdlib/wasm/base/array2dtype","21F":"@stdlib/wasm-base-array2dtype","21G":"@stdlib/wasm/base/arrays2ptrs","21H":"@stdlib/wasm-base-arrays2ptrs","21I":"@stdlib/wasm/base/dtype2wasm","21J":"@stdlib/wasm-base-dtype2wasm","21K":"@stdlib/wasm/base","21L":"@stdlib/wasm-base","21M":"@stdlib/wasm/base/strided2object","21N":"@stdlib/wasm-base-strided2object","21O":"@stdlib/wasm/memory","21P":"@stdlib/wasm-memory","21Q":"@stdlib/wasm/module-wrapper","21R":"@stdlib/wasm-module-wrapper","21T":"@stdlib/wasm","2Rc":"@stdlib/wasm/types","2Rd":"@stdlib/wasm-types"} +{"100":"@stdlib/stats/base/dists/f/cdf","101":"@stdlib/stats-base-dists-f-cdf","102":"@stdlib/stats/base/dists/f/ctor","103":"@stdlib/stats-base-dists-f-ctor","104":"@stdlib/stats/base/dists/f/entropy","105":"@stdlib/stats-base-dists-f-entropy","106":"@stdlib/stats/base/dists/f/kurtosis","107":"@stdlib/stats-base-dists-f-kurtosis","108":"@stdlib/stats/base/dists/f/mean","109":"@stdlib/stats-base-dists-f-mean","110":"@stdlib/stats/base/dists/gamma/logcdf","111":"@stdlib/stats-base-dists-gamma-logcdf","112":"@stdlib/stats/base/dists/gamma/logpdf","113":"@stdlib/stats-base-dists-gamma-logpdf","114":"@stdlib/stats/base/dists/gamma/mean","115":"@stdlib/stats-base-dists-gamma-mean","116":"@stdlib/stats/base/dists/gamma/mgf","117":"@stdlib/stats-base-dists-gamma-mgf","118":"@stdlib/stats/base/dists/gamma/mode","119":"@stdlib/stats-base-dists-gamma-mode","120":"@stdlib/stats/base/dists/gumbel/logcdf","121":"@stdlib/stats-base-dists-gumbel-logcdf","122":"@stdlib/stats/base/dists/gumbel/logpdf","123":"@stdlib/stats-base-dists-gumbel-logpdf","124":"@stdlib/stats/base/dists/gumbel/mean","125":"@stdlib/stats-base-dists-gumbel-mean","126":"@stdlib/stats/base/dists/gumbel/median","127":"@stdlib/stats-base-dists-gumbel-median","128":"@stdlib/stats/base/dists/gumbel/mgf","129":"@stdlib/stats-base-dists-gumbel-mgf","130":"@stdlib/stats/base/dists/invgamma","131":"@stdlib/stats-base-dists-invgamma","132":"@stdlib/stats/base/dists/invgamma/pdf","133":"@stdlib/stats-base-dists-invgamma-pdf","134":"@stdlib/stats/base/dists/invgamma/quantile","135":"@stdlib/stats-base-dists-invgamma-quantile","136":"@stdlib/stats/base/dists/invgamma/skewness","137":"@stdlib/stats-base-dists-invgamma-skewness","138":"@stdlib/stats/base/dists/invgamma/stdev","139":"@stdlib/stats-base-dists-invgamma-stdev","140":"@stdlib/stats/base/dists/laplace/pdf","141":"@stdlib/stats-base-dists-laplace-pdf","142":"@stdlib/stats/base/dists/laplace/quantile","143":"@stdlib/stats-base-dists-laplace-quantile","144":"@stdlib/stats/base/dists/laplace/skewness","145":"@stdlib/stats-base-dists-laplace-skewness","146":"@stdlib/stats/base/dists/laplace/stdev","147":"@stdlib/stats-base-dists-laplace-stdev","148":"@stdlib/stats/base/dists/laplace/variance","149":"@stdlib/stats-base-dists-laplace-variance","150":"@stdlib/stats/base/dists/logistic/skewness","151":"@stdlib/stats-base-dists-logistic-skewness","152":"@stdlib/stats/base/dists/logistic/stdev","153":"@stdlib/stats-base-dists-logistic-stdev","154":"@stdlib/stats/base/dists/logistic/variance","155":"@stdlib/stats-base-dists-logistic-variance","156":"@stdlib/stats/base/dists/lognormal/cdf","157":"@stdlib/stats-base-dists-lognormal-cdf","158":"@stdlib/stats/base/dists/lognormal/ctor","159":"@stdlib/stats-base-dists-lognormal-ctor","160":"@stdlib/stats/base/dists/normal/ctor","161":"@stdlib/stats-base-dists-normal-ctor","162":"@stdlib/stats/base/dists/normal/entropy","163":"@stdlib/stats-base-dists-normal-entropy","164":"@stdlib/stats/base/dists/normal/kurtosis","165":"@stdlib/stats-base-dists-normal-kurtosis","166":"@stdlib/stats/base/dists/normal/logpdf","167":"@stdlib/stats-base-dists-normal-logpdf","168":"@stdlib/stats/base/dists/normal/mean","169":"@stdlib/stats-base-dists-normal-mean","170":"@stdlib/stats/base/dists/poisson/ctor","171":"@stdlib/stats-base-dists-poisson-ctor","172":"@stdlib/stats/base/dists/poisson/entropy","173":"@stdlib/stats-base-dists-poisson-entropy","174":"@stdlib/stats/base/dists/poisson/kurtosis","175":"@stdlib/stats-base-dists-poisson-kurtosis","176":"@stdlib/stats/base/dists/poisson/logpmf","177":"@stdlib/stats-base-dists-poisson-logpmf","178":"@stdlib/stats/base/dists/poisson/mean","179":"@stdlib/stats-base-dists-poisson-mean","180":"@stdlib/stats/base/dists/signrank","181":"@stdlib/stats-base-dists-signrank","182":"@stdlib/stats/base/dists/signrank/pdf","183":"@stdlib/stats-base-dists-signrank-pdf","184":"@stdlib/stats/base/dists/signrank/quantile","185":"@stdlib/stats-base-dists-signrank-quantile","186":"@stdlib/stats/base/dists/t/cdf","187":"@stdlib/stats-base-dists-t-cdf","188":"@stdlib/stats/base/dists/t/ctor","189":"@stdlib/stats-base-dists-t-ctor","190":"@stdlib/stats/base/dists/triangular/skewness","191":"@stdlib/stats-base-dists-triangular-skewness","192":"@stdlib/stats/base/dists/triangular/stdev","193":"@stdlib/stats-base-dists-triangular-stdev","194":"@stdlib/stats/base/dists/triangular/variance","195":"@stdlib/stats-base-dists-triangular-variance","196":"@stdlib/stats/base/dists/truncated-normal","197":"@stdlib/stats-base-dists-truncated-normal","198":"@stdlib/stats/base/dists/truncated-normal/pdf","199":"@stdlib/stats-base-dists-truncated-normal-pdf","202":"@stdlib/blas/base/dspr","203":"@stdlib/blas-base-dspr","204":"@stdlib/blas/ext/base/cfill","205":"@stdlib/blas-ext-base-cfill","206":"@stdlib/constants/float32/max-safe-nth-factorial","207":"@stdlib/constants-float32-max-safe-nth-factorial","208":"@stdlib/constants/float32/max-safe-nth-fibonacci","209":"@stdlib/constants-float32-max-safe-nth-fibonacci","210":"@stdlib/ndarray/base/assert/has-equal-shape","211":"@stdlib/ndarray-base-assert-has-equal-shape","212":"@stdlib/ndarray/base/fill","213":"@stdlib/ndarray-base-fill","214":"@stdlib/ndarray/base/to-reversed","215":"@stdlib/ndarray-base-to-reversed","216":"@stdlib/strided/base/read-dataview","217":"@stdlib/strided-base-read-dataview","218":"@stdlib/strided/base/strided2object","219":"@stdlib/strided-base-strided2object","220":"@stdlib/array/base/nulls","221":"@stdlib/array-base-nulls","222":"@stdlib/array/byte-orders","223":"@stdlib/array-byte-orders","224":"@stdlib/array/fixed-endian-factory","225":"@stdlib/array-fixed-endian-factory","226":"@stdlib/array/fixed-endian-float32","227":"@stdlib/array-fixed-endian-float32","228":"@stdlib/array/little-endian-factory","229":"@stdlib/array-little-endian-factory","230":"@stdlib/constants/float32/half-ln-two","231":"@stdlib/constants-float32-half-ln-two","232":"@stdlib/constants/float32/ln-two","233":"@stdlib/constants-float32-ln-two","234":"@stdlib/constants/float32/max-base10-exponent-subnormal","235":"@stdlib/constants-float32-max-base10-exponent-subnormal","236":"@stdlib/constants/float32/max-base10-exponent","237":"@stdlib/constants-float32-max-base10-exponent","238":"@stdlib/constants/float32/min-base10-exponent-subnormal","239":"@stdlib/constants-float32-min-base10-exponent-subnormal","240":"@stdlib/array/base/broadcasted-ternary5d","241":"@stdlib/array-base-broadcasted-ternary5d","242":"@stdlib/array/base/mskbinary4d","243":"@stdlib/array-base-mskbinary4d","244":"@stdlib/array/base/mskbinary5d","245":"@stdlib/array-base-mskbinary5d","246":"@stdlib/array/base/mskunary4d","247":"@stdlib/array-base-mskunary4d","248":"@stdlib/array/base/mskunary5d","249":"@stdlib/array-base-mskunary5d","250":"@stdlib/ndarray/index","251":"@stdlib/ndarray-index","252":"@stdlib/ndarray/map","253":"@stdlib/ndarray-map","254":"@stdlib/ndarray/reject","255":"@stdlib/ndarray-reject","256":"@stdlib/ndarray/to-fancy","257":"@stdlib/ndarray-to-fancy","258":"@stdlib/ndarray/to-json","259":"@stdlib/ndarray-to-json","260":"@stdlib/ndarray/base/spread-dimensions","261":"@stdlib/ndarray-base-spread-dimensions","262":"@stdlib/ndarray/base/to-normalized-indices","263":"@stdlib/ndarray-base-to-normalized-indices","264":"@stdlib/ndarray/base/to-unique-normalized-indices","265":"@stdlib/ndarray-base-to-unique-normalized-indices","266":"@stdlib/blas/base/zdscal","267":"@stdlib/blas-base-zdscal","268":"@stdlib/lapack/base/zlacgv","269":"@stdlib/lapack-base-zlacgv","270":"@stdlib/blas/base/wasm/snrm2","271":"@stdlib/blas-base-wasm-snrm2","272":"@stdlib/blas/base/wasm/srot","273":"@stdlib/blas-base-wasm-srot","274":"@stdlib/blas/base/wasm/sscal","275":"@stdlib/blas-base-wasm-sscal","276":"@stdlib/blas/base/wasm/zcopy","277":"@stdlib/blas-base-wasm-zcopy","278":"@stdlib/blas/base/wasm/zdrot","279":"@stdlib/blas-base-wasm-zdrot","280":"@stdlib/napi/argv-bool","281":"@stdlib/napi-argv-bool","282":"@stdlib/ndarray/base/assert/is-output-data-type-policy","283":"@stdlib/ndarray-base-assert-is-output-data-type-policy","284":"@stdlib/number/float32/base/add","285":"@stdlib/number-float32-base-add","286":"@stdlib/number/float32/base/div","287":"@stdlib/number-float32-base-div","288":"@stdlib/number/float32/base/mul","289":"@stdlib/number-float32-base-mul","290":"@stdlib/stats/strided/dmeanlipw","291":"@stdlib/stats-strided-dmeanlipw","292":"@stdlib/stats/strided/dmeanors","293":"@stdlib/stats-strided-dmeanors","294":"@stdlib/stats/strided/dmeanpw","295":"@stdlib/stats-strided-dmeanpw","296":"@stdlib/stats/strided/dmeanwd","297":"@stdlib/stats-strided-dmeanwd","300":"@stdlib/blas/ext/base/cxmy","301":"@stdlib/blas-ext-base-cxmy","302":"@stdlib/blas/ext/base/dfill-equal","303":"@stdlib/blas-ext-base-dfill-equal","304":"@stdlib/blas/ext/base/dfill-nan","305":"@stdlib/blas-ext-base-dfill-nan","306":"@stdlib/blas/ext/base/dfill-not-equal","307":"@stdlib/blas-ext-base-dfill-not-equal","308":"@stdlib/blas/ext/base/dfirst-index-equal","309":"@stdlib/blas-ext-base-dfirst-index-equal","310":"@stdlib/blas/ext/base/ndarray/zxmy","311":"@stdlib/blas-ext-base-ndarray-zxmy","312":"@stdlib/blas/ext/base/sfill-equal","313":"@stdlib/blas-ext-base-sfill-equal","314":"@stdlib/blas/ext/base/sfill-nan","315":"@stdlib/blas-ext-base-sfill-nan","316":"@stdlib/blas/ext/base/sfill-not-equal","317":"@stdlib/blas-ext-base-sfill-not-equal","318":"@stdlib/blas/ext/base/sfirst-index-equal","319":"@stdlib/blas-ext-base-sfirst-index-equal","320":"@stdlib/number/uint64/base/set-high-word","321":"@stdlib/number-uint64-base-set-high-word","322":"@stdlib/number/uint64/base/string2words","323":"@stdlib/number-uint64-base-string2words","324":"@stdlib/stats/base/dists/anglit/cdf","325":"@stdlib/stats-base-dists-anglit-cdf","326":"@stdlib/stats/base/dists/anglit/entropy","327":"@stdlib/stats-base-dists-anglit-entropy","328":"@stdlib/stats/base/dists/anglit/mode","329":"@stdlib/stats-base-dists-anglit-mode","330":"@stdlib/stats/incr/nanmsumprod","331":"@stdlib/stats-incr-nanmsumprod","332":"@stdlib/stats/incr/nanmvmr","333":"@stdlib/stats-incr-nanmvmr","334":"@stdlib/stats/incr/nanpcorr","335":"@stdlib/stats-incr-nanpcorr","336":"@stdlib/stats/incr/nanpcorr2","337":"@stdlib/stats-incr-nanpcorr2","338":"@stdlib/stats/incr/nanpcorrdist","339":"@stdlib/stats-incr-nanpcorrdist","1Yi":"@stdlib/array/base/accessor-getter","1Yj":"@stdlib/array-base-accessor-getter","1Yk":"@stdlib/array/base/accessor-setter","1Yl":"@stdlib/array-base-accessor-setter","1Ym":"@stdlib/array/base/accessor","1Yn":"@stdlib/array-base-accessor","1Yo":"@stdlib/array/base/accessors","1Yp":"@stdlib/array-base-accessors","1oK":"@stdlib/array/base/any-by-right","1oL":"@stdlib/array-base-any-by-right","1oM":"@stdlib/array/base/any-by","1oN":"@stdlib/array-base-any-by","2HQ":"@stdlib/array/base/any-has-own-property","2HR":"@stdlib/array-base-any-has-own-property","2HS":"@stdlib/array/base/any-has-property","2HT":"@stdlib/array-base-any-has-property","2HU":"@stdlib/array/base/any-is-entry-in","2HV":"@stdlib/array-base-any-is-entry-in","2HW":"@stdlib/array/base/any-is-entry","2HX":"@stdlib/array-base-any-is-entry","1oO":"@stdlib/array/base/any","1oP":"@stdlib/array-base-any","000":"@stdlib/array/base/arraylike2object","001":"@stdlib/array-base-arraylike2object","1Yq":"@stdlib/array/base/assert/contains","1Yr":"@stdlib/array-base-assert-contains","2N8":"@stdlib/array/base/assert/has-almost-equal-values","2N9":"@stdlib/array-base-assert-has-almost-equal-values","2co":"@stdlib/array/base/assert/has-almost-same-values","2cp":"@stdlib/array-base-assert-has-almost-same-values","1zi":"@stdlib/array/base/assert/has-equal-values-indexed","1zj":"@stdlib/array-base-assert-has-equal-values-indexed","1zk":"@stdlib/array/base/assert/has-equal-values","1zl":"@stdlib/array-base-assert-has-equal-values","1oQ":"@stdlib/array/base/assert/has-same-values","1oR":"@stdlib/array-base-assert-has-same-values","1Ys":"@stdlib/array/base/assert/is-accessor-array","1Yt":"@stdlib/array-base-assert-is-accessor-array","1w6":"@stdlib/array/base/assert/is-boolean-data-type","1w7":"@stdlib/array-base-assert-is-boolean-data-type","1w8":"@stdlib/array/base/assert/is-booleanarray","1w9":"@stdlib/array-base-assert-is-booleanarray","21o":"@stdlib/array/base/assert/is-byte-order","21p":"@stdlib/array-base-assert-is-byte-order","1qs":"@stdlib/array/base/assert/is-complex-floating-point-data-type","1qt":"@stdlib/array-base-assert-is-complex-floating-point-data-type","1s4":"@stdlib/array/base/assert/is-complex-typed-array","1s5":"@stdlib/array-base-assert-is-complex-typed-array","1oS":"@stdlib/array/base/assert/is-complex128array","1oT":"@stdlib/array-base-assert-is-complex128array","1oU":"@stdlib/array/base/assert/is-complex64array","1oV":"@stdlib/array-base-assert-is-complex64array","1qu":"@stdlib/array/base/assert/is-data-type","1qv":"@stdlib/array-base-assert-is-data-type","1qw":"@stdlib/array/base/assert/is-floating-point-data-type","1qx":"@stdlib/array-base-assert-is-floating-point-data-type","1qy":"@stdlib/array/base/assert/is-integer-data-type","1qz":"@stdlib/array-base-assert-is-integer-data-type","1r0":"@stdlib/array/base/assert/is-mostly-safe-data-type-cast","1r1":"@stdlib/array-base-assert-is-mostly-safe-data-type-cast","1r2":"@stdlib/array/base/assert/is-numeric-data-type","1r3":"@stdlib/array-base-assert-is-numeric-data-type","1r4":"@stdlib/array/base/assert/is-real-data-type","1r5":"@stdlib/array-base-assert-is-real-data-type","1r6":"@stdlib/array/base/assert/is-real-floating-point-data-type","1r7":"@stdlib/array-base-assert-is-real-floating-point-data-type","1r8":"@stdlib/array/base/assert/is-safe-data-type-cast","1r9":"@stdlib/array-base-assert-is-safe-data-type-cast","1rA":"@stdlib/array/base/assert/is-same-kind-data-type-cast","1rB":"@stdlib/array-base-assert-is-same-kind-data-type-cast","1rC":"@stdlib/array/base/assert/is-signed-integer-data-type","1rD":"@stdlib/array-base-assert-is-signed-integer-data-type","25a":"@stdlib/array/base/assert/is-sorted-ascending","25b":"@stdlib/array-base-assert-is-sorted-ascending","1rE":"@stdlib/array/base/assert/is-unsigned-integer-data-type","1rF":"@stdlib/array-base-assert-is-unsigned-integer-data-type","1Yu":"@stdlib/array/base/assert","1Yv":"@stdlib/array-base-assert","1oW":"@stdlib/array/base/at","1oX":"@stdlib/array-base-at","1oY":"@stdlib/array/base/at2d","1oZ":"@stdlib/array-base-at2d","1oa":"@stdlib/array/base/at3d","1ob":"@stdlib/array-base-at3d","1oc":"@stdlib/array/base/at4d","1od":"@stdlib/array-base-at4d","1oe":"@stdlib/array/base/at5d","1of":"@stdlib/array-base-at5d","1og":"@stdlib/array/base/atnd","1oh":"@stdlib/array-base-atnd","29O":"@stdlib/array/base/banded/filled2d-by","29P":"@stdlib/array-base-banded-filled2d-by","2Eg":"@stdlib/array/base/banded","2Eh":"@stdlib/array-base-banded","29Q":"@stdlib/array/base/banded/to-compact","29R":"@stdlib/array-base-banded-to-compact","1ne":"@stdlib/array/base/bifurcate-entries-by","1nf":"@stdlib/array-base-bifurcate-entries-by","1n2":"@stdlib/array/base/bifurcate-entries","1n3":"@stdlib/array-base-bifurcate-entries","1ng":"@stdlib/array/base/bifurcate-indices-by","1nh":"@stdlib/array-base-bifurcate-indices-by","1n4":"@stdlib/array/base/bifurcate-indices","1n5":"@stdlib/array-base-bifurcate-indices","1ni":"@stdlib/array/base/bifurcate-values-by","1nj":"@stdlib/array-base-bifurcate-values-by","1n6":"@stdlib/array/base/bifurcate-values","1n7":"@stdlib/array-base-bifurcate-values","1i0":"@stdlib/array/base/binary2d","1i1":"@stdlib/array-base-binary2d","1i2":"@stdlib/array/base/binary3d","1i3":"@stdlib/array-base-binary3d","1i4":"@stdlib/array/base/binary4d","1i5":"@stdlib/array-base-binary4d","1i6":"@stdlib/array/base/binary5d","1i7":"@stdlib/array-base-binary5d","1i8":"@stdlib/array/base/binarynd","1i9":"@stdlib/array-base-binarynd","1hM":"@stdlib/array/base/broadcast-array","1hN":"@stdlib/array-base-broadcast-array","1iA":"@stdlib/array/base/broadcasted-binary2d","1iB":"@stdlib/array-base-broadcasted-binary2d","1iC":"@stdlib/array/base/broadcasted-binary3d","1iD":"@stdlib/array-base-broadcasted-binary3d","1iE":"@stdlib/array/base/broadcasted-binary4d","1iF":"@stdlib/array-base-broadcasted-binary4d","1iG":"@stdlib/array/base/broadcasted-binary5d","1iH":"@stdlib/array-base-broadcasted-binary5d","1ke":"@stdlib/array/base/broadcasted-quaternary2d","1kf":"@stdlib/array-base-broadcasted-quaternary2d","23o":"@stdlib/array/base/broadcasted-quaternary3d","23p":"@stdlib/array-base-broadcasted-quaternary3d","23q":"@stdlib/array/base/broadcasted-quaternary4d","23r":"@stdlib/array-base-broadcasted-quaternary4d","23s":"@stdlib/array/base/broadcasted-quaternary5d","23t":"@stdlib/array-base-broadcasted-quaternary5d","1kg":"@stdlib/array/base/broadcasted-quinary2d","1kh":"@stdlib/array-base-broadcasted-quinary2d","23u":"@stdlib/array/base/broadcasted-quinary4d","23v":"@stdlib/array-base-broadcasted-quinary4d","1ki":"@stdlib/array/base/broadcasted-ternary2d","1kj":"@stdlib/array-base-broadcasted-ternary2d","23w":"@stdlib/array/base/broadcasted-ternary3d","23x":"@stdlib/array-base-broadcasted-ternary3d","23y":"@stdlib/array/base/broadcasted-ternary4d","23z":"@stdlib/array-base-broadcasted-ternary4d","1iI":"@stdlib/array/base/broadcasted-unary2d","1iJ":"@stdlib/array-base-broadcasted-unary2d","1iK":"@stdlib/array/base/broadcasted-unary3d","1iL":"@stdlib/array-base-broadcasted-unary3d","1iM":"@stdlib/array/base/broadcasted-unary4d","1iN":"@stdlib/array-base-broadcasted-unary4d","1iO":"@stdlib/array/base/broadcasted-unary5d","1iP":"@stdlib/array-base-broadcasted-unary5d","1Yw":"@stdlib/array/base/cartesian-power","1Yx":"@stdlib/array-base-cartesian-power","1Yy":"@stdlib/array/base/cartesian-product","1Yz":"@stdlib/array-base-cartesian-product","1Z0":"@stdlib/array/base/cartesian-square","1Z1":"@stdlib/array-base-cartesian-square","1Z2":"@stdlib/array/base/copy-indexed","1Z3":"@stdlib/array-base-copy-indexed","002":"@stdlib/array/base/copy","003":"@stdlib/array-base-copy","1s6":"@stdlib/array/base/count-falsy","1s7":"@stdlib/array-base-count-falsy","1sO":"@stdlib/array/base/count-if","1sP":"@stdlib/array-base-count-if","2EU":"@stdlib/array/base/count-ifs","2EV":"@stdlib/array-base-count-ifs","1sQ":"@stdlib/array/base/count-same-value-zero","1sR":"@stdlib/array-base-count-same-value-zero","1s8":"@stdlib/array/base/count-same-value","1s9":"@stdlib/array-base-count-same-value","1sA":"@stdlib/array/base/count-truthy","1sB":"@stdlib/array-base-count-truthy","21q":"@stdlib/array/base/cuany-by-right","21r":"@stdlib/array-base-cuany-by-right","21s":"@stdlib/array/base/cuany-by","21t":"@stdlib/array-base-cuany-by","1wA":"@stdlib/array/base/cuany","1wB":"@stdlib/array-base-cuany","22E":"@stdlib/array/base/cuevery-by-right","22F":"@stdlib/array-base-cuevery-by-right","21u":"@stdlib/array/base/cuevery-by","21v":"@stdlib/array-base-cuevery-by","1wC":"@stdlib/array/base/cuevery","1wD":"@stdlib/array-base-cuevery","21U":"@stdlib/array/base/cunone-by-right","21V":"@stdlib/array-base-cunone-by-right","21W":"@stdlib/array/base/cunone-by","21X":"@stdlib/array-base-cunone-by","1ww":"@stdlib/array/base/cunone","1wx":"@stdlib/array-base-cunone","21Y":"@stdlib/array/base/cusome-by-right","21Z":"@stdlib/array-base-cusome-by-right","21w":"@stdlib/array/base/cusome-by","21x":"@stdlib/array-base-cusome-by","21y":"@stdlib/array/base/cusome","21z":"@stdlib/array-base-cusome","1n8":"@stdlib/array/base/dedupe","1n9":"@stdlib/array-base-dedupe","2SS":"@stdlib/array/base/entries2objects","2ST":"@stdlib/array-base-entries2objects","2SU":"@stdlib/array/base/entries2views","2SV":"@stdlib/array-base-entries2views","1oi":"@stdlib/array/base/every-by-right","1oj":"@stdlib/array-base-every-by-right","1ok":"@stdlib/array/base/every-by","1ol":"@stdlib/array-base-every-by","1om":"@stdlib/array/base/every","1on":"@stdlib/array-base-every","2cq":"@stdlib/array/base/falses","2cr":"@stdlib/array-base-falses","1rG":"@stdlib/array/base/fancy-slice-assign","1rH":"@stdlib/array-base-fancy-slice-assign","1rI":"@stdlib/array/base/fancy-slice","1rJ":"@stdlib/array-base-fancy-slice","29S":"@stdlib/array/base/fill-by","29T":"@stdlib/array-base-fill-by","25c":"@stdlib/array/base/fill","25d":"@stdlib/array-base-fill","004":"@stdlib/array/base/filled-by","005":"@stdlib/array-base-filled-by","006":"@stdlib/array/base/filled","007":"@stdlib/array-base-filled","1hO":"@stdlib/array/base/filled2d-by","1hP":"@stdlib/array-base-filled2d-by","1Z4":"@stdlib/array/base/filled2d","1Z5":"@stdlib/array-base-filled2d","1hQ":"@stdlib/array/base/filled3d-by","1hR":"@stdlib/array-base-filled3d-by","1hS":"@stdlib/array/base/filled3d","1hT":"@stdlib/array-base-filled3d","1hU":"@stdlib/array/base/filled4d-by","1hV":"@stdlib/array-base-filled4d-by","1hW":"@stdlib/array/base/filled4d","1hX":"@stdlib/array-base-filled4d","1hY":"@stdlib/array/base/filled5d-by","1hZ":"@stdlib/array-base-filled5d-by","1ha":"@stdlib/array/base/filled5d","1hb":"@stdlib/array-base-filled5d","1iQ":"@stdlib/array/base/fillednd-by","1iR":"@stdlib/array-base-fillednd-by","1hc":"@stdlib/array/base/fillednd","1hd":"@stdlib/array-base-fillednd","1oo":"@stdlib/array/base/filter","1op":"@stdlib/array-base-filter","1mm":"@stdlib/array/base/first","1mn":"@stdlib/array-base-first","1he":"@stdlib/array/base/flatten-by","1hf":"@stdlib/array-base-flatten-by","1Z6":"@stdlib/array/base/flatten","1Z7":"@stdlib/array-base-flatten","1Z8":"@stdlib/array/base/flatten2d-by","1Z9":"@stdlib/array-base-flatten2d-by","1ZA":"@stdlib/array/base/flatten2d","1ZB":"@stdlib/array-base-flatten2d","1ZC":"@stdlib/array/base/flatten3d-by","1ZD":"@stdlib/array-base-flatten3d-by","1ZE":"@stdlib/array/base/flatten3d","1ZF":"@stdlib/array-base-flatten3d","1ZG":"@stdlib/array/base/flatten4d-by","1ZH":"@stdlib/array-base-flatten4d-by","1ZI":"@stdlib/array/base/flatten4d","1ZJ":"@stdlib/array-base-flatten4d","1ZK":"@stdlib/array/base/flatten5d-by","1ZL":"@stdlib/array-base-flatten5d-by","1ZM":"@stdlib/array/base/flatten5d","1ZN":"@stdlib/array-base-flatten5d","1lg":"@stdlib/array/base/fliplr2d","1lh":"@stdlib/array-base-fliplr2d","1mI":"@stdlib/array/base/fliplr3d","1mJ":"@stdlib/array-base-fliplr3d","1mK":"@stdlib/array/base/fliplr4d","1mL":"@stdlib/array-base-fliplr4d","1mM":"@stdlib/array/base/fliplr5d","1mN":"@stdlib/array-base-fliplr5d","1li":"@stdlib/array/base/flipud2d","1lj":"@stdlib/array-base-flipud2d","1nA":"@stdlib/array/base/flipud3d","1nB":"@stdlib/array-base-flipud3d","1nC":"@stdlib/array/base/flipud4d","1nD":"@stdlib/array-base-flipud4d","1nE":"@stdlib/array/base/flipud5d","1nF":"@stdlib/array-base-flipud5d","26K":"@stdlib/array/base/for-each","26L":"@stdlib/array-base-for-each","1lk":"@stdlib/array/base/from-strided","1ll":"@stdlib/array-base-from-strided","1ZO":"@stdlib/array/base/getter","1ZP":"@stdlib/array-base-getter","1nk":"@stdlib/array/base/group-entries-by","1nl":"@stdlib/array-base-group-entries-by","1nG":"@stdlib/array/base/group-entries","1nH":"@stdlib/array-base-group-entries","1nm":"@stdlib/array/base/group-indices-by","1nn":"@stdlib/array-base-group-indices-by","1nI":"@stdlib/array/base/group-indices","1nJ":"@stdlib/array-base-group-indices","1no":"@stdlib/array/base/group-values-by","1np":"@stdlib/array-base-group-values-by","2SW":"@stdlib/array/base/group-values-on-key","2SX":"@stdlib/array-base-group-values-on-key","1nK":"@stdlib/array/base/group-values","1nL":"@stdlib/array-base-group-values","008":"@stdlib/array/base/incrspace","009":"@stdlib/array-base-incrspace","2DY":"@stdlib/array/base/index-of-same-value","2DZ":"@stdlib/array-base-index-of-same-value","1mo":"@stdlib/array/base/index-of","1mp":"@stdlib/array-base-index-of","25e":"@stdlib/array/base/indices-complement","25f":"@stdlib/array-base-indices-complement","2Vy":"@stdlib/array/base/insert-at","2Vz":"@stdlib/array-base-insert-at","1t0":"@stdlib/array/base/join","1t1":"@stdlib/array-base-join","2Da":"@stdlib/array/base/last-index-of-same-value","2Db":"@stdlib/array-base-last-index-of-same-value","1mq":"@stdlib/array/base/last-index-of","1mr":"@stdlib/array-base-last-index-of","1ZQ":"@stdlib/array/base/last","1ZR":"@stdlib/array-base-last","00A":"@stdlib/array/base/linspace","00B":"@stdlib/array-base-linspace","2Dc":"@stdlib/array/base/linspace2d","2Dd":"@stdlib/array-base-linspace2d","00C":"@stdlib/array/base/logspace","00D":"@stdlib/array-base-logspace","29U":"@stdlib/array/base/map","29V":"@stdlib/array-base-map","1lm":"@stdlib/array/base/map2d","1ln":"@stdlib/array-base-map2d","1lo":"@stdlib/array/base/map3d","1lp":"@stdlib/array-base-map3d","1mO":"@stdlib/array/base/map4d","1mP":"@stdlib/array-base-map4d","1mQ":"@stdlib/array/base/map5d","1mR":"@stdlib/array-base-map5d","1rK":"@stdlib/array/base/min-signed-integer-dtype","1rL":"@stdlib/array-base-min-signed-integer-dtype","1rM":"@stdlib/array/base/min-unsigned-integer-dtype","1rN":"@stdlib/array-base-min-unsigned-integer-dtype","1ia":"@stdlib/array/base/mskbinary2d","1ib":"@stdlib/array-base-mskbinary2d","22G":"@stdlib/array/base/mskbinary3d","22H":"@stdlib/array-base-mskbinary3d","1uM":"@stdlib/array/base/mskfilter-map","1uN":"@stdlib/array-base-mskfilter-map","1oq":"@stdlib/array/base/mskfilter","1or":"@stdlib/array-base-mskfilter","25g":"@stdlib/array/base/mskfilter2","25h":"@stdlib/array-base-mskfilter2","25i":"@stdlib/array/base/mskfiltern","25j":"@stdlib/array-base-mskfiltern","1wE":"@stdlib/array/base/mskput","1wF":"@stdlib/array-base-mskput","1uO":"@stdlib/array/base/mskreject-map","1uP":"@stdlib/array-base-mskreject-map","1rO":"@stdlib/array/base/mskreject","1rP":"@stdlib/array-base-mskreject","1ic":"@stdlib/array/base/mskunary2d","1id":"@stdlib/array-base-mskunary2d","1ie":"@stdlib/array/base/mskunary3d","1if":"@stdlib/array-base-mskunary3d","1ZS":"@stdlib/array/base/n-cartesian-product","1ZT":"@stdlib/array-base-n-cartesian-product","2SY":"@stdlib/array/base/nested2objects","2SZ":"@stdlib/array-base-nested2objects","2Sa":"@stdlib/array/base/nested2views","2Sb":"@stdlib/array-base-nested2views","1os":"@stdlib/array/base/none-by-right","1ot":"@stdlib/array-base-none-by-right","1ou":"@stdlib/array/base/none-by","1ov":"@stdlib/array-base-none-by","1ow":"@stdlib/array/base/none","1ox":"@stdlib/array-base-none","1hg":"@stdlib/array/base/one-to","1hh":"@stdlib/array-base-one-to","00E":"@stdlib/array/base/ones","00F":"@stdlib/array-base-ones","1ZU":"@stdlib/array/base/ones2d","1ZV":"@stdlib/array-base-ones2d","1hi":"@stdlib/array/base/ones3d","1hj":"@stdlib/array-base-ones3d","1hk":"@stdlib/array/base/ones4d","1hl":"@stdlib/array-base-ones4d","1hm":"@stdlib/array/base/ones5d","1hn":"@stdlib/array-base-ones5d","1ho":"@stdlib/array/base/onesnd","1hp":"@stdlib/array-base-onesnd","00G":"@stdlib/array/base","00H":"@stdlib/array-base","1wG":"@stdlib/array/base/place","1wH":"@stdlib/array-base-place","1wI":"@stdlib/array/base/put","1wJ":"@stdlib/array-base-put","1kk":"@stdlib/array/base/quaternary2d","1kl":"@stdlib/array-base-quaternary2d","1lq":"@stdlib/array/base/quaternary3d","1lr":"@stdlib/array-base-quaternary3d","1ls":"@stdlib/array/base/quaternary4d","1lt":"@stdlib/array-base-quaternary4d","1lu":"@stdlib/array/base/quaternary5d","1lv":"@stdlib/array-base-quaternary5d","1km":"@stdlib/array/base/quinary2d","1kn":"@stdlib/array-base-quinary2d","1nM":"@stdlib/array/base/quinary3d","1nN":"@stdlib/array-base-quinary3d","1nO":"@stdlib/array/base/quinary4d","1nP":"@stdlib/array-base-quinary4d","1nQ":"@stdlib/array/base/quinary5d","1nR":"@stdlib/array-base-quinary5d","1rQ":"@stdlib/array/base/reject","1rR":"@stdlib/array-base-reject","2Sc":"@stdlib/array/base/rekey-views","2Sd":"@stdlib/array-base-rekey-views","2Se":"@stdlib/array/base/rekey","2Sf":"@stdlib/array-base-rekey","1yy":"@stdlib/array/base/remove-at","1yz":"@stdlib/array-base-remove-at","2De":"@stdlib/array/base/reshape","2Df":"@stdlib/array-base-reshape","1lw":"@stdlib/array/base/resolve-getter","1lx":"@stdlib/array-base-resolve-getter","1oy":"@stdlib/array/base/resolve-setter","1oz":"@stdlib/array-base-resolve-setter","1p0":"@stdlib/array/base/reverse","1p1":"@stdlib/array-base-reverse","25k":"@stdlib/array/base/scatter-filled","25l":"@stdlib/array-base-scatter-filled","25m":"@stdlib/array/base/scattered","25n":"@stdlib/array-base-scattered","1ZW":"@stdlib/array/base/setter","1ZX":"@stdlib/array-base-setter","1ms":"@stdlib/array/base/slice","1mt":"@stdlib/array-base-slice","1ko":"@stdlib/array/base/strided2array2d","1kp":"@stdlib/array-base-strided2array2d","1kq":"@stdlib/array/base/strided2array3d","1kr":"@stdlib/array-base-strided2array3d","1ks":"@stdlib/array/base/strided2array4d","1kt":"@stdlib/array-base-strided2array4d","1ku":"@stdlib/array/base/strided2array5d","1kv":"@stdlib/array-base-strided2array5d","29W":"@stdlib/array/base/symmetric-banded/filled2d-by","29X":"@stdlib/array-base-symmetric-banded-filled2d-by","2Ei":"@stdlib/array/base/symmetric-banded","2Ej":"@stdlib/array-base-symmetric-banded","29Y":"@stdlib/array/base/symmetric-banded/to-compact","29Z":"@stdlib/array-base-symmetric-banded-to-compact","29a":"@stdlib/array/base/symmetric/filled2d-by","29b":"@stdlib/array-base-symmetric-filled2d-by","2Ek":"@stdlib/array/base/symmetric","2El":"@stdlib/array-base-symmetric","1ly":"@stdlib/array/base/take-indexed","1lz":"@stdlib/array-base-take-indexed","25o":"@stdlib/array/base/take-indexed2","25p":"@stdlib/array-base-take-indexed2","1t2":"@stdlib/array/base/take-map","1t3":"@stdlib/array-base-take-map","1ZY":"@stdlib/array/base/take","1ZZ":"@stdlib/array-base-take","1m0":"@stdlib/array/base/take2d","1m1":"@stdlib/array-base-take2d","1mS":"@stdlib/array/base/take3d","1mT":"@stdlib/array-base-take3d","1kw":"@stdlib/array/base/ternary2d","1kx":"@stdlib/array-base-ternary2d","1ky":"@stdlib/array/base/ternary3d","1kz":"@stdlib/array-base-ternary3d","1l0":"@stdlib/array/base/ternary4d","1l1":"@stdlib/array-base-ternary4d","1l2":"@stdlib/array/base/ternary5d","1l3":"@stdlib/array-base-ternary5d","1Za":"@stdlib/array/base/to-accessor-array","1Zb":"@stdlib/array-base-to-accessor-array","1nS":"@stdlib/array/base/to-deduped","1nT":"@stdlib/array-base-to-deduped","2cs":"@stdlib/array/base/to-filled","2ct":"@stdlib/array-base-to-filled","2W0":"@stdlib/array/base/to-inserted-at","2W1":"@stdlib/array-base-to-inserted-at","1p2":"@stdlib/array/base/to-reversed","1p3":"@stdlib/array-base-to-reversed","2cu":"@stdlib/array/base/trues","2cv":"@stdlib/array-base-trues","1ig":"@stdlib/array/base/unary2d-by","1ih":"@stdlib/array-base-unary2d-by","1hq":"@stdlib/array/base/unary2d","1hr":"@stdlib/array-base-unary2d","24A":"@stdlib/array/base/unary3d-by","24B":"@stdlib/array-base-unary3d-by","1iS":"@stdlib/array/base/unary3d","1iT":"@stdlib/array-base-unary3d","24C":"@stdlib/array/base/unary4d-by","24D":"@stdlib/array-base-unary4d-by","1iU":"@stdlib/array/base/unary4d","1iV":"@stdlib/array-base-unary4d","24E":"@stdlib/array/base/unary5d-by","24F":"@stdlib/array-base-unary5d-by","1iW":"@stdlib/array/base/unary5d","1iX":"@stdlib/array-base-unary5d","1iY":"@stdlib/array/base/unarynd","1iZ":"@stdlib/array-base-unarynd","00I":"@stdlib/array/base/unitspace","00J":"@stdlib/array-base-unitspace","1wK":"@stdlib/array/base/where","1wL":"@stdlib/array-base-where","1sS":"@stdlib/array/base/with","1sT":"@stdlib/array-base-with","1z0":"@stdlib/array/base/without","1z1":"@stdlib/array-base-without","1Zc":"@stdlib/array/base/zero-to","1Zd":"@stdlib/array-base-zero-to","00K":"@stdlib/array/base/zeros","00L":"@stdlib/array-base-zeros","1Ze":"@stdlib/array/base/zeros2d","1Zf":"@stdlib/array-base-zeros2d","1hs":"@stdlib/array/base/zeros3d","1ht":"@stdlib/array-base-zeros3d","1hu":"@stdlib/array/base/zeros4d","1hv":"@stdlib/array-base-zeros4d","1hw":"@stdlib/array/base/zeros5d","1hx":"@stdlib/array-base-zeros5d","1hy":"@stdlib/array/base/zerosnd","1hz":"@stdlib/array-base-zerosnd","2Sg":"@stdlib/array/base/zip","2Sh":"@stdlib/array-base-zip","2Re":"@stdlib/array/base/zip2object","2Rf":"@stdlib/array-base-zip2object","2Si":"@stdlib/array/base/zip2objects","2Sj":"@stdlib/array-base-zip2objects","2Sk":"@stdlib/array/base/zip2views","2Sl":"@stdlib/array-base-zip2views","1uQ":"@stdlib/array/bool","1uR":"@stdlib/array-bool","00M":"@stdlib/array/buffer","00N":"@stdlib/array-buffer","1p4":"@stdlib/array/cartesian-power","1p5":"@stdlib/array-cartesian-power","1p6":"@stdlib/array/cartesian-product","1p7":"@stdlib/array-cartesian-product","1p8":"@stdlib/array/cartesian-square","1p9":"@stdlib/array-cartesian-square","00O":"@stdlib/array/complex128","00P":"@stdlib/array-complex128","00Q":"@stdlib/array/complex64","00R":"@stdlib/array-complex64","00S":"@stdlib/array/convert-same","00T":"@stdlib/array-convert-same","00U":"@stdlib/array/convert","00V":"@stdlib/array-convert","00W":"@stdlib/array/ctors","00X":"@stdlib/array-ctors","00Y":"@stdlib/array/dataview","00Z":"@stdlib/array-dataview","00a":"@stdlib/array/datespace","00b":"@stdlib/array-datespace","1nq":"@stdlib/array/defaults","1nr":"@stdlib/array-defaults","00c":"@stdlib/array/dtype","00d":"@stdlib/array-dtype","00e":"@stdlib/array/dtypes","00f":"@stdlib/array-dtypes","1Zg":"@stdlib/array/empty-like","1Zh":"@stdlib/array-empty-like","1Zi":"@stdlib/array/empty","1Zj":"@stdlib/array-empty","2um":"@stdlib/array/falses","2un":"@stdlib/array-falses","00g":"@stdlib/array/filled-by","00h":"@stdlib/array-filled-by","00i":"@stdlib/array/filled","00j":"@stdlib/array-filled","21a":"@stdlib/array/fixed-endian-float64","21b":"@stdlib/array-fixed-endian-float64","2cw":"@stdlib/array/float16","2cx":"@stdlib/array-float16","00k":"@stdlib/array/float32","00l":"@stdlib/array-float32","00m":"@stdlib/array/float64","00n":"@stdlib/array-float64","00o":"@stdlib/array/from-iterator","00p":"@stdlib/array-from-iterator","1rS":"@stdlib/array/from-scalar","1rT":"@stdlib/array-from-scalar","00q":"@stdlib/array/full-like","00r":"@stdlib/array-full-like","00s":"@stdlib/array/full","00t":"@stdlib/array-full","00u":"@stdlib/array/incrspace","00v":"@stdlib/array-incrspace","1ry":"@stdlib/array/index","1rz":"@stdlib/array-index","00w":"@stdlib/array/int16","00x":"@stdlib/array-int16","00y":"@stdlib/array/int32","00z":"@stdlib/array-int32","010":"@stdlib/array/int8","011":"@stdlib/array-int8","012":"@stdlib/array/linspace","013":"@stdlib/array-linspace","22A":"@stdlib/array/little-endian-float32","22B":"@stdlib/array-little-endian-float32","22C":"@stdlib/array/little-endian-float64","22D":"@stdlib/array-little-endian-float64","014":"@stdlib/array/logspace","015":"@stdlib/array-logspace","016":"@stdlib/array/min-dtype","017":"@stdlib/array-min-dtype","1rU":"@stdlib/array/mostly-safe-casts","1rV":"@stdlib/array-mostly-safe-casts","1sC":"@stdlib/array/mskfilter","1sD":"@stdlib/array-mskfilter","1wM":"@stdlib/array/mskput","1wN":"@stdlib/array-mskput","1sE":"@stdlib/array/mskreject","1sF":"@stdlib/array-mskreject","1Zk":"@stdlib/array/nans-like","1Zl":"@stdlib/array-nans-like","1Zm":"@stdlib/array/nans","1Zn":"@stdlib/array-nans","018":"@stdlib/array/next-dtype","019":"@stdlib/array-next-dtype","2cy":"@stdlib/array/nulls","2cz":"@stdlib/array-nulls","1pA":"@stdlib/array/one-to-like","1pB":"@stdlib/array-one-to-like","1pC":"@stdlib/array/one-to","1pD":"@stdlib/array-one-to","01A":"@stdlib/array/ones-like","01B":"@stdlib/array-ones-like","01C":"@stdlib/array/ones","01D":"@stdlib/array-ones","01F":"@stdlib/array","1wO":"@stdlib/array/place","1wP":"@stdlib/array-place","01G":"@stdlib/array/pool","01H":"@stdlib/array-pool","01I":"@stdlib/array/promotion-rules","01J":"@stdlib/array-promotion-rules","1wQ":"@stdlib/array/put","1wR":"@stdlib/array-put","01K":"@stdlib/array/reviver","01L":"@stdlib/array-reviver","01M":"@stdlib/array/safe-casts","01N":"@stdlib/array-safe-casts","01O":"@stdlib/array/same-kind-casts","01P":"@stdlib/array-same-kind-casts","01Q":"@stdlib/array/shape","01R":"@stdlib/array-shape","01S":"@stdlib/array/shared-buffer","01T":"@stdlib/array-shared-buffer","1pE":"@stdlib/array/slice","1pF":"@stdlib/array-slice","2KE":"@stdlib/array/struct-factory","2KF":"@stdlib/array-struct-factory","1s0":"@stdlib/array/take","1s1":"@stdlib/array-take","01U":"@stdlib/array/to-circular-iterator","01V":"@stdlib/array-to-circular-iterator","1rW":"@stdlib/array/to-fancy","1rX":"@stdlib/array-to-fancy","01W":"@stdlib/array/to-iterator-right","01X":"@stdlib/array-to-iterator-right","01Y":"@stdlib/array/to-iterator","01Z":"@stdlib/array-to-iterator","01a":"@stdlib/array/to-json","01b":"@stdlib/array-to-json","01c":"@stdlib/array/to-sparse-iterator-right","01d":"@stdlib/array-to-sparse-iterator-right","01e":"@stdlib/array/to-sparse-iterator","01f":"@stdlib/array-to-sparse-iterator","01g":"@stdlib/array/to-strided-iterator","01h":"@stdlib/array-to-strided-iterator","01i":"@stdlib/array/to-view-iterator-right","01j":"@stdlib/array-to-view-iterator-right","01k":"@stdlib/array/to-view-iterator","01l":"@stdlib/array-to-view-iterator","2uo":"@stdlib/array/trues","2up":"@stdlib/array-trues","01m":"@stdlib/array/typed-complex-ctors","01n":"@stdlib/array-typed-complex-ctors","01o":"@stdlib/array/typed-complex-dtypes","01p":"@stdlib/array-typed-complex-dtypes","01q":"@stdlib/array/typed-complex","01r":"@stdlib/array-typed-complex","01s":"@stdlib/array/typed-ctors","01t":"@stdlib/array-typed-ctors","01u":"@stdlib/array/typed-dtypes","01v":"@stdlib/array-typed-dtypes","01w":"@stdlib/array/typed-float-ctors","01x":"@stdlib/array-typed-float-ctors","01y":"@stdlib/array/typed-float-dtypes","01z":"@stdlib/array-typed-float-dtypes","020":"@stdlib/array/typed-integer-ctors","021":"@stdlib/array-typed-integer-ctors","022":"@stdlib/array/typed-integer-dtypes","023":"@stdlib/array-typed-integer-dtypes","024":"@stdlib/array/typed-real-ctors","025":"@stdlib/array-typed-real-ctors","026":"@stdlib/array/typed-real-dtypes","027":"@stdlib/array-typed-real-dtypes","028":"@stdlib/array/typed-real-float-ctors","029":"@stdlib/array-typed-real-float-ctors","02A":"@stdlib/array/typed-real-float-dtypes","02B":"@stdlib/array-typed-real-float-dtypes","02C":"@stdlib/array/typed-real","02D":"@stdlib/array-typed-real","02E":"@stdlib/array/typed-signed-integer-ctors","02F":"@stdlib/array-typed-signed-integer-ctors","02G":"@stdlib/array/typed-signed-integer-dtypes","02H":"@stdlib/array-typed-signed-integer-dtypes","02I":"@stdlib/array/typed-unsigned-integer-ctors","02J":"@stdlib/array-typed-unsigned-integer-ctors","02K":"@stdlib/array/typed-unsigned-integer-dtypes","02L":"@stdlib/array-typed-unsigned-integer-dtypes","02M":"@stdlib/array/typed","02N":"@stdlib/array-typed","02O":"@stdlib/array/uint16","02P":"@stdlib/array-uint16","02Q":"@stdlib/array/uint32","02R":"@stdlib/array-uint32","02S":"@stdlib/array/uint8","02T":"@stdlib/array-uint8","02U":"@stdlib/array/uint8c","02V":"@stdlib/array-uint8c","1pG":"@stdlib/array/zero-to-like","1pH":"@stdlib/array-zero-to-like","1pI":"@stdlib/array/zero-to","1pJ":"@stdlib/array-zero-to","02W":"@stdlib/array/zeros-like","02X":"@stdlib/array-zeros-like","02Y":"@stdlib/array/zeros","02Z":"@stdlib/array-zeros","02a":"@stdlib/assert/contains","02b":"@stdlib/assert-contains","02c":"@stdlib/assert/deep-equal","02d":"@stdlib/assert-deep-equal","02e":"@stdlib/assert/deep-has-own-property","02f":"@stdlib/assert-deep-has-own-property","02g":"@stdlib/assert/deep-has-property","02h":"@stdlib/assert-deep-has-property","02i":"@stdlib/assert/has-arraybuffer-support","02j":"@stdlib/assert-has-arraybuffer-support","02k":"@stdlib/assert/has-arrow-function-support","02l":"@stdlib/assert-has-arrow-function-support","02m":"@stdlib/assert/has-async-await-support","02n":"@stdlib/assert-has-async-await-support","02o":"@stdlib/assert/has-async-iterator-symbol-support","02p":"@stdlib/assert-has-async-iterator-symbol-support","1zm":"@stdlib/assert/has-atob-support","1zn":"@stdlib/assert-has-atob-support","02q":"@stdlib/assert/has-bigint-support","02r":"@stdlib/assert-has-bigint-support","02s":"@stdlib/assert/has-bigint64array-support","02t":"@stdlib/assert-has-bigint64array-support","02u":"@stdlib/assert/has-biguint64array-support","02v":"@stdlib/assert-has-biguint64array-support","1zo":"@stdlib/assert/has-btoa-support","1zp":"@stdlib/assert-has-btoa-support","02w":"@stdlib/assert/has-class-support","02x":"@stdlib/assert-has-class-support","02y":"@stdlib/assert/has-dataview-support","02z":"@stdlib/assert-has-dataview-support","030":"@stdlib/assert/has-define-properties-support","031":"@stdlib/assert-has-define-properties-support","032":"@stdlib/assert/has-define-property-support","033":"@stdlib/assert-has-define-property-support","2NA":"@stdlib/assert/has-float16array-support","2NB":"@stdlib/assert-has-float16array-support","034":"@stdlib/assert/has-float32array-support","035":"@stdlib/assert-has-float32array-support","036":"@stdlib/assert/has-float64array-support","037":"@stdlib/assert-has-float64array-support","038":"@stdlib/assert/has-function-name-support","039":"@stdlib/assert-has-function-name-support","03A":"@stdlib/assert/has-generator-support","03B":"@stdlib/assert-has-generator-support","03C":"@stdlib/assert/has-globalthis-support","03D":"@stdlib/assert-has-globalthis-support","2XY":"@stdlib/assert/has-has-instance-symbol-support","2XZ":"@stdlib/assert-has-has-instance-symbol-support","03E":"@stdlib/assert/has-int16array-support","03F":"@stdlib/assert-has-int16array-support","03G":"@stdlib/assert/has-int32array-support","03H":"@stdlib/assert-has-int32array-support","03I":"@stdlib/assert/has-int8array-support","03J":"@stdlib/assert-has-int8array-support","2Wk":"@stdlib/assert/has-is-concat-spreadable-symbol-support","2Wl":"@stdlib/assert-has-is-concat-spreadable-symbol-support","03K":"@stdlib/assert/has-iterator-symbol-support","03L":"@stdlib/assert-has-iterator-symbol-support","03M":"@stdlib/assert/has-map-support","03N":"@stdlib/assert-has-map-support","2Xa":"@stdlib/assert/has-match-symbol-support","2Xb":"@stdlib/assert-has-match-symbol-support","03O":"@stdlib/assert/has-node-buffer-support","03P":"@stdlib/assert-has-node-buffer-support","03Q":"@stdlib/assert/has-own-property","03R":"@stdlib/assert-has-own-property","03S":"@stdlib/assert/has-property","03T":"@stdlib/assert-has-property","03U":"@stdlib/assert/has-proxy-support","03V":"@stdlib/assert-has-proxy-support","2Xc":"@stdlib/assert/has-replace-symbol-support","2Xd":"@stdlib/assert-has-replace-symbol-support","2Xe":"@stdlib/assert/has-search-symbol-support","2Xf":"@stdlib/assert-has-search-symbol-support","03W":"@stdlib/assert/has-set-support","03X":"@stdlib/assert-has-set-support","03Y":"@stdlib/assert/has-sharedarraybuffer-support","03Z":"@stdlib/assert-has-sharedarraybuffer-support","2Xg":"@stdlib/assert/has-split-symbol-support","2Xh":"@stdlib/assert-has-split-symbol-support","03a":"@stdlib/assert/has-symbol-support","03b":"@stdlib/assert-has-symbol-support","2Xi":"@stdlib/assert/has-to-primitive-symbol-support","2Xj":"@stdlib/assert-has-to-primitive-symbol-support","03c":"@stdlib/assert/has-tostringtag-support","03d":"@stdlib/assert-has-tostringtag-support","03e":"@stdlib/assert/has-uint16array-support","03f":"@stdlib/assert-has-uint16array-support","03g":"@stdlib/assert/has-uint32array-support","03h":"@stdlib/assert-has-uint32array-support","03i":"@stdlib/assert/has-uint8array-support","03j":"@stdlib/assert-has-uint8array-support","03k":"@stdlib/assert/has-uint8clampedarray-support","03l":"@stdlib/assert-has-uint8clampedarray-support","03m":"@stdlib/assert/has-utf16-surrogate-pair-at","03n":"@stdlib/assert-has-utf16-surrogate-pair-at","03o":"@stdlib/assert/has-wasm-support","03p":"@stdlib/assert-has-wasm-support","03q":"@stdlib/assert/has-weakmap-support","03r":"@stdlib/assert-has-weakmap-support","03s":"@stdlib/assert/has-weakset-support","03t":"@stdlib/assert-has-weakset-support","03u":"@stdlib/assert/instance-of","03v":"@stdlib/assert-instance-of","03w":"@stdlib/assert/is-absolute-http-uri","03x":"@stdlib/assert-is-absolute-http-uri","03y":"@stdlib/assert/is-absolute-path","03z":"@stdlib/assert-is-absolute-path","040":"@stdlib/assert/is-absolute-uri","041":"@stdlib/assert-is-absolute-uri","1Zo":"@stdlib/assert/is-accessor-array","1Zp":"@stdlib/assert-is-accessor-array","042":"@stdlib/assert/is-accessor-property-in","043":"@stdlib/assert-is-accessor-property-in","044":"@stdlib/assert/is-accessor-property","045":"@stdlib/assert-is-accessor-property","2Rg":"@stdlib/assert/is-almost-equal-array","2Rh":"@stdlib/assert-is-almost-equal-array","2Ri":"@stdlib/assert/is-almost-equal-complex128array","2Rj":"@stdlib/assert-is-almost-equal-complex128array","2Rk":"@stdlib/assert/is-almost-equal-complex64array","2Rl":"@stdlib/assert-is-almost-equal-complex64array","2Rm":"@stdlib/assert/is-almost-equal-float32array","2Rn":"@stdlib/assert-is-almost-equal-float32array","2NC":"@stdlib/assert/is-almost-equal-float64array","2ND":"@stdlib/assert-is-almost-equal-float64array","2NE":"@stdlib/assert/is-almost-equal","2NF":"@stdlib/assert-is-almost-equal","2d0":"@stdlib/assert/is-almost-same-array","2d1":"@stdlib/assert-is-almost-same-array","2d2":"@stdlib/assert/is-almost-same-complex128array","2d3":"@stdlib/assert-is-almost-same-complex128array","2d4":"@stdlib/assert/is-almost-same-complex64array","2d5":"@stdlib/assert-is-almost-same-complex64array","2d6":"@stdlib/assert/is-almost-same-float32array","2d7":"@stdlib/assert-is-almost-same-float32array","2d8":"@stdlib/assert/is-almost-same-float64array","2d9":"@stdlib/assert-is-almost-same-float64array","2dA":"@stdlib/assert/is-almost-same-value","2dB":"@stdlib/assert-is-almost-same-value","046":"@stdlib/assert/is-alphagram","047":"@stdlib/assert-is-alphagram","048":"@stdlib/assert/is-alphanumeric","049":"@stdlib/assert-is-alphanumeric","04A":"@stdlib/assert/is-anagram","04B":"@stdlib/assert-is-anagram","04C":"@stdlib/assert/is-arguments","04D":"@stdlib/assert-is-arguments","04E":"@stdlib/assert/is-array-array","04F":"@stdlib/assert-is-array-array","04G":"@stdlib/assert/is-array-length","04H":"@stdlib/assert-is-array-length","04I":"@stdlib/assert/is-array-like-object","04J":"@stdlib/assert-is-array-like-object","04K":"@stdlib/assert/is-array-like","04L":"@stdlib/assert-is-array-like","04M":"@stdlib/assert/is-array","04N":"@stdlib/assert-is-array","04O":"@stdlib/assert/is-arraybuffer-view","04P":"@stdlib/assert-is-arraybuffer-view","04Q":"@stdlib/assert/is-arraybuffer","04R":"@stdlib/assert-is-arraybuffer","04S":"@stdlib/assert/is-arrow-function","04T":"@stdlib/assert-is-arrow-function","04U":"@stdlib/assert/is-ascii","04V":"@stdlib/assert-is-ascii","04W":"@stdlib/assert/is-between-array","04X":"@stdlib/assert-is-between-array","04Y":"@stdlib/assert/is-between","04Z":"@stdlib/assert-is-between","04a":"@stdlib/assert/is-big-endian","04b":"@stdlib/assert-is-big-endian","04c":"@stdlib/assert/is-bigint","04d":"@stdlib/assert-is-bigint","04e":"@stdlib/assert/is-bigint64array","04f":"@stdlib/assert-is-bigint64array","04g":"@stdlib/assert/is-biguint64array","04h":"@stdlib/assert-is-biguint64array","04i":"@stdlib/assert/is-binary-string","04j":"@stdlib/assert-is-binary-string","04k":"@stdlib/assert/is-blank-string","04l":"@stdlib/assert-is-blank-string","04m":"@stdlib/assert/is-boolean-array","04n":"@stdlib/assert-is-boolean-array","04o":"@stdlib/assert/is-boolean","04p":"@stdlib/assert-is-boolean","1vW":"@stdlib/assert/is-booleanarray","1vX":"@stdlib/assert-is-booleanarray","04q":"@stdlib/assert/is-boxed-primitive","04r":"@stdlib/assert-is-boxed-primitive","04s":"@stdlib/assert/is-browser","04t":"@stdlib/assert-is-browser","04u":"@stdlib/assert/is-buffer","04v":"@stdlib/assert-is-buffer","1Zq":"@stdlib/assert/is-camelcase","1Zr":"@stdlib/assert-is-camelcase","04w":"@stdlib/assert/is-capitalized","04x":"@stdlib/assert-is-capitalized","04y":"@stdlib/assert/is-centrosymmetric-matrix","04z":"@stdlib/assert-is-centrosymmetric-matrix","050":"@stdlib/assert/is-circular-array","051":"@stdlib/assert-is-circular-array","052":"@stdlib/assert/is-circular-plain-object","053":"@stdlib/assert-is-circular-plain-object","054":"@stdlib/assert/is-circular","055":"@stdlib/assert-is-circular","056":"@stdlib/assert/is-class","057":"@stdlib/assert-is-class","058":"@stdlib/assert/is-collection","059":"@stdlib/assert-is-collection","05A":"@stdlib/assert/is-complex-like","05B":"@stdlib/assert-is-complex-like","05C":"@stdlib/assert/is-complex-typed-array-like","05D":"@stdlib/assert-is-complex-typed-array-like","05E":"@stdlib/assert/is-complex-typed-array","05F":"@stdlib/assert-is-complex-typed-array","05G":"@stdlib/assert/is-complex","05H":"@stdlib/assert-is-complex","05I":"@stdlib/assert/is-complex128","05J":"@stdlib/assert-is-complex128","05K":"@stdlib/assert/is-complex128array","05L":"@stdlib/assert-is-complex128array","1mU":"@stdlib/assert/is-complex128matrix-like","1mV":"@stdlib/assert-is-complex128matrix-like","1mW":"@stdlib/assert/is-complex128ndarray-like","1mX":"@stdlib/assert-is-complex128ndarray-like","1mY":"@stdlib/assert/is-complex128vector-like","1mZ":"@stdlib/assert-is-complex128vector-like","05M":"@stdlib/assert/is-complex64","05N":"@stdlib/assert-is-complex64","05O":"@stdlib/assert/is-complex64array","05P":"@stdlib/assert-is-complex64array","1ma":"@stdlib/assert/is-complex64matrix-like","1mb":"@stdlib/assert-is-complex64matrix-like","1mc":"@stdlib/assert/is-complex64ndarray-like","1md":"@stdlib/assert-is-complex64ndarray-like","1me":"@stdlib/assert/is-complex64vector-like","1mf":"@stdlib/assert-is-complex64vector-like","05Q":"@stdlib/assert/is-composite","05R":"@stdlib/assert-is-composite","05S":"@stdlib/assert/is-configurable-property-in","05T":"@stdlib/assert-is-configurable-property-in","05U":"@stdlib/assert/is-configurable-property","05V":"@stdlib/assert-is-configurable-property","1Zs":"@stdlib/assert/is-constantcase","1Zt":"@stdlib/assert-is-constantcase","05W":"@stdlib/assert/is-cube-number","05X":"@stdlib/assert-is-cube-number","1Zu":"@stdlib/assert/is-current-year","1Zv":"@stdlib/assert-is-current-year","05Y":"@stdlib/assert/is-darwin","05Z":"@stdlib/assert-is-darwin","05a":"@stdlib/assert/is-data-property-in","05b":"@stdlib/assert-is-data-property-in","05c":"@stdlib/assert/is-data-property","05d":"@stdlib/assert-is-data-property","05e":"@stdlib/assert/is-dataview","05f":"@stdlib/assert-is-dataview","05g":"@stdlib/assert/is-date-object-array","05h":"@stdlib/assert-is-date-object-array","05i":"@stdlib/assert/is-date-object","05j":"@stdlib/assert-is-date-object","05k":"@stdlib/assert/is-digit-string","05l":"@stdlib/assert-is-digit-string","05m":"@stdlib/assert/is-docker","05n":"@stdlib/assert-is-docker","1Zw":"@stdlib/assert/is-domain-name","1Zx":"@stdlib/assert-is-domain-name","1Zy":"@stdlib/assert/is-duration-string","1Zz":"@stdlib/assert-is-duration-string","05o":"@stdlib/assert/is-electron-main","05p":"@stdlib/assert-is-electron-main","05q":"@stdlib/assert/is-electron-renderer","05r":"@stdlib/assert-is-electron-renderer","05s":"@stdlib/assert/is-electron","05t":"@stdlib/assert-is-electron","05u":"@stdlib/assert/is-email-address","05v":"@stdlib/assert-is-email-address","05w":"@stdlib/assert/is-empty-array-like-object","05x":"@stdlib/assert-is-empty-array-like-object","05y":"@stdlib/assert/is-empty-array","05z":"@stdlib/assert-is-empty-array","060":"@stdlib/assert/is-empty-collection","061":"@stdlib/assert-is-empty-collection","062":"@stdlib/assert/is-empty-object","063":"@stdlib/assert-is-empty-object","064":"@stdlib/assert/is-empty-string","065":"@stdlib/assert-is-empty-string","066":"@stdlib/assert/is-enumerable-property-in","067":"@stdlib/assert-is-enumerable-property-in","068":"@stdlib/assert/is-enumerable-property","069":"@stdlib/assert-is-enumerable-property","1zq":"@stdlib/assert/is-equal-array","1zr":"@stdlib/assert-is-equal-array","2HY":"@stdlib/assert/is-equal-booleanarray","2HZ":"@stdlib/assert-is-equal-booleanarray","2Ha":"@stdlib/assert/is-equal-date-object","2Hb":"@stdlib/assert-is-equal-date-object","2Hc":"@stdlib/assert/is-equal-int16array","2Hd":"@stdlib/assert-is-equal-int16array","2He":"@stdlib/assert/is-equal-int32array","2Hf":"@stdlib/assert-is-equal-int32array","2Hg":"@stdlib/assert/is-equal-int8array","2Hh":"@stdlib/assert-is-equal-int8array","2Hi":"@stdlib/assert/is-equal-uint16array","2Hj":"@stdlib/assert-is-equal-uint16array","2Hk":"@stdlib/assert/is-equal-uint32array","2Hl":"@stdlib/assert-is-equal-uint32array","2Hm":"@stdlib/assert/is-equal-uint8array","2Hn":"@stdlib/assert-is-equal-uint8array","2Ho":"@stdlib/assert/is-equal-uint8clampedarray","2Hp":"@stdlib/assert-is-equal-uint8clampedarray","06A":"@stdlib/assert/is-error","06B":"@stdlib/assert-is-error","06C":"@stdlib/assert/is-eval-error","06D":"@stdlib/assert-is-eval-error","06E":"@stdlib/assert/is-even","06F":"@stdlib/assert-is-even","06G":"@stdlib/assert/is-falsy-array","06H":"@stdlib/assert-is-falsy-array","06I":"@stdlib/assert/is-falsy","06J":"@stdlib/assert-is-falsy","06K":"@stdlib/assert/is-finite-array","06L":"@stdlib/assert-is-finite-array","06M":"@stdlib/assert/is-finite","06N":"@stdlib/assert-is-finite","2NG":"@stdlib/assert/is-float16array","2NH":"@stdlib/assert-is-float16array","06O":"@stdlib/assert/is-float32array","06P":"@stdlib/assert-is-float32array","06Q":"@stdlib/assert/is-float32matrix-like","06R":"@stdlib/assert-is-float32matrix-like","06S":"@stdlib/assert/is-float32ndarray-like","06T":"@stdlib/assert-is-float32ndarray-like","06U":"@stdlib/assert/is-float32vector-like","06V":"@stdlib/assert-is-float32vector-like","06W":"@stdlib/assert/is-float64array","06X":"@stdlib/assert-is-float64array","06Y":"@stdlib/assert/is-float64matrix-like","06Z":"@stdlib/assert-is-float64matrix-like","06a":"@stdlib/assert/is-float64ndarray-like","06b":"@stdlib/assert-is-float64ndarray-like","06c":"@stdlib/assert/is-float64vector-like","06d":"@stdlib/assert-is-float64vector-like","06e":"@stdlib/assert/is-function-array","06f":"@stdlib/assert-is-function-array","06g":"@stdlib/assert/is-function","06h":"@stdlib/assert-is-function","06i":"@stdlib/assert/is-generator-object-like","06j":"@stdlib/assert-is-generator-object-like","06k":"@stdlib/assert/is-generator-object","06l":"@stdlib/assert-is-generator-object","06m":"@stdlib/assert/is-gzip-buffer","06n":"@stdlib/assert-is-gzip-buffer","06o":"@stdlib/assert/is-hex-string","06p":"@stdlib/assert-is-hex-string","06q":"@stdlib/assert/is-infinite","06r":"@stdlib/assert-is-infinite","06s":"@stdlib/assert/is-inherited-property","06t":"@stdlib/assert-is-inherited-property","06u":"@stdlib/assert/is-int16array","06v":"@stdlib/assert-is-int16array","06w":"@stdlib/assert/is-int32array","06x":"@stdlib/assert-is-int32array","2zW":"@stdlib/assert/is-int64","2zX":"@stdlib/assert-is-int64","06y":"@stdlib/assert/is-int8array","06z":"@stdlib/assert-is-int8array","070":"@stdlib/assert/is-integer-array","071":"@stdlib/assert-is-integer-array","072":"@stdlib/assert/is-integer","073":"@stdlib/assert-is-integer","074":"@stdlib/assert/is-iterable-like","075":"@stdlib/assert-is-iterable-like","076":"@stdlib/assert/is-iterator-like","077":"@stdlib/assert-is-iterator-like","078":"@stdlib/assert/is-json","079":"@stdlib/assert-is-json","1a0":"@stdlib/assert/is-kebabcase","1a1":"@stdlib/assert-is-kebabcase","07A":"@stdlib/assert/is-leap-year","07B":"@stdlib/assert-is-leap-year","07C":"@stdlib/assert/is-little-endian","07D":"@stdlib/assert-is-little-endian","07E":"@stdlib/assert/is-localhost","07F":"@stdlib/assert-is-localhost","07G":"@stdlib/assert/is-lowercase","07H":"@stdlib/assert-is-lowercase","07I":"@stdlib/assert/is-matrix-like","07J":"@stdlib/assert-is-matrix-like","07K":"@stdlib/assert/is-method-in","07L":"@stdlib/assert-is-method-in","07M":"@stdlib/assert/is-method","07N":"@stdlib/assert-is-method","07O":"@stdlib/assert/is-mobile","07P":"@stdlib/assert-is-mobile","1ii":"@stdlib/assert/is-multi-slice","1ij":"@stdlib/assert-is-multi-slice","07Q":"@stdlib/assert/is-named-typed-tuple-like","07R":"@stdlib/assert-is-named-typed-tuple-like","07S":"@stdlib/assert/is-nan-array","07T":"@stdlib/assert-is-nan-array","07U":"@stdlib/assert/is-nan","07V":"@stdlib/assert-is-nan","07W":"@stdlib/assert/is-native-function","07X":"@stdlib/assert-is-native-function","2dC":"@stdlib/assert/is-ndarray-descriptor","2dD":"@stdlib/assert-is-ndarray-descriptor","21c":"@stdlib/assert/is-ndarray-like-with-data-type","21d":"@stdlib/assert-is-ndarray-like-with-data-type","07Y":"@stdlib/assert/is-ndarray-like","07Z":"@stdlib/assert-is-ndarray-like","1sG":"@stdlib/assert/is-negative-finite","1sH":"@stdlib/assert-is-negative-finite","07a":"@stdlib/assert/is-negative-integer-array","07b":"@stdlib/assert-is-negative-integer-array","07c":"@stdlib/assert/is-negative-integer","07d":"@stdlib/assert-is-negative-integer","07e":"@stdlib/assert/is-negative-number-array","07f":"@stdlib/assert-is-negative-number-array","07g":"@stdlib/assert/is-negative-number","07h":"@stdlib/assert-is-negative-number","07i":"@stdlib/assert/is-negative-zero","07j":"@stdlib/assert-is-negative-zero","07k":"@stdlib/assert/is-node-builtin","07l":"@stdlib/assert-is-node-builtin","07m":"@stdlib/assert/is-node-duplex-stream-like","07n":"@stdlib/assert-is-node-duplex-stream-like","07o":"@stdlib/assert/is-node-readable-stream-like","07p":"@stdlib/assert-is-node-readable-stream-like","07q":"@stdlib/assert/is-node-repl","07r":"@stdlib/assert-is-node-repl","07s":"@stdlib/assert/is-node-stream-like","07t":"@stdlib/assert-is-node-stream-like","07u":"@stdlib/assert/is-node-transform-stream-like","07v":"@stdlib/assert-is-node-transform-stream-like","07w":"@stdlib/assert/is-node-writable-stream-like","07x":"@stdlib/assert-is-node-writable-stream-like","07y":"@stdlib/assert/is-node","07z":"@stdlib/assert-is-node","080":"@stdlib/assert/is-nonconfigurable-property-in","081":"@stdlib/assert-is-nonconfigurable-property-in","082":"@stdlib/assert/is-nonconfigurable-property","083":"@stdlib/assert-is-nonconfigurable-property","084":"@stdlib/assert/is-nonenumerable-property-in","085":"@stdlib/assert-is-nonenumerable-property-in","086":"@stdlib/assert/is-nonenumerable-property","087":"@stdlib/assert-is-nonenumerable-property","1sI":"@stdlib/assert/is-nonnegative-finite","1sJ":"@stdlib/assert-is-nonnegative-finite","088":"@stdlib/assert/is-nonnegative-integer-array","089":"@stdlib/assert-is-nonnegative-integer-array","08A":"@stdlib/assert/is-nonnegative-integer","08B":"@stdlib/assert-is-nonnegative-integer","08C":"@stdlib/assert/is-nonnegative-number-array","08D":"@stdlib/assert-is-nonnegative-number-array","08E":"@stdlib/assert/is-nonnegative-number","08F":"@stdlib/assert-is-nonnegative-number","1sU":"@stdlib/assert/is-nonpositive-finite","1sV":"@stdlib/assert-is-nonpositive-finite","08G":"@stdlib/assert/is-nonpositive-integer-array","08H":"@stdlib/assert-is-nonpositive-integer-array","08I":"@stdlib/assert/is-nonpositive-integer","08J":"@stdlib/assert-is-nonpositive-integer","08K":"@stdlib/assert/is-nonpositive-number-array","08L":"@stdlib/assert-is-nonpositive-number-array","08M":"@stdlib/assert/is-nonpositive-number","08N":"@stdlib/assert-is-nonpositive-number","08O":"@stdlib/assert/is-nonsymmetric-matrix","08P":"@stdlib/assert-is-nonsymmetric-matrix","08Q":"@stdlib/assert/is-null-array","08R":"@stdlib/assert-is-null-array","08S":"@stdlib/assert/is-null","08T":"@stdlib/assert-is-null","08U":"@stdlib/assert/is-number-array","08V":"@stdlib/assert-is-number-array","08W":"@stdlib/assert/is-number","08X":"@stdlib/assert-is-number","08Y":"@stdlib/assert/is-numeric-array","08Z":"@stdlib/assert-is-numeric-array","08a":"@stdlib/assert/is-object-array","08b":"@stdlib/assert-is-object-array","08c":"@stdlib/assert/is-object-like","08d":"@stdlib/assert-is-object-like","08e":"@stdlib/assert/is-object","08f":"@stdlib/assert-is-object","08g":"@stdlib/assert/is-odd","08h":"@stdlib/assert-is-odd","1a2":"@stdlib/assert/is-pascalcase","1a3":"@stdlib/assert-is-pascalcase","08i":"@stdlib/assert/is-persymmetric-matrix","08j":"@stdlib/assert-is-persymmetric-matrix","08k":"@stdlib/assert/is-plain-object-array","08l":"@stdlib/assert-is-plain-object-array","08m":"@stdlib/assert/is-plain-object","08n":"@stdlib/assert-is-plain-object","1sK":"@stdlib/assert/is-positive-finite","1sL":"@stdlib/assert-is-positive-finite","08o":"@stdlib/assert/is-positive-integer-array","08p":"@stdlib/assert-is-positive-integer-array","08q":"@stdlib/assert/is-positive-integer","08r":"@stdlib/assert-is-positive-integer","08s":"@stdlib/assert/is-positive-number-array","08t":"@stdlib/assert-is-positive-number-array","08u":"@stdlib/assert/is-positive-number","08v":"@stdlib/assert-is-positive-number","08w":"@stdlib/assert/is-positive-zero","08x":"@stdlib/assert-is-positive-zero","08y":"@stdlib/assert/is-prime","08z":"@stdlib/assert-is-prime","090":"@stdlib/assert/is-primitive-array","091":"@stdlib/assert-is-primitive-array","092":"@stdlib/assert/is-primitive","093":"@stdlib/assert-is-primitive","094":"@stdlib/assert/is-prng-like","095":"@stdlib/assert-is-prng-like","096":"@stdlib/assert/is-probability-array","097":"@stdlib/assert-is-probability-array","098":"@stdlib/assert/is-probability","099":"@stdlib/assert-is-probability","09A":"@stdlib/assert/is-property-key","09B":"@stdlib/assert-is-property-key","09C":"@stdlib/assert/is-prototype-of","09D":"@stdlib/assert-is-prototype-of","1sW":"@stdlib/assert/is-ragged-nested-array","1sX":"@stdlib/assert-is-ragged-nested-array","09E":"@stdlib/assert/is-range-error","09F":"@stdlib/assert-is-range-error","09G":"@stdlib/assert/is-read-only-property-in","09H":"@stdlib/assert-is-read-only-property-in","09I":"@stdlib/assert/is-read-only-property","09J":"@stdlib/assert-is-read-only-property","09K":"@stdlib/assert/is-read-write-property-in","09L":"@stdlib/assert-is-read-write-property-in","09M":"@stdlib/assert/is-read-write-property","09N":"@stdlib/assert-is-read-write-property","09O":"@stdlib/assert/is-readable-property-in","09P":"@stdlib/assert-is-readable-property-in","09Q":"@stdlib/assert/is-readable-property","09R":"@stdlib/assert-is-readable-property","09S":"@stdlib/assert/is-reference-error","09T":"@stdlib/assert-is-reference-error","09U":"@stdlib/assert/is-regexp-string","09V":"@stdlib/assert-is-regexp-string","09W":"@stdlib/assert/is-regexp","09X":"@stdlib/assert-is-regexp","09Y":"@stdlib/assert/is-relative-path","09Z":"@stdlib/assert-is-relative-path","09a":"@stdlib/assert/is-relative-uri","09b":"@stdlib/assert-is-relative-uri","09c":"@stdlib/assert/is-safe-integer-array","09d":"@stdlib/assert-is-safe-integer-array","09e":"@stdlib/assert/is-safe-integer","09f":"@stdlib/assert-is-safe-integer","1zs":"@stdlib/assert/is-same-accessor-array","1zt":"@stdlib/assert-is-same-accessor-array","1zu":"@stdlib/assert/is-same-array-like-object","1zv":"@stdlib/assert-is-same-array-like-object","1zw":"@stdlib/assert/is-same-array-like","1zx":"@stdlib/assert-is-same-array-like","1pK":"@stdlib/assert/is-same-array","1pL":"@stdlib/assert-is-same-array","1pM":"@stdlib/assert/is-same-complex128","1pN":"@stdlib/assert-is-same-complex128","1pO":"@stdlib/assert/is-same-complex128array","1pP":"@stdlib/assert-is-same-complex128array","1pQ":"@stdlib/assert/is-same-complex64","1pR":"@stdlib/assert-is-same-complex64","1pS":"@stdlib/assert/is-same-complex64array","1pT":"@stdlib/assert-is-same-complex64array","1pU":"@stdlib/assert/is-same-float32array","1pV":"@stdlib/assert-is-same-float32array","1pW":"@stdlib/assert/is-same-float64array","1pX":"@stdlib/assert-is-same-float64array","09g":"@stdlib/assert/is-same-native-class","09h":"@stdlib/assert-is-same-native-class","09i":"@stdlib/assert/is-same-type","09j":"@stdlib/assert-is-same-type","22I":"@stdlib/assert/is-same-typed-array-like","22J":"@stdlib/assert-is-same-typed-array-like","09k":"@stdlib/assert/is-same-value-zero","09l":"@stdlib/assert-is-same-value-zero","09m":"@stdlib/assert/is-same-value","09n":"@stdlib/assert-is-same-value","1a4":"@stdlib/assert/is-semver","1a5":"@stdlib/assert-is-semver","09o":"@stdlib/assert/is-sharedarraybuffer","09p":"@stdlib/assert-is-sharedarraybuffer","09q":"@stdlib/assert/is-skew-centrosymmetric-matrix","09r":"@stdlib/assert-is-skew-centrosymmetric-matrix","09s":"@stdlib/assert/is-skew-persymmetric-matrix","09t":"@stdlib/assert-is-skew-persymmetric-matrix","09u":"@stdlib/assert/is-skew-symmetric-matrix","09v":"@stdlib/assert-is-skew-symmetric-matrix","1ik":"@stdlib/assert/is-slice","1il":"@stdlib/assert-is-slice","1a6":"@stdlib/assert/is-snakecase","1a7":"@stdlib/assert-is-snakecase","09w":"@stdlib/assert/is-square-matrix","09x":"@stdlib/assert-is-square-matrix","09y":"@stdlib/assert/is-square-number","09z":"@stdlib/assert-is-square-number","0A0":"@stdlib/assert/is-square-triangular-number","0A1":"@stdlib/assert-is-square-triangular-number","1a8":"@stdlib/assert/is-startcase","1a9":"@stdlib/assert-is-startcase","0A2":"@stdlib/assert/is-strict-equal","0A3":"@stdlib/assert-is-strict-equal","0A4":"@stdlib/assert/is-string-array","0A5":"@stdlib/assert-is-string-array","0A6":"@stdlib/assert/is-string","0A7":"@stdlib/assert-is-string","2NI":"@stdlib/assert/is-struct-constructor-like","2NJ":"@stdlib/assert-is-struct-constructor-like","2NK":"@stdlib/assert/is-struct","2NL":"@stdlib/assert-is-struct","0A8":"@stdlib/assert/is-symbol-array","0A9":"@stdlib/assert-is-symbol-array","0AA":"@stdlib/assert/is-symbol","0AB":"@stdlib/assert-is-symbol","0AC":"@stdlib/assert/is-symmetric-matrix","0AD":"@stdlib/assert-is-symmetric-matrix","0AE":"@stdlib/assert/is-syntax-error","0AF":"@stdlib/assert-is-syntax-error","0AG":"@stdlib/assert/is-touch-device","0AH":"@stdlib/assert-is-touch-device","0AI":"@stdlib/assert/is-triangular-number","0AJ":"@stdlib/assert-is-triangular-number","0AK":"@stdlib/assert/is-truthy-array","0AL":"@stdlib/assert-is-truthy-array","0AM":"@stdlib/assert/is-truthy","0AN":"@stdlib/assert-is-truthy","0AO":"@stdlib/assert/is-type-error","0AP":"@stdlib/assert-is-type-error","0AQ":"@stdlib/assert/is-typed-array-length","0AR":"@stdlib/assert-is-typed-array-length","0AS":"@stdlib/assert/is-typed-array-like","0AT":"@stdlib/assert-is-typed-array-like","0AU":"@stdlib/assert/is-typed-array","0AV":"@stdlib/assert-is-typed-array","0AW":"@stdlib/assert/is-uint16array","0AX":"@stdlib/assert-is-uint16array","0AY":"@stdlib/assert/is-uint32array","0AZ":"@stdlib/assert-is-uint32array","2uq":"@stdlib/assert/is-uint64","2ur":"@stdlib/assert-is-uint64","0Aa":"@stdlib/assert/is-uint8array","0Ab":"@stdlib/assert-is-uint8array","0Ac":"@stdlib/assert/is-uint8clampedarray","0Ad":"@stdlib/assert-is-uint8clampedarray","0Ae":"@stdlib/assert/is-unc-path","0Af":"@stdlib/assert-is-unc-path","0Ag":"@stdlib/assert/is-undefined-or-null","0Ah":"@stdlib/assert-is-undefined-or-null","0Ai":"@stdlib/assert/is-undefined","0Aj":"@stdlib/assert-is-undefined","0Ak":"@stdlib/assert/is-unity-probability-array","0Al":"@stdlib/assert-is-unity-probability-array","0Am":"@stdlib/assert/is-uppercase","0An":"@stdlib/assert-is-uppercase","0Ao":"@stdlib/assert/is-uri-error","0Ap":"@stdlib/assert-is-uri-error","0Aq":"@stdlib/assert/is-uri","0Ar":"@stdlib/assert-is-uri","0As":"@stdlib/assert/is-vector-like","0At":"@stdlib/assert-is-vector-like","1zy":"@stdlib/assert/is-wasm-memory","1zz":"@stdlib/assert-is-wasm-memory","0Au":"@stdlib/assert/is-web-worker","0Av":"@stdlib/assert-is-web-worker","1sY":"@stdlib/assert/is-well-formed-string","1sZ":"@stdlib/assert-is-well-formed-string","0Aw":"@stdlib/assert/is-whitespace","0Ax":"@stdlib/assert-is-whitespace","0Ay":"@stdlib/assert/is-windows","0Az":"@stdlib/assert-is-windows","0B0":"@stdlib/assert/is-writable-property-in","0B1":"@stdlib/assert-is-writable-property-in","0B2":"@stdlib/assert/is-writable-property","0B3":"@stdlib/assert-is-writable-property","0B4":"@stdlib/assert/is-write-only-property-in","0B5":"@stdlib/assert-is-write-only-property-in","0B6":"@stdlib/assert/is-write-only-property","0B7":"@stdlib/assert-is-write-only-property","1aA":"@stdlib/assert/napi/equal-typedarray-types","1aB":"@stdlib/assert-napi-equal-typedarray-types","1aC":"@stdlib/assert/napi/equal-types","1aD":"@stdlib/assert-napi-equal-types","1uS":"@stdlib/assert/napi/has-property","1uT":"@stdlib/assert-napi-has-property","2KG":"@stdlib/assert/napi/is-dataview","2KH":"@stdlib/assert-napi-is-dataview","1aE":"@stdlib/assert/napi/is-type","1aF":"@stdlib/assert-napi-is-type","1aG":"@stdlib/assert/napi/is-typedarray","1aH":"@stdlib/assert-napi-is-typedarray","1aI":"@stdlib/assert/napi","1aJ":"@stdlib/assert-napi","1aK":"@stdlib/assert/napi/status-ok","1aL":"@stdlib/assert-napi-status-ok","0B9":"@stdlib/assert","0BA":"@stdlib/assert/tools/array-function","0BB":"@stdlib/assert-tools-array-function","0BC":"@stdlib/assert/tools/array-like-function","0BD":"@stdlib/assert-tools-array-like-function","0BE":"@stdlib/assert/tools","0BF":"@stdlib/assert-tools","0BG":"@stdlib/assert/tools/typed-array-function","0BH":"@stdlib/assert-tools-typed-array-function","0BI":"@stdlib/bench/harness","0BJ":"@stdlib/bench-harness","0BL":"@stdlib/bench","0BM":"@stdlib/bigint/ctor","0BN":"@stdlib/bigint-ctor","0BP":"@stdlib/bigint","1wU":"@stdlib/blas/base/assert/is-diagonal-type","1wV":"@stdlib/blas-base-assert-is-diagonal-type","1vY":"@stdlib/blas/base/assert/is-layout","1vZ":"@stdlib/blas-base-assert-is-layout","2NM":"@stdlib/blas/base/assert/is-matrix-orientation","2NN":"@stdlib/blas-base-assert-is-matrix-orientation","1va":"@stdlib/blas/base/assert/is-matrix-triangle","1vb":"@stdlib/blas-base-assert-is-matrix-triangle","1wW":"@stdlib/blas/base/assert/is-operation-side","1wX":"@stdlib/blas-base-assert-is-operation-side","1vc":"@stdlib/blas/base/assert/is-transpose-operation","1vd":"@stdlib/blas-base-assert-is-transpose-operation","1ve":"@stdlib/blas/base/assert","1vf":"@stdlib/blas-base-assert","1xo":"@stdlib/blas/base/caxpy","1xp":"@stdlib/blas-base-caxpy","0BQ":"@stdlib/blas/base/ccopy","0BR":"@stdlib/blas-base-ccopy","2dE":"@stdlib/blas/base/cgemv","2dF":"@stdlib/blas-base-cgemv","1vg":"@stdlib/blas/base/cscal","1vh":"@stdlib/blas-base-cscal","1xY":"@stdlib/blas/base/csrot","1xZ":"@stdlib/blas-base-csrot","2Hq":"@stdlib/blas/base/csscal","2Hr":"@stdlib/blas-base-csscal","0BS":"@stdlib/blas/base/cswap","0BT":"@stdlib/blas-base-cswap","0BU":"@stdlib/blas/base/dasum","0BV":"@stdlib/blas-base-dasum","0BW":"@stdlib/blas/base/daxpy","0BX":"@stdlib/blas-base-daxpy","1vi":"@stdlib/blas/base/dcabs1","1vj":"@stdlib/blas-base-dcabs1","0BY":"@stdlib/blas/base/dcopy","0BZ":"@stdlib/blas-base-dcopy","0Ba":"@stdlib/blas/base/ddot","0Bb":"@stdlib/blas-base-ddot","1z2":"@stdlib/blas/base/dgemm","1z3":"@stdlib/blas-base-dgemm","1yY":"@stdlib/blas/base/dgemv","1yZ":"@stdlib/blas-base-dgemv","1uU":"@stdlib/blas/base/dger","1uV":"@stdlib/blas-base-dger","1wy":"@stdlib/blas/base/diagonal-type-enum2str","1wz":"@stdlib/blas-base-diagonal-type-enum2str","1x0":"@stdlib/blas/base/diagonal-type-resolve-enum","1x1":"@stdlib/blas-base-diagonal-type-resolve-enum","1x2":"@stdlib/blas/base/diagonal-type-resolve-str","1x3":"@stdlib/blas-base-diagonal-type-resolve-str","1x4":"@stdlib/blas/base/diagonal-type-str2enum","1x5":"@stdlib/blas-base-diagonal-type-str2enum","1vk":"@stdlib/blas/base/diagonal-types","1vl":"@stdlib/blas-base-diagonal-types","0Bc":"@stdlib/blas/base/dnrm2","0Bd":"@stdlib/blas-base-dnrm2","1uW":"@stdlib/blas/base/drot","1uX":"@stdlib/blas-base-drot","1aM":"@stdlib/blas/base/drotg","1aN":"@stdlib/blas-base-drotg","1x6":"@stdlib/blas/base/drotm","1x7":"@stdlib/blas-base-drotm","0Be":"@stdlib/blas/base/dscal","0Bf":"@stdlib/blas-base-dscal","0Bg":"@stdlib/blas/base/dsdot","0Bh":"@stdlib/blas-base-dsdot","1x8":"@stdlib/blas/base/dspmv","1x9":"@stdlib/blas-base-dspmv","0Bi":"@stdlib/blas/base/dswap","0Bj":"@stdlib/blas-base-dswap","1xA":"@stdlib/blas/base/dsymv","1xB":"@stdlib/blas-base-dsymv","1ya":"@stdlib/blas/base/dsyr","1yb":"@stdlib/blas-base-dsyr","1yc":"@stdlib/blas/base/dsyr2","1yd":"@stdlib/blas-base-dsyr2","1ye":"@stdlib/blas/base/dtrmv","1yf":"@stdlib/blas-base-dtrmv","1z4":"@stdlib/blas/base/dtrsv","1z5":"@stdlib/blas-base-dtrsv","2dG":"@stdlib/blas/base/dzasum","2dH":"@stdlib/blas-base-dzasum","1xa":"@stdlib/blas/base/dznrm2","1xb":"@stdlib/blas-base-dznrm2","0Bk":"@stdlib/blas/base/gasum","0Bl":"@stdlib/blas-base-gasum","0Bm":"@stdlib/blas/base/gaxpy","0Bn":"@stdlib/blas-base-gaxpy","0Bo":"@stdlib/blas/base/gcopy","0Bp":"@stdlib/blas-base-gcopy","0Bq":"@stdlib/blas/base/gdot","0Br":"@stdlib/blas-base-gdot","2Sm":"@stdlib/blas/base/ggemm","2Sn":"@stdlib/blas-base-ggemm","2So":"@stdlib/blas/base/ggemv","2Sp":"@stdlib/blas-base-ggemv","2NO":"@stdlib/blas/base/gger","2NP":"@stdlib/blas-base-gger","0Bs":"@stdlib/blas/base/gnrm2","0Bt":"@stdlib/blas-base-gnrm2","0Bu":"@stdlib/blas/base/gscal","0Bv":"@stdlib/blas-base-gscal","0Bw":"@stdlib/blas/base/gswap","0Bx":"@stdlib/blas-base-gswap","2Sq":"@stdlib/blas/base/gsyr","2Sr":"@stdlib/blas-base-gsyr","1uY":"@stdlib/blas/base/idamax","1uZ":"@stdlib/blas-base-idamax","2NQ":"@stdlib/blas/base/igamax","2NR":"@stdlib/blas-base-igamax","1ua":"@stdlib/blas/base/isamax","1ub":"@stdlib/blas-base-isamax","1vm":"@stdlib/blas/base/layout-enum2str","1vn":"@stdlib/blas-base-layout-enum2str","1vo":"@stdlib/blas/base/layout-resolve-enum","1vp":"@stdlib/blas-base-layout-resolve-enum","1vq":"@stdlib/blas/base/layout-resolve-str","1vr":"@stdlib/blas-base-layout-resolve-str","1vs":"@stdlib/blas/base/layout-str2enum","1vt":"@stdlib/blas-base-layout-str2enum","1vu":"@stdlib/blas/base/layouts","1vv":"@stdlib/blas-base-layouts","2NS":"@stdlib/blas/base/matrix-orientation-enum2str","2NT":"@stdlib/blas-base-matrix-orientation-enum2str","2NU":"@stdlib/blas/base/matrix-orientation-resolve-enum","2NV":"@stdlib/blas-base-matrix-orientation-resolve-enum","2NW":"@stdlib/blas/base/matrix-orientation-resolve-str","2NX":"@stdlib/blas-base-matrix-orientation-resolve-str","2NY":"@stdlib/blas/base/matrix-orientation-str2enum","2NZ":"@stdlib/blas-base-matrix-orientation-str2enum","2Na":"@stdlib/blas/base/matrix-orientations","2Nb":"@stdlib/blas-base-matrix-orientations","1xC":"@stdlib/blas/base/matrix-triangle-enum2str","1xD":"@stdlib/blas-base-matrix-triangle-enum2str","1xE":"@stdlib/blas/base/matrix-triangle-resolve-enum","1xF":"@stdlib/blas-base-matrix-triangle-resolve-enum","1xG":"@stdlib/blas/base/matrix-triangle-resolve-str","1xH":"@stdlib/blas-base-matrix-triangle-resolve-str","1xI":"@stdlib/blas/base/matrix-triangle-str2enum","1xJ":"@stdlib/blas-base-matrix-triangle-str2enum","1vw":"@stdlib/blas/base/matrix-triangles","1vx":"@stdlib/blas-base-matrix-triangles","2dI":"@stdlib/blas/base/ndarray/caxpy","2dJ":"@stdlib/blas-base-ndarray-caxpy","2dK":"@stdlib/blas/base/ndarray/ccopy","2dL":"@stdlib/blas-base-ndarray-ccopy","2zY":"@stdlib/blas/base/ndarray/cgemv","2zZ":"@stdlib/blas-base-ndarray-cgemv","2dM":"@stdlib/blas/base/ndarray/cscal","2dN":"@stdlib/blas-base-ndarray-cscal","2dO":"@stdlib/blas/base/ndarray/csscal","2dP":"@stdlib/blas-base-ndarray-csscal","2dQ":"@stdlib/blas/base/ndarray/cswap","2dR":"@stdlib/blas-base-ndarray-cswap","2dS":"@stdlib/blas/base/ndarray/dasum","2dT":"@stdlib/blas-base-ndarray-dasum","2dU":"@stdlib/blas/base/ndarray/daxpy","2dV":"@stdlib/blas-base-ndarray-daxpy","2dW":"@stdlib/blas/base/ndarray/dcopy","2dX":"@stdlib/blas-base-ndarray-dcopy","2Ss":"@stdlib/blas/base/ndarray/ddot","2St":"@stdlib/blas-base-ndarray-ddot","2za":"@stdlib/blas/base/ndarray/dgemv","2zb":"@stdlib/blas-base-ndarray-dgemv","2zc":"@stdlib/blas/base/ndarray/dger","2zd":"@stdlib/blas-base-ndarray-dger","2dY":"@stdlib/blas/base/ndarray/dnrm2","2dZ":"@stdlib/blas-base-ndarray-dnrm2","2da":"@stdlib/blas/base/ndarray/dscal","2db":"@stdlib/blas-base-ndarray-dscal","2dc":"@stdlib/blas/base/ndarray/dsdot","2dd":"@stdlib/blas-base-ndarray-dsdot","2ze":"@stdlib/blas/base/ndarray/dspr","2zf":"@stdlib/blas-base-ndarray-dspr","2de":"@stdlib/blas/base/ndarray/dswap","2df":"@stdlib/blas-base-ndarray-dswap","2zg":"@stdlib/blas/base/ndarray/dsyr2","2zh":"@stdlib/blas-base-ndarray-dsyr2","2dg":"@stdlib/blas/base/ndarray/dzasum","2dh":"@stdlib/blas-base-ndarray-dzasum","2di":"@stdlib/blas/base/ndarray/dznrm2","2dj":"@stdlib/blas-base-ndarray-dznrm2","2dk":"@stdlib/blas/base/ndarray/gasum","2dl":"@stdlib/blas-base-ndarray-gasum","2dm":"@stdlib/blas/base/ndarray/gaxpy","2dn":"@stdlib/blas-base-ndarray-gaxpy","2do":"@stdlib/blas/base/ndarray/gcopy","2dp":"@stdlib/blas-base-ndarray-gcopy","2Su":"@stdlib/blas/base/ndarray/gdot","2Sv":"@stdlib/blas-base-ndarray-gdot","2zi":"@stdlib/blas/base/ndarray/ggemm","2zj":"@stdlib/blas-base-ndarray-ggemm","2zk":"@stdlib/blas/base/ndarray/ggemv","2zl":"@stdlib/blas-base-ndarray-ggemv","2zm":"@stdlib/blas/base/ndarray/gger","2zn":"@stdlib/blas-base-ndarray-gger","2dq":"@stdlib/blas/base/ndarray/gnrm2","2dr":"@stdlib/blas-base-ndarray-gnrm2","2ds":"@stdlib/blas/base/ndarray/gscal","2dt":"@stdlib/blas-base-ndarray-gscal","2du":"@stdlib/blas/base/ndarray/gswap","2dv":"@stdlib/blas-base-ndarray-gswap","2zo":"@stdlib/blas/base/ndarray/gsyr","2zp":"@stdlib/blas-base-ndarray-gsyr","2dw":"@stdlib/blas/base/ndarray/idamax","2dx":"@stdlib/blas-base-ndarray-idamax","2us":"@stdlib/blas/base/ndarray/igamax","2ut":"@stdlib/blas-base-ndarray-igamax","2uu":"@stdlib/blas/base/ndarray/isamax","2uv":"@stdlib/blas-base-ndarray-isamax","2dy":"@stdlib/blas/base/ndarray","2dz":"@stdlib/blas-base-ndarray","2e0":"@stdlib/blas/base/ndarray/sasum","2e1":"@stdlib/blas-base-ndarray-sasum","2e2":"@stdlib/blas/base/ndarray/saxpy","2e3":"@stdlib/blas-base-ndarray-saxpy","2e4":"@stdlib/blas/base/ndarray/scasum","2e5":"@stdlib/blas-base-ndarray-scasum","2e6":"@stdlib/blas/base/ndarray/scnrm2","2e7":"@stdlib/blas-base-ndarray-scnrm2","2e8":"@stdlib/blas/base/ndarray/scopy","2e9":"@stdlib/blas-base-ndarray-scopy","2Sw":"@stdlib/blas/base/ndarray/sdot","2Sx":"@stdlib/blas-base-ndarray-sdot","2eA":"@stdlib/blas/base/ndarray/sdsdot","2eB":"@stdlib/blas-base-ndarray-sdsdot","2zq":"@stdlib/blas/base/ndarray/sgemv","2zr":"@stdlib/blas-base-ndarray-sgemv","2zs":"@stdlib/blas/base/ndarray/sger","2zt":"@stdlib/blas-base-ndarray-sger","2eC":"@stdlib/blas/base/ndarray/snrm2","2eD":"@stdlib/blas-base-ndarray-snrm2","2eE":"@stdlib/blas/base/ndarray/sscal","2eF":"@stdlib/blas-base-ndarray-sscal","2zu":"@stdlib/blas/base/ndarray/sspr","2zv":"@stdlib/blas-base-ndarray-sspr","2eG":"@stdlib/blas/base/ndarray/sswap","2eH":"@stdlib/blas-base-ndarray-sswap","2eI":"@stdlib/blas/base/ndarray/zaxpy","2eJ":"@stdlib/blas-base-ndarray-zaxpy","2eK":"@stdlib/blas/base/ndarray/zcopy","2eL":"@stdlib/blas-base-ndarray-zcopy","2eM":"@stdlib/blas/base/ndarray/zdscal","2eN":"@stdlib/blas-base-ndarray-zdscal","2eO":"@stdlib/blas/base/ndarray/zscal","2eP":"@stdlib/blas-base-ndarray-zscal","2eQ":"@stdlib/blas/base/ndarray/zswap","2eR":"@stdlib/blas-base-ndarray-zswap","1xK":"@stdlib/blas/base/operation-side-enum2str","1xL":"@stdlib/blas-base-operation-side-enum2str","1xM":"@stdlib/blas/base/operation-side-resolve-enum","1xN":"@stdlib/blas-base-operation-side-resolve-enum","1xO":"@stdlib/blas/base/operation-side-resolve-str","1xP":"@stdlib/blas-base-operation-side-resolve-str","1xQ":"@stdlib/blas/base/operation-side-str2enum","1xR":"@stdlib/blas-base-operation-side-str2enum","1vy":"@stdlib/blas/base/operation-sides","1vz":"@stdlib/blas-base-operation-sides","0By":"@stdlib/blas/base","0Bz":"@stdlib/blas-base","0C0":"@stdlib/blas/base/sasum","0C1":"@stdlib/blas-base-sasum","0C2":"@stdlib/blas/base/saxpy","0C3":"@stdlib/blas-base-saxpy","1w0":"@stdlib/blas/base/scabs1","1w1":"@stdlib/blas-base-scabs1","1xq":"@stdlib/blas/base/scasum","1xr":"@stdlib/blas-base-scasum","1wY":"@stdlib/blas/base/scnrm2","1wZ":"@stdlib/blas-base-scnrm2","0C4":"@stdlib/blas/base/scopy","0C5":"@stdlib/blas-base-scopy","0C6":"@stdlib/blas/base/sdot","0C7":"@stdlib/blas-base-sdot","0C8":"@stdlib/blas/base/sdsdot","0C9":"@stdlib/blas-base-sdsdot","1z6":"@stdlib/blas/base/sgemm","1z7":"@stdlib/blas-base-sgemm","1yg":"@stdlib/blas/base/sgemv","1yh":"@stdlib/blas-base-sgemv","2Nc":"@stdlib/blas/base/sger","2Nd":"@stdlib/blas-base-sger","1uc":"@stdlib/blas/base/shared","1ud":"@stdlib/blas-base-shared","0CA":"@stdlib/blas/base/snrm2","0CB":"@stdlib/blas-base-snrm2","1ue":"@stdlib/blas/base/srot","1uf":"@stdlib/blas-base-srot","1aO":"@stdlib/blas/base/srotg","1aP":"@stdlib/blas-base-srotg","1wa":"@stdlib/blas/base/srotm","1wb":"@stdlib/blas-base-srotm","0CC":"@stdlib/blas/base/sscal","0CD":"@stdlib/blas-base-sscal","1wc":"@stdlib/blas/base/sspmv","1wd":"@stdlib/blas-base-sspmv","1z8":"@stdlib/blas/base/sspr","1z9":"@stdlib/blas-base-sspr","0CE":"@stdlib/blas/base/sswap","0CF":"@stdlib/blas-base-sswap","1we":"@stdlib/blas/base/ssymv","1wf":"@stdlib/blas-base-ssymv","1yi":"@stdlib/blas/base/ssyr","1yj":"@stdlib/blas-base-ssyr","1yk":"@stdlib/blas/base/ssyr2","1yl":"@stdlib/blas-base-ssyr2","1ym":"@stdlib/blas/base/strmv","1yn":"@stdlib/blas-base-strmv","1zA":"@stdlib/blas/base/strsv","1zB":"@stdlib/blas-base-strsv","1wg":"@stdlib/blas/base/transpose-operation-enum2str","1wh":"@stdlib/blas-base-transpose-operation-enum2str","1wi":"@stdlib/blas/base/transpose-operation-resolve-enum","1wj":"@stdlib/blas-base-transpose-operation-resolve-enum","1wk":"@stdlib/blas/base/transpose-operation-resolve-str","1wl":"@stdlib/blas-base-transpose-operation-resolve-str","1wm":"@stdlib/blas/base/transpose-operation-str2enum","1wn":"@stdlib/blas-base-transpose-operation-str2enum","1w2":"@stdlib/blas/base/transpose-operations","1w3":"@stdlib/blas-base-transpose-operations","26M":"@stdlib/blas/base/wasm/ccopy","26N":"@stdlib/blas-base-wasm-ccopy","26O":"@stdlib/blas/base/wasm/cscal","26P":"@stdlib/blas-base-wasm-cscal","26Q":"@stdlib/blas/base/wasm/csrot","26R":"@stdlib/blas-base-wasm-csrot","26S":"@stdlib/blas/base/wasm/cswap","26T":"@stdlib/blas-base-wasm-cswap","26U":"@stdlib/blas/base/wasm/dasum","26V":"@stdlib/blas-base-wasm-dasum","26W":"@stdlib/blas/base/wasm/daxpy","26X":"@stdlib/blas-base-wasm-daxpy","26Y":"@stdlib/blas/base/wasm/dcopy","26Z":"@stdlib/blas-base-wasm-dcopy","26a":"@stdlib/blas/base/wasm/ddot","26b":"@stdlib/blas-base-wasm-ddot","26c":"@stdlib/blas/base/wasm/dnrm2","26d":"@stdlib/blas-base-wasm-dnrm2","26e":"@stdlib/blas/base/wasm/drot","26f":"@stdlib/blas-base-wasm-drot","26g":"@stdlib/blas/base/wasm/drotm","26h":"@stdlib/blas-base-wasm-drotm","26i":"@stdlib/blas/base/wasm/dscal","26j":"@stdlib/blas-base-wasm-dscal","2FC":"@stdlib/blas/base/wasm/dsdot","2FD":"@stdlib/blas-base-wasm-dsdot","26k":"@stdlib/blas/base/wasm/dswap","26l":"@stdlib/blas-base-wasm-dswap","2Ne":"@stdlib/blas/base/wasm/dznrm2","2Nf":"@stdlib/blas-base-wasm-dznrm2","26m":"@stdlib/blas/base/wasm/idamax","26n":"@stdlib/blas-base-wasm-idamax","26o":"@stdlib/blas/base/wasm/isamax","26p":"@stdlib/blas-base-wasm-isamax","26q":"@stdlib/blas/base/wasm","26r":"@stdlib/blas-base-wasm","26s":"@stdlib/blas/base/wasm/sasum","26t":"@stdlib/blas-base-wasm-sasum","26u":"@stdlib/blas/base/wasm/saxpy","26v":"@stdlib/blas-base-wasm-saxpy","2Ng":"@stdlib/blas/base/wasm/scasum","2Nh":"@stdlib/blas-base-wasm-scasum","2Ni":"@stdlib/blas/base/wasm/scnrm2","2Nj":"@stdlib/blas-base-wasm-scnrm2","26w":"@stdlib/blas/base/wasm/scopy","26x":"@stdlib/blas-base-wasm-scopy","26y":"@stdlib/blas/base/wasm/sdot","26z":"@stdlib/blas-base-wasm-sdot","2GA":"@stdlib/blas/base/wasm/sdsdot","2GB":"@stdlib/blas-base-wasm-sdsdot","29c":"@stdlib/blas/base/wasm/srotm","29d":"@stdlib/blas-base-wasm-srotm","2Em":"@stdlib/blas/base/wasm/sswap","2En":"@stdlib/blas-base-wasm-sswap","2VI":"@stdlib/blas/base/wasm/zscal","2VJ":"@stdlib/blas-base-wasm-zscal","27A":"@stdlib/blas/base/wasm/zswap","27B":"@stdlib/blas-base-wasm-zswap","1ug":"@stdlib/blas/base/xerbla","1uh":"@stdlib/blas-base-xerbla","1xc":"@stdlib/blas/base/zaxpy","1xd":"@stdlib/blas-base-zaxpy","1t6":"@stdlib/blas/base/zcopy","1t7":"@stdlib/blas-base-zcopy","1xe":"@stdlib/blas/base/zdrot","1xf":"@stdlib/blas-base-zdrot","1wo":"@stdlib/blas/base/zscal","1wp":"@stdlib/blas-base-zscal","1t8":"@stdlib/blas/base/zswap","1t9":"@stdlib/blas-base-zswap","0CG":"@stdlib/blas/ddot","0CH":"@stdlib/blas-ddot","0CI":"@stdlib/blas/dswap","0CJ":"@stdlib/blas-dswap","2eS":"@stdlib/blas/ext/base/capx","2eT":"@stdlib/blas-ext-base-capx","2eU":"@stdlib/blas/ext/base/caxpb","2eV":"@stdlib/blas-ext-base-caxpb","2uw":"@stdlib/blas/ext/base/caxpby","2ux":"@stdlib/blas-ext-base-caxpby","2uy":"@stdlib/blas/ext/base/cdiff","2uz":"@stdlib/blas-ext-base-cdiff","2eW":"@stdlib/blas/ext/base/cindex-of-column","2eX":"@stdlib/blas-ext-base-cindex-of-column","2eY":"@stdlib/blas/ext/base/cindex-of-row","2eZ":"@stdlib/blas-ext-base-cindex-of-row","2ea":"@stdlib/blas/ext/base/cindex-of","2eb":"@stdlib/blas-ext-base-cindex-of","2ec":"@stdlib/blas/ext/base/clast-index-of-row","2ed":"@stdlib/blas-ext-base-clast-index-of-row","2ee":"@stdlib/blas/ext/base/cone-to","2ef":"@stdlib/blas-ext-base-cone-to","2zw":"@stdlib/blas/ext/base/creplicate","2zx":"@stdlib/blas-ext-base-creplicate","2Hs":"@stdlib/blas/ext/base/csum","2Ht":"@stdlib/blas-ext-base-csum","2Hu":"@stdlib/blas/ext/base/csumkbn","2Hv":"@stdlib/blas-ext-base-csumkbn","2eg":"@stdlib/blas/ext/base/cunitspace","2eh":"@stdlib/blas-ext-base-cunitspace","2xe":"@stdlib/blas/ext/base/cwapx","2xf":"@stdlib/blas-ext-base-cwapx","2zy":"@stdlib/blas/ext/base/cwax","2zz":"@stdlib/blas-ext-base-cwax","2ei":"@stdlib/blas/ext/base/cwhere","2ej":"@stdlib/blas-ext-base-cwhere","2v0":"@stdlib/blas/ext/base/cwxsa","2v1":"@stdlib/blas-ext-base-cwxsa","2v2":"@stdlib/blas/ext/base/cxpy","2v3":"@stdlib/blas-ext-base-cxpy","2ek":"@stdlib/blas/ext/base/cxsa","2el":"@stdlib/blas-ext-base-cxsa","2xg":"@stdlib/blas/ext/base/cxsy","2xh":"@stdlib/blas-ext-base-cxsy","2em":"@stdlib/blas/ext/base/czero-to","2en":"@stdlib/blas-ext-base-czero-to","2xi":"@stdlib/blas/ext/base/dany","2xj":"@stdlib/blas-ext-base-dany","0CK":"@stdlib/blas/ext/base/dapx","0CL":"@stdlib/blas-ext-base-dapx","0CM":"@stdlib/blas/ext/base/dapxsum","0CN":"@stdlib/blas-ext-base-dapxsum","0CO":"@stdlib/blas/ext/base/dapxsumkbn","0CP":"@stdlib/blas-ext-base-dapxsumkbn","0CQ":"@stdlib/blas/ext/base/dapxsumkbn2","0CR":"@stdlib/blas-ext-base-dapxsumkbn2","0CS":"@stdlib/blas/ext/base/dapxsumors","0CT":"@stdlib/blas-ext-base-dapxsumors","0CU":"@stdlib/blas/ext/base/dapxsumpw","0CV":"@stdlib/blas-ext-base-dapxsumpw","0CW":"@stdlib/blas/ext/base/dasumpw","0CX":"@stdlib/blas-ext-base-dasumpw","2eo":"@stdlib/blas/ext/base/daxpb","2ep":"@stdlib/blas-ext-base-daxpb","2v4":"@stdlib/blas/ext/base/daxpby","2v5":"@stdlib/blas-ext-base-daxpby","2eq":"@stdlib/blas/ext/base/dcartesian-power","2er":"@stdlib/blas-ext-base-dcartesian-power","2es":"@stdlib/blas/ext/base/dcartesian-product","2et":"@stdlib/blas-ext-base-dcartesian-product","2eu":"@stdlib/blas/ext/base/dcartesian-square","2ev":"@stdlib/blas-ext-base-dcartesian-square","2ew":"@stdlib/blas/ext/base/dcircshift","2ex":"@stdlib/blas-ext-base-dcircshift","2v6":"@stdlib/blas/ext/base/dcuany","2v7":"@stdlib/blas-ext-base-dcuany","2v8":"@stdlib/blas/ext/base/dcuevery","2v9":"@stdlib/blas-ext-base-dcuevery","2vA":"@stdlib/blas/ext/base/dcunone","2vB":"@stdlib/blas-ext-base-dcunone","2vC":"@stdlib/blas/ext/base/dcusome","2vD":"@stdlib/blas-ext-base-dcusome","0CY":"@stdlib/blas/ext/base/dcusum","0CZ":"@stdlib/blas-ext-base-dcusum","0Ca":"@stdlib/blas/ext/base/dcusumkbn","0Cb":"@stdlib/blas-ext-base-dcusumkbn","0Cc":"@stdlib/blas/ext/base/dcusumkbn2","0Cd":"@stdlib/blas-ext-base-dcusumkbn2","0Ce":"@stdlib/blas/ext/base/dcusumors","0Cf":"@stdlib/blas-ext-base-dcusumors","0Cg":"@stdlib/blas/ext/base/dcusumpw","0Ch":"@stdlib/blas-ext-base-dcusumpw","2ey":"@stdlib/blas/ext/base/ddiff","2ez":"@stdlib/blas-ext-base-ddiff","2f0":"@stdlib/blas/ext/base/dediff","2f1":"@stdlib/blas-ext-base-dediff","0Ci":"@stdlib/blas/ext/base/dfill","0Cj":"@stdlib/blas-ext-base-dfill","2f2":"@stdlib/blas/ext/base/dindex-of-column","2f3":"@stdlib/blas-ext-base-dindex-of-column","2vE":"@stdlib/blas/ext/base/dindex-of-falsy","2vF":"@stdlib/blas-ext-base-dindex-of-falsy","30A":"@stdlib/blas/ext/base/dindex-of-not-equal","30B":"@stdlib/blas-ext-base-dindex-of-not-equal","2f4":"@stdlib/blas/ext/base/dindex-of-row","2f5":"@stdlib/blas-ext-base-dindex-of-row","2vG":"@stdlib/blas/ext/base/dindex-of-truthy","2vH":"@stdlib/blas-ext-base-dindex-of-truthy","2Nk":"@stdlib/blas/ext/base/dindex-of","2Nl":"@stdlib/blas-ext-base-dindex-of","2xk":"@stdlib/blas/ext/base/dlast-index-of-falsy","2xl":"@stdlib/blas-ext-base-dlast-index-of-falsy","2f6":"@stdlib/blas/ext/base/dlast-index-of-row","2f7":"@stdlib/blas-ext-base-dlast-index-of-row","2xm":"@stdlib/blas/ext/base/dlast-index-of-truthy","2xn":"@stdlib/blas-ext-base-dlast-index-of-truthy","2Nm":"@stdlib/blas/ext/base/dlast-index-of","2Nn":"@stdlib/blas-ext-base-dlast-index-of","2Xk":"@stdlib/blas/ext/base/dlinspace","2Xl":"@stdlib/blas-ext-base-dlinspace","2xo":"@stdlib/blas/ext/base/dlogspace","2xp":"@stdlib/blas-ext-base-dlogspace","2vI":"@stdlib/blas/ext/base/dminheap-sift-down","2vJ":"@stdlib/blas-ext-base-dminheap-sift-down","2f8":"@stdlib/blas/ext/base/dmskrev","2f9":"@stdlib/blas-ext-base-dmskrev","0Ck":"@stdlib/blas/ext/base/dnanasum","0Cl":"@stdlib/blas-ext-base-dnanasum","0Cm":"@stdlib/blas/ext/base/dnanasumors","0Cn":"@stdlib/blas-ext-base-dnanasumors","2fA":"@stdlib/blas/ext/base/dnancount","2fB":"@stdlib/blas-ext-base-dnancount","2Gw":"@stdlib/blas/ext/base/dnancusumkbn","2Gx":"@stdlib/blas-ext-base-dnancusumkbn","0Co":"@stdlib/blas/ext/base/dnannsum","0Cp":"@stdlib/blas-ext-base-dnannsum","0Cq":"@stdlib/blas/ext/base/dnannsumkbn","0Cr":"@stdlib/blas-ext-base-dnannsumkbn","0Cs":"@stdlib/blas/ext/base/dnannsumkbn2","0Ct":"@stdlib/blas-ext-base-dnannsumkbn2","0Cu":"@stdlib/blas/ext/base/dnannsumors","0Cv":"@stdlib/blas-ext-base-dnannsumors","0Cw":"@stdlib/blas/ext/base/dnannsumpw","0Cx":"@stdlib/blas-ext-base-dnannsumpw","0Cy":"@stdlib/blas/ext/base/dnansum","0Cz":"@stdlib/blas-ext-base-dnansum","0D0":"@stdlib/blas/ext/base/dnansumkbn","0D1":"@stdlib/blas-ext-base-dnansumkbn","0D2":"@stdlib/blas/ext/base/dnansumkbn2","0D3":"@stdlib/blas-ext-base-dnansumkbn2","0D4":"@stdlib/blas/ext/base/dnansumors","0D5":"@stdlib/blas-ext-base-dnansumors","0D6":"@stdlib/blas/ext/base/dnansumpw","0D7":"@stdlib/blas-ext-base-dnansumpw","2vK":"@stdlib/blas/ext/base/dnone","2vL":"@stdlib/blas-ext-base-dnone","2fC":"@stdlib/blas/ext/base/done-to","2fD":"@stdlib/blas-ext-base-done-to","2vM":"@stdlib/blas/ext/base/dones","2vN":"@stdlib/blas-ext-base-dones","30C":"@stdlib/blas/ext/base/dreplicate","30D":"@stdlib/blas-ext-base-dreplicate","0D8":"@stdlib/blas/ext/base/drev","0D9":"@stdlib/blas-ext-base-drev","2YQ":"@stdlib/blas/ext/base/drrss","2YR":"@stdlib/blas-ext-base-drrss","2fE":"@stdlib/blas/ext/base/drss","2fF":"@stdlib/blas-ext-base-drss","2fG":"@stdlib/blas/ext/base/drssbl","2fH":"@stdlib/blas-ext-base-drssbl","2fI":"@stdlib/blas/ext/base/drsskbn","2fJ":"@stdlib/blas-ext-base-drsskbn","0DA":"@stdlib/blas/ext/base/dsapxsum","0DB":"@stdlib/blas-ext-base-dsapxsum","0DC":"@stdlib/blas/ext/base/dsapxsumpw","0DD":"@stdlib/blas-ext-base-dsapxsumpw","0DE":"@stdlib/blas/ext/base/dsnannsumors","0DF":"@stdlib/blas-ext-base-dsnannsumors","0DG":"@stdlib/blas/ext/base/dsnansum","0DH":"@stdlib/blas-ext-base-dsnansum","0DI":"@stdlib/blas/ext/base/dsnansumors","0DJ":"@stdlib/blas-ext-base-dsnansumors","0DK":"@stdlib/blas/ext/base/dsnansumpw","0DL":"@stdlib/blas-ext-base-dsnansumpw","2vO":"@stdlib/blas/ext/base/dsome","2vP":"@stdlib/blas-ext-base-dsome","2fK":"@stdlib/blas/ext/base/dsort","2fL":"@stdlib/blas-ext-base-dsort","0DM":"@stdlib/blas/ext/base/dsort2hp","0DN":"@stdlib/blas-ext-base-dsort2hp","0DO":"@stdlib/blas/ext/base/dsort2ins","0DP":"@stdlib/blas-ext-base-dsort2ins","0DQ":"@stdlib/blas/ext/base/dsort2sh","0DR":"@stdlib/blas-ext-base-dsort2sh","0DS":"@stdlib/blas/ext/base/dsorthp","0DT":"@stdlib/blas-ext-base-dsorthp","0DU":"@stdlib/blas/ext/base/dsortins","0DV":"@stdlib/blas-ext-base-dsortins","0DW":"@stdlib/blas/ext/base/dsortsh","0DX":"@stdlib/blas-ext-base-dsortsh","0DY":"@stdlib/blas/ext/base/dssum","0DZ":"@stdlib/blas-ext-base-dssum","0Da":"@stdlib/blas/ext/base/dssumors","0Db":"@stdlib/blas-ext-base-dssumors","0Dc":"@stdlib/blas/ext/base/dssumpw","0Dd":"@stdlib/blas-ext-base-dssumpw","0De":"@stdlib/blas/ext/base/dsum","0Df":"@stdlib/blas-ext-base-dsum","0Dg":"@stdlib/blas/ext/base/dsumkbn","0Dh":"@stdlib/blas-ext-base-dsumkbn","0Di":"@stdlib/blas/ext/base/dsumkbn2","0Dj":"@stdlib/blas-ext-base-dsumkbn2","0Dk":"@stdlib/blas/ext/base/dsumors","0Dl":"@stdlib/blas-ext-base-dsumors","0Dm":"@stdlib/blas/ext/base/dsumpw","0Dn":"@stdlib/blas-ext-base-dsumpw","2fM":"@stdlib/blas/ext/base/dunitspace","2fN":"@stdlib/blas-ext-base-dunitspace","2fO":"@stdlib/blas/ext/base/dvander","2fP":"@stdlib/blas-ext-base-dvander","2vQ":"@stdlib/blas/ext/base/dwapx","2vR":"@stdlib/blas-ext-base-dwapx","30E":"@stdlib/blas/ext/base/dwax","30F":"@stdlib/blas-ext-base-dwax","2fQ":"@stdlib/blas/ext/base/dwhere","2fR":"@stdlib/blas-ext-base-dwhere","2vS":"@stdlib/blas/ext/base/dwxsa","2vT":"@stdlib/blas-ext-base-dwxsa","30G":"@stdlib/blas/ext/base/dxdy","30H":"@stdlib/blas-ext-base-dxdy","2xq":"@stdlib/blas/ext/base/dxmy","2xr":"@stdlib/blas-ext-base-dxmy","2vU":"@stdlib/blas/ext/base/dxpy","2vV":"@stdlib/blas-ext-base-dxpy","2fS":"@stdlib/blas/ext/base/dxsa","2fT":"@stdlib/blas-ext-base-dxsa","2xs":"@stdlib/blas/ext/base/dxsy","2xt":"@stdlib/blas-ext-base-dxsy","2fU":"@stdlib/blas/ext/base/dzero-to","2fV":"@stdlib/blas-ext-base-dzero-to","2vW":"@stdlib/blas/ext/base/dzeros","2vX":"@stdlib/blas-ext-base-dzeros","2vY":"@stdlib/blas/ext/base/gany","2vZ":"@stdlib/blas-ext-base-gany","0Do":"@stdlib/blas/ext/base/gapx","0Dp":"@stdlib/blas-ext-base-gapx","0Dq":"@stdlib/blas/ext/base/gapxsum","0Dr":"@stdlib/blas-ext-base-gapxsum","0Ds":"@stdlib/blas/ext/base/gapxsumkbn","0Dt":"@stdlib/blas-ext-base-gapxsumkbn","0Du":"@stdlib/blas/ext/base/gapxsumkbn2","0Dv":"@stdlib/blas-ext-base-gapxsumkbn2","0Dw":"@stdlib/blas/ext/base/gapxsumors","0Dx":"@stdlib/blas-ext-base-gapxsumors","0Dy":"@stdlib/blas/ext/base/gapxsumpw","0Dz":"@stdlib/blas-ext-base-gapxsumpw","0E0":"@stdlib/blas/ext/base/gasumpw","0E1":"@stdlib/blas-ext-base-gasumpw","2fW":"@stdlib/blas/ext/base/gaxpb","2fX":"@stdlib/blas-ext-base-gaxpb","2fY":"@stdlib/blas/ext/base/gaxpby","2fZ":"@stdlib/blas-ext-base-gaxpby","2fa":"@stdlib/blas/ext/base/gcartesian-power","2fb":"@stdlib/blas-ext-base-gcartesian-power","2va":"@stdlib/blas/ext/base/gcartesian-product","2vb":"@stdlib/blas-ext-base-gcartesian-product","2fc":"@stdlib/blas/ext/base/gcartesian-square","2fd":"@stdlib/blas-ext-base-gcartesian-square","2fe":"@stdlib/blas/ext/base/gcircshift","2ff":"@stdlib/blas-ext-base-gcircshift","2fg":"@stdlib/blas/ext/base/gconjoin","2fh":"@stdlib/blas-ext-base-gconjoin","2vc":"@stdlib/blas/ext/base/gcuany","2vd":"@stdlib/blas-ext-base-gcuany","2fi":"@stdlib/blas/ext/base/gcuevery","2fj":"@stdlib/blas-ext-base-gcuevery","2fk":"@stdlib/blas/ext/base/gcunone","2fl":"@stdlib/blas-ext-base-gcunone","2ve":"@stdlib/blas/ext/base/gcusome","2vf":"@stdlib/blas-ext-base-gcusome","0E2":"@stdlib/blas/ext/base/gcusum","0E3":"@stdlib/blas-ext-base-gcusum","0E4":"@stdlib/blas/ext/base/gcusumkbn","0E5":"@stdlib/blas-ext-base-gcusumkbn","0E6":"@stdlib/blas/ext/base/gcusumkbn2","0E7":"@stdlib/blas-ext-base-gcusumkbn2","0E8":"@stdlib/blas/ext/base/gcusumors","0E9":"@stdlib/blas-ext-base-gcusumors","0EA":"@stdlib/blas/ext/base/gcusumpw","0EB":"@stdlib/blas-ext-base-gcusumpw","2fm":"@stdlib/blas/ext/base/gdiff","2fn":"@stdlib/blas-ext-base-gdiff","2vg":"@stdlib/blas/ext/base/gediff","2vh":"@stdlib/blas-ext-base-gediff","2vi":"@stdlib/blas/ext/base/gevery","2vj":"@stdlib/blas-ext-base-gevery","0EC":"@stdlib/blas/ext/base/gfill-by","0ED":"@stdlib/blas-ext-base-gfill-by","30I":"@stdlib/blas/ext/base/gfill-equal","30J":"@stdlib/blas-ext-base-gfill-equal","30K":"@stdlib/blas/ext/base/gfill-less-than","30L":"@stdlib/blas-ext-base-gfill-less-than","30M":"@stdlib/blas/ext/base/gfill-nan","30N":"@stdlib/blas-ext-base-gfill-nan","30O":"@stdlib/blas/ext/base/gfill-not-equal","30P":"@stdlib/blas-ext-base-gfill-not-equal","0EE":"@stdlib/blas/ext/base/gfill","0EF":"@stdlib/blas-ext-base-gfill","2Sy":"@stdlib/blas/ext/base/gfind-index","2Sz":"@stdlib/blas-ext-base-gfind-index","2T0":"@stdlib/blas/ext/base/gfind-last-index","2T1":"@stdlib/blas-ext-base-gfind-last-index","30Q":"@stdlib/blas/ext/base/gfirst-index-equal","30R":"@stdlib/blas-ext-base-gfirst-index-equal","30S":"@stdlib/blas/ext/base/gfirst-index-greater-than","30T":"@stdlib/blas-ext-base-gfirst-index-greater-than","30U":"@stdlib/blas/ext/base/gfirst-index-less-than","30V":"@stdlib/blas-ext-base-gfirst-index-less-than","30W":"@stdlib/blas/ext/base/gfirst-index-not-equal","30X":"@stdlib/blas-ext-base-gfirst-index-not-equal","2fo":"@stdlib/blas/ext/base/gindex-of-column","2fp":"@stdlib/blas-ext-base-gindex-of-column","2vk":"@stdlib/blas/ext/base/gindex-of-falsy","2vl":"@stdlib/blas-ext-base-gindex-of-falsy","30Y":"@stdlib/blas/ext/base/gindex-of-not-equal","30Z":"@stdlib/blas-ext-base-gindex-of-not-equal","2W2":"@stdlib/blas/ext/base/gindex-of-row","2W3":"@stdlib/blas-ext-base-gindex-of-row","30a":"@stdlib/blas/ext/base/gindex-of-same-value","30b":"@stdlib/blas-ext-base-gindex-of-same-value","2vm":"@stdlib/blas/ext/base/gindex-of-truthy","2vn":"@stdlib/blas-ext-base-gindex-of-truthy","2No":"@stdlib/blas/ext/base/gindex-of","2Np":"@stdlib/blas-ext-base-gindex-of","2fq":"@stdlib/blas/ext/base/gjoin-between","2fr":"@stdlib/blas-ext-base-gjoin-between","2Yw":"@stdlib/blas/ext/base/gjoin","2Yx":"@stdlib/blas-ext-base-gjoin","30c":"@stdlib/blas/ext/base/glast-index-equal","30d":"@stdlib/blas-ext-base-glast-index-equal","2xu":"@stdlib/blas/ext/base/glast-index-of-falsy","2xv":"@stdlib/blas-ext-base-glast-index-of-falsy","2fs":"@stdlib/blas/ext/base/glast-index-of-row","2ft":"@stdlib/blas-ext-base-glast-index-of-row","2vo":"@stdlib/blas/ext/base/glast-index-of-truthy","2vp":"@stdlib/blas-ext-base-glast-index-of-truthy","2Nq":"@stdlib/blas/ext/base/glast-index-of","2Nr":"@stdlib/blas-ext-base-glast-index-of","2Xm":"@stdlib/blas/ext/base/glinspace","2Xn":"@stdlib/blas-ext-base-glinspace","2xw":"@stdlib/blas/ext/base/glogspace","2xx":"@stdlib/blas-ext-base-glogspace","2vq":"@stdlib/blas/ext/base/gminheap-sift-down","2vr":"@stdlib/blas-ext-base-gminheap-sift-down","2vs":"@stdlib/blas/ext/base/gminheapify","2vt":"@stdlib/blas-ext-base-gminheapify","2fu":"@stdlib/blas/ext/base/gmskrev","2fv":"@stdlib/blas-ext-base-gmskrev","2fw":"@stdlib/blas/ext/base/gnancount","2fx":"@stdlib/blas-ext-base-gnancount","0EG":"@stdlib/blas/ext/base/gnannsumkbn","0EH":"@stdlib/blas-ext-base-gnannsumkbn","2Hw":"@stdlib/blas/ext/base/gnannsumpw","2Hx":"@stdlib/blas-ext-base-gnannsumpw","0EI":"@stdlib/blas/ext/base/gnansum","0EJ":"@stdlib/blas-ext-base-gnansum","0EK":"@stdlib/blas/ext/base/gnansumkbn","0EL":"@stdlib/blas-ext-base-gnansumkbn","0EM":"@stdlib/blas/ext/base/gnansumkbn2","0EN":"@stdlib/blas-ext-base-gnansumkbn2","0EO":"@stdlib/blas/ext/base/gnansumors","0EP":"@stdlib/blas-ext-base-gnansumors","0EQ":"@stdlib/blas/ext/base/gnansumpw","0ER":"@stdlib/blas-ext-base-gnansumpw","2vu":"@stdlib/blas/ext/base/gnone","2vv":"@stdlib/blas-ext-base-gnone","2fy":"@stdlib/blas/ext/base/gone-to","2fz":"@stdlib/blas-ext-base-gone-to","2g0":"@stdlib/blas/ext/base/greplicate","2g1":"@stdlib/blas-ext-base-greplicate","0ES":"@stdlib/blas/ext/base/grev","0ET":"@stdlib/blas-ext-base-grev","2vw":"@stdlib/blas/ext/base/gsome","2vx":"@stdlib/blas-ext-base-gsome","2g2":"@stdlib/blas/ext/base/gsort","2g3":"@stdlib/blas-ext-base-gsort","0EU":"@stdlib/blas/ext/base/gsort2hp","0EV":"@stdlib/blas-ext-base-gsort2hp","0EW":"@stdlib/blas/ext/base/gsort2ins","0EX":"@stdlib/blas-ext-base-gsort2ins","0EY":"@stdlib/blas/ext/base/gsort2sh","0EZ":"@stdlib/blas-ext-base-gsort2sh","0Ea":"@stdlib/blas/ext/base/gsorthp","0Eb":"@stdlib/blas-ext-base-gsorthp","0Ec":"@stdlib/blas/ext/base/gsortins","0Ed":"@stdlib/blas-ext-base-gsortins","0Ee":"@stdlib/blas/ext/base/gsortsh","0Ef":"@stdlib/blas-ext-base-gsortsh","0Eg":"@stdlib/blas/ext/base/gsum","0Eh":"@stdlib/blas-ext-base-gsum","0Ei":"@stdlib/blas/ext/base/gsumkbn","0Ej":"@stdlib/blas-ext-base-gsumkbn","0Ek":"@stdlib/blas/ext/base/gsumkbn2","0El":"@stdlib/blas-ext-base-gsumkbn2","0Em":"@stdlib/blas/ext/base/gsumors","0En":"@stdlib/blas-ext-base-gsumors","0Eo":"@stdlib/blas/ext/base/gsumpw","0Ep":"@stdlib/blas-ext-base-gsumpw","2g4":"@stdlib/blas/ext/base/gunitspace","2g5":"@stdlib/blas-ext-base-gunitspace","2g6":"@stdlib/blas/ext/base/gvander","2g7":"@stdlib/blas-ext-base-gvander","2vy":"@stdlib/blas/ext/base/gwapx","2vz":"@stdlib/blas-ext-base-gwapx","2xy":"@stdlib/blas/ext/base/gwax","2xz":"@stdlib/blas-ext-base-gwax","2y0":"@stdlib/blas/ext/base/gwaxpb","2y1":"@stdlib/blas-ext-base-gwaxpb","2g8":"@stdlib/blas/ext/base/gwhere","2g9":"@stdlib/blas-ext-base-gwhere","2y2":"@stdlib/blas/ext/base/gwxpy","2y3":"@stdlib/blas-ext-base-gwxpy","2w0":"@stdlib/blas/ext/base/gwxsa","2w1":"@stdlib/blas-ext-base-gwxsa","2y4":"@stdlib/blas/ext/base/gwxsy","2y5":"@stdlib/blas-ext-base-gwxsy","30e":"@stdlib/blas/ext/base/gxdy","30f":"@stdlib/blas-ext-base-gxdy","2y6":"@stdlib/blas/ext/base/gxmy","2y7":"@stdlib/blas-ext-base-gxmy","2w2":"@stdlib/blas/ext/base/gxpy","2w3":"@stdlib/blas-ext-base-gxpy","2gA":"@stdlib/blas/ext/base/gxsa","2gB":"@stdlib/blas-ext-base-gxsa","2y8":"@stdlib/blas/ext/base/gxsy","2y9":"@stdlib/blas-ext-base-gxsy","2gC":"@stdlib/blas/ext/base/gzero-to","2gD":"@stdlib/blas-ext-base-gzero-to","2gE":"@stdlib/blas/ext/base/ndarray/caxpb","2gF":"@stdlib/blas-ext-base-ndarray-caxpb","2w4":"@stdlib/blas/ext/base/ndarray/caxpby","2w5":"@stdlib/blas-ext-base-ndarray-caxpby","2gG":"@stdlib/blas/ext/base/ndarray/cindex-of","2gH":"@stdlib/blas-ext-base-ndarray-cindex-of","2gI":"@stdlib/blas/ext/base/ndarray/cone-to","2gJ":"@stdlib/blas-ext-base-ndarray-cone-to","2Hy":"@stdlib/blas/ext/base/ndarray/csum","2Hz":"@stdlib/blas-ext-base-ndarray-csum","2Yy":"@stdlib/blas/ext/base/ndarray/csumkbn","2Yz":"@stdlib/blas-ext-base-ndarray-csumkbn","2gK":"@stdlib/blas/ext/base/ndarray/cunitspace","2gL":"@stdlib/blas-ext-base-ndarray-cunitspace","30g":"@stdlib/blas/ext/base/ndarray/cxmy","30h":"@stdlib/blas-ext-base-ndarray-cxmy","2yA":"@stdlib/blas/ext/base/ndarray/cxpy","2yB":"@stdlib/blas-ext-base-ndarray-cxpy","2gM":"@stdlib/blas/ext/base/ndarray/cxsa","2gN":"@stdlib/blas-ext-base-ndarray-cxsa","2yC":"@stdlib/blas/ext/base/ndarray/cxsy","2yD":"@stdlib/blas-ext-base-ndarray-cxsy","2gO":"@stdlib/blas/ext/base/ndarray/czero-to","2gP":"@stdlib/blas-ext-base-ndarray-czero-to","30i":"@stdlib/blas/ext/base/ndarray/dany","30j":"@stdlib/blas-ext-base-ndarray-dany","2gQ":"@stdlib/blas/ext/base/ndarray/daxpb","2gR":"@stdlib/blas-ext-base-ndarray-daxpb","2w6":"@stdlib/blas/ext/base/ndarray/daxpby","2w7":"@stdlib/blas-ext-base-ndarray-daxpby","2gS":"@stdlib/blas/ext/base/ndarray/dcircshift","2gT":"@stdlib/blas-ext-base-ndarray-dcircshift","2FE":"@stdlib/blas/ext/base/ndarray/dcusum","2FF":"@stdlib/blas-ext-base-ndarray-dcusum","2Z0":"@stdlib/blas/ext/base/ndarray/dcusumkbn","2Z1":"@stdlib/blas-ext-base-ndarray-dcusumkbn","2Z2":"@stdlib/blas/ext/base/ndarray/dcusumkbn2","2Z3":"@stdlib/blas-ext-base-ndarray-dcusumkbn2","2gU":"@stdlib/blas/ext/base/ndarray/dcusumors","2gV":"@stdlib/blas-ext-base-ndarray-dcusumors","2gW":"@stdlib/blas/ext/base/ndarray/dcusumpw","2gX":"@stdlib/blas-ext-base-ndarray-dcusumpw","2w8":"@stdlib/blas/ext/base/ndarray/ddiff","2w9":"@stdlib/blas-ext-base-ndarray-ddiff","30k":"@stdlib/blas/ext/base/ndarray/dfill-not-equal","30l":"@stdlib/blas-ext-base-ndarray-dfill-not-equal","2wA":"@stdlib/blas/ext/base/ndarray/dindex-of-falsy","2wB":"@stdlib/blas-ext-base-ndarray-dindex-of-falsy","2Ns":"@stdlib/blas/ext/base/ndarray/dindex-of","2Nt":"@stdlib/blas-ext-base-ndarray-dindex-of","2Nu":"@stdlib/blas/ext/base/ndarray/dlast-index-of","2Nv":"@stdlib/blas-ext-base-ndarray-dlast-index-of","2Xo":"@stdlib/blas/ext/base/ndarray/dlinspace","2Xp":"@stdlib/blas-ext-base-ndarray-dlinspace","2gY":"@stdlib/blas/ext/base/ndarray/dnansum","2gZ":"@stdlib/blas-ext-base-ndarray-dnansum","2ga":"@stdlib/blas/ext/base/ndarray/dnansumkbn","2gb":"@stdlib/blas-ext-base-ndarray-dnansumkbn","2gc":"@stdlib/blas/ext/base/ndarray/dnansumkbn2","2gd":"@stdlib/blas-ext-base-ndarray-dnansumkbn2","2ge":"@stdlib/blas/ext/base/ndarray/dnansumors","2gf":"@stdlib/blas-ext-base-ndarray-dnansumors","2gg":"@stdlib/blas/ext/base/ndarray/dnansumpw","2gh":"@stdlib/blas-ext-base-ndarray-dnansumpw","2gi":"@stdlib/blas/ext/base/ndarray/done-to","2gj":"@stdlib/blas-ext-base-ndarray-done-to","2gk":"@stdlib/blas/ext/base/ndarray/dsort","2gl":"@stdlib/blas-ext-base-ndarray-dsort","2T2":"@stdlib/blas/ext/base/ndarray/dsorthp","2T3":"@stdlib/blas-ext-base-ndarray-dsorthp","2gm":"@stdlib/blas/ext/base/ndarray/dsortins","2gn":"@stdlib/blas-ext-base-ndarray-dsortins","2go":"@stdlib/blas/ext/base/ndarray/dsortsh","2gp":"@stdlib/blas-ext-base-ndarray-dsortsh","2FG":"@stdlib/blas/ext/base/ndarray/dsum","2FH":"@stdlib/blas-ext-base-ndarray-dsum","2Z4":"@stdlib/blas/ext/base/ndarray/dsumkbn","2Z5":"@stdlib/blas-ext-base-ndarray-dsumkbn","2Z6":"@stdlib/blas/ext/base/ndarray/dsumkbn2","2Z7":"@stdlib/blas-ext-base-ndarray-dsumkbn2","2gq":"@stdlib/blas/ext/base/ndarray/dsumors","2gr":"@stdlib/blas-ext-base-ndarray-dsumors","2gs":"@stdlib/blas/ext/base/ndarray/dsumpw","2gt":"@stdlib/blas-ext-base-ndarray-dsumpw","2gu":"@stdlib/blas/ext/base/ndarray/dunitspace","2gv":"@stdlib/blas-ext-base-ndarray-dunitspace","30m":"@stdlib/blas/ext/base/ndarray/dxmy","30n":"@stdlib/blas-ext-base-ndarray-dxmy","2yE":"@stdlib/blas/ext/base/ndarray/dxpy","2yF":"@stdlib/blas-ext-base-ndarray-dxpy","2gw":"@stdlib/blas/ext/base/ndarray/dxsa","2gx":"@stdlib/blas-ext-base-ndarray-dxsa","2yG":"@stdlib/blas/ext/base/ndarray/dxsy","2yH":"@stdlib/blas-ext-base-ndarray-dxsy","2gy":"@stdlib/blas/ext/base/ndarray/dzero-to","2gz":"@stdlib/blas-ext-base-ndarray-dzero-to","30o":"@stdlib/blas/ext/base/ndarray/gany","30p":"@stdlib/blas-ext-base-ndarray-gany","2h0":"@stdlib/blas/ext/base/ndarray/gaxpb","2h1":"@stdlib/blas-ext-base-ndarray-gaxpb","2wC":"@stdlib/blas/ext/base/ndarray/gaxpby","2wD":"@stdlib/blas-ext-base-ndarray-gaxpby","2h2":"@stdlib/blas/ext/base/ndarray/gcircshift","2h3":"@stdlib/blas-ext-base-ndarray-gcircshift","2FI":"@stdlib/blas/ext/base/ndarray/gcusum","2FJ":"@stdlib/blas-ext-base-ndarray-gcusum","2h4":"@stdlib/blas/ext/base/ndarray/gcusumkbn","2h5":"@stdlib/blas-ext-base-ndarray-gcusumkbn","2h6":"@stdlib/blas/ext/base/ndarray/gcusumkbn2","2h7":"@stdlib/blas-ext-base-ndarray-gcusumkbn2","2h8":"@stdlib/blas/ext/base/ndarray/gcusumors","2h9":"@stdlib/blas-ext-base-ndarray-gcusumors","2hA":"@stdlib/blas/ext/base/ndarray/gcusumpw","2hB":"@stdlib/blas-ext-base-ndarray-gcusumpw","30q":"@stdlib/blas/ext/base/ndarray/gfill-not-equal","30r":"@stdlib/blas-ext-base-ndarray-gfill-not-equal","2T4":"@stdlib/blas/ext/base/ndarray/gfind-index","2T5":"@stdlib/blas-ext-base-ndarray-gfind-index","2T6":"@stdlib/blas/ext/base/ndarray/gfind-last-index","2T7":"@stdlib/blas-ext-base-ndarray-gfind-last-index","2wE":"@stdlib/blas/ext/base/ndarray/gindex-of-falsy","2wF":"@stdlib/blas-ext-base-ndarray-gindex-of-falsy","2wG":"@stdlib/blas/ext/base/ndarray/gindex-of-truthy","2wH":"@stdlib/blas-ext-base-ndarray-gindex-of-truthy","2Nw":"@stdlib/blas/ext/base/ndarray/gindex-of","2Nx":"@stdlib/blas-ext-base-ndarray-gindex-of","2hC":"@stdlib/blas/ext/base/ndarray/gjoin-between","2hD":"@stdlib/blas-ext-base-ndarray-gjoin-between","2Z8":"@stdlib/blas/ext/base/ndarray/gjoin","2Z9":"@stdlib/blas-ext-base-ndarray-gjoin","2Ny":"@stdlib/blas/ext/base/ndarray/glast-index-of","2Nz":"@stdlib/blas-ext-base-ndarray-glast-index-of","2Xq":"@stdlib/blas/ext/base/ndarray/glinspace","2Xr":"@stdlib/blas-ext-base-ndarray-glinspace","2hE":"@stdlib/blas/ext/base/ndarray/gnansum","2hF":"@stdlib/blas-ext-base-ndarray-gnansum","2hG":"@stdlib/blas/ext/base/ndarray/gnansumkbn","2hH":"@stdlib/blas-ext-base-ndarray-gnansumkbn","2hI":"@stdlib/blas/ext/base/ndarray/gnansumkbn2","2hJ":"@stdlib/blas-ext-base-ndarray-gnansumkbn2","2hK":"@stdlib/blas/ext/base/ndarray/gnansumors","2hL":"@stdlib/blas-ext-base-ndarray-gnansumors","2hM":"@stdlib/blas/ext/base/ndarray/gnansumpw","2hN":"@stdlib/blas-ext-base-ndarray-gnansumpw","2hO":"@stdlib/blas/ext/base/ndarray/gone-to","2hP":"@stdlib/blas-ext-base-ndarray-gone-to","2hQ":"@stdlib/blas/ext/base/ndarray/gsort","2hR":"@stdlib/blas-ext-base-ndarray-gsort","2T8":"@stdlib/blas/ext/base/ndarray/gsorthp","2T9":"@stdlib/blas-ext-base-ndarray-gsorthp","2FK":"@stdlib/blas/ext/base/ndarray/gsum","2FL":"@stdlib/blas-ext-base-ndarray-gsum","2ZA":"@stdlib/blas/ext/base/ndarray/gsumkbn","2ZB":"@stdlib/blas-ext-base-ndarray-gsumkbn","2ZC":"@stdlib/blas/ext/base/ndarray/gsumkbn2","2ZD":"@stdlib/blas-ext-base-ndarray-gsumkbn2","2hS":"@stdlib/blas/ext/base/ndarray/gsumors","2hT":"@stdlib/blas-ext-base-ndarray-gsumors","2hU":"@stdlib/blas/ext/base/ndarray/gsumpw","2hV":"@stdlib/blas-ext-base-ndarray-gsumpw","2hW":"@stdlib/blas/ext/base/ndarray/gunitspace","2hX":"@stdlib/blas-ext-base-ndarray-gunitspace","30s":"@stdlib/blas/ext/base/ndarray/gxmy","30t":"@stdlib/blas-ext-base-ndarray-gxmy","2yI":"@stdlib/blas/ext/base/ndarray/gxpy","2yJ":"@stdlib/blas-ext-base-ndarray-gxpy","2wI":"@stdlib/blas/ext/base/ndarray/gxsa","2wJ":"@stdlib/blas-ext-base-ndarray-gxsa","2yK":"@stdlib/blas/ext/base/ndarray/gxsy","2yL":"@stdlib/blas-ext-base-ndarray-gxsy","2hY":"@stdlib/blas/ext/base/ndarray/gzero-to","2hZ":"@stdlib/blas-ext-base-ndarray-gzero-to","2FM":"@stdlib/blas/ext/base/ndarray","2FN":"@stdlib/blas-ext-base-ndarray","30u":"@stdlib/blas/ext/base/ndarray/sany","30v":"@stdlib/blas-ext-base-ndarray-sany","2ha":"@stdlib/blas/ext/base/ndarray/saxpb","2hb":"@stdlib/blas-ext-base-ndarray-saxpb","2wK":"@stdlib/blas/ext/base/ndarray/saxpby","2wL":"@stdlib/blas-ext-base-ndarray-saxpby","2hc":"@stdlib/blas/ext/base/ndarray/scircshift","2hd":"@stdlib/blas-ext-base-ndarray-scircshift","2wM":"@stdlib/blas/ext/base/ndarray/scunone","2wN":"@stdlib/blas-ext-base-ndarray-scunone","2FO":"@stdlib/blas/ext/base/ndarray/scusum","2FP":"@stdlib/blas-ext-base-ndarray-scusum","2ZE":"@stdlib/blas/ext/base/ndarray/scusumkbn","2ZF":"@stdlib/blas-ext-base-ndarray-scusumkbn","2ZG":"@stdlib/blas/ext/base/ndarray/scusumkbn2","2ZH":"@stdlib/blas-ext-base-ndarray-scusumkbn2","2he":"@stdlib/blas/ext/base/ndarray/scusumors","2hf":"@stdlib/blas-ext-base-ndarray-scusumors","30w":"@stdlib/blas/ext/base/ndarray/sfill-not-equal","30x":"@stdlib/blas-ext-base-ndarray-sfill-not-equal","2O0":"@stdlib/blas/ext/base/ndarray/sindex-of","2O1":"@stdlib/blas-ext-base-ndarray-sindex-of","2O2":"@stdlib/blas/ext/base/ndarray/slast-index-of","2O3":"@stdlib/blas-ext-base-ndarray-slast-index-of","2Xs":"@stdlib/blas/ext/base/ndarray/slinspace","2Xt":"@stdlib/blas-ext-base-ndarray-slinspace","2hg":"@stdlib/blas/ext/base/ndarray/snansum","2hh":"@stdlib/blas-ext-base-ndarray-snansum","2hi":"@stdlib/blas/ext/base/ndarray/snansumkbn","2hj":"@stdlib/blas-ext-base-ndarray-snansumkbn","2hk":"@stdlib/blas/ext/base/ndarray/snansumkbn2","2hl":"@stdlib/blas-ext-base-ndarray-snansumkbn2","2hm":"@stdlib/blas/ext/base/ndarray/snansumors","2hn":"@stdlib/blas-ext-base-ndarray-snansumors","2ho":"@stdlib/blas/ext/base/ndarray/snansumpw","2hp":"@stdlib/blas-ext-base-ndarray-snansumpw","2hq":"@stdlib/blas/ext/base/ndarray/sone-to","2hr":"@stdlib/blas-ext-base-ndarray-sone-to","2hs":"@stdlib/blas/ext/base/ndarray/ssort","2ht":"@stdlib/blas-ext-base-ndarray-ssort","2TA":"@stdlib/blas/ext/base/ndarray/ssorthp","2TB":"@stdlib/blas-ext-base-ndarray-ssorthp","2FQ":"@stdlib/blas/ext/base/ndarray/ssum","2FR":"@stdlib/blas-ext-base-ndarray-ssum","2ZI":"@stdlib/blas/ext/base/ndarray/ssumkbn","2ZJ":"@stdlib/blas-ext-base-ndarray-ssumkbn","2ZK":"@stdlib/blas/ext/base/ndarray/ssumkbn2","2ZL":"@stdlib/blas-ext-base-ndarray-ssumkbn2","2hu":"@stdlib/blas/ext/base/ndarray/ssumors","2hv":"@stdlib/blas-ext-base-ndarray-ssumors","2hw":"@stdlib/blas/ext/base/ndarray/ssumpw","2hx":"@stdlib/blas-ext-base-ndarray-ssumpw","2hy":"@stdlib/blas/ext/base/ndarray/sunitspace","2hz":"@stdlib/blas-ext-base-ndarray-sunitspace","30y":"@stdlib/blas/ext/base/ndarray/sxmy","30z":"@stdlib/blas-ext-base-ndarray-sxmy","2yM":"@stdlib/blas/ext/base/ndarray/sxpy","2yN":"@stdlib/blas-ext-base-ndarray-sxpy","2i0":"@stdlib/blas/ext/base/ndarray/sxsa","2i1":"@stdlib/blas-ext-base-ndarray-sxsa","2yO":"@stdlib/blas/ext/base/ndarray/sxsy","2yP":"@stdlib/blas-ext-base-ndarray-sxsy","2i2":"@stdlib/blas/ext/base/ndarray/szero-to","2i3":"@stdlib/blas-ext-base-ndarray-szero-to","2i4":"@stdlib/blas/ext/base/ndarray/zaxpb","2i5":"@stdlib/blas-ext-base-ndarray-zaxpb","2wO":"@stdlib/blas/ext/base/ndarray/zaxpby","2wP":"@stdlib/blas-ext-base-ndarray-zaxpby","2i6":"@stdlib/blas/ext/base/ndarray/zindex-of","2i7":"@stdlib/blas-ext-base-ndarray-zindex-of","2i8":"@stdlib/blas/ext/base/ndarray/zone-to","2i9":"@stdlib/blas-ext-base-ndarray-zone-to","2I0":"@stdlib/blas/ext/base/ndarray/zsum","2I1":"@stdlib/blas-ext-base-ndarray-zsum","2ZM":"@stdlib/blas/ext/base/ndarray/zsumkbn","2ZN":"@stdlib/blas-ext-base-ndarray-zsumkbn","2iA":"@stdlib/blas/ext/base/ndarray/zunitspace","2iB":"@stdlib/blas-ext-base-ndarray-zunitspace","2yQ":"@stdlib/blas/ext/base/ndarray/zxpy","2yR":"@stdlib/blas-ext-base-ndarray-zxpy","2wQ":"@stdlib/blas/ext/base/ndarray/zxsa","2wR":"@stdlib/blas-ext-base-ndarray-zxsa","2yS":"@stdlib/blas/ext/base/ndarray/zxsy","2yT":"@stdlib/blas-ext-base-ndarray-zxsy","2iC":"@stdlib/blas/ext/base/ndarray/zzero-to","2iD":"@stdlib/blas-ext-base-ndarray-zzero-to","0Eq":"@stdlib/blas/ext/base","0Er":"@stdlib/blas-ext-base","2zE":"@stdlib/blas/ext/base/sany","2zF":"@stdlib/blas-ext-base-sany","0Es":"@stdlib/blas/ext/base/sapx","0Et":"@stdlib/blas-ext-base-sapx","0Eu":"@stdlib/blas/ext/base/sapxsum","0Ev":"@stdlib/blas-ext-base-sapxsum","0Ew":"@stdlib/blas/ext/base/sapxsumkbn","0Ex":"@stdlib/blas-ext-base-sapxsumkbn","0Ey":"@stdlib/blas/ext/base/sapxsumkbn2","0Ez":"@stdlib/blas-ext-base-sapxsumkbn2","0F0":"@stdlib/blas/ext/base/sapxsumors","0F1":"@stdlib/blas-ext-base-sapxsumors","0F2":"@stdlib/blas/ext/base/sapxsumpw","0F3":"@stdlib/blas-ext-base-sapxsumpw","0F4":"@stdlib/blas/ext/base/sasumpw","0F5":"@stdlib/blas-ext-base-sasumpw","2iE":"@stdlib/blas/ext/base/saxpb","2iF":"@stdlib/blas-ext-base-saxpb","2wS":"@stdlib/blas/ext/base/saxpby","2wT":"@stdlib/blas-ext-base-saxpby","2iG":"@stdlib/blas/ext/base/scartesian-power","2iH":"@stdlib/blas-ext-base-scartesian-power","2wU":"@stdlib/blas/ext/base/scartesian-product","2wV":"@stdlib/blas-ext-base-scartesian-product","2iI":"@stdlib/blas/ext/base/scartesian-square","2iJ":"@stdlib/blas-ext-base-scartesian-square","2iK":"@stdlib/blas/ext/base/scircshift","2iL":"@stdlib/blas-ext-base-scircshift","2wW":"@stdlib/blas/ext/base/scuany","2wX":"@stdlib/blas-ext-base-scuany","2wY":"@stdlib/blas/ext/base/scuevery","2wZ":"@stdlib/blas-ext-base-scuevery","2wa":"@stdlib/blas/ext/base/scunone","2wb":"@stdlib/blas-ext-base-scunone","2wc":"@stdlib/blas/ext/base/scusome","2wd":"@stdlib/blas-ext-base-scusome","0F6":"@stdlib/blas/ext/base/scusum","0F7":"@stdlib/blas-ext-base-scusum","0F8":"@stdlib/blas/ext/base/scusumkbn","0F9":"@stdlib/blas-ext-base-scusumkbn","0FA":"@stdlib/blas/ext/base/scusumkbn2","0FB":"@stdlib/blas-ext-base-scusumkbn2","0FC":"@stdlib/blas/ext/base/scusumors","0FD":"@stdlib/blas-ext-base-scusumors","0FE":"@stdlib/blas/ext/base/scusumpw","0FF":"@stdlib/blas-ext-base-scusumpw","2iM":"@stdlib/blas/ext/base/sdiff","2iN":"@stdlib/blas-ext-base-sdiff","0FG":"@stdlib/blas/ext/base/sdsapxsum","0FH":"@stdlib/blas-ext-base-sdsapxsum","0FI":"@stdlib/blas/ext/base/sdsapxsumpw","0FJ":"@stdlib/blas-ext-base-sdsapxsumpw","0FK":"@stdlib/blas/ext/base/sdsnansum","0FL":"@stdlib/blas-ext-base-sdsnansum","0FM":"@stdlib/blas/ext/base/sdsnansumpw","0FN":"@stdlib/blas-ext-base-sdsnansumpw","0FO":"@stdlib/blas/ext/base/sdssum","0FP":"@stdlib/blas-ext-base-sdssum","0FQ":"@stdlib/blas/ext/base/sdssumpw","0FR":"@stdlib/blas-ext-base-sdssumpw","2iO":"@stdlib/blas/ext/base/sediff","2iP":"@stdlib/blas-ext-base-sediff","0FS":"@stdlib/blas/ext/base/sfill","0FT":"@stdlib/blas-ext-base-sfill","2iQ":"@stdlib/blas/ext/base/sindex-of-column","2iR":"@stdlib/blas-ext-base-sindex-of-column","2we":"@stdlib/blas/ext/base/sindex-of-falsy","2wf":"@stdlib/blas-ext-base-sindex-of-falsy","2iS":"@stdlib/blas/ext/base/sindex-of-row","2iT":"@stdlib/blas-ext-base-sindex-of-row","2wg":"@stdlib/blas/ext/base/sindex-of-truthy","2wh":"@stdlib/blas-ext-base-sindex-of-truthy","2O4":"@stdlib/blas/ext/base/sindex-of","2O5":"@stdlib/blas-ext-base-sindex-of","2yU":"@stdlib/blas/ext/base/slast-index-of-falsy","2yV":"@stdlib/blas-ext-base-slast-index-of-falsy","2iU":"@stdlib/blas/ext/base/slast-index-of-row","2iV":"@stdlib/blas-ext-base-slast-index-of-row","2yW":"@stdlib/blas/ext/base/slast-index-of-truthy","2yX":"@stdlib/blas-ext-base-slast-index-of-truthy","2O6":"@stdlib/blas/ext/base/slast-index-of","2O7":"@stdlib/blas-ext-base-slast-index-of","2Xu":"@stdlib/blas/ext/base/slinspace","2Xv":"@stdlib/blas-ext-base-slinspace","2yY":"@stdlib/blas/ext/base/slogspace","2yZ":"@stdlib/blas-ext-base-slogspace","2wi":"@stdlib/blas/ext/base/sminheap-sift-down","2wj":"@stdlib/blas-ext-base-sminheap-sift-down","2wk":"@stdlib/blas/ext/base/smskrev","2wl":"@stdlib/blas-ext-base-smskrev","2iW":"@stdlib/blas/ext/base/snancount","2iX":"@stdlib/blas-ext-base-snancount","0FU":"@stdlib/blas/ext/base/snansum","0FV":"@stdlib/blas-ext-base-snansum","0FW":"@stdlib/blas/ext/base/snansumkbn","0FX":"@stdlib/blas-ext-base-snansumkbn","0FY":"@stdlib/blas/ext/base/snansumkbn2","0FZ":"@stdlib/blas-ext-base-snansumkbn2","0Fa":"@stdlib/blas/ext/base/snansumors","0Fb":"@stdlib/blas-ext-base-snansumors","0Fc":"@stdlib/blas/ext/base/snansumpw","0Fd":"@stdlib/blas-ext-base-snansumpw","2ya":"@stdlib/blas/ext/base/snone","2yb":"@stdlib/blas-ext-base-snone","2iY":"@stdlib/blas/ext/base/sone-to","2iZ":"@stdlib/blas-ext-base-sone-to","2wm":"@stdlib/blas/ext/base/sones","2wn":"@stdlib/blas-ext-base-sones","31A":"@stdlib/blas/ext/base/sreplicate","31B":"@stdlib/blas-ext-base-sreplicate","0Fe":"@stdlib/blas/ext/base/srev","0Ff":"@stdlib/blas-ext-base-srev","2yc":"@stdlib/blas/ext/base/ssome","2yd":"@stdlib/blas-ext-base-ssome","2ia":"@stdlib/blas/ext/base/ssort","2ib":"@stdlib/blas-ext-base-ssort","0Fg":"@stdlib/blas/ext/base/ssort2hp","0Fh":"@stdlib/blas-ext-base-ssort2hp","0Fi":"@stdlib/blas/ext/base/ssort2ins","0Fj":"@stdlib/blas-ext-base-ssort2ins","0Fk":"@stdlib/blas/ext/base/ssort2sh","0Fl":"@stdlib/blas-ext-base-ssort2sh","0Fm":"@stdlib/blas/ext/base/ssorthp","0Fn":"@stdlib/blas-ext-base-ssorthp","0Fo":"@stdlib/blas/ext/base/ssortins","0Fp":"@stdlib/blas-ext-base-ssortins","0Fq":"@stdlib/blas/ext/base/ssortsh","0Fr":"@stdlib/blas-ext-base-ssortsh","0Fs":"@stdlib/blas/ext/base/ssum","0Ft":"@stdlib/blas-ext-base-ssum","0Fu":"@stdlib/blas/ext/base/ssumkbn","0Fv":"@stdlib/blas-ext-base-ssumkbn","0Fw":"@stdlib/blas/ext/base/ssumkbn2","0Fx":"@stdlib/blas-ext-base-ssumkbn2","0Fy":"@stdlib/blas/ext/base/ssumors","0Fz":"@stdlib/blas-ext-base-ssumors","0G0":"@stdlib/blas/ext/base/ssumpw","0G1":"@stdlib/blas-ext-base-ssumpw","2ic":"@stdlib/blas/ext/base/sunitspace","2id":"@stdlib/blas-ext-base-sunitspace","2ie":"@stdlib/blas/ext/base/svander","2if":"@stdlib/blas-ext-base-svander","2wo":"@stdlib/blas/ext/base/swapx","2wp":"@stdlib/blas-ext-base-swapx","31C":"@stdlib/blas/ext/base/swax","31D":"@stdlib/blas-ext-base-swax","2ig":"@stdlib/blas/ext/base/swhere","2ih":"@stdlib/blas-ext-base-swhere","2wq":"@stdlib/blas/ext/base/swxsa","2wr":"@stdlib/blas-ext-base-swxsa","31E":"@stdlib/blas/ext/base/sxdy","31F":"@stdlib/blas-ext-base-sxdy","2ye":"@stdlib/blas/ext/base/sxmy","2yf":"@stdlib/blas-ext-base-sxmy","2ws":"@stdlib/blas/ext/base/sxpy","2wt":"@stdlib/blas-ext-base-sxpy","2ii":"@stdlib/blas/ext/base/sxsa","2ij":"@stdlib/blas-ext-base-sxsa","2yg":"@stdlib/blas/ext/base/sxsy","2yh":"@stdlib/blas-ext-base-sxsy","2ik":"@stdlib/blas/ext/base/szero-to","2il":"@stdlib/blas-ext-base-szero-to","2wu":"@stdlib/blas/ext/base/szeros","2wv":"@stdlib/blas-ext-base-szeros","2Gy":"@stdlib/blas/ext/base/wasm/dapx","2Gz":"@stdlib/blas-ext-base-wasm-dapx","29e":"@stdlib/blas/ext/base/wasm/dapxsum","29f":"@stdlib/blas-ext-base-wasm-dapxsum","27C":"@stdlib/blas/ext/base/wasm/dapxsumkbn","27D":"@stdlib/blas-ext-base-wasm-dapxsumkbn","29g":"@stdlib/blas/ext/base/wasm/dapxsumors","29h":"@stdlib/blas-ext-base-wasm-dapxsumors","29i":"@stdlib/blas/ext/base/wasm/dapxsumpw","29j":"@stdlib/blas-ext-base-wasm-dapxsumpw","29k":"@stdlib/blas/ext/base/wasm/dasumpw","29l":"@stdlib/blas-ext-base-wasm-dasumpw","2GC":"@stdlib/blas/ext/base/wasm/dnanasumors","2GD":"@stdlib/blas-ext-base-wasm-dnanasumors","2O8":"@stdlib/blas/ext/base/wasm/dnansumkbn2","2O9":"@stdlib/blas-ext-base-wasm-dnansumkbn2","29m":"@stdlib/blas/ext/base/wasm/dnansumpw","29n":"@stdlib/blas-ext-base-wasm-dnansumpw","27E":"@stdlib/blas/ext/base/wasm","27F":"@stdlib/blas-ext-base-wasm","2GE":"@stdlib/blas/ext/base/wasm/sapxsumkbn","2GF":"@stdlib/blas-ext-base-wasm-sapxsumkbn","2im":"@stdlib/blas/ext/base/zapx","2in":"@stdlib/blas-ext-base-zapx","2io":"@stdlib/blas/ext/base/zaxpb","2ip":"@stdlib/blas-ext-base-zaxpb","2ww":"@stdlib/blas/ext/base/zaxpby","2wx":"@stdlib/blas-ext-base-zaxpby","2iq":"@stdlib/blas/ext/base/zdiff","2ir":"@stdlib/blas-ext-base-zdiff","21e":"@stdlib/blas/ext/base/zfill","21f":"@stdlib/blas-ext-base-zfill","2is":"@stdlib/blas/ext/base/zindex-of-column","2it":"@stdlib/blas-ext-base-zindex-of-column","2iu":"@stdlib/blas/ext/base/zindex-of-row","2iv":"@stdlib/blas-ext-base-zindex-of-row","31G":"@stdlib/blas/ext/base/zindex-of-truthy","31H":"@stdlib/blas-ext-base-zindex-of-truthy","2iw":"@stdlib/blas/ext/base/zindex-of","2ix":"@stdlib/blas-ext-base-zindex-of","2iy":"@stdlib/blas/ext/base/zlast-index-of-row","2iz":"@stdlib/blas-ext-base-zlast-index-of-row","2j0":"@stdlib/blas/ext/base/znancount","2j1":"@stdlib/blas-ext-base-znancount","2j2":"@stdlib/blas/ext/base/zone-to","2j3":"@stdlib/blas-ext-base-zone-to","31I":"@stdlib/blas/ext/base/zreplicate","31J":"@stdlib/blas-ext-base-zreplicate","2I2":"@stdlib/blas/ext/base/zsum","2I3":"@stdlib/blas-ext-base-zsum","2I4":"@stdlib/blas/ext/base/zsumkbn","2I5":"@stdlib/blas-ext-base-zsumkbn","2j4":"@stdlib/blas/ext/base/zunitspace","2j5":"@stdlib/blas-ext-base-zunitspace","2yi":"@stdlib/blas/ext/base/zwapx","2yj":"@stdlib/blas-ext-base-zwapx","31K":"@stdlib/blas/ext/base/zwax","31L":"@stdlib/blas-ext-base-zwax","2j6":"@stdlib/blas/ext/base/zwhere","2j7":"@stdlib/blas-ext-base-zwhere","2wy":"@stdlib/blas/ext/base/zwxsa","2wz":"@stdlib/blas-ext-base-zwxsa","31M":"@stdlib/blas/ext/base/zxmy","31N":"@stdlib/blas-ext-base-zxmy","2x0":"@stdlib/blas/ext/base/zxpy","2x1":"@stdlib/blas-ext-base-zxpy","2j8":"@stdlib/blas/ext/base/zxsa","2j9":"@stdlib/blas-ext-base-zxsa","2yk":"@stdlib/blas/ext/base/zxsy","2yl":"@stdlib/blas-ext-base-zxsy","2jA":"@stdlib/blas/ext/base/zzero-to","2jB":"@stdlib/blas-ext-base-zzero-to","2jC":"@stdlib/blas/ext/circshift","2jD":"@stdlib/blas-ext-circshift","2FS":"@stdlib/blas/ext/cusum","2FT":"@stdlib/blas-ext-cusum","2TC":"@stdlib/blas/ext/find-index","2TD":"@stdlib/blas-ext-find-index","2TE":"@stdlib/blas/ext/find-last-index","2TF":"@stdlib/blas-ext-find-last-index","2Ro":"@stdlib/blas/ext/index-of","2Rp":"@stdlib/blas-ext-index-of","2jE":"@stdlib/blas/ext/join","2jF":"@stdlib/blas-ext-join","2VK":"@stdlib/blas/ext/last-index-of","2VL":"@stdlib/blas-ext-last-index-of","2YS":"@stdlib/blas/ext/linspace","2YT":"@stdlib/blas-ext-linspace","2jG":"@stdlib/blas/ext/one-to","2jH":"@stdlib/blas-ext-one-to","0G2":"@stdlib/blas/ext","0G3":"@stdlib/blas-ext","2jI":"@stdlib/blas/ext/sort","2jJ":"@stdlib/blas-ext-sort","2WM":"@stdlib/blas/ext/sorthp","2WN":"@stdlib/blas-ext-sorthp","2FU":"@stdlib/blas/ext/sum","2FV":"@stdlib/blas-ext-sum","2jK":"@stdlib/blas/ext/to-sorted","2jL":"@stdlib/blas-ext-to-sorted","2Wm":"@stdlib/blas/ext/to-sortedhp","2Wn":"@stdlib/blas-ext-to-sortedhp","2jM":"@stdlib/blas/ext/unitspace","2jN":"@stdlib/blas-ext-unitspace","2jO":"@stdlib/blas/ext/zero-to","2jP":"@stdlib/blas-ext-zero-to","0G4":"@stdlib/blas/gdot","0G5":"@stdlib/blas-gdot","0G6":"@stdlib/blas/gswap","0G7":"@stdlib/blas-gswap","31O":"@stdlib/blas/nrm2","31P":"@stdlib/blas-nrm2","0G9":"@stdlib/blas","0GA":"@stdlib/blas/sdot","0GB":"@stdlib/blas-sdot","0GC":"@stdlib/blas/sswap","0GD":"@stdlib/blas-sswap","21g":"@stdlib/blas/tools","21h":"@stdlib/blas-tools","21i":"@stdlib/blas/tools/swap-factory","21j":"@stdlib/blas-tools-swap-factory","1aQ":"@stdlib/boolean/ctor","1aR":"@stdlib/boolean-ctor","1aT":"@stdlib/boolean","0GE":"@stdlib/buffer/alloc-unsafe","0GF":"@stdlib/buffer-alloc-unsafe","0GG":"@stdlib/buffer/ctor","0GH":"@stdlib/buffer-ctor","0GI":"@stdlib/buffer/from-array","0GJ":"@stdlib/buffer-from-array","0GK":"@stdlib/buffer/from-arraybuffer","0GL":"@stdlib/buffer-from-arraybuffer","0GM":"@stdlib/buffer/from-buffer","0GN":"@stdlib/buffer-from-buffer","0GO":"@stdlib/buffer/from-string","0GP":"@stdlib/buffer-from-string","0GR":"@stdlib/buffer","0GS":"@stdlib/buffer/reviver","0GT":"@stdlib/buffer-reviver","0GU":"@stdlib/buffer/to-json","0GV":"@stdlib/buffer-to-json","0GW":"@stdlib/cli/ctor","0GX":"@stdlib/cli-ctor","0GZ":"@stdlib/cli","2jQ":"@stdlib/complex/base/assert/is-almost-equal","2jR":"@stdlib/complex-base-assert-is-almost-equal","2jS":"@stdlib/complex/base/assert/is-almost-same-value","2jT":"@stdlib/complex-base-assert-is-almost-same-value","1po":"@stdlib/complex/base/assert","1pp":"@stdlib/complex-base-assert","1aU":"@stdlib/complex/base/cast-return","1aV":"@stdlib/complex-base-cast-return","1aW":"@stdlib/complex/base","1aX":"@stdlib/complex-base","1sa":"@stdlib/complex/base/parse","1sb":"@stdlib/complex-base-parse","0Ga":"@stdlib/complex/base/wrap-function","0Gb":"@stdlib/complex-base-wrap-function","0Gc":"@stdlib/complex/cmplx","0Gd":"@stdlib/complex-cmplx","0Gi":"@stdlib/complex/ctors","0Gj":"@stdlib/complex-ctors","0Gk":"@stdlib/complex/dtype","0Gl":"@stdlib/complex-dtype","0Gm":"@stdlib/complex/dtypes","0Gn":"@stdlib/complex-dtypes","1xs":"@stdlib/complex/float32/base/add","1xt":"@stdlib/complex-float32-base-add","2jU":"@stdlib/complex/float32/base/add3","2jV":"@stdlib/complex-float32-base-add3","2OA":"@stdlib/complex/float32/base/assert/is-almost-equal","2OB":"@stdlib/complex-float32-base-assert-is-almost-equal","2jW":"@stdlib/complex/float32/base/assert/is-almost-same-value","2jX":"@stdlib/complex-float32-base-assert-is-almost-same-value","1ui":"@stdlib/complex/float32/base/assert/is-equal","1uj":"@stdlib/complex-float32-base-assert-is-equal","1uk":"@stdlib/complex/float32/base/assert/is-not-equal","1ul":"@stdlib/complex-float32-base-assert-is-not-equal","1um":"@stdlib/complex/float32/base/assert/is-same-value-zero","1un":"@stdlib/complex-float32-base-assert-is-same-value-zero","1uo":"@stdlib/complex/float32/base/assert/is-same-value","1up":"@stdlib/complex-float32-base-assert-is-same-value","1xu":"@stdlib/complex/float32/base/assert","1xv":"@stdlib/complex-float32-base-assert","29o":"@stdlib/complex/float32/base/identity","29p":"@stdlib/complex-float32-base-identity","2VM":"@stdlib/complex/float32/base/mul-add","2VN":"@stdlib/complex-float32-base-mul-add","1xw":"@stdlib/complex/float32/base/mul","1xx":"@stdlib/complex-float32-base-mul","29q":"@stdlib/complex/float32/base/neg","29r":"@stdlib/complex-float32-base-neg","1xy":"@stdlib/complex/float32/base","1xz":"@stdlib/complex-float32-base","2I6":"@stdlib/complex/float32/base/scale","2I7":"@stdlib/complex-float32-base-scale","29s":"@stdlib/complex/float32/base/sub","29t":"@stdlib/complex-float32-base-sub","1y0":"@stdlib/complex/float32/conj","1y1":"@stdlib/complex-float32-conj","0Go":"@stdlib/complex/float32/ctor","1y2":"@stdlib/complex/float32/imag","1y3":"@stdlib/complex-float32-imag","1uq":"@stdlib/complex/float32","1ur":"@stdlib/complex-float32","1sc":"@stdlib/complex/float32/parse","1y4":"@stdlib/complex/float32/real","1y5":"@stdlib/complex-float32-real","1y6":"@stdlib/complex/float32/reim","1y7":"@stdlib/complex-float32-reim","0H8":"@stdlib/complex/float32/reviver","1y8":"@stdlib/complex/float64/base/add","1y9":"@stdlib/complex-float64-base-add","2jY":"@stdlib/complex/float64/base/add3","2jZ":"@stdlib/complex-float64-base-add3","2OC":"@stdlib/complex/float64/base/assert/is-almost-equal","2OD":"@stdlib/complex-float64-base-assert-is-almost-equal","2ja":"@stdlib/complex/float64/base/assert/is-almost-same-value","2jb":"@stdlib/complex-float64-base-assert-is-almost-same-value","1pY":"@stdlib/complex/float64/base/assert/is-equal","1us":"@stdlib/complex/float64/base/assert/is-not-equal","1ut":"@stdlib/complex-float64-base-assert-is-not-equal","1uu":"@stdlib/complex/float64/base/assert/is-same-value-zero","1uv":"@stdlib/complex-float64-base-assert-is-same-value-zero","1uw":"@stdlib/complex/float64/base/assert/is-same-value","1ux":"@stdlib/complex-float64-base-assert-is-same-value","1yA":"@stdlib/complex/float64/base/assert","1yB":"@stdlib/complex-float64-base-assert","29u":"@stdlib/complex/float64/base/div","29v":"@stdlib/complex-float64-base-div","29w":"@stdlib/complex/float64/base/identity","29x":"@stdlib/complex-float64-base-identity","27G":"@stdlib/complex/float64/base/mul-add","27H":"@stdlib/complex-float64-base-mul-add","1yC":"@stdlib/complex/float64/base/mul","1yD":"@stdlib/complex-float64-base-mul","29y":"@stdlib/complex/float64/base/neg","29z":"@stdlib/complex-float64-base-neg","1yE":"@stdlib/complex/float64/base","1yF":"@stdlib/complex-float64-base","27I":"@stdlib/complex/float64/base/scale","27J":"@stdlib/complex-float64-base-scale","2A0":"@stdlib/complex/float64/base/sub","2A1":"@stdlib/complex-float64-base-sub","1yG":"@stdlib/complex/float64/conj","1yH":"@stdlib/complex-float64-conj","0Gq":"@stdlib/complex/float64/ctor","1yI":"@stdlib/complex/float64/imag","1yJ":"@stdlib/complex-float64-imag","1uy":"@stdlib/complex/float64","1uz":"@stdlib/complex-float64","1se":"@stdlib/complex/float64/parse","1yK":"@stdlib/complex/float64/real","1yL":"@stdlib/complex-float64-real","1yM":"@stdlib/complex/float64/reim","1yN":"@stdlib/complex-float64-reim","0HA":"@stdlib/complex/float64/reviver","0Gx":"@stdlib/complex","0Gy":"@stdlib/complex/promotion-rules","0Gz":"@stdlib/complex-promotion-rules","0HC":"@stdlib/complex/reviver","0HD":"@stdlib/complex-reviver","2A2":"@stdlib/console/log-each-map","2A3":"@stdlib/console-log-each-map","1aY":"@stdlib/console/log-each","1aZ":"@stdlib/console-log-each","1aa":"@stdlib/console/log","1ab":"@stdlib/console-log","1ad":"@stdlib/console","0HE":"@stdlib/constants/array/max-array-length","0HF":"@stdlib/constants-array-max-array-length","0HG":"@stdlib/constants/array/max-typed-array-length","0HH":"@stdlib/constants-array-max-typed-array-length","0HI":"@stdlib/constants/array","0HJ":"@stdlib/constants-array","1pq":"@stdlib/constants/complex128/nan","1pr":"@stdlib/constants-complex128-nan","0HK":"@stdlib/constants/complex128/num-bytes","0HL":"@stdlib/constants-complex128-num-bytes","0HM":"@stdlib/constants/complex128","0HN":"@stdlib/constants-complex128","1ps":"@stdlib/constants/complex128/zero","1pt":"@stdlib/constants-complex128-zero","1pu":"@stdlib/constants/complex64/nan","1pv":"@stdlib/constants-complex64-nan","0HO":"@stdlib/constants/complex64/num-bytes","0HP":"@stdlib/constants-complex64-num-bytes","0HQ":"@stdlib/constants/complex64","0HR":"@stdlib/constants-complex64","1pw":"@stdlib/constants/complex64/zero","1px":"@stdlib/constants-complex64-zero","2jc":"@stdlib/constants/float16/abs-mask","2jd":"@stdlib/constants-float16-abs-mask","2ZO":"@stdlib/constants/float16/apery","2ZP":"@stdlib/constants-float16-apery","2ZQ":"@stdlib/constants/float16/catalan","2ZR":"@stdlib/constants-float16-catalan","0HS":"@stdlib/constants/float16/cbrt-eps","0HT":"@stdlib/constants-float16-cbrt-eps","2ZS":"@stdlib/constants/float16/e","2ZT":"@stdlib/constants-float16-e","0HU":"@stdlib/constants/float16/eps","0HV":"@stdlib/constants-float16-eps","2ZU":"@stdlib/constants/float16/eulergamma","2ZV":"@stdlib/constants-float16-eulergamma","0HW":"@stdlib/constants/float16/exponent-bias","0HX":"@stdlib/constants-float16-exponent-bias","2ZW":"@stdlib/constants/float16/exponent-mask","2ZX":"@stdlib/constants-float16-exponent-mask","2ZY":"@stdlib/constants/float16/fourth-pi","2ZZ":"@stdlib/constants-float16-fourth-pi","2je":"@stdlib/constants/float16/half-ln-two","2jf":"@stdlib/constants-float16-half-ln-two","2Za":"@stdlib/constants/float16/half-pi","2Zb":"@stdlib/constants-float16-half-pi","2jg":"@stdlib/constants/float16/ln-half","2jh":"@stdlib/constants-float16-ln-half","2ji":"@stdlib/constants/float16/ln-pi","2jj":"@stdlib/constants-float16-ln-pi","2jk":"@stdlib/constants/float16/ln-sqrt-two-pi","2jl":"@stdlib/constants-float16-ln-sqrt-two-pi","2jm":"@stdlib/constants/float16/ln-ten","2jn":"@stdlib/constants-float16-ln-ten","2jo":"@stdlib/constants/float16/ln-two-pi","2jp":"@stdlib/constants-float16-ln-two-pi","2jq":"@stdlib/constants/float16/ln-two","2jr":"@stdlib/constants-float16-ln-two","2js":"@stdlib/constants/float16/log10-e","2jt":"@stdlib/constants-float16-log10-e","2ju":"@stdlib/constants/float16/log2-e","2jv":"@stdlib/constants-float16-log2-e","2jw":"@stdlib/constants/float16/max-base10-exponent-subnormal","2jx":"@stdlib/constants-float16-max-base10-exponent-subnormal","2jy":"@stdlib/constants/float16/max-base10-exponent","2jz":"@stdlib/constants-float16-max-base10-exponent","2k0":"@stdlib/constants/float16/max-base2-exponent-subnormal","2k1":"@stdlib/constants-float16-max-base2-exponent-subnormal","2Zc":"@stdlib/constants/float16/max-base2-exponent","2Zd":"@stdlib/constants-float16-max-base2-exponent","2Ze":"@stdlib/constants/float16/max-ln","2Zf":"@stdlib/constants-float16-max-ln","0HY":"@stdlib/constants/float16/max-safe-integer","0HZ":"@stdlib/constants-float16-max-safe-integer","0Ha":"@stdlib/constants/float16/max","0Hb":"@stdlib/constants-float16-max","2k2":"@stdlib/constants/float16/min-base10-exponent-subnormal","2k3":"@stdlib/constants-float16-min-base10-exponent-subnormal","2k4":"@stdlib/constants/float16/min-base10-exponent","2k5":"@stdlib/constants-float16-min-base10-exponent","2k6":"@stdlib/constants/float16/min-base2-exponent-subnormal","2k7":"@stdlib/constants-float16-min-base2-exponent-subnormal","2Zg":"@stdlib/constants/float16/min-base2-exponent","2Zh":"@stdlib/constants-float16-min-base2-exponent","2Zi":"@stdlib/constants/float16/min-ln","2Zj":"@stdlib/constants-float16-min-ln","0Hc":"@stdlib/constants/float16/min-safe-integer","0Hd":"@stdlib/constants-float16-min-safe-integer","2k8":"@stdlib/constants/float16/nan","2k9":"@stdlib/constants-float16-nan","0He":"@stdlib/constants/float16/ninf","0Hf":"@stdlib/constants-float16-ninf","0Hg":"@stdlib/constants/float16/num-bytes","0Hh":"@stdlib/constants-float16-num-bytes","2Zk":"@stdlib/constants/float16/num-exponent-bits","2Zl":"@stdlib/constants-float16-num-exponent-bits","2Zm":"@stdlib/constants/float16/num-significand-bits","2Zn":"@stdlib/constants-float16-num-significand-bits","0Hi":"@stdlib/constants/float16","0Hj":"@stdlib/constants-float16","2Zo":"@stdlib/constants/float16/phi","2Zp":"@stdlib/constants-float16-phi","2Zq":"@stdlib/constants/float16/pi-squared","2Zr":"@stdlib/constants-float16-pi-squared","2Zs":"@stdlib/constants/float16/pi","2Zt":"@stdlib/constants-float16-pi","0Hk":"@stdlib/constants/float16/pinf","0Hl":"@stdlib/constants-float16-pinf","0Hm":"@stdlib/constants/float16/precision","0Hn":"@stdlib/constants-float16-precision","2Zu":"@stdlib/constants/float16/sign-mask","2Zv":"@stdlib/constants-float16-sign-mask","2Zw":"@stdlib/constants/float16/significand-mask","2Zx":"@stdlib/constants-float16-significand-mask","0Ho":"@stdlib/constants/float16/smallest-normal","0Hp":"@stdlib/constants-float16-smallest-normal","0Hq":"@stdlib/constants/float16/smallest-subnormal","0Hr":"@stdlib/constants-float16-smallest-subnormal","0Hs":"@stdlib/constants/float16/sqrt-eps","0Ht":"@stdlib/constants-float16-sqrt-eps","2kA":"@stdlib/constants/float16/sqrt-half","2kB":"@stdlib/constants-float16-sqrt-half","2kC":"@stdlib/constants/float16/sqrt-three","2kD":"@stdlib/constants-float16-sqrt-three","2kE":"@stdlib/constants/float16/sqrt-two-pi","2kF":"@stdlib/constants-float16-sqrt-two-pi","2Zy":"@stdlib/constants/float16/sqrt-two","2Zz":"@stdlib/constants-float16-sqrt-two","2a0":"@stdlib/constants/float16/two-pi","2a1":"@stdlib/constants-float16-two-pi","1ae":"@stdlib/constants/float32/abs-mask","1af":"@stdlib/constants-float32-abs-mask","2A4":"@stdlib/constants/float32/apery","2A5":"@stdlib/constants-float32-apery","2Dg":"@stdlib/constants/float32/catalan","2Dh":"@stdlib/constants-float32-catalan","0Hu":"@stdlib/constants/float32/cbrt-eps","0Hv":"@stdlib/constants-float32-cbrt-eps","22y":"@stdlib/constants/float32/e","22z":"@stdlib/constants-float32-e","0Hw":"@stdlib/constants/float32/eps","0Hx":"@stdlib/constants-float32-eps","2Di":"@stdlib/constants/float32/eulergamma","2Dj":"@stdlib/constants-float32-eulergamma","0Hy":"@stdlib/constants/float32/exponent-bias","0Hz":"@stdlib/constants-float32-exponent-bias","1ag":"@stdlib/constants/float32/exponent-mask","1ah":"@stdlib/constants-float32-exponent-mask","1tA":"@stdlib/constants/float32/fourth-pi","1tB":"@stdlib/constants-float32-fourth-pi","2Dk":"@stdlib/constants/float32/fourth-root-eps","2Dl":"@stdlib/constants-float32-fourth-root-eps","2A6":"@stdlib/constants/float32/gamma-lanczos-g","2A7":"@stdlib/constants-float32-gamma-lanczos-g","2a2":"@stdlib/constants/float32/glaisher-kinkelin","2a3":"@stdlib/constants-float32-glaisher-kinkelin","1tC":"@stdlib/constants/float32/half-pi","1tD":"@stdlib/constants-float32-half-pi","24G":"@stdlib/constants/float32/ln-half","24H":"@stdlib/constants-float32-ln-half","24I":"@stdlib/constants/float32/ln-pi","24J":"@stdlib/constants-float32-ln-pi","2A8":"@stdlib/constants/float32/ln-sqrt-two-pi","2A9":"@stdlib/constants-float32-ln-sqrt-two-pi","24K":"@stdlib/constants/float32/ln-ten","24L":"@stdlib/constants-float32-ln-ten","2AA":"@stdlib/constants/float32/ln-two-pi","2AB":"@stdlib/constants-float32-ln-two-pi","2AC":"@stdlib/constants/float32/log10-e","2AD":"@stdlib/constants-float32-log10-e","2AE":"@stdlib/constants/float32/log2-e","2AF":"@stdlib/constants-float32-log2-e","1zC":"@stdlib/constants/float32/max-base2-exponent-subnormal","1zD":"@stdlib/constants-float32-max-base2-exponent-subnormal","1zE":"@stdlib/constants/float32/max-base2-exponent","1zF":"@stdlib/constants-float32-max-base2-exponent","2Dm":"@stdlib/constants/float32/max-ln","2Dn":"@stdlib/constants-float32-max-ln","2FW":"@stdlib/constants/float32/max-nth-double-factorial","2FX":"@stdlib/constants-float32-max-nth-double-factorial","2FY":"@stdlib/constants/float32/max-nth-factorial","2FZ":"@stdlib/constants-float32-max-nth-factorial","21k":"@stdlib/constants/float32/max-safe-fibonacci","21l":"@stdlib/constants-float32-max-safe-fibonacci","0I0":"@stdlib/constants/float32/max-safe-integer","0I1":"@stdlib/constants-float32-max-safe-integer","2Do":"@stdlib/constants/float32/max-safe-lucas","2Dp":"@stdlib/constants-float32-max-safe-lucas","2AG":"@stdlib/constants/float32/max-safe-nth-double-factorial","2AH":"@stdlib/constants-float32-max-safe-nth-double-factorial","24M":"@stdlib/constants/float32/max-safe-nth-lucas","24N":"@stdlib/constants-float32-max-safe-nth-lucas","2AI":"@stdlib/constants/float32/max-safe-nth-tribonacci","2AJ":"@stdlib/constants-float32-max-safe-nth-tribonacci","0I2":"@stdlib/constants/float32/max","0I3":"@stdlib/constants-float32-max","23A":"@stdlib/constants/float32/min-base10-exponent","23B":"@stdlib/constants-float32-min-base10-exponent","1zG":"@stdlib/constants/float32/min-base2-exponent-subnormal","1zH":"@stdlib/constants-float32-min-base2-exponent-subnormal","23C":"@stdlib/constants/float32/min-base2-exponent","23D":"@stdlib/constants-float32-min-base2-exponent","2Dq":"@stdlib/constants/float32/min-ln","2Dr":"@stdlib/constants-float32-min-ln","0I4":"@stdlib/constants/float32/min-safe-integer","0I5":"@stdlib/constants-float32-min-safe-integer","1py":"@stdlib/constants/float32/nan","1pz":"@stdlib/constants-float32-nan","0I6":"@stdlib/constants/float32/ninf","0I7":"@stdlib/constants-float32-ninf","0I8":"@stdlib/constants/float32/num-bytes","0I9":"@stdlib/constants-float32-num-bytes","2kG":"@stdlib/constants/float32/num-exponent-bits","2kH":"@stdlib/constants-float32-num-exponent-bits","2AK":"@stdlib/constants/float32/num-significand-bits","2AL":"@stdlib/constants-float32-num-significand-bits","0IA":"@stdlib/constants/float32","0IB":"@stdlib/constants-float32","1v0":"@stdlib/constants/float32/phi","1v1":"@stdlib/constants-float32-phi","2AM":"@stdlib/constants/float32/pi-squared","2AN":"@stdlib/constants-float32-pi-squared","1tE":"@stdlib/constants/float32/pi","1tF":"@stdlib/constants-float32-pi","0IC":"@stdlib/constants/float32/pinf","0ID":"@stdlib/constants-float32-pinf","0IE":"@stdlib/constants/float32/precision","0IF":"@stdlib/constants-float32-precision","1ai":"@stdlib/constants/float32/sign-mask","1aj":"@stdlib/constants-float32-sign-mask","1ak":"@stdlib/constants/float32/significand-mask","1al":"@stdlib/constants-float32-significand-mask","0IG":"@stdlib/constants/float32/smallest-normal","0IH":"@stdlib/constants-float32-smallest-normal","0II":"@stdlib/constants/float32/smallest-subnormal","0IJ":"@stdlib/constants-float32-smallest-subnormal","0IK":"@stdlib/constants/float32/sqrt-eps","0IL":"@stdlib/constants-float32-sqrt-eps","24O":"@stdlib/constants/float32/sqrt-half-pi","24P":"@stdlib/constants-float32-sqrt-half-pi","24Q":"@stdlib/constants/float32/sqrt-half","24R":"@stdlib/constants-float32-sqrt-half","24S":"@stdlib/constants/float32/sqrt-phi","24T":"@stdlib/constants-float32-sqrt-phi","24U":"@stdlib/constants/float32/sqrt-pi","24V":"@stdlib/constants-float32-sqrt-pi","24W":"@stdlib/constants/float32/sqrt-three","24X":"@stdlib/constants-float32-sqrt-three","24Y":"@stdlib/constants/float32/sqrt-two-pi","24Z":"@stdlib/constants-float32-sqrt-two-pi","24a":"@stdlib/constants/float32/sqrt-two","24b":"@stdlib/constants-float32-sqrt-two","1tG":"@stdlib/constants/float32/two-pi","1tH":"@stdlib/constants-float32-two-pi","0IM":"@stdlib/constants/float64/apery","0IN":"@stdlib/constants-float64-apery","0IO":"@stdlib/constants/float64/catalan","0IP":"@stdlib/constants-float64-catalan","0IQ":"@stdlib/constants/float64/cbrt-eps","0IR":"@stdlib/constants-float64-cbrt-eps","0IS":"@stdlib/constants/float64/e","0IT":"@stdlib/constants-float64-e","0IU":"@stdlib/constants/float64/eps","0IV":"@stdlib/constants-float64-eps","0IW":"@stdlib/constants/float64/eulergamma","0IX":"@stdlib/constants-float64-eulergamma","0IY":"@stdlib/constants/float64/exponent-bias","0IZ":"@stdlib/constants-float64-exponent-bias","0Ia":"@stdlib/constants/float64/fourth-pi","0Ib":"@stdlib/constants-float64-fourth-pi","0Ic":"@stdlib/constants/float64/fourth-root-eps","0Id":"@stdlib/constants-float64-fourth-root-eps","0Ie":"@stdlib/constants/float64/gamma-lanczos-g","0If":"@stdlib/constants-float64-gamma-lanczos-g","0Ig":"@stdlib/constants/float64/glaisher-kinkelin","0Ih":"@stdlib/constants-float64-glaisher-kinkelin","0Ii":"@stdlib/constants/float64/half-ln-two","0Ij":"@stdlib/constants-float64-half-ln-two","0Ik":"@stdlib/constants/float64/half-pi","0Il":"@stdlib/constants-float64-half-pi","1am":"@stdlib/constants/float64/high-word-abs-mask","1an":"@stdlib/constants-float64-high-word-abs-mask","0Im":"@stdlib/constants/float64/high-word-exponent-mask","0In":"@stdlib/constants-float64-high-word-exponent-mask","1ao":"@stdlib/constants/float64/high-word-sign-mask","1ap":"@stdlib/constants-float64-high-word-sign-mask","0Io":"@stdlib/constants/float64/high-word-significand-mask","0Ip":"@stdlib/constants-float64-high-word-significand-mask","0Iq":"@stdlib/constants/float64/ln-half","0Ir":"@stdlib/constants-float64-ln-half","0Is":"@stdlib/constants/float64/ln-pi","0It":"@stdlib/constants-float64-ln-pi","0Iu":"@stdlib/constants/float64/ln-sqrt-two-pi","0Iv":"@stdlib/constants-float64-ln-sqrt-two-pi","0Iw":"@stdlib/constants/float64/ln-ten","0Ix":"@stdlib/constants-float64-ln-ten","0Iy":"@stdlib/constants/float64/ln-two-pi","0Iz":"@stdlib/constants-float64-ln-two-pi","0J0":"@stdlib/constants/float64/ln-two","0J1":"@stdlib/constants-float64-ln-two","0J2":"@stdlib/constants/float64/log10-e","0J3":"@stdlib/constants-float64-log10-e","0J4":"@stdlib/constants/float64/log2-e","0J5":"@stdlib/constants-float64-log2-e","0J6":"@stdlib/constants/float64/max-base10-exponent-subnormal","0J7":"@stdlib/constants-float64-max-base10-exponent-subnormal","0J8":"@stdlib/constants/float64/max-base10-exponent","0J9":"@stdlib/constants-float64-max-base10-exponent","0JA":"@stdlib/constants/float64/max-base2-exponent-subnormal","0JB":"@stdlib/constants-float64-max-base2-exponent-subnormal","0JC":"@stdlib/constants/float64/max-base2-exponent","0JD":"@stdlib/constants-float64-max-base2-exponent","0JE":"@stdlib/constants/float64/max-ln","0JF":"@stdlib/constants-float64-max-ln","2Fa":"@stdlib/constants/float64/max-nth-double-factorial","2Fb":"@stdlib/constants-float64-max-nth-double-factorial","2Fc":"@stdlib/constants/float64/max-nth-factorial","2Fd":"@stdlib/constants-float64-max-nth-factorial","0JG":"@stdlib/constants/float64/max-safe-fibonacci","0JH":"@stdlib/constants-float64-max-safe-fibonacci","0JI":"@stdlib/constants/float64/max-safe-integer","0JJ":"@stdlib/constants-float64-max-safe-integer","0JK":"@stdlib/constants/float64/max-safe-lucas","0JL":"@stdlib/constants-float64-max-safe-lucas","23E":"@stdlib/constants/float64/max-safe-nth-double-factorial","23F":"@stdlib/constants-float64-max-safe-nth-double-factorial","1yO":"@stdlib/constants/float64/max-safe-nth-factorial","1yP":"@stdlib/constants-float64-max-safe-nth-factorial","0JM":"@stdlib/constants/float64/max-safe-nth-fibonacci","0JN":"@stdlib/constants-float64-max-safe-nth-fibonacci","0JO":"@stdlib/constants/float64/max-safe-nth-lucas","0JP":"@stdlib/constants-float64-max-safe-nth-lucas","24c":"@stdlib/constants/float64/max-safe-nth-tribonacci","24d":"@stdlib/constants-float64-max-safe-nth-tribonacci","0JQ":"@stdlib/constants/float64/max","0JR":"@stdlib/constants-float64-max","0JS":"@stdlib/constants/float64/min-base10-exponent-subnormal","0JT":"@stdlib/constants-float64-min-base10-exponent-subnormal","0JU":"@stdlib/constants/float64/min-base10-exponent","0JV":"@stdlib/constants-float64-min-base10-exponent","0JW":"@stdlib/constants/float64/min-base2-exponent-subnormal","0JX":"@stdlib/constants-float64-min-base2-exponent-subnormal","0JY":"@stdlib/constants/float64/min-base2-exponent","0JZ":"@stdlib/constants-float64-min-base2-exponent","0Ja":"@stdlib/constants/float64/min-ln","0Jb":"@stdlib/constants-float64-min-ln","0Jc":"@stdlib/constants/float64/min-safe-integer","0Jd":"@stdlib/constants-float64-min-safe-integer","1q0":"@stdlib/constants/float64/nan","1q1":"@stdlib/constants-float64-nan","0Je":"@stdlib/constants/float64/ninf","0Jf":"@stdlib/constants-float64-ninf","0Jg":"@stdlib/constants/float64/num-bytes","0Jh":"@stdlib/constants-float64-num-bytes","20A":"@stdlib/constants/float64/num-high-word-significand-bits","20B":"@stdlib/constants-float64-num-high-word-significand-bits","0Ji":"@stdlib/constants/float64","0Jj":"@stdlib/constants-float64","0Jk":"@stdlib/constants/float64/phi","0Jl":"@stdlib/constants-float64-phi","0Jm":"@stdlib/constants/float64/pi-squared","0Jn":"@stdlib/constants-float64-pi-squared","0Jo":"@stdlib/constants/float64/pi","0Jp":"@stdlib/constants-float64-pi","0Jq":"@stdlib/constants/float64/pinf","0Jr":"@stdlib/constants-float64-pinf","0Js":"@stdlib/constants/float64/precision","0Jt":"@stdlib/constants-float64-precision","0Ju":"@stdlib/constants/float64/smallest-normal","0Jv":"@stdlib/constants-float64-smallest-normal","0Jw":"@stdlib/constants/float64/smallest-subnormal","0Jx":"@stdlib/constants-float64-smallest-subnormal","0Jy":"@stdlib/constants/float64/sqrt-eps","0Jz":"@stdlib/constants-float64-sqrt-eps","0K0":"@stdlib/constants/float64/sqrt-half-pi","0K1":"@stdlib/constants-float64-sqrt-half-pi","0K2":"@stdlib/constants/float64/sqrt-half","0K3":"@stdlib/constants-float64-sqrt-half","0K4":"@stdlib/constants/float64/sqrt-phi","0K5":"@stdlib/constants-float64-sqrt-phi","0K6":"@stdlib/constants/float64/sqrt-pi","0K7":"@stdlib/constants-float64-sqrt-pi","0K8":"@stdlib/constants/float64/sqrt-three","0K9":"@stdlib/constants-float64-sqrt-three","0KA":"@stdlib/constants/float64/sqrt-two-pi","0KB":"@stdlib/constants-float64-sqrt-two-pi","0KC":"@stdlib/constants/float64/sqrt-two","0KD":"@stdlib/constants-float64-sqrt-two","0KE":"@stdlib/constants/float64/two-pi","0KF":"@stdlib/constants-float64-two-pi","0KG":"@stdlib/constants/int16/max","0KH":"@stdlib/constants-int16-max","0KI":"@stdlib/constants/int16/min","0KJ":"@stdlib/constants-int16-min","0KK":"@stdlib/constants/int16/num-bytes","0KL":"@stdlib/constants-int16-num-bytes","0KM":"@stdlib/constants/int16","0KN":"@stdlib/constants-int16","0KO":"@stdlib/constants/int32/max","0KP":"@stdlib/constants-int32-max","0KQ":"@stdlib/constants/int32/min","0KR":"@stdlib/constants-int32-min","0KS":"@stdlib/constants/int32/num-bytes","0KT":"@stdlib/constants-int32-num-bytes","0KU":"@stdlib/constants/int32","0KV":"@stdlib/constants-int32","0KW":"@stdlib/constants/int8/max","0KX":"@stdlib/constants-int8-max","0KY":"@stdlib/constants/int8/min","0KZ":"@stdlib/constants-int8-min","0Ka":"@stdlib/constants/int8/num-bytes","0Kb":"@stdlib/constants-int8-num-bytes","0Kc":"@stdlib/constants/int8","0Kd":"@stdlib/constants-int8","0Kf":"@stdlib/constants","0Kg":"@stdlib/constants/path/delimiter-posix","0Kh":"@stdlib/constants-path-delimiter-posix","0Ki":"@stdlib/constants/path/delimiter-win32","0Kj":"@stdlib/constants-path-delimiter-win32","0Kk":"@stdlib/constants/path/delimiter","0Kl":"@stdlib/constants-path-delimiter","0Km":"@stdlib/constants/path","0Kn":"@stdlib/constants-path","0Ko":"@stdlib/constants/path/sep-posix","0Kp":"@stdlib/constants-path-sep-posix","0Kq":"@stdlib/constants/path/sep-win32","0Kr":"@stdlib/constants-path-sep-win32","0Ks":"@stdlib/constants/path/sep","0Kt":"@stdlib/constants-path-sep","0Ku":"@stdlib/constants/time/hours-in-day","0Kv":"@stdlib/constants-time-hours-in-day","0Kw":"@stdlib/constants/time/hours-in-week","0Kx":"@stdlib/constants-time-hours-in-week","0Ky":"@stdlib/constants/time/milliseconds-in-day","0Kz":"@stdlib/constants-time-milliseconds-in-day","0L0":"@stdlib/constants/time/milliseconds-in-hour","0L1":"@stdlib/constants-time-milliseconds-in-hour","0L2":"@stdlib/constants/time/milliseconds-in-minute","0L3":"@stdlib/constants-time-milliseconds-in-minute","0L4":"@stdlib/constants/time/milliseconds-in-second","0L5":"@stdlib/constants-time-milliseconds-in-second","0L6":"@stdlib/constants/time/milliseconds-in-week","0L7":"@stdlib/constants-time-milliseconds-in-week","0L8":"@stdlib/constants/time/minutes-in-day","0L9":"@stdlib/constants-time-minutes-in-day","0LA":"@stdlib/constants/time/minutes-in-hour","0LB":"@stdlib/constants-time-minutes-in-hour","0LC":"@stdlib/constants/time/minutes-in-week","0LD":"@stdlib/constants-time-minutes-in-week","0LE":"@stdlib/constants/time/months-in-year","0LF":"@stdlib/constants-time-months-in-year","0LG":"@stdlib/constants/time","0LH":"@stdlib/constants-time","0LI":"@stdlib/constants/time/seconds-in-day","0LJ":"@stdlib/constants-time-seconds-in-day","0LK":"@stdlib/constants/time/seconds-in-hour","0LL":"@stdlib/constants-time-seconds-in-hour","0LM":"@stdlib/constants/time/seconds-in-minute","0LN":"@stdlib/constants-time-seconds-in-minute","0LO":"@stdlib/constants/time/seconds-in-week","0LP":"@stdlib/constants-time-seconds-in-week","0LQ":"@stdlib/constants/uint16/max","0LR":"@stdlib/constants-uint16-max","0LS":"@stdlib/constants/uint16/num-bytes","0LT":"@stdlib/constants-uint16-num-bytes","0LU":"@stdlib/constants/uint16","0LV":"@stdlib/constants-uint16","0LW":"@stdlib/constants/uint32/max","0LX":"@stdlib/constants-uint32-max","0LY":"@stdlib/constants/uint32/num-bytes","0LZ":"@stdlib/constants-uint32-num-bytes","0La":"@stdlib/constants/uint32","0Lb":"@stdlib/constants-uint32","0Lc":"@stdlib/constants/uint8/max","0Ld":"@stdlib/constants-uint8-max","0Le":"@stdlib/constants/uint8/num-bytes","0Lf":"@stdlib/constants-uint8-num-bytes","0Lg":"@stdlib/constants/uint8","0Lh":"@stdlib/constants-uint8","0Li":"@stdlib/constants/unicode/max-bmp","0Lj":"@stdlib/constants-unicode-max-bmp","0Lk":"@stdlib/constants/unicode/max","0Ll":"@stdlib/constants-unicode-max","0Lm":"@stdlib/constants/unicode","0Ln":"@stdlib/constants-unicode","0Lo":"@stdlib/datasets/afinn-111","0Lp":"@stdlib/datasets-afinn-111","0Lq":"@stdlib/datasets/afinn-96","0Lr":"@stdlib/datasets-afinn-96","0Ls":"@stdlib/datasets/anscombes-quartet","0Lt":"@stdlib/datasets-anscombes-quartet","0Lu":"@stdlib/datasets/berndt-cps-wages-1985","0Lv":"@stdlib/datasets-berndt-cps-wages-1985","0Lw":"@stdlib/datasets/cdc-nchs-us-births-1969-1988","0Lx":"@stdlib/datasets-cdc-nchs-us-births-1969-1988","0Ly":"@stdlib/datasets/cdc-nchs-us-births-1994-2003","0Lz":"@stdlib/datasets-cdc-nchs-us-births-1994-2003","0M0":"@stdlib/datasets/cdc-nchs-us-infant-mortality-bw-1915-2013","0M1":"@stdlib/datasets-cdc-nchs-us-infant-mortality-bw-1915-2013","0M2":"@stdlib/datasets/cmudict","0M3":"@stdlib/datasets-cmudict","0M4":"@stdlib/datasets/dale-chall-new","0M5":"@stdlib/datasets-dale-chall-new","0M6":"@stdlib/datasets/emoji-code-picto","0M7":"@stdlib/datasets-emoji-code-picto","0M8":"@stdlib/datasets/emoji-picto-code","0M9":"@stdlib/datasets-emoji-picto-code","0MA":"@stdlib/datasets/emoji","0MB":"@stdlib/datasets-emoji","0MC":"@stdlib/datasets/female-first-names-en","0MD":"@stdlib/datasets-female-first-names-en","0ME":"@stdlib/datasets/fivethirtyeight-ffq","0MF":"@stdlib/datasets-fivethirtyeight-ffq","0MG":"@stdlib/datasets/frb-sf-wage-rigidity","0MH":"@stdlib/datasets-frb-sf-wage-rigidity","0MI":"@stdlib/datasets/harrison-boston-house-prices-corrected","0MJ":"@stdlib/datasets-harrison-boston-house-prices-corrected","0MK":"@stdlib/datasets/harrison-boston-house-prices","0ML":"@stdlib/datasets-harrison-boston-house-prices","0MM":"@stdlib/datasets/herndon-venus-semidiameters","0MN":"@stdlib/datasets-herndon-venus-semidiameters","0MO":"@stdlib/datasets/img-acanthus-mollis","0MP":"@stdlib/datasets-img-acanthus-mollis","0MQ":"@stdlib/datasets/img-airplane-from-above","0MR":"@stdlib/datasets-img-airplane-from-above","0MS":"@stdlib/datasets/img-allium-oreophilum","0MT":"@stdlib/datasets-img-allium-oreophilum","0MU":"@stdlib/datasets/img-black-canyon","0MV":"@stdlib/datasets-img-black-canyon","0MW":"@stdlib/datasets/img-dust-bowl-home","0MX":"@stdlib/datasets-img-dust-bowl-home","0MY":"@stdlib/datasets/img-french-alpine-landscape","0MZ":"@stdlib/datasets-img-french-alpine-landscape","0Ma":"@stdlib/datasets/img-locomotion-house-cat","0Mb":"@stdlib/datasets-img-locomotion-house-cat","0Mc":"@stdlib/datasets/img-locomotion-nude-male","0Md":"@stdlib/datasets-img-locomotion-nude-male","0Me":"@stdlib/datasets/img-march-pastoral","0Mf":"@stdlib/datasets-img-march-pastoral","0Mg":"@stdlib/datasets/img-nagasaki-boats","0Mh":"@stdlib/datasets-img-nagasaki-boats","0Mi":"@stdlib/datasets/liu-negative-opinion-words-en","0Mj":"@stdlib/datasets-liu-negative-opinion-words-en","0Mk":"@stdlib/datasets/liu-positive-opinion-words-en","0Ml":"@stdlib/datasets-liu-positive-opinion-words-en","0Mm":"@stdlib/datasets/male-first-names-en","0Mn":"@stdlib/datasets-male-first-names-en","0Mo":"@stdlib/datasets/minard-napoleons-march","0Mp":"@stdlib/datasets-minard-napoleons-march","0Mq":"@stdlib/datasets/moby-dick","0Mr":"@stdlib/datasets-moby-dick","0Ms":"@stdlib/datasets/month-names-en","0Mt":"@stdlib/datasets-month-names-en","0Mu":"@stdlib/datasets/nightingales-rose","0Mv":"@stdlib/datasets-nightingales-rose","0Mw":"@stdlib/datasets/pace-boston-house-prices","0Mx":"@stdlib/datasets-pace-boston-house-prices","0Mz":"@stdlib/datasets","0N0":"@stdlib/datasets/primes-100k","0N1":"@stdlib/datasets-primes-100k","0N2":"@stdlib/datasets/savoy-stopwords-fin","0N3":"@stdlib/datasets-savoy-stopwords-fin","0N4":"@stdlib/datasets/savoy-stopwords-fr","0N5":"@stdlib/datasets-savoy-stopwords-fr","0N6":"@stdlib/datasets/savoy-stopwords-ger","0N7":"@stdlib/datasets-savoy-stopwords-ger","0N8":"@stdlib/datasets/savoy-stopwords-it","0N9":"@stdlib/datasets-savoy-stopwords-it","0NA":"@stdlib/datasets/savoy-stopwords-por","0NB":"@stdlib/datasets-savoy-stopwords-por","0NC":"@stdlib/datasets/savoy-stopwords-sp","0ND":"@stdlib/datasets-savoy-stopwords-sp","0NE":"@stdlib/datasets/savoy-stopwords-swe","0NF":"@stdlib/datasets-savoy-stopwords-swe","0NG":"@stdlib/datasets/sotu","0NH":"@stdlib/datasets-sotu","0NI":"@stdlib/datasets/spache-revised","0NJ":"@stdlib/datasets-spache-revised","0NK":"@stdlib/datasets/spam-assassin","0NL":"@stdlib/datasets-spam-assassin","0NM":"@stdlib/datasets/ssa-us-births-2000-2014","0NN":"@stdlib/datasets-ssa-us-births-2000-2014","0NO":"@stdlib/datasets/standard-card-deck","0NP":"@stdlib/datasets-standard-card-deck","0NQ":"@stdlib/datasets/stopwords-en","0NR":"@stdlib/datasets-stopwords-en","0NS":"@stdlib/datasets/suthaharan-multi-hop-sensor-network","0NT":"@stdlib/datasets-suthaharan-multi-hop-sensor-network","0NU":"@stdlib/datasets/suthaharan-single-hop-sensor-network","0NV":"@stdlib/datasets-suthaharan-single-hop-sensor-network","0NW":"@stdlib/datasets/us-states-abbr","0NX":"@stdlib/datasets-us-states-abbr","0NY":"@stdlib/datasets/us-states-capitals-names","0NZ":"@stdlib/datasets-us-states-capitals-names","0Na":"@stdlib/datasets/us-states-capitals","0Nb":"@stdlib/datasets-us-states-capitals","0Nc":"@stdlib/datasets/us-states-names-capitals","0Nd":"@stdlib/datasets-us-states-names-capitals","0Ne":"@stdlib/datasets/us-states-names","0Nf":"@stdlib/datasets-us-states-names","27K":"@stdlib/dstructs/circular-buffer","27L":"@stdlib/dstructs-circular-buffer","27M":"@stdlib/dstructs/compact-adjacency-matrix","27N":"@stdlib/dstructs-compact-adjacency-matrix","27O":"@stdlib/dstructs/doubly-linked-list","27P":"@stdlib/dstructs-doubly-linked-list","27Q":"@stdlib/dstructs/fifo","27R":"@stdlib/dstructs-fifo","27S":"@stdlib/dstructs/linked-list","27T":"@stdlib/dstructs-linked-list","27U":"@stdlib/dstructs/named-typed-tuple","27V":"@stdlib/dstructs-named-typed-tuple","27X":"@stdlib/dstructs","27Y":"@stdlib/dstructs/stack","27Z":"@stdlib/dstructs-stack","2KI":"@stdlib/dstructs/struct","2KJ":"@stdlib/dstructs-struct","0Nh":"@stdlib/error","0Ni":"@stdlib/error/reviver","0Nj":"@stdlib/error-reviver","0Nk":"@stdlib/error/to-json","0Nl":"@stdlib/error-to-json","0Nm":"@stdlib/error/tools/database","0Nn":"@stdlib/error-tools-database","0No":"@stdlib/error/tools/fmtprodmsg-factory","0Np":"@stdlib/error-tools-fmtprodmsg-factory","0Nq":"@stdlib/error/tools/fmtprodmsg","0Nr":"@stdlib/error-tools-fmtprodmsg","0Ns":"@stdlib/error/tools/id2msg","0Nt":"@stdlib/error-tools-id2msg","0Nu":"@stdlib/error/tools/id2pkg","0Nv":"@stdlib/error-tools-id2pkg","0Nw":"@stdlib/error/tools/msg2id","0Nx":"@stdlib/error-tools-msg2id","0Ny":"@stdlib/error/tools","0Nz":"@stdlib/error-tools","0O0":"@stdlib/error/tools/pkg2id","0O1":"@stdlib/error-tools-pkg2id","2x2":"@stdlib/fft/base/fftpack/cffti","2x3":"@stdlib/fft-base-fftpack-cffti","2x4":"@stdlib/fft/base/fftpack/cosqi","2x5":"@stdlib/fft-base-fftpack-cosqi","31Q":"@stdlib/fft/base/fftpack/costi","31R":"@stdlib/fft-base-fftpack-costi","2kI":"@stdlib/fft/base/fftpack/decompose","2kJ":"@stdlib/fft-base-fftpack-decompose","2x6":"@stdlib/fft/base/fftpack","2x7":"@stdlib/fft-base-fftpack","2x8":"@stdlib/fft/base/fftpack/rffti","2x9":"@stdlib/fft-base-fftpack-rffti","2ym":"@stdlib/fft/base/fftpack/sinqi","2yn":"@stdlib/fft-base-fftpack-sinqi","31S":"@stdlib/fft/base/fftpack/sinti","31T":"@stdlib/fft-base-fftpack-sinti","2xA":"@stdlib/fft/base","2xB":"@stdlib/fft-base","2xD":"@stdlib/fft","1v2":"@stdlib/fs/append-file","1v3":"@stdlib/fs-append-file","0O2":"@stdlib/fs/close","0O3":"@stdlib/fs-close","0O4":"@stdlib/fs/exists","0O5":"@stdlib/fs-exists","0O6":"@stdlib/fs/open","0O7":"@stdlib/fs-open","0O9":"@stdlib/fs","0OA":"@stdlib/fs/read-dir","0OB":"@stdlib/fs-read-dir","0OC":"@stdlib/fs/read-file-list","0OD":"@stdlib/fs-read-file-list","0OE":"@stdlib/fs/read-file","0OF":"@stdlib/fs-read-file","0OG":"@stdlib/fs/read-json","0OH":"@stdlib/fs-read-json","23G":"@stdlib/fs/read-ndjson","23H":"@stdlib/fs-read-ndjson","0OI":"@stdlib/fs/read-wasm","0OJ":"@stdlib/fs-read-wasm","0OK":"@stdlib/fs/rename","0OL":"@stdlib/fs-rename","0OM":"@stdlib/fs/resolve-parent-path-by","0ON":"@stdlib/fs-resolve-parent-path-by","0OO":"@stdlib/fs/resolve-parent-path","0OP":"@stdlib/fs-resolve-parent-path","1yS":"@stdlib/fs/resolve-parent-paths","1yT":"@stdlib/fs-resolve-parent-paths","0OQ":"@stdlib/fs/unlink","0OR":"@stdlib/fs-unlink","0OS":"@stdlib/fs/write-file","0OT":"@stdlib/fs-write-file","1aq":"@stdlib/function/ctor","1ar":"@stdlib/function-ctor","1at":"@stdlib/function","27a":"@stdlib/function/thunk","27b":"@stdlib/function-thunk","1au":"@stdlib/function/to-string","1av":"@stdlib/function-to-string","0OU":"@stdlib/iter/advance","0OV":"@stdlib/iter-advance","0OW":"@stdlib/iter/any-by","0OX":"@stdlib/iter-any-by","0OY":"@stdlib/iter/any","0OZ":"@stdlib/iter-any","0Oa":"@stdlib/iter/concat","0Ob":"@stdlib/iter-concat","0Oc":"@stdlib/iter/constant","0Od":"@stdlib/iter-constant","0Oe":"@stdlib/iter/counter","0Of":"@stdlib/iter-counter","23I":"@stdlib/iter/cuany-by","23J":"@stdlib/iter-cuany-by","1xS":"@stdlib/iter/cuany","1xT":"@stdlib/iter-cuany","23K":"@stdlib/iter/cuevery-by","23L":"@stdlib/iter-cuevery-by","23M":"@stdlib/iter/cuevery","23N":"@stdlib/iter-cuevery","1zI":"@stdlib/iter/cunone-by","1zJ":"@stdlib/iter-cunone-by","23O":"@stdlib/iter/cunone","23P":"@stdlib/iter-cunone","23Q":"@stdlib/iter/cusome-by","23R":"@stdlib/iter-cusome-by","1yU":"@stdlib/iter/cusome","1yV":"@stdlib/iter-cusome","0Og":"@stdlib/iter/datespace","0Oh":"@stdlib/iter-datespace","0Oi":"@stdlib/iter/dedupe-by","0Oj":"@stdlib/iter-dedupe-by","0Ok":"@stdlib/iter/dedupe","0Ol":"@stdlib/iter-dedupe","1tI":"@stdlib/iter/do-until-each","1tJ":"@stdlib/iter-do-until-each","1tK":"@stdlib/iter/do-while-each","1tL":"@stdlib/iter-do-while-each","0Om":"@stdlib/iter/empty","0On":"@stdlib/iter-empty","0Oo":"@stdlib/iter/every-by","0Op":"@stdlib/iter-every-by","0Oq":"@stdlib/iter/every","0Or":"@stdlib/iter-every","0Os":"@stdlib/iter/fill","0Ot":"@stdlib/iter-fill","0Ou":"@stdlib/iter/filter-map","0Ov":"@stdlib/iter-filter-map","0Ow":"@stdlib/iter/filter","0Ox":"@stdlib/iter-filter","0Oy":"@stdlib/iter/first","0Oz":"@stdlib/iter-first","0P0":"@stdlib/iter/flow","0P1":"@stdlib/iter-flow","0P2":"@stdlib/iter/for-each","0P3":"@stdlib/iter-for-each","0P4":"@stdlib/iter/head","0P5":"@stdlib/iter-head","0P6":"@stdlib/iter/incrspace","0P7":"@stdlib/iter-incrspace","0P8":"@stdlib/iter/intersection-by-hash","0P9":"@stdlib/iter-intersection-by-hash","0PA":"@stdlib/iter/intersection","0PB":"@stdlib/iter-intersection","0PC":"@stdlib/iter/last","0PD":"@stdlib/iter-last","0PE":"@stdlib/iter/length","0PF":"@stdlib/iter-length","0PG":"@stdlib/iter/linspace","0PH":"@stdlib/iter-linspace","0PI":"@stdlib/iter/logspace","0PJ":"@stdlib/iter-logspace","0PK":"@stdlib/iter/map","0PL":"@stdlib/iter-map","0PM":"@stdlib/iter/mapn","0PN":"@stdlib/iter-mapn","0PO":"@stdlib/iter/none-by","0PP":"@stdlib/iter-none-by","0PQ":"@stdlib/iter/none","0PR":"@stdlib/iter-none","0PS":"@stdlib/iter/nth","0PT":"@stdlib/iter-nth","0PV":"@stdlib/iter","0PW":"@stdlib/iter/pipeline-thunk","0PX":"@stdlib/iter-pipeline-thunk","0PY":"@stdlib/iter/pipeline","0PZ":"@stdlib/iter-pipeline","0Pa":"@stdlib/iter/pop","0Pb":"@stdlib/iter-pop","0Pc":"@stdlib/iter/push","0Pd":"@stdlib/iter-push","0Pe":"@stdlib/iter/reject","0Pf":"@stdlib/iter-reject","0Pg":"@stdlib/iter/replicate-by","0Ph":"@stdlib/iter-replicate-by","0Pi":"@stdlib/iter/replicate","0Pj":"@stdlib/iter-replicate","0Pk":"@stdlib/iter/shift","0Pl":"@stdlib/iter-shift","0Pm":"@stdlib/iter/slice","0Pn":"@stdlib/iter-slice","0Po":"@stdlib/iter/some-by","0Pp":"@stdlib/iter-some-by","0Pq":"@stdlib/iter/some","0Pr":"@stdlib/iter-some","0Ps":"@stdlib/iter/step","0Pt":"@stdlib/iter-step","0Pu":"@stdlib/iter/strided-by","0Pv":"@stdlib/iter-strided-by","0Pw":"@stdlib/iter/strided","0Px":"@stdlib/iter-strided","0Py":"@stdlib/iter/to-array-view-right","0Pz":"@stdlib/iter-to-array-view-right","0Q0":"@stdlib/iter/to-array-view","0Q1":"@stdlib/iter-to-array-view","0Q2":"@stdlib/iter/union","0Q3":"@stdlib/iter-union","0Q4":"@stdlib/iter/unique-by-hash","0Q5":"@stdlib/iter-unique-by-hash","0Q6":"@stdlib/iter/unique-by","0Q7":"@stdlib/iter-unique-by","0Q8":"@stdlib/iter/unique","0Q9":"@stdlib/iter-unique","0QA":"@stdlib/iter/unitspace","0QB":"@stdlib/iter-unitspace","0QC":"@stdlib/iter/unshift","0QD":"@stdlib/iter-unshift","1sg":"@stdlib/iter/until-each","1sh":"@stdlib/iter-until-each","1mu":"@stdlib/iter/while-each","1mv":"@stdlib/iter-while-each","27c":"@stdlib/lapack/base/clacgv","27d":"@stdlib/lapack-base-clacgv","27e":"@stdlib/lapack/base/clacpy","27f":"@stdlib/lapack-base-clacpy","27g":"@stdlib/lapack/base/claset","27h":"@stdlib/lapack-base-claset","2H0":"@stdlib/lapack/base/claswp","2H1":"@stdlib/lapack-base-claswp","27i":"@stdlib/lapack/base/crot","27j":"@stdlib/lapack-base-crot","1zK":"@stdlib/lapack/base/dge-trans","1zL":"@stdlib/lapack-base-dge-trans","2I8":"@stdlib/lapack/base/dgttrf","2I9":"@stdlib/lapack-base-dgttrf","2yo":"@stdlib/lapack/base/disnan","2yp":"@stdlib/lapack-base-disnan","1yo":"@stdlib/lapack/base/dlacpy","1yp":"@stdlib/lapack-base-dlacpy","2TG":"@stdlib/lapack/base/dladiv","2TH":"@stdlib/lapack-base-dladiv","2xE":"@stdlib/lapack/base/dlaisnan","2xF":"@stdlib/lapack-base-dlaisnan","20C":"@stdlib/lapack/base/dlamch","20D":"@stdlib/lapack-base-dlamch","2IA":"@stdlib/lapack/base/dlapy2","2IB":"@stdlib/lapack-base-dlapy2","2IC":"@stdlib/lapack/base/dlapy3","2ID":"@stdlib/lapack-base-dlapy3","2yq":"@stdlib/lapack/base/dlarf","2yr":"@stdlib/lapack-base-dlarf","2V0":"@stdlib/lapack/base/dlarf1f","2V1":"@stdlib/lapack-base-dlarf1f","2OE":"@stdlib/lapack/base/dlaset","2OF":"@stdlib/lapack-base-dlaset","1yq":"@stdlib/lapack/base/dlassq","1yr":"@stdlib/lapack-base-dlassq","1xg":"@stdlib/lapack/base/dlaswp","1xh":"@stdlib/lapack-base-dlaswp","1ys":"@stdlib/lapack/base/dpttrf","1yt":"@stdlib/lapack-base-dpttrf","2IE":"@stdlib/lapack/base/iladlc","2IF":"@stdlib/lapack-base-iladlc","2IG":"@stdlib/lapack/base/iladlr","2IH":"@stdlib/lapack-base-iladlr","1xi":"@stdlib/lapack/base","1xj":"@stdlib/lapack-base","1zM":"@stdlib/lapack/base/sge-trans","1zN":"@stdlib/lapack-base-sge-trans","2OG":"@stdlib/lapack/base/shared","2OH":"@stdlib/lapack-base-shared","1yu":"@stdlib/lapack/base/slacpy","1yv":"@stdlib/lapack-base-slacpy","1zO":"@stdlib/lapack/base/slaswp","1zP":"@stdlib/lapack-base-slaswp","1yw":"@stdlib/lapack/base/spttrf","1yx":"@stdlib/lapack-base-spttrf","2OI":"@stdlib/lapack/base/xerbla","2OJ":"@stdlib/lapack-base-xerbla","26A":"@stdlib/lapack/base/zlacpy","26B":"@stdlib/lapack-base-zlacpy","27k":"@stdlib/lapack/base/zlaset","27l":"@stdlib/lapack-base-zlaset","2GG":"@stdlib/lapack/base/zlaswp","2GH":"@stdlib/lapack-base-zlaswp","26C":"@stdlib/lapack/base/zrot","26D":"@stdlib/lapack-base-zrot","1xl":"@stdlib/lapack","27m":"@stdlib/math/array","27n":"@stdlib/math-array","27o":"@stdlib/math/array/special/abs","27p":"@stdlib/math-array-special-abs","27q":"@stdlib/math/array/special","27r":"@stdlib/math-array-special","27s":"@stdlib/math/array/tools","27t":"@stdlib/math-array-tools","27u":"@stdlib/math/array/tools/unary-factory","27v":"@stdlib/math-array-tools-unary-factory","27w":"@stdlib/math/array/tools/unary","27x":"@stdlib/math-array-tools-unary","0QE":"@stdlib/math/base/assert/int32-is-even","0QF":"@stdlib/math-base-assert-int32-is-even","0QG":"@stdlib/math/base/assert/int32-is-odd","0QH":"@stdlib/math-base-assert-int32-is-odd","0QI":"@stdlib/math/base/assert/is-composite","0QJ":"@stdlib/math-base-assert-is-composite","0QK":"@stdlib/math/base/assert/is-coprime","0QL":"@stdlib/math-base-assert-is-coprime","0QM":"@stdlib/math/base/assert/is-even","0QN":"@stdlib/math-base-assert-is-even","23S":"@stdlib/math/base/assert/is-evenf","23T":"@stdlib/math-base-assert-is-evenf","0QO":"@stdlib/math/base/assert/is-finite","0QP":"@stdlib/math-base-assert-is-finite","0QQ":"@stdlib/math/base/assert/is-finitef","0QR":"@stdlib/math-base-assert-is-finitef","0QS":"@stdlib/math/base/assert/is-infinite","0QT":"@stdlib/math-base-assert-is-infinite","0QU":"@stdlib/math/base/assert/is-infinitef","0QV":"@stdlib/math-base-assert-is-infinitef","0QW":"@stdlib/math/base/assert/is-integer","0QX":"@stdlib/math-base-assert-is-integer","1zQ":"@stdlib/math/base/assert/is-integerf","1zR":"@stdlib/math-base-assert-is-integerf","0QY":"@stdlib/math/base/assert/is-nan","0QZ":"@stdlib/math-base-assert-is-nan","0Qa":"@stdlib/math/base/assert/is-nanf","0Qb":"@stdlib/math-base-assert-is-nanf","1aw":"@stdlib/math/base/assert/is-negative-finite","1ax":"@stdlib/math-base-assert-is-negative-finite","0Qc":"@stdlib/math/base/assert/is-negative-integer","0Qd":"@stdlib/math-base-assert-is-negative-integer","2TI":"@stdlib/math/base/assert/is-negative-integerf","2TJ":"@stdlib/math-base-assert-is-negative-integerf","0Qe":"@stdlib/math/base/assert/is-negative-zero","0Qf":"@stdlib/math-base-assert-is-negative-zero","0Qg":"@stdlib/math/base/assert/is-negative-zerof","0Qh":"@stdlib/math-base-assert-is-negative-zerof","1ay":"@stdlib/math/base/assert/is-nonnegative-finite","1az":"@stdlib/math-base-assert-is-nonnegative-finite","0Qi":"@stdlib/math/base/assert/is-nonnegative-integer","0Qj":"@stdlib/math-base-assert-is-nonnegative-integer","20E":"@stdlib/math/base/assert/is-nonnegative-integerf","20F":"@stdlib/math-base-assert-is-nonnegative-integerf","1b0":"@stdlib/math/base/assert/is-nonpositive-finite","1b1":"@stdlib/math-base-assert-is-nonpositive-finite","0Qk":"@stdlib/math/base/assert/is-nonpositive-integer","0Ql":"@stdlib/math-base-assert-is-nonpositive-integer","0Qm":"@stdlib/math/base/assert/is-odd","0Qn":"@stdlib/math-base-assert-is-odd","24e":"@stdlib/math/base/assert/is-oddf","24f":"@stdlib/math-base-assert-is-oddf","1b2":"@stdlib/math/base/assert/is-positive-finite","1b3":"@stdlib/math-base-assert-is-positive-finite","0Qo":"@stdlib/math/base/assert/is-positive-integer","0Qp":"@stdlib/math-base-assert-is-positive-integer","0Qq":"@stdlib/math/base/assert/is-positive-zero","0Qr":"@stdlib/math-base-assert-is-positive-zero","0Qs":"@stdlib/math/base/assert/is-positive-zerof","0Qt":"@stdlib/math-base-assert-is-positive-zerof","0Qu":"@stdlib/math/base/assert/is-prime","0Qv":"@stdlib/math-base-assert-is-prime","0Qw":"@stdlib/math/base/assert/is-probability","0Qx":"@stdlib/math-base-assert-is-probability","25q":"@stdlib/math/base/assert/is-probabilityf","25r":"@stdlib/math-base-assert-is-probabilityf","0Qy":"@stdlib/math/base/assert/is-safe-integer","0Qz":"@stdlib/math-base-assert-is-safe-integer","0R0":"@stdlib/math/base/assert","0R1":"@stdlib/math-base-assert","0R2":"@stdlib/math/base/assert/uint32-is-pow2","0R3":"@stdlib/math-base-assert-uint32-is-pow2","0R4":"@stdlib/math/base/napi/binary","0R5":"@stdlib/math-base-napi-binary","0R6":"@stdlib/math/base/napi","0R7":"@stdlib/math-base-napi","1m2":"@stdlib/math/base/napi/quaternary","1m3":"@stdlib/math-base-napi-quaternary","1m4":"@stdlib/math/base/napi/quinary","1m5":"@stdlib/math-base-napi-quinary","0R8":"@stdlib/math/base/napi/ternary","0R9":"@stdlib/math-base-napi-ternary","0RA":"@stdlib/math/base/napi/unary","0RB":"@stdlib/math-base-napi-unary","0Ro":"@stdlib/math/base","0Rp":"@stdlib/math-base","0Rq":"@stdlib/math/base/special/abs","0Rr":"@stdlib/math-base-special-abs","0Rs":"@stdlib/math/base/special/abs2","0Rt":"@stdlib/math-base-special-abs2","0Ru":"@stdlib/math/base/special/abs2f","0Rv":"@stdlib/math-base-special-abs2f","0Rw":"@stdlib/math/base/special/absf","0Rx":"@stdlib/math-base-special-absf","2TK":"@stdlib/math/base/special/absgammalnf","2TL":"@stdlib/math-base-special-absgammalnf","0Ry":"@stdlib/math/base/special/acos","0Rz":"@stdlib/math-base-special-acos","1tM":"@stdlib/math/base/special/acosd","1tN":"@stdlib/math-base-special-acosd","23U":"@stdlib/math/base/special/acosdf","23V":"@stdlib/math-base-special-acosdf","1tO":"@stdlib/math/base/special/acosf","1tP":"@stdlib/math-base-special-acosf","0S0":"@stdlib/math/base/special/acosh","0S1":"@stdlib/math-base-special-acosh","2kK":"@stdlib/math/base/special/acoshf","2kL":"@stdlib/math-base-special-acoshf","0S2":"@stdlib/math/base/special/acot","0S3":"@stdlib/math-base-special-acot","1tQ":"@stdlib/math/base/special/acotd","1tR":"@stdlib/math-base-special-acotd","20G":"@stdlib/math/base/special/acotdf","20H":"@stdlib/math-base-special-acotdf","1tS":"@stdlib/math/base/special/acotf","1tT":"@stdlib/math-base-special-acotf","0S4":"@stdlib/math/base/special/acoth","0S5":"@stdlib/math-base-special-acoth","2kM":"@stdlib/math/base/special/acothf","2kN":"@stdlib/math-base-special-acothf","0S6":"@stdlib/math/base/special/acovercos","0S7":"@stdlib/math-base-special-acovercos","20I":"@stdlib/math/base/special/acovercosf","20J":"@stdlib/math-base-special-acovercosf","0S8":"@stdlib/math/base/special/acoversin","0S9":"@stdlib/math-base-special-acoversin","20K":"@stdlib/math/base/special/acoversinf","20L":"@stdlib/math-base-special-acoversinf","0SA":"@stdlib/math/base/special/acsc","0SB":"@stdlib/math-base-special-acsc","1tU":"@stdlib/math/base/special/acscd","1tV":"@stdlib/math-base-special-acscd","1v4":"@stdlib/math/base/special/acscdf","1v5":"@stdlib/math-base-special-acscdf","1tW":"@stdlib/math/base/special/acscf","1tX":"@stdlib/math-base-special-acscf","0SC":"@stdlib/math/base/special/acsch","0SD":"@stdlib/math-base-special-acsch","0SE":"@stdlib/math/base/special/ahavercos","0SF":"@stdlib/math-base-special-ahavercos","23W":"@stdlib/math/base/special/ahavercosf","23X":"@stdlib/math-base-special-ahavercosf","0SG":"@stdlib/math/base/special/ahaversin","0SH":"@stdlib/math-base-special-ahaversin","23Y":"@stdlib/math/base/special/ahaversinf","23Z":"@stdlib/math-base-special-ahaversinf","1b6":"@stdlib/math/base/special/asec","1b7":"@stdlib/math-base-special-asec","1tY":"@stdlib/math/base/special/asecd","1tZ":"@stdlib/math-base-special-asecd","1v6":"@stdlib/math/base/special/asecdf","1v7":"@stdlib/math-base-special-asecdf","1ta":"@stdlib/math/base/special/asecf","1tb":"@stdlib/math-base-special-asecf","0SI":"@stdlib/math/base/special/asech","0SJ":"@stdlib/math-base-special-asech","0SK":"@stdlib/math/base/special/asin","0SL":"@stdlib/math-base-special-asin","1tc":"@stdlib/math/base/special/asind","1td":"@stdlib/math-base-special-asind","1v8":"@stdlib/math/base/special/asindf","1v9":"@stdlib/math-base-special-asindf","1te":"@stdlib/math/base/special/asinf","1tf":"@stdlib/math-base-special-asinf","0SM":"@stdlib/math/base/special/asinh","0SN":"@stdlib/math-base-special-asinh","2kO":"@stdlib/math/base/special/asinhf","2kP":"@stdlib/math-base-special-asinhf","0SO":"@stdlib/math/base/special/atan","0SP":"@stdlib/math-base-special-atan","0SQ":"@stdlib/math/base/special/atan2","0SR":"@stdlib/math-base-special-atan2","2Ds":"@stdlib/math/base/special/atan2d","2Dt":"@stdlib/math-base-special-atan2d","2II":"@stdlib/math/base/special/atan2f","2IJ":"@stdlib/math-base-special-atan2f","1tg":"@stdlib/math/base/special/atand","1th":"@stdlib/math-base-special-atand","20M":"@stdlib/math/base/special/atandf","20N":"@stdlib/math-base-special-atandf","1ti":"@stdlib/math/base/special/atanf","1tj":"@stdlib/math-base-special-atanf","0SS":"@stdlib/math/base/special/atanh","0ST":"@stdlib/math-base-special-atanh","2kQ":"@stdlib/math/base/special/atanhf","2kR":"@stdlib/math-base-special-atanhf","0SU":"@stdlib/math/base/special/avercos","0SV":"@stdlib/math-base-special-avercos","20O":"@stdlib/math/base/special/avercosf","20P":"@stdlib/math-base-special-avercosf","0SW":"@stdlib/math/base/special/aversin","0SX":"@stdlib/math-base-special-aversin","20Q":"@stdlib/math/base/special/aversinf","20R":"@stdlib/math-base-special-aversinf","0SY":"@stdlib/math/base/special/bernoulli","0SZ":"@stdlib/math-base-special-bernoulli","2H2":"@stdlib/math/base/special/bernoullif","2H3":"@stdlib/math-base-special-bernoullif","0Sa":"@stdlib/math/base/special/besselj0","0Sb":"@stdlib/math-base-special-besselj0","0Sc":"@stdlib/math/base/special/besselj1","0Sd":"@stdlib/math-base-special-besselj1","0Se":"@stdlib/math/base/special/bessely0","0Sf":"@stdlib/math-base-special-bessely0","0Sg":"@stdlib/math/base/special/bessely1","0Sh":"@stdlib/math-base-special-bessely1","0Si":"@stdlib/math/base/special/beta","0Sj":"@stdlib/math-base-special-beta","0Sk":"@stdlib/math/base/special/betainc","0Sl":"@stdlib/math-base-special-betainc","0Sm":"@stdlib/math/base/special/betaincinv","0Sn":"@stdlib/math-base-special-betaincinv","0So":"@stdlib/math/base/special/betaln","0Sp":"@stdlib/math-base-special-betaln","0Sq":"@stdlib/math/base/special/binet","0Sr":"@stdlib/math-base-special-binet","0Ss":"@stdlib/math/base/special/binomcoef","0St":"@stdlib/math-base-special-binomcoef","2IK":"@stdlib/math/base/special/binomcoeff","2IL":"@stdlib/math-base-special-binomcoeff","0Su":"@stdlib/math/base/special/binomcoefln","0Sv":"@stdlib/math-base-special-binomcoefln","0Sw":"@stdlib/math/base/special/boxcox","0Sx":"@stdlib/math-base-special-boxcox","0Sy":"@stdlib/math/base/special/boxcox1p","0Sz":"@stdlib/math-base-special-boxcox1p","0T0":"@stdlib/math/base/special/boxcox1pinv","0T1":"@stdlib/math-base-special-boxcox1pinv","0T2":"@stdlib/math/base/special/boxcoxinv","0T3":"@stdlib/math-base-special-boxcoxinv","0T4":"@stdlib/math/base/special/cabs","0T5":"@stdlib/math-base-special-cabs","0T6":"@stdlib/math/base/special/cabs2","0T7":"@stdlib/math-base-special-cabs2","0T8":"@stdlib/math/base/special/cabs2f","0T9":"@stdlib/math-base-special-cabs2f","0TA":"@stdlib/math/base/special/cabsf","0TB":"@stdlib/math-base-special-cabsf","0TC":"@stdlib/math/base/special/cbrt","0TD":"@stdlib/math-base-special-cbrt","0TE":"@stdlib/math/base/special/cbrtf","0TF":"@stdlib/math-base-special-cbrtf","0TG":"@stdlib/math/base/special/cceil","0TH":"@stdlib/math-base-special-cceil","0TI":"@stdlib/math/base/special/cceilf","0TJ":"@stdlib/math-base-special-cceilf","0TK":"@stdlib/math/base/special/cceiln","0TL":"@stdlib/math-base-special-cceiln","0TM":"@stdlib/math/base/special/ccis","0TN":"@stdlib/math-base-special-ccis","0TO":"@stdlib/math/base/special/ceil","0TP":"@stdlib/math-base-special-ceil","0TQ":"@stdlib/math/base/special/ceil10","0TR":"@stdlib/math-base-special-ceil10","0TS":"@stdlib/math/base/special/ceil2","0TT":"@stdlib/math-base-special-ceil2","0TU":"@stdlib/math/base/special/ceilb","0TV":"@stdlib/math-base-special-ceilb","0TW":"@stdlib/math/base/special/ceilf","0TX":"@stdlib/math-base-special-ceilf","0TY":"@stdlib/math/base/special/ceiln","0TZ":"@stdlib/math-base-special-ceiln","0Ta":"@stdlib/math/base/special/ceilsd","0Tb":"@stdlib/math-base-special-ceilsd","0Tc":"@stdlib/math/base/special/cexp","0Td":"@stdlib/math-base-special-cexp","0Te":"@stdlib/math/base/special/cflipsign","0Tf":"@stdlib/math-base-special-cflipsign","0Tg":"@stdlib/math/base/special/cflipsignf","0Th":"@stdlib/math-base-special-cflipsignf","0Ti":"@stdlib/math/base/special/cfloor","0Tj":"@stdlib/math-base-special-cfloor","23a":"@stdlib/math/base/special/cfloorf","23b":"@stdlib/math-base-special-cfloorf","0Tk":"@stdlib/math/base/special/cfloorn","0Tl":"@stdlib/math-base-special-cfloorn","0Tq":"@stdlib/math/base/special/cinv","0Tr":"@stdlib/math-base-special-cinv","2IM":"@stdlib/math/base/special/cinvf","2IN":"@stdlib/math-base-special-cinvf","0Ts":"@stdlib/math/base/special/clamp","0Tt":"@stdlib/math-base-special-clamp","0Tu":"@stdlib/math/base/special/clampf","0Tv":"@stdlib/math-base-special-clampf","0Tw":"@stdlib/math/base/special/copysign","0Tx":"@stdlib/math-base-special-copysign","0Ty":"@stdlib/math/base/special/copysignf","0Tz":"@stdlib/math-base-special-copysignf","0U0":"@stdlib/math/base/special/cos","0U1":"@stdlib/math-base-special-cos","1tk":"@stdlib/math/base/special/cosd","1tl":"@stdlib/math-base-special-cosd","2TM":"@stdlib/math/base/special/cosdf","2TN":"@stdlib/math-base-special-cosdf","2KK":"@stdlib/math/base/special/cosf","2KL":"@stdlib/math-base-special-cosf","0U2":"@stdlib/math/base/special/cosh","0U3":"@stdlib/math-base-special-cosh","2kS":"@stdlib/math/base/special/coshf","2kT":"@stdlib/math-base-special-coshf","0U4":"@stdlib/math/base/special/cosm1","0U5":"@stdlib/math-base-special-cosm1","2KM":"@stdlib/math/base/special/cosm1f","2KN":"@stdlib/math-base-special-cosm1f","0U6":"@stdlib/math/base/special/cospi","0U7":"@stdlib/math-base-special-cospi","2Rq":"@stdlib/math/base/special/cospif","2Rr":"@stdlib/math-base-special-cospif","0U8":"@stdlib/math/base/special/cot","0U9":"@stdlib/math-base-special-cot","1tm":"@stdlib/math/base/special/cotd","1tn":"@stdlib/math-base-special-cotd","2TO":"@stdlib/math/base/special/cotdf","2TP":"@stdlib/math-base-special-cotdf","2TQ":"@stdlib/math/base/special/cotf","2TR":"@stdlib/math-base-special-cotf","0UA":"@stdlib/math/base/special/coth","0UB":"@stdlib/math-base-special-coth","0UC":"@stdlib/math/base/special/covercos","0UD":"@stdlib/math-base-special-covercos","2KO":"@stdlib/math/base/special/covercosf","2KP":"@stdlib/math-base-special-covercosf","0UE":"@stdlib/math/base/special/coversin","0UF":"@stdlib/math-base-special-coversin","2KQ":"@stdlib/math/base/special/coversinf","2KR":"@stdlib/math-base-special-coversinf","0UG":"@stdlib/math/base/special/cphase","0UH":"@stdlib/math-base-special-cphase","2KS":"@stdlib/math/base/special/cphasef","2KT":"@stdlib/math-base-special-cphasef","0UI":"@stdlib/math/base/special/cpolar","0UJ":"@stdlib/math-base-special-cpolar","2Rs":"@stdlib/math/base/special/cpolarf","2Rt":"@stdlib/math-base-special-cpolarf","0UK":"@stdlib/math/base/special/cround","0UL":"@stdlib/math-base-special-cround","23c":"@stdlib/math/base/special/croundf","23d":"@stdlib/math-base-special-croundf","0UM":"@stdlib/math/base/special/croundn","0UN":"@stdlib/math-base-special-croundn","1si":"@stdlib/math/base/special/csc","1sj":"@stdlib/math-base-special-csc","1to":"@stdlib/math/base/special/cscd","1tp":"@stdlib/math-base-special-cscd","2TS":"@stdlib/math/base/special/cscdf","2TT":"@stdlib/math-base-special-cscdf","2KU":"@stdlib/math/base/special/cscf","2KV":"@stdlib/math-base-special-cscf","0UO":"@stdlib/math/base/special/csch","0UP":"@stdlib/math-base-special-csch","0UQ":"@stdlib/math/base/special/csignum","0UR":"@stdlib/math-base-special-csignum","2Du":"@stdlib/math/base/special/csignumf","2Dv":"@stdlib/math-base-special-csignumf","0US":"@stdlib/math/base/special/deg2rad","0UT":"@stdlib/math-base-special-deg2rad","0UU":"@stdlib/math/base/special/deg2radf","0UV":"@stdlib/math-base-special-deg2radf","0UW":"@stdlib/math/base/special/digamma","0UX":"@stdlib/math-base-special-digamma","0UY":"@stdlib/math/base/special/dirac-delta","0UZ":"@stdlib/math-base-special-dirac-delta","25s":"@stdlib/math/base/special/dirac-deltaf","25t":"@stdlib/math-base-special-dirac-deltaf","0Ua":"@stdlib/math/base/special/dirichlet-eta","0Ub":"@stdlib/math-base-special-dirichlet-eta","0Uc":"@stdlib/math/base/special/ellipe","0Ud":"@stdlib/math-base-special-ellipe","1b8":"@stdlib/math/base/special/ellipj","1b9":"@stdlib/math-base-special-ellipj","0Ue":"@stdlib/math/base/special/ellipk","0Uf":"@stdlib/math-base-special-ellipk","0Ug":"@stdlib/math/base/special/erf","0Uh":"@stdlib/math-base-special-erf","0Ui":"@stdlib/math/base/special/erfc","0Uj":"@stdlib/math-base-special-erfc","0Uk":"@stdlib/math/base/special/erfcinv","0Ul":"@stdlib/math-base-special-erfcinv","1bA":"@stdlib/math/base/special/erfcx","1bB":"@stdlib/math-base-special-erfcx","0Um":"@stdlib/math/base/special/erfinv","0Un":"@stdlib/math-base-special-erfinv","0Uo":"@stdlib/math/base/special/exp","0Up":"@stdlib/math-base-special-exp","0Uq":"@stdlib/math/base/special/exp10","0Ur":"@stdlib/math-base-special-exp10","0Us":"@stdlib/math/base/special/exp2","0Ut":"@stdlib/math-base-special-exp2","0Uu":"@stdlib/math/base/special/expit","0Uv":"@stdlib/math-base-special-expit","0Uw":"@stdlib/math/base/special/expm1","0Ux":"@stdlib/math-base-special-expm1","0Uy":"@stdlib/math/base/special/expm1rel","0Uz":"@stdlib/math-base-special-expm1rel","0V0":"@stdlib/math/base/special/factorial","0V1":"@stdlib/math-base-special-factorial","1mG":"@stdlib/math/base/special/factorial2","1mH":"@stdlib/math-base-special-factorial2","2IO":"@stdlib/math/base/special/factorial2f","2IP":"@stdlib/math-base-special-factorial2f","0V2":"@stdlib/math/base/special/factorialln","0V3":"@stdlib/math-base-special-factorialln","2TU":"@stdlib/math/base/special/factoriallnf","2TV":"@stdlib/math-base-special-factoriallnf","0V4":"@stdlib/math/base/special/falling-factorial","0V5":"@stdlib/math-base-special-falling-factorial","0V6":"@stdlib/math/base/special/fast/abs","0V7":"@stdlib/math-base-special-fast-abs","2V2":"@stdlib/math/base/special/fast/absf","2V3":"@stdlib/math-base-special-fast-absf","0V8":"@stdlib/math/base/special/fast/acosh","0V9":"@stdlib/math-base-special-fast-acosh","0VA":"@stdlib/math/base/special/fast/alpha-max-plus-beta-min","0VB":"@stdlib/math-base-special-fast-alpha-max-plus-beta-min","0VC":"@stdlib/math/base/special/fast/asinh","0VD":"@stdlib/math-base-special-fast-asinh","0VE":"@stdlib/math/base/special/fast/atanh","0VF":"@stdlib/math-base-special-fast-atanh","2kU":"@stdlib/math/base/special/fast/atanhf","2kV":"@stdlib/math-base-special-fast-atanhf","0VG":"@stdlib/math/base/special/fast/hypot","0VH":"@stdlib/math-base-special-fast-hypot","2VO":"@stdlib/math/base/special/fast/hypotf","2VP":"@stdlib/math-base-special-fast-hypotf","0VI":"@stdlib/math/base/special/fast/max","0VJ":"@stdlib/math-base-special-fast-max","2W4":"@stdlib/math/base/special/fast/maxf","2W5":"@stdlib/math-base-special-fast-maxf","0VK":"@stdlib/math/base/special/fast/min","0VL":"@stdlib/math-base-special-fast-min","2WO":"@stdlib/math/base/special/fast/minf","2WP":"@stdlib/math-base-special-fast-minf","0VM":"@stdlib/math/base/special/fast","0VN":"@stdlib/math-base-special-fast","0VO":"@stdlib/math/base/special/fast/pow-int","0VP":"@stdlib/math-base-special-fast-pow-int","0VQ":"@stdlib/math/base/special/fast/uint32-log2","0VR":"@stdlib/math-base-special-fast-uint32-log2","0VS":"@stdlib/math/base/special/fast/uint32-sqrt","0VT":"@stdlib/math-base-special-fast-uint32-sqrt","0VU":"@stdlib/math/base/special/fibonacci-index","0VV":"@stdlib/math-base-special-fibonacci-index","2EW":"@stdlib/math/base/special/fibonacci-indexf","2EX":"@stdlib/math-base-special-fibonacci-indexf","0VW":"@stdlib/math/base/special/fibonacci","0VX":"@stdlib/math-base-special-fibonacci","2Dw":"@stdlib/math/base/special/fibonaccif","2Dx":"@stdlib/math-base-special-fibonaccif","0VY":"@stdlib/math/base/special/flipsign","0VZ":"@stdlib/math-base-special-flipsign","0Va":"@stdlib/math/base/special/flipsignf","0Vb":"@stdlib/math-base-special-flipsignf","0Vc":"@stdlib/math/base/special/floor","0Vd":"@stdlib/math-base-special-floor","0Ve":"@stdlib/math/base/special/floor10","0Vf":"@stdlib/math-base-special-floor10","0Vg":"@stdlib/math/base/special/floor2","0Vh":"@stdlib/math-base-special-floor2","2kW":"@stdlib/math/base/special/floor2f","2kX":"@stdlib/math-base-special-floor2f","0Vi":"@stdlib/math/base/special/floorb","0Vj":"@stdlib/math-base-special-floorb","0Vk":"@stdlib/math/base/special/floorf","0Vl":"@stdlib/math-base-special-floorf","0Vm":"@stdlib/math/base/special/floorn","0Vn":"@stdlib/math-base-special-floorn","2kY":"@stdlib/math/base/special/floornf","2kZ":"@stdlib/math-base-special-floornf","0Vo":"@stdlib/math/base/special/floorsd","0Vp":"@stdlib/math-base-special-floorsd","1yQ":"@stdlib/math/base/special/fmod","1yR":"@stdlib/math-base-special-fmod","23e":"@stdlib/math/base/special/fmodf","23f":"@stdlib/math-base-special-fmodf","0Vq":"@stdlib/math/base/special/fresnel","0Vr":"@stdlib/math-base-special-fresnel","0Vs":"@stdlib/math/base/special/fresnelc","0Vt":"@stdlib/math-base-special-fresnelc","0Vu":"@stdlib/math/base/special/fresnels","0Vv":"@stdlib/math-base-special-fresnels","0Vw":"@stdlib/math/base/special/frexp","0Vx":"@stdlib/math-base-special-frexp","2KW":"@stdlib/math/base/special/frexpf","2KX":"@stdlib/math-base-special-frexpf","0Vy":"@stdlib/math/base/special/gamma-delta-ratio","0Vz":"@stdlib/math-base-special-gamma-delta-ratio","0W0":"@stdlib/math/base/special/gamma-lanczos-sum-expg-scaled","0W1":"@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled","2KY":"@stdlib/math/base/special/gamma-lanczos-sum-expg-scaledf","2KZ":"@stdlib/math-base-special-gamma-lanczos-sum-expg-scaledf","0W2":"@stdlib/math/base/special/gamma-lanczos-sum","0W3":"@stdlib/math-base-special-gamma-lanczos-sum","0W4":"@stdlib/math/base/special/gamma","0W5":"@stdlib/math-base-special-gamma","0W6":"@stdlib/math/base/special/gamma1pm1","0W7":"@stdlib/math-base-special-gamma1pm1","0W8":"@stdlib/math/base/special/gammainc","0W9":"@stdlib/math-base-special-gammainc","0WA":"@stdlib/math/base/special/gammaincinv","0WB":"@stdlib/math-base-special-gammaincinv","0WC":"@stdlib/math/base/special/gammaln","0WD":"@stdlib/math-base-special-gammaln","1bC":"@stdlib/math/base/special/gammasgn","1bD":"@stdlib/math-base-special-gammasgn","2H4":"@stdlib/math/base/special/gammasgnf","2H5":"@stdlib/math-base-special-gammasgnf","0WE":"@stdlib/math/base/special/gcd","0WF":"@stdlib/math-base-special-gcd","23g":"@stdlib/math/base/special/gcdf","23h":"@stdlib/math-base-special-gcdf","0WG":"@stdlib/math/base/special/hacovercos","0WH":"@stdlib/math-base-special-hacovercos","2Ka":"@stdlib/math/base/special/hacovercosf","2Kb":"@stdlib/math-base-special-hacovercosf","0WI":"@stdlib/math/base/special/hacoversin","0WJ":"@stdlib/math-base-special-hacoversin","2Kc":"@stdlib/math/base/special/hacoversinf","2Kd":"@stdlib/math-base-special-hacoversinf","0WK":"@stdlib/math/base/special/havercos","0WL":"@stdlib/math-base-special-havercos","2Ke":"@stdlib/math/base/special/havercosf","2Kf":"@stdlib/math-base-special-havercosf","0WM":"@stdlib/math/base/special/haversin","0WN":"@stdlib/math-base-special-haversin","2Kg":"@stdlib/math/base/special/haversinf","2Kh":"@stdlib/math-base-special-haversinf","0WO":"@stdlib/math/base/special/heaviside","0WP":"@stdlib/math-base-special-heaviside","26E":"@stdlib/math/base/special/heavisidef","26F":"@stdlib/math-base-special-heavisidef","27y":"@stdlib/math/base/special/hyp2f1","27z":"@stdlib/math-base-special-hyp2f1","0WQ":"@stdlib/math/base/special/hypot","0WR":"@stdlib/math-base-special-hypot","0WS":"@stdlib/math/base/special/hypotf","0WT":"@stdlib/math-base-special-hypotf","0WY":"@stdlib/math/base/special/inv","0WZ":"@stdlib/math-base-special-inv","0Wa":"@stdlib/math/base/special/invf","0Wb":"@stdlib/math-base-special-invf","0Wc":"@stdlib/math/base/special/kernel-betainc","0Wd":"@stdlib/math-base-special-kernel-betainc","0We":"@stdlib/math/base/special/kernel-betaincinv","0Wf":"@stdlib/math-base-special-kernel-betaincinv","0Wg":"@stdlib/math/base/special/kernel-cos","0Wh":"@stdlib/math-base-special-kernel-cos","2IQ":"@stdlib/math/base/special/kernel-cosf","2IR":"@stdlib/math-base-special-kernel-cosf","1vA":"@stdlib/math/base/special/kernel-log1p","1vB":"@stdlib/math-base-special-kernel-log1p","2OK":"@stdlib/math/base/special/kernel-log1pf","2OL":"@stdlib/math-base-special-kernel-log1pf","0Wi":"@stdlib/math/base/special/kernel-sin","0Wj":"@stdlib/math-base-special-kernel-sin","2Ru":"@stdlib/math/base/special/kernel-sincos","2Rv":"@stdlib/math-base-special-kernel-sincos","2TW":"@stdlib/math/base/special/kernel-sincosf","2TX":"@stdlib/math-base-special-kernel-sincosf","2IS":"@stdlib/math/base/special/kernel-sinf","2IT":"@stdlib/math-base-special-kernel-sinf","0Wk":"@stdlib/math/base/special/kernel-tan","0Wl":"@stdlib/math-base-special-kernel-tan","2Ki":"@stdlib/math/base/special/kernel-tanf","2Kj":"@stdlib/math-base-special-kernel-tanf","0Wm":"@stdlib/math/base/special/kronecker-delta","0Wn":"@stdlib/math-base-special-kronecker-delta","0Wo":"@stdlib/math/base/special/kronecker-deltaf","0Wp":"@stdlib/math-base-special-kronecker-deltaf","0Wq":"@stdlib/math/base/special/labs","0Wr":"@stdlib/math-base-special-labs","0Ws":"@stdlib/math/base/special/lcm","0Wt":"@stdlib/math-base-special-lcm","24g":"@stdlib/math/base/special/lcmf","24h":"@stdlib/math-base-special-lcmf","0Wu":"@stdlib/math/base/special/ldexp","0Wv":"@stdlib/math-base-special-ldexp","20S":"@stdlib/math/base/special/ldexpf","20T":"@stdlib/math-base-special-ldexpf","0Ww":"@stdlib/math/base/special/ln","0Wx":"@stdlib/math-base-special-ln","1wq":"@stdlib/math/base/special/lnf","1wr":"@stdlib/math-base-special-lnf","0Wy":"@stdlib/math/base/special/log","0Wz":"@stdlib/math-base-special-log","0X0":"@stdlib/math/base/special/log10","0X1":"@stdlib/math-base-special-log10","0X2":"@stdlib/math/base/special/log1mexp","0X3":"@stdlib/math-base-special-log1mexp","0X4":"@stdlib/math/base/special/log1p","0X5":"@stdlib/math-base-special-log1p","0X6":"@stdlib/math/base/special/log1pexp","0X7":"@stdlib/math-base-special-log1pexp","2a4":"@stdlib/math/base/special/log1pf","2a5":"@stdlib/math-base-special-log1pf","1im":"@stdlib/math/base/special/log1pmx","1in":"@stdlib/math-base-special-log1pmx","0X8":"@stdlib/math/base/special/log2","0X9":"@stdlib/math-base-special-log2","0XA":"@stdlib/math/base/special/logaddexp","0XB":"@stdlib/math-base-special-logaddexp","20U":"@stdlib/math/base/special/logf","20V":"@stdlib/math-base-special-logf","0XC":"@stdlib/math/base/special/logit","0XD":"@stdlib/math-base-special-logit","2GI":"@stdlib/math/base/special/logitf","2GJ":"@stdlib/math-base-special-logitf","0XE":"@stdlib/math/base/special/lucas","0XF":"@stdlib/math-base-special-lucas","2Eo":"@stdlib/math/base/special/lucasf","2Ep":"@stdlib/math-base-special-lucasf","0XG":"@stdlib/math/base/special/max","0XH":"@stdlib/math-base-special-max","0XI":"@stdlib/math/base/special/maxabs","0XJ":"@stdlib/math-base-special-maxabs","20W":"@stdlib/math/base/special/maxabsf","20X":"@stdlib/math-base-special-maxabsf","1bE":"@stdlib/math/base/special/maxabsn","1bF":"@stdlib/math-base-special-maxabsn","20Y":"@stdlib/math/base/special/maxf","20Z":"@stdlib/math-base-special-maxf","1bG":"@stdlib/math/base/special/maxn","1bH":"@stdlib/math-base-special-maxn","0XK":"@stdlib/math/base/special/min","0XL":"@stdlib/math-base-special-min","0XM":"@stdlib/math/base/special/minabs","0XN":"@stdlib/math-base-special-minabs","20a":"@stdlib/math/base/special/minabsf","20b":"@stdlib/math-base-special-minabsf","1bI":"@stdlib/math/base/special/minabsn","1bJ":"@stdlib/math-base-special-minabsn","20c":"@stdlib/math/base/special/minf","20d":"@stdlib/math-base-special-minf","0XO":"@stdlib/math/base/special/minmax","0XP":"@stdlib/math-base-special-minmax","0XQ":"@stdlib/math/base/special/minmaxabs","0XR":"@stdlib/math-base-special-minmaxabs","2Kk":"@stdlib/math/base/special/minmaxabsf","2Kl":"@stdlib/math-base-special-minmaxabsf","1bK":"@stdlib/math/base/special/minmaxabsn","1bL":"@stdlib/math-base-special-minmaxabsn","2Km":"@stdlib/math/base/special/minmaxf","2Kn":"@stdlib/math-base-special-minmaxf","1bM":"@stdlib/math/base/special/minmaxn","1bN":"@stdlib/math-base-special-minmaxn","1bO":"@stdlib/math/base/special/minn","1bP":"@stdlib/math-base-special-minn","0XS":"@stdlib/math/base/special/modf","0XT":"@stdlib/math-base-special-modf","2Ko":"@stdlib/math/base/special/modff","2Kp":"@stdlib/math-base-special-modff","1ws":"@stdlib/math/base/special/nanmax","1wt":"@stdlib/math-base-special-nanmax","23i":"@stdlib/math/base/special/nanmaxf","23j":"@stdlib/math-base-special-nanmaxf","1wu":"@stdlib/math/base/special/nanmin","1wv":"@stdlib/math-base-special-nanmin","23k":"@stdlib/math/base/special/nanminf","23l":"@stdlib/math-base-special-nanminf","0XU":"@stdlib/math/base/special/negafibonacci","0XV":"@stdlib/math-base-special-negafibonacci","2IU":"@stdlib/math/base/special/negafibonaccif","2IV":"@stdlib/math-base-special-negafibonaccif","0XW":"@stdlib/math/base/special/negalucas","0XX":"@stdlib/math-base-special-negalucas","24i":"@stdlib/math/base/special/negalucasf","24j":"@stdlib/math-base-special-negalucasf","0XY":"@stdlib/math/base/special/nonfibonacci","0XZ":"@stdlib/math-base-special-nonfibonacci","24k":"@stdlib/math/base/special/nonfibonaccif","24l":"@stdlib/math-base-special-nonfibonaccif","0Xa":"@stdlib/math/base/special","0Xb":"@stdlib/math-base-special","0Xc":"@stdlib/math/base/special/pdiff","0Xd":"@stdlib/math-base-special-pdiff","0Xe":"@stdlib/math/base/special/pdifff","0Xf":"@stdlib/math-base-special-pdifff","0Xg":"@stdlib/math/base/special/polygamma","0Xh":"@stdlib/math-base-special-polygamma","0Xi":"@stdlib/math/base/special/pow","0Xj":"@stdlib/math-base-special-pow","2a6":"@stdlib/math/base/special/powf","2a7":"@stdlib/math-base-special-powf","0Xk":"@stdlib/math/base/special/powm1","0Xl":"@stdlib/math-base-special-powm1","0Xm":"@stdlib/math/base/special/rad2deg","0Xn":"@stdlib/math-base-special-rad2deg","1tq":"@stdlib/math/base/special/rad2degf","1tr":"@stdlib/math-base-special-rad2degf","0Xo":"@stdlib/math/base/special/ramp","0Xp":"@stdlib/math-base-special-ramp","0Xq":"@stdlib/math/base/special/rampf","0Xr":"@stdlib/math-base-special-rampf","1bQ":"@stdlib/math/base/special/rcbrt","1bR":"@stdlib/math-base-special-rcbrt","1vC":"@stdlib/math/base/special/rcbrtf","1vD":"@stdlib/math-base-special-rcbrtf","0Xs":"@stdlib/math/base/special/rempio2","0Xt":"@stdlib/math-base-special-rempio2","2IW":"@stdlib/math/base/special/rempio2f","2IX":"@stdlib/math-base-special-rempio2f","0Xu":"@stdlib/math/base/special/riemann-zeta","0Xv":"@stdlib/math-base-special-riemann-zeta","0Xw":"@stdlib/math/base/special/rising-factorial","0Xx":"@stdlib/math-base-special-rising-factorial","2OM":"@stdlib/math/base/special/round-nearest-even","2ON":"@stdlib/math-base-special-round-nearest-even","0Xy":"@stdlib/math/base/special/round","0Xz":"@stdlib/math-base-special-round","0Y0":"@stdlib/math/base/special/round10","0Y1":"@stdlib/math-base-special-round10","0Y2":"@stdlib/math/base/special/round2","0Y3":"@stdlib/math-base-special-round2","0Y4":"@stdlib/math/base/special/roundb","0Y5":"@stdlib/math-base-special-roundb","1zS":"@stdlib/math/base/special/roundf","1zT":"@stdlib/math-base-special-roundf","0Y6":"@stdlib/math/base/special/roundn","0Y7":"@stdlib/math-base-special-roundn","2ka":"@stdlib/math/base/special/roundnf","2kb":"@stdlib/math-base-special-roundnf","0Y8":"@stdlib/math/base/special/roundsd","0Y9":"@stdlib/math-base-special-roundsd","0YA":"@stdlib/math/base/special/rsqrt","0YB":"@stdlib/math-base-special-rsqrt","0YC":"@stdlib/math/base/special/rsqrtf","0YD":"@stdlib/math-base-special-rsqrtf","23m":"@stdlib/math/base/special/sec","23n":"@stdlib/math-base-special-sec","1ts":"@stdlib/math/base/special/secd","1tt":"@stdlib/math-base-special-secd","2TY":"@stdlib/math/base/special/secdf","2TZ":"@stdlib/math-base-special-secdf","2Kq":"@stdlib/math/base/special/secf","2Kr":"@stdlib/math-base-special-secf","2OO":"@stdlib/math/base/special/sech","2OP":"@stdlib/math-base-special-sech","0YE":"@stdlib/math/base/special/sici","0YF":"@stdlib/math-base-special-sici","0YG":"@stdlib/math/base/special/signum","0YH":"@stdlib/math-base-special-signum","0YI":"@stdlib/math/base/special/signumf","0YJ":"@stdlib/math-base-special-signumf","0YK":"@stdlib/math/base/special/sin","0YL":"@stdlib/math-base-special-sin","0YM":"@stdlib/math/base/special/sinc","0YN":"@stdlib/math-base-special-sinc","2Ta":"@stdlib/math/base/special/sincf","2Tb":"@stdlib/math-base-special-sincf","0YO":"@stdlib/math/base/special/sincos","0YP":"@stdlib/math-base-special-sincos","2AO":"@stdlib/math/base/special/sincosd","2AP":"@stdlib/math-base-special-sincosd","2kc":"@stdlib/math/base/special/sincosdf","2kd":"@stdlib/math-base-special-sincosdf","2Tc":"@stdlib/math/base/special/sincosf","2Td":"@stdlib/math-base-special-sincosf","0YQ":"@stdlib/math/base/special/sincospi","0YR":"@stdlib/math-base-special-sincospi","2AQ":"@stdlib/math/base/special/sind","2AR":"@stdlib/math-base-special-sind","2Te":"@stdlib/math/base/special/sindf","2Tf":"@stdlib/math-base-special-sindf","2Ks":"@stdlib/math/base/special/sinf","2Kt":"@stdlib/math-base-special-sinf","0YS":"@stdlib/math/base/special/sinh","0YT":"@stdlib/math-base-special-sinh","0YU":"@stdlib/math/base/special/sinpi","0YV":"@stdlib/math-base-special-sinpi","2Rw":"@stdlib/math/base/special/sinpif","2Rx":"@stdlib/math-base-special-sinpif","0YW":"@stdlib/math/base/special/spence","0YX":"@stdlib/math-base-special-spence","2IY":"@stdlib/math/base/special/spencef","2IZ":"@stdlib/math-base-special-spencef","0YY":"@stdlib/math/base/special/sqrt","0YZ":"@stdlib/math-base-special-sqrt","0Ya":"@stdlib/math/base/special/sqrt1pm1","0Yb":"@stdlib/math-base-special-sqrt1pm1","0Yc":"@stdlib/math/base/special/sqrtf","0Yd":"@stdlib/math-base-special-sqrtf","1bS":"@stdlib/math/base/special/sqrtpi","1bT":"@stdlib/math-base-special-sqrtpi","24m":"@stdlib/math/base/special/sqrtpif","24n":"@stdlib/math-base-special-sqrtpif","0Ye":"@stdlib/math/base/special/tan","0Yf":"@stdlib/math-base-special-tan","1tu":"@stdlib/math/base/special/tand","1tv":"@stdlib/math-base-special-tand","2Tg":"@stdlib/math/base/special/tandf","2Th":"@stdlib/math-base-special-tandf","2Ku":"@stdlib/math/base/special/tanf","2Kv":"@stdlib/math-base-special-tanf","0Yg":"@stdlib/math/base/special/tanh","0Yh":"@stdlib/math-base-special-tanh","0Yi":"@stdlib/math/base/special/tribonacci","0Yj":"@stdlib/math-base-special-tribonacci","2Ia":"@stdlib/math/base/special/tribonaccif","2Ib":"@stdlib/math-base-special-tribonaccif","0Yk":"@stdlib/math/base/special/trigamma","0Yl":"@stdlib/math-base-special-trigamma","2Ti":"@stdlib/math/base/special/trigammaf","2Tj":"@stdlib/math-base-special-trigammaf","0Ym":"@stdlib/math/base/special/trunc","0Yn":"@stdlib/math-base-special-trunc","0Yo":"@stdlib/math/base/special/trunc10","0Yp":"@stdlib/math-base-special-trunc10","0Yq":"@stdlib/math/base/special/trunc2","0Yr":"@stdlib/math-base-special-trunc2","0Ys":"@stdlib/math/base/special/truncb","0Yt":"@stdlib/math-base-special-truncb","0Yu":"@stdlib/math/base/special/truncf","0Yv":"@stdlib/math-base-special-truncf","0Yw":"@stdlib/math/base/special/truncn","0Yx":"@stdlib/math-base-special-truncn","0Yy":"@stdlib/math/base/special/truncsd","0Yz":"@stdlib/math-base-special-truncsd","0Z0":"@stdlib/math/base/special/vercos","0Z1":"@stdlib/math-base-special-vercos","2Kw":"@stdlib/math/base/special/vercosf","2Kx":"@stdlib/math-base-special-vercosf","0Z2":"@stdlib/math/base/special/versin","0Z3":"@stdlib/math-base-special-versin","2Ky":"@stdlib/math/base/special/versinf","2Kz":"@stdlib/math-base-special-versinf","0Z4":"@stdlib/math/base/special/wrap","0Z5":"@stdlib/math-base-special-wrap","2Ic":"@stdlib/math/base/special/wrapf","2Id":"@stdlib/math-base-special-wrapf","0Z6":"@stdlib/math/base/special/xlog1py","0Z7":"@stdlib/math-base-special-xlog1py","0Z8":"@stdlib/math/base/special/xlogy","0Z9":"@stdlib/math-base-special-xlogy","20e":"@stdlib/math/base/special/xlogyf","20f":"@stdlib/math-base-special-xlogyf","2ke":"@stdlib/math/base/tools/chebyshev-series","2kf":"@stdlib/math-base-tools-chebyshev-series","2kg":"@stdlib/math/base/tools/chebyshev-seriesf","2kh":"@stdlib/math-base-tools-chebyshev-seriesf","0ZA":"@stdlib/math/base/tools/continued-fraction","0ZB":"@stdlib/math-base-tools-continued-fraction","1bU":"@stdlib/math/base/tools/evalpoly-compile-c","1bV":"@stdlib/math-base-tools-evalpoly-compile-c","0ZC":"@stdlib/math/base/tools/evalpoly-compile","0ZD":"@stdlib/math-base-tools-evalpoly-compile","0ZE":"@stdlib/math/base/tools/evalpoly","0ZF":"@stdlib/math-base-tools-evalpoly","1tw":"@stdlib/math/base/tools/evalpolyf","1tx":"@stdlib/math-base-tools-evalpolyf","1bW":"@stdlib/math/base/tools/evalrational-compile-c","1bX":"@stdlib/math-base-tools-evalrational-compile-c","0ZG":"@stdlib/math/base/tools/evalrational-compile","0ZH":"@stdlib/math-base-tools-evalrational-compile","0ZI":"@stdlib/math/base/tools/evalrational","0ZJ":"@stdlib/math-base-tools-evalrational","1ty":"@stdlib/math/base/tools/evalrationalf","1tz":"@stdlib/math-base-tools-evalrationalf","0ZK":"@stdlib/math/base/tools/fibpoly","0ZL":"@stdlib/math-base-tools-fibpoly","0ZM":"@stdlib/math/base/tools/hermitepoly","0ZN":"@stdlib/math-base-tools-hermitepoly","0ZO":"@stdlib/math/base/tools/lucaspoly","0ZP":"@stdlib/math-base-tools-lucaspoly","0ZQ":"@stdlib/math/base/tools/normhermitepoly","0ZR":"@stdlib/math-base-tools-normhermitepoly","1vE":"@stdlib/math/base/tools/normhermitepolyf","1vF":"@stdlib/math-base-tools-normhermitepolyf","0ZS":"@stdlib/math/base/tools","0ZT":"@stdlib/math-base-tools","0ZU":"@stdlib/math/base/tools/sum-series","0ZV":"@stdlib/math-base-tools-sum-series","0ZW":"@stdlib/math/base/utils/absolute-difference","0ZX":"@stdlib/math-base-utils-absolute-difference","0ZY":"@stdlib/math/base/utils/float64-epsilon-difference","0ZZ":"@stdlib/math-base-utils-float64-epsilon-difference","0Za":"@stdlib/math/base/utils","0Zb":"@stdlib/math-base-utils","0Zc":"@stdlib/math/base/utils/relative-difference","0Zd":"@stdlib/math-base-utils-relative-difference","0Ze":"@stdlib/math/iter/ops/add","0Zf":"@stdlib/math-iter-ops-add","0Zg":"@stdlib/math/iter/ops/divide","0Zh":"@stdlib/math-iter-ops-divide","0Zi":"@stdlib/math/iter/ops/mod","0Zj":"@stdlib/math-iter-ops-mod","0Zk":"@stdlib/math/iter/ops/multiply","0Zl":"@stdlib/math-iter-ops-multiply","0Zm":"@stdlib/math/iter/ops","0Zn":"@stdlib/math-iter-ops","0Zo":"@stdlib/math/iter/ops/subtract","0Zp":"@stdlib/math-iter-ops-subtract","0Zq":"@stdlib/math/iter","0Zr":"@stdlib/math-iter","0Zs":"@stdlib/math/iter/sequences/composites","0Zt":"@stdlib/math-iter-sequences-composites","0Zu":"@stdlib/math/iter/sequences/continued-fraction","0Zv":"@stdlib/math-iter-sequences-continued-fraction","0Zw":"@stdlib/math/iter/sequences/cubes","0Zx":"@stdlib/math-iter-sequences-cubes","0Zy":"@stdlib/math/iter/sequences/even-integers","0Zz":"@stdlib/math-iter-sequences-even-integers","0a0":"@stdlib/math/iter/sequences/factorials","0a1":"@stdlib/math-iter-sequences-factorials","0a2":"@stdlib/math/iter/sequences/fibonacci","0a3":"@stdlib/math-iter-sequences-fibonacci","0a4":"@stdlib/math/iter/sequences/fifth-powers","0a5":"@stdlib/math-iter-sequences-fifth-powers","0a6":"@stdlib/math/iter/sequences/fourth-powers","0a7":"@stdlib/math-iter-sequences-fourth-powers","0a8":"@stdlib/math/iter/sequences/integers","0a9":"@stdlib/math-iter-sequences-integers","0aA":"@stdlib/math/iter/sequences/lucas","0aB":"@stdlib/math-iter-sequences-lucas","0aC":"@stdlib/math/iter/sequences/negafibonacci","0aD":"@stdlib/math-iter-sequences-negafibonacci","0aE":"@stdlib/math/iter/sequences/negalucas","0aF":"@stdlib/math-iter-sequences-negalucas","0aG":"@stdlib/math/iter/sequences/negative-even-integers","0aH":"@stdlib/math-iter-sequences-negative-even-integers","0aI":"@stdlib/math/iter/sequences/negative-integers","0aJ":"@stdlib/math-iter-sequences-negative-integers","0aK":"@stdlib/math/iter/sequences/negative-odd-integers","0aL":"@stdlib/math-iter-sequences-negative-odd-integers","0aM":"@stdlib/math/iter/sequences/nonfibonacci","0aN":"@stdlib/math-iter-sequences-nonfibonacci","0aO":"@stdlib/math/iter/sequences/nonnegative-even-integers","0aP":"@stdlib/math-iter-sequences-nonnegative-even-integers","0aQ":"@stdlib/math/iter/sequences/nonnegative-integers","0aR":"@stdlib/math-iter-sequences-nonnegative-integers","0aS":"@stdlib/math/iter/sequences/nonpositive-even-integers","0aT":"@stdlib/math-iter-sequences-nonpositive-even-integers","0aU":"@stdlib/math/iter/sequences/nonpositive-integers","0aV":"@stdlib/math-iter-sequences-nonpositive-integers","0aW":"@stdlib/math/iter/sequences/nonsquares","0aX":"@stdlib/math-iter-sequences-nonsquares","0aY":"@stdlib/math/iter/sequences/odd-integers","0aZ":"@stdlib/math-iter-sequences-odd-integers","0aa":"@stdlib/math/iter/sequences","0ab":"@stdlib/math-iter-sequences","0ac":"@stdlib/math/iter/sequences/positive-even-integers","0ad":"@stdlib/math-iter-sequences-positive-even-integers","0ae":"@stdlib/math/iter/sequences/positive-integers","0af":"@stdlib/math-iter-sequences-positive-integers","0ag":"@stdlib/math/iter/sequences/positive-odd-integers","0ah":"@stdlib/math-iter-sequences-positive-odd-integers","0ai":"@stdlib/math/iter/sequences/primes","0aj":"@stdlib/math-iter-sequences-primes","0ak":"@stdlib/math/iter/sequences/squared-triangular","0al":"@stdlib/math-iter-sequences-squared-triangular","0am":"@stdlib/math/iter/sequences/squares","0an":"@stdlib/math-iter-sequences-squares","0ao":"@stdlib/math/iter/sequences/triangular","0ap":"@stdlib/math-iter-sequences-triangular","1sk":"@stdlib/math/iter/sequences/tribonacci","1sl":"@stdlib/math-iter-sequences-tribonacci","0aq":"@stdlib/math/iter/special/abs","0ar":"@stdlib/math-iter-special-abs","0as":"@stdlib/math/iter/special/abs2","0at":"@stdlib/math-iter-special-abs2","0au":"@stdlib/math/iter/special/acos","0av":"@stdlib/math-iter-special-acos","0aw":"@stdlib/math/iter/special/acosh","0ax":"@stdlib/math-iter-special-acosh","0ay":"@stdlib/math/iter/special/acot","0az":"@stdlib/math-iter-special-acot","0b0":"@stdlib/math/iter/special/acoth","0b1":"@stdlib/math-iter-special-acoth","0b2":"@stdlib/math/iter/special/acovercos","0b3":"@stdlib/math-iter-special-acovercos","0b4":"@stdlib/math/iter/special/acoversin","0b5":"@stdlib/math-iter-special-acoversin","0b6":"@stdlib/math/iter/special/ahavercos","0b7":"@stdlib/math-iter-special-ahavercos","0b8":"@stdlib/math/iter/special/ahaversin","0b9":"@stdlib/math-iter-special-ahaversin","0bA":"@stdlib/math/iter/special/asin","0bB":"@stdlib/math-iter-special-asin","0bC":"@stdlib/math/iter/special/asinh","0bD":"@stdlib/math-iter-special-asinh","0bE":"@stdlib/math/iter/special/atan","0bF":"@stdlib/math-iter-special-atan","0bG":"@stdlib/math/iter/special/atan2","0bH":"@stdlib/math-iter-special-atan2","0bI":"@stdlib/math/iter/special/atanh","0bJ":"@stdlib/math-iter-special-atanh","0bK":"@stdlib/math/iter/special/avercos","0bL":"@stdlib/math-iter-special-avercos","0bM":"@stdlib/math/iter/special/aversin","0bN":"@stdlib/math-iter-special-aversin","0bO":"@stdlib/math/iter/special/besselj0","0bP":"@stdlib/math-iter-special-besselj0","0bQ":"@stdlib/math/iter/special/besselj1","0bR":"@stdlib/math-iter-special-besselj1","0bS":"@stdlib/math/iter/special/bessely0","0bT":"@stdlib/math-iter-special-bessely0","0bU":"@stdlib/math/iter/special/bessely1","0bV":"@stdlib/math-iter-special-bessely1","0bW":"@stdlib/math/iter/special/beta","0bX":"@stdlib/math-iter-special-beta","0bY":"@stdlib/math/iter/special/betaln","0bZ":"@stdlib/math-iter-special-betaln","0ba":"@stdlib/math/iter/special/binet","0bb":"@stdlib/math-iter-special-binet","0bc":"@stdlib/math/iter/special/cbrt","0bd":"@stdlib/math-iter-special-cbrt","0be":"@stdlib/math/iter/special/ceil","0bf":"@stdlib/math-iter-special-ceil","0bg":"@stdlib/math/iter/special/ceil10","0bh":"@stdlib/math-iter-special-ceil10","0bi":"@stdlib/math/iter/special/ceil2","0bj":"@stdlib/math-iter-special-ceil2","0bk":"@stdlib/math/iter/special/cos","0bl":"@stdlib/math-iter-special-cos","0bm":"@stdlib/math/iter/special/cosh","0bn":"@stdlib/math-iter-special-cosh","0bo":"@stdlib/math/iter/special/cosm1","0bp":"@stdlib/math-iter-special-cosm1","0bq":"@stdlib/math/iter/special/cospi","0br":"@stdlib/math-iter-special-cospi","0bs":"@stdlib/math/iter/special/covercos","0bt":"@stdlib/math-iter-special-covercos","0bu":"@stdlib/math/iter/special/coversin","0bv":"@stdlib/math-iter-special-coversin","0bw":"@stdlib/math/iter/special/deg2rad","0bx":"@stdlib/math-iter-special-deg2rad","0by":"@stdlib/math/iter/special/digamma","0bz":"@stdlib/math-iter-special-digamma","0c0":"@stdlib/math/iter/special/dirac-delta","0c1":"@stdlib/math-iter-special-dirac-delta","0c2":"@stdlib/math/iter/special/dirichlet-eta","0c3":"@stdlib/math-iter-special-dirichlet-eta","0c4":"@stdlib/math/iter/special/ellipe","0c5":"@stdlib/math-iter-special-ellipe","0c6":"@stdlib/math/iter/special/ellipk","0c7":"@stdlib/math-iter-special-ellipk","0c8":"@stdlib/math/iter/special/erf","0c9":"@stdlib/math-iter-special-erf","0cA":"@stdlib/math/iter/special/erfc","0cB":"@stdlib/math-iter-special-erfc","0cC":"@stdlib/math/iter/special/erfcinv","0cD":"@stdlib/math-iter-special-erfcinv","0cE":"@stdlib/math/iter/special/erfinv","0cF":"@stdlib/math-iter-special-erfinv","0cG":"@stdlib/math/iter/special/exp","0cH":"@stdlib/math-iter-special-exp","0cI":"@stdlib/math/iter/special/exp10","0cJ":"@stdlib/math-iter-special-exp10","0cK":"@stdlib/math/iter/special/exp2","0cL":"@stdlib/math-iter-special-exp2","0cM":"@stdlib/math/iter/special/expit","0cN":"@stdlib/math-iter-special-expit","0cO":"@stdlib/math/iter/special/expm1","0cP":"@stdlib/math-iter-special-expm1","0cQ":"@stdlib/math/iter/special/expm1rel","0cR":"@stdlib/math-iter-special-expm1rel","0cS":"@stdlib/math/iter/special/factorial","0cT":"@stdlib/math-iter-special-factorial","0cU":"@stdlib/math/iter/special/factorialln","0cV":"@stdlib/math-iter-special-factorialln","0cW":"@stdlib/math/iter/special/floor","0cX":"@stdlib/math-iter-special-floor","0cY":"@stdlib/math/iter/special/floor10","0cZ":"@stdlib/math-iter-special-floor10","0ca":"@stdlib/math/iter/special/floor2","0cb":"@stdlib/math-iter-special-floor2","0cc":"@stdlib/math/iter/special/fresnelc","0cd":"@stdlib/math-iter-special-fresnelc","0ce":"@stdlib/math/iter/special/fresnels","0cf":"@stdlib/math-iter-special-fresnels","0cg":"@stdlib/math/iter/special/gamma","0ch":"@stdlib/math-iter-special-gamma","0ci":"@stdlib/math/iter/special/gamma1pm1","0cj":"@stdlib/math-iter-special-gamma1pm1","0ck":"@stdlib/math/iter/special/gammaln","0cl":"@stdlib/math-iter-special-gammaln","0cm":"@stdlib/math/iter/special/hacovercos","0cn":"@stdlib/math-iter-special-hacovercos","0co":"@stdlib/math/iter/special/hacoversin","0cp":"@stdlib/math-iter-special-hacoversin","0cq":"@stdlib/math/iter/special/havercos","0cr":"@stdlib/math-iter-special-havercos","0cs":"@stdlib/math/iter/special/haversin","0ct":"@stdlib/math-iter-special-haversin","0cu":"@stdlib/math/iter/special/inv","0cv":"@stdlib/math-iter-special-inv","0cw":"@stdlib/math/iter/special/ln","0cx":"@stdlib/math-iter-special-ln","0cy":"@stdlib/math/iter/special/log","0cz":"@stdlib/math-iter-special-log","0d0":"@stdlib/math/iter/special/log10","0d1":"@stdlib/math-iter-special-log10","0d2":"@stdlib/math/iter/special/log1mexp","0d3":"@stdlib/math-iter-special-log1mexp","0d4":"@stdlib/math/iter/special/log1p","0d5":"@stdlib/math-iter-special-log1p","0d6":"@stdlib/math/iter/special/log1pexp","0d7":"@stdlib/math-iter-special-log1pexp","0d8":"@stdlib/math/iter/special/log2","0d9":"@stdlib/math-iter-special-log2","0dA":"@stdlib/math/iter/special/logit","0dB":"@stdlib/math-iter-special-logit","0dC":"@stdlib/math/iter/special","0dD":"@stdlib/math-iter-special","0dE":"@stdlib/math/iter/special/pow","0dF":"@stdlib/math-iter-special-pow","0dG":"@stdlib/math/iter/special/rad2deg","0dH":"@stdlib/math-iter-special-rad2deg","0dI":"@stdlib/math/iter/special/ramp","0dJ":"@stdlib/math-iter-special-ramp","0dK":"@stdlib/math/iter/special/riemann-zeta","0dL":"@stdlib/math-iter-special-riemann-zeta","0dM":"@stdlib/math/iter/special/round","0dN":"@stdlib/math-iter-special-round","0dO":"@stdlib/math/iter/special/round10","0dP":"@stdlib/math-iter-special-round10","0dQ":"@stdlib/math/iter/special/round2","0dR":"@stdlib/math-iter-special-round2","0dS":"@stdlib/math/iter/special/rsqrt","0dT":"@stdlib/math-iter-special-rsqrt","0dU":"@stdlib/math/iter/special/signum","0dV":"@stdlib/math-iter-special-signum","0dW":"@stdlib/math/iter/special/sin","0dX":"@stdlib/math-iter-special-sin","0dY":"@stdlib/math/iter/special/sinc","0dZ":"@stdlib/math-iter-special-sinc","0da":"@stdlib/math/iter/special/sinh","0db":"@stdlib/math-iter-special-sinh","0dc":"@stdlib/math/iter/special/sinpi","0dd":"@stdlib/math-iter-special-sinpi","0de":"@stdlib/math/iter/special/spence","0df":"@stdlib/math-iter-special-spence","0dg":"@stdlib/math/iter/special/sqrt","0dh":"@stdlib/math-iter-special-sqrt","0di":"@stdlib/math/iter/special/sqrt1pm1","0dj":"@stdlib/math-iter-special-sqrt1pm1","0dk":"@stdlib/math/iter/special/tan","0dl":"@stdlib/math-iter-special-tan","0dm":"@stdlib/math/iter/special/tanh","0dn":"@stdlib/math-iter-special-tanh","0do":"@stdlib/math/iter/special/trigamma","0dp":"@stdlib/math-iter-special-trigamma","0dq":"@stdlib/math/iter/special/trunc","0dr":"@stdlib/math-iter-special-trunc","0ds":"@stdlib/math/iter/special/trunc10","0dt":"@stdlib/math-iter-special-trunc10","0du":"@stdlib/math/iter/special/trunc2","0dv":"@stdlib/math-iter-special-trunc2","0dw":"@stdlib/math/iter/special/vercos","0dx":"@stdlib/math-iter-special-vercos","0dy":"@stdlib/math/iter/special/versin","0dz":"@stdlib/math-iter-special-versin","0e0":"@stdlib/math/iter/tools/map","0e1":"@stdlib/math-iter-tools-map","0e2":"@stdlib/math/iter/tools/map2","0e3":"@stdlib/math-iter-tools-map2","0e4":"@stdlib/math/iter/tools/map3","0e5":"@stdlib/math-iter-tools-map3","0e6":"@stdlib/math/iter/tools","0e7":"@stdlib/math-iter-tools","0e8":"@stdlib/math/iter/utils/continued-fraction","0e9":"@stdlib/math-iter-utils-continued-fraction","0eA":"@stdlib/math/iter/utils","0eB":"@stdlib/math-iter-utils","0eD":"@stdlib/math","0eE":"@stdlib/math/special/abs","0eF":"@stdlib/math-special-abs","0eG":"@stdlib/math/special","0eH":"@stdlib/math-special","1bY":"@stdlib/math/strided/ops/add-by","1bZ":"@stdlib/math-strided-ops-add-by","0eI":"@stdlib/math/strided/ops/add","0eJ":"@stdlib/math-strided-ops-add","1ba":"@stdlib/math/strided/ops/mul-by","1bb":"@stdlib/math-strided-ops-mul-by","0eK":"@stdlib/math/strided/ops/mul","0eL":"@stdlib/math-strided-ops-mul","0eM":"@stdlib/math/strided/ops","0eN":"@stdlib/math-strided-ops","1bc":"@stdlib/math/strided/ops/sub-by","1bd":"@stdlib/math-strided-ops-sub-by","0eO":"@stdlib/math/strided/ops/sub","0eP":"@stdlib/math-strided-ops-sub","0eQ":"@stdlib/math/strided","0eR":"@stdlib/math-strided","0eS":"@stdlib/math/strided/special/abs-by","0eT":"@stdlib/math-strided-special-abs-by","0eU":"@stdlib/math/strided/special/abs","0eV":"@stdlib/math-strided-special-abs","0eW":"@stdlib/math/strided/special/abs2-by","0eX":"@stdlib/math-strided-special-abs2-by","0eY":"@stdlib/math/strided/special/abs2","0eZ":"@stdlib/math-strided-special-abs2","0ea":"@stdlib/math/strided/special/acos-by","0eb":"@stdlib/math-strided-special-acos-by","0ec":"@stdlib/math/strided/special/acosh-by","0ed":"@stdlib/math-strided-special-acosh-by","0ee":"@stdlib/math/strided/special/acot-by","0ef":"@stdlib/math-strided-special-acot-by","0eg":"@stdlib/math/strided/special/acoth-by","0eh":"@stdlib/math-strided-special-acoth-by","0ei":"@stdlib/math/strided/special/acovercos-by","0ej":"@stdlib/math-strided-special-acovercos-by","0ek":"@stdlib/math/strided/special/acoversin-by","0el":"@stdlib/math-strided-special-acoversin-by","0em":"@stdlib/math/strided/special/ahavercos-by","0en":"@stdlib/math-strided-special-ahavercos-by","0eo":"@stdlib/math/strided/special/ahaversin-by","0ep":"@stdlib/math-strided-special-ahaversin-by","0eq":"@stdlib/math/strided/special/asin-by","0er":"@stdlib/math-strided-special-asin-by","0es":"@stdlib/math/strided/special/asinh-by","0et":"@stdlib/math-strided-special-asinh-by","0eu":"@stdlib/math/strided/special/atan-by","0ev":"@stdlib/math-strided-special-atan-by","0ew":"@stdlib/math/strided/special/atanh-by","0ex":"@stdlib/math-strided-special-atanh-by","0ey":"@stdlib/math/strided/special/avercos-by","0ez":"@stdlib/math-strided-special-avercos-by","0f0":"@stdlib/math/strided/special/aversin-by","0f1":"@stdlib/math-strided-special-aversin-by","0f2":"@stdlib/math/strided/special/besselj0-by","0f3":"@stdlib/math-strided-special-besselj0-by","0f4":"@stdlib/math/strided/special/besselj1-by","0f5":"@stdlib/math-strided-special-besselj1-by","0f6":"@stdlib/math/strided/special/bessely0-by","0f7":"@stdlib/math-strided-special-bessely0-by","0f8":"@stdlib/math/strided/special/bessely1-by","0f9":"@stdlib/math-strided-special-bessely1-by","0fA":"@stdlib/math/strided/special/binet-by","0fB":"@stdlib/math-strided-special-binet-by","1be":"@stdlib/math/strided/special/cbrt-by","1bf":"@stdlib/math-strided-special-cbrt-by","0fC":"@stdlib/math/strided/special/cbrt","0fD":"@stdlib/math-strided-special-cbrt","0fE":"@stdlib/math/strided/special/ceil","0fF":"@stdlib/math-strided-special-ceil","1bg":"@stdlib/math/strided/special/cos-by","1bh":"@stdlib/math-strided-special-cos-by","0fG":"@stdlib/math/strided/special/dabs","0fH":"@stdlib/math-strided-special-dabs","0fI":"@stdlib/math/strided/special/dabs2","0fJ":"@stdlib/math-strided-special-dabs2","1bi":"@stdlib/math/strided/special/dcbrt-by","1bj":"@stdlib/math-strided-special-dcbrt-by","0fK":"@stdlib/math/strided/special/dcbrt","0fL":"@stdlib/math-strided-special-dcbrt","0fM":"@stdlib/math/strided/special/dceil","0fN":"@stdlib/math-strided-special-dceil","0fO":"@stdlib/math/strided/special/ddeg2rad","0fP":"@stdlib/math-strided-special-ddeg2rad","0fQ":"@stdlib/math/strided/special/deg2rad","0fR":"@stdlib/math-strided-special-deg2rad","0fS":"@stdlib/math/strided/special/dfloor","0fT":"@stdlib/math-strided-special-dfloor","0fU":"@stdlib/math/strided/special/dinv","0fV":"@stdlib/math-strided-special-dinv","0fW":"@stdlib/math/strided/special/dmskabs","0fX":"@stdlib/math-strided-special-dmskabs","0fY":"@stdlib/math/strided/special/dmskabs2","0fZ":"@stdlib/math-strided-special-dmskabs2","0fa":"@stdlib/math/strided/special/dmskcbrt","0fb":"@stdlib/math-strided-special-dmskcbrt","0fc":"@stdlib/math/strided/special/dmskceil","0fd":"@stdlib/math-strided-special-dmskceil","0fe":"@stdlib/math/strided/special/dmskdeg2rad","0ff":"@stdlib/math-strided-special-dmskdeg2rad","0fg":"@stdlib/math/strided/special/dmskfloor","0fh":"@stdlib/math-strided-special-dmskfloor","0fi":"@stdlib/math/strided/special/dmskinv","0fj":"@stdlib/math-strided-special-dmskinv","0fk":"@stdlib/math/strided/special/dmskramp","0fl":"@stdlib/math-strided-special-dmskramp","0fm":"@stdlib/math/strided/special/dmskrsqrt","0fn":"@stdlib/math-strided-special-dmskrsqrt","0fo":"@stdlib/math/strided/special/dmsksqrt","0fp":"@stdlib/math-strided-special-dmsksqrt","0fq":"@stdlib/math/strided/special/dmsktrunc","0fr":"@stdlib/math-strided-special-dmsktrunc","0fs":"@stdlib/math/strided/special/dramp","0ft":"@stdlib/math-strided-special-dramp","0fu":"@stdlib/math/strided/special/drsqrt","0fv":"@stdlib/math-strided-special-drsqrt","0fw":"@stdlib/math/strided/special/dsqrt","0fx":"@stdlib/math-strided-special-dsqrt","0fy":"@stdlib/math/strided/special/dtrunc","0fz":"@stdlib/math-strided-special-dtrunc","0g0":"@stdlib/math/strided/special/floor","0g1":"@stdlib/math-strided-special-floor","0g2":"@stdlib/math/strided/special/inv","0g3":"@stdlib/math-strided-special-inv","0g4":"@stdlib/math/strided/special","0g5":"@stdlib/math-strided-special","0g6":"@stdlib/math/strided/special/ramp","0g7":"@stdlib/math-strided-special-ramp","0g8":"@stdlib/math/strided/special/rsqrt","0g9":"@stdlib/math-strided-special-rsqrt","0gA":"@stdlib/math/strided/special/sabs","0gB":"@stdlib/math-strided-special-sabs","0gC":"@stdlib/math/strided/special/sabs2","0gD":"@stdlib/math-strided-special-sabs2","0gE":"@stdlib/math/strided/special/scbrt","0gF":"@stdlib/math-strided-special-scbrt","0gG":"@stdlib/math/strided/special/sceil","0gH":"@stdlib/math-strided-special-sceil","0gI":"@stdlib/math/strided/special/sdeg2rad","0gJ":"@stdlib/math-strided-special-sdeg2rad","0gK":"@stdlib/math/strided/special/sfloor","0gL":"@stdlib/math-strided-special-sfloor","1bk":"@stdlib/math/strided/special/sin-by","1bl":"@stdlib/math-strided-special-sin-by","0gM":"@stdlib/math/strided/special/sinv","0gN":"@stdlib/math-strided-special-sinv","0gO":"@stdlib/math/strided/special/smskabs","0gP":"@stdlib/math-strided-special-smskabs","0gQ":"@stdlib/math/strided/special/smskabs2","0gR":"@stdlib/math-strided-special-smskabs2","0gS":"@stdlib/math/strided/special/smskcbrt","0gT":"@stdlib/math-strided-special-smskcbrt","0gU":"@stdlib/math/strided/special/smskceil","0gV":"@stdlib/math-strided-special-smskceil","0gW":"@stdlib/math/strided/special/smskdeg2rad","0gX":"@stdlib/math-strided-special-smskdeg2rad","0gY":"@stdlib/math/strided/special/smskfloor","0gZ":"@stdlib/math-strided-special-smskfloor","0ga":"@stdlib/math/strided/special/smskinv","0gb":"@stdlib/math-strided-special-smskinv","0gc":"@stdlib/math/strided/special/smskramp","0gd":"@stdlib/math-strided-special-smskramp","0ge":"@stdlib/math/strided/special/smskrsqrt","0gf":"@stdlib/math-strided-special-smskrsqrt","0gg":"@stdlib/math/strided/special/smsksqrt","0gh":"@stdlib/math-strided-special-smsksqrt","0gi":"@stdlib/math/strided/special/smsktrunc","0gj":"@stdlib/math-strided-special-smsktrunc","1bm":"@stdlib/math/strided/special/sqrt-by","1bn":"@stdlib/math-strided-special-sqrt-by","0gk":"@stdlib/math/strided/special/sqrt","0gl":"@stdlib/math-strided-special-sqrt","0gm":"@stdlib/math/strided/special/sramp","0gn":"@stdlib/math-strided-special-sramp","0go":"@stdlib/math/strided/special/srsqrt","0gp":"@stdlib/math-strided-special-srsqrt","0gq":"@stdlib/math/strided/special/ssqrt","0gr":"@stdlib/math-strided-special-ssqrt","0gs":"@stdlib/math/strided/special/strunc","0gt":"@stdlib/math-strided-special-strunc","0gu":"@stdlib/math/strided/special/trunc","0gv":"@stdlib/math-strided-special-trunc","0gw":"@stdlib/math/tools","0gx":"@stdlib/math-tools","0gy":"@stdlib/math/tools/unary","0gz":"@stdlib/math-tools-unary","2ki":"@stdlib/ml/base/kmeans/algorithm-enum2str","2kj":"@stdlib/ml-base-kmeans-algorithm-enum2str","2kk":"@stdlib/ml/base/kmeans/algorithm-resolve-enum","2kl":"@stdlib/ml-base-kmeans-algorithm-resolve-enum","2km":"@stdlib/ml/base/kmeans/algorithm-resolve-str","2kn":"@stdlib/ml-base-kmeans-algorithm-resolve-str","2ko":"@stdlib/ml/base/kmeans/algorithm-str2enum","2kp":"@stdlib/ml-base-kmeans-algorithm-str2enum","2kq":"@stdlib/ml/base/kmeans/algorithms","2kr":"@stdlib/ml-base-kmeans-algorithms","2ks":"@stdlib/ml/base/kmeans/metric-enum2str","2kt":"@stdlib/ml-base-kmeans-metric-enum2str","2ku":"@stdlib/ml/base/kmeans/metric-resolve-enum","2kv":"@stdlib/ml-base-kmeans-metric-resolve-enum","2kw":"@stdlib/ml/base/kmeans/metric-resolve-str","2kx":"@stdlib/ml-base-kmeans-metric-resolve-str","2ky":"@stdlib/ml/base/kmeans/metric-str2enum","2kz":"@stdlib/ml-base-kmeans-metric-str2enum","2l0":"@stdlib/ml/base/kmeans/metrics","2l1":"@stdlib/ml-base-kmeans-metrics","2xG":"@stdlib/ml/base/kmeans/results/struct-factory","2xH":"@stdlib/ml-base-kmeans-results-struct-factory","31U":"@stdlib/ml/base/loss/float64/epsilon-insensitive-gradient","31V":"@stdlib/ml-base-loss-float64-epsilon-insensitive-gradient","31W":"@stdlib/ml/base/loss/float64/squared-epsilon-insensitive-gradient","31X":"@stdlib/ml-base-loss-float64-squared-epsilon-insensitive-gradient","31Y":"@stdlib/ml/base/loss/float64/squared-error-gradient","31Z":"@stdlib/ml-base-loss-float64-squared-error-gradient","31a":"@stdlib/ml/base/sgd-classification/learning-rate-enum2str","31b":"@stdlib/ml-base-sgd-classification-learning-rate-enum2str","31c":"@stdlib/ml/base/sgd-classification/learning-rate-resolve-enum","31d":"@stdlib/ml-base-sgd-classification-learning-rate-resolve-enum","31e":"@stdlib/ml/base/sgd-classification/learning-rate-resolve-str","31f":"@stdlib/ml-base-sgd-classification-learning-rate-resolve-str","31g":"@stdlib/ml/base/sgd-classification/learning-rate-str2enum","31h":"@stdlib/ml-base-sgd-classification-learning-rate-str2enum","31i":"@stdlib/ml/base/sgd-classification/learning-rates","31j":"@stdlib/ml-base-sgd-classification-learning-rates","31k":"@stdlib/ml/base/sgd-classification/loss-function-enum2str","31l":"@stdlib/ml-base-sgd-classification-loss-function-enum2str","31m":"@stdlib/ml/base/sgd-classification/loss-function-resolve-enum","31n":"@stdlib/ml-base-sgd-classification-loss-function-resolve-enum","31o":"@stdlib/ml/base/sgd-classification/loss-function-resolve-str","31p":"@stdlib/ml-base-sgd-classification-loss-function-resolve-str","31q":"@stdlib/ml/base/sgd-classification/loss-function-str2enum","31r":"@stdlib/ml-base-sgd-classification-loss-function-str2enum","31s":"@stdlib/ml/base/sgd-classification/loss-functions","31t":"@stdlib/ml-base-sgd-classification-loss-functions","0h0":"@stdlib/ml/incr/binary-classification","0h1":"@stdlib/ml-incr-binary-classification","0h2":"@stdlib/ml/incr/kmeans","0h3":"@stdlib/ml-incr-kmeans","0h4":"@stdlib/ml/incr","0h5":"@stdlib/ml-incr","0h6":"@stdlib/ml/incr/sgd-regression","0h7":"@stdlib/ml-incr-sgd-regression","0h9":"@stdlib/ml","2ys":"@stdlib/ml/strided/dkmeans-distance","2yt":"@stdlib/ml-strided-dkmeans-distance","0hA":"@stdlib/namespace/alias2pkg","0hB":"@stdlib/namespace-alias2pkg","0hC":"@stdlib/namespace/alias2related","0hD":"@stdlib/namespace-alias2related","0hE":"@stdlib/namespace/alias2standalone","0hF":"@stdlib/namespace-alias2standalone","0hG":"@stdlib/namespace/aliases","0hH":"@stdlib/namespace-aliases","0hJ":"@stdlib/namespace","0hK":"@stdlib/namespace/pkg2alias","0hL":"@stdlib/namespace-pkg2alias","0hM":"@stdlib/namespace/pkg2related","0hN":"@stdlib/namespace-pkg2related","0hO":"@stdlib/namespace/pkg2standalone","0hP":"@stdlib/namespace-pkg2standalone","0hQ":"@stdlib/namespace/standalone2pkg","0hR":"@stdlib/namespace-standalone2pkg","2l2":"@stdlib/napi/argv-booleanarray","2l3":"@stdlib/napi-argv-booleanarray","1vG":"@stdlib/napi/argv-complex128","1vH":"@stdlib/napi-argv-complex128","1bo":"@stdlib/napi/argv-complex128array","1bp":"@stdlib/napi-argv-complex128array","1vI":"@stdlib/napi/argv-complex64","1vJ":"@stdlib/napi-argv-complex64","1bq":"@stdlib/napi/argv-complex64array","1br":"@stdlib/napi-argv-complex64array","2L0":"@stdlib/napi/argv-dataview-cast","2L1":"@stdlib/napi-argv-dataview-cast","2L2":"@stdlib/napi/argv-dataview","2L3":"@stdlib/napi-argv-dataview","1bs":"@stdlib/napi/argv-double","1bt":"@stdlib/napi-argv-double","1bu":"@stdlib/napi/argv-float","1bv":"@stdlib/napi-argv-float","1bw":"@stdlib/napi/argv-float32array","1bx":"@stdlib/napi-argv-float32array","1by":"@stdlib/napi/argv-float64array","1bz":"@stdlib/napi-argv-float64array","1c0":"@stdlib/napi/argv-int16array","1c1":"@stdlib/napi-argv-int16array","1c2":"@stdlib/napi/argv-int32","1c3":"@stdlib/napi-argv-int32","1c4":"@stdlib/napi/argv-int32array","1c5":"@stdlib/napi-argv-int32array","1c6":"@stdlib/napi/argv-int64","1c7":"@stdlib/napi-argv-int64","1c8":"@stdlib/napi/argv-int8array","1c9":"@stdlib/napi-argv-int8array","2l4":"@stdlib/napi/argv-strided-booleanarray","2l5":"@stdlib/napi-argv-strided-booleanarray","2l6":"@stdlib/napi/argv-strided-booleanarray2d","2l7":"@stdlib/napi-argv-strided-booleanarray2d","1cA":"@stdlib/napi/argv-strided-complex128array","1cB":"@stdlib/napi-argv-strided-complex128array","20g":"@stdlib/napi/argv-strided-complex128array2d","20h":"@stdlib/napi-argv-strided-complex128array2d","1cC":"@stdlib/napi/argv-strided-complex64array","1cD":"@stdlib/napi-argv-strided-complex64array","20i":"@stdlib/napi/argv-strided-complex64array2d","20j":"@stdlib/napi-argv-strided-complex64array2d","1cE":"@stdlib/napi/argv-strided-float32array","1cF":"@stdlib/napi-argv-strided-float32array","20k":"@stdlib/napi/argv-strided-float32array2d","20l":"@stdlib/napi-argv-strided-float32array2d","1cG":"@stdlib/napi/argv-strided-float64array","1cH":"@stdlib/napi-argv-strided-float64array","20m":"@stdlib/napi/argv-strided-float64array2d","20n":"@stdlib/napi-argv-strided-float64array2d","1cI":"@stdlib/napi/argv-strided-int16array","1cJ":"@stdlib/napi-argv-strided-int16array","20o":"@stdlib/napi/argv-strided-int16array2d","20p":"@stdlib/napi-argv-strided-int16array2d","1cK":"@stdlib/napi/argv-strided-int32array","1cL":"@stdlib/napi-argv-strided-int32array","20q":"@stdlib/napi/argv-strided-int32array2d","20r":"@stdlib/napi-argv-strided-int32array2d","1cM":"@stdlib/napi/argv-strided-int8array","1cN":"@stdlib/napi-argv-strided-int8array","20s":"@stdlib/napi/argv-strided-int8array2d","20t":"@stdlib/napi-argv-strided-int8array2d","1cO":"@stdlib/napi/argv-strided-uint16array","1cP":"@stdlib/napi-argv-strided-uint16array","20u":"@stdlib/napi/argv-strided-uint16array2d","20v":"@stdlib/napi-argv-strided-uint16array2d","1cQ":"@stdlib/napi/argv-strided-uint32array","1cR":"@stdlib/napi-argv-strided-uint32array","20w":"@stdlib/napi/argv-strided-uint32array2d","20x":"@stdlib/napi-argv-strided-uint32array2d","1cS":"@stdlib/napi/argv-strided-uint8array","1cT":"@stdlib/napi-argv-strided-uint8array","20y":"@stdlib/napi/argv-strided-uint8array2d","20z":"@stdlib/napi-argv-strided-uint8array2d","1cU":"@stdlib/napi/argv-uint16array","1cV":"@stdlib/napi-argv-uint16array","1cW":"@stdlib/napi/argv-uint32","1cX":"@stdlib/napi-argv-uint32","1cY":"@stdlib/napi/argv-uint32array","1cZ":"@stdlib/napi-argv-uint32array","2l8":"@stdlib/napi/argv-uint64","2l9":"@stdlib/napi-argv-uint64","1ca":"@stdlib/napi/argv-uint8array","1cb":"@stdlib/napi-argv-uint8array","1cc":"@stdlib/napi/argv","1cd":"@stdlib/napi-argv","2xI":"@stdlib/napi/create-boolean","2xJ":"@stdlib/napi-create-boolean","1vK":"@stdlib/napi/create-complex-like","1vL":"@stdlib/napi-create-complex-like","1vM":"@stdlib/napi/create-double","1vN":"@stdlib/napi-create-double","1vO":"@stdlib/napi/create-int32","1vP":"@stdlib/napi-create-int32","2lA":"@stdlib/napi/create-int64","2lB":"@stdlib/napi-create-int64","1vQ":"@stdlib/napi/create-uint32","1vR":"@stdlib/napi-create-uint32","2lC":"@stdlib/napi/create-uint64","2lD":"@stdlib/napi-create-uint64","1ce":"@stdlib/napi/export","1cf":"@stdlib/napi-export","1ch":"@stdlib/napi","2WQ":"@stdlib/ndarray/any-by","2WR":"@stdlib/ndarray-any-by","2WS":"@stdlib/ndarray/any","2WT":"@stdlib/ndarray-any","0hS":"@stdlib/ndarray/array","0hT":"@stdlib/ndarray-array","1q2":"@stdlib/ndarray/at","1q3":"@stdlib/ndarray-at","2VQ":"@stdlib/ndarray/base/any-by","2VR":"@stdlib/ndarray-base-any-by","2V4":"@stdlib/ndarray/base/any","2V5":"@stdlib/ndarray-base-any","2lE":"@stdlib/ndarray/base/append-singleton-dimensions","2lF":"@stdlib/ndarray-base-append-singleton-dimensions","0hU":"@stdlib/ndarray/base/assert/is-allowed-data-type-cast","0hV":"@stdlib/ndarray-base-assert-is-allowed-data-type-cast","2yu":"@stdlib/ndarray/base/assert/is-binary-data-type","2yv":"@stdlib/ndarray-base-assert-is-binary-data-type","1xm":"@stdlib/ndarray/base/assert/is-boolean-data-type","1xn":"@stdlib/ndarray-base-assert-is-boolean-data-type","2Fe":"@stdlib/ndarray/base/assert/is-boolean-index-data-type","2Ff":"@stdlib/ndarray-base-assert-is-boolean-index-data-type","0hW":"@stdlib/ndarray/base/assert/is-buffer-length-compatible-shape","0hX":"@stdlib/ndarray-base-assert-is-buffer-length-compatible-shape","0hY":"@stdlib/ndarray/base/assert/is-buffer-length-compatible","0hZ":"@stdlib/ndarray-base-assert-is-buffer-length-compatible","0ha":"@stdlib/ndarray/base/assert/is-casting-mode","0hb":"@stdlib/ndarray-base-assert-is-casting-mode","0hc":"@stdlib/ndarray/base/assert/is-column-major-contiguous","0hd":"@stdlib/ndarray-base-assert-is-column-major-contiguous","25u":"@stdlib/ndarray/base/assert/is-column-major-string","25v":"@stdlib/ndarray-base-assert-is-column-major-string","0he":"@stdlib/ndarray/base/assert/is-column-major","0hf":"@stdlib/ndarray-base-assert-is-column-major","2Wo":"@stdlib/ndarray/base/assert/is-complex-floating-point-data-type-char","2Wp":"@stdlib/ndarray-base-assert-is-complex-floating-point-data-type-char","1ci":"@stdlib/ndarray/base/assert/is-complex-floating-point-data-type","1cj":"@stdlib/ndarray-base-assert-is-complex-floating-point-data-type","0hg":"@stdlib/ndarray/base/assert/is-contiguous","0hh":"@stdlib/ndarray-base-assert-is-contiguous","2W6":"@stdlib/ndarray/base/assert/is-data-type-object","2W7":"@stdlib/ndarray-base-assert-is-data-type-object","2OQ":"@stdlib/ndarray/base/assert/is-data-type-string","2OR":"@stdlib/ndarray-base-assert-is-data-type-string","0hi":"@stdlib/ndarray/base/assert/is-data-type","0hj":"@stdlib/ndarray-base-assert-is-data-type","2W8":"@stdlib/ndarray/base/assert/is-equal-data-type","2W9":"@stdlib/ndarray-base-assert-is-equal-data-type","1ck":"@stdlib/ndarray/base/assert/is-floating-point-data-type","1cl":"@stdlib/ndarray-base-assert-is-floating-point-data-type","2yw":"@stdlib/ndarray/base/assert/is-generic-data-type","2yx":"@stdlib/ndarray-base-assert-is-generic-data-type","2Fg":"@stdlib/ndarray/base/assert/is-index-data-type","2Fh":"@stdlib/ndarray-base-assert-is-index-data-type","0hk":"@stdlib/ndarray/base/assert/is-index-mode","0hl":"@stdlib/ndarray-base-assert-is-index-mode","2Fi":"@stdlib/ndarray/base/assert/is-input-casting-policy","2Fj":"@stdlib/ndarray-base-assert-is-input-casting-policy","1cm":"@stdlib/ndarray/base/assert/is-integer-data-type","1cn":"@stdlib/ndarray-base-assert-is-integer-data-type","2Fk":"@stdlib/ndarray/base/assert/is-integer-index-data-type","2Fl":"@stdlib/ndarray-base-assert-is-integer-index-data-type","2Fm":"@stdlib/ndarray/base/assert/is-mask-index-data-type","2Fn":"@stdlib/ndarray-base-assert-is-mask-index-data-type","1kE":"@stdlib/ndarray/base/assert/is-mostly-safe-data-type-cast","1kF":"@stdlib/ndarray-base-assert-is-mostly-safe-data-type-cast","1co":"@stdlib/ndarray/base/assert/is-numeric-data-type","1cp":"@stdlib/ndarray-base-assert-is-numeric-data-type","0hm":"@stdlib/ndarray/base/assert/is-order","0hn":"@stdlib/ndarray-base-assert-is-order","0ho":"@stdlib/ndarray/base/assert/is-read-only","0hp":"@stdlib/ndarray-base-assert-is-read-only","1cq":"@stdlib/ndarray/base/assert/is-real-data-type","1cr":"@stdlib/ndarray-base-assert-is-real-data-type","1cs":"@stdlib/ndarray/base/assert/is-real-floating-point-data-type","1ct":"@stdlib/ndarray-base-assert-is-real-floating-point-data-type","0hq":"@stdlib/ndarray/base/assert/is-row-major-contiguous","0hr":"@stdlib/ndarray-base-assert-is-row-major-contiguous","25w":"@stdlib/ndarray/base/assert/is-row-major-string","25x":"@stdlib/ndarray-base-assert-is-row-major-string","0hs":"@stdlib/ndarray/base/assert/is-row-major","0ht":"@stdlib/ndarray-base-assert-is-row-major","0hu":"@stdlib/ndarray/base/assert/is-safe-data-type-cast","0hv":"@stdlib/ndarray-base-assert-is-safe-data-type-cast","0hw":"@stdlib/ndarray/base/assert/is-same-kind-data-type-cast","0hx":"@stdlib/ndarray-base-assert-is-same-kind-data-type-cast","2AS":"@stdlib/ndarray/base/assert/is-scalar-mostly-safe-compatible","2AT":"@stdlib/ndarray-base-assert-is-scalar-mostly-safe-compatible","1cu":"@stdlib/ndarray/base/assert/is-signed-integer-data-type","1cv":"@stdlib/ndarray-base-assert-is-signed-integer-data-type","0hy":"@stdlib/ndarray/base/assert/is-single-segment-compatible","0hz":"@stdlib/ndarray-base-assert-is-single-segment-compatible","2L4":"@stdlib/ndarray/base/assert/is-struct-data-type","2L5":"@stdlib/ndarray-base-assert-is-struct-data-type","1cw":"@stdlib/ndarray/base/assert/is-unsigned-integer-data-type","1cx":"@stdlib/ndarray-base-assert-is-unsigned-integer-data-type","0i0":"@stdlib/ndarray/base/assert","0i1":"@stdlib/ndarray-base-assert","2xK":"@stdlib/ndarray/base/assign-diagonal","2xL":"@stdlib/ndarray-base-assign-diagonal","2lG":"@stdlib/ndarray/base/assign-scalar","2lH":"@stdlib/ndarray-base-assign-scalar","1kG":"@stdlib/ndarray/base/assign","1kH":"@stdlib/ndarray-base-assign","2lI":"@stdlib/ndarray/base/atleast1d","2lJ":"@stdlib/ndarray-base-atleast1d","2lK":"@stdlib/ndarray/base/atleast2d","2lL":"@stdlib/ndarray-base-atleast2d","2lM":"@stdlib/ndarray/base/atleast3d","2lN":"@stdlib/ndarray-base-atleast3d","2lO":"@stdlib/ndarray/base/atleastnd","2lP":"@stdlib/ndarray-base-atleastnd","2VS":"@stdlib/ndarray/base/binary-input-casting-dtype","2VT":"@stdlib/ndarray-base-binary-input-casting-dtype","1cy":"@stdlib/ndarray/base/binary-loop-interchange-order","1cz":"@stdlib/ndarray-base-binary-loop-interchange-order","2Gi":"@stdlib/ndarray/base/binary-output-dtype","2Gj":"@stdlib/ndarray-base-binary-output-dtype","2VU":"@stdlib/ndarray/base/binary-reduce-strided1d-dispatch-factory","2VV":"@stdlib/ndarray-base-binary-reduce-strided1d-dispatch-factory","2VW":"@stdlib/ndarray/base/binary-reduce-strided1d-dispatch","2VX":"@stdlib/ndarray-base-binary-reduce-strided1d-dispatch","2Tk":"@stdlib/ndarray/base/binary-reduce-strided1d","2Tl":"@stdlib/ndarray-base-binary-reduce-strided1d","1d0":"@stdlib/ndarray/base/binary-tiling-block-size","1d1":"@stdlib/ndarray-base-binary-tiling-block-size","2Gk":"@stdlib/ndarray/base/binary","2Gl":"@stdlib/ndarray-base-binary","0i2":"@stdlib/ndarray/base/bind2vind","0i3":"@stdlib/ndarray-base-bind2vind","2VY":"@stdlib/ndarray/base/broadcast-array-except-dimensions","2VZ":"@stdlib/ndarray-base-broadcast-array-except-dimensions","0i4":"@stdlib/ndarray/base/broadcast-array","0i5":"@stdlib/ndarray-base-broadcast-array","1nU":"@stdlib/ndarray/base/broadcast-arrays","1nV":"@stdlib/ndarray-base-broadcast-arrays","2lQ":"@stdlib/ndarray/base/broadcast-scalar-like","2lR":"@stdlib/ndarray-base-broadcast-scalar-like","1d2":"@stdlib/ndarray/base/broadcast-scalar","1d3":"@stdlib/ndarray-base-broadcast-scalar","0i6":"@stdlib/ndarray/base/broadcast-shapes","0i7":"@stdlib/ndarray-base-broadcast-shapes","0i8":"@stdlib/ndarray/base/buffer-ctors","0i9":"@stdlib/ndarray-base-buffer-ctors","0iA":"@stdlib/ndarray/base/buffer-dtype-enum","0iB":"@stdlib/ndarray-base-buffer-dtype-enum","0iC":"@stdlib/ndarray/base/buffer-dtype","0iD":"@stdlib/ndarray-base-buffer-dtype","0iE":"@stdlib/ndarray/base/buffer","0iF":"@stdlib/ndarray-base-buffer","0iG":"@stdlib/ndarray/base/bytes-per-element","0iH":"@stdlib/ndarray-base-bytes-per-element","0iI":"@stdlib/ndarray/base/char2dtype","0iJ":"@stdlib/ndarray-base-char2dtype","0iK":"@stdlib/ndarray/base/clamp-index","0iL":"@stdlib/ndarray-base-clamp-index","2Xw":"@stdlib/ndarray/base/complement-shape","2Xx":"@stdlib/ndarray-base-complement-shape","2lS":"@stdlib/ndarray/base/consensus-order","2lT":"@stdlib/ndarray-base-consensus-order","2Wq":"@stdlib/ndarray/base/copy","2Wr":"@stdlib/ndarray-base-copy","2Ie":"@stdlib/ndarray/base/count-falsy","2If":"@stdlib/ndarray-base-count-falsy","2Ig":"@stdlib/ndarray/base/count-if","2Ih":"@stdlib/ndarray-base-count-if","2Ii":"@stdlib/ndarray/base/count-truthy","2Ij":"@stdlib/ndarray-base-count-truthy","0iM":"@stdlib/ndarray/base/ctor","0iN":"@stdlib/ndarray-base-ctor","1kI":"@stdlib/ndarray/base/data-buffer","1kJ":"@stdlib/ndarray-base-data-buffer","2lU":"@stdlib/ndarray/base/descriptor","2lV":"@stdlib/ndarray-base-descriptor","2lW":"@stdlib/ndarray/base/diagonal","2lX":"@stdlib/ndarray-base-diagonal","2WA":"@stdlib/ndarray/base/dtype-alignment","2WB":"@stdlib/ndarray-base-dtype-alignment","0iO":"@stdlib/ndarray/base/dtype-char","0iP":"@stdlib/ndarray-base-dtype-char","2Ws":"@stdlib/ndarray/base/dtype-chars","2Wt":"@stdlib/ndarray-base-dtype-chars","0iQ":"@stdlib/ndarray/base/dtype-desc","0iR":"@stdlib/ndarray-base-dtype-desc","0iS":"@stdlib/ndarray/base/dtype-enum2str","0iT":"@stdlib/ndarray-base-dtype-enum2str","2WU":"@stdlib/ndarray/base/dtype-enums","2WV":"@stdlib/ndarray-base-dtype-enums","2WW":"@stdlib/ndarray/base/dtype-objects","2WX":"@stdlib/ndarray-base-dtype-objects","0iU":"@stdlib/ndarray/base/dtype-resolve-enum","0iV":"@stdlib/ndarray-base-dtype-resolve-enum","0iW":"@stdlib/ndarray/base/dtype-resolve-str","0iX":"@stdlib/ndarray-base-dtype-resolve-str","0iY":"@stdlib/ndarray/base/dtype-str2enum","0iZ":"@stdlib/ndarray-base-dtype-str2enum","2WY":"@stdlib/ndarray/base/dtype-strings","2WZ":"@stdlib/ndarray-base-dtype-strings","1kK":"@stdlib/ndarray/base/dtype","1kL":"@stdlib/ndarray-base-dtype","0ia":"@stdlib/ndarray/base/dtype2c","0ib":"@stdlib/ndarray-base-dtype2c","2WC":"@stdlib/ndarray/base/dtypes2enums","2WD":"@stdlib/ndarray-base-dtypes2enums","0ic":"@stdlib/ndarray/base/dtypes2signatures","0id":"@stdlib/ndarray-base-dtypes2signatures","2lY":"@stdlib/ndarray/base/dtypes2strings","2lZ":"@stdlib/ndarray-base-dtypes2strings","1d4":"@stdlib/ndarray/base/empty-like","1d5":"@stdlib/ndarray-base-empty-like","1d6":"@stdlib/ndarray/base/empty","1d7":"@stdlib/ndarray-base-empty","2Eq":"@stdlib/ndarray/base/every-by","2Er":"@stdlib/ndarray-base-every-by","2AU":"@stdlib/ndarray/base/every","2AV":"@stdlib/ndarray-base-every","0ie":"@stdlib/ndarray/base/expand-dimensions","0if":"@stdlib/ndarray-base-expand-dimensions","2la":"@stdlib/ndarray/base/falses-like","2lb":"@stdlib/ndarray-base-falses-like","2lc":"@stdlib/ndarray/base/falses","2ld":"@stdlib/ndarray-base-falses","2AW":"@stdlib/ndarray/base/fill-by","2AX":"@stdlib/ndarray-base-fill-by","2le":"@stdlib/ndarray/base/fill-diagonal","2lf":"@stdlib/ndarray-base-fill-diagonal","2Va":"@stdlib/ndarray/base/find","2Vb":"@stdlib/ndarray-base-find","1ns":"@stdlib/ndarray/base/flag","1nt":"@stdlib/ndarray-base-flag","1nW":"@stdlib/ndarray/base/flags","1nX":"@stdlib/ndarray-base-flags","2Wu":"@stdlib/ndarray/base/flatten-shape-from","2Wv":"@stdlib/ndarray-base-flatten-shape-from","2Vc":"@stdlib/ndarray/base/flatten-shape","2Vd":"@stdlib/ndarray-base-flatten-shape","1l4":"@stdlib/ndarray/base/fliplr","1l5":"@stdlib/ndarray-base-fliplr","1l6":"@stdlib/ndarray/base/flipud","1l7":"@stdlib/ndarray-base-flipud","1yW":"@stdlib/ndarray/base/for-each","1yX":"@stdlib/ndarray-base-for-each","2Tm":"@stdlib/ndarray/base/from-array","2Tn":"@stdlib/ndarray-base-from-array","24o":"@stdlib/ndarray/base/from-scalar-like","24p":"@stdlib/ndarray-base-from-scalar-like","0ig":"@stdlib/ndarray/base/from-scalar","0ih":"@stdlib/ndarray-base-from-scalar","2lg":"@stdlib/ndarray/base/full-by","2lh":"@stdlib/ndarray-base-full-by","2li":"@stdlib/ndarray/base/full","2lj":"@stdlib/ndarray-base-full","0ii":"@stdlib/ndarray/base/function-object","0ij":"@stdlib/ndarray-base-function-object","2Dy":"@stdlib/ndarray/base/includes","2Dz":"@stdlib/ndarray-base-includes","0ik":"@stdlib/ndarray/base/ind","0il":"@stdlib/ndarray-base-ind","0im":"@stdlib/ndarray/base/ind2sub","0in":"@stdlib/ndarray-base-ind2sub","0io":"@stdlib/ndarray/base/iteration-order","0ip":"@stdlib/ndarray-base-iteration-order","2H6":"@stdlib/ndarray/base/loop-interchange-order","2H7":"@stdlib/ndarray-base-loop-interchange-order","1zU":"@stdlib/ndarray/base/map","1zV":"@stdlib/ndarray-base-map","0iq":"@stdlib/ndarray/base/max-view-buffer-index","0ir":"@stdlib/ndarray-base-max-view-buffer-index","2lk":"@stdlib/ndarray/base/maybe-broadcast-array-except-dimensions","2ll":"@stdlib/ndarray-base-maybe-broadcast-array-except-dimensions","0is":"@stdlib/ndarray/base/maybe-broadcast-array","0it":"@stdlib/ndarray-base-maybe-broadcast-array","1nY":"@stdlib/ndarray/base/maybe-broadcast-arrays","1nZ":"@stdlib/ndarray-base-maybe-broadcast-arrays","0iu":"@stdlib/ndarray/base/meta-data-props","0iv":"@stdlib/ndarray-base-meta-data-props","24q":"@stdlib/ndarray/base/min-signed-integer-dtype","24r":"@stdlib/ndarray-base-min-signed-integer-dtype","24s":"@stdlib/ndarray/base/min-unsigned-integer-dtype","24t":"@stdlib/ndarray-base-min-unsigned-integer-dtype","0iw":"@stdlib/ndarray/base/min-view-buffer-index","0ix":"@stdlib/ndarray-base-min-view-buffer-index","0iy":"@stdlib/ndarray/base/minmax-view-buffer-index","0iz":"@stdlib/ndarray-base-minmax-view-buffer-index","2lm":"@stdlib/ndarray/base/nans-like","2ln":"@stdlib/ndarray-base-nans-like","2lo":"@stdlib/ndarray/base/nans","2lp":"@stdlib/ndarray-base-nans","0j0":"@stdlib/ndarray/base/napi/addon-arguments","0j1":"@stdlib/ndarray-base-napi-addon-arguments","0j2":"@stdlib/ndarray/base/napi/dtype-string-to-dtype","0j3":"@stdlib/ndarray-base-napi-dtype-string-to-dtype","0j4":"@stdlib/ndarray/base/napi","0j5":"@stdlib/ndarray-base-napi","0j6":"@stdlib/ndarray/base/napi/typedarray-type-to-dtype","0j7":"@stdlib/ndarray-base-napi-typedarray-type-to-dtype","0j8":"@stdlib/ndarray/base/napi/unary","0j9":"@stdlib/ndarray-base-napi-unary","2lq":"@stdlib/ndarray/base/ndarraylike2descriptor","2lr":"@stdlib/ndarray-base-ndarraylike2descriptor","1zW":"@stdlib/ndarray/base/ndarraylike2ndarray","1zX":"@stdlib/ndarray-base-ndarraylike2ndarray","0jA":"@stdlib/ndarray/base/ndarraylike2object","0jB":"@stdlib/ndarray-base-ndarraylike2object","2OS":"@stdlib/ndarray/base/ndarraylike2scalar","2OT":"@stdlib/ndarray-base-ndarraylike2scalar","1jc":"@stdlib/ndarray/base/ndims","1jd":"@stdlib/ndarray-base-ndims","1je":"@stdlib/ndarray/base/next-cartesian-index","1jf":"@stdlib/ndarray-base-next-cartesian-index","0jC":"@stdlib/ndarray/base/nonsingleton-dimensions","0jD":"@stdlib/ndarray-base-nonsingleton-dimensions","1l8":"@stdlib/ndarray/base/normalize-index","1l9":"@stdlib/ndarray-base-normalize-index","25y":"@stdlib/ndarray/base/normalize-indices","25z":"@stdlib/ndarray-base-normalize-indices","1d8":"@stdlib/ndarray/base/nullary-loop-interchange-order","1d9":"@stdlib/ndarray-base-nullary-loop-interchange-order","2WE":"@stdlib/ndarray/base/nullary-strided1d-dispatch-factory","2WF":"@stdlib/ndarray-base-nullary-strided1d-dispatch-factory","2Ve":"@stdlib/ndarray/base/nullary-strided1d-dispatch","2Vf":"@stdlib/ndarray-base-nullary-strided1d-dispatch","2V6":"@stdlib/ndarray/base/nullary-strided1d","2V7":"@stdlib/ndarray-base-nullary-strided1d","1dA":"@stdlib/ndarray/base/nullary-tiling-block-size","1dB":"@stdlib/ndarray-base-nullary-tiling-block-size","1dC":"@stdlib/ndarray/base/nullary","1dD":"@stdlib/ndarray-base-nullary","2ls":"@stdlib/ndarray/base/nulls-like","2lt":"@stdlib/ndarray-base-nulls-like","2lu":"@stdlib/ndarray/base/nulls","2lv":"@stdlib/ndarray-base-nulls","1nu":"@stdlib/ndarray/base/numel-dimension","1nv":"@stdlib/ndarray-base-numel-dimension","0jE":"@stdlib/ndarray/base/numel","0jF":"@stdlib/ndarray-base-numel","1jg":"@stdlib/ndarray/base/offset","1jh":"@stdlib/ndarray-base-offset","2lw":"@stdlib/ndarray/base/ones-like","2lx":"@stdlib/ndarray-base-ones-like","2ly":"@stdlib/ndarray/base/ones","2lz":"@stdlib/ndarray-base-ones","1kM":"@stdlib/ndarray/base/order","1kN":"@stdlib/ndarray-base-order","2Gm":"@stdlib/ndarray/base/output-dtype","2Gn":"@stdlib/ndarray-base-output-dtype","2m0":"@stdlib/ndarray/base/output-order","2m1":"@stdlib/ndarray-base-output-order","1dE":"@stdlib/ndarray/base/output-policy-enum2str","1dF":"@stdlib/ndarray-base-output-policy-enum2str","1dG":"@stdlib/ndarray/base/output-policy-resolve-enum","1dH":"@stdlib/ndarray-base-output-policy-resolve-enum","1dI":"@stdlib/ndarray/base/output-policy-resolve-str","1dJ":"@stdlib/ndarray-base-output-policy-resolve-str","1dK":"@stdlib/ndarray/base/output-policy-str2enum","1dL":"@stdlib/ndarray-base-output-policy-str2enum","0jG":"@stdlib/ndarray/base","0jH":"@stdlib/ndarray-base","2Wa":"@stdlib/ndarray/base/pop","2Wb":"@stdlib/ndarray-base-pop","0jI":"@stdlib/ndarray/base/prepend-singleton-dimensions","0jJ":"@stdlib/ndarray-base-prepend-singleton-dimensions","2Go":"@stdlib/ndarray/base/promote-dtypes","2Gp":"@stdlib/ndarray-base-promote-dtypes","2m2":"@stdlib/ndarray/base/quaternary-loop-interchange-order","2m3":"@stdlib/ndarray-base-quaternary-loop-interchange-order","2m4":"@stdlib/ndarray/base/quaternary-tiling-block-size","2m5":"@stdlib/ndarray-base-quaternary-tiling-block-size","2m6":"@stdlib/ndarray/base/quinary-loop-interchange-order","2m7":"@stdlib/ndarray-base-quinary-loop-interchange-order","2m8":"@stdlib/ndarray/base/quinary-tiling-block-size","2m9":"@stdlib/ndarray-base-quinary-tiling-block-size","2mA":"@stdlib/ndarray/base/reinterpret-boolean","2mB":"@stdlib/ndarray-base-reinterpret-boolean","2mC":"@stdlib/ndarray/base/reinterpret-complex","2mD":"@stdlib/ndarray-base-reinterpret-complex","2mE":"@stdlib/ndarray/base/reinterpret-complex128","2mF":"@stdlib/ndarray-base-reinterpret-complex128","2mG":"@stdlib/ndarray/base/reinterpret-complex64","2mH":"@stdlib/ndarray-base-reinterpret-complex64","0jK":"@stdlib/ndarray/base/remove-singleton-dimensions","0jL":"@stdlib/ndarray-base-remove-singleton-dimensions","1lA":"@stdlib/ndarray/base/reverse-dimension","1lB":"@stdlib/ndarray-base-reverse-dimension","2mI":"@stdlib/ndarray/base/reverse-dimensions","2mJ":"@stdlib/ndarray-base-reverse-dimensions","1kO":"@stdlib/ndarray/base/reverse","1kP":"@stdlib/ndarray-base-reverse","2mK":"@stdlib/ndarray/base/rot180","2mL":"@stdlib/ndarray-base-rot180","2mM":"@stdlib/ndarray/base/rot90","2mN":"@stdlib/ndarray-base-rot90","2mO":"@stdlib/ndarray/base/rotl90","2mP":"@stdlib/ndarray-base-rotl90","2mQ":"@stdlib/ndarray/base/rotr90","2mR":"@stdlib/ndarray-base-rotr90","0jM":"@stdlib/ndarray/base/serialize-meta-data","0jN":"@stdlib/ndarray-base-serialize-meta-data","1ji":"@stdlib/ndarray/base/shape","1jj":"@stdlib/ndarray-base-shape","0jO":"@stdlib/ndarray/base/shape2strides","0jP":"@stdlib/ndarray-base-shape2strides","2Wc":"@stdlib/ndarray/base/shift","2Wd":"@stdlib/ndarray-base-shift","0jQ":"@stdlib/ndarray/base/singleton-dimensions","0jR":"@stdlib/ndarray-base-singleton-dimensions","1jO":"@stdlib/ndarray/base/slice-assign","1jP":"@stdlib/ndarray-base-slice-assign","1lC":"@stdlib/ndarray/base/slice-dimension-from","1lD":"@stdlib/ndarray-base-slice-dimension-from","1lE":"@stdlib/ndarray/base/slice-dimension-to","1lF":"@stdlib/ndarray-base-slice-dimension-to","1kQ":"@stdlib/ndarray/base/slice-dimension","1kR":"@stdlib/ndarray-base-slice-dimension","1lG":"@stdlib/ndarray/base/slice-from","1lH":"@stdlib/ndarray-base-slice-from","1lI":"@stdlib/ndarray/base/slice-to","1lJ":"@stdlib/ndarray-base-slice-to","1jQ":"@stdlib/ndarray/base/slice","1jR":"@stdlib/ndarray-base-slice","2Ik":"@stdlib/ndarray/base/some-by","2Il":"@stdlib/ndarray-base-some-by","2Ww":"@stdlib/ndarray/base/some","2Wx":"@stdlib/ndarray-base-some","1mg":"@stdlib/ndarray/base/stride","1mh":"@stdlib/ndarray-base-stride","1jk":"@stdlib/ndarray/base/strides","1jl":"@stdlib/ndarray-base-strides","0jS":"@stdlib/ndarray/base/strides2offset","0jT":"@stdlib/ndarray-base-strides2offset","0jU":"@stdlib/ndarray/base/strides2order","0jV":"@stdlib/ndarray-base-strides2order","0jW":"@stdlib/ndarray/base/sub2ind","0jX":"@stdlib/ndarray-base-sub2ind","2mS":"@stdlib/ndarray/base/ternary-loop-interchange-order","2mT":"@stdlib/ndarray-base-ternary-loop-interchange-order","2mU":"@stdlib/ndarray/base/ternary-output-dtype","2mV":"@stdlib/ndarray-base-ternary-output-dtype","2mW":"@stdlib/ndarray/base/ternary-tiling-block-size","2mX":"@stdlib/ndarray-base-ternary-tiling-block-size","2mY":"@stdlib/ndarray/base/ternary","2mZ":"@stdlib/ndarray-base-ternary","2ma":"@stdlib/ndarray/base/tile","2mb":"@stdlib/ndarray-base-tile","2mc":"@stdlib/ndarray/base/tiling-block-size","2md":"@stdlib/ndarray-base-tiling-block-size","0jY":"@stdlib/ndarray/base/to-array","0jZ":"@stdlib/ndarray-base-to-array","2a8":"@stdlib/ndarray/base/to-flippedlr","2a9":"@stdlib/ndarray-base-to-flippedlr","2aA":"@stdlib/ndarray/base/to-flippedud","2aB":"@stdlib/ndarray-base-to-flippedud","2me":"@stdlib/ndarray/base/to-reversed-dimension","2mf":"@stdlib/ndarray-base-to-reversed-dimension","2mg":"@stdlib/ndarray/base/to-reversed-dimensions","2mh":"@stdlib/ndarray-base-to-reversed-dimensions","2mi":"@stdlib/ndarray/base/to-rot180","2mj":"@stdlib/ndarray-base-to-rot180","2mk":"@stdlib/ndarray/base/to-rot90","2ml":"@stdlib/ndarray-base-to-rot90","2mm":"@stdlib/ndarray/base/to-rotl90","2mn":"@stdlib/ndarray-base-to-rotl90","2mo":"@stdlib/ndarray/base/to-rotr90","2mp":"@stdlib/ndarray-base-to-rotr90","2mq":"@stdlib/ndarray/base/to-transposed","2mr":"@stdlib/ndarray-base-to-transposed","2ms":"@stdlib/ndarray/base/to-unflattened","2mt":"@stdlib/ndarray-base-to-unflattened","0ja":"@stdlib/ndarray/base/transpose","0jb":"@stdlib/ndarray-base-transpose","2mu":"@stdlib/ndarray/base/trues-like","2mv":"@stdlib/ndarray-base-trues-like","2mw":"@stdlib/ndarray/base/trues","2mx":"@stdlib/ndarray-base-trues","26G":"@stdlib/ndarray/base/unary-accumulate","26H":"@stdlib/ndarray-base-unary-accumulate","2Vg":"@stdlib/ndarray/base/unary-addon-dispatch","2Vh":"@stdlib/ndarray-base-unary-addon-dispatch","1dM":"@stdlib/ndarray/base/unary-by","1dN":"@stdlib/ndarray-base-unary-by","2Fo":"@stdlib/ndarray/base/unary-input-casting-dtype","2Fp":"@stdlib/ndarray-base-unary-input-casting-dtype","1dO":"@stdlib/ndarray/base/unary-loop-interchange-order","1dP":"@stdlib/ndarray-base-unary-loop-interchange-order","1dQ":"@stdlib/ndarray/base/unary-output-dtype","1dR":"@stdlib/ndarray-base-unary-output-dtype","2OU":"@stdlib/ndarray/base/unary-reduce-strided1d-assign-struct","2OV":"@stdlib/ndarray-base-unary-reduce-strided1d-assign-struct","2Im":"@stdlib/ndarray/base/unary-reduce-strided1d-by","2In":"@stdlib/ndarray-base-unary-reduce-strided1d-by","2Io":"@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-by-factory","2Ip":"@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-by-factory","2Iq":"@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-by","2Ir":"@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-by","2Fq":"@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-factory","2Fr":"@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-factory","2Fs":"@stdlib/ndarray/base/unary-reduce-strided1d-dispatch","2Ft":"@stdlib/ndarray-base-unary-reduce-strided1d-dispatch","2Es":"@stdlib/ndarray/base/unary-reduce-strided1d","2Et":"@stdlib/ndarray-base-unary-reduce-strided1d","2Is":"@stdlib/ndarray/base/unary-reduce-subarray-by","2It":"@stdlib/ndarray-base-unary-reduce-subarray-by","2AY":"@stdlib/ndarray/base/unary-reduce-subarray","2AZ":"@stdlib/ndarray-base-unary-reduce-subarray","2Fu":"@stdlib/ndarray/base/unary-strided1d-dispatch-factory","2Fv":"@stdlib/ndarray-base-unary-strided1d-dispatch-factory","2Fw":"@stdlib/ndarray/base/unary-strided1d-dispatch","2Fx":"@stdlib/ndarray-base-unary-strided1d-dispatch","2Fy":"@stdlib/ndarray/base/unary-strided1d","2Fz":"@stdlib/ndarray-base-unary-strided1d","1dS":"@stdlib/ndarray/base/unary-tiling-block-size","1dT":"@stdlib/ndarray-base-unary-tiling-block-size","0jc":"@stdlib/ndarray/base/unary","0jd":"@stdlib/ndarray-base-unary","2my":"@stdlib/ndarray/base/unflatten-shape","2mz":"@stdlib/ndarray-base-unflatten-shape","2n0":"@stdlib/ndarray/base/unflatten","2n1":"@stdlib/ndarray-base-unflatten","0je":"@stdlib/ndarray/base/vind2bind","0jf":"@stdlib/ndarray-base-vind2bind","0jg":"@stdlib/ndarray/base/wrap-index","0jh":"@stdlib/ndarray-base-wrap-index","0ji":"@stdlib/ndarray/base/zeros-like","0jj":"@stdlib/ndarray-base-zeros-like","0jk":"@stdlib/ndarray/base/zeros","0jl":"@stdlib/ndarray-base-zeros","2To":"@stdlib/ndarray/base/zip2views1d","2Tp":"@stdlib/ndarray-base-zip2views1d","1jm":"@stdlib/ndarray/broadcast-array","1jn":"@stdlib/ndarray-broadcast-array","1na":"@stdlib/ndarray/broadcast-arrays","1nb":"@stdlib/ndarray-broadcast-arrays","2n2":"@stdlib/ndarray/broadcast-scalar-like","2n3":"@stdlib/ndarray-broadcast-scalar-like","2n4":"@stdlib/ndarray/broadcast-scalar","2n5":"@stdlib/ndarray-broadcast-scalar","0jm":"@stdlib/ndarray/casting-modes","0jn":"@stdlib/ndarray-casting-modes","2n6":"@stdlib/ndarray/colcat","2n7":"@stdlib/ndarray-colcat","2Wy":"@stdlib/ndarray/concat","2Wz":"@stdlib/ndarray-concat","2aC":"@stdlib/ndarray/concat1d","2aD":"@stdlib/ndarray-concat1d","2Xy":"@stdlib/ndarray/copy","2Xz":"@stdlib/ndarray-copy","2Iu":"@stdlib/ndarray/count-falsy","2Iv":"@stdlib/ndarray-count-falsy","2Iw":"@stdlib/ndarray/count-if","2Ix":"@stdlib/ndarray-count-if","2Iy":"@stdlib/ndarray/count-truthy","2Iz":"@stdlib/ndarray-count-truthy","0jo":"@stdlib/ndarray/ctor","0jp":"@stdlib/ndarray-ctor","1kS":"@stdlib/ndarray/data-buffer","1kT":"@stdlib/ndarray-data-buffer","1dU":"@stdlib/ndarray/defaults","1dV":"@stdlib/ndarray-defaults","2n8":"@stdlib/ndarray/diagonal","2n9":"@stdlib/ndarray-diagonal","1dW":"@stdlib/ndarray/dispatch-by","1dX":"@stdlib/ndarray-dispatch-by","0jq":"@stdlib/ndarray/dispatch","0jr":"@stdlib/ndarray-dispatch","2WG":"@stdlib/ndarray/dtype-ctor","2WH":"@stdlib/ndarray-dtype-ctor","1kU":"@stdlib/ndarray/dtype","1kV":"@stdlib/ndarray-dtype","0js":"@stdlib/ndarray/dtypes","0jt":"@stdlib/ndarray-dtypes","1dY":"@stdlib/ndarray/empty-like","1dZ":"@stdlib/ndarray-empty-like","1da":"@stdlib/ndarray/empty","1db":"@stdlib/ndarray-empty","2nA":"@stdlib/ndarray/every-by","2nB":"@stdlib/ndarray-every-by","2E0":"@stdlib/ndarray/every","2E1":"@stdlib/ndarray-every","2nC":"@stdlib/ndarray/falses-like","2nD":"@stdlib/ndarray-falses-like","2nE":"@stdlib/ndarray/falses","2nF":"@stdlib/ndarray-falses","1j6":"@stdlib/ndarray/fancy","1j7":"@stdlib/ndarray-fancy","2Aa":"@stdlib/ndarray/fill-by","2Ab":"@stdlib/ndarray-fill-by","2Vi":"@stdlib/ndarray/fill-slice","2Vj":"@stdlib/ndarray-fill-slice","2Ac":"@stdlib/ndarray/fill","2Ad":"@stdlib/ndarray-fill","24u":"@stdlib/ndarray/filter-map","24v":"@stdlib/ndarray-filter-map","24w":"@stdlib/ndarray/filter","24x":"@stdlib/ndarray-filter","2nG":"@stdlib/ndarray/find-last","2nH":"@stdlib/ndarray-find-last","2X0":"@stdlib/ndarray/find","2X1":"@stdlib/ndarray-find","2nI":"@stdlib/ndarray/first","2nJ":"@stdlib/ndarray-first","1nw":"@stdlib/ndarray/flag","1nx":"@stdlib/ndarray-flag","1ny":"@stdlib/ndarray/flags","1nz":"@stdlib/ndarray-flags","2WI":"@stdlib/ndarray/flatten-by","2WJ":"@stdlib/ndarray-flatten-by","2nK":"@stdlib/ndarray/flatten-from-by","2nL":"@stdlib/ndarray-flatten-from-by","2X2":"@stdlib/ndarray/flatten-from","2X3":"@stdlib/ndarray-flatten-from","2Vk":"@stdlib/ndarray/flatten","2Vl":"@stdlib/ndarray-flatten","2aE":"@stdlib/ndarray/fliplr","2aF":"@stdlib/ndarray-fliplr","2aG":"@stdlib/ndarray/flipud","2aH":"@stdlib/ndarray-flipud","24y":"@stdlib/ndarray/for-each","24z":"@stdlib/ndarray-for-each","2nM":"@stdlib/ndarray/from-scalar-like","2nN":"@stdlib/ndarray-from-scalar-like","0ju":"@stdlib/ndarray/from-scalar","0jv":"@stdlib/ndarray-from-scalar","2nO":"@stdlib/ndarray/hconcat","2nP":"@stdlib/ndarray-hconcat","2E2":"@stdlib/ndarray/includes","2E3":"@stdlib/ndarray-includes","0jw":"@stdlib/ndarray/ind2sub","0jx":"@stdlib/ndarray-ind2sub","0jy":"@stdlib/ndarray/index-modes","0jz":"@stdlib/ndarray-index-modes","2G0":"@stdlib/ndarray/input-casting-policies","2G1":"@stdlib/ndarray-input-casting-policies","1lK":"@stdlib/ndarray/iter/column-entries","1lL":"@stdlib/ndarray-iter-column-entries","1jo":"@stdlib/ndarray/iter/columns","1jp":"@stdlib/ndarray-iter-columns","1jq":"@stdlib/ndarray/iter/entries","1jr":"@stdlib/ndarray-iter-entries","1js":"@stdlib/ndarray/iter/indices","1jt":"@stdlib/ndarray-iter-indices","1zY":"@stdlib/ndarray/iter/interleave-subarrays","1zZ":"@stdlib/ndarray-iter-interleave-subarrays","1lM":"@stdlib/ndarray/iter/matrices","1lN":"@stdlib/ndarray-iter-matrices","1lO":"@stdlib/ndarray/iter/matrix-entries","1lP":"@stdlib/ndarray-iter-matrix-entries","1ju":"@stdlib/ndarray/iter","1jv":"@stdlib/ndarray-iter","1lQ":"@stdlib/ndarray/iter/row-entries","1lR":"@stdlib/ndarray-iter-row-entries","1jw":"@stdlib/ndarray/iter/rows","1jx":"@stdlib/ndarray-iter-rows","1za":"@stdlib/ndarray/iter/select-dimension","1zb":"@stdlib/ndarray-iter-select-dimension","1zc":"@stdlib/ndarray/iter/stacks","1zd":"@stdlib/ndarray-iter-stacks","1ze":"@stdlib/ndarray/iter/subarrays","1zf":"@stdlib/ndarray-iter-subarrays","1jy":"@stdlib/ndarray/iter/to-array-each","1jz":"@stdlib/ndarray-iter-to-array-each","1k0":"@stdlib/ndarray/iter/values","1k1":"@stdlib/ndarray-iter-values","2nQ":"@stdlib/ndarray/last","2nR":"@stdlib/ndarray-last","2yy":"@stdlib/ndarray/matrix/complex128","2yz":"@stdlib/ndarray-matrix-complex128","2z0":"@stdlib/ndarray/matrix/complex64","2z1":"@stdlib/ndarray-matrix-complex64","2z2":"@stdlib/ndarray/matrix/ctor","2z3":"@stdlib/ndarray-matrix-ctor","2z4":"@stdlib/ndarray/matrix/float32","2z5":"@stdlib/ndarray-matrix-float32","2z6":"@stdlib/ndarray/matrix/float64","2z7":"@stdlib/ndarray-matrix-float64","2z8":"@stdlib/ndarray/matrix/int32","2z9":"@stdlib/ndarray-matrix-int32","2zA":"@stdlib/ndarray/matrix","2zB":"@stdlib/ndarray-matrix","1k2":"@stdlib/ndarray/maybe-broadcast-array","1k3":"@stdlib/ndarray-maybe-broadcast-array","1nc":"@stdlib/ndarray/maybe-broadcast-arrays","1nd":"@stdlib/ndarray-maybe-broadcast-arrays","0k0":"@stdlib/ndarray/min-dtype","0k1":"@stdlib/ndarray-min-dtype","1kW":"@stdlib/ndarray/mostly-safe-casts","1kX":"@stdlib/ndarray-mostly-safe-casts","2nS":"@stdlib/ndarray/nans-like","2nT":"@stdlib/ndarray-nans-like","2nU":"@stdlib/ndarray/nans","2nV":"@stdlib/ndarray-nans","1zg":"@stdlib/ndarray/ndarraylike2ndarray","1zh":"@stdlib/ndarray-ndarraylike2ndarray","2nW":"@stdlib/ndarray/ndarraylike2scalar","2nX":"@stdlib/ndarray-ndarraylike2scalar","1k4":"@stdlib/ndarray/ndims","1k5":"@stdlib/ndarray-ndims","0k2":"@stdlib/ndarray/next-dtype","0k3":"@stdlib/ndarray-next-dtype","1o0":"@stdlib/ndarray/numel-dimension","1o1":"@stdlib/ndarray-numel-dimension","1k6":"@stdlib/ndarray/numel","1k7":"@stdlib/ndarray-numel","1k8":"@stdlib/ndarray/offset","1k9":"@stdlib/ndarray-offset","2nY":"@stdlib/ndarray/ones-like","2nZ":"@stdlib/ndarray-ones-like","2na":"@stdlib/ndarray/ones","2nb":"@stdlib/ndarray-ones","1kY":"@stdlib/ndarray/order","1kZ":"@stdlib/ndarray-order","0k4":"@stdlib/ndarray/orders","0k5":"@stdlib/ndarray-orders","1dc":"@stdlib/ndarray/output-dtype-policies","1dd":"@stdlib/ndarray-output-dtype-policies","0k7":"@stdlib/ndarray","2X4":"@stdlib/ndarray/pop","2X5":"@stdlib/ndarray-pop","2nc":"@stdlib/ndarray/prepend-singleton-dimensions","2nd":"@stdlib/ndarray-prepend-singleton-dimensions","0k8":"@stdlib/ndarray/promotion-rules","0k9":"@stdlib/ndarray-promotion-rules","2ne":"@stdlib/ndarray/push","2nf":"@stdlib/ndarray-push","2ng":"@stdlib/ndarray/remove-singleton-dimensions","2nh":"@stdlib/ndarray-remove-singleton-dimensions","2X6":"@stdlib/ndarray/reverse-dimension","2X7":"@stdlib/ndarray-reverse-dimension","2ni":"@stdlib/ndarray/reverse-dimensions","2nj":"@stdlib/ndarray-reverse-dimensions","2X8":"@stdlib/ndarray/reverse","2X9":"@stdlib/ndarray-reverse","2nk":"@stdlib/ndarray/rot180","2nl":"@stdlib/ndarray-rot180","2nm":"@stdlib/ndarray/rot90","2nn":"@stdlib/ndarray-rot90","2no":"@stdlib/ndarray/rotl90","2np":"@stdlib/ndarray-rotl90","2nq":"@stdlib/ndarray/rotr90","2nr":"@stdlib/ndarray-rotr90","2ns":"@stdlib/ndarray/rowcat","2nt":"@stdlib/ndarray-rowcat","0kA":"@stdlib/ndarray/safe-casts","0kB":"@stdlib/ndarray-safe-casts","0kC":"@stdlib/ndarray/same-kind-casts","0kD":"@stdlib/ndarray-same-kind-casts","1kA":"@stdlib/ndarray/shape","1kB":"@stdlib/ndarray-shape","2XA":"@stdlib/ndarray/shift","2XB":"@stdlib/ndarray-shift","1jS":"@stdlib/ndarray/slice-assign","1jT":"@stdlib/ndarray-slice-assign","1lS":"@stdlib/ndarray/slice-dimension-from","1lT":"@stdlib/ndarray-slice-dimension-from","1lU":"@stdlib/ndarray/slice-dimension-to","1lV":"@stdlib/ndarray-slice-dimension-to","1ka":"@stdlib/ndarray/slice-dimension","1kb":"@stdlib/ndarray-slice-dimension","1mw":"@stdlib/ndarray/slice-from","1mx":"@stdlib/ndarray-slice-from","1mi":"@stdlib/ndarray/slice-to","1mj":"@stdlib/ndarray-slice-to","1jU":"@stdlib/ndarray/slice","1jV":"@stdlib/ndarray-slice","2J0":"@stdlib/ndarray/some-by","2J1":"@stdlib/ndarray-some-by","2YU":"@stdlib/ndarray/some","2YV":"@stdlib/ndarray-some","2nu":"@stdlib/ndarray/spread-dimensions","2nv":"@stdlib/ndarray-spread-dimensions","1mk":"@stdlib/ndarray/stride","1ml":"@stdlib/ndarray-stride","1kC":"@stdlib/ndarray/strides","1kD":"@stdlib/ndarray-strides","0kE":"@stdlib/ndarray/sub2ind","0kF":"@stdlib/ndarray-sub2ind","1de":"@stdlib/ndarray/to-array","1df":"@stdlib/ndarray-to-array","2nw":"@stdlib/ndarray/to-flippedlr","2nx":"@stdlib/ndarray-to-flippedlr","2ny":"@stdlib/ndarray/to-flippedud","2nz":"@stdlib/ndarray-to-flippedud","2o0":"@stdlib/ndarray/to-locale-string","2o1":"@stdlib/ndarray-to-locale-string","2o2":"@stdlib/ndarray/to-reversed-dimension","2o3":"@stdlib/ndarray-to-reversed-dimension","2o4":"@stdlib/ndarray/to-reversed-dimensions","2o5":"@stdlib/ndarray-to-reversed-dimensions","2XC":"@stdlib/ndarray/to-reversed","2XD":"@stdlib/ndarray-to-reversed","2o6":"@stdlib/ndarray/to-rot180","2o7":"@stdlib/ndarray-to-rot180","2o8":"@stdlib/ndarray/to-rot90","2o9":"@stdlib/ndarray-to-rot90","2oA":"@stdlib/ndarray/to-rotl90","2oB":"@stdlib/ndarray-to-rotl90","2oC":"@stdlib/ndarray/to-rotr90","2oD":"@stdlib/ndarray-to-rotr90","2oE":"@stdlib/ndarray/to-string","2oF":"@stdlib/ndarray-to-string","2oG":"@stdlib/ndarray/to-transposed","2oH":"@stdlib/ndarray-to-transposed","2oI":"@stdlib/ndarray/to-unflattened","2oJ":"@stdlib/ndarray-to-unflattened","2oK":"@stdlib/ndarray/transpose","2oL":"@stdlib/ndarray-transpose","2oM":"@stdlib/ndarray/trues-like","2oN":"@stdlib/ndarray-trues-like","2oO":"@stdlib/ndarray/trues","2oP":"@stdlib/ndarray-trues","2oQ":"@stdlib/ndarray/unflatten","2oR":"@stdlib/ndarray-unflatten","2oS":"@stdlib/ndarray/unshift","2oT":"@stdlib/ndarray-unshift","2oU":"@stdlib/ndarray/vconcat","2oV":"@stdlib/ndarray-vconcat","2J2":"@stdlib/ndarray/vector/bool","2J3":"@stdlib/ndarray-vector-bool","2J4":"@stdlib/ndarray/vector/complex128","2J5":"@stdlib/ndarray-vector-complex128","2J6":"@stdlib/ndarray/vector/complex64","2J7":"@stdlib/ndarray-vector-complex64","2H8":"@stdlib/ndarray/vector/ctor","2H9":"@stdlib/ndarray-vector-ctor","2HA":"@stdlib/ndarray/vector/float32","2HB":"@stdlib/ndarray-vector-float32","2HC":"@stdlib/ndarray/vector/float64","2HD":"@stdlib/ndarray-vector-float64","2J8":"@stdlib/ndarray/vector/int16","2J9":"@stdlib/ndarray-vector-int16","2JA":"@stdlib/ndarray/vector/int32","2JB":"@stdlib/ndarray-vector-int32","2JC":"@stdlib/ndarray/vector/int8","2JD":"@stdlib/ndarray-vector-int8","2JE":"@stdlib/ndarray/vector","2JF":"@stdlib/ndarray-vector","2JG":"@stdlib/ndarray/vector/uint16","2JH":"@stdlib/ndarray-vector-uint16","2JI":"@stdlib/ndarray/vector/uint32","2JJ":"@stdlib/ndarray-vector-uint32","2JK":"@stdlib/ndarray/vector/uint8","2JL":"@stdlib/ndarray-vector-uint8","2JM":"@stdlib/ndarray/vector/uint8c","2JN":"@stdlib/ndarray-vector-uint8c","2V8":"@stdlib/ndarray/with","2V9":"@stdlib/ndarray-with","0kG":"@stdlib/ndarray/zeros-like","0kH":"@stdlib/ndarray-zeros-like","0kI":"@stdlib/ndarray/zeros","0kJ":"@stdlib/ndarray-zeros","0kK":"@stdlib/net/disposable-http-server","0kL":"@stdlib/net-disposable-http-server","0kM":"@stdlib/net/http-server","0kN":"@stdlib/net-http-server","2Tq":"@stdlib/net/http2-secure-server","2Tr":"@stdlib/net-http2-secure-server","0kP":"@stdlib/net","0kQ":"@stdlib/net/simple-http-server","0kR":"@stdlib/net-simple-http-server","1dg":"@stdlib/nlp/expand-acronyms","1dh":"@stdlib/nlp-expand-acronyms","0kS":"@stdlib/nlp/expand-contractions","0kT":"@stdlib/nlp-expand-contractions","0kU":"@stdlib/nlp/lda","0kV":"@stdlib/nlp-lda","0kW":"@stdlib/nlp/ordinalize","0kX":"@stdlib/nlp-ordinalize","0kZ":"@stdlib/nlp","0ka":"@stdlib/nlp/porter-stemmer","0kb":"@stdlib/nlp-porter-stemmer","1di":"@stdlib/nlp/sentencize","1dj":"@stdlib/nlp-sentencize","0kc":"@stdlib/nlp/tokenize","0kd":"@stdlib/nlp-tokenize","0ke":"@stdlib/number/ctor","0kf":"@stdlib/number-ctor","2oW":"@stdlib/number/float16/base/assert/is-almost-equal","2oX":"@stdlib/number-float16-base-assert-is-almost-equal","2oY":"@stdlib/number/float16/base/assert/is-nan","2oZ":"@stdlib/number-float16-base-assert-is-nan","2oa":"@stdlib/number/float16/base/assert/is-negative-zero","2ob":"@stdlib/number-float16-base-assert-is-negative-zero","2oc":"@stdlib/number/float16/base/assert/is-positive-zero","2od":"@stdlib/number-float16-base-assert-is-positive-zero","2aI":"@stdlib/number/float16/base/exponent","2aJ":"@stdlib/number-float16-base-exponent","2oe":"@stdlib/number/float16/base/from-binary-string","2of":"@stdlib/number-float16-base-from-binary-string","2aK":"@stdlib/number/float16/base/from-word","2aL":"@stdlib/number-float16-base-from-word","2og":"@stdlib/number/float16/base/mul","2oh":"@stdlib/number-float16-base-mul","2oi":"@stdlib/number/float16/base/signbit","2oj":"@stdlib/number-float16-base-signbit","2ok":"@stdlib/number/float16/base/significand","2ol":"@stdlib/number-float16-base-significand","2om":"@stdlib/number/float16/base/sub","2on":"@stdlib/number-float16-base-sub","2aM":"@stdlib/number/float16/base/to-binary-string","2aN":"@stdlib/number-float16-base-to-binary-string","2oo":"@stdlib/number/float16/base/to-float32","2op":"@stdlib/number-float16-base-to-float32","2oq":"@stdlib/number/float16/base/to-float64","2or":"@stdlib/number-float16-base-to-float64","2aO":"@stdlib/number/float16/base/to-word","2aP":"@stdlib/number-float16-base-to-word","2os":"@stdlib/number/float16/base/ulp-difference","2ot":"@stdlib/number-float16-base-ulp-difference","2ou":"@stdlib/number/float16/ctor","2ov":"@stdlib/number-float16-ctor","2OW":"@stdlib/number/float32/base/assert/is-almost-equal","2OX":"@stdlib/number-float32-base-assert-is-almost-equal","2ow":"@stdlib/number/float32/base/assert/is-almost-same-value","2ox":"@stdlib/number-float32-base-assert-is-almost-same-value","1q4":"@stdlib/number/float32/base/assert/is-same-value-zero","1q5":"@stdlib/number-float32-base-assert-is-same-value-zero","1q6":"@stdlib/number/float32/base/assert/is-same-value","1q7":"@stdlib/number-float32-base-assert-is-same-value","1q8":"@stdlib/number/float32/base/assert","1q9":"@stdlib/number-float32-base-assert","0kg":"@stdlib/number/float32/base/exponent","0kh":"@stdlib/number-float32-base-exponent","0ki":"@stdlib/number/float32/base/from-binary-string","0kj":"@stdlib/number-float32-base-from-binary-string","0kk":"@stdlib/number/float32/base/from-word","0kl":"@stdlib/number-float32-base-from-word","2Ae":"@stdlib/number/float32/base/identity","2Af":"@stdlib/number-float32-base-identity","0km":"@stdlib/number/float32/base/normalize","0kn":"@stdlib/number-float32-base-normalize","0ko":"@stdlib/number/float32/base","0kp":"@stdlib/number-float32-base","0kq":"@stdlib/number/float32/base/signbit","0kr":"@stdlib/number-float32-base-signbit","0ks":"@stdlib/number/float32/base/significand","0kt":"@stdlib/number-float32-base-significand","28A":"@stdlib/number/float32/base/sub","28B":"@stdlib/number-float32-base-sub","0ku":"@stdlib/number/float32/base/to-binary-string","0kv":"@stdlib/number-float32-base-to-binary-string","2oy":"@stdlib/number/float32/base/to-float16","2oz":"@stdlib/number-float32-base-to-float16","0kw":"@stdlib/number/float32/base/to-int32","0kx":"@stdlib/number-float32-base-to-int32","0ky":"@stdlib/number/float32/base/to-uint32","0kz":"@stdlib/number-float32-base-to-uint32","0l0":"@stdlib/number/float32/base/to-word","0l1":"@stdlib/number-float32-base-to-word","2OY":"@stdlib/number/float32/base/ulp-difference","2OZ":"@stdlib/number-float32-base-ulp-difference","0l2":"@stdlib/number/float32","0l3":"@stdlib/number-float32","28C":"@stdlib/number/float64/base/add","28D":"@stdlib/number-float64-base-add","28E":"@stdlib/number/float64/base/add3","28F":"@stdlib/number-float64-base-add3","28G":"@stdlib/number/float64/base/add4","28H":"@stdlib/number-float64-base-add4","28I":"@stdlib/number/float64/base/add5","28J":"@stdlib/number-float64-base-add5","2Oa":"@stdlib/number/float64/base/assert/is-almost-equal","2Ob":"@stdlib/number-float64-base-assert-is-almost-equal","2p0":"@stdlib/number/float64/base/assert/is-almost-same-value","2p1":"@stdlib/number-float64-base-assert-is-almost-same-value","1qA":"@stdlib/number/float64/base/assert/is-same-value-zero","1qB":"@stdlib/number-float64-base-assert-is-same-value-zero","1qC":"@stdlib/number/float64/base/assert/is-same-value","1qD":"@stdlib/number-float64-base-assert-is-same-value","1qE":"@stdlib/number/float64/base/assert","1qF":"@stdlib/number-float64-base-assert","28K":"@stdlib/number/float64/base/div","28L":"@stdlib/number-float64-base-div","0l4":"@stdlib/number/float64/base/exponent","0l5":"@stdlib/number-float64-base-exponent","0l6":"@stdlib/number/float64/base/from-binary-string","0l7":"@stdlib/number-float64-base-from-binary-string","0l8":"@stdlib/number/float64/base/from-int64-bytes","0l9":"@stdlib/number-float64-base-from-int64-bytes","0lA":"@stdlib/number/float64/base/from-words","0lB":"@stdlib/number-float64-base-from-words","0lC":"@stdlib/number/float64/base/get-high-word","0lD":"@stdlib/number-float64-base-get-high-word","0lE":"@stdlib/number/float64/base/get-low-word","0lF":"@stdlib/number-float64-base-get-low-word","2Ag":"@stdlib/number/float64/base/identity","2Ah":"@stdlib/number-float64-base-identity","28M":"@stdlib/number/float64/base/mul","28N":"@stdlib/number-float64-base-mul","0lG":"@stdlib/number/float64/base/normalize","0lH":"@stdlib/number-float64-base-normalize","0lI":"@stdlib/number/float64/base","0lJ":"@stdlib/number-float64-base","0lK":"@stdlib/number/float64/base/set-high-word","0lL":"@stdlib/number-float64-base-set-high-word","0lM":"@stdlib/number/float64/base/set-low-word","0lN":"@stdlib/number-float64-base-set-low-word","0lO":"@stdlib/number/float64/base/signbit","0lP":"@stdlib/number-float64-base-signbit","28O":"@stdlib/number/float64/base/sub","28P":"@stdlib/number-float64-base-sub","2p2":"@stdlib/number/float64/base/sub3","2p3":"@stdlib/number-float64-base-sub3","0lQ":"@stdlib/number/float64/base/to-binary-string","0lR":"@stdlib/number-float64-base-to-binary-string","2YW":"@stdlib/number/float64/base/to-float16","2YX":"@stdlib/number-float64-base-to-float16","0lS":"@stdlib/number/float64/base/to-float32","0lT":"@stdlib/number-float64-base-to-float32","0lU":"@stdlib/number/float64/base/to-int32","0lV":"@stdlib/number-float64-base-to-int32","0lW":"@stdlib/number/float64/base/to-int64-bytes","0lX":"@stdlib/number-float64-base-to-int64-bytes","0lY":"@stdlib/number/float64/base/to-uint32","0lZ":"@stdlib/number-float64-base-to-uint32","0la":"@stdlib/number/float64/base/to-words","0lb":"@stdlib/number-float64-base-to-words","2L6":"@stdlib/number/float64/base/ulp-difference","2L7":"@stdlib/number-float64-base-ulp-difference","0lc":"@stdlib/number/float64","0ld":"@stdlib/number-float64","1dk":"@stdlib/number/float64/reviver","1dl":"@stdlib/number-float64-reviver","1dm":"@stdlib/number/float64/to-json","1dn":"@stdlib/number-float64-to-json","2Ts":"@stdlib/number/int16/base/identity","2Tt":"@stdlib/number-int16-base-identity","2YY":"@stdlib/number/int16/base","2YZ":"@stdlib/number-int16-base","2Tu":"@stdlib/number/int32/base/identity","2Tv":"@stdlib/number-int32-base-identity","2Ai":"@stdlib/number/int32/base/mul","2Aj":"@stdlib/number-int32-base-mul","2Ak":"@stdlib/number/int32/base/muldw","2Al":"@stdlib/number-int32-base-muldw","0le":"@stdlib/number/int32/base","0lf":"@stdlib/number-int32-base","0lg":"@stdlib/number/int32/base/to-uint32","0lh":"@stdlib/number-int32-base-to-uint32","0li":"@stdlib/number/int32","0lj":"@stdlib/number-int32","2zG":"@stdlib/number/int64/ctor","2zH":"@stdlib/number-int64-ctor","2Tw":"@stdlib/number/int8/base/identity","2Tx":"@stdlib/number-int8-base-identity","2Ya":"@stdlib/number/int8/base","2Yb":"@stdlib/number-int8-base","0ll":"@stdlib/number","2L8":"@stdlib/number/uint16/base/add","2L9":"@stdlib/number-uint16-base-add","0lm":"@stdlib/number/uint16/base/from-binary-string","0ln":"@stdlib/number-uint16-base-from-binary-string","2Ty":"@stdlib/number/uint16/base/identity","2Tz":"@stdlib/number-uint16-base-identity","2LA":"@stdlib/number/uint16/base/mul","2LB":"@stdlib/number-uint16-base-mul","0lo":"@stdlib/number/uint16/base","0lp":"@stdlib/number-uint16-base","2LC":"@stdlib/number/uint16/base/sub","2LD":"@stdlib/number-uint16-base-sub","0lq":"@stdlib/number/uint16/base/to-binary-string","0lr":"@stdlib/number-uint16-base-to-binary-string","0ls":"@stdlib/number/uint16","0lt":"@stdlib/number-uint16","2LE":"@stdlib/number/uint32/base/add","2LF":"@stdlib/number-uint32-base-add","0lu":"@stdlib/number/uint32/base/from-binary-string","0lv":"@stdlib/number-uint32-base-from-binary-string","2U0":"@stdlib/number/uint32/base/identity","2U1":"@stdlib/number-uint32-base-identity","28Q":"@stdlib/number/uint32/base/mul","28R":"@stdlib/number-uint32-base-mul","2Am":"@stdlib/number/uint32/base/muldw","2An":"@stdlib/number-uint32-base-muldw","0lw":"@stdlib/number/uint32/base","0lx":"@stdlib/number-uint32-base","0ly":"@stdlib/number/uint32/base/rotl","0lz":"@stdlib/number-uint32-base-rotl","0m0":"@stdlib/number/uint32/base/rotr","0m1":"@stdlib/number-uint32-base-rotr","2LG":"@stdlib/number/uint32/base/sub","2LH":"@stdlib/number-uint32-base-sub","0m2":"@stdlib/number/uint32/base/to-binary-string","0m3":"@stdlib/number-uint32-base-to-binary-string","0m4":"@stdlib/number/uint32/base/to-int32","0m5":"@stdlib/number-uint32-base-to-int32","0m6":"@stdlib/number/uint32","0m7":"@stdlib/number-uint32","2xM":"@stdlib/number/uint64/base/add","2xN":"@stdlib/number-uint64-base-add","2xO":"@stdlib/number/uint64/base/assert/is-equal","2xP":"@stdlib/number-uint64-base-assert-is-equal","31u":"@stdlib/number/uint64/base/bigint2words","31v":"@stdlib/number-uint64-base-bigint2words","31w":"@stdlib/number/uint64/base/get-high-word","31x":"@stdlib/number-uint64-base-get-high-word","31y":"@stdlib/number/uint64/base/get-low-word","31z":"@stdlib/number-uint64-base-get-low-word","2zI":"@stdlib/number/uint64/base/number2words","2zJ":"@stdlib/number-uint64-base-number2words","2xQ":"@stdlib/number/uint64/base/to-words","2xR":"@stdlib/number-uint64-base-to-words","2p4":"@stdlib/number/uint64/ctor","2p5":"@stdlib/number-uint64-ctor","2LI":"@stdlib/number/uint8/base/add","2LJ":"@stdlib/number-uint8-base-add","0m8":"@stdlib/number/uint8/base/from-binary-string","0m9":"@stdlib/number-uint8-base-from-binary-string","2U2":"@stdlib/number/uint8/base/identity","2U3":"@stdlib/number-uint8-base-identity","2LK":"@stdlib/number/uint8/base/mul","2LL":"@stdlib/number-uint8-base-mul","0mA":"@stdlib/number/uint8/base","0mB":"@stdlib/number-uint8-base","2LM":"@stdlib/number/uint8/base/sub","2LN":"@stdlib/number-uint8-base-sub","0mC":"@stdlib/number/uint8/base/to-binary-string","0mD":"@stdlib/number-uint8-base-to-binary-string","0mE":"@stdlib/number/uint8","0mF":"@stdlib/number-uint8","2aQ":"@stdlib/object/any-in-by","2aR":"@stdlib/object-any-in-by","2aS":"@stdlib/object/any-own-by","2aT":"@stdlib/object-any-own-by","2Ry":"@stdlib/object/assign-in","2Rz":"@stdlib/object-assign-in","1do":"@stdlib/object/assign","1dp":"@stdlib/object-assign","2p6":"@stdlib/object/bifurcate-in","2p7":"@stdlib/object-bifurcate-in","2p8":"@stdlib/object/bifurcate-own","2p9":"@stdlib/object-bifurcate-own","2pA":"@stdlib/object/capitalize-keys","2pB":"@stdlib/object-capitalize-keys","2pC":"@stdlib/object/common-keys-in","2pD":"@stdlib/object-common-keys-in","2pE":"@stdlib/object/common-keys","2pF":"@stdlib/object-common-keys","1dq":"@stdlib/object/ctor","1dr":"@stdlib/object-ctor","2pG":"@stdlib/object/deep-get","2pH":"@stdlib/object-deep-get","2pI":"@stdlib/object/deep-set","2pJ":"@stdlib/object-deep-set","2Eu":"@stdlib/object/every-in-by","2Ev":"@stdlib/object-every-in-by","2Oc":"@stdlib/object/every-own-by","2Od":"@stdlib/object-every-own-by","2pK":"@stdlib/object/for-in","2pL":"@stdlib/object-for-in","2pM":"@stdlib/object/for-own","2pN":"@stdlib/object-for-own","2pO":"@stdlib/object/inverse-by","2pP":"@stdlib/object-inverse-by","2pQ":"@stdlib/object/inverse","2pR":"@stdlib/object-inverse","2pS":"@stdlib/object/lowercase-keys","2pT":"@stdlib/object-lowercase-keys","2aU":"@stdlib/object/move-property","2aV":"@stdlib/object-move-property","2Oe":"@stdlib/object/none-in-by","2Of":"@stdlib/object-none-in-by","2aW":"@stdlib/object/none-own-by","2aX":"@stdlib/object-none-own-by","1dt":"@stdlib/object","2Og":"@stdlib/object/some-in-by","2Oh":"@stdlib/object-some-in-by","2aY":"@stdlib/object/some-own-by","2aZ":"@stdlib/object-some-own-by","2pU":"@stdlib/object/uncapitalize-keys","2pV":"@stdlib/object-uncapitalize-keys","2pW":"@stdlib/object/uppercase-keys","2pX":"@stdlib/object-uppercase-keys","0mG":"@stdlib/os/arch","0mH":"@stdlib/os-arch","0mI":"@stdlib/os/byte-order","0mJ":"@stdlib/os-byte-order","0mK":"@stdlib/os/configdir","0mL":"@stdlib/os-configdir","0mM":"@stdlib/os/float-word-order","0mN":"@stdlib/os-float-word-order","0mO":"@stdlib/os/homedir","0mP":"@stdlib/os-homedir","0mQ":"@stdlib/os/num-cpus","0mR":"@stdlib/os-num-cpus","0mT":"@stdlib/os","0mU":"@stdlib/os/platform","0mV":"@stdlib/os-platform","0mW":"@stdlib/os/tmpdir","0mX":"@stdlib/os-tmpdir","0mY":"@stdlib/plot/base/ctor","0mZ":"@stdlib/plot-base-ctor","0ma":"@stdlib/plot/components/svg/annotations","0mb":"@stdlib/plot-components-svg-annotations","0mc":"@stdlib/plot/components/svg/axis","0md":"@stdlib/plot-components-svg-axis","0me":"@stdlib/plot/components/svg/background","0mf":"@stdlib/plot-components-svg-background","0mg":"@stdlib/plot/components/svg/canvas","0mh":"@stdlib/plot-components-svg-canvas","0mi":"@stdlib/plot/components/svg/clip-path","0mj":"@stdlib/plot-components-svg-clip-path","0mk":"@stdlib/plot/components/svg/defs","0ml":"@stdlib/plot-components-svg-defs","0mm":"@stdlib/plot/components/svg/graph","0mn":"@stdlib/plot-components-svg-graph","0mo":"@stdlib/plot/components/svg/marks","0mp":"@stdlib/plot-components-svg-marks","0mq":"@stdlib/plot/components/svg/path","0mr":"@stdlib/plot-components-svg-path","0ms":"@stdlib/plot/components/svg/rug","0mt":"@stdlib/plot-components-svg-rug","0mu":"@stdlib/plot/components/svg/symbols","0mv":"@stdlib/plot-components-svg-symbols","0mw":"@stdlib/plot/components/svg/title","0mx":"@stdlib/plot-components-svg-title","0my":"@stdlib/plot/ctor","0mz":"@stdlib/plot-ctor","0n1":"@stdlib/plot","0n2":"@stdlib/plot/sparklines/base/ctor","0n3":"@stdlib/plot-sparklines-base-ctor","0n4":"@stdlib/plot/sparklines/base","0n5":"@stdlib/plot-sparklines-base","0n6":"@stdlib/plot/sparklines","0n7":"@stdlib/plot-sparklines","0n8":"@stdlib/plot/sparklines/unicode/column","0n9":"@stdlib/plot-sparklines-unicode-column","0nA":"@stdlib/plot/sparklines/unicode/line","0nB":"@stdlib/plot-sparklines-unicode-line","0nC":"@stdlib/plot/sparklines/unicode","0nD":"@stdlib/plot-sparklines-unicode","0nE":"@stdlib/plot/sparklines/unicode/tristate","0nF":"@stdlib/plot-sparklines-unicode-tristate","0nG":"@stdlib/plot/sparklines/unicode/up-down","0nH":"@stdlib/plot-sparklines-unicode-up-down","0nI":"@stdlib/plot/sparklines/unicode/win-loss","0nJ":"@stdlib/plot-sparklines-unicode-win-loss","0nK":"@stdlib/plot/unicode/stemleaf","0nL":"@stdlib/plot-unicode-stemleaf","0nM":"@stdlib/process/argv","0nN":"@stdlib/process-argv","0nO":"@stdlib/process/chdir","0nP":"@stdlib/process-chdir","0nQ":"@stdlib/process/cwd","0nR":"@stdlib/process-cwd","0nS":"@stdlib/process/env","0nT":"@stdlib/process-env","0nU":"@stdlib/process/exec-path","0nV":"@stdlib/process-exec-path","0nW":"@stdlib/process/getegid","0nX":"@stdlib/process-getegid","0nY":"@stdlib/process/geteuid","0nZ":"@stdlib/process-geteuid","0na":"@stdlib/process/getgid","0nb":"@stdlib/process-getgid","0nc":"@stdlib/process/getuid","0nd":"@stdlib/process-getuid","0ne":"@stdlib/process/node-version","0nf":"@stdlib/process-node-version","0nh":"@stdlib/process","0ni":"@stdlib/process/read-stdin","0nj":"@stdlib/process-read-stdin","0nk":"@stdlib/process/umask","0nl":"@stdlib/process-umask","0nm":"@stdlib/proxy/ctor","0nn":"@stdlib/proxy-ctor","0np":"@stdlib/proxy","2pY":"@stdlib/random/arcsine","2pZ":"@stdlib/random-arcsine","1du":"@stdlib/random/array/arcsine","1dv":"@stdlib/random-array-arcsine","1o2":"@stdlib/random/array/bernoulli","1o3":"@stdlib/random-array-bernoulli","1dw":"@stdlib/random/array/beta","1dx":"@stdlib/random-array-beta","1dy":"@stdlib/random/array/betaprime","1dz":"@stdlib/random-array-betaprime","1qG":"@stdlib/random/array/binomial","1qH":"@stdlib/random-array-binomial","1qI":"@stdlib/random/array/cauchy","1qJ":"@stdlib/random-array-cauchy","1o4":"@stdlib/random/array/chi","1o5":"@stdlib/random-array-chi","1o6":"@stdlib/random/array/chisquare","1o7":"@stdlib/random-array-chisquare","1e0":"@stdlib/random/array/cosine","1e1":"@stdlib/random-array-cosine","1e2":"@stdlib/random/array/discrete-uniform","1e3":"@stdlib/random-array-discrete-uniform","1qK":"@stdlib/random/array/erlang","1qL":"@stdlib/random-array-erlang","1e4":"@stdlib/random/array/exponential","1e5":"@stdlib/random-array-exponential","1qM":"@stdlib/random/array/f","1qN":"@stdlib/random-array-f","1qO":"@stdlib/random/array/frechet","1qP":"@stdlib/random-array-frechet","1e6":"@stdlib/random/array/gamma","1e7":"@stdlib/random-array-gamma","1e8":"@stdlib/random/array/geometric","1e9":"@stdlib/random-array-geometric","1qQ":"@stdlib/random/array/gumbel","1qR":"@stdlib/random-array-gumbel","1qS":"@stdlib/random/array/hypergeometric","1qT":"@stdlib/random-array-hypergeometric","1eA":"@stdlib/random/array/invgamma","1eB":"@stdlib/random-array-invgamma","1qU":"@stdlib/random/array/kumaraswamy","1qV":"@stdlib/random-array-kumaraswamy","1qW":"@stdlib/random/array/laplace","1qX":"@stdlib/random-array-laplace","1qY":"@stdlib/random/array/levy","1qZ":"@stdlib/random-array-levy","1qa":"@stdlib/random/array/logistic","1qb":"@stdlib/random-array-logistic","1eC":"@stdlib/random/array/lognormal","1eD":"@stdlib/random-array-lognormal","1eE":"@stdlib/random/array/minstd-shuffle","1eF":"@stdlib/random-array-minstd-shuffle","1eG":"@stdlib/random/array/minstd","1eH":"@stdlib/random-array-minstd","1eI":"@stdlib/random/array/mt19937","1eJ":"@stdlib/random-array-mt19937","1qc":"@stdlib/random/array/negative-binomial","1qd":"@stdlib/random-array-negative-binomial","1eK":"@stdlib/random/array/normal","1eL":"@stdlib/random-array-normal","1eM":"@stdlib/random/array","1eN":"@stdlib/random-array","1qe":"@stdlib/random/array/pareto-type1","1qf":"@stdlib/random-array-pareto-type1","1o8":"@stdlib/random/array/poisson","1o9":"@stdlib/random-array-poisson","1eO":"@stdlib/random/array/randu","1eP":"@stdlib/random-array-randu","1oA":"@stdlib/random/array/rayleigh","1oB":"@stdlib/random-array-rayleigh","1oC":"@stdlib/random/array/t","1oD":"@stdlib/random-array-t","1qg":"@stdlib/random/array/tools/binary-factory","1qh":"@stdlib/random-array-tools-binary-factory","1qi":"@stdlib/random/array/tools/binary","1qj":"@stdlib/random-array-tools-binary","1oE":"@stdlib/random/array/tools/nullary","1oF":"@stdlib/random-array-tools-nullary","1rY":"@stdlib/random/array/tools","1rZ":"@stdlib/random-array-tools","1qk":"@stdlib/random/array/tools/ternary-factory","1ql":"@stdlib/random-array-tools-ternary-factory","1qm":"@stdlib/random/array/tools/ternary","1qn":"@stdlib/random-array-tools-ternary","1oG":"@stdlib/random/array/tools/unary-factory","1oH":"@stdlib/random-array-tools-unary-factory","1oI":"@stdlib/random/array/tools/unary","1oJ":"@stdlib/random-array-tools-unary","1qo":"@stdlib/random/array/triangular","1qp":"@stdlib/random-array-triangular","1eQ":"@stdlib/random/array/uniform","1eR":"@stdlib/random-array-uniform","1qq":"@stdlib/random/array/weibull","1qr":"@stdlib/random-array-weibull","0nq":"@stdlib/random/base/arcsine","0nr":"@stdlib/random-base-arcsine","0ns":"@stdlib/random/base/bernoulli","0nt":"@stdlib/random-base-bernoulli","0nu":"@stdlib/random/base/beta","0nv":"@stdlib/random-base-beta","0nw":"@stdlib/random/base/betaprime","0nx":"@stdlib/random-base-betaprime","0ny":"@stdlib/random/base/binomial","0nz":"@stdlib/random-base-binomial","0o0":"@stdlib/random/base/box-muller","0o1":"@stdlib/random-base-box-muller","0o2":"@stdlib/random/base/cauchy","0o3":"@stdlib/random-base-cauchy","0o4":"@stdlib/random/base/chi","0o5":"@stdlib/random-base-chi","0o6":"@stdlib/random/base/chisquare","0o7":"@stdlib/random-base-chisquare","0o8":"@stdlib/random/base/cosine","0o9":"@stdlib/random-base-cosine","0oA":"@stdlib/random/base/discrete-uniform","0oB":"@stdlib/random-base-discrete-uniform","0oC":"@stdlib/random/base/erlang","0oD":"@stdlib/random-base-erlang","0oE":"@stdlib/random/base/exponential","0oF":"@stdlib/random-base-exponential","0oG":"@stdlib/random/base/f","0oH":"@stdlib/random-base-f","0oI":"@stdlib/random/base/frechet","0oJ":"@stdlib/random-base-frechet","0oK":"@stdlib/random/base/gamma","0oL":"@stdlib/random-base-gamma","0oM":"@stdlib/random/base/geometric","0oN":"@stdlib/random-base-geometric","0oO":"@stdlib/random/base/gumbel","0oP":"@stdlib/random-base-gumbel","0oQ":"@stdlib/random/base/hypergeometric","0oR":"@stdlib/random-base-hypergeometric","0oS":"@stdlib/random/base/improved-ziggurat","0oT":"@stdlib/random-base-improved-ziggurat","0oU":"@stdlib/random/base/invgamma","0oV":"@stdlib/random-base-invgamma","0oW":"@stdlib/random/base/kumaraswamy","0oX":"@stdlib/random-base-kumaraswamy","0oY":"@stdlib/random/base/laplace","0oZ":"@stdlib/random-base-laplace","0oa":"@stdlib/random/base/levy","0ob":"@stdlib/random-base-levy","0oc":"@stdlib/random/base/logistic","0od":"@stdlib/random-base-logistic","0oe":"@stdlib/random/base/lognormal","0of":"@stdlib/random-base-lognormal","0og":"@stdlib/random/base/minstd-shuffle","0oh":"@stdlib/random-base-minstd-shuffle","0oi":"@stdlib/random/base/minstd","0oj":"@stdlib/random-base-minstd","0ok":"@stdlib/random/base/mt19937","0ol":"@stdlib/random-base-mt19937","0om":"@stdlib/random/base/negative-binomial","0on":"@stdlib/random-base-negative-binomial","0oo":"@stdlib/random/base/normal","0op":"@stdlib/random-base-normal","0oq":"@stdlib/random/base","0or":"@stdlib/random-base","0os":"@stdlib/random/base/pareto-type1","0ot":"@stdlib/random-base-pareto-type1","0ou":"@stdlib/random/base/poisson","0ov":"@stdlib/random-base-poisson","0ow":"@stdlib/random/base/randi","0ox":"@stdlib/random-base-randi","0oy":"@stdlib/random/base/randn","0oz":"@stdlib/random-base-randn","0p0":"@stdlib/random/base/randu","0p1":"@stdlib/random-base-randu","0p2":"@stdlib/random/base/rayleigh","0p3":"@stdlib/random-base-rayleigh","0p4":"@stdlib/random/base/reviver","0p5":"@stdlib/random-base-reviver","1sM":"@stdlib/random/base/shared","1sN":"@stdlib/random-base-shared","0p6":"@stdlib/random/base/t","0p7":"@stdlib/random-base-t","0p8":"@stdlib/random/base/triangular","0p9":"@stdlib/random-base-triangular","0pA":"@stdlib/random/base/uniform","0pB":"@stdlib/random-base-uniform","0pC":"@stdlib/random/base/weibull","0pD":"@stdlib/random-base-weibull","2pa":"@stdlib/random/bernoulli","2pb":"@stdlib/random-bernoulli","2pc":"@stdlib/random/beta","2pd":"@stdlib/random-beta","2pe":"@stdlib/random/betaprime","2pf":"@stdlib/random-betaprime","2pg":"@stdlib/random/binomial","2ph":"@stdlib/random-binomial","2pi":"@stdlib/random/cauchy","2pj":"@stdlib/random-cauchy","2pk":"@stdlib/random/chi","2pl":"@stdlib/random-chi","2pm":"@stdlib/random/chisquare","2pn":"@stdlib/random-chisquare","2po":"@stdlib/random/cosine","2pp":"@stdlib/random-cosine","2pq":"@stdlib/random/discrete-uniform","2pr":"@stdlib/random-discrete-uniform","2ps":"@stdlib/random/erlang","2pt":"@stdlib/random-erlang","1eS":"@stdlib/random/exponential","1eT":"@stdlib/random-exponential","2pu":"@stdlib/random/f","2pv":"@stdlib/random-f","2pw":"@stdlib/random/frechet","2px":"@stdlib/random-frechet","2py":"@stdlib/random/gamma","2pz":"@stdlib/random-gamma","2q0":"@stdlib/random/geometric","2q1":"@stdlib/random-geometric","2q2":"@stdlib/random/gumbel","2q3":"@stdlib/random-gumbel","2q4":"@stdlib/random/hypergeometric","2q5":"@stdlib/random-hypergeometric","2q6":"@stdlib/random/invgamma","2q7":"@stdlib/random-invgamma","0pE":"@stdlib/random/iter/arcsine","0pF":"@stdlib/random-iter-arcsine","0pG":"@stdlib/random/iter/bernoulli","0pH":"@stdlib/random-iter-bernoulli","0pI":"@stdlib/random/iter/beta","0pJ":"@stdlib/random-iter-beta","0pK":"@stdlib/random/iter/betaprime","0pL":"@stdlib/random-iter-betaprime","0pM":"@stdlib/random/iter/binomial","0pN":"@stdlib/random-iter-binomial","0pO":"@stdlib/random/iter/box-muller","0pP":"@stdlib/random-iter-box-muller","0pQ":"@stdlib/random/iter/cauchy","0pR":"@stdlib/random-iter-cauchy","0pS":"@stdlib/random/iter/chi","0pT":"@stdlib/random-iter-chi","0pU":"@stdlib/random/iter/chisquare","0pV":"@stdlib/random-iter-chisquare","0pW":"@stdlib/random/iter/cosine","0pX":"@stdlib/random-iter-cosine","0pY":"@stdlib/random/iter/discrete-uniform","0pZ":"@stdlib/random-iter-discrete-uniform","0pa":"@stdlib/random/iter/erlang","0pb":"@stdlib/random-iter-erlang","0pc":"@stdlib/random/iter/exponential","0pd":"@stdlib/random-iter-exponential","0pe":"@stdlib/random/iter/f","0pf":"@stdlib/random-iter-f","0pg":"@stdlib/random/iter/frechet","0ph":"@stdlib/random-iter-frechet","0pi":"@stdlib/random/iter/gamma","0pj":"@stdlib/random-iter-gamma","0pk":"@stdlib/random/iter/geometric","0pl":"@stdlib/random-iter-geometric","0pm":"@stdlib/random/iter/gumbel","0pn":"@stdlib/random-iter-gumbel","0po":"@stdlib/random/iter/hypergeometric","0pp":"@stdlib/random-iter-hypergeometric","0pq":"@stdlib/random/iter/improved-ziggurat","0pr":"@stdlib/random-iter-improved-ziggurat","0ps":"@stdlib/random/iter/invgamma","0pt":"@stdlib/random-iter-invgamma","0pu":"@stdlib/random/iter/kumaraswamy","0pv":"@stdlib/random-iter-kumaraswamy","0pw":"@stdlib/random/iter/laplace","0px":"@stdlib/random-iter-laplace","0py":"@stdlib/random/iter/levy","0pz":"@stdlib/random-iter-levy","0q0":"@stdlib/random/iter/logistic","0q1":"@stdlib/random-iter-logistic","0q2":"@stdlib/random/iter/lognormal","0q3":"@stdlib/random-iter-lognormal","0q4":"@stdlib/random/iter/minstd-shuffle","0q5":"@stdlib/random-iter-minstd-shuffle","0q6":"@stdlib/random/iter/minstd","0q7":"@stdlib/random-iter-minstd","0q8":"@stdlib/random/iter/mt19937","0q9":"@stdlib/random-iter-mt19937","0qA":"@stdlib/random/iter/negative-binomial","0qB":"@stdlib/random-iter-negative-binomial","0qC":"@stdlib/random/iter/normal","0qD":"@stdlib/random-iter-normal","0qE":"@stdlib/random/iter","0qF":"@stdlib/random-iter","0qG":"@stdlib/random/iter/pareto-type1","0qH":"@stdlib/random-iter-pareto-type1","0qI":"@stdlib/random/iter/poisson","0qJ":"@stdlib/random-iter-poisson","0qK":"@stdlib/random/iter/randi","0qL":"@stdlib/random-iter-randi","0qM":"@stdlib/random/iter/randn","0qN":"@stdlib/random-iter-randn","0qO":"@stdlib/random/iter/randu","0qP":"@stdlib/random-iter-randu","0qQ":"@stdlib/random/iter/rayleigh","0qR":"@stdlib/random-iter-rayleigh","0qS":"@stdlib/random/iter/t","0qT":"@stdlib/random-iter-t","0qU":"@stdlib/random/iter/triangular","0qV":"@stdlib/random-iter-triangular","0qW":"@stdlib/random/iter/uniform","0qX":"@stdlib/random-iter-uniform","0qY":"@stdlib/random/iter/weibull","0qZ":"@stdlib/random-iter-weibull","2q8":"@stdlib/random/kumaraswamy","2q9":"@stdlib/random-kumaraswamy","2qA":"@stdlib/random/laplace","2qB":"@stdlib/random-laplace","2qC":"@stdlib/random/levy","2qD":"@stdlib/random-levy","2qE":"@stdlib/random/logistic","2qF":"@stdlib/random-logistic","2qG":"@stdlib/random/lognormal","2qH":"@stdlib/random-lognormal","2qI":"@stdlib/random/negative-binomial","2qJ":"@stdlib/random-negative-binomial","2qK":"@stdlib/random/normal","2qL":"@stdlib/random-normal","0qb":"@stdlib/random","2qM":"@stdlib/random/pareto-type1","2qN":"@stdlib/random-pareto-type1","2qO":"@stdlib/random/poisson","2qP":"@stdlib/random-poisson","2qQ":"@stdlib/random/rayleigh","2qR":"@stdlib/random-rayleigh","0qc":"@stdlib/random/sample","0qd":"@stdlib/random-sample","0qe":"@stdlib/random/shuffle","0qf":"@stdlib/random-shuffle","0qg":"@stdlib/random/streams/arcsine","0qh":"@stdlib/random-streams-arcsine","0qi":"@stdlib/random/streams/bernoulli","0qj":"@stdlib/random-streams-bernoulli","0qk":"@stdlib/random/streams/beta","0ql":"@stdlib/random-streams-beta","0qm":"@stdlib/random/streams/betaprime","0qn":"@stdlib/random-streams-betaprime","0qo":"@stdlib/random/streams/binomial","0qp":"@stdlib/random-streams-binomial","0qq":"@stdlib/random/streams/box-muller","0qr":"@stdlib/random-streams-box-muller","0qs":"@stdlib/random/streams/cauchy","0qt":"@stdlib/random-streams-cauchy","0qu":"@stdlib/random/streams/chi","0qv":"@stdlib/random-streams-chi","0qw":"@stdlib/random/streams/chisquare","0qx":"@stdlib/random-streams-chisquare","0qy":"@stdlib/random/streams/cosine","0qz":"@stdlib/random-streams-cosine","0r0":"@stdlib/random/streams/discrete-uniform","0r1":"@stdlib/random-streams-discrete-uniform","0r2":"@stdlib/random/streams/erlang","0r3":"@stdlib/random-streams-erlang","0r4":"@stdlib/random/streams/exponential","0r5":"@stdlib/random-streams-exponential","0r6":"@stdlib/random/streams/f","0r7":"@stdlib/random-streams-f","0r8":"@stdlib/random/streams/frechet","0r9":"@stdlib/random-streams-frechet","0rA":"@stdlib/random/streams/gamma","0rB":"@stdlib/random-streams-gamma","0rC":"@stdlib/random/streams/geometric","0rD":"@stdlib/random-streams-geometric","0rE":"@stdlib/random/streams/gumbel","0rF":"@stdlib/random-streams-gumbel","0rG":"@stdlib/random/streams/hypergeometric","0rH":"@stdlib/random-streams-hypergeometric","0rI":"@stdlib/random/streams/improved-ziggurat","0rJ":"@stdlib/random-streams-improved-ziggurat","0rK":"@stdlib/random/streams/invgamma","0rL":"@stdlib/random-streams-invgamma","0rM":"@stdlib/random/streams/kumaraswamy","0rN":"@stdlib/random-streams-kumaraswamy","0rO":"@stdlib/random/streams/laplace","0rP":"@stdlib/random-streams-laplace","0rQ":"@stdlib/random/streams/levy","0rR":"@stdlib/random-streams-levy","0rS":"@stdlib/random/streams/logistic","0rT":"@stdlib/random-streams-logistic","0rU":"@stdlib/random/streams/lognormal","0rV":"@stdlib/random-streams-lognormal","0rW":"@stdlib/random/streams/minstd-shuffle","0rX":"@stdlib/random-streams-minstd-shuffle","0rY":"@stdlib/random/streams/minstd","0rZ":"@stdlib/random-streams-minstd","0ra":"@stdlib/random/streams/mt19937","0rb":"@stdlib/random-streams-mt19937","0rc":"@stdlib/random/streams/negative-binomial","0rd":"@stdlib/random-streams-negative-binomial","0re":"@stdlib/random/streams/normal","0rf":"@stdlib/random-streams-normal","0rg":"@stdlib/random/streams","0rh":"@stdlib/random-streams","0ri":"@stdlib/random/streams/pareto-type1","0rj":"@stdlib/random-streams-pareto-type1","0rk":"@stdlib/random/streams/poisson","0rl":"@stdlib/random-streams-poisson","0rm":"@stdlib/random/streams/randi","0rn":"@stdlib/random-streams-randi","0ro":"@stdlib/random/streams/randn","0rp":"@stdlib/random-streams-randn","0rq":"@stdlib/random/streams/randu","0rr":"@stdlib/random-streams-randu","0rs":"@stdlib/random/streams/rayleigh","0rt":"@stdlib/random-streams-rayleigh","0ru":"@stdlib/random/streams/t","0rv":"@stdlib/random-streams-t","0rw":"@stdlib/random/streams/triangular","0rx":"@stdlib/random-streams-triangular","0ry":"@stdlib/random/streams/uniform","0rz":"@stdlib/random-streams-uniform","0s0":"@stdlib/random/streams/weibull","0s1":"@stdlib/random-streams-weibull","1eU":"@stdlib/random/strided/arcsine","1eV":"@stdlib/random-strided-arcsine","1ra":"@stdlib/random/strided/bernoulli","1rb":"@stdlib/random-strided-bernoulli","1eW":"@stdlib/random/strided/beta","1eX":"@stdlib/random-strided-beta","1eY":"@stdlib/random/strided/betaprime","1eZ":"@stdlib/random-strided-betaprime","1rc":"@stdlib/random/strided/chi","1rd":"@stdlib/random-strided-chi","1re":"@stdlib/random/strided/chisquare","1rf":"@stdlib/random-strided-chisquare","1ea":"@stdlib/random/strided/cosine","1eb":"@stdlib/random-strided-cosine","1ec":"@stdlib/random/strided/discrete-uniform","1ed":"@stdlib/random-strided-discrete-uniform","1ee":"@stdlib/random/strided/exponential","1ef":"@stdlib/random-strided-exponential","1eg":"@stdlib/random/strided/gamma","1eh":"@stdlib/random-strided-gamma","1rg":"@stdlib/random/strided/geometric","1rh":"@stdlib/random-strided-geometric","1ei":"@stdlib/random/strided/invgamma","1ej":"@stdlib/random-strided-invgamma","1ek":"@stdlib/random/strided/lognormal","1el":"@stdlib/random-strided-lognormal","1em":"@stdlib/random/strided/minstd-shuffle","1en":"@stdlib/random-strided-minstd-shuffle","1eo":"@stdlib/random/strided/minstd","1ep":"@stdlib/random-strided-minstd","1eq":"@stdlib/random/strided/mt19937","1er":"@stdlib/random-strided-mt19937","1es":"@stdlib/random/strided/normal","1et":"@stdlib/random-strided-normal","1eu":"@stdlib/random/strided","1ev":"@stdlib/random-strided","1ri":"@stdlib/random/strided/poisson","1rj":"@stdlib/random-strided-poisson","1ew":"@stdlib/random/strided/randu","1ex":"@stdlib/random-strided-randu","1rk":"@stdlib/random/strided/rayleigh","1rl":"@stdlib/random-strided-rayleigh","1rm":"@stdlib/random/strided/t","1rn":"@stdlib/random-strided-t","1ro":"@stdlib/random/strided/tools/binary-factory","1rp":"@stdlib/random-strided-tools-binary-factory","1rq":"@stdlib/random/strided/tools","1rr":"@stdlib/random-strided-tools","1rs":"@stdlib/random/strided/tools/ternary-factory","1rt":"@stdlib/random-strided-tools-ternary-factory","1ru":"@stdlib/random/strided/tools/unary-factory","1rv":"@stdlib/random-strided-tools-unary-factory","1ey":"@stdlib/random/strided/uniform","1ez":"@stdlib/random-strided-uniform","1f0":"@stdlib/random/strided/weibull","1f1":"@stdlib/random-strided-weibull","2qS":"@stdlib/random/t","2qT":"@stdlib/random-t","2HE":"@stdlib/random/tools/binary-factory","2HF":"@stdlib/random-tools-binary-factory","2HG":"@stdlib/random/tools/binary","2HH":"@stdlib/random-tools-binary","2GK":"@stdlib/random/tools","2GL":"@stdlib/random-tools","2qU":"@stdlib/random/tools/ternary-factory","2qV":"@stdlib/random-tools-ternary-factory","2qW":"@stdlib/random/tools/ternary","2qX":"@stdlib/random-tools-ternary","2GM":"@stdlib/random/tools/unary-factory","2GN":"@stdlib/random-tools-unary-factory","2GO":"@stdlib/random/tools/unary","2GP":"@stdlib/random-tools-unary","2qY":"@stdlib/random/triangular","2qZ":"@stdlib/random-triangular","2HI":"@stdlib/random/uniform","2HJ":"@stdlib/random-uniform","2qa":"@stdlib/random/weibull","2qb":"@stdlib/random-weibull","0s2":"@stdlib/regexp/basename-posix","0s3":"@stdlib/regexp-basename-posix","0s4":"@stdlib/regexp/basename-windows","0s5":"@stdlib/regexp-basename-windows","0s6":"@stdlib/regexp/basename","0s7":"@stdlib/regexp-basename","0s8":"@stdlib/regexp/color-hexadecimal","0s9":"@stdlib/regexp-color-hexadecimal","0sA":"@stdlib/regexp/decimal-number","0sB":"@stdlib/regexp-decimal-number","0sC":"@stdlib/regexp/dirname-posix","0sD":"@stdlib/regexp-dirname-posix","0sE":"@stdlib/regexp/dirname-windows","0sF":"@stdlib/regexp-dirname-windows","0sG":"@stdlib/regexp/dirname","0sH":"@stdlib/regexp-dirname","1f2":"@stdlib/regexp/duration-string","1f3":"@stdlib/regexp-duration-string","0sI":"@stdlib/regexp/eol","0sJ":"@stdlib/regexp-eol","0sK":"@stdlib/regexp/extended-length-path","0sL":"@stdlib/regexp-extended-length-path","0sM":"@stdlib/regexp/extname-posix","0sN":"@stdlib/regexp-extname-posix","0sO":"@stdlib/regexp/extname-windows","0sP":"@stdlib/regexp-extname-windows","0sQ":"@stdlib/regexp/extname","0sR":"@stdlib/regexp-extname","0sS":"@stdlib/regexp/filename-posix","0sT":"@stdlib/regexp-filename-posix","0sU":"@stdlib/regexp/filename-windows","0sV":"@stdlib/regexp-filename-windows","0sW":"@stdlib/regexp/filename","0sX":"@stdlib/regexp-filename","0sY":"@stdlib/regexp/function-name","0sZ":"@stdlib/regexp-function-name","0sa":"@stdlib/regexp/native-function","0sb":"@stdlib/regexp-native-function","0sd":"@stdlib/regexp","0se":"@stdlib/regexp/regexp","0sf":"@stdlib/regexp-regexp","1f4":"@stdlib/regexp/reviver","1f5":"@stdlib/regexp-reviver","1f6":"@stdlib/regexp/semver","1f7":"@stdlib/regexp-semver","1f8":"@stdlib/regexp/to-json","1f9":"@stdlib/regexp-to-json","0sg":"@stdlib/regexp/unc-path","0sh":"@stdlib/regexp-unc-path","0si":"@stdlib/regexp/utf16-surrogate-pair","0sj":"@stdlib/regexp-utf16-surrogate-pair","0sk":"@stdlib/regexp/utf16-unpaired-surrogate","0sl":"@stdlib/regexp-utf16-unpaired-surrogate","0sm":"@stdlib/regexp/whitespace","0sn":"@stdlib/regexp-whitespace","0so":"@stdlib/repl/code-blocks","0sp":"@stdlib/repl-code-blocks","0sq":"@stdlib/repl/help","0sr":"@stdlib/repl-help","0ss":"@stdlib/repl/info","0st":"@stdlib/repl-info","0sv":"@stdlib/repl","0sw":"@stdlib/repl/presentation","0sx":"@stdlib/repl-presentation","0sy":"@stdlib/repl/server","0sz":"@stdlib/repl-server","0t0":"@stdlib/repl/signature","0t1":"@stdlib/repl-signature","0t2":"@stdlib/repl/typed-signature","0t3":"@stdlib/repl-typed-signature","0t4":"@stdlib/simulate/iter/awgn","0t5":"@stdlib/simulate-iter-awgn","0t6":"@stdlib/simulate/iter/awln","0t7":"@stdlib/simulate-iter-awln","0t8":"@stdlib/simulate/iter/awun","0t9":"@stdlib/simulate-iter-awun","0tA":"@stdlib/simulate/iter/bartlett-hann-pulse","0tB":"@stdlib/simulate-iter-bartlett-hann-pulse","0tC":"@stdlib/simulate/iter/bartlett-pulse","0tD":"@stdlib/simulate-iter-bartlett-pulse","0tE":"@stdlib/simulate/iter/cosine-wave","0tF":"@stdlib/simulate-iter-cosine-wave","0tG":"@stdlib/simulate/iter/dirac-comb","0tH":"@stdlib/simulate-iter-dirac-comb","0tI":"@stdlib/simulate/iter/flat-top-pulse","0tJ":"@stdlib/simulate-iter-flat-top-pulse","0tK":"@stdlib/simulate/iter/hann-pulse","0tL":"@stdlib/simulate-iter-hann-pulse","0tM":"@stdlib/simulate/iter/lanczos-pulse","0tN":"@stdlib/simulate-iter-lanczos-pulse","0tO":"@stdlib/simulate/iter","0tP":"@stdlib/simulate-iter","0tQ":"@stdlib/simulate/iter/periodic-sinc","0tR":"@stdlib/simulate-iter-periodic-sinc","0tS":"@stdlib/simulate/iter/pulse","0tT":"@stdlib/simulate-iter-pulse","0tU":"@stdlib/simulate/iter/sawtooth-wave","0tV":"@stdlib/simulate-iter-sawtooth-wave","0tW":"@stdlib/simulate/iter/sine-wave","0tX":"@stdlib/simulate-iter-sine-wave","0tY":"@stdlib/simulate/iter/square-wave","0tZ":"@stdlib/simulate-iter-square-wave","0ta":"@stdlib/simulate/iter/triangle-wave","0tb":"@stdlib/simulate-iter-triangle-wave","0td":"@stdlib/simulate","1kc":"@stdlib/slice/base/args2multislice","1kd":"@stdlib/slice-base-args2multislice","1rw":"@stdlib/slice/base/int2slice","1rx":"@stdlib/slice-base-int2slice","1j8":"@stdlib/slice/base/length","1j9":"@stdlib/slice-base-length","1jW":"@stdlib/slice/base/nonreduced-dimensions","1jX":"@stdlib/slice-base-nonreduced-dimensions","1jA":"@stdlib/slice/base/normalize-multi-slice","1jB":"@stdlib/slice-base-normalize-multi-slice","1jC":"@stdlib/slice/base/normalize-slice","1jD":"@stdlib/slice-base-normalize-slice","1io":"@stdlib/slice/base","1ip":"@stdlib/slice-base","1jY":"@stdlib/slice/base/reduced-dimensions","1jZ":"@stdlib/slice-base-reduced-dimensions","1ja":"@stdlib/slice/base/sargs2multislice","1jb":"@stdlib/slice-base-sargs2multislice","1jE":"@stdlib/slice/base/seq2multislice","1jF":"@stdlib/slice-base-seq2multislice","1iq":"@stdlib/slice/base/seq2slice","1ir":"@stdlib/slice-base-seq2slice","1jG":"@stdlib/slice/base/shape","1jH":"@stdlib/slice-base-shape","1is":"@stdlib/slice/base/slice2seq","1it":"@stdlib/slice-base-slice2seq","1iu":"@stdlib/slice/base/str2multislice","1iv":"@stdlib/slice-base-str2multislice","1iw":"@stdlib/slice/base/str2slice","1ix":"@stdlib/slice-base-str2slice","1iy":"@stdlib/slice/ctor","1iz":"@stdlib/slice-ctor","1j0":"@stdlib/slice/multi","1j1":"@stdlib/slice-multi","1j3":"@stdlib/slice","1j4":"@stdlib/slice/seq2slice","1j5":"@stdlib/slice-seq2slice","0te":"@stdlib/stats/anova1","0tf":"@stdlib/stats-anova1","2JO":"@stdlib/stats/array/max-by","2JP":"@stdlib/stats-array-max-by","2EY":"@stdlib/stats/array/max","2EZ":"@stdlib/stats-array-max","2GQ":"@stdlib/stats/array/maxabs","2GR":"@stdlib/stats-array-maxabs","2GS":"@stdlib/stats/array/maxsorted","2GT":"@stdlib/stats-array-maxsorted","2HK":"@stdlib/stats/array/mean","2HL":"@stdlib/stats-array-mean","2LO":"@stdlib/stats/array/meankbn","2LP":"@stdlib/stats-array-meankbn","2LQ":"@stdlib/stats/array/meankbn2","2LR":"@stdlib/stats-array-meankbn2","2LS":"@stdlib/stats/array/meanors","2LT":"@stdlib/stats-array-meanors","2LU":"@stdlib/stats/array/meanpn","2LV":"@stdlib/stats-array-meanpn","2LW":"@stdlib/stats/array/meanpw","2LX":"@stdlib/stats-array-meanpw","2LY":"@stdlib/stats/array/meanwd","2LZ":"@stdlib/stats-array-meanwd","2JQ":"@stdlib/stats/array/mediansorted","2JR":"@stdlib/stats-array-mediansorted","2qc":"@stdlib/stats/array/midrange-by","2qd":"@stdlib/stats-array-midrange-by","2qe":"@stdlib/stats/array/midrange","2qf":"@stdlib/stats-array-midrange","2JS":"@stdlib/stats/array/min-by","2JT":"@stdlib/stats-array-min-by","2Ew":"@stdlib/stats/array/min","2Ex":"@stdlib/stats-array-min","2Gq":"@stdlib/stats/array/minabs","2Gr":"@stdlib/stats-array-minabs","2Gs":"@stdlib/stats/array/minsorted","2Gt":"@stdlib/stats-array-minsorted","2Ea":"@stdlib/stats/array/mskmax","2Eb":"@stdlib/stats-array-mskmax","2qg":"@stdlib/stats/array/mskmaxabs","2qh":"@stdlib/stats-array-mskmaxabs","2qi":"@stdlib/stats/array/mskmidrange","2qj":"@stdlib/stats-array-mskmidrange","2Gu":"@stdlib/stats/array/mskmin","2Gv":"@stdlib/stats-array-mskmin","2qk":"@stdlib/stats/array/mskminabs","2ql":"@stdlib/stats-array-mskminabs","2HM":"@stdlib/stats/array/mskrange","2HN":"@stdlib/stats-array-mskrange","2JU":"@stdlib/stats/array/nanmax-by","2JV":"@stdlib/stats-array-nanmax-by","2Ec":"@stdlib/stats/array/nanmax","2Ed":"@stdlib/stats-array-nanmax","2JW":"@stdlib/stats/array/nanmaxabs","2JX":"@stdlib/stats-array-nanmaxabs","2La":"@stdlib/stats/array/nanmean","2Lb":"@stdlib/stats-array-nanmean","2Oi":"@stdlib/stats/array/nanmeanors","2Oj":"@stdlib/stats-array-nanmeanors","2Ok":"@stdlib/stats/array/nanmeanpn","2Ol":"@stdlib/stats-array-nanmeanpn","2Om":"@stdlib/stats/array/nanmeanwd","2On":"@stdlib/stats-array-nanmeanwd","2qm":"@stdlib/stats/array/nanmidrange-by","2qn":"@stdlib/stats-array-nanmidrange-by","2qo":"@stdlib/stats/array/nanmidrange","2qp":"@stdlib/stats-array-nanmidrange","2JY":"@stdlib/stats/array/nanmin-by","2JZ":"@stdlib/stats-array-nanmin-by","2HO":"@stdlib/stats/array/nanmin","2HP":"@stdlib/stats-array-nanmin","2Ja":"@stdlib/stats/array/nanminabs","2Jb":"@stdlib/stats-array-nanminabs","2Lc":"@stdlib/stats/array/nanmskmax","2Ld":"@stdlib/stats-array-nanmskmax","2qq":"@stdlib/stats/array/nanmskmidrange","2qr":"@stdlib/stats-array-nanmskmidrange","2Oo":"@stdlib/stats/array/nanmskmin","2Op":"@stdlib/stats-array-nanmskmin","2Oq":"@stdlib/stats/array/nanmskrange","2Or":"@stdlib/stats-array-nanmskrange","2Os":"@stdlib/stats/array/nanrange-by","2Ot":"@stdlib/stats-array-nanrange-by","2Jc":"@stdlib/stats/array/nanrange","2Jd":"@stdlib/stats-array-nanrange","2Ou":"@stdlib/stats/array/nanstdev","2Ov":"@stdlib/stats-array-nanstdev","2Ow":"@stdlib/stats/array/nanstdevch","2Ox":"@stdlib/stats-array-nanstdevch","2S0":"@stdlib/stats/array/nanstdevpn","2S1":"@stdlib/stats-array-nanstdevpn","2S2":"@stdlib/stats/array/nanstdevtk","2S3":"@stdlib/stats-array-nanstdevtk","2S4":"@stdlib/stats/array/nanstdevwd","2S5":"@stdlib/stats-array-nanstdevwd","2S6":"@stdlib/stats/array/nanstdevyc","2S7":"@stdlib/stats-array-nanstdevyc","2Oy":"@stdlib/stats/array/nanvariance","2Oz":"@stdlib/stats-array-nanvariance","2P0":"@stdlib/stats/array/nanvariancech","2P1":"@stdlib/stats-array-nanvariancech","2P2":"@stdlib/stats/array/nanvariancepn","2P3":"@stdlib/stats-array-nanvariancepn","2P4":"@stdlib/stats/array/nanvariancetk","2P5":"@stdlib/stats-array-nanvariancetk","2P6":"@stdlib/stats/array/nanvariancewd","2P7":"@stdlib/stats-array-nanvariancewd","2P8":"@stdlib/stats/array/nanvarianceyc","2P9":"@stdlib/stats-array-nanvarianceyc","2Je":"@stdlib/stats/array","2Jf":"@stdlib/stats-array","2PA":"@stdlib/stats/array/range-by","2PB":"@stdlib/stats-array-range-by","2Jg":"@stdlib/stats/array/range","2Jh":"@stdlib/stats-array-range","2qs":"@stdlib/stats/array/rangeabs","2qt":"@stdlib/stats-array-rangeabs","2PC":"@stdlib/stats/array/stdev","2PD":"@stdlib/stats-array-stdev","2PE":"@stdlib/stats/array/stdevch","2PF":"@stdlib/stats-array-stdevch","2PG":"@stdlib/stats/array/stdevpn","2PH":"@stdlib/stats-array-stdevpn","2PI":"@stdlib/stats/array/stdevtk","2PJ":"@stdlib/stats-array-stdevtk","2PK":"@stdlib/stats/array/stdevwd","2PL":"@stdlib/stats-array-stdevwd","2PM":"@stdlib/stats/array/stdevyc","2PN":"@stdlib/stats-array-stdevyc","2PO":"@stdlib/stats/array/variance","2PP":"@stdlib/stats-array-variance","2PQ":"@stdlib/stats/array/variancech","2PR":"@stdlib/stats-array-variancech","2PS":"@stdlib/stats/array/variancepn","2PT":"@stdlib/stats-array-variancepn","2PU":"@stdlib/stats/array/variancetk","2PV":"@stdlib/stats-array-variancetk","2PW":"@stdlib/stats/array/variancewd","2PX":"@stdlib/stats-array-variancewd","2Ee":"@stdlib/stats/array/varianceyc","2Ef":"@stdlib/stats-array-varianceyc","0tg":"@stdlib/stats/bartlett-test","0th":"@stdlib/stats-bartlett-test","0ti":"@stdlib/stats/base/cumax","0tj":"@stdlib/stats-base-cumax","0tk":"@stdlib/stats/base/cumaxabs","0tl":"@stdlib/stats-base-cumaxabs","0tm":"@stdlib/stats/base/cumin","0tn":"@stdlib/stats-base-cumin","0to":"@stdlib/stats/base/cuminabs","0tp":"@stdlib/stats-base-cuminabs","2xS":"@stdlib/stats/base/dists/anglit/mean","2xT":"@stdlib/stats-base-dists-anglit-mean","2xU":"@stdlib/stats/base/dists/anglit/median","2xV":"@stdlib/stats-base-dists-anglit-median","2zK":"@stdlib/stats/base/dists/anglit/quantile","2zL":"@stdlib/stats-base-dists-anglit-quantile","32A":"@stdlib/stats/base/dists/anglit/stdev","32B":"@stdlib/stats-base-dists-anglit-stdev","32C":"@stdlib/stats/base/dists/anglit/variance","32D":"@stdlib/stats-base-dists-anglit-variance","0ty":"@stdlib/stats/base/dists/arcsine/cdf","0tz":"@stdlib/stats-base-dists-arcsine-cdf","0u0":"@stdlib/stats/base/dists/arcsine/ctor","0u1":"@stdlib/stats-base-dists-arcsine-ctor","0u2":"@stdlib/stats/base/dists/arcsine/entropy","0u3":"@stdlib/stats-base-dists-arcsine-entropy","0u4":"@stdlib/stats/base/dists/arcsine/kurtosis","0u5":"@stdlib/stats-base-dists-arcsine-kurtosis","0u6":"@stdlib/stats/base/dists/arcsine/logcdf","0u7":"@stdlib/stats-base-dists-arcsine-logcdf","0u8":"@stdlib/stats/base/dists/arcsine/logpdf","0u9":"@stdlib/stats-base-dists-arcsine-logpdf","0uA":"@stdlib/stats/base/dists/arcsine/mean","0uB":"@stdlib/stats-base-dists-arcsine-mean","0uC":"@stdlib/stats/base/dists/arcsine/median","0uD":"@stdlib/stats-base-dists-arcsine-median","0uE":"@stdlib/stats/base/dists/arcsine/mode","0uF":"@stdlib/stats-base-dists-arcsine-mode","0uG":"@stdlib/stats/base/dists/arcsine","0uH":"@stdlib/stats-base-dists-arcsine","0uI":"@stdlib/stats/base/dists/arcsine/pdf","0uJ":"@stdlib/stats-base-dists-arcsine-pdf","0uK":"@stdlib/stats/base/dists/arcsine/quantile","0uL":"@stdlib/stats-base-dists-arcsine-quantile","0uM":"@stdlib/stats/base/dists/arcsine/skewness","0uN":"@stdlib/stats-base-dists-arcsine-skewness","0uO":"@stdlib/stats/base/dists/arcsine/stdev","0uP":"@stdlib/stats-base-dists-arcsine-stdev","0uQ":"@stdlib/stats/base/dists/arcsine/variance","0uR":"@stdlib/stats-base-dists-arcsine-variance","0uS":"@stdlib/stats/base/dists/bernoulli/cdf","0uT":"@stdlib/stats-base-dists-bernoulli-cdf","0uU":"@stdlib/stats/base/dists/bernoulli/ctor","0uV":"@stdlib/stats-base-dists-bernoulli-ctor","0uW":"@stdlib/stats/base/dists/bernoulli/entropy","0uX":"@stdlib/stats-base-dists-bernoulli-entropy","0uY":"@stdlib/stats/base/dists/bernoulli/kurtosis","0uZ":"@stdlib/stats-base-dists-bernoulli-kurtosis","0ua":"@stdlib/stats/base/dists/bernoulli/mean","0ub":"@stdlib/stats-base-dists-bernoulli-mean","0uc":"@stdlib/stats/base/dists/bernoulli/median","0ud":"@stdlib/stats-base-dists-bernoulli-median","0ue":"@stdlib/stats/base/dists/bernoulli/mgf","0uf":"@stdlib/stats-base-dists-bernoulli-mgf","0ug":"@stdlib/stats/base/dists/bernoulli/mode","0uh":"@stdlib/stats-base-dists-bernoulli-mode","0ui":"@stdlib/stats/base/dists/bernoulli","0uj":"@stdlib/stats-base-dists-bernoulli","0uk":"@stdlib/stats/base/dists/bernoulli/pmf","0ul":"@stdlib/stats-base-dists-bernoulli-pmf","0um":"@stdlib/stats/base/dists/bernoulli/quantile","0un":"@stdlib/stats-base-dists-bernoulli-quantile","0uo":"@stdlib/stats/base/dists/bernoulli/skewness","0up":"@stdlib/stats-base-dists-bernoulli-skewness","0uq":"@stdlib/stats/base/dists/bernoulli/stdev","0ur":"@stdlib/stats-base-dists-bernoulli-stdev","0us":"@stdlib/stats/base/dists/bernoulli/variance","0ut":"@stdlib/stats-base-dists-bernoulli-variance","0uu":"@stdlib/stats/base/dists/beta/cdf","0uv":"@stdlib/stats-base-dists-beta-cdf","0uw":"@stdlib/stats/base/dists/beta/ctor","0ux":"@stdlib/stats-base-dists-beta-ctor","0uy":"@stdlib/stats/base/dists/beta/entropy","0uz":"@stdlib/stats-base-dists-beta-entropy","0v0":"@stdlib/stats/base/dists/beta/kurtosis","0v1":"@stdlib/stats-base-dists-beta-kurtosis","0v2":"@stdlib/stats/base/dists/beta/logcdf","0v3":"@stdlib/stats-base-dists-beta-logcdf","0v4":"@stdlib/stats/base/dists/beta/logpdf","0v5":"@stdlib/stats-base-dists-beta-logpdf","0v6":"@stdlib/stats/base/dists/beta/mean","0v7":"@stdlib/stats-base-dists-beta-mean","0v8":"@stdlib/stats/base/dists/beta/median","0v9":"@stdlib/stats-base-dists-beta-median","0vA":"@stdlib/stats/base/dists/beta/mgf","0vB":"@stdlib/stats-base-dists-beta-mgf","0vC":"@stdlib/stats/base/dists/beta/mode","0vD":"@stdlib/stats-base-dists-beta-mode","0vE":"@stdlib/stats/base/dists/beta","0vF":"@stdlib/stats-base-dists-beta","0vG":"@stdlib/stats/base/dists/beta/pdf","0vH":"@stdlib/stats-base-dists-beta-pdf","0vI":"@stdlib/stats/base/dists/beta/quantile","0vJ":"@stdlib/stats-base-dists-beta-quantile","0vK":"@stdlib/stats/base/dists/beta/skewness","0vL":"@stdlib/stats-base-dists-beta-skewness","0vM":"@stdlib/stats/base/dists/beta/stdev","0vN":"@stdlib/stats-base-dists-beta-stdev","0vO":"@stdlib/stats/base/dists/beta/variance","0vP":"@stdlib/stats-base-dists-beta-variance","0vQ":"@stdlib/stats/base/dists/betaprime/cdf","0vR":"@stdlib/stats-base-dists-betaprime-cdf","0vS":"@stdlib/stats/base/dists/betaprime/ctor","0vT":"@stdlib/stats-base-dists-betaprime-ctor","0vU":"@stdlib/stats/base/dists/betaprime/kurtosis","0vV":"@stdlib/stats-base-dists-betaprime-kurtosis","0vW":"@stdlib/stats/base/dists/betaprime/logcdf","0vX":"@stdlib/stats-base-dists-betaprime-logcdf","0vY":"@stdlib/stats/base/dists/betaprime/logpdf","0vZ":"@stdlib/stats-base-dists-betaprime-logpdf","0va":"@stdlib/stats/base/dists/betaprime/mean","0vb":"@stdlib/stats-base-dists-betaprime-mean","0vc":"@stdlib/stats/base/dists/betaprime/mode","0vd":"@stdlib/stats-base-dists-betaprime-mode","0ve":"@stdlib/stats/base/dists/betaprime","0vf":"@stdlib/stats-base-dists-betaprime","0vg":"@stdlib/stats/base/dists/betaprime/pdf","0vh":"@stdlib/stats-base-dists-betaprime-pdf","0vi":"@stdlib/stats/base/dists/betaprime/quantile","0vj":"@stdlib/stats-base-dists-betaprime-quantile","0vk":"@stdlib/stats/base/dists/betaprime/skewness","0vl":"@stdlib/stats-base-dists-betaprime-skewness","0vm":"@stdlib/stats/base/dists/betaprime/stdev","0vn":"@stdlib/stats-base-dists-betaprime-stdev","0vo":"@stdlib/stats/base/dists/betaprime/variance","0vp":"@stdlib/stats-base-dists-betaprime-variance","0vq":"@stdlib/stats/base/dists/binomial/cdf","0vr":"@stdlib/stats-base-dists-binomial-cdf","0vs":"@stdlib/stats/base/dists/binomial/ctor","0vt":"@stdlib/stats-base-dists-binomial-ctor","0vu":"@stdlib/stats/base/dists/binomial/entropy","0vv":"@stdlib/stats-base-dists-binomial-entropy","0vw":"@stdlib/stats/base/dists/binomial/kurtosis","0vx":"@stdlib/stats-base-dists-binomial-kurtosis","0vy":"@stdlib/stats/base/dists/binomial/logpmf","0vz":"@stdlib/stats-base-dists-binomial-logpmf","0w0":"@stdlib/stats/base/dists/binomial/mean","0w1":"@stdlib/stats-base-dists-binomial-mean","0w2":"@stdlib/stats/base/dists/binomial/median","0w3":"@stdlib/stats-base-dists-binomial-median","0w4":"@stdlib/stats/base/dists/binomial/mgf","0w5":"@stdlib/stats-base-dists-binomial-mgf","0w6":"@stdlib/stats/base/dists/binomial/mode","0w7":"@stdlib/stats-base-dists-binomial-mode","0w8":"@stdlib/stats/base/dists/binomial","0w9":"@stdlib/stats-base-dists-binomial","0wA":"@stdlib/stats/base/dists/binomial/pmf","0wB":"@stdlib/stats-base-dists-binomial-pmf","0wC":"@stdlib/stats/base/dists/binomial/quantile","0wD":"@stdlib/stats-base-dists-binomial-quantile","0wE":"@stdlib/stats/base/dists/binomial/skewness","0wF":"@stdlib/stats-base-dists-binomial-skewness","0wG":"@stdlib/stats/base/dists/binomial/stdev","0wH":"@stdlib/stats-base-dists-binomial-stdev","0wI":"@stdlib/stats/base/dists/binomial/variance","0wJ":"@stdlib/stats-base-dists-binomial-variance","28S":"@stdlib/stats/base/dists/bradford/cdf","28T":"@stdlib/stats-base-dists-bradford-cdf","28U":"@stdlib/stats/base/dists/bradford/entropy","28V":"@stdlib/stats-base-dists-bradford-entropy","28W":"@stdlib/stats/base/dists/bradford/mean","28X":"@stdlib/stats-base-dists-bradford-mean","28Y":"@stdlib/stats/base/dists/bradford/median","28Z":"@stdlib/stats-base-dists-bradford-median","28a":"@stdlib/stats/base/dists/bradford/mode","28b":"@stdlib/stats-base-dists-bradford-mode","2U4":"@stdlib/stats/base/dists/bradford","2U5":"@stdlib/stats-base-dists-bradford","2Ao":"@stdlib/stats/base/dists/bradford/pdf","2Ap":"@stdlib/stats-base-dists-bradford-pdf","2Aq":"@stdlib/stats/base/dists/bradford/quantile","2Ar":"@stdlib/stats-base-dists-bradford-quantile","2PY":"@stdlib/stats/base/dists/bradford/skewness","2PZ":"@stdlib/stats-base-dists-bradford-skewness","28c":"@stdlib/stats/base/dists/bradford/stdev","28d":"@stdlib/stats-base-dists-bradford-stdev","28e":"@stdlib/stats/base/dists/bradford/variance","28f":"@stdlib/stats-base-dists-bradford-variance","0wK":"@stdlib/stats/base/dists/cauchy/cdf","0wL":"@stdlib/stats-base-dists-cauchy-cdf","0wM":"@stdlib/stats/base/dists/cauchy/ctor","0wN":"@stdlib/stats-base-dists-cauchy-ctor","0wO":"@stdlib/stats/base/dists/cauchy/entropy","0wP":"@stdlib/stats-base-dists-cauchy-entropy","0wQ":"@stdlib/stats/base/dists/cauchy/logcdf","0wR":"@stdlib/stats-base-dists-cauchy-logcdf","0wS":"@stdlib/stats/base/dists/cauchy/logpdf","0wT":"@stdlib/stats-base-dists-cauchy-logpdf","0wU":"@stdlib/stats/base/dists/cauchy/median","0wV":"@stdlib/stats-base-dists-cauchy-median","0wW":"@stdlib/stats/base/dists/cauchy/mode","0wX":"@stdlib/stats-base-dists-cauchy-mode","0wY":"@stdlib/stats/base/dists/cauchy","0wZ":"@stdlib/stats-base-dists-cauchy","0wa":"@stdlib/stats/base/dists/cauchy/pdf","0wb":"@stdlib/stats-base-dists-cauchy-pdf","0wc":"@stdlib/stats/base/dists/cauchy/quantile","0wd":"@stdlib/stats-base-dists-cauchy-quantile","0we":"@stdlib/stats/base/dists/chi/cdf","0wf":"@stdlib/stats-base-dists-chi-cdf","0wg":"@stdlib/stats/base/dists/chi/ctor","0wh":"@stdlib/stats-base-dists-chi-ctor","0wi":"@stdlib/stats/base/dists/chi/entropy","0wj":"@stdlib/stats-base-dists-chi-entropy","0wk":"@stdlib/stats/base/dists/chi/kurtosis","0wl":"@stdlib/stats-base-dists-chi-kurtosis","0wm":"@stdlib/stats/base/dists/chi/logpdf","0wn":"@stdlib/stats-base-dists-chi-logpdf","0wo":"@stdlib/stats/base/dists/chi/mean","0wp":"@stdlib/stats-base-dists-chi-mean","0wq":"@stdlib/stats/base/dists/chi/mode","0wr":"@stdlib/stats-base-dists-chi-mode","0ws":"@stdlib/stats/base/dists/chi","0wt":"@stdlib/stats-base-dists-chi","0wu":"@stdlib/stats/base/dists/chi/pdf","0wv":"@stdlib/stats-base-dists-chi-pdf","0ww":"@stdlib/stats/base/dists/chi/quantile","0wx":"@stdlib/stats-base-dists-chi-quantile","0wy":"@stdlib/stats/base/dists/chi/skewness","0wz":"@stdlib/stats-base-dists-chi-skewness","0x0":"@stdlib/stats/base/dists/chi/stdev","0x1":"@stdlib/stats-base-dists-chi-stdev","0x2":"@stdlib/stats/base/dists/chi/variance","0x3":"@stdlib/stats-base-dists-chi-variance","0x4":"@stdlib/stats/base/dists/chisquare/cdf","0x5":"@stdlib/stats-base-dists-chisquare-cdf","0x6":"@stdlib/stats/base/dists/chisquare/ctor","0x7":"@stdlib/stats-base-dists-chisquare-ctor","0x8":"@stdlib/stats/base/dists/chisquare/entropy","0x9":"@stdlib/stats-base-dists-chisquare-entropy","0xA":"@stdlib/stats/base/dists/chisquare/kurtosis","0xB":"@stdlib/stats-base-dists-chisquare-kurtosis","0xC":"@stdlib/stats/base/dists/chisquare/logpdf","0xD":"@stdlib/stats-base-dists-chisquare-logpdf","0xE":"@stdlib/stats/base/dists/chisquare/mean","0xF":"@stdlib/stats-base-dists-chisquare-mean","0xG":"@stdlib/stats/base/dists/chisquare/median","0xH":"@stdlib/stats-base-dists-chisquare-median","0xI":"@stdlib/stats/base/dists/chisquare/mgf","0xJ":"@stdlib/stats-base-dists-chisquare-mgf","0xK":"@stdlib/stats/base/dists/chisquare/mode","0xL":"@stdlib/stats-base-dists-chisquare-mode","0xM":"@stdlib/stats/base/dists/chisquare","0xN":"@stdlib/stats-base-dists-chisquare","0xO":"@stdlib/stats/base/dists/chisquare/pdf","0xP":"@stdlib/stats-base-dists-chisquare-pdf","0xQ":"@stdlib/stats/base/dists/chisquare/quantile","0xR":"@stdlib/stats-base-dists-chisquare-quantile","0xS":"@stdlib/stats/base/dists/chisquare/skewness","0xT":"@stdlib/stats-base-dists-chisquare-skewness","0xU":"@stdlib/stats/base/dists/chisquare/stdev","0xV":"@stdlib/stats-base-dists-chisquare-stdev","0xW":"@stdlib/stats/base/dists/chisquare/variance","0xX":"@stdlib/stats-base-dists-chisquare-variance","0xY":"@stdlib/stats/base/dists/cosine/cdf","0xZ":"@stdlib/stats-base-dists-cosine-cdf","0xa":"@stdlib/stats/base/dists/cosine/ctor","0xb":"@stdlib/stats-base-dists-cosine-ctor","0xc":"@stdlib/stats/base/dists/cosine/kurtosis","0xd":"@stdlib/stats-base-dists-cosine-kurtosis","0xe":"@stdlib/stats/base/dists/cosine/logcdf","0xf":"@stdlib/stats-base-dists-cosine-logcdf","0xg":"@stdlib/stats/base/dists/cosine/logpdf","0xh":"@stdlib/stats-base-dists-cosine-logpdf","0xi":"@stdlib/stats/base/dists/cosine/mean","0xj":"@stdlib/stats-base-dists-cosine-mean","0xk":"@stdlib/stats/base/dists/cosine/median","0xl":"@stdlib/stats-base-dists-cosine-median","0xm":"@stdlib/stats/base/dists/cosine/mgf","0xn":"@stdlib/stats-base-dists-cosine-mgf","0xo":"@stdlib/stats/base/dists/cosine/mode","0xp":"@stdlib/stats-base-dists-cosine-mode","0xq":"@stdlib/stats/base/dists/cosine","0xr":"@stdlib/stats-base-dists-cosine","0xs":"@stdlib/stats/base/dists/cosine/pdf","0xt":"@stdlib/stats-base-dists-cosine-pdf","0xu":"@stdlib/stats/base/dists/cosine/quantile","0xv":"@stdlib/stats-base-dists-cosine-quantile","0xw":"@stdlib/stats/base/dists/cosine/skewness","0xx":"@stdlib/stats-base-dists-cosine-skewness","0xy":"@stdlib/stats/base/dists/cosine/stdev","0xz":"@stdlib/stats-base-dists-cosine-stdev","0y0":"@stdlib/stats/base/dists/cosine/variance","0y1":"@stdlib/stats-base-dists-cosine-variance","0y2":"@stdlib/stats/base/dists/degenerate/cdf","0y3":"@stdlib/stats-base-dists-degenerate-cdf","0y4":"@stdlib/stats/base/dists/degenerate/ctor","0y5":"@stdlib/stats-base-dists-degenerate-ctor","0y6":"@stdlib/stats/base/dists/degenerate/entropy","0y7":"@stdlib/stats-base-dists-degenerate-entropy","0y8":"@stdlib/stats/base/dists/degenerate/logcdf","0y9":"@stdlib/stats-base-dists-degenerate-logcdf","0yA":"@stdlib/stats/base/dists/degenerate/logpdf","0yB":"@stdlib/stats-base-dists-degenerate-logpdf","0yC":"@stdlib/stats/base/dists/degenerate/logpmf","0yD":"@stdlib/stats-base-dists-degenerate-logpmf","0yE":"@stdlib/stats/base/dists/degenerate/mean","0yF":"@stdlib/stats-base-dists-degenerate-mean","0yG":"@stdlib/stats/base/dists/degenerate/median","0yH":"@stdlib/stats-base-dists-degenerate-median","0yI":"@stdlib/stats/base/dists/degenerate/mgf","0yJ":"@stdlib/stats-base-dists-degenerate-mgf","0yK":"@stdlib/stats/base/dists/degenerate/mode","0yL":"@stdlib/stats-base-dists-degenerate-mode","0yM":"@stdlib/stats/base/dists/degenerate","0yN":"@stdlib/stats-base-dists-degenerate","0yO":"@stdlib/stats/base/dists/degenerate/pdf","0yP":"@stdlib/stats-base-dists-degenerate-pdf","0yQ":"@stdlib/stats/base/dists/degenerate/pmf","0yR":"@stdlib/stats-base-dists-degenerate-pmf","0yS":"@stdlib/stats/base/dists/degenerate/quantile","0yT":"@stdlib/stats-base-dists-degenerate-quantile","0yU":"@stdlib/stats/base/dists/degenerate/stdev","0yV":"@stdlib/stats-base-dists-degenerate-stdev","0yW":"@stdlib/stats/base/dists/degenerate/variance","0yX":"@stdlib/stats-base-dists-degenerate-variance","0yY":"@stdlib/stats/base/dists/discrete-uniform/cdf","0yZ":"@stdlib/stats-base-dists-discrete-uniform-cdf","0ya":"@stdlib/stats/base/dists/discrete-uniform/ctor","0yb":"@stdlib/stats-base-dists-discrete-uniform-ctor","0yc":"@stdlib/stats/base/dists/discrete-uniform/entropy","0yd":"@stdlib/stats-base-dists-discrete-uniform-entropy","0ye":"@stdlib/stats/base/dists/discrete-uniform/kurtosis","0yf":"@stdlib/stats-base-dists-discrete-uniform-kurtosis","0yg":"@stdlib/stats/base/dists/discrete-uniform/logcdf","0yh":"@stdlib/stats-base-dists-discrete-uniform-logcdf","0yi":"@stdlib/stats/base/dists/discrete-uniform/logpmf","0yj":"@stdlib/stats-base-dists-discrete-uniform-logpmf","0yk":"@stdlib/stats/base/dists/discrete-uniform/mean","0yl":"@stdlib/stats-base-dists-discrete-uniform-mean","0ym":"@stdlib/stats/base/dists/discrete-uniform/median","0yn":"@stdlib/stats-base-dists-discrete-uniform-median","0yo":"@stdlib/stats/base/dists/discrete-uniform/mgf","0yp":"@stdlib/stats-base-dists-discrete-uniform-mgf","0yq":"@stdlib/stats/base/dists/discrete-uniform","0yr":"@stdlib/stats-base-dists-discrete-uniform","0ys":"@stdlib/stats/base/dists/discrete-uniform/pmf","0yt":"@stdlib/stats-base-dists-discrete-uniform-pmf","0yu":"@stdlib/stats/base/dists/discrete-uniform/quantile","0yv":"@stdlib/stats-base-dists-discrete-uniform-quantile","0yw":"@stdlib/stats/base/dists/discrete-uniform/skewness","0yx":"@stdlib/stats-base-dists-discrete-uniform-skewness","0yy":"@stdlib/stats/base/dists/discrete-uniform/stdev","0yz":"@stdlib/stats-base-dists-discrete-uniform-stdev","0z0":"@stdlib/stats/base/dists/discrete-uniform/variance","0z1":"@stdlib/stats-base-dists-discrete-uniform-variance","0z2":"@stdlib/stats/base/dists/erlang/cdf","0z3":"@stdlib/stats-base-dists-erlang-cdf","0z4":"@stdlib/stats/base/dists/erlang/ctor","0z5":"@stdlib/stats-base-dists-erlang-ctor","0z6":"@stdlib/stats/base/dists/erlang/entropy","0z7":"@stdlib/stats-base-dists-erlang-entropy","0z8":"@stdlib/stats/base/dists/erlang/kurtosis","0z9":"@stdlib/stats-base-dists-erlang-kurtosis","0zA":"@stdlib/stats/base/dists/erlang/logpdf","0zB":"@stdlib/stats-base-dists-erlang-logpdf","0zC":"@stdlib/stats/base/dists/erlang/mean","0zD":"@stdlib/stats-base-dists-erlang-mean","0zE":"@stdlib/stats/base/dists/erlang/mgf","0zF":"@stdlib/stats-base-dists-erlang-mgf","0zG":"@stdlib/stats/base/dists/erlang/mode","0zH":"@stdlib/stats-base-dists-erlang-mode","0zI":"@stdlib/stats/base/dists/erlang","0zJ":"@stdlib/stats-base-dists-erlang","0zK":"@stdlib/stats/base/dists/erlang/pdf","0zL":"@stdlib/stats-base-dists-erlang-pdf","0zM":"@stdlib/stats/base/dists/erlang/quantile","0zN":"@stdlib/stats-base-dists-erlang-quantile","0zO":"@stdlib/stats/base/dists/erlang/skewness","0zP":"@stdlib/stats-base-dists-erlang-skewness","0zQ":"@stdlib/stats/base/dists/erlang/stdev","0zR":"@stdlib/stats-base-dists-erlang-stdev","0zS":"@stdlib/stats/base/dists/erlang/variance","0zT":"@stdlib/stats-base-dists-erlang-variance","0zU":"@stdlib/stats/base/dists/exponential/cdf","0zV":"@stdlib/stats-base-dists-exponential-cdf","0zW":"@stdlib/stats/base/dists/exponential/ctor","0zX":"@stdlib/stats-base-dists-exponential-ctor","0zY":"@stdlib/stats/base/dists/exponential/entropy","0zZ":"@stdlib/stats-base-dists-exponential-entropy","0za":"@stdlib/stats/base/dists/exponential/kurtosis","0zb":"@stdlib/stats-base-dists-exponential-kurtosis","0zc":"@stdlib/stats/base/dists/exponential/logcdf","0zd":"@stdlib/stats-base-dists-exponential-logcdf","0ze":"@stdlib/stats/base/dists/exponential/logpdf","0zf":"@stdlib/stats-base-dists-exponential-logpdf","0zg":"@stdlib/stats/base/dists/exponential/mean","0zh":"@stdlib/stats-base-dists-exponential-mean","0zi":"@stdlib/stats/base/dists/exponential/median","0zj":"@stdlib/stats-base-dists-exponential-median","0zk":"@stdlib/stats/base/dists/exponential/mgf","0zl":"@stdlib/stats-base-dists-exponential-mgf","0zm":"@stdlib/stats/base/dists/exponential/mode","0zn":"@stdlib/stats-base-dists-exponential-mode","0zo":"@stdlib/stats/base/dists/exponential","0zp":"@stdlib/stats-base-dists-exponential","0zq":"@stdlib/stats/base/dists/exponential/pdf","0zr":"@stdlib/stats-base-dists-exponential-pdf","0zs":"@stdlib/stats/base/dists/exponential/quantile","0zt":"@stdlib/stats-base-dists-exponential-quantile","0zu":"@stdlib/stats/base/dists/exponential/skewness","0zv":"@stdlib/stats-base-dists-exponential-skewness","0zw":"@stdlib/stats/base/dists/exponential/stdev","0zx":"@stdlib/stats-base-dists-exponential-stdev","0zy":"@stdlib/stats/base/dists/exponential/variance","0zz":"@stdlib/stats-base-dists-exponential-variance","10A":"@stdlib/stats/base/dists/f/mode","10B":"@stdlib/stats-base-dists-f-mode","10C":"@stdlib/stats/base/dists/f","10D":"@stdlib/stats-base-dists-f","10E":"@stdlib/stats/base/dists/f/pdf","10F":"@stdlib/stats-base-dists-f-pdf","10G":"@stdlib/stats/base/dists/f/quantile","10H":"@stdlib/stats-base-dists-f-quantile","10I":"@stdlib/stats/base/dists/f/skewness","10J":"@stdlib/stats-base-dists-f-skewness","10K":"@stdlib/stats/base/dists/f/stdev","10L":"@stdlib/stats-base-dists-f-stdev","10M":"@stdlib/stats/base/dists/f/variance","10N":"@stdlib/stats-base-dists-f-variance","10O":"@stdlib/stats/base/dists/frechet/cdf","10P":"@stdlib/stats-base-dists-frechet-cdf","10Q":"@stdlib/stats/base/dists/frechet/ctor","10R":"@stdlib/stats-base-dists-frechet-ctor","10S":"@stdlib/stats/base/dists/frechet/entropy","10T":"@stdlib/stats-base-dists-frechet-entropy","10U":"@stdlib/stats/base/dists/frechet/kurtosis","10V":"@stdlib/stats-base-dists-frechet-kurtosis","10W":"@stdlib/stats/base/dists/frechet/logcdf","10X":"@stdlib/stats-base-dists-frechet-logcdf","10Y":"@stdlib/stats/base/dists/frechet/logpdf","10Z":"@stdlib/stats-base-dists-frechet-logpdf","10a":"@stdlib/stats/base/dists/frechet/mean","10b":"@stdlib/stats-base-dists-frechet-mean","10c":"@stdlib/stats/base/dists/frechet/median","10d":"@stdlib/stats-base-dists-frechet-median","10e":"@stdlib/stats/base/dists/frechet/mode","10f":"@stdlib/stats-base-dists-frechet-mode","10g":"@stdlib/stats/base/dists/frechet","10h":"@stdlib/stats-base-dists-frechet","10i":"@stdlib/stats/base/dists/frechet/pdf","10j":"@stdlib/stats-base-dists-frechet-pdf","10k":"@stdlib/stats/base/dists/frechet/quantile","10l":"@stdlib/stats-base-dists-frechet-quantile","10m":"@stdlib/stats/base/dists/frechet/skewness","10n":"@stdlib/stats-base-dists-frechet-skewness","10o":"@stdlib/stats/base/dists/frechet/stdev","10p":"@stdlib/stats-base-dists-frechet-stdev","10q":"@stdlib/stats/base/dists/frechet/variance","10r":"@stdlib/stats-base-dists-frechet-variance","10s":"@stdlib/stats/base/dists/gamma/cdf","10t":"@stdlib/stats-base-dists-gamma-cdf","10u":"@stdlib/stats/base/dists/gamma/ctor","10v":"@stdlib/stats-base-dists-gamma-ctor","10w":"@stdlib/stats/base/dists/gamma/entropy","10x":"@stdlib/stats-base-dists-gamma-entropy","10y":"@stdlib/stats/base/dists/gamma/kurtosis","10z":"@stdlib/stats-base-dists-gamma-kurtosis","11A":"@stdlib/stats/base/dists/gamma","11B":"@stdlib/stats-base-dists-gamma","11C":"@stdlib/stats/base/dists/gamma/pdf","11D":"@stdlib/stats-base-dists-gamma-pdf","11E":"@stdlib/stats/base/dists/gamma/quantile","11F":"@stdlib/stats-base-dists-gamma-quantile","11G":"@stdlib/stats/base/dists/gamma/skewness","11H":"@stdlib/stats-base-dists-gamma-skewness","11I":"@stdlib/stats/base/dists/gamma/stdev","11J":"@stdlib/stats-base-dists-gamma-stdev","11K":"@stdlib/stats/base/dists/gamma/variance","11L":"@stdlib/stats-base-dists-gamma-variance","11M":"@stdlib/stats/base/dists/geometric/cdf","11N":"@stdlib/stats-base-dists-geometric-cdf","11O":"@stdlib/stats/base/dists/geometric/ctor","11P":"@stdlib/stats-base-dists-geometric-ctor","11Q":"@stdlib/stats/base/dists/geometric/entropy","11R":"@stdlib/stats-base-dists-geometric-entropy","11S":"@stdlib/stats/base/dists/geometric/kurtosis","11T":"@stdlib/stats-base-dists-geometric-kurtosis","11U":"@stdlib/stats/base/dists/geometric/logcdf","11V":"@stdlib/stats-base-dists-geometric-logcdf","11W":"@stdlib/stats/base/dists/geometric/logpmf","11X":"@stdlib/stats-base-dists-geometric-logpmf","11Y":"@stdlib/stats/base/dists/geometric/mean","11Z":"@stdlib/stats-base-dists-geometric-mean","11a":"@stdlib/stats/base/dists/geometric/median","11b":"@stdlib/stats-base-dists-geometric-median","11c":"@stdlib/stats/base/dists/geometric/mgf","11d":"@stdlib/stats-base-dists-geometric-mgf","11e":"@stdlib/stats/base/dists/geometric/mode","11f":"@stdlib/stats-base-dists-geometric-mode","11g":"@stdlib/stats/base/dists/geometric","11h":"@stdlib/stats-base-dists-geometric","11i":"@stdlib/stats/base/dists/geometric/pmf","11j":"@stdlib/stats-base-dists-geometric-pmf","11k":"@stdlib/stats/base/dists/geometric/quantile","11l":"@stdlib/stats-base-dists-geometric-quantile","11m":"@stdlib/stats/base/dists/geometric/skewness","11n":"@stdlib/stats-base-dists-geometric-skewness","11o":"@stdlib/stats/base/dists/geometric/stdev","11p":"@stdlib/stats-base-dists-geometric-stdev","11q":"@stdlib/stats/base/dists/geometric/variance","11r":"@stdlib/stats-base-dists-geometric-variance","11s":"@stdlib/stats/base/dists/gumbel/cdf","11t":"@stdlib/stats-base-dists-gumbel-cdf","11u":"@stdlib/stats/base/dists/gumbel/ctor","11v":"@stdlib/stats-base-dists-gumbel-ctor","11w":"@stdlib/stats/base/dists/gumbel/entropy","11x":"@stdlib/stats-base-dists-gumbel-entropy","11y":"@stdlib/stats/base/dists/gumbel/kurtosis","11z":"@stdlib/stats-base-dists-gumbel-kurtosis","12A":"@stdlib/stats/base/dists/gumbel/mode","12B":"@stdlib/stats-base-dists-gumbel-mode","12C":"@stdlib/stats/base/dists/gumbel","12D":"@stdlib/stats-base-dists-gumbel","12E":"@stdlib/stats/base/dists/gumbel/pdf","12F":"@stdlib/stats-base-dists-gumbel-pdf","12G":"@stdlib/stats/base/dists/gumbel/quantile","12H":"@stdlib/stats-base-dists-gumbel-quantile","12I":"@stdlib/stats/base/dists/gumbel/skewness","12J":"@stdlib/stats-base-dists-gumbel-skewness","12K":"@stdlib/stats/base/dists/gumbel/stdev","12L":"@stdlib/stats-base-dists-gumbel-stdev","12M":"@stdlib/stats/base/dists/gumbel/variance","12N":"@stdlib/stats-base-dists-gumbel-variance","2qu":"@stdlib/stats/base/dists/halfnormal/entropy","2qv":"@stdlib/stats-base-dists-halfnormal-entropy","2qw":"@stdlib/stats/base/dists/halfnormal/kurtosis","2qx":"@stdlib/stats-base-dists-halfnormal-kurtosis","2qy":"@stdlib/stats/base/dists/halfnormal/logpdf","2qz":"@stdlib/stats-base-dists-halfnormal-logpdf","2r0":"@stdlib/stats/base/dists/halfnormal/mean","2r1":"@stdlib/stats-base-dists-halfnormal-mean","2r2":"@stdlib/stats/base/dists/halfnormal/mode","2r3":"@stdlib/stats-base-dists-halfnormal-mode","2r4":"@stdlib/stats/base/dists/halfnormal/stdev","2r5":"@stdlib/stats-base-dists-halfnormal-stdev","12O":"@stdlib/stats/base/dists/hypergeometric/cdf","12P":"@stdlib/stats-base-dists-hypergeometric-cdf","12Q":"@stdlib/stats/base/dists/hypergeometric/ctor","12R":"@stdlib/stats-base-dists-hypergeometric-ctor","12S":"@stdlib/stats/base/dists/hypergeometric/kurtosis","12T":"@stdlib/stats-base-dists-hypergeometric-kurtosis","12U":"@stdlib/stats/base/dists/hypergeometric/logpmf","12V":"@stdlib/stats-base-dists-hypergeometric-logpmf","12W":"@stdlib/stats/base/dists/hypergeometric/mean","12X":"@stdlib/stats-base-dists-hypergeometric-mean","12Y":"@stdlib/stats/base/dists/hypergeometric/mode","12Z":"@stdlib/stats-base-dists-hypergeometric-mode","12a":"@stdlib/stats/base/dists/hypergeometric","12b":"@stdlib/stats-base-dists-hypergeometric","12c":"@stdlib/stats/base/dists/hypergeometric/pmf","12d":"@stdlib/stats-base-dists-hypergeometric-pmf","12e":"@stdlib/stats/base/dists/hypergeometric/quantile","12f":"@stdlib/stats-base-dists-hypergeometric-quantile","12g":"@stdlib/stats/base/dists/hypergeometric/skewness","12h":"@stdlib/stats-base-dists-hypergeometric-skewness","12i":"@stdlib/stats/base/dists/hypergeometric/stdev","12j":"@stdlib/stats-base-dists-hypergeometric-stdev","12k":"@stdlib/stats/base/dists/hypergeometric/variance","12l":"@stdlib/stats-base-dists-hypergeometric-variance","12m":"@stdlib/stats/base/dists/invgamma/cdf","12n":"@stdlib/stats-base-dists-invgamma-cdf","12o":"@stdlib/stats/base/dists/invgamma/ctor","12p":"@stdlib/stats-base-dists-invgamma-ctor","12q":"@stdlib/stats/base/dists/invgamma/entropy","12r":"@stdlib/stats-base-dists-invgamma-entropy","12s":"@stdlib/stats/base/dists/invgamma/kurtosis","12t":"@stdlib/stats-base-dists-invgamma-kurtosis","12u":"@stdlib/stats/base/dists/invgamma/logpdf","12v":"@stdlib/stats-base-dists-invgamma-logpdf","12w":"@stdlib/stats/base/dists/invgamma/mean","12x":"@stdlib/stats-base-dists-invgamma-mean","12y":"@stdlib/stats/base/dists/invgamma/mode","12z":"@stdlib/stats-base-dists-invgamma-mode","13A":"@stdlib/stats/base/dists/invgamma/variance","13B":"@stdlib/stats-base-dists-invgamma-variance","13C":"@stdlib/stats/base/dists/kumaraswamy/cdf","13D":"@stdlib/stats-base-dists-kumaraswamy-cdf","13E":"@stdlib/stats/base/dists/kumaraswamy/ctor","13F":"@stdlib/stats-base-dists-kumaraswamy-ctor","13G":"@stdlib/stats/base/dists/kumaraswamy/kurtosis","13H":"@stdlib/stats-base-dists-kumaraswamy-kurtosis","13I":"@stdlib/stats/base/dists/kumaraswamy/logcdf","13J":"@stdlib/stats-base-dists-kumaraswamy-logcdf","13K":"@stdlib/stats/base/dists/kumaraswamy/logpdf","13L":"@stdlib/stats-base-dists-kumaraswamy-logpdf","13M":"@stdlib/stats/base/dists/kumaraswamy/mean","13N":"@stdlib/stats-base-dists-kumaraswamy-mean","13O":"@stdlib/stats/base/dists/kumaraswamy/median","13P":"@stdlib/stats-base-dists-kumaraswamy-median","13Q":"@stdlib/stats/base/dists/kumaraswamy/mode","13R":"@stdlib/stats-base-dists-kumaraswamy-mode","13S":"@stdlib/stats/base/dists/kumaraswamy","13T":"@stdlib/stats-base-dists-kumaraswamy","13U":"@stdlib/stats/base/dists/kumaraswamy/pdf","13V":"@stdlib/stats-base-dists-kumaraswamy-pdf","13W":"@stdlib/stats/base/dists/kumaraswamy/quantile","13X":"@stdlib/stats-base-dists-kumaraswamy-quantile","13Y":"@stdlib/stats/base/dists/kumaraswamy/skewness","13Z":"@stdlib/stats-base-dists-kumaraswamy-skewness","13a":"@stdlib/stats/base/dists/kumaraswamy/stdev","13b":"@stdlib/stats-base-dists-kumaraswamy-stdev","13c":"@stdlib/stats/base/dists/kumaraswamy/variance","13d":"@stdlib/stats-base-dists-kumaraswamy-variance","13e":"@stdlib/stats/base/dists/laplace/cdf","13f":"@stdlib/stats-base-dists-laplace-cdf","13g":"@stdlib/stats/base/dists/laplace/ctor","13h":"@stdlib/stats-base-dists-laplace-ctor","13i":"@stdlib/stats/base/dists/laplace/entropy","13j":"@stdlib/stats-base-dists-laplace-entropy","13k":"@stdlib/stats/base/dists/laplace/kurtosis","13l":"@stdlib/stats-base-dists-laplace-kurtosis","13m":"@stdlib/stats/base/dists/laplace/logcdf","13n":"@stdlib/stats-base-dists-laplace-logcdf","13o":"@stdlib/stats/base/dists/laplace/logpdf","13p":"@stdlib/stats-base-dists-laplace-logpdf","13q":"@stdlib/stats/base/dists/laplace/mean","13r":"@stdlib/stats-base-dists-laplace-mean","13s":"@stdlib/stats/base/dists/laplace/median","13t":"@stdlib/stats-base-dists-laplace-median","13u":"@stdlib/stats/base/dists/laplace/mgf","13v":"@stdlib/stats-base-dists-laplace-mgf","13w":"@stdlib/stats/base/dists/laplace/mode","13x":"@stdlib/stats-base-dists-laplace-mode","13y":"@stdlib/stats/base/dists/laplace","13z":"@stdlib/stats-base-dists-laplace","14A":"@stdlib/stats/base/dists/levy/cdf","14B":"@stdlib/stats-base-dists-levy-cdf","14C":"@stdlib/stats/base/dists/levy/ctor","14D":"@stdlib/stats-base-dists-levy-ctor","14E":"@stdlib/stats/base/dists/levy/entropy","14F":"@stdlib/stats-base-dists-levy-entropy","14G":"@stdlib/stats/base/dists/levy/logcdf","14H":"@stdlib/stats-base-dists-levy-logcdf","14I":"@stdlib/stats/base/dists/levy/logpdf","14J":"@stdlib/stats-base-dists-levy-logpdf","14K":"@stdlib/stats/base/dists/levy/mean","14L":"@stdlib/stats-base-dists-levy-mean","14M":"@stdlib/stats/base/dists/levy/median","14N":"@stdlib/stats-base-dists-levy-median","14O":"@stdlib/stats/base/dists/levy/mode","14P":"@stdlib/stats-base-dists-levy-mode","14Q":"@stdlib/stats/base/dists/levy","14R":"@stdlib/stats-base-dists-levy","14S":"@stdlib/stats/base/dists/levy/pdf","14T":"@stdlib/stats-base-dists-levy-pdf","14U":"@stdlib/stats/base/dists/levy/quantile","14V":"@stdlib/stats-base-dists-levy-quantile","14W":"@stdlib/stats/base/dists/levy/stdev","14X":"@stdlib/stats-base-dists-levy-stdev","14Y":"@stdlib/stats/base/dists/levy/variance","14Z":"@stdlib/stats-base-dists-levy-variance","32E":"@stdlib/stats/base/dists/log-logistic/cdf","32F":"@stdlib/stats-base-dists-log-logistic-cdf","2zM":"@stdlib/stats/base/dists/log-logistic/mean","2zN":"@stdlib/stats-base-dists-log-logistic-mean","2zO":"@stdlib/stats/base/dists/log-logistic/median","2zP":"@stdlib/stats-base-dists-log-logistic-median","2zQ":"@stdlib/stats/base/dists/log-logistic/mode","2zR":"@stdlib/stats-base-dists-log-logistic-mode","2zS":"@stdlib/stats/base/dists/log-logistic/pdf","2zT":"@stdlib/stats-base-dists-log-logistic-pdf","32G":"@stdlib/stats/base/dists/log-logistic/quantile","32H":"@stdlib/stats-base-dists-log-logistic-quantile","14a":"@stdlib/stats/base/dists/logistic/cdf","14b":"@stdlib/stats-base-dists-logistic-cdf","14c":"@stdlib/stats/base/dists/logistic/ctor","14d":"@stdlib/stats-base-dists-logistic-ctor","14e":"@stdlib/stats/base/dists/logistic/entropy","14f":"@stdlib/stats-base-dists-logistic-entropy","14g":"@stdlib/stats/base/dists/logistic/kurtosis","14h":"@stdlib/stats-base-dists-logistic-kurtosis","14i":"@stdlib/stats/base/dists/logistic/logcdf","14j":"@stdlib/stats-base-dists-logistic-logcdf","14k":"@stdlib/stats/base/dists/logistic/logpdf","14l":"@stdlib/stats-base-dists-logistic-logpdf","14m":"@stdlib/stats/base/dists/logistic/mean","14n":"@stdlib/stats-base-dists-logistic-mean","14o":"@stdlib/stats/base/dists/logistic/median","14p":"@stdlib/stats-base-dists-logistic-median","14q":"@stdlib/stats/base/dists/logistic/mgf","14r":"@stdlib/stats-base-dists-logistic-mgf","14s":"@stdlib/stats/base/dists/logistic/mode","14t":"@stdlib/stats-base-dists-logistic-mode","14u":"@stdlib/stats/base/dists/logistic","14v":"@stdlib/stats-base-dists-logistic","14w":"@stdlib/stats/base/dists/logistic/pdf","14x":"@stdlib/stats-base-dists-logistic-pdf","14y":"@stdlib/stats/base/dists/logistic/quantile","14z":"@stdlib/stats-base-dists-logistic-quantile","15A":"@stdlib/stats/base/dists/lognormal/entropy","15B":"@stdlib/stats-base-dists-lognormal-entropy","15C":"@stdlib/stats/base/dists/lognormal/kurtosis","15D":"@stdlib/stats-base-dists-lognormal-kurtosis","1fA":"@stdlib/stats/base/dists/lognormal/logcdf","1fB":"@stdlib/stats-base-dists-lognormal-logcdf","15E":"@stdlib/stats/base/dists/lognormal/logpdf","15F":"@stdlib/stats-base-dists-lognormal-logpdf","15G":"@stdlib/stats/base/dists/lognormal/mean","15H":"@stdlib/stats-base-dists-lognormal-mean","15I":"@stdlib/stats/base/dists/lognormal/median","15J":"@stdlib/stats-base-dists-lognormal-median","15K":"@stdlib/stats/base/dists/lognormal/mode","15L":"@stdlib/stats-base-dists-lognormal-mode","15M":"@stdlib/stats/base/dists/lognormal","15N":"@stdlib/stats-base-dists-lognormal","15O":"@stdlib/stats/base/dists/lognormal/pdf","15P":"@stdlib/stats-base-dists-lognormal-pdf","15Q":"@stdlib/stats/base/dists/lognormal/quantile","15R":"@stdlib/stats-base-dists-lognormal-quantile","15S":"@stdlib/stats/base/dists/lognormal/skewness","15T":"@stdlib/stats-base-dists-lognormal-skewness","15U":"@stdlib/stats/base/dists/lognormal/stdev","15V":"@stdlib/stats-base-dists-lognormal-stdev","15W":"@stdlib/stats/base/dists/lognormal/variance","15X":"@stdlib/stats-base-dists-lognormal-variance","15Y":"@stdlib/stats/base/dists/negative-binomial/cdf","15Z":"@stdlib/stats-base-dists-negative-binomial-cdf","15a":"@stdlib/stats/base/dists/negative-binomial/ctor","15b":"@stdlib/stats-base-dists-negative-binomial-ctor","15c":"@stdlib/stats/base/dists/negative-binomial/kurtosis","15d":"@stdlib/stats-base-dists-negative-binomial-kurtosis","15e":"@stdlib/stats/base/dists/negative-binomial/logpmf","15f":"@stdlib/stats-base-dists-negative-binomial-logpmf","15g":"@stdlib/stats/base/dists/negative-binomial/mean","15h":"@stdlib/stats-base-dists-negative-binomial-mean","15i":"@stdlib/stats/base/dists/negative-binomial/mgf","15j":"@stdlib/stats-base-dists-negative-binomial-mgf","15k":"@stdlib/stats/base/dists/negative-binomial/mode","15l":"@stdlib/stats-base-dists-negative-binomial-mode","15m":"@stdlib/stats/base/dists/negative-binomial","15n":"@stdlib/stats-base-dists-negative-binomial","15o":"@stdlib/stats/base/dists/negative-binomial/pmf","15p":"@stdlib/stats-base-dists-negative-binomial-pmf","15q":"@stdlib/stats/base/dists/negative-binomial/quantile","15r":"@stdlib/stats-base-dists-negative-binomial-quantile","15s":"@stdlib/stats/base/dists/negative-binomial/skewness","15t":"@stdlib/stats-base-dists-negative-binomial-skewness","15u":"@stdlib/stats/base/dists/negative-binomial/stdev","15v":"@stdlib/stats-base-dists-negative-binomial-stdev","15w":"@stdlib/stats/base/dists/negative-binomial/variance","15x":"@stdlib/stats-base-dists-negative-binomial-variance","15y":"@stdlib/stats/base/dists/normal/cdf","15z":"@stdlib/stats-base-dists-normal-cdf","1fC":"@stdlib/stats/base/dists/normal/logcdf","1fD":"@stdlib/stats-base-dists-normal-logcdf","16A":"@stdlib/stats/base/dists/normal/median","16B":"@stdlib/stats-base-dists-normal-median","16C":"@stdlib/stats/base/dists/normal/mgf","16D":"@stdlib/stats-base-dists-normal-mgf","16E":"@stdlib/stats/base/dists/normal/mode","16F":"@stdlib/stats-base-dists-normal-mode","16G":"@stdlib/stats/base/dists/normal","16H":"@stdlib/stats-base-dists-normal","16I":"@stdlib/stats/base/dists/normal/pdf","16J":"@stdlib/stats-base-dists-normal-pdf","16K":"@stdlib/stats/base/dists/normal/quantile","16L":"@stdlib/stats-base-dists-normal-quantile","16M":"@stdlib/stats/base/dists/normal/skewness","16N":"@stdlib/stats-base-dists-normal-skewness","16O":"@stdlib/stats/base/dists/normal/stdev","16P":"@stdlib/stats-base-dists-normal-stdev","16Q":"@stdlib/stats/base/dists/normal/variance","16R":"@stdlib/stats-base-dists-normal-variance","16S":"@stdlib/stats/base/dists","16T":"@stdlib/stats-base-dists","16U":"@stdlib/stats/base/dists/pareto-type1/cdf","16V":"@stdlib/stats-base-dists-pareto-type1-cdf","16W":"@stdlib/stats/base/dists/pareto-type1/ctor","16X":"@stdlib/stats-base-dists-pareto-type1-ctor","16Y":"@stdlib/stats/base/dists/pareto-type1/entropy","16Z":"@stdlib/stats-base-dists-pareto-type1-entropy","16a":"@stdlib/stats/base/dists/pareto-type1/kurtosis","16b":"@stdlib/stats-base-dists-pareto-type1-kurtosis","16c":"@stdlib/stats/base/dists/pareto-type1/logcdf","16d":"@stdlib/stats-base-dists-pareto-type1-logcdf","16e":"@stdlib/stats/base/dists/pareto-type1/logpdf","16f":"@stdlib/stats-base-dists-pareto-type1-logpdf","16g":"@stdlib/stats/base/dists/pareto-type1/mean","16h":"@stdlib/stats-base-dists-pareto-type1-mean","16i":"@stdlib/stats/base/dists/pareto-type1/median","16j":"@stdlib/stats-base-dists-pareto-type1-median","16k":"@stdlib/stats/base/dists/pareto-type1/mode","16l":"@stdlib/stats-base-dists-pareto-type1-mode","16m":"@stdlib/stats/base/dists/pareto-type1","16n":"@stdlib/stats-base-dists-pareto-type1","16o":"@stdlib/stats/base/dists/pareto-type1/pdf","16p":"@stdlib/stats-base-dists-pareto-type1-pdf","16q":"@stdlib/stats/base/dists/pareto-type1/quantile","16r":"@stdlib/stats-base-dists-pareto-type1-quantile","16s":"@stdlib/stats/base/dists/pareto-type1/skewness","16t":"@stdlib/stats-base-dists-pareto-type1-skewness","16u":"@stdlib/stats/base/dists/pareto-type1/stdev","16v":"@stdlib/stats-base-dists-pareto-type1-stdev","16w":"@stdlib/stats/base/dists/pareto-type1/variance","16x":"@stdlib/stats-base-dists-pareto-type1-variance","25A":"@stdlib/stats/base/dists/planck/cdf","25B":"@stdlib/stats-base-dists-planck-cdf","25C":"@stdlib/stats/base/dists/planck/entropy","25D":"@stdlib/stats-base-dists-planck-entropy","25E":"@stdlib/stats/base/dists/planck/kurtosis","25F":"@stdlib/stats-base-dists-planck-kurtosis","25G":"@stdlib/stats/base/dists/planck/logcdf","25H":"@stdlib/stats-base-dists-planck-logcdf","25I":"@stdlib/stats/base/dists/planck/logpmf","25J":"@stdlib/stats-base-dists-planck-logpmf","25K":"@stdlib/stats/base/dists/planck/mean","25L":"@stdlib/stats-base-dists-planck-mean","25M":"@stdlib/stats/base/dists/planck/median","25N":"@stdlib/stats-base-dists-planck-median","28g":"@stdlib/stats/base/dists/planck/mgf","28h":"@stdlib/stats-base-dists-planck-mgf","25O":"@stdlib/stats/base/dists/planck/mode","25P":"@stdlib/stats-base-dists-planck-mode","2U6":"@stdlib/stats/base/dists/planck","2U7":"@stdlib/stats-base-dists-planck","25Q":"@stdlib/stats/base/dists/planck/pmf","25R":"@stdlib/stats-base-dists-planck-pmf","25S":"@stdlib/stats/base/dists/planck/quantile","25T":"@stdlib/stats-base-dists-planck-quantile","25U":"@stdlib/stats/base/dists/planck/skewness","25V":"@stdlib/stats-base-dists-planck-skewness","25W":"@stdlib/stats/base/dists/planck/stdev","25X":"@stdlib/stats-base-dists-planck-stdev","25Y":"@stdlib/stats/base/dists/planck/variance","25Z":"@stdlib/stats-base-dists-planck-variance","16y":"@stdlib/stats/base/dists/poisson/cdf","16z":"@stdlib/stats-base-dists-poisson-cdf","17A":"@stdlib/stats/base/dists/poisson/median","17B":"@stdlib/stats-base-dists-poisson-median","17C":"@stdlib/stats/base/dists/poisson/mgf","17D":"@stdlib/stats-base-dists-poisson-mgf","17E":"@stdlib/stats/base/dists/poisson/mode","17F":"@stdlib/stats-base-dists-poisson-mode","17G":"@stdlib/stats/base/dists/poisson","17H":"@stdlib/stats-base-dists-poisson","17I":"@stdlib/stats/base/dists/poisson/pmf","17J":"@stdlib/stats-base-dists-poisson-pmf","17K":"@stdlib/stats/base/dists/poisson/quantile","17L":"@stdlib/stats-base-dists-poisson-quantile","17M":"@stdlib/stats/base/dists/poisson/skewness","17N":"@stdlib/stats-base-dists-poisson-skewness","17O":"@stdlib/stats/base/dists/poisson/stdev","17P":"@stdlib/stats-base-dists-poisson-stdev","17Q":"@stdlib/stats/base/dists/poisson/variance","17R":"@stdlib/stats-base-dists-poisson-variance","17S":"@stdlib/stats/base/dists/rayleigh/cdf","17T":"@stdlib/stats-base-dists-rayleigh-cdf","17U":"@stdlib/stats/base/dists/rayleigh/ctor","17V":"@stdlib/stats-base-dists-rayleigh-ctor","17W":"@stdlib/stats/base/dists/rayleigh/entropy","17X":"@stdlib/stats-base-dists-rayleigh-entropy","17Y":"@stdlib/stats/base/dists/rayleigh/kurtosis","17Z":"@stdlib/stats-base-dists-rayleigh-kurtosis","17a":"@stdlib/stats/base/dists/rayleigh/logcdf","17b":"@stdlib/stats-base-dists-rayleigh-logcdf","17c":"@stdlib/stats/base/dists/rayleigh/logpdf","17d":"@stdlib/stats-base-dists-rayleigh-logpdf","17e":"@stdlib/stats/base/dists/rayleigh/mean","17f":"@stdlib/stats-base-dists-rayleigh-mean","17g":"@stdlib/stats/base/dists/rayleigh/median","17h":"@stdlib/stats-base-dists-rayleigh-median","17i":"@stdlib/stats/base/dists/rayleigh/mgf","17j":"@stdlib/stats-base-dists-rayleigh-mgf","17k":"@stdlib/stats/base/dists/rayleigh/mode","17l":"@stdlib/stats-base-dists-rayleigh-mode","17m":"@stdlib/stats/base/dists/rayleigh","17n":"@stdlib/stats-base-dists-rayleigh","17o":"@stdlib/stats/base/dists/rayleigh/pdf","17p":"@stdlib/stats-base-dists-rayleigh-pdf","17q":"@stdlib/stats/base/dists/rayleigh/quantile","17r":"@stdlib/stats-base-dists-rayleigh-quantile","17s":"@stdlib/stats/base/dists/rayleigh/skewness","17t":"@stdlib/stats-base-dists-rayleigh-skewness","17u":"@stdlib/stats/base/dists/rayleigh/stdev","17v":"@stdlib/stats-base-dists-rayleigh-stdev","17w":"@stdlib/stats/base/dists/rayleigh/variance","17x":"@stdlib/stats-base-dists-rayleigh-variance","17y":"@stdlib/stats/base/dists/signrank/cdf","17z":"@stdlib/stats-base-dists-signrank-cdf","1fE":"@stdlib/stats/base/dists/studentized-range/cdf","1fF":"@stdlib/stats-base-dists-studentized-range-cdf","1fG":"@stdlib/stats/base/dists/studentized-range","1fH":"@stdlib/stats-base-dists-studentized-range","1fI":"@stdlib/stats/base/dists/studentized-range/quantile","1fJ":"@stdlib/stats-base-dists-studentized-range-quantile","18A":"@stdlib/stats/base/dists/t/entropy","18B":"@stdlib/stats-base-dists-t-entropy","18C":"@stdlib/stats/base/dists/t/kurtosis","18D":"@stdlib/stats-base-dists-t-kurtosis","18E":"@stdlib/stats/base/dists/t/logcdf","18F":"@stdlib/stats-base-dists-t-logcdf","18G":"@stdlib/stats/base/dists/t/logpdf","18H":"@stdlib/stats-base-dists-t-logpdf","18I":"@stdlib/stats/base/dists/t/mean","18J":"@stdlib/stats-base-dists-t-mean","18K":"@stdlib/stats/base/dists/t/median","18L":"@stdlib/stats-base-dists-t-median","18M":"@stdlib/stats/base/dists/t/mode","18N":"@stdlib/stats-base-dists-t-mode","18O":"@stdlib/stats/base/dists/t","18P":"@stdlib/stats-base-dists-t","18Q":"@stdlib/stats/base/dists/t/pdf","18R":"@stdlib/stats-base-dists-t-pdf","18S":"@stdlib/stats/base/dists/t/quantile","18T":"@stdlib/stats-base-dists-t-quantile","18U":"@stdlib/stats/base/dists/t/skewness","18V":"@stdlib/stats-base-dists-t-skewness","18W":"@stdlib/stats/base/dists/t/stdev","18X":"@stdlib/stats-base-dists-t-stdev","18Y":"@stdlib/stats/base/dists/t/variance","18Z":"@stdlib/stats-base-dists-t-variance","18a":"@stdlib/stats/base/dists/triangular/cdf","18b":"@stdlib/stats-base-dists-triangular-cdf","18c":"@stdlib/stats/base/dists/triangular/ctor","18d":"@stdlib/stats-base-dists-triangular-ctor","18e":"@stdlib/stats/base/dists/triangular/entropy","18f":"@stdlib/stats-base-dists-triangular-entropy","18g":"@stdlib/stats/base/dists/triangular/kurtosis","18h":"@stdlib/stats-base-dists-triangular-kurtosis","18i":"@stdlib/stats/base/dists/triangular/logcdf","18j":"@stdlib/stats-base-dists-triangular-logcdf","18k":"@stdlib/stats/base/dists/triangular/logpdf","18l":"@stdlib/stats-base-dists-triangular-logpdf","18m":"@stdlib/stats/base/dists/triangular/mean","18n":"@stdlib/stats-base-dists-triangular-mean","18o":"@stdlib/stats/base/dists/triangular/median","18p":"@stdlib/stats-base-dists-triangular-median","18q":"@stdlib/stats/base/dists/triangular/mgf","18r":"@stdlib/stats-base-dists-triangular-mgf","18s":"@stdlib/stats/base/dists/triangular/mode","18t":"@stdlib/stats-base-dists-triangular-mode","18u":"@stdlib/stats/base/dists/triangular","18v":"@stdlib/stats-base-dists-triangular","18w":"@stdlib/stats/base/dists/triangular/pdf","18x":"@stdlib/stats-base-dists-triangular-pdf","18y":"@stdlib/stats/base/dists/triangular/quantile","18z":"@stdlib/stats-base-dists-triangular-quantile","2zU":"@stdlib/stats/base/dists/tukey-lambda/mode","2zV":"@stdlib/stats-base-dists-tukey-lambda-mode","19A":"@stdlib/stats/base/dists/uniform/cdf","19B":"@stdlib/stats-base-dists-uniform-cdf","19C":"@stdlib/stats/base/dists/uniform/ctor","19D":"@stdlib/stats-base-dists-uniform-ctor","19E":"@stdlib/stats/base/dists/uniform/entropy","19F":"@stdlib/stats-base-dists-uniform-entropy","19G":"@stdlib/stats/base/dists/uniform/kurtosis","19H":"@stdlib/stats-base-dists-uniform-kurtosis","19I":"@stdlib/stats/base/dists/uniform/logcdf","19J":"@stdlib/stats-base-dists-uniform-logcdf","19K":"@stdlib/stats/base/dists/uniform/logpdf","19L":"@stdlib/stats-base-dists-uniform-logpdf","19M":"@stdlib/stats/base/dists/uniform/mean","19N":"@stdlib/stats-base-dists-uniform-mean","19O":"@stdlib/stats/base/dists/uniform/median","19P":"@stdlib/stats-base-dists-uniform-median","19Q":"@stdlib/stats/base/dists/uniform/mgf","19R":"@stdlib/stats-base-dists-uniform-mgf","19S":"@stdlib/stats/base/dists/uniform","19T":"@stdlib/stats-base-dists-uniform","19U":"@stdlib/stats/base/dists/uniform/pdf","19V":"@stdlib/stats-base-dists-uniform-pdf","19W":"@stdlib/stats/base/dists/uniform/quantile","19X":"@stdlib/stats-base-dists-uniform-quantile","19Y":"@stdlib/stats/base/dists/uniform/skewness","19Z":"@stdlib/stats-base-dists-uniform-skewness","19a":"@stdlib/stats/base/dists/uniform/stdev","19b":"@stdlib/stats-base-dists-uniform-stdev","19c":"@stdlib/stats/base/dists/uniform/variance","19d":"@stdlib/stats-base-dists-uniform-variance","2r6":"@stdlib/stats/base/dists/wald/kurtosis","2r7":"@stdlib/stats-base-dists-wald-kurtosis","2r8":"@stdlib/stats/base/dists/wald/mean","2r9":"@stdlib/stats-base-dists-wald-mean","2rA":"@stdlib/stats/base/dists/wald/mode","2rB":"@stdlib/stats-base-dists-wald-mode","2rC":"@stdlib/stats/base/dists/wald/pdf","2rD":"@stdlib/stats-base-dists-wald-pdf","2rE":"@stdlib/stats/base/dists/wald/skewness","2rF":"@stdlib/stats-base-dists-wald-skewness","2rG":"@stdlib/stats/base/dists/wald/variance","2rH":"@stdlib/stats-base-dists-wald-variance","19e":"@stdlib/stats/base/dists/weibull/cdf","19f":"@stdlib/stats-base-dists-weibull-cdf","19g":"@stdlib/stats/base/dists/weibull/ctor","19h":"@stdlib/stats-base-dists-weibull-ctor","19i":"@stdlib/stats/base/dists/weibull/entropy","19j":"@stdlib/stats-base-dists-weibull-entropy","19k":"@stdlib/stats/base/dists/weibull/kurtosis","19l":"@stdlib/stats-base-dists-weibull-kurtosis","19m":"@stdlib/stats/base/dists/weibull/logcdf","19n":"@stdlib/stats-base-dists-weibull-logcdf","19o":"@stdlib/stats/base/dists/weibull/logpdf","19p":"@stdlib/stats-base-dists-weibull-logpdf","19q":"@stdlib/stats/base/dists/weibull/mean","19r":"@stdlib/stats-base-dists-weibull-mean","19s":"@stdlib/stats/base/dists/weibull/median","19t":"@stdlib/stats-base-dists-weibull-median","19u":"@stdlib/stats/base/dists/weibull/mgf","19v":"@stdlib/stats-base-dists-weibull-mgf","19w":"@stdlib/stats/base/dists/weibull/mode","19x":"@stdlib/stats-base-dists-weibull-mode","19y":"@stdlib/stats/base/dists/weibull","19z":"@stdlib/stats-base-dists-weibull","1A0":"@stdlib/stats/base/dists/weibull/pdf","1A1":"@stdlib/stats-base-dists-weibull-pdf","1A2":"@stdlib/stats/base/dists/weibull/quantile","1A3":"@stdlib/stats-base-dists-weibull-quantile","1A4":"@stdlib/stats/base/dists/weibull/skewness","1A5":"@stdlib/stats-base-dists-weibull-skewness","1A6":"@stdlib/stats/base/dists/weibull/stdev","1A7":"@stdlib/stats-base-dists-weibull-stdev","1A8":"@stdlib/stats/base/dists/weibull/variance","1A9":"@stdlib/stats-base-dists-weibull-variance","2U8":"@stdlib/stats/base/ndarray/covarmtk","2U9":"@stdlib/stats-base-ndarray-covarmtk","2G2":"@stdlib/stats/base/ndarray/cumax","2G3":"@stdlib/stats-base-ndarray-cumax","2Pa":"@stdlib/stats/base/ndarray/cumin","2Pb":"@stdlib/stats-base-ndarray-cumin","2UA":"@stdlib/stats/base/ndarray/dcovarmtk","2UB":"@stdlib/stats-base-ndarray-dcovarmtk","2G4":"@stdlib/stats/base/ndarray/dcumax","2G5":"@stdlib/stats-base-ndarray-dcumax","2aa":"@stdlib/stats/base/ndarray/dcumaxabs","2ab":"@stdlib/stats-base-ndarray-dcumaxabs","2Pc":"@stdlib/stats/base/ndarray/dcumin","2Pd":"@stdlib/stats-base-ndarray-dcumin","2ac":"@stdlib/stats/base/ndarray/dcuminabs","2ad":"@stdlib/stats-base-ndarray-dcuminabs","2Ey":"@stdlib/stats/base/ndarray/dmax","2Ez":"@stdlib/stats-base-ndarray-dmax","2UC":"@stdlib/stats/base/ndarray/dmaxabs","2UD":"@stdlib/stats-base-ndarray-dmaxabs","2ae":"@stdlib/stats/base/ndarray/dmaxabssorted","2af":"@stdlib/stats-base-ndarray-dmaxabssorted","2Vm":"@stdlib/stats/base/ndarray/dmaxsorted","2Vn":"@stdlib/stats-base-ndarray-dmaxsorted","2UE":"@stdlib/stats/base/ndarray/dmean","2UF":"@stdlib/stats-base-ndarray-dmean","2Y0":"@stdlib/stats/base/ndarray/dmeankbn","2Y1":"@stdlib/stats-base-ndarray-dmeankbn","2Y2":"@stdlib/stats/base/ndarray/dmeankbn2","2Y3":"@stdlib/stats-base-ndarray-dmeankbn2","2Y4":"@stdlib/stats/base/ndarray/dmeanli","2Y5":"@stdlib/stats-base-ndarray-dmeanli","2Y6":"@stdlib/stats/base/ndarray/dmeanlipw","2Y7":"@stdlib/stats-base-ndarray-dmeanlipw","2ag":"@stdlib/stats/base/ndarray/dmeanors","2ah":"@stdlib/stats-base-ndarray-dmeanors","2ai":"@stdlib/stats/base/ndarray/dmeanpn","2aj":"@stdlib/stats-base-ndarray-dmeanpn","2ak":"@stdlib/stats/base/ndarray/dmeanpw","2al":"@stdlib/stats-base-ndarray-dmeanpw","2rI":"@stdlib/stats/base/ndarray/dmeanstdev","2rJ":"@stdlib/stats-base-ndarray-dmeanstdev","2am":"@stdlib/stats/base/ndarray/dmeanwd","2an":"@stdlib/stats-base-ndarray-dmeanwd","2ao":"@stdlib/stats/base/ndarray/dmediansorted","2ap":"@stdlib/stats-base-ndarray-dmediansorted","2aq":"@stdlib/stats/base/ndarray/dmidrange","2ar":"@stdlib/stats-base-ndarray-dmidrange","2Pe":"@stdlib/stats/base/ndarray/dmin","2Pf":"@stdlib/stats-base-ndarray-dmin","2UG":"@stdlib/stats/base/ndarray/dminabs","2UH":"@stdlib/stats-base-ndarray-dminabs","2Y8":"@stdlib/stats/base/ndarray/dminsorted","2Y9":"@stdlib/stats-base-ndarray-dminsorted","2as":"@stdlib/stats/base/ndarray/dmskmax","2at":"@stdlib/stats-base-ndarray-dmskmax","2rK":"@stdlib/stats/base/ndarray/dmskmaxabs","2rL":"@stdlib/stats-base-ndarray-dmskmaxabs","2au":"@stdlib/stats/base/ndarray/dmskmin","2av":"@stdlib/stats-base-ndarray-dmskmin","2aw":"@stdlib/stats/base/ndarray/dmskrange","2ax":"@stdlib/stats-base-ndarray-dmskrange","2UI":"@stdlib/stats/base/ndarray/dnanmax","2UJ":"@stdlib/stats-base-ndarray-dnanmax","2Yc":"@stdlib/stats/base/ndarray/dnanmaxabs","2Yd":"@stdlib/stats-base-ndarray-dnanmaxabs","2VA":"@stdlib/stats/base/ndarray/dnanmean","2VB":"@stdlib/stats-base-ndarray-dnanmean","2ay":"@stdlib/stats/base/ndarray/dnanmeanors","2az":"@stdlib/stats-base-ndarray-dnanmeanors","2b0":"@stdlib/stats/base/ndarray/dnanmeanpn","2b1":"@stdlib/stats-base-ndarray-dnanmeanpn","2b2":"@stdlib/stats/base/ndarray/dnanmeanpw","2b3":"@stdlib/stats-base-ndarray-dnanmeanpw","2b4":"@stdlib/stats/base/ndarray/dnanmeanwd","2b5":"@stdlib/stats-base-ndarray-dnanmeanwd","2rM":"@stdlib/stats/base/ndarray/dnanmidrange","2rN":"@stdlib/stats-base-ndarray-dnanmidrange","2UK":"@stdlib/stats/base/ndarray/dnanmin","2UL":"@stdlib/stats-base-ndarray-dnanmin","2Ye":"@stdlib/stats/base/ndarray/dnanminabs","2Yf":"@stdlib/stats-base-ndarray-dnanminabs","2b6":"@stdlib/stats/base/ndarray/dnanmskmax","2b7":"@stdlib/stats-base-ndarray-dnanmskmax","2rO":"@stdlib/stats/base/ndarray/dnanmskmaxabs","2rP":"@stdlib/stats-base-ndarray-dnanmskmaxabs","2b8":"@stdlib/stats/base/ndarray/dnanmskmin","2b9":"@stdlib/stats-base-ndarray-dnanmskmin","2rQ":"@stdlib/stats/base/ndarray/dnanmskminabs","2rR":"@stdlib/stats-base-ndarray-dnanmskminabs","2bA":"@stdlib/stats/base/ndarray/dnanmskrange","2bB":"@stdlib/stats-base-ndarray-dnanmskrange","2rS":"@stdlib/stats/base/ndarray/dnanrange","2rT":"@stdlib/stats-base-ndarray-dnanrange","2rU":"@stdlib/stats/base/ndarray/dnanrangeabs","2rV":"@stdlib/stats-base-ndarray-dnanrangeabs","2rW":"@stdlib/stats/base/ndarray/dnanstdev","2rX":"@stdlib/stats-base-ndarray-dnanstdev","2rY":"@stdlib/stats/base/ndarray/dnanstdevch","2rZ":"@stdlib/stats-base-ndarray-dnanstdevch","2ra":"@stdlib/stats/base/ndarray/dnanstdevpn","2rb":"@stdlib/stats-base-ndarray-dnanstdevpn","2Pg":"@stdlib/stats/base/ndarray/drange","2Ph":"@stdlib/stats-base-ndarray-drange","2rc":"@stdlib/stats/base/ndarray/drangeabs","2rd":"@stdlib/stats-base-ndarray-drangeabs","2re":"@stdlib/stats/base/ndarray/dstdev","2rf":"@stdlib/stats-base-ndarray-dstdev","2rg":"@stdlib/stats/base/ndarray/dstdevch","2rh":"@stdlib/stats-base-ndarray-dstdevch","2ri":"@stdlib/stats/base/ndarray/dstdevpn","2rj":"@stdlib/stats-base-ndarray-dstdevpn","2rk":"@stdlib/stats/base/ndarray/dstdevtk","2rl":"@stdlib/stats-base-ndarray-dstdevtk","2rm":"@stdlib/stats/base/ndarray/dstdevwd","2rn":"@stdlib/stats-base-ndarray-dstdevwd","2ro":"@stdlib/stats/base/ndarray/dstdevyc","2rp":"@stdlib/stats-base-ndarray-dstdevyc","2rq":"@stdlib/stats/base/ndarray/dvariance","2rr":"@stdlib/stats-base-ndarray-dvariance","2Pi":"@stdlib/stats/base/ndarray/dztest","2Pj":"@stdlib/stats-base-ndarray-dztest","2S8":"@stdlib/stats/base/ndarray/dztest2","2S9":"@stdlib/stats-base-ndarray-dztest2","2Ji":"@stdlib/stats/base/ndarray/max-by","2Jj":"@stdlib/stats-base-ndarray-max-by","2F0":"@stdlib/stats/base/ndarray/max","2F1":"@stdlib/stats-base-ndarray-max","2UM":"@stdlib/stats/base/ndarray/maxabs","2UN":"@stdlib/stats-base-ndarray-maxabs","2Vo":"@stdlib/stats/base/ndarray/maxsorted","2Vp":"@stdlib/stats-base-ndarray-maxsorted","2UO":"@stdlib/stats/base/ndarray/mean","2UP":"@stdlib/stats-base-ndarray-mean","2XE":"@stdlib/stats/base/ndarray/meankbn","2XF":"@stdlib/stats-base-ndarray-meankbn","2XG":"@stdlib/stats/base/ndarray/meankbn2","2XH":"@stdlib/stats-base-ndarray-meankbn2","2XI":"@stdlib/stats/base/ndarray/meanors","2XJ":"@stdlib/stats-base-ndarray-meanors","2XK":"@stdlib/stats/base/ndarray/meanpn","2XL":"@stdlib/stats-base-ndarray-meanpn","2XM":"@stdlib/stats/base/ndarray/meanpw","2XN":"@stdlib/stats-base-ndarray-meanpw","2XO":"@stdlib/stats/base/ndarray/meanwd","2XP":"@stdlib/stats-base-ndarray-meanwd","2XQ":"@stdlib/stats/base/ndarray/mediansorted","2XR":"@stdlib/stats-base-ndarray-mediansorted","2rs":"@stdlib/stats/base/ndarray/midrange-by","2rt":"@stdlib/stats-base-ndarray-midrange-by","2ru":"@stdlib/stats/base/ndarray/midrange","2rv":"@stdlib/stats-base-ndarray-midrange","2rw":"@stdlib/stats/base/ndarray/midrangeabs","2rx":"@stdlib/stats-base-ndarray-midrangeabs","2Pk":"@stdlib/stats/base/ndarray/min-by","2Pl":"@stdlib/stats-base-ndarray-min-by","2Pm":"@stdlib/stats/base/ndarray/min","2Pn":"@stdlib/stats-base-ndarray-min","2UQ":"@stdlib/stats/base/ndarray/minabs","2UR":"@stdlib/stats-base-ndarray-minabs","2XS":"@stdlib/stats/base/ndarray/minsorted","2XT":"@stdlib/stats-base-ndarray-minsorted","2XU":"@stdlib/stats/base/ndarray/mskmax","2XV":"@stdlib/stats-base-ndarray-mskmax","2ry":"@stdlib/stats/base/ndarray/mskmaxabs","2rz":"@stdlib/stats-base-ndarray-mskmaxabs","2s0":"@stdlib/stats/base/ndarray/mskmidrange","2s1":"@stdlib/stats-base-ndarray-mskmidrange","2YA":"@stdlib/stats/base/ndarray/mskmin","2YB":"@stdlib/stats-base-ndarray-mskmin","2bC":"@stdlib/stats/base/ndarray/mskrange","2bD":"@stdlib/stats-base-ndarray-mskrange","2bE":"@stdlib/stats/base/ndarray/nanmax-by","2bF":"@stdlib/stats-base-ndarray-nanmax-by","2US":"@stdlib/stats/base/ndarray/nanmax","2UT":"@stdlib/stats-base-ndarray-nanmax","2Yg":"@stdlib/stats/base/ndarray/nanmaxabs","2Yh":"@stdlib/stats-base-ndarray-nanmaxabs","2VC":"@stdlib/stats/base/ndarray/nanmean","2VD":"@stdlib/stats-base-ndarray-nanmean","2bG":"@stdlib/stats/base/ndarray/nanmeanors","2bH":"@stdlib/stats-base-ndarray-nanmeanors","2bI":"@stdlib/stats/base/ndarray/nanmeanpn","2bJ":"@stdlib/stats-base-ndarray-nanmeanpn","2bK":"@stdlib/stats/base/ndarray/nanmeanwd","2bL":"@stdlib/stats-base-ndarray-nanmeanwd","2s2":"@stdlib/stats/base/ndarray/nanmidrange-by","2s3":"@stdlib/stats-base-ndarray-nanmidrange-by","2s4":"@stdlib/stats/base/ndarray/nanmidrange","2s5":"@stdlib/stats-base-ndarray-nanmidrange","2bM":"@stdlib/stats/base/ndarray/nanmin-by","2bN":"@stdlib/stats-base-ndarray-nanmin-by","2UU":"@stdlib/stats/base/ndarray/nanmin","2UV":"@stdlib/stats-base-ndarray-nanmin","2Yi":"@stdlib/stats/base/ndarray/nanminabs","2Yj":"@stdlib/stats-base-ndarray-nanminabs","2bO":"@stdlib/stats/base/ndarray/nanmskmax","2bP":"@stdlib/stats-base-ndarray-nanmskmax","2s6":"@stdlib/stats/base/ndarray/nanmskmidrange","2s7":"@stdlib/stats-base-ndarray-nanmskmidrange","2bQ":"@stdlib/stats/base/ndarray/nanmskmin","2bR":"@stdlib/stats-base-ndarray-nanmskmin","2bS":"@stdlib/stats/base/ndarray/nanmskrange","2bT":"@stdlib/stats-base-ndarray-nanmskrange","2bU":"@stdlib/stats/base/ndarray/nanrange-by","2bV":"@stdlib/stats-base-ndarray-nanrange-by","2bW":"@stdlib/stats/base/ndarray/nanrange","2bX":"@stdlib/stats-base-ndarray-nanrange","2F2":"@stdlib/stats/base/ndarray","2F3":"@stdlib/stats-base-ndarray","2YC":"@stdlib/stats/base/ndarray/range-by","2YD":"@stdlib/stats-base-ndarray-range-by","2Po":"@stdlib/stats/base/ndarray/range","2Pp":"@stdlib/stats-base-ndarray-range","2s8":"@stdlib/stats/base/ndarray/rangeabs","2s9":"@stdlib/stats-base-ndarray-rangeabs","2UW":"@stdlib/stats/base/ndarray/scovarmtk","2UX":"@stdlib/stats-base-ndarray-scovarmtk","2G6":"@stdlib/stats/base/ndarray/scumax","2G7":"@stdlib/stats-base-ndarray-scumax","2Yk":"@stdlib/stats/base/ndarray/scumaxabs","2Yl":"@stdlib/stats-base-ndarray-scumaxabs","2Pq":"@stdlib/stats/base/ndarray/scumin","2Pr":"@stdlib/stats-base-ndarray-scumin","2Ym":"@stdlib/stats/base/ndarray/scuminabs","2Yn":"@stdlib/stats-base-ndarray-scuminabs","2bY":"@stdlib/stats/base/ndarray/sdsmean","2bZ":"@stdlib/stats-base-ndarray-sdsmean","2ba":"@stdlib/stats/base/ndarray/sdsmeanors","2bb":"@stdlib/stats-base-ndarray-sdsmeanors","2bc":"@stdlib/stats/base/ndarray/sdsnanmeanors","2bd":"@stdlib/stats-base-ndarray-sdsnanmeanors","2F4":"@stdlib/stats/base/ndarray/smax","2F5":"@stdlib/stats-base-ndarray-smax","2UY":"@stdlib/stats/base/ndarray/smaxabs","2UZ":"@stdlib/stats-base-ndarray-smaxabs","2YE":"@stdlib/stats/base/ndarray/smaxabssorted","2YF":"@stdlib/stats-base-ndarray-smaxabssorted","2Vq":"@stdlib/stats/base/ndarray/smaxsorted","2Vr":"@stdlib/stats-base-ndarray-smaxsorted","2Ua":"@stdlib/stats/base/ndarray/smean","2Ub":"@stdlib/stats-base-ndarray-smean","2be":"@stdlib/stats/base/ndarray/smeankbn","2bf":"@stdlib/stats-base-ndarray-smeankbn","2bg":"@stdlib/stats/base/ndarray/smeankbn2","2bh":"@stdlib/stats-base-ndarray-smeankbn2","2bi":"@stdlib/stats/base/ndarray/smeanli","2bj":"@stdlib/stats-base-ndarray-smeanli","2bk":"@stdlib/stats/base/ndarray/smeanlipw","2bl":"@stdlib/stats-base-ndarray-smeanlipw","2bm":"@stdlib/stats/base/ndarray/smeanors","2bn":"@stdlib/stats-base-ndarray-smeanors","2bo":"@stdlib/stats/base/ndarray/smeanpn","2bp":"@stdlib/stats-base-ndarray-smeanpn","2bq":"@stdlib/stats/base/ndarray/smeanpw","2br":"@stdlib/stats-base-ndarray-smeanpw","2bs":"@stdlib/stats/base/ndarray/smeanwd","2bt":"@stdlib/stats-base-ndarray-smeanwd","2bu":"@stdlib/stats/base/ndarray/smediansorted","2bv":"@stdlib/stats-base-ndarray-smediansorted","2bw":"@stdlib/stats/base/ndarray/smidrange","2bx":"@stdlib/stats-base-ndarray-smidrange","2Ps":"@stdlib/stats/base/ndarray/smin","2Pt":"@stdlib/stats-base-ndarray-smin","2Uc":"@stdlib/stats/base/ndarray/sminabs","2Ud":"@stdlib/stats-base-ndarray-sminabs","2YG":"@stdlib/stats/base/ndarray/sminsorted","2YH":"@stdlib/stats-base-ndarray-sminsorted","2by":"@stdlib/stats/base/ndarray/smskmax","2bz":"@stdlib/stats-base-ndarray-smskmax","2sA":"@stdlib/stats/base/ndarray/smskmaxabs","2sB":"@stdlib/stats-base-ndarray-smskmaxabs","2sC":"@stdlib/stats/base/ndarray/smskmidrange","2sD":"@stdlib/stats-base-ndarray-smskmidrange","2c0":"@stdlib/stats/base/ndarray/smskmin","2c1":"@stdlib/stats-base-ndarray-smskmin","2c2":"@stdlib/stats/base/ndarray/smskrange","2c3":"@stdlib/stats-base-ndarray-smskrange","2Ue":"@stdlib/stats/base/ndarray/snanmax","2Uf":"@stdlib/stats-base-ndarray-snanmax","2YI":"@stdlib/stats/base/ndarray/snanmaxabs","2YJ":"@stdlib/stats-base-ndarray-snanmaxabs","2VE":"@stdlib/stats/base/ndarray/snanmean","2VF":"@stdlib/stats-base-ndarray-snanmean","2c4":"@stdlib/stats/base/ndarray/snanmeanors","2c5":"@stdlib/stats-base-ndarray-snanmeanors","2c6":"@stdlib/stats/base/ndarray/snanmeanpn","2c7":"@stdlib/stats-base-ndarray-snanmeanpn","2c8":"@stdlib/stats/base/ndarray/snanmeanwd","2c9":"@stdlib/stats-base-ndarray-snanmeanwd","2sE":"@stdlib/stats/base/ndarray/snanmidrange","2sF":"@stdlib/stats-base-ndarray-snanmidrange","2Ug":"@stdlib/stats/base/ndarray/snanmin","2Uh":"@stdlib/stats-base-ndarray-snanmin","2YK":"@stdlib/stats/base/ndarray/snanminabs","2YL":"@stdlib/stats-base-ndarray-snanminabs","2cA":"@stdlib/stats/base/ndarray/snanmskmax","2cB":"@stdlib/stats-base-ndarray-snanmskmax","2sG":"@stdlib/stats/base/ndarray/snanmskmaxabs","2sH":"@stdlib/stats-base-ndarray-snanmskmaxabs","2sI":"@stdlib/stats/base/ndarray/snanmskmidrange","2sJ":"@stdlib/stats-base-ndarray-snanmskmidrange","2cC":"@stdlib/stats/base/ndarray/snanmskmin","2cD":"@stdlib/stats-base-ndarray-snanmskmin","2sK":"@stdlib/stats/base/ndarray/snanmskminabs","2sL":"@stdlib/stats-base-ndarray-snanmskminabs","2cE":"@stdlib/stats/base/ndarray/snanmskrange","2cF":"@stdlib/stats-base-ndarray-snanmskrange","2sM":"@stdlib/stats/base/ndarray/snanrange","2sN":"@stdlib/stats-base-ndarray-snanrange","2Pu":"@stdlib/stats/base/ndarray/srange","2Pv":"@stdlib/stats-base-ndarray-srange","2sO":"@stdlib/stats/base/ndarray/srangeabs","2sP":"@stdlib/stats-base-ndarray-srangeabs","2sQ":"@stdlib/stats/base/ndarray/sstdev","2sR":"@stdlib/stats-base-ndarray-sstdev","2sS":"@stdlib/stats/base/ndarray/sstdevch","2sT":"@stdlib/stats-base-ndarray-sstdevch","2sU":"@stdlib/stats/base/ndarray/sstdevpn","2sV":"@stdlib/stats-base-ndarray-sstdevpn","2sW":"@stdlib/stats/base/ndarray/sstdevtk","2sX":"@stdlib/stats-base-ndarray-sstdevtk","2sY":"@stdlib/stats/base/ndarray/sstdevwd","2sZ":"@stdlib/stats-base-ndarray-sstdevwd","2sa":"@stdlib/stats/base/ndarray/sstdevyc","2sb":"@stdlib/stats-base-ndarray-sstdevyc","2sc":"@stdlib/stats/base/ndarray/stdev","2sd":"@stdlib/stats-base-ndarray-stdev","2se":"@stdlib/stats/base/ndarray/stdevch","2sf":"@stdlib/stats-base-ndarray-stdevch","2sg":"@stdlib/stats/base/ndarray/stdevpn","2sh":"@stdlib/stats-base-ndarray-stdevpn","2si":"@stdlib/stats/base/ndarray/stdevtk","2sj":"@stdlib/stats-base-ndarray-stdevtk","2sk":"@stdlib/stats/base/ndarray/stdevwd","2sl":"@stdlib/stats-base-ndarray-stdevwd","2sm":"@stdlib/stats/base/ndarray/stdevyc","2sn":"@stdlib/stats-base-ndarray-stdevyc","2so":"@stdlib/stats/base/ndarray/svariance","2sp":"@stdlib/stats-base-ndarray-svariance","2sq":"@stdlib/stats/base/ndarray/svariancech","2sr":"@stdlib/stats-base-ndarray-svariancech","2ss":"@stdlib/stats/base/ndarray/svariancepn","2st":"@stdlib/stats-base-ndarray-svariancepn","2su":"@stdlib/stats/base/ndarray/svariancetk","2sv":"@stdlib/stats-base-ndarray-svariancetk","2sw":"@stdlib/stats/base/ndarray/svariancewd","2sx":"@stdlib/stats-base-ndarray-svariancewd","2sy":"@stdlib/stats/base/ndarray/svarianceyc","2sz":"@stdlib/stats-base-ndarray-svarianceyc","2Pw":"@stdlib/stats/base/ndarray/sztest","2Px":"@stdlib/stats-base-ndarray-sztest","2SA":"@stdlib/stats/base/ndarray/sztest2","2SB":"@stdlib/stats-base-ndarray-sztest2","2t0":"@stdlib/stats/base/ndarray/variance","2t1":"@stdlib/stats-base-ndarray-variance","2t2":"@stdlib/stats/base/ndarray/variancech","2t3":"@stdlib/stats-base-ndarray-variancech","2t4":"@stdlib/stats/base/ndarray/variancepn","2t5":"@stdlib/stats-base-ndarray-variancepn","2t6":"@stdlib/stats/base/ndarray/variancetk","2t7":"@stdlib/stats-base-ndarray-variancetk","2t8":"@stdlib/stats/base/ndarray/variancewd","2t9":"@stdlib/stats-base-ndarray-variancewd","2tA":"@stdlib/stats/base/ndarray/varianceyc","2tB":"@stdlib/stats-base-ndarray-varianceyc","2Py":"@stdlib/stats/base/ndarray/ztest","2Pz":"@stdlib/stats-base-ndarray-ztest","2SC":"@stdlib/stats/base/ndarray/ztest2","2SD":"@stdlib/stats-base-ndarray-ztest2","1EK":"@stdlib/stats/base","1EL":"@stdlib/stats-base","1Ec":"@stdlib/stats/base/sdsnanmean","1Ed":"@stdlib/stats-base-sdsnanmean","1Fk":"@stdlib/stats/base/snanstdev","1Fl":"@stdlib/stats-base-snanstdev","1Fm":"@stdlib/stats/base/snanstdevch","1Fn":"@stdlib/stats-base-snanstdevch","1Fo":"@stdlib/stats/base/snanstdevpn","1Fp":"@stdlib/stats-base-snanstdevpn","1Fq":"@stdlib/stats/base/snanstdevtk","1Fr":"@stdlib/stats-base-snanstdevtk","1Fs":"@stdlib/stats/base/snanstdevwd","1Ft":"@stdlib/stats-base-snanstdevwd","1Fu":"@stdlib/stats/base/snanstdevyc","1Fv":"@stdlib/stats-base-snanstdevyc","1Fw":"@stdlib/stats/base/snanvariance","1Fx":"@stdlib/stats-base-snanvariance","1Fy":"@stdlib/stats/base/snanvariancech","1Fz":"@stdlib/stats-base-snanvariancech","1G0":"@stdlib/stats/base/snanvariancepn","1G1":"@stdlib/stats-base-snanvariancepn","1G2":"@stdlib/stats/base/snanvariancetk","1G3":"@stdlib/stats-base-snanvariancetk","1G4":"@stdlib/stats/base/snanvariancewd","1G5":"@stdlib/stats-base-snanvariancewd","1G6":"@stdlib/stats/base/snanvarianceyc","1G7":"@stdlib/stats-base-snanvarianceyc","2Le":"@stdlib/stats/base/ztest/alternative-enum2str","2Lf":"@stdlib/stats-base-ztest-alternative-enum2str","2Lg":"@stdlib/stats/base/ztest/alternative-resolve-enum","2Lh":"@stdlib/stats-base-ztest-alternative-resolve-enum","2Li":"@stdlib/stats/base/ztest/alternative-resolve-str","2Lj":"@stdlib/stats-base-ztest-alternative-resolve-str","2Lk":"@stdlib/stats/base/ztest/alternative-str2enum","2Ll":"@stdlib/stats-base-ztest-alternative-str2enum","2Lm":"@stdlib/stats/base/ztest/alternatives","2Ln":"@stdlib/stats-base-ztest-alternatives","2Lo":"@stdlib/stats/base/ztest/one-sample/results/factory","2Lp":"@stdlib/stats-base-ztest-one-sample-results-factory","2Lq":"@stdlib/stats/base/ztest/one-sample/results/float32","2Lr":"@stdlib/stats-base-ztest-one-sample-results-float32","2Ls":"@stdlib/stats/base/ztest/one-sample/results/float64","2Lt":"@stdlib/stats-base-ztest-one-sample-results-float64","2Lu":"@stdlib/stats/base/ztest/one-sample/results/struct-factory","2Lv":"@stdlib/stats-base-ztest-one-sample-results-struct-factory","2Lw":"@stdlib/stats/base/ztest/one-sample/results/to-json","2Lx":"@stdlib/stats-base-ztest-one-sample-results-to-json","2Ly":"@stdlib/stats/base/ztest/one-sample/results/to-string","2Lz":"@stdlib/stats-base-ztest-one-sample-results-to-string","2Q0":"@stdlib/stats/base/ztest/two-sample/results/factory","2Q1":"@stdlib/stats-base-ztest-two-sample-results-factory","2Q2":"@stdlib/stats/base/ztest/two-sample/results/float32","2Q3":"@stdlib/stats-base-ztest-two-sample-results-float32","2Q4":"@stdlib/stats/base/ztest/two-sample/results/float64","2Q5":"@stdlib/stats-base-ztest-two-sample-results-float64","2Q6":"@stdlib/stats/base/ztest/two-sample/results/struct-factory","2Q7":"@stdlib/stats-base-ztest-two-sample-results-struct-factory","2Q8":"@stdlib/stats/base/ztest/two-sample/results/to-json","2Q9":"@stdlib/stats-base-ztest-two-sample-results-to-json","2QA":"@stdlib/stats/base/ztest/two-sample/results/to-string","2QB":"@stdlib/stats-base-ztest-two-sample-results-to-string","1Gw":"@stdlib/stats/binomial-test","1Gx":"@stdlib/stats-binomial-test","1Gy":"@stdlib/stats/chi2gof","1Gz":"@stdlib/stats-chi2gof","1H0":"@stdlib/stats/chi2test","1H1":"@stdlib/stats-chi2test","2G8":"@stdlib/stats/cumax","2G9":"@stdlib/stats-cumax","2Ui":"@stdlib/stats/cumin","2Uj":"@stdlib/stats-cumin","1H2":"@stdlib/stats/fligner-test","1H3":"@stdlib/stats-fligner-test","1H4":"@stdlib/stats/incr/apcorr","1H5":"@stdlib/stats-incr-apcorr","1H6":"@stdlib/stats/incr/count","1H7":"@stdlib/stats-incr-count","1H8":"@stdlib/stats/incr/covariance","1H9":"@stdlib/stats-incr-covariance","1HA":"@stdlib/stats/incr/covmat","1HB":"@stdlib/stats-incr-covmat","1HC":"@stdlib/stats/incr/cv","1HD":"@stdlib/stats-incr-cv","1HE":"@stdlib/stats/incr/ewmean","1HF":"@stdlib/stats-incr-ewmean","1HG":"@stdlib/stats/incr/ewstdev","1HH":"@stdlib/stats-incr-ewstdev","1HI":"@stdlib/stats/incr/ewvariance","1HJ":"@stdlib/stats-incr-ewvariance","1HK":"@stdlib/stats/incr/gmean","1HL":"@stdlib/stats-incr-gmean","1HM":"@stdlib/stats/incr/grubbs","1HN":"@stdlib/stats-incr-grubbs","1HO":"@stdlib/stats/incr/hmean","1HP":"@stdlib/stats-incr-hmean","1HQ":"@stdlib/stats/incr/kurtosis","1HR":"@stdlib/stats-incr-kurtosis","1HS":"@stdlib/stats/incr/maape","1HT":"@stdlib/stats-incr-maape","1HU":"@stdlib/stats/incr/mae","1HV":"@stdlib/stats-incr-mae","1HW":"@stdlib/stats/incr/mapcorr","1HX":"@stdlib/stats-incr-mapcorr","1HY":"@stdlib/stats/incr/mape","1HZ":"@stdlib/stats-incr-mape","1Ha":"@stdlib/stats/incr/max","1Hb":"@stdlib/stats-incr-max","1Hc":"@stdlib/stats/incr/maxabs","1Hd":"@stdlib/stats-incr-maxabs","1He":"@stdlib/stats/incr/mcovariance","1Hf":"@stdlib/stats-incr-mcovariance","1Hg":"@stdlib/stats/incr/mcv","1Hh":"@stdlib/stats-incr-mcv","1Hi":"@stdlib/stats/incr/mda","1Hj":"@stdlib/stats-incr-mda","1Hk":"@stdlib/stats/incr/me","1Hl":"@stdlib/stats-incr-me","1Hm":"@stdlib/stats/incr/mean","1Hn":"@stdlib/stats-incr-mean","1Ho":"@stdlib/stats/incr/meanabs","1Hp":"@stdlib/stats-incr-meanabs","1Hq":"@stdlib/stats/incr/meanabs2","1Hr":"@stdlib/stats-incr-meanabs2","1Hs":"@stdlib/stats/incr/meanstdev","1Ht":"@stdlib/stats-incr-meanstdev","1Hu":"@stdlib/stats/incr/meanvar","1Hv":"@stdlib/stats-incr-meanvar","1Hw":"@stdlib/stats/incr/mgmean","1Hx":"@stdlib/stats-incr-mgmean","1Hy":"@stdlib/stats/incr/mgrubbs","1Hz":"@stdlib/stats-incr-mgrubbs","1I0":"@stdlib/stats/incr/mhmean","1I1":"@stdlib/stats-incr-mhmean","1I2":"@stdlib/stats/incr/midrange","1I3":"@stdlib/stats-incr-midrange","1I4":"@stdlib/stats/incr/min","1I5":"@stdlib/stats-incr-min","1I6":"@stdlib/stats/incr/minabs","1I7":"@stdlib/stats-incr-minabs","1I8":"@stdlib/stats/incr/minmax","1I9":"@stdlib/stats-incr-minmax","1IA":"@stdlib/stats/incr/minmaxabs","1IB":"@stdlib/stats-incr-minmaxabs","1IC":"@stdlib/stats/incr/mmaape","1ID":"@stdlib/stats-incr-mmaape","1IE":"@stdlib/stats/incr/mmae","1IF":"@stdlib/stats-incr-mmae","1IG":"@stdlib/stats/incr/mmape","1IH":"@stdlib/stats-incr-mmape","1II":"@stdlib/stats/incr/mmax","1IJ":"@stdlib/stats-incr-mmax","1IK":"@stdlib/stats/incr/mmaxabs","1IL":"@stdlib/stats-incr-mmaxabs","1IM":"@stdlib/stats/incr/mmda","1IN":"@stdlib/stats-incr-mmda","1IO":"@stdlib/stats/incr/mme","1IP":"@stdlib/stats-incr-mme","1IQ":"@stdlib/stats/incr/mmean","1IR":"@stdlib/stats-incr-mmean","1IS":"@stdlib/stats/incr/mmeanabs","1IT":"@stdlib/stats-incr-mmeanabs","1IU":"@stdlib/stats/incr/mmeanabs2","1IV":"@stdlib/stats-incr-mmeanabs2","1IW":"@stdlib/stats/incr/mmeanstdev","1IX":"@stdlib/stats-incr-mmeanstdev","1IY":"@stdlib/stats/incr/mmeanvar","1IZ":"@stdlib/stats-incr-mmeanvar","1Ia":"@stdlib/stats/incr/mmidrange","1Ib":"@stdlib/stats-incr-mmidrange","1Ic":"@stdlib/stats/incr/mmin","1Id":"@stdlib/stats-incr-mmin","1Ie":"@stdlib/stats/incr/mminabs","1If":"@stdlib/stats-incr-mminabs","1Ig":"@stdlib/stats/incr/mminmax","1Ih":"@stdlib/stats-incr-mminmax","1Ii":"@stdlib/stats/incr/mminmaxabs","1Ij":"@stdlib/stats-incr-mminmaxabs","1Ik":"@stdlib/stats/incr/mmpe","1Il":"@stdlib/stats-incr-mmpe","1Im":"@stdlib/stats/incr/mmse","1In":"@stdlib/stats-incr-mmse","1Io":"@stdlib/stats/incr/mpcorr","1Ip":"@stdlib/stats-incr-mpcorr","1Iq":"@stdlib/stats/incr/mpcorr2","1Ir":"@stdlib/stats-incr-mpcorr2","1Is":"@stdlib/stats/incr/mpcorrdist","1It":"@stdlib/stats-incr-mpcorrdist","1Iu":"@stdlib/stats/incr/mpe","1Iv":"@stdlib/stats-incr-mpe","1Iw":"@stdlib/stats/incr/mprod","1Ix":"@stdlib/stats-incr-mprod","1Iy":"@stdlib/stats/incr/mrange","1Iz":"@stdlib/stats-incr-mrange","1J0":"@stdlib/stats/incr/mrmse","1J1":"@stdlib/stats-incr-mrmse","1J2":"@stdlib/stats/incr/mrss","1J3":"@stdlib/stats-incr-mrss","1J4":"@stdlib/stats/incr/mse","1J5":"@stdlib/stats-incr-mse","32I":"@stdlib/stats/incr/mskewness","32J":"@stdlib/stats-incr-mskewness","1J6":"@stdlib/stats/incr/mstdev","1J7":"@stdlib/stats-incr-mstdev","1J8":"@stdlib/stats/incr/msum","1J9":"@stdlib/stats-incr-msum","1JA":"@stdlib/stats/incr/msumabs","1JB":"@stdlib/stats-incr-msumabs","1JC":"@stdlib/stats/incr/msumabs2","1JD":"@stdlib/stats-incr-msumabs2","1JE":"@stdlib/stats/incr/msummary","1JF":"@stdlib/stats-incr-msummary","1JG":"@stdlib/stats/incr/msumprod","1JH":"@stdlib/stats-incr-msumprod","1JI":"@stdlib/stats/incr/mvariance","1JJ":"@stdlib/stats-incr-mvariance","1JK":"@stdlib/stats/incr/mvmr","1JL":"@stdlib/stats-incr-mvmr","1JM":"@stdlib/stats/incr/nancount","1JN":"@stdlib/stats-incr-nancount","32K":"@stdlib/stats/incr/nancovariance","32L":"@stdlib/stats-incr-nancovariance","32M":"@stdlib/stats/incr/nancv","32N":"@stdlib/stats-incr-nancv","32O":"@stdlib/stats/incr/nanewstdev","32P":"@stdlib/stats-incr-nanewstdev","32Q":"@stdlib/stats/incr/nanewvariance","32R":"@stdlib/stats-incr-nanewvariance","2We":"@stdlib/stats/incr/nangmean","2Wf":"@stdlib/stats-incr-nangmean","2Wg":"@stdlib/stats/incr/nanhmean","2Wh":"@stdlib/stats-incr-nanhmean","32S":"@stdlib/stats/incr/nankurtosis","32T":"@stdlib/stats-incr-nankurtosis","32U":"@stdlib/stats/incr/nanmae","32V":"@stdlib/stats-incr-nanmae","32W":"@stdlib/stats/incr/nanmapcorr","32X":"@stdlib/stats-incr-nanmapcorr","32Y":"@stdlib/stats/incr/nanmape","32Z":"@stdlib/stats-incr-nanmape","32a":"@stdlib/stats/incr/nanmax","32b":"@stdlib/stats-incr-nanmax","2GU":"@stdlib/stats/incr/nanmaxabs","2GV":"@stdlib/stats-incr-nanmaxabs","2Yo":"@stdlib/stats/incr/nanmcv","2Yp":"@stdlib/stats-incr-nanmcv","32c":"@stdlib/stats/incr/nanmda","32d":"@stdlib/stats-incr-nanmda","32e":"@stdlib/stats/incr/nanme","32f":"@stdlib/stats-incr-nanme","2As":"@stdlib/stats/incr/nanmean","2At":"@stdlib/stats-incr-nanmean","2Au":"@stdlib/stats/incr/nanmeanabs","2Av":"@stdlib/stats-incr-nanmeanabs","32g":"@stdlib/stats/incr/nanmeanvar","32h":"@stdlib/stats-incr-nanmeanvar","32i":"@stdlib/stats/incr/nanmgmean","32j":"@stdlib/stats-incr-nanmgmean","32k":"@stdlib/stats/incr/nanmhmean","32l":"@stdlib/stats-incr-nanmhmean","32m":"@stdlib/stats/incr/nanmidrange","32n":"@stdlib/stats-incr-nanmidrange","2Wi":"@stdlib/stats/incr/nanmin","2Wj":"@stdlib/stats-incr-nanmin","2tC":"@stdlib/stats/incr/nanmmape","2tD":"@stdlib/stats-incr-nanmmape","32o":"@stdlib/stats/incr/nanmmaxabs","32p":"@stdlib/stats-incr-nanmmaxabs","32q":"@stdlib/stats/incr/nanmmean","32r":"@stdlib/stats-incr-nanmmean","32s":"@stdlib/stats/incr/nanmmin","32t":"@stdlib/stats-incr-nanmmin","2tE":"@stdlib/stats/incr/nanmmse","2tF":"@stdlib/stats-incr-nanmmse","32u":"@stdlib/stats/incr/nanmpcorr","32v":"@stdlib/stats-incr-nanmpcorr","32w":"@stdlib/stats/incr/nanmrange","32x":"@stdlib/stats-incr-nanmrange","32y":"@stdlib/stats/incr/nanmrss","32z":"@stdlib/stats-incr-nanmrss","2xW":"@stdlib/stats/incr/nanmse","2xX":"@stdlib/stats-incr-nanmse","2GW":"@stdlib/stats/incr/nanmstdev","2GX":"@stdlib/stats-incr-nanmstdev","2QC":"@stdlib/stats/incr/nanmsum","2QD":"@stdlib/stats-incr-nanmsum","2xY":"@stdlib/stats/incr/nanmsumabs","2xZ":"@stdlib/stats-incr-nanmsumabs","33A":"@stdlib/stats/incr/nanprod","33B":"@stdlib/stats-incr-nanprod","33C":"@stdlib/stats/incr/nanrange","33D":"@stdlib/stats-incr-nanrange","2xa":"@stdlib/stats/incr/nanrmse","2xb":"@stdlib/stats-incr-nanrmse","2Aw":"@stdlib/stats/incr/nanskewness","2Ax":"@stdlib/stats-incr-nanskewness","2E4":"@stdlib/stats/incr/nanstdev","2E5":"@stdlib/stats-incr-nanstdev","1JO":"@stdlib/stats/incr/nansum","1JP":"@stdlib/stats-incr-nansum","1JQ":"@stdlib/stats/incr/nansumabs","1JR":"@stdlib/stats-incr-nansumabs","1JS":"@stdlib/stats/incr/nansumabs2","1JT":"@stdlib/stats-incr-nansumabs2","2tG":"@stdlib/stats/incr/nanvariance","2tH":"@stdlib/stats-incr-nanvariance","1JU":"@stdlib/stats/incr","1JV":"@stdlib/stats-incr","1JW":"@stdlib/stats/incr/pcorr","1JX":"@stdlib/stats-incr-pcorr","1JY":"@stdlib/stats/incr/pcorr2","1JZ":"@stdlib/stats-incr-pcorr2","1Ja":"@stdlib/stats/incr/pcorrdist","1Jb":"@stdlib/stats-incr-pcorrdist","1Jc":"@stdlib/stats/incr/pcorrdistmat","1Jd":"@stdlib/stats-incr-pcorrdistmat","1Je":"@stdlib/stats/incr/pcorrmat","1Jf":"@stdlib/stats-incr-pcorrmat","1Jg":"@stdlib/stats/incr/prod","1Jh":"@stdlib/stats-incr-prod","1Ji":"@stdlib/stats/incr/range","1Jj":"@stdlib/stats-incr-range","1Jk":"@stdlib/stats/incr/rmse","1Jl":"@stdlib/stats-incr-rmse","1Jm":"@stdlib/stats/incr/rss","1Jn":"@stdlib/stats-incr-rss","1Jo":"@stdlib/stats/incr/skewness","1Jp":"@stdlib/stats-incr-skewness","1Jq":"@stdlib/stats/incr/stdev","1Jr":"@stdlib/stats-incr-stdev","1Js":"@stdlib/stats/incr/sum","1Jt":"@stdlib/stats-incr-sum","1Ju":"@stdlib/stats/incr/sumabs","1Jv":"@stdlib/stats-incr-sumabs","1Jw":"@stdlib/stats/incr/sumabs2","1Jx":"@stdlib/stats-incr-sumabs2","1Jy":"@stdlib/stats/incr/summary","1Jz":"@stdlib/stats-incr-summary","1K0":"@stdlib/stats/incr/sumprod","1K1":"@stdlib/stats-incr-sumprod","1K2":"@stdlib/stats/incr/variance","1K3":"@stdlib/stats-incr-variance","1K4":"@stdlib/stats/incr/vmr","1K5":"@stdlib/stats-incr-vmr","1K6":"@stdlib/stats/incr/wmean","1K7":"@stdlib/stats-incr-wmean","1K8":"@stdlib/stats/iter/cugmean","1K9":"@stdlib/stats-iter-cugmean","1KA":"@stdlib/stats/iter/cuhmean","1KB":"@stdlib/stats-iter-cuhmean","1KC":"@stdlib/stats/iter/cumax","1KD":"@stdlib/stats-iter-cumax","1KE":"@stdlib/stats/iter/cumaxabs","1KF":"@stdlib/stats-iter-cumaxabs","1KG":"@stdlib/stats/iter/cumean","1KH":"@stdlib/stats-iter-cumean","1KI":"@stdlib/stats/iter/cumeanabs","1KJ":"@stdlib/stats-iter-cumeanabs","1KK":"@stdlib/stats/iter/cumeanabs2","1KL":"@stdlib/stats-iter-cumeanabs2","1KM":"@stdlib/stats/iter/cumidrange","1KN":"@stdlib/stats-iter-cumidrange","1KO":"@stdlib/stats/iter/cumin","1KP":"@stdlib/stats-iter-cumin","1KQ":"@stdlib/stats/iter/cuminabs","1KR":"@stdlib/stats-iter-cuminabs","1KS":"@stdlib/stats/iter/cuprod","1KT":"@stdlib/stats-iter-cuprod","1KU":"@stdlib/stats/iter/curange","1KV":"@stdlib/stats-iter-curange","1KW":"@stdlib/stats/iter/cusum","1KX":"@stdlib/stats-iter-cusum","1KY":"@stdlib/stats/iter/cusumabs","1KZ":"@stdlib/stats-iter-cusumabs","1Ka":"@stdlib/stats/iter/cusumabs2","1Kb":"@stdlib/stats-iter-cusumabs2","1Kc":"@stdlib/stats/iter/max","1Kd":"@stdlib/stats-iter-max","1Ke":"@stdlib/stats/iter/maxabs","1Kf":"@stdlib/stats-iter-maxabs","1Kg":"@stdlib/stats/iter/mean","1Kh":"@stdlib/stats-iter-mean","1Ki":"@stdlib/stats/iter/meanabs","1Kj":"@stdlib/stats-iter-meanabs","1Kk":"@stdlib/stats/iter/meanabs2","1Kl":"@stdlib/stats-iter-meanabs2","1Km":"@stdlib/stats/iter/midrange","1Kn":"@stdlib/stats-iter-midrange","1Ko":"@stdlib/stats/iter/min","1Kp":"@stdlib/stats-iter-min","1Kq":"@stdlib/stats/iter/minabs","1Kr":"@stdlib/stats-iter-minabs","1Ks":"@stdlib/stats/iter/mmax","1Kt":"@stdlib/stats-iter-mmax","1Ku":"@stdlib/stats/iter/mmaxabs","1Kv":"@stdlib/stats-iter-mmaxabs","1Kw":"@stdlib/stats/iter/mmean","1Kx":"@stdlib/stats-iter-mmean","1Ky":"@stdlib/stats/iter/mmeanabs","1Kz":"@stdlib/stats-iter-mmeanabs","1L0":"@stdlib/stats/iter/mmeanabs2","1L1":"@stdlib/stats-iter-mmeanabs2","1L2":"@stdlib/stats/iter/mmidrange","1L3":"@stdlib/stats-iter-mmidrange","1L4":"@stdlib/stats/iter/mmin","1L5":"@stdlib/stats-iter-mmin","1L6":"@stdlib/stats/iter/mminabs","1L7":"@stdlib/stats-iter-mminabs","1L8":"@stdlib/stats/iter/mprod","1L9":"@stdlib/stats-iter-mprod","1LA":"@stdlib/stats/iter/mrange","1LB":"@stdlib/stats-iter-mrange","1LC":"@stdlib/stats/iter/msum","1LD":"@stdlib/stats-iter-msum","1LE":"@stdlib/stats/iter/msumabs","1LF":"@stdlib/stats-iter-msumabs","1LG":"@stdlib/stats/iter/msumabs2","1LH":"@stdlib/stats-iter-msumabs2","1LI":"@stdlib/stats/iter","1LJ":"@stdlib/stats-iter","1LK":"@stdlib/stats/iter/prod","1LL":"@stdlib/stats-iter-prod","1LM":"@stdlib/stats/iter/range","1LN":"@stdlib/stats-iter-range","1LO":"@stdlib/stats/iter/stdev","1LP":"@stdlib/stats-iter-stdev","1LQ":"@stdlib/stats/iter/sum","1LR":"@stdlib/stats-iter-sum","1LS":"@stdlib/stats/iter/sumabs","1LT":"@stdlib/stats-iter-sumabs","1LU":"@stdlib/stats/iter/sumabs2","1LV":"@stdlib/stats-iter-sumabs2","1LW":"@stdlib/stats/iter/variance","1LX":"@stdlib/stats-iter-variance","1LY":"@stdlib/stats/kde2d","1LZ":"@stdlib/stats-kde2d","1La":"@stdlib/stats/kruskal-test","1Lb":"@stdlib/stats-kruskal-test","1Lc":"@stdlib/stats/kstest","1Ld":"@stdlib/stats-kstest","1Le":"@stdlib/stats/levene-test","1Lf":"@stdlib/stats-levene-test","1Lg":"@stdlib/stats/lowess","1Lh":"@stdlib/stats-lowess","2Jk":"@stdlib/stats/max-by","2Jl":"@stdlib/stats-max-by","2F6":"@stdlib/stats/max","2F7":"@stdlib/stats-max","2Uk":"@stdlib/stats/maxabs","2Ul":"@stdlib/stats-maxabs","2cG":"@stdlib/stats/maxsorted","2cH":"@stdlib/stats-maxsorted","2Um":"@stdlib/stats/mean","2Un":"@stdlib/stats-mean","2cI":"@stdlib/stats/meankbn","2cJ":"@stdlib/stats-meankbn","2cK":"@stdlib/stats/meankbn2","2cL":"@stdlib/stats-meankbn2","2cM":"@stdlib/stats/meanors","2cN":"@stdlib/stats-meanors","2cO":"@stdlib/stats/meanpn","2cP":"@stdlib/stats-meanpn","2cQ":"@stdlib/stats/meanpw","2cR":"@stdlib/stats-meanpw","2cS":"@stdlib/stats/meanwd","2cT":"@stdlib/stats-meanwd","2cU":"@stdlib/stats/mediansorted","2cV":"@stdlib/stats-mediansorted","2tI":"@stdlib/stats/midrange-by","2tJ":"@stdlib/stats-midrange-by","2tK":"@stdlib/stats/midrange","2tL":"@stdlib/stats-midrange","2Uo":"@stdlib/stats/min-by","2Up":"@stdlib/stats-min-by","2Uq":"@stdlib/stats/min","2Ur":"@stdlib/stats-min","2Us":"@stdlib/stats/minabs","2Ut":"@stdlib/stats-minabs","2cW":"@stdlib/stats/minsorted","2cX":"@stdlib/stats-minsorted","2cY":"@stdlib/stats/nanmax-by","2cZ":"@stdlib/stats-nanmax-by","2Uu":"@stdlib/stats/nanmax","2Uv":"@stdlib/stats-nanmax","2ca":"@stdlib/stats/nanmaxabs","2cb":"@stdlib/stats-nanmaxabs","2VG":"@stdlib/stats/nanmean","2VH":"@stdlib/stats-nanmean","2cc":"@stdlib/stats/nanmeanors","2cd":"@stdlib/stats-nanmeanors","2ce":"@stdlib/stats/nanmeanpn","2cf":"@stdlib/stats-nanmeanpn","2cg":"@stdlib/stats/nanmeanwd","2ch":"@stdlib/stats-nanmeanwd","2tM":"@stdlib/stats/nanmidrange-by","2tN":"@stdlib/stats-nanmidrange-by","2tO":"@stdlib/stats/nanmidrange","2tP":"@stdlib/stats-nanmidrange","2ci":"@stdlib/stats/nanmin-by","2cj":"@stdlib/stats-nanmin-by","2Uw":"@stdlib/stats/nanmin","2Ux":"@stdlib/stats-nanmin","2ck":"@stdlib/stats/nanminabs","2cl":"@stdlib/stats-nanminabs","2tQ":"@stdlib/stats/nanrange-by","2tR":"@stdlib/stats-nanrange-by","2tS":"@stdlib/stats/nanrange","2tT":"@stdlib/stats-nanrange","1Lj":"@stdlib/stats","1Lk":"@stdlib/stats/padjust","1Ll":"@stdlib/stats-padjust","1Lm":"@stdlib/stats/pcorrtest","1Ln":"@stdlib/stats-pcorrtest","2cm":"@stdlib/stats/range-by","2cn":"@stdlib/stats-range-by","2Uy":"@stdlib/stats/range","2Uz":"@stdlib/stats-range","2tU":"@stdlib/stats/rangeabs","2tV":"@stdlib/stats-rangeabs","1Lo":"@stdlib/stats/ranks","1Lp":"@stdlib/stats-ranks","2QE":"@stdlib/stats/strided/covarmtk","2QF":"@stdlib/stats-strided-covarmtk","2QG":"@stdlib/stats/strided/dcovarmtk","2QH":"@stdlib/stats-strided-dcovarmtk","2QI":"@stdlib/stats/strided/dcovmatmtk","2QJ":"@stdlib/stats-strided-dcovmatmtk","28i":"@stdlib/stats/strided/dcumax","28j":"@stdlib/stats-strided-dcumax","28k":"@stdlib/stats/strided/dcumaxabs","28l":"@stdlib/stats-strided-dcumaxabs","2E6":"@stdlib/stats/strided/dcumin","2E7":"@stdlib/stats-strided-dcumin","28m":"@stdlib/stats/strided/dcuminabs","28n":"@stdlib/stats-strided-dcuminabs","2tW":"@stdlib/stats/strided/distances/dchebyshev","2tX":"@stdlib/stats-strided-distances-dchebyshev","2tY":"@stdlib/stats/strided/distances/dcityblock","2tZ":"@stdlib/stats-strided-distances-dcityblock","2ta":"@stdlib/stats/strided/distances/dcorrelation","2tb":"@stdlib/stats-strided-distances-dcorrelation","2tc":"@stdlib/stats/strided/distances/dcosine-distance","2td":"@stdlib/stats-strided-distances-dcosine-distance","2te":"@stdlib/stats/strided/distances/dcosine-similarity","2tf":"@stdlib/stats-strided-distances-dcosine-similarity","2tg":"@stdlib/stats/strided/distances/deuclidean","2th":"@stdlib/stats-strided-distances-deuclidean","2ti":"@stdlib/stats/strided/distances/dminkowski","2tj":"@stdlib/stats-strided-distances-dminkowski","2tk":"@stdlib/stats/strided/distances/dsquared-euclidean","2tl":"@stdlib/stats-strided-distances-dsquared-euclidean","2tm":"@stdlib/stats/strided/distances","2tn":"@stdlib/stats-strided-distances","2zC":"@stdlib/stats/strided/dmax-sorted","2zD":"@stdlib/stats-strided-dmax-sorted","26I":"@stdlib/stats/strided/dmax","26J":"@stdlib/stats-strided-dmax","2xc":"@stdlib/stats/strided/dmaxabs-sorted","2xd":"@stdlib/stats-strided-dmaxabs-sorted","28o":"@stdlib/stats/strided/dmaxabs","28p":"@stdlib/stats-strided-dmaxabs","2Jm":"@stdlib/stats/strided/dmean","2Jn":"@stdlib/stats-strided-dmean","28u":"@stdlib/stats/strided/dmeankbn","28v":"@stdlib/stats-strided-dmeankbn","28w":"@stdlib/stats/strided/dmeankbn2","28x":"@stdlib/stats-strided-dmeankbn2","28y":"@stdlib/stats/strided/dmeanli","28z":"@stdlib/stats-strided-dmeanli","2Jo":"@stdlib/stats/strided/dmeanpn","2Jp":"@stdlib/stats-strided-dmeanpn","2QK":"@stdlib/stats/strided/dmeanstdev","2QL":"@stdlib/stats-strided-dmeanstdev","2QM":"@stdlib/stats/strided/dmeanstdevpn","2QN":"@stdlib/stats-strided-dmeanstdevpn","2QO":"@stdlib/stats/strided/dmeanvar","2QP":"@stdlib/stats-strided-dmeanvar","2QQ":"@stdlib/stats/strided/dmeanvarpn","2QR":"@stdlib/stats-strided-dmeanvarpn","33E":"@stdlib/stats/strided/dmedian-sorted","33F":"@stdlib/stats-strided-dmedian-sorted","29A":"@stdlib/stats/strided/dmidrange","29B":"@stdlib/stats-strided-dmidrange","2to":"@stdlib/stats/strided/dmidrangeabs","2tp":"@stdlib/stats-strided-dmidrangeabs","29C":"@stdlib/stats/strided/dmin","29D":"@stdlib/stats-strided-dmin","29E":"@stdlib/stats/strided/dminabs","29F":"@stdlib/stats-strided-dminabs","29G":"@stdlib/stats/strided/dminsorted","29H":"@stdlib/stats-strided-dminsorted","2E8":"@stdlib/stats/strided/dmskmax","2E9":"@stdlib/stats-strided-dmskmax","2tq":"@stdlib/stats/strided/dmskmaxabs","2tr":"@stdlib/stats-strided-dmskmaxabs","2ts":"@stdlib/stats/strided/dmskmidrange","2tt":"@stdlib/stats-strided-dmskmidrange","2EA":"@stdlib/stats/strided/dmskmin","2EB":"@stdlib/stats-strided-dmskmin","2EC":"@stdlib/stats/strided/dmskrange","2ED":"@stdlib/stats-strided-dmskrange","29I":"@stdlib/stats/strided/dnanmax","29J":"@stdlib/stats-strided-dnanmax","29K":"@stdlib/stats/strided/dnanmaxabs","29L":"@stdlib/stats-strided-dnanmaxabs","29M":"@stdlib/stats/strided/dnanmean","29N":"@stdlib/stats-strided-dnanmean","2Ay":"@stdlib/stats/strided/dnanmeanors","2Az":"@stdlib/stats-strided-dnanmeanors","2B0":"@stdlib/stats/strided/dnanmeanpn","2B1":"@stdlib/stats-strided-dnanmeanpn","2B2":"@stdlib/stats/strided/dnanmeanpw","2B3":"@stdlib/stats-strided-dnanmeanpw","2B4":"@stdlib/stats/strided/dnanmeanwd","2B5":"@stdlib/stats-strided-dnanmeanwd","2tu":"@stdlib/stats/strided/dnanmidrange","2tv":"@stdlib/stats-strided-dnanmidrange","2B6":"@stdlib/stats/strided/dnanmin","2B7":"@stdlib/stats-strided-dnanmin","2B8":"@stdlib/stats/strided/dnanminabs","2B9":"@stdlib/stats-strided-dnanminabs","2Jq":"@stdlib/stats/strided/dnanmskmax","2Jr":"@stdlib/stats-strided-dnanmskmax","2tw":"@stdlib/stats/strided/dnanmskmaxabs","2tx":"@stdlib/stats-strided-dnanmskmaxabs","2ty":"@stdlib/stats/strided/dnanmskmidrange","2tz":"@stdlib/stats-strided-dnanmskmidrange","2Js":"@stdlib/stats/strided/dnanmskmin","2Jt":"@stdlib/stats-strided-dnanmskmin","2u0":"@stdlib/stats/strided/dnanmskminabs","2u1":"@stdlib/stats-strided-dnanmskminabs","2Ju":"@stdlib/stats/strided/dnanmskrange","2Jv":"@stdlib/stats-strided-dnanmskrange","2BA":"@stdlib/stats/strided/dnanrange","2BB":"@stdlib/stats-strided-dnanrange","2u2":"@stdlib/stats/strided/dnanrangeabs","2u3":"@stdlib/stats-strided-dnanrangeabs","2Jw":"@stdlib/stats/strided/dnanstdev","2Jx":"@stdlib/stats-strided-dnanstdev","2BC":"@stdlib/stats/strided/dnanstdevch","2BD":"@stdlib/stats-strided-dnanstdevch","2BE":"@stdlib/stats/strided/dnanstdevpn","2BF":"@stdlib/stats-strided-dnanstdevpn","2BG":"@stdlib/stats/strided/dnanstdevtk","2BH":"@stdlib/stats-strided-dnanstdevtk","2BI":"@stdlib/stats/strided/dnanstdevwd","2BJ":"@stdlib/stats-strided-dnanstdevwd","2BK":"@stdlib/stats/strided/dnanstdevyc","2BL":"@stdlib/stats-strided-dnanstdevyc","2BM":"@stdlib/stats/strided/dnanvariance","2BN":"@stdlib/stats-strided-dnanvariance","2BO":"@stdlib/stats/strided/dnanvariancech","2BP":"@stdlib/stats-strided-dnanvariancech","2BQ":"@stdlib/stats/strided/dnanvariancepn","2BR":"@stdlib/stats-strided-dnanvariancepn","2BS":"@stdlib/stats/strided/dnanvariancetk","2BT":"@stdlib/stats-strided-dnanvariancetk","2BU":"@stdlib/stats/strided/dnanvariancewd","2BV":"@stdlib/stats-strided-dnanvariancewd","2BW":"@stdlib/stats/strided/dnanvarianceyc","2BX":"@stdlib/stats-strided-dnanvarianceyc","2u4":"@stdlib/stats/strided/dpcorr","2u5":"@stdlib/stats-strided-dpcorr","2u6":"@stdlib/stats/strided/dpcorrwd","2u7":"@stdlib/stats-strided-dpcorrwd","2BY":"@stdlib/stats/strided/drange","2BZ":"@stdlib/stats-strided-drange","2u8":"@stdlib/stats/strided/drangeabs","2u9":"@stdlib/stats-strided-drangeabs","2Jy":"@stdlib/stats/strided/dsem","2Jz":"@stdlib/stats-strided-dsem","2Ba":"@stdlib/stats/strided/dsemch","2Bb":"@stdlib/stats-strided-dsemch","2K0":"@stdlib/stats/strided/dsempn","2K1":"@stdlib/stats-strided-dsempn","2Bc":"@stdlib/stats/strided/dsemtk","2Bd":"@stdlib/stats-strided-dsemtk","2Be":"@stdlib/stats/strided/dsemwd","2Bf":"@stdlib/stats-strided-dsemwd","2Bg":"@stdlib/stats/strided/dsemyc","2Bh":"@stdlib/stats-strided-dsemyc","2Bi":"@stdlib/stats/strided/dsmean","2Bj":"@stdlib/stats-strided-dsmean","2EE":"@stdlib/stats/strided/dsmeanors","2EF":"@stdlib/stats-strided-dsmeanors","2Bk":"@stdlib/stats/strided/dsmeanpn","2Bl":"@stdlib/stats-strided-dsmeanpn","2Bm":"@stdlib/stats/strided/dsmeanpw","2Bn":"@stdlib/stats-strided-dsmeanpw","2Bo":"@stdlib/stats/strided/dsmeanwd","2Bp":"@stdlib/stats-strided-dsmeanwd","2Bq":"@stdlib/stats/strided/dsnanmean","2Br":"@stdlib/stats-strided-dsnanmean","2Bs":"@stdlib/stats/strided/dsnanmeanors","2Bt":"@stdlib/stats-strided-dsnanmeanors","2Bu":"@stdlib/stats/strided/dsnanmeanpn","2Bv":"@stdlib/stats-strided-dsnanmeanpn","2Bw":"@stdlib/stats/strided/dsnanmeanwd","2Bx":"@stdlib/stats-strided-dsnanmeanwd","2K2":"@stdlib/stats/strided/dstdev","2K3":"@stdlib/stats-strided-dstdev","2By":"@stdlib/stats/strided/dstdevch","2Bz":"@stdlib/stats-strided-dstdevch","2C0":"@stdlib/stats/strided/dstdevpn","2C1":"@stdlib/stats-strided-dstdevpn","2C2":"@stdlib/stats/strided/dstdevtk","2C3":"@stdlib/stats-strided-dstdevtk","2C4":"@stdlib/stats/strided/dstdevwd","2C5":"@stdlib/stats-strided-dstdevwd","2C6":"@stdlib/stats/strided/dstdevyc","2C7":"@stdlib/stats-strided-dstdevyc","2C8":"@stdlib/stats/strided/dsvariance","2C9":"@stdlib/stats-strided-dsvariance","2CA":"@stdlib/stats/strided/dsvariancepn","2CB":"@stdlib/stats-strided-dsvariancepn","2CC":"@stdlib/stats/strided/dvariance","2CD":"@stdlib/stats-strided-dvariance","2CE":"@stdlib/stats/strided/dvariancech","2CF":"@stdlib/stats-strided-dvariancech","2CG":"@stdlib/stats/strided/dvariancepn","2CH":"@stdlib/stats-strided-dvariancepn","2CI":"@stdlib/stats/strided/dvariancetk","2CJ":"@stdlib/stats-strided-dvariancetk","2CK":"@stdlib/stats/strided/dvariancewd","2CL":"@stdlib/stats-strided-dvariancewd","2CM":"@stdlib/stats/strided/dvarianceyc","2CN":"@stdlib/stats-strided-dvarianceyc","2M0":"@stdlib/stats/strided/dvarm","2M1":"@stdlib/stats-strided-dvarm","2M2":"@stdlib/stats/strided/dvarmpn","2M3":"@stdlib/stats-strided-dvarmpn","2CO":"@stdlib/stats/strided/dvarmtk","2CP":"@stdlib/stats-strided-dvarmtk","2M4":"@stdlib/stats/strided/dztest","2M5":"@stdlib/stats-strided-dztest","2SE":"@stdlib/stats/strided/dztest2","2SF":"@stdlib/stats-strided-dztest2","2M6":"@stdlib/stats/strided/max-by","2M7":"@stdlib/stats-strided-max-by","2M8":"@stdlib/stats/strided/max","2M9":"@stdlib/stats-strided-max","2MA":"@stdlib/stats/strided/maxabs","2MB":"@stdlib/stats-strided-maxabs","2MC":"@stdlib/stats/strided/maxsorted","2MD":"@stdlib/stats-strided-maxsorted","2ME":"@stdlib/stats/strided/mean","2MF":"@stdlib/stats-strided-mean","2MG":"@stdlib/stats/strided/meankbn","2MH":"@stdlib/stats-strided-meankbn","2MI":"@stdlib/stats/strided/meankbn2","2MJ":"@stdlib/stats-strided-meankbn2","2MK":"@stdlib/stats/strided/meanors","2ML":"@stdlib/stats-strided-meanors","2MM":"@stdlib/stats/strided/meanpn","2MN":"@stdlib/stats-strided-meanpn","2MO":"@stdlib/stats/strided/meanpw","2MP":"@stdlib/stats-strided-meanpw","2MQ":"@stdlib/stats/strided/meanwd","2MR":"@stdlib/stats-strided-meanwd","2MS":"@stdlib/stats/strided/mediansorted","2MT":"@stdlib/stats-strided-mediansorted","2uA":"@stdlib/stats/strided/midrange-by","2uB":"@stdlib/stats-strided-midrange-by","2uC":"@stdlib/stats/strided/midrange","2uD":"@stdlib/stats-strided-midrange","2uE":"@stdlib/stats/strided/midrangeabs","2uF":"@stdlib/stats-strided-midrangeabs","2MU":"@stdlib/stats/strided/min-by","2MV":"@stdlib/stats-strided-min-by","2MW":"@stdlib/stats/strided/min","2MX":"@stdlib/stats-strided-min","2MY":"@stdlib/stats/strided/minabs","2MZ":"@stdlib/stats-strided-minabs","2Ma":"@stdlib/stats/strided/minsorted","2Mb":"@stdlib/stats-strided-minsorted","2Mc":"@stdlib/stats/strided/mskmax","2Md":"@stdlib/stats-strided-mskmax","2uG":"@stdlib/stats/strided/mskmaxabs","2uH":"@stdlib/stats-strided-mskmaxabs","2uI":"@stdlib/stats/strided/mskmidrange","2uJ":"@stdlib/stats-strided-mskmidrange","2Me":"@stdlib/stats/strided/mskmin","2Mf":"@stdlib/stats-strided-mskmin","2uK":"@stdlib/stats/strided/mskminabs","2uL":"@stdlib/stats-strided-mskminabs","2Mg":"@stdlib/stats/strided/mskrange","2Mh":"@stdlib/stats-strided-mskrange","2Mi":"@stdlib/stats/strided/nanmax-by","2Mj":"@stdlib/stats-strided-nanmax-by","2Mk":"@stdlib/stats/strided/nanmax","2Ml":"@stdlib/stats-strided-nanmax","2Mm":"@stdlib/stats/strided/nanmaxabs","2Mn":"@stdlib/stats-strided-nanmaxabs","2QS":"@stdlib/stats/strided/nanmean","2QT":"@stdlib/stats-strided-nanmean","2QU":"@stdlib/stats/strided/nanmeanors","2QV":"@stdlib/stats-strided-nanmeanors","2QW":"@stdlib/stats/strided/nanmeanpn","2QX":"@stdlib/stats-strided-nanmeanpn","2QY":"@stdlib/stats/strided/nanmeanwd","2QZ":"@stdlib/stats-strided-nanmeanwd","2uM":"@stdlib/stats/strided/nanmidrange-by","2uN":"@stdlib/stats-strided-nanmidrange-by","2uO":"@stdlib/stats/strided/nanmidrange","2uP":"@stdlib/stats-strided-nanmidrange","2Mo":"@stdlib/stats/strided/nanmin-by","2Mp":"@stdlib/stats-strided-nanmin-by","2Mq":"@stdlib/stats/strided/nanmin","2Mr":"@stdlib/stats-strided-nanmin","2Ms":"@stdlib/stats/strided/nanminabs","2Mt":"@stdlib/stats-strided-nanminabs","2Qa":"@stdlib/stats/strided/nanmskmax","2Qb":"@stdlib/stats-strided-nanmskmax","2uQ":"@stdlib/stats/strided/nanmskmidrange","2uR":"@stdlib/stats-strided-nanmskmidrange","2Qc":"@stdlib/stats/strided/nanmskmin","2Qd":"@stdlib/stats-strided-nanmskmin","2Qe":"@stdlib/stats/strided/nanmskrange","2Qf":"@stdlib/stats-strided-nanmskrange","2Qg":"@stdlib/stats/strided/nanrange-by","2Qh":"@stdlib/stats-strided-nanrange-by","2Qi":"@stdlib/stats/strided/nanrange","2Qj":"@stdlib/stats-strided-nanrange","2uS":"@stdlib/stats/strided/nanrangeabs","2uT":"@stdlib/stats-strided-nanrangeabs","2SG":"@stdlib/stats/strided/nanstdev","2SH":"@stdlib/stats-strided-nanstdev","2SI":"@stdlib/stats/strided/nanstdevch","2SJ":"@stdlib/stats-strided-nanstdevch","2SK":"@stdlib/stats/strided/nanstdevpn","2SL":"@stdlib/stats-strided-nanstdevpn","2SM":"@stdlib/stats/strided/nanstdevtk","2SN":"@stdlib/stats-strided-nanstdevtk","2SO":"@stdlib/stats/strided/nanstdevwd","2SP":"@stdlib/stats-strided-nanstdevwd","2SQ":"@stdlib/stats/strided/nanstdevyc","2SR":"@stdlib/stats-strided-nanstdevyc","2Qk":"@stdlib/stats/strided/nanvariance","2Ql":"@stdlib/stats-strided-nanvariance","2Qm":"@stdlib/stats/strided/nanvariancech","2Qn":"@stdlib/stats-strided-nanvariancech","2Qo":"@stdlib/stats/strided/nanvariancepn","2Qp":"@stdlib/stats-strided-nanvariancepn","2Qq":"@stdlib/stats/strided/nanvariancetk","2Qr":"@stdlib/stats-strided-nanvariancetk","2Qs":"@stdlib/stats/strided/nanvariancewd","2Qt":"@stdlib/stats-strided-nanvariancewd","2Qu":"@stdlib/stats/strided/nanvarianceyc","2Qv":"@stdlib/stats-strided-nanvarianceyc","2K4":"@stdlib/stats/strided","2K5":"@stdlib/stats-strided","2Qw":"@stdlib/stats/strided/range-by","2Qx":"@stdlib/stats-strided-range-by","2Qy":"@stdlib/stats/strided/range","2Qz":"@stdlib/stats-strided-range","2uU":"@stdlib/stats/strided/rangeabs","2uV":"@stdlib/stats-strided-rangeabs","2R0":"@stdlib/stats/strided/scovarmtk","2R1":"@stdlib/stats-strided-scovarmtk","2CQ":"@stdlib/stats/strided/scumax","2CR":"@stdlib/stats-strided-scumax","2CS":"@stdlib/stats/strided/scumaxabs","2CT":"@stdlib/stats-strided-scumaxabs","2CU":"@stdlib/stats/strided/scumin","2CV":"@stdlib/stats-strided-scumin","2CW":"@stdlib/stats/strided/scuminabs","2CX":"@stdlib/stats-strided-scuminabs","2CY":"@stdlib/stats/strided/sdsmean","2CZ":"@stdlib/stats-strided-sdsmean","2Ca":"@stdlib/stats/strided/sdsmeanors","2Cb":"@stdlib/stats-strided-sdsmeanors","2Vs":"@stdlib/stats/strided/sdsnanmeanors","2Vt":"@stdlib/stats-strided-sdsnanmeanors","2Cc":"@stdlib/stats/strided/smax","2Cd":"@stdlib/stats-strided-smax","2Ce":"@stdlib/stats/strided/smaxabs","2Cf":"@stdlib/stats-strided-smaxabs","2Cg":"@stdlib/stats/strided/smaxabssorted","2Ch":"@stdlib/stats-strided-smaxabssorted","2Ci":"@stdlib/stats/strided/smaxsorted","2Cj":"@stdlib/stats-strided-smaxsorted","2Mu":"@stdlib/stats/strided/smean","2Mv":"@stdlib/stats-strided-smean","2R2":"@stdlib/stats/strided/smeankbn","2R3":"@stdlib/stats-strided-smeankbn","2R4":"@stdlib/stats/strided/smeankbn2","2R5":"@stdlib/stats-strided-smeankbn2","2Ck":"@stdlib/stats/strided/smeanli","2Cl":"@stdlib/stats-strided-smeanli","2R6":"@stdlib/stats/strided/smeanlipw","2R7":"@stdlib/stats-strided-smeanlipw","2R8":"@stdlib/stats/strided/smeanors","2R9":"@stdlib/stats-strided-smeanors","2Mw":"@stdlib/stats/strided/smeanpn","2Mx":"@stdlib/stats-strided-smeanpn","2Cm":"@stdlib/stats/strided/smeanpw","2Cn":"@stdlib/stats-strided-smeanpw","2Co":"@stdlib/stats/strided/smeanwd","2Cp":"@stdlib/stats-strided-smeanwd","2Cq":"@stdlib/stats/strided/smediansorted","2Cr":"@stdlib/stats-strided-smediansorted","2EG":"@stdlib/stats/strided/smidrange","2EH":"@stdlib/stats-strided-smidrange","2Cs":"@stdlib/stats/strided/smin","2Ct":"@stdlib/stats-strided-smin","2Cu":"@stdlib/stats/strided/sminabs","2Cv":"@stdlib/stats-strided-sminabs","2Cw":"@stdlib/stats/strided/sminsorted","2Cx":"@stdlib/stats-strided-sminsorted","2Cy":"@stdlib/stats/strided/smskmax","2Cz":"@stdlib/stats-strided-smskmax","2uW":"@stdlib/stats/strided/smskmaxabs","2uX":"@stdlib/stats-strided-smskmaxabs","2uY":"@stdlib/stats/strided/smskmidrange","2uZ":"@stdlib/stats-strided-smskmidrange","2D0":"@stdlib/stats/strided/smskmin","2D1":"@stdlib/stats-strided-smskmin","2D2":"@stdlib/stats/strided/smskrange","2D3":"@stdlib/stats-strided-smskrange","2D4":"@stdlib/stats/strided/snanmax","2D5":"@stdlib/stats-strided-snanmax","2D6":"@stdlib/stats/strided/snanmaxabs","2D7":"@stdlib/stats-strided-snanmaxabs","2Vu":"@stdlib/stats/strided/snanmean","2Vv":"@stdlib/stats-strided-snanmean","2D8":"@stdlib/stats/strided/snanmeanors","2D9":"@stdlib/stats-strided-snanmeanors","2DA":"@stdlib/stats/strided/snanmeanpn","2DB":"@stdlib/stats-strided-snanmeanpn","2DC":"@stdlib/stats/strided/snanmeanwd","2DD":"@stdlib/stats-strided-snanmeanwd","2ua":"@stdlib/stats/strided/snanmidrange","2ub":"@stdlib/stats-strided-snanmidrange","2DE":"@stdlib/stats/strided/snanmin","2DF":"@stdlib/stats-strided-snanmin","2DG":"@stdlib/stats/strided/snanminabs","2DH":"@stdlib/stats-strided-snanminabs","2K6":"@stdlib/stats/strided/snanmskmax","2K7":"@stdlib/stats-strided-snanmskmax","2uc":"@stdlib/stats/strided/snanmskmaxabs","2ud":"@stdlib/stats-strided-snanmskmaxabs","2ue":"@stdlib/stats/strided/snanmskmidrange","2uf":"@stdlib/stats-strided-snanmskmidrange","2K8":"@stdlib/stats/strided/snanmskmin","2K9":"@stdlib/stats-strided-snanmskmin","2ug":"@stdlib/stats/strided/snanmskminabs","2uh":"@stdlib/stats-strided-snanmskminabs","2KA":"@stdlib/stats/strided/snanmskrange","2KB":"@stdlib/stats-strided-snanmskrange","2DI":"@stdlib/stats/strided/snanrange","2DJ":"@stdlib/stats-strided-snanrange","2DK":"@stdlib/stats/strided/srange","2DL":"@stdlib/stats-strided-srange","2ui":"@stdlib/stats/strided/srangeabs","2uj":"@stdlib/stats-strided-srangeabs","2My":"@stdlib/stats/strided/sstdev","2Mz":"@stdlib/stats-strided-sstdev","2DM":"@stdlib/stats/strided/sstdevch","2DN":"@stdlib/stats-strided-sstdevch","2DO":"@stdlib/stats/strided/sstdevpn","2DP":"@stdlib/stats-strided-sstdevpn","2DQ":"@stdlib/stats/strided/sstdevtk","2DR":"@stdlib/stats-strided-sstdevtk","2Vw":"@stdlib/stats/strided/sstdevwd","2Vx":"@stdlib/stats-strided-sstdevwd","2EI":"@stdlib/stats/strided/sstdevyc","2EJ":"@stdlib/stats-strided-sstdevyc","2RA":"@stdlib/stats/strided/stdev","2RB":"@stdlib/stats-strided-stdev","2RC":"@stdlib/stats/strided/stdevch","2RD":"@stdlib/stats-strided-stdevch","2RE":"@stdlib/stats/strided/stdevpn","2RF":"@stdlib/stats-strided-stdevpn","2RG":"@stdlib/stats/strided/stdevtk","2RH":"@stdlib/stats-strided-stdevtk","2RI":"@stdlib/stats/strided/stdevwd","2RJ":"@stdlib/stats-strided-stdevwd","2RK":"@stdlib/stats/strided/stdevyc","2RL":"@stdlib/stats-strided-stdevyc","2N0":"@stdlib/stats/strided/svariance","2N1":"@stdlib/stats-strided-svariance","2EK":"@stdlib/stats/strided/svariancech","2EL":"@stdlib/stats-strided-svariancech","2EM":"@stdlib/stats/strided/svariancepn","2EN":"@stdlib/stats-strided-svariancepn","2EO":"@stdlib/stats/strided/svariancetk","2EP":"@stdlib/stats-strided-svariancetk","2N2":"@stdlib/stats/strided/svariancewd","2N3":"@stdlib/stats-strided-svariancewd","2EQ":"@stdlib/stats/strided/svarianceyc","2ER":"@stdlib/stats-strided-svarianceyc","2N4":"@stdlib/stats/strided/sztest","2N5":"@stdlib/stats-strided-sztest","2RM":"@stdlib/stats/strided/sztest2","2RN":"@stdlib/stats-strided-sztest2","2RO":"@stdlib/stats/strided/variance","2RP":"@stdlib/stats-strided-variance","2RQ":"@stdlib/stats/strided/variancech","2RR":"@stdlib/stats-strided-variancech","2RS":"@stdlib/stats/strided/variancepn","2RT":"@stdlib/stats-strided-variancepn","2RU":"@stdlib/stats/strided/variancetk","2RV":"@stdlib/stats-strided-variancetk","2RW":"@stdlib/stats/strided/variancewd","2RX":"@stdlib/stats-strided-variancewd","2RY":"@stdlib/stats/strided/varianceyc","2RZ":"@stdlib/stats-strided-varianceyc","2GY":"@stdlib/stats/strided/wasm/dmeanors","2GZ":"@stdlib/stats-strided-wasm-dmeanors","2Yq":"@stdlib/stats/strided/wasm/dmeanpw","2Yr":"@stdlib/stats-strided-wasm-dmeanpw","2KC":"@stdlib/stats/strided/wasm/dmeanwd","2KD":"@stdlib/stats-strided-wasm-dmeanwd","2WK":"@stdlib/stats/strided/wasm/dnanvariancewd","2WL":"@stdlib/stats-strided-wasm-dnanvariancewd","2N6":"@stdlib/stats/strided/ztest","2N7":"@stdlib/stats-strided-ztest","2Ra":"@stdlib/stats/strided/ztest2","2Rb":"@stdlib/stats-strided-ztest2","1Lq":"@stdlib/stats/ttest","1Lr":"@stdlib/stats-ttest","1Ls":"@stdlib/stats/ttest2","1Lt":"@stdlib/stats-ttest2","1Lu":"@stdlib/stats/vartest","1Lv":"@stdlib/stats-vartest","1Lw":"@stdlib/stats/wilcoxon","1Lx":"@stdlib/stats-wilcoxon","1Ly":"@stdlib/stats/ztest","1Lz":"@stdlib/stats-ztest","1M0":"@stdlib/stats/ztest2","1M1":"@stdlib/stats-ztest2","1M2":"@stdlib/streams/node/debug-sink","1M3":"@stdlib/streams-node-debug-sink","1M4":"@stdlib/streams/node/debug","1M5":"@stdlib/streams-node-debug","1M6":"@stdlib/streams/node/empty","1M7":"@stdlib/streams-node-empty","1M8":"@stdlib/streams/node/from-array","1M9":"@stdlib/streams-node-from-array","1MA":"@stdlib/streams/node/from-circular-array","1MB":"@stdlib/streams-node-from-circular-array","1MC":"@stdlib/streams/node/from-constant","1MD":"@stdlib/streams-node-from-constant","1ME":"@stdlib/streams/node/from-iterator","1MF":"@stdlib/streams-node-from-iterator","1MG":"@stdlib/streams/node/from-strided-array","1MH":"@stdlib/streams-node-from-strided-array","1MI":"@stdlib/streams/node/inspect-sink","1MJ":"@stdlib/streams-node-inspect-sink","1MK":"@stdlib/streams/node/inspect","1ML":"@stdlib/streams-node-inspect","1MM":"@stdlib/streams/node/join","1MN":"@stdlib/streams-node-join","1MO":"@stdlib/streams/node","1MP":"@stdlib/streams-node","1MQ":"@stdlib/streams/node/split","1MR":"@stdlib/streams-node-split","1MS":"@stdlib/streams/node/stderr","1MT":"@stdlib/streams-node-stderr","1MU":"@stdlib/streams/node/stdin","1MV":"@stdlib/streams-node-stdin","1MW":"@stdlib/streams/node/stdout","1MX":"@stdlib/streams-node-stdout","1MY":"@stdlib/streams/node/transform","1MZ":"@stdlib/streams-node-transform","1Mb":"@stdlib/streams","1Mc":"@stdlib/strided/base/binary-addon-dispatch","1Md":"@stdlib/strided-base-binary-addon-dispatch","1Me":"@stdlib/strided/base/binary-dtype-signatures","1Mf":"@stdlib/strided-base-binary-dtype-signatures","1Mg":"@stdlib/strided/base/binary-signature-callbacks","1Mh":"@stdlib/strided-base-binary-signature-callbacks","1Mi":"@stdlib/strided/base/binary","1Mj":"@stdlib/strided-base-binary","1Mk":"@stdlib/strided/base/cmap","1Ml":"@stdlib/strided-base-cmap","1Mm":"@stdlib/strided/base/dmap","1Mn":"@stdlib/strided-base-dmap","1Mo":"@stdlib/strided/base/dmap2","1Mp":"@stdlib/strided-base-dmap2","1Mq":"@stdlib/strided/base/dmskmap","1Mr":"@stdlib/strided-base-dmskmap","1Ms":"@stdlib/strided/base/dmskmap2","1Mt":"@stdlib/strided-base-dmskmap2","1Mu":"@stdlib/strided/base/dtype-enum2str","1Mv":"@stdlib/strided-base-dtype-enum2str","1Mw":"@stdlib/strided/base/dtype-resolve-enum","1Mx":"@stdlib/strided-base-dtype-resolve-enum","1My":"@stdlib/strided/base/dtype-resolve-str","1Mz":"@stdlib/strided-base-dtype-resolve-str","1N0":"@stdlib/strided/base/dtype-str2enum","1N1":"@stdlib/strided-base-dtype-str2enum","1N2":"@stdlib/strided/base/function-object","1N3":"@stdlib/strided-base-function-object","1N4":"@stdlib/strided/base/map-by","1N5":"@stdlib/strided-base-map-by","1N6":"@stdlib/strided/base/map-by2","1N7":"@stdlib/strided-base-map-by2","1N8":"@stdlib/strided/base/max-view-buffer-index","1N9":"@stdlib/strided-base-max-view-buffer-index","1NA":"@stdlib/strided/base/meta-data-props","1NB":"@stdlib/strided-base-meta-data-props","1NC":"@stdlib/strided/base/min-view-buffer-index","1ND":"@stdlib/strided-base-min-view-buffer-index","1fK":"@stdlib/strided/base/mskunary-addon-dispatch","1fL":"@stdlib/strided-base-mskunary-addon-dispatch","1fM":"@stdlib/strided/base/mskunary-dtype-signatures","1fN":"@stdlib/strided-base-mskunary-dtype-signatures","1fO":"@stdlib/strided/base/mskunary-signature-callbacks","1fP":"@stdlib/strided-base-mskunary-signature-callbacks","1NE":"@stdlib/strided/base/mskunary","1NF":"@stdlib/strided-base-mskunary","1fQ":"@stdlib/strided/base/nullary-addon-dispatch","1fR":"@stdlib/strided-base-nullary-addon-dispatch","1NG":"@stdlib/strided/base/nullary","1NH":"@stdlib/strided-base-nullary","1NI":"@stdlib/strided/base/offset-view","1NJ":"@stdlib/strided-base-offset-view","1NK":"@stdlib/strided/base","1NL":"@stdlib/strided-base","1NM":"@stdlib/strided/base/quaternary","1NN":"@stdlib/strided-base-quaternary","1NO":"@stdlib/strided/base/quinary","1NP":"@stdlib/strided-base-quinary","1w4":"@stdlib/strided/base/reinterpret-boolean","1w5":"@stdlib/strided-base-reinterpret-boolean","1s2":"@stdlib/strided/base/reinterpret-complex","1s3":"@stdlib/strided-base-reinterpret-complex","1NQ":"@stdlib/strided/base/reinterpret-complex128","1NR":"@stdlib/strided-base-reinterpret-complex128","1NS":"@stdlib/strided/base/reinterpret-complex64","1NT":"@stdlib/strided-base-reinterpret-complex64","2uk":"@stdlib/strided/base/reinterpret-float16","2ul":"@stdlib/strided-base-reinterpret-float16","1NU":"@stdlib/strided/base/smap","1NV":"@stdlib/strided-base-smap","1NW":"@stdlib/strided/base/smap2","1NX":"@stdlib/strided-base-smap2","1NY":"@stdlib/strided/base/smskmap","1NZ":"@stdlib/strided-base-smskmap","1Na":"@stdlib/strided/base/smskmap2","1Nb":"@stdlib/strided-base-smskmap2","1xU":"@stdlib/strided/base/stride2offset","1xV":"@stdlib/strided-base-stride2offset","1Nc":"@stdlib/strided/base/ternary","1Nd":"@stdlib/strided-base-ternary","1Ne":"@stdlib/strided/base/unary-addon-dispatch","1Nf":"@stdlib/strided-base-unary-addon-dispatch","1fS":"@stdlib/strided/base/unary-by","1fT":"@stdlib/strided-base-unary-by","1fU":"@stdlib/strided/base/unary-dtype-signatures","1fV":"@stdlib/strided-base-unary-dtype-signatures","1fW":"@stdlib/strided/base/unary-signature-callbacks","1fX":"@stdlib/strided-base-unary-signature-callbacks","1Ng":"@stdlib/strided/base/unary","1Nh":"@stdlib/strided-base-unary","21A":"@stdlib/strided/base/write-dataview","21B":"@stdlib/strided-base-write-dataview","1Ni":"@stdlib/strided/base/zmap","1Nj":"@stdlib/strided-base-zmap","1Nk":"@stdlib/strided/common","1Nl":"@stdlib/strided-common","1fY":"@stdlib/strided/dispatch-by","1fZ":"@stdlib/strided-dispatch-by","1Nm":"@stdlib/strided/dispatch","1Nn":"@stdlib/strided-dispatch","1No":"@stdlib/strided/dtypes","1Np":"@stdlib/strided-dtypes","1Nq":"@stdlib/strided/napi/addon-arguments","1Nr":"@stdlib/strided-napi-addon-arguments","1Ns":"@stdlib/strided/napi/binary","1Nt":"@stdlib/strided-napi-binary","1Nu":"@stdlib/strided/napi/cmap","1Nv":"@stdlib/strided-napi-cmap","1Nw":"@stdlib/strided/napi/dmap","1Nx":"@stdlib/strided-napi-dmap","1Ny":"@stdlib/strided/napi/dmap2","1Nz":"@stdlib/strided-napi-dmap2","1O0":"@stdlib/strided/napi/dmskmap","1O1":"@stdlib/strided-napi-dmskmap","1O2":"@stdlib/strided/napi/dmskmap2","1O3":"@stdlib/strided-napi-dmskmap2","1O4":"@stdlib/strided/napi/mskunary","1O5":"@stdlib/strided-napi-mskunary","1fa":"@stdlib/strided/napi/nullary","1fb":"@stdlib/strided-napi-nullary","1O6":"@stdlib/strided/napi","1O7":"@stdlib/strided-napi","1O8":"@stdlib/strided/napi/smap","1O9":"@stdlib/strided-napi-smap","1OA":"@stdlib/strided/napi/smap2","1OB":"@stdlib/strided-napi-smap2","1OC":"@stdlib/strided/napi/smskmap","1OD":"@stdlib/strided-napi-smskmap","1OE":"@stdlib/strided/napi/smskmap2","1OF":"@stdlib/strided-napi-smskmap2","1OG":"@stdlib/strided/napi/unary","1OH":"@stdlib/strided-napi-unary","1OI":"@stdlib/strided/napi/zmap","1OJ":"@stdlib/strided-napi-zmap","1OL":"@stdlib/strided","1OM":"@stdlib/string/acronym","1ON":"@stdlib/string-acronym","1my":"@stdlib/string/base/altcase","1mz":"@stdlib/string-base-altcase","21C":"@stdlib/string/base/atob","21D":"@stdlib/string-base-atob","21m":"@stdlib/string/base/base64-to-uint8array","21n":"@stdlib/string-base-base64-to-uint8array","1fc":"@stdlib/string/base/camelcase","1fd":"@stdlib/string-base-camelcase","1fe":"@stdlib/string/base/capitalize","1ff":"@stdlib/string-base-capitalize","1fg":"@stdlib/string/base/code-point-at","1fh":"@stdlib/string-base-code-point-at","2Ys":"@stdlib/string/base/concat","2Yt":"@stdlib/string-base-concat","1fi":"@stdlib/string/base/constantcase","1fj":"@stdlib/string-base-constantcase","1n0":"@stdlib/string/base/distances/hamming","1n1":"@stdlib/string-base-distances-hamming","1fk":"@stdlib/string/base/distances/levenshtein","1fl":"@stdlib/string-base-distances-levenshtein","1fm":"@stdlib/string/base/distances","1fn":"@stdlib/string-base-distances","1fo":"@stdlib/string/base/dotcase","1fp":"@stdlib/string-base-dotcase","1fq":"@stdlib/string/base/ends-with","1fr":"@stdlib/string-base-ends-with","1fs":"@stdlib/string/base/first-code-point","1ft":"@stdlib/string-base-first-code-point","1fu":"@stdlib/string/base/first-grapheme-cluster","1fv":"@stdlib/string-base-first-grapheme-cluster","1fw":"@stdlib/string/base/first","1fx":"@stdlib/string-base-first","1vS":"@stdlib/string/base/for-each-code-point-right","1vT":"@stdlib/string-base-for-each-code-point-right","1fy":"@stdlib/string/base/for-each-code-point","1fz":"@stdlib/string-base-for-each-code-point","1g0":"@stdlib/string/base/for-each-grapheme-cluster","1g1":"@stdlib/string-base-for-each-grapheme-cluster","1sm":"@stdlib/string/base/for-each-right","1sn":"@stdlib/string-base-for-each-right","1g2":"@stdlib/string/base/for-each","1g3":"@stdlib/string-base-for-each","1OO":"@stdlib/string/base/format-interpolate","1OP":"@stdlib/string-base-format-interpolate","1OQ":"@stdlib/string/base/format-tokenize","1OR":"@stdlib/string-base-format-tokenize","1g4":"@stdlib/string/base/headercase","1g5":"@stdlib/string-base-headercase","1g6":"@stdlib/string/base/invcase","1g7":"@stdlib/string-base-invcase","1g8":"@stdlib/string/base/kebabcase","1g9":"@stdlib/string-base-kebabcase","1u0":"@stdlib/string/base/last-code-point","1u1":"@stdlib/string-base-last-code-point","1u2":"@stdlib/string/base/last-grapheme-cluster","1u3":"@stdlib/string-base-last-grapheme-cluster","1u4":"@stdlib/string/base/last","1u5":"@stdlib/string-base-last","1gA":"@stdlib/string/base/left-pad","1gB":"@stdlib/string-base-left-pad","1gC":"@stdlib/string/base/left-trim","1gD":"@stdlib/string-base-left-trim","1gE":"@stdlib/string/base/lowercase","1gF":"@stdlib/string-base-lowercase","1OS":"@stdlib/string/base","1OT":"@stdlib/string-base","1gG":"@stdlib/string/base/pascalcase","1gH":"@stdlib/string-base-pascalcase","1gI":"@stdlib/string/base/percent-encode","1gJ":"@stdlib/string-base-percent-encode","1gK":"@stdlib/string/base/remove-first-code-point","1gL":"@stdlib/string-base-remove-first-code-point","1gM":"@stdlib/string/base/remove-first-grapheme-cluster","1gN":"@stdlib/string-base-remove-first-grapheme-cluster","1gO":"@stdlib/string/base/remove-first","1gP":"@stdlib/string-base-remove-first","1jI":"@stdlib/string/base/remove-last-code-point","1jJ":"@stdlib/string-base-remove-last-code-point","1jK":"@stdlib/string/base/remove-last-grapheme-cluster","1jL":"@stdlib/string-base-remove-last-grapheme-cluster","1jM":"@stdlib/string/base/remove-last","1jN":"@stdlib/string-base-remove-last","1gQ":"@stdlib/string/base/repeat","1gR":"@stdlib/string-base-repeat","1so":"@stdlib/string/base/replace-after-last","1sp":"@stdlib/string-base-replace-after-last","1sq":"@stdlib/string/base/replace-after","1sr":"@stdlib/string-base-replace-after","1ss":"@stdlib/string/base/replace-before-last","1st":"@stdlib/string-base-replace-before-last","1gS":"@stdlib/string/base/replace-before","1gT":"@stdlib/string-base-replace-before","1gU":"@stdlib/string/base/replace","1gV":"@stdlib/string-base-replace","1lW":"@stdlib/string/base/reverse-code-points","1lX":"@stdlib/string-base-reverse-code-points","1lY":"@stdlib/string/base/reverse-grapheme-clusters","1lZ":"@stdlib/string-base-reverse-grapheme-clusters","1la":"@stdlib/string/base/reverse","1lb":"@stdlib/string-base-reverse","1gW":"@stdlib/string/base/right-pad","1gX":"@stdlib/string-base-right-pad","1gY":"@stdlib/string/base/right-trim","1gZ":"@stdlib/string-base-right-trim","2ES":"@stdlib/string/base/slice-code-points","2ET":"@stdlib/string-base-slice-code-points","2DS":"@stdlib/string/base/slice-grapheme-clusters","2DT":"@stdlib/string-base-slice-grapheme-clusters","2DU":"@stdlib/string/base/slice","2DV":"@stdlib/string-base-slice","1ga":"@stdlib/string/base/snakecase","1gb":"@stdlib/string-base-snakecase","1gc":"@stdlib/string/base/startcase","1gd":"@stdlib/string-base-startcase","1ge":"@stdlib/string/base/starts-with","1gf":"@stdlib/string-base-starts-with","1u6":"@stdlib/string/base/stickycase","1u7":"@stdlib/string-base-stickycase","1gg":"@stdlib/string/base/trim","1gh":"@stdlib/string-base-trim","1lc":"@stdlib/string/base/truncate-middle","1ld":"@stdlib/string-base-truncate-middle","1gi":"@stdlib/string/base/uncapitalize","1gj":"@stdlib/string-base-uncapitalize","1gk":"@stdlib/string/base/uppercase","1gl":"@stdlib/string-base-uppercase","1OU":"@stdlib/string/camelcase","1OV":"@stdlib/string-camelcase","1OW":"@stdlib/string/capitalize","1OX":"@stdlib/string-capitalize","1OY":"@stdlib/string/code-point-at","1OZ":"@stdlib/string-code-point-at","1Oa":"@stdlib/string/constantcase","1Ob":"@stdlib/string-constantcase","1gm":"@stdlib/string/dotcase","1gn":"@stdlib/string-dotcase","1Oc":"@stdlib/string/ends-with","1Od":"@stdlib/string-ends-with","1go":"@stdlib/string/first","1gp":"@stdlib/string-first","1gq":"@stdlib/string/for-each","1gr":"@stdlib/string-for-each","1Oe":"@stdlib/string/format","1Of":"@stdlib/string-format","1Og":"@stdlib/string/from-code-point","1Oh":"@stdlib/string-from-code-point","1gs":"@stdlib/string/headercase","1gt":"@stdlib/string-headercase","1Oi":"@stdlib/string/kebabcase","1Oj":"@stdlib/string-kebabcase","1vU":"@stdlib/string/last","1vV":"@stdlib/string-last","1Ok":"@stdlib/string/left-pad","1Ol":"@stdlib/string-left-pad","1Om":"@stdlib/string/left-trim-n","1On":"@stdlib/string-left-trim-n","1Oo":"@stdlib/string/left-trim","1Op":"@stdlib/string-left-trim","1Oq":"@stdlib/string/lowercase","1Or":"@stdlib/string-lowercase","1le":"@stdlib/string/next-code-point-index","1lf":"@stdlib/string-next-code-point-index","1Os":"@stdlib/string/next-grapheme-cluster-break","1Ot":"@stdlib/string-next-grapheme-cluster-break","2DW":"@stdlib/string/num-code-points","2DX":"@stdlib/string-num-code-points","1Ou":"@stdlib/string/num-grapheme-clusters","1Ov":"@stdlib/string-num-grapheme-clusters","1gu":"@stdlib/string/num2words","1gv":"@stdlib/string-num2words","1Ox":"@stdlib/string","1Oy":"@stdlib/string/pad","1Oz":"@stdlib/string-pad","1P0":"@stdlib/string/pascalcase","1P1":"@stdlib/string-pascalcase","1P2":"@stdlib/string/percent-encode","1P3":"@stdlib/string-percent-encode","1P4":"@stdlib/string/prev-grapheme-cluster-break","1P5":"@stdlib/string-prev-grapheme-cluster-break","1P6":"@stdlib/string/remove-first","1P7":"@stdlib/string-remove-first","1P8":"@stdlib/string/remove-last","1P9":"@stdlib/string-remove-last","1PA":"@stdlib/string/remove-punctuation","1PB":"@stdlib/string-remove-punctuation","1PC":"@stdlib/string/remove-utf8-bom","1PD":"@stdlib/string-remove-utf8-bom","1PE":"@stdlib/string/remove-words","1PF":"@stdlib/string-remove-words","1PG":"@stdlib/string/repeat","1PH":"@stdlib/string-repeat","1gw":"@stdlib/string/replace-before","1gx":"@stdlib/string-replace-before","1PI":"@stdlib/string/replace","1PJ":"@stdlib/string-replace","1PK":"@stdlib/string/reverse","1PL":"@stdlib/string-reverse","1PM":"@stdlib/string/right-pad","1PN":"@stdlib/string-right-pad","1PO":"@stdlib/string/right-trim-n","1PP":"@stdlib/string-right-trim-n","1PQ":"@stdlib/string/right-trim","1PR":"@stdlib/string-right-trim","1PS":"@stdlib/string/snakecase","1PT":"@stdlib/string-snakecase","1PU":"@stdlib/string/split-grapheme-clusters","1PV":"@stdlib/string-split-grapheme-clusters","1PW":"@stdlib/string/startcase","1PX":"@stdlib/string-startcase","1PY":"@stdlib/string/starts-with","1PZ":"@stdlib/string-starts-with","1Pa":"@stdlib/string/substring-after-last","1Pb":"@stdlib/string-substring-after-last","1Pc":"@stdlib/string/substring-after","1Pd":"@stdlib/string-substring-after","1Pe":"@stdlib/string/substring-before-last","1Pf":"@stdlib/string-substring-before-last","1Pg":"@stdlib/string/substring-before","1Ph":"@stdlib/string-substring-before","1gy":"@stdlib/string/to-grapheme-cluster-iterator-right","1gz":"@stdlib/string-to-grapheme-cluster-iterator-right","1h0":"@stdlib/string/to-grapheme-cluster-iterator","1h1":"@stdlib/string-to-grapheme-cluster-iterator","1u8":"@stdlib/string/to-well-formed","1u9":"@stdlib/string-to-well-formed","1Pi":"@stdlib/string/tools/grapheme-cluster-break","1Pj":"@stdlib/string-tools-grapheme-cluster-break","1Pk":"@stdlib/string/tools","1Pl":"@stdlib/string-tools","1Pm":"@stdlib/string/trim","1Pn":"@stdlib/string-trim","1Po":"@stdlib/string/truncate-middle","1Pp":"@stdlib/string-truncate-middle","1Pq":"@stdlib/string/truncate","1Pr":"@stdlib/string-truncate","1Ps":"@stdlib/string/uncapitalize","1Pt":"@stdlib/string-uncapitalize","1Pu":"@stdlib/string/uppercase","1Pv":"@stdlib/string-uppercase","1Pw":"@stdlib/string/utf16-to-utf8-array","1Px":"@stdlib/string-utf16-to-utf8-array","1Py":"@stdlib/symbol/async-iterator","1Pz":"@stdlib/symbol-async-iterator","1Q0":"@stdlib/symbol/ctor","1Q1":"@stdlib/symbol-ctor","2YM":"@stdlib/symbol/has-instance","2YN":"@stdlib/symbol-has-instance","2XW":"@stdlib/symbol/is-concat-spreadable","2XX":"@stdlib/symbol-is-concat-spreadable","1Q2":"@stdlib/symbol/iterator","1Q3":"@stdlib/symbol-iterator","1Q5":"@stdlib/symbol","2Yu":"@stdlib/symbol/replace","2Yv":"@stdlib/symbol-replace","2YO":"@stdlib/symbol/to-primitive","2YP":"@stdlib/symbol-to-primitive","1h2":"@stdlib/time/base","1h3":"@stdlib/time-base","1h4":"@stdlib/time/base/parse-duration","1h5":"@stdlib/time-base-parse-duration","1h6":"@stdlib/time/current-year","1h7":"@stdlib/time-current-year","1Q6":"@stdlib/time/day-of-quarter","1Q7":"@stdlib/time-day-of-quarter","1Q8":"@stdlib/time/day-of-year","1Q9":"@stdlib/time-day-of-year","1QA":"@stdlib/time/days-in-month","1QB":"@stdlib/time-days-in-month","1QC":"@stdlib/time/days-in-year","1QD":"@stdlib/time-days-in-year","1h8":"@stdlib/time/duration2ms","1h9":"@stdlib/time-duration2ms","1QE":"@stdlib/time/hours-in-month","1QF":"@stdlib/time-hours-in-month","1QG":"@stdlib/time/hours-in-year","1QH":"@stdlib/time-hours-in-year","1QI":"@stdlib/time/iso-weeks-in-year","1QJ":"@stdlib/time-iso-weeks-in-year","1QK":"@stdlib/time/minutes-in-month","1QL":"@stdlib/time-minutes-in-month","1QM":"@stdlib/time/minutes-in-year","1QN":"@stdlib/time-minutes-in-year","1hA":"@stdlib/time/ms2duration","1hB":"@stdlib/time-ms2duration","1QO":"@stdlib/time/now","1QP":"@stdlib/time-now","1QR":"@stdlib/time","1QS":"@stdlib/time/quarter-of-year","1QT":"@stdlib/time-quarter-of-year","1QU":"@stdlib/time/seconds-in-month","1QV":"@stdlib/time-seconds-in-month","1QW":"@stdlib/time/seconds-in-year","1QX":"@stdlib/time-seconds-in-year","1QY":"@stdlib/time/tic","1QZ":"@stdlib/time-tic","1Qa":"@stdlib/time/toc","1Qb":"@stdlib/time-toc","1Qd":"@stdlib/types","1Qe":"@stdlib/utils/any-by-right","1Qf":"@stdlib/utils-any-by-right","1Qg":"@stdlib/utils/any-by","1Qh":"@stdlib/utils-any-by","1Qi":"@stdlib/utils/any","1Qj":"@stdlib/utils-any","1Qk":"@stdlib/utils/append","1Ql":"@stdlib/utils-append","1Qm":"@stdlib/utils/argument-function","1Qn":"@stdlib/utils-argument-function","1Qo":"@stdlib/utils/async/any-by-right","1Qp":"@stdlib/utils-async-any-by-right","1Qq":"@stdlib/utils/async/any-by","1Qr":"@stdlib/utils-async-any-by","1Qs":"@stdlib/utils/async/bifurcate-by","1Qt":"@stdlib/utils-async-bifurcate-by","1Qu":"@stdlib/utils/async/compose","1Qv":"@stdlib/utils-async-compose","1Qw":"@stdlib/utils/async/count-by","1Qx":"@stdlib/utils-async-count-by","1Qy":"@stdlib/utils/async/do-until","1Qz":"@stdlib/utils-async-do-until","1R0":"@stdlib/utils/async/do-while","1R1":"@stdlib/utils-async-do-while","1R2":"@stdlib/utils/async/every-by-right","1R3":"@stdlib/utils-async-every-by-right","1R4":"@stdlib/utils/async/every-by","1R5":"@stdlib/utils-async-every-by","1R6":"@stdlib/utils/async/for-each-right","1R7":"@stdlib/utils-async-for-each-right","1R8":"@stdlib/utils/async/for-each","1R9":"@stdlib/utils-async-for-each","1RA":"@stdlib/utils/async/function-sequence","1RB":"@stdlib/utils-async-function-sequence","1RC":"@stdlib/utils/async/group-by","1RD":"@stdlib/utils-async-group-by","1RE":"@stdlib/utils/async/if-else","1RF":"@stdlib/utils-async-if-else","1RG":"@stdlib/utils/async/if-then","1RH":"@stdlib/utils-async-if-then","1RI":"@stdlib/utils/async/inmap-right","1RJ":"@stdlib/utils-async-inmap-right","1RK":"@stdlib/utils/async/inmap","1RL":"@stdlib/utils-async-inmap","1RM":"@stdlib/utils/async/map-function","1RN":"@stdlib/utils-async-map-function","1RO":"@stdlib/utils/async/map-keys","1RP":"@stdlib/utils-async-map-keys","1RQ":"@stdlib/utils/async/map-values","1RR":"@stdlib/utils-async-map-values","1RS":"@stdlib/utils/async/none-by-right","1RT":"@stdlib/utils-async-none-by-right","1RU":"@stdlib/utils/async/none-by","1RV":"@stdlib/utils-async-none-by","1RW":"@stdlib/utils/async","1RX":"@stdlib/utils-async","1xW":"@stdlib/utils/async/parallel","1xX":"@stdlib/utils-async-parallel","1RY":"@stdlib/utils/async/reduce-right","1RZ":"@stdlib/utils-async-reduce-right","1Ra":"@stdlib/utils/async/reduce","1Rb":"@stdlib/utils-async-reduce","1Rc":"@stdlib/utils/async/series-waterfall","1Rd":"@stdlib/utils-async-series-waterfall","1Re":"@stdlib/utils/async/some-by-right","1Rf":"@stdlib/utils-async-some-by-right","1Rg":"@stdlib/utils/async/some-by","1Rh":"@stdlib/utils-async-some-by","1Ri":"@stdlib/utils/async/tabulate-by","1Rj":"@stdlib/utils-async-tabulate-by","1Rk":"@stdlib/utils/async/try-catch","1Rl":"@stdlib/utils-async-try-catch","1Rm":"@stdlib/utils/async/try-then","1Rn":"@stdlib/utils-async-try-then","1Ro":"@stdlib/utils/async/until","1Rp":"@stdlib/utils-async-until","1Rq":"@stdlib/utils/async/while","1Rr":"@stdlib/utils-async-while","1Rs":"@stdlib/utils/bifurcate-by","1Rt":"@stdlib/utils-bifurcate-by","1Ry":"@stdlib/utils/bifurcate","1Rz":"@stdlib/utils-bifurcate","1SA":"@stdlib/utils/compose","1SB":"@stdlib/utils-compose","1SC":"@stdlib/utils/constant-function","1SD":"@stdlib/utils-constant-function","1SE":"@stdlib/utils/constructor-name","1SF":"@stdlib/utils-constructor-name","1SG":"@stdlib/utils/convert-path","1SH":"@stdlib/utils-convert-path","1SI":"@stdlib/utils/copy","1SJ":"@stdlib/utils-copy","1SK":"@stdlib/utils/count-by","1SL":"@stdlib/utils-count-by","1SM":"@stdlib/utils/curry-right","1SN":"@stdlib/utils-curry-right","1SO":"@stdlib/utils/curry","1SP":"@stdlib/utils-curry","1hC":"@stdlib/utils/decorate-after","1hD":"@stdlib/utils-decorate-after","1SS":"@stdlib/utils/deep-pluck","1ST":"@stdlib/utils-deep-pluck","1SW":"@stdlib/utils/define-configurable-read-only-accessor","1SX":"@stdlib/utils-define-configurable-read-only-accessor","1SY":"@stdlib/utils/define-configurable-read-only-property","1SZ":"@stdlib/utils-define-configurable-read-only-property","1Sa":"@stdlib/utils/define-configurable-read-write-accessor","1Sb":"@stdlib/utils-define-configurable-read-write-accessor","1Sc":"@stdlib/utils/define-configurable-write-only-accessor","1Sd":"@stdlib/utils-define-configurable-write-only-accessor","1Se":"@stdlib/utils/define-memoized-configurable-read-only-property","1Sf":"@stdlib/utils-define-memoized-configurable-read-only-property","1Sg":"@stdlib/utils/define-memoized-property","1Sh":"@stdlib/utils-define-memoized-property","1Si":"@stdlib/utils/define-memoized-read-only-property","1Sj":"@stdlib/utils-define-memoized-read-only-property","1Sk":"@stdlib/utils/define-nonenumerable-property","1Sl":"@stdlib/utils-define-nonenumerable-property","1Sm":"@stdlib/utils/define-nonenumerable-read-only-accessor","1Sn":"@stdlib/utils-define-nonenumerable-read-only-accessor","1So":"@stdlib/utils/define-nonenumerable-read-only-property","1Sp":"@stdlib/utils-define-nonenumerable-read-only-property","1Sq":"@stdlib/utils/define-nonenumerable-read-write-accessor","1Sr":"@stdlib/utils-define-nonenumerable-read-write-accessor","1Ss":"@stdlib/utils/define-nonenumerable-write-only-accessor","1St":"@stdlib/utils-define-nonenumerable-write-only-accessor","1Su":"@stdlib/utils/define-properties","1Sv":"@stdlib/utils-define-properties","1Sw":"@stdlib/utils/define-property","1Sx":"@stdlib/utils-define-property","1Sy":"@stdlib/utils/define-read-only-accessor","1Sz":"@stdlib/utils-define-read-only-accessor","1T0":"@stdlib/utils/define-read-only-property","1T1":"@stdlib/utils-define-read-only-property","1T2":"@stdlib/utils/define-read-write-accessor","1T3":"@stdlib/utils-define-read-write-accessor","1T4":"@stdlib/utils/define-write-only-accessor","1T5":"@stdlib/utils-define-write-only-accessor","1T6":"@stdlib/utils/dirname","1T7":"@stdlib/utils-dirname","1T8":"@stdlib/utils/do-until-each-right","1T9":"@stdlib/utils-do-until-each-right","1TA":"@stdlib/utils/do-until-each","1TB":"@stdlib/utils-do-until-each","1TC":"@stdlib/utils/do-until","1TD":"@stdlib/utils-do-until","1TE":"@stdlib/utils/do-while-each-right","1TF":"@stdlib/utils-do-while-each-right","1TG":"@stdlib/utils/do-while-each","1TH":"@stdlib/utils-do-while-each","1TI":"@stdlib/utils/do-while","1TJ":"@stdlib/utils-do-while","1hE":"@stdlib/utils/dsv/base","1hF":"@stdlib/utils-dsv-base","1hG":"@stdlib/utils/dsv/base/parse","1hH":"@stdlib/utils-dsv-base-parse","1hI":"@stdlib/utils/dsv","1hJ":"@stdlib/utils-dsv","1TM":"@stdlib/utils/entries-in","1TN":"@stdlib/utils-entries-in","1TO":"@stdlib/utils/entries","1TP":"@stdlib/utils-entries","1TQ":"@stdlib/utils/enumerable-properties-in","1TR":"@stdlib/utils-enumerable-properties-in","1TS":"@stdlib/utils/enumerable-properties","1TT":"@stdlib/utils-enumerable-properties","1TU":"@stdlib/utils/enumerable-property-symbols-in","1TV":"@stdlib/utils-enumerable-property-symbols-in","1TW":"@stdlib/utils/enumerable-property-symbols","1TX":"@stdlib/utils-enumerable-property-symbols","1TY":"@stdlib/utils/escape-regexp-string","1TZ":"@stdlib/utils-escape-regexp-string","1Ta":"@stdlib/utils/eval","1Tb":"@stdlib/utils-eval","1Tc":"@stdlib/utils/every-by-right","1Td":"@stdlib/utils-every-by-right","1Te":"@stdlib/utils/every-by","1Tf":"@stdlib/utils-every-by","1Tg":"@stdlib/utils/every","1Th":"@stdlib/utils-every","1Ti":"@stdlib/utils/extname","1Tj":"@stdlib/utils-extname","1Tm":"@stdlib/utils/filter-arguments","1Tn":"@stdlib/utils-filter-arguments","1To":"@stdlib/utils/find","1Tp":"@stdlib/utils-find","1Tq":"@stdlib/utils/flatten-array","1Tr":"@stdlib/utils-flatten-array","1Ts":"@stdlib/utils/flatten-object","1Tt":"@stdlib/utils-flatten-object","1Tu":"@stdlib/utils/for-each-right","1Tv":"@stdlib/utils-for-each-right","1Tw":"@stdlib/utils/for-each","1Tx":"@stdlib/utils-for-each","1U2":"@stdlib/utils/from-entries","1U3":"@stdlib/utils-from-entries","1U4":"@stdlib/utils/function-name","1U5":"@stdlib/utils-function-name","1U6":"@stdlib/utils/function-sequence","1U7":"@stdlib/utils-function-sequence","1U8":"@stdlib/utils/get-prototype-of","1U9":"@stdlib/utils-get-prototype-of","1UA":"@stdlib/utils/global","1UB":"@stdlib/utils-global","1UC":"@stdlib/utils/group-by","1UD":"@stdlib/utils-group-by","1UE":"@stdlib/utils/group-in","1UF":"@stdlib/utils-group-in","1UG":"@stdlib/utils/group-own","1UH":"@stdlib/utils-group-own","1UI":"@stdlib/utils/group","1UJ":"@stdlib/utils-group","1UK":"@stdlib/utils/identity-function","1UL":"@stdlib/utils-identity-function","1UM":"@stdlib/utils/if-else","1UN":"@stdlib/utils-if-else","1UO":"@stdlib/utils/if-then","1UP":"@stdlib/utils-if-then","1UQ":"@stdlib/utils/index-of","1UR":"@stdlib/utils-index-of","1US":"@stdlib/utils/inherit","1UT":"@stdlib/utils-inherit","1UU":"@stdlib/utils/inherited-enumerable-properties","1UV":"@stdlib/utils-inherited-enumerable-properties","1UW":"@stdlib/utils/inherited-enumerable-property-symbols","1UX":"@stdlib/utils-inherited-enumerable-property-symbols","1UY":"@stdlib/utils/inherited-keys","1UZ":"@stdlib/utils-inherited-keys","1Ua":"@stdlib/utils/inherited-nonenumerable-properties","1Ub":"@stdlib/utils-inherited-nonenumerable-properties","1Uc":"@stdlib/utils/inherited-nonenumerable-property-names","1Ud":"@stdlib/utils-inherited-nonenumerable-property-names","1Ue":"@stdlib/utils/inherited-nonenumerable-property-symbols","1Uf":"@stdlib/utils-inherited-nonenumerable-property-symbols","1Ug":"@stdlib/utils/inherited-properties","1Uh":"@stdlib/utils-inherited-properties","1Ui":"@stdlib/utils/inherited-property-descriptor","1Uj":"@stdlib/utils-inherited-property-descriptor","1Uk":"@stdlib/utils/inherited-property-descriptors","1Ul":"@stdlib/utils-inherited-property-descriptors","1Um":"@stdlib/utils/inherited-property-names","1Un":"@stdlib/utils-inherited-property-names","1Uo":"@stdlib/utils/inherited-property-symbols","1Up":"@stdlib/utils-inherited-property-symbols","1Uq":"@stdlib/utils/inherited-writable-properties","1Ur":"@stdlib/utils-inherited-writable-properties","1Us":"@stdlib/utils/inherited-writable-property-names","1Ut":"@stdlib/utils-inherited-writable-property-names","1Uu":"@stdlib/utils/inherited-writable-property-symbols","1Uv":"@stdlib/utils-inherited-writable-property-symbols","1Uw":"@stdlib/utils/inmap-right","1Ux":"@stdlib/utils-inmap-right","1Uy":"@stdlib/utils/inmap","1Uz":"@stdlib/utils-inmap","1V0":"@stdlib/utils/key-by-right","1V1":"@stdlib/utils-key-by-right","1V2":"@stdlib/utils/key-by","1V3":"@stdlib/utils-key-by","1V4":"@stdlib/utils/keys-in","1V5":"@stdlib/utils-keys-in","1V6":"@stdlib/utils/keys","1V7":"@stdlib/utils-keys","1V8":"@stdlib/utils/library-manifest","1V9":"@stdlib/utils-library-manifest","1VE":"@stdlib/utils/map-arguments","1VF":"@stdlib/utils-map-arguments","1VG":"@stdlib/utils/map-function","1VH":"@stdlib/utils-map-function","1VI":"@stdlib/utils/map-keys","1VJ":"@stdlib/utils-map-keys","1VK":"@stdlib/utils/map-reduce-right","1VL":"@stdlib/utils-map-reduce-right","1VM":"@stdlib/utils/map-reduce","1VN":"@stdlib/utils-map-reduce","1VO":"@stdlib/utils/map-right","1VP":"@stdlib/utils-map-right","1VQ":"@stdlib/utils/map-values","1VR":"@stdlib/utils-map-values","1VS":"@stdlib/utils/map","1VT":"@stdlib/utils-map","1VU":"@stdlib/utils/map2-right","1VV":"@stdlib/utils-map2-right","1VW":"@stdlib/utils/map2","1VX":"@stdlib/utils-map2","1VY":"@stdlib/utils/map2d","1VZ":"@stdlib/utils-map2d","1Va":"@stdlib/utils/map3d","1Vb":"@stdlib/utils-map3d","1Vc":"@stdlib/utils/map4d","1Vd":"@stdlib/utils-map4d","1Ve":"@stdlib/utils/map5d","1Vf":"@stdlib/utils-map5d","1Vg":"@stdlib/utils/mask-arguments","1Vh":"@stdlib/utils-mask-arguments","1Vi":"@stdlib/utils/memoize","1Vj":"@stdlib/utils-memoize","1Vk":"@stdlib/utils/merge","1Vl":"@stdlib/utils-merge","1Vq":"@stdlib/utils/nary-function","1Vr":"@stdlib/utils-nary-function","1Vs":"@stdlib/utils/native-class","1Vt":"@stdlib/utils-native-class","1Vu":"@stdlib/utils/next-tick","1Vv":"@stdlib/utils-next-tick","1Vw":"@stdlib/utils/none-by-right","1Vx":"@stdlib/utils-none-by-right","1Vy":"@stdlib/utils/none-by","1Vz":"@stdlib/utils-none-by","1W0":"@stdlib/utils/none","1W1":"@stdlib/utils-none","1W2":"@stdlib/utils/nonenumerable-properties-in","1W3":"@stdlib/utils-nonenumerable-properties-in","1W4":"@stdlib/utils/nonenumerable-properties","1W5":"@stdlib/utils-nonenumerable-properties","1W6":"@stdlib/utils/nonenumerable-property-names-in","1W7":"@stdlib/utils-nonenumerable-property-names-in","1W8":"@stdlib/utils/nonenumerable-property-names","1W9":"@stdlib/utils-nonenumerable-property-names","1WA":"@stdlib/utils/nonenumerable-property-symbols-in","1WB":"@stdlib/utils-nonenumerable-property-symbols-in","1WC":"@stdlib/utils/nonenumerable-property-symbols","1WD":"@stdlib/utils-nonenumerable-property-symbols","1WE":"@stdlib/utils/nonindex-keys","1WF":"@stdlib/utils-nonindex-keys","1WG":"@stdlib/utils/noop","1WH":"@stdlib/utils-noop","1WM":"@stdlib/utils/omit-by","1WN":"@stdlib/utils-omit-by","1WO":"@stdlib/utils/omit","1WP":"@stdlib/utils-omit","1WQ":"@stdlib/utils/open-url","1WR":"@stdlib/utils-open-url","1WT":"@stdlib/utils","1WU":"@stdlib/utils/papply-right","1WV":"@stdlib/utils-papply-right","1WW":"@stdlib/utils/papply","1WX":"@stdlib/utils-papply","1WY":"@stdlib/utils/parallel","1WZ":"@stdlib/utils-parallel","1Wa":"@stdlib/utils/parse-json","1Wb":"@stdlib/utils-parse-json","1uI":"@stdlib/utils/parse-ndjson","1uJ":"@stdlib/utils-parse-ndjson","1Wc":"@stdlib/utils/pick-arguments","1Wd":"@stdlib/utils-pick-arguments","1We":"@stdlib/utils/pick-by","1Wf":"@stdlib/utils-pick-by","1Wg":"@stdlib/utils/pick","1Wh":"@stdlib/utils-pick","1Wi":"@stdlib/utils/pluck","1Wj":"@stdlib/utils-pluck","1Wk":"@stdlib/utils/pop","1Wl":"@stdlib/utils-pop","1Wm":"@stdlib/utils/prepend","1Wn":"@stdlib/utils-prepend","1Wo":"@stdlib/utils/properties-in","1Wp":"@stdlib/utils-properties-in","1Wq":"@stdlib/utils/properties","1Wr":"@stdlib/utils-properties","1Ws":"@stdlib/utils/property-descriptor-in","1Wt":"@stdlib/utils-property-descriptor-in","1Wu":"@stdlib/utils/property-descriptor","1Wv":"@stdlib/utils-property-descriptor","1Ww":"@stdlib/utils/property-descriptors-in","1Wx":"@stdlib/utils-property-descriptors-in","1Wy":"@stdlib/utils/property-descriptors","1Wz":"@stdlib/utils-property-descriptors","1X0":"@stdlib/utils/property-names-in","1X1":"@stdlib/utils-property-names-in","1X2":"@stdlib/utils/property-names","1X3":"@stdlib/utils-property-names","1X4":"@stdlib/utils/property-symbols-in","1X5":"@stdlib/utils-property-symbols-in","1X6":"@stdlib/utils/property-symbols","1X7":"@stdlib/utils-property-symbols","1X8":"@stdlib/utils/push","1X9":"@stdlib/utils-push","1XA":"@stdlib/utils/real-max","1XB":"@stdlib/utils-real-max","1XC":"@stdlib/utils/real-min","1XD":"@stdlib/utils-real-min","1XE":"@stdlib/utils/reduce-right","1XF":"@stdlib/utils-reduce-right","1XG":"@stdlib/utils/reduce","1XH":"@stdlib/utils-reduce","1XI":"@stdlib/utils/reduce2d","1XJ":"@stdlib/utils-reduce2d","1XK":"@stdlib/utils/regexp-from-string","1XL":"@stdlib/utils-regexp-from-string","1XM":"@stdlib/utils/reject-arguments","1XN":"@stdlib/utils-reject-arguments","1XO":"@stdlib/utils/reorder-arguments","1XP":"@stdlib/utils-reorder-arguments","1XQ":"@stdlib/utils/reverse-arguments","1XR":"@stdlib/utils-reverse-arguments","1XS":"@stdlib/utils/safe-int-max","1XT":"@stdlib/utils-safe-int-max","1XU":"@stdlib/utils/safe-int-min","1XV":"@stdlib/utils-safe-int-min","1XW":"@stdlib/utils/shift","1XX":"@stdlib/utils-shift","1XY":"@stdlib/utils/size-of","1XZ":"@stdlib/utils-size-of","1Xa":"@stdlib/utils/some-by-right","1Xb":"@stdlib/utils-some-by-right","1Xc":"@stdlib/utils/some-by","1Xd":"@stdlib/utils-some-by","1Xe":"@stdlib/utils/some","1Xf":"@stdlib/utils-some","1Xi":"@stdlib/utils/tabulate-by","1Xj":"@stdlib/utils-tabulate-by","1Xk":"@stdlib/utils/tabulate","1Xl":"@stdlib/utils-tabulate","1Xm":"@stdlib/utils/timeit","1Xn":"@stdlib/utils-timeit","1Xo":"@stdlib/utils/try-catch","1Xp":"@stdlib/utils-try-catch","1Xq":"@stdlib/utils/try-function","1Xr":"@stdlib/utils-try-function","1Xs":"@stdlib/utils/try-require","1Xt":"@stdlib/utils-try-require","1Xu":"@stdlib/utils/try-then","1Xv":"@stdlib/utils-try-then","1Xw":"@stdlib/utils/type-max","1Xx":"@stdlib/utils-type-max","1Xy":"@stdlib/utils/type-min","1Xz":"@stdlib/utils-type-min","1Y0":"@stdlib/utils/type-of","1Y1":"@stdlib/utils-type-of","1Y4":"@stdlib/utils/uncurry-right","1Y5":"@stdlib/utils-uncurry-right","1Y6":"@stdlib/utils/uncurry","1Y7":"@stdlib/utils-uncurry","1Y8":"@stdlib/utils/unshift","1Y9":"@stdlib/utils-unshift","1YA":"@stdlib/utils/until-each-right","1YB":"@stdlib/utils-until-each-right","1YC":"@stdlib/utils/until-each","1YD":"@stdlib/utils-until-each","1YE":"@stdlib/utils/until","1YF":"@stdlib/utils-until","1YG":"@stdlib/utils/unzip","1YH":"@stdlib/utils-unzip","1YK":"@stdlib/utils/values-in","1YL":"@stdlib/utils-values-in","1YM":"@stdlib/utils/values","1YN":"@stdlib/utils-values","1YO":"@stdlib/utils/while-each-right","1YP":"@stdlib/utils-while-each-right","1YQ":"@stdlib/utils/while-each","1YR":"@stdlib/utils-while-each","1YS":"@stdlib/utils/while","1YT":"@stdlib/utils-while","1YU":"@stdlib/utils/writable-properties-in","1YV":"@stdlib/utils-writable-properties-in","1YW":"@stdlib/utils/writable-properties","1YX":"@stdlib/utils-writable-properties","1YY":"@stdlib/utils/writable-property-names-in","1YZ":"@stdlib/utils-writable-property-names-in","1Ya":"@stdlib/utils/writable-property-names","1Yb":"@stdlib/utils-writable-property-names","1Yc":"@stdlib/utils/writable-property-symbols-in","1Yd":"@stdlib/utils-writable-property-symbols-in","1Ye":"@stdlib/utils/writable-property-symbols","1Yf":"@stdlib/utils-writable-property-symbols","1Yg":"@stdlib/utils/zip","1Yh":"@stdlib/utils-zip","21E":"@stdlib/wasm/base/array2dtype","21F":"@stdlib/wasm-base-array2dtype","21G":"@stdlib/wasm/base/arrays2ptrs","21H":"@stdlib/wasm-base-arrays2ptrs","21I":"@stdlib/wasm/base/dtype2wasm","21J":"@stdlib/wasm-base-dtype2wasm","21K":"@stdlib/wasm/base","21L":"@stdlib/wasm-base","21M":"@stdlib/wasm/base/strided2object","21N":"@stdlib/wasm-base-strided2object","21O":"@stdlib/wasm/memory","21P":"@stdlib/wasm-memory","21Q":"@stdlib/wasm/module-wrapper","21R":"@stdlib/wasm-module-wrapper","21T":"@stdlib/wasm","2Rc":"@stdlib/wasm/types","2Rd":"@stdlib/wasm-types"} diff --git a/lib/node_modules/@stdlib/error/tools/pkg2id/data/data.csv b/lib/node_modules/@stdlib/error/tools/pkg2id/data/data.csv index ea5cbd156e9e..c97624808fd0 100644 --- a/lib/node_modules/@stdlib/error/tools/pkg2id/data/data.csv +++ b/lib/node_modules/@stdlib/error/tools/pkg2id/data/data.csv @@ -11434,3 +11434,253 @@ "@stdlib/ndarray-matrix",2zB "@stdlib/stats/strided/dmax-sorted",2zC "@stdlib/stats-strided-dmax-sorted",2zD +"@stdlib/blas/ext/base/sany",2zE +"@stdlib/blas-ext-base-sany",2zF +"@stdlib/number/int64/ctor",2zG +"@stdlib/number-int64-ctor",2zH +"@stdlib/number/uint64/base/number2words",2zI +"@stdlib/number-uint64-base-number2words",2zJ +"@stdlib/stats/base/dists/anglit/quantile",2zK +"@stdlib/stats-base-dists-anglit-quantile",2zL +"@stdlib/stats/base/dists/log-logistic/mean",2zM +"@stdlib/stats-base-dists-log-logistic-mean",2zN +"@stdlib/stats/base/dists/log-logistic/median",2zO +"@stdlib/stats-base-dists-log-logistic-median",2zP +"@stdlib/stats/base/dists/log-logistic/mode",2zQ +"@stdlib/stats-base-dists-log-logistic-mode",2zR +"@stdlib/stats/base/dists/log-logistic/pdf",2zS +"@stdlib/stats-base-dists-log-logistic-pdf",2zT +"@stdlib/stats/base/dists/tukey-lambda/mode",2zU +"@stdlib/stats-base-dists-tukey-lambda-mode",2zV +"@stdlib/assert/is-int64",2zW +"@stdlib/assert-is-int64",2zX +"@stdlib/blas/base/ndarray/cgemv",2zY +"@stdlib/blas-base-ndarray-cgemv",2zZ +"@stdlib/blas/base/ndarray/dgemv",2za +"@stdlib/blas-base-ndarray-dgemv",2zb +"@stdlib/blas/base/ndarray/dger",2zc +"@stdlib/blas-base-ndarray-dger",2zd +"@stdlib/blas/base/ndarray/dspr",2ze +"@stdlib/blas-base-ndarray-dspr",2zf +"@stdlib/blas/base/ndarray/dsyr2",2zg +"@stdlib/blas-base-ndarray-dsyr2",2zh +"@stdlib/blas/base/ndarray/ggemm",2zi +"@stdlib/blas-base-ndarray-ggemm",2zj +"@stdlib/blas/base/ndarray/ggemv",2zk +"@stdlib/blas-base-ndarray-ggemv",2zl +"@stdlib/blas/base/ndarray/gger",2zm +"@stdlib/blas-base-ndarray-gger",2zn +"@stdlib/blas/base/ndarray/gsyr",2zo +"@stdlib/blas-base-ndarray-gsyr",2zp +"@stdlib/blas/base/ndarray/sgemv",2zq +"@stdlib/blas-base-ndarray-sgemv",2zr +"@stdlib/blas/base/ndarray/sger",2zs +"@stdlib/blas-base-ndarray-sger",2zt +"@stdlib/blas/base/ndarray/sspr",2zu +"@stdlib/blas-base-ndarray-sspr",2zv +"@stdlib/blas/ext/base/creplicate",2zw +"@stdlib/blas-ext-base-creplicate",2zx +"@stdlib/blas/ext/base/cwax",2zy +"@stdlib/blas-ext-base-cwax",2zz +"@stdlib/blas/ext/base/cxmy",300 +"@stdlib/blas-ext-base-cxmy",301 +"@stdlib/blas/ext/base/dfill-equal",302 +"@stdlib/blas-ext-base-dfill-equal",303 +"@stdlib/blas/ext/base/dfill-nan",304 +"@stdlib/blas-ext-base-dfill-nan",305 +"@stdlib/blas/ext/base/dfill-not-equal",306 +"@stdlib/blas-ext-base-dfill-not-equal",307 +"@stdlib/blas/ext/base/dfirst-index-equal",308 +"@stdlib/blas-ext-base-dfirst-index-equal",309 +"@stdlib/blas/ext/base/dindex-of-not-equal",30A +"@stdlib/blas-ext-base-dindex-of-not-equal",30B +"@stdlib/blas/ext/base/dreplicate",30C +"@stdlib/blas-ext-base-dreplicate",30D +"@stdlib/blas/ext/base/dwax",30E +"@stdlib/blas-ext-base-dwax",30F +"@stdlib/blas/ext/base/dxdy",30G +"@stdlib/blas-ext-base-dxdy",30H +"@stdlib/blas/ext/base/gfill-equal",30I +"@stdlib/blas-ext-base-gfill-equal",30J +"@stdlib/blas/ext/base/gfill-less-than",30K +"@stdlib/blas-ext-base-gfill-less-than",30L +"@stdlib/blas/ext/base/gfill-nan",30M +"@stdlib/blas-ext-base-gfill-nan",30N +"@stdlib/blas/ext/base/gfill-not-equal",30O +"@stdlib/blas-ext-base-gfill-not-equal",30P +"@stdlib/blas/ext/base/gfirst-index-equal",30Q +"@stdlib/blas-ext-base-gfirst-index-equal",30R +"@stdlib/blas/ext/base/gfirst-index-greater-than",30S +"@stdlib/blas-ext-base-gfirst-index-greater-than",30T +"@stdlib/blas/ext/base/gfirst-index-less-than",30U +"@stdlib/blas-ext-base-gfirst-index-less-than",30V +"@stdlib/blas/ext/base/gfirst-index-not-equal",30W +"@stdlib/blas-ext-base-gfirst-index-not-equal",30X +"@stdlib/blas/ext/base/gindex-of-not-equal",30Y +"@stdlib/blas-ext-base-gindex-of-not-equal",30Z +"@stdlib/blas/ext/base/gindex-of-same-value",30a +"@stdlib/blas-ext-base-gindex-of-same-value",30b +"@stdlib/blas/ext/base/glast-index-equal",30c +"@stdlib/blas-ext-base-glast-index-equal",30d +"@stdlib/blas/ext/base/gxdy",30e +"@stdlib/blas-ext-base-gxdy",30f +"@stdlib/blas/ext/base/ndarray/cxmy",30g +"@stdlib/blas-ext-base-ndarray-cxmy",30h +"@stdlib/blas/ext/base/ndarray/dany",30i +"@stdlib/blas-ext-base-ndarray-dany",30j +"@stdlib/blas/ext/base/ndarray/dfill-not-equal",30k +"@stdlib/blas-ext-base-ndarray-dfill-not-equal",30l +"@stdlib/blas/ext/base/ndarray/dxmy",30m +"@stdlib/blas-ext-base-ndarray-dxmy",30n +"@stdlib/blas/ext/base/ndarray/gany",30o +"@stdlib/blas-ext-base-ndarray-gany",30p +"@stdlib/blas/ext/base/ndarray/gfill-not-equal",30q +"@stdlib/blas-ext-base-ndarray-gfill-not-equal",30r +"@stdlib/blas/ext/base/ndarray/gxmy",30s +"@stdlib/blas-ext-base-ndarray-gxmy",30t +"@stdlib/blas/ext/base/ndarray/sany",30u +"@stdlib/blas-ext-base-ndarray-sany",30v +"@stdlib/blas/ext/base/ndarray/sfill-not-equal",30w +"@stdlib/blas-ext-base-ndarray-sfill-not-equal",30x +"@stdlib/blas/ext/base/ndarray/sxmy",30y +"@stdlib/blas-ext-base-ndarray-sxmy",30z +"@stdlib/blas/ext/base/ndarray/zxmy",310 +"@stdlib/blas-ext-base-ndarray-zxmy",311 +"@stdlib/blas/ext/base/sfill-equal",312 +"@stdlib/blas-ext-base-sfill-equal",313 +"@stdlib/blas/ext/base/sfill-nan",314 +"@stdlib/blas-ext-base-sfill-nan",315 +"@stdlib/blas/ext/base/sfill-not-equal",316 +"@stdlib/blas-ext-base-sfill-not-equal",317 +"@stdlib/blas/ext/base/sfirst-index-equal",318 +"@stdlib/blas-ext-base-sfirst-index-equal",319 +"@stdlib/blas/ext/base/sreplicate",31A +"@stdlib/blas-ext-base-sreplicate",31B +"@stdlib/blas/ext/base/swax",31C +"@stdlib/blas-ext-base-swax",31D +"@stdlib/blas/ext/base/sxdy",31E +"@stdlib/blas-ext-base-sxdy",31F +"@stdlib/blas/ext/base/zindex-of-truthy",31G +"@stdlib/blas-ext-base-zindex-of-truthy",31H +"@stdlib/blas/ext/base/zreplicate",31I +"@stdlib/blas-ext-base-zreplicate",31J +"@stdlib/blas/ext/base/zwax",31K +"@stdlib/blas-ext-base-zwax",31L +"@stdlib/blas/ext/base/zxmy",31M +"@stdlib/blas-ext-base-zxmy",31N +"@stdlib/blas/nrm2",31O +"@stdlib/blas-nrm2",31P +"@stdlib/fft/base/fftpack/costi",31Q +"@stdlib/fft-base-fftpack-costi",31R +"@stdlib/fft/base/fftpack/sinti",31S +"@stdlib/fft-base-fftpack-sinti",31T +"@stdlib/ml/base/loss/float64/epsilon-insensitive-gradient",31U +"@stdlib/ml-base-loss-float64-epsilon-insensitive-gradient",31V +"@stdlib/ml/base/loss/float64/squared-epsilon-insensitive-gradient",31W +"@stdlib/ml-base-loss-float64-squared-epsilon-insensitive-gradient",31X +"@stdlib/ml/base/loss/float64/squared-error-gradient",31Y +"@stdlib/ml-base-loss-float64-squared-error-gradient",31Z +"@stdlib/ml/base/sgd-classification/learning-rate-enum2str",31a +"@stdlib/ml-base-sgd-classification-learning-rate-enum2str",31b +"@stdlib/ml/base/sgd-classification/learning-rate-resolve-enum",31c +"@stdlib/ml-base-sgd-classification-learning-rate-resolve-enum",31d +"@stdlib/ml/base/sgd-classification/learning-rate-resolve-str",31e +"@stdlib/ml-base-sgd-classification-learning-rate-resolve-str",31f +"@stdlib/ml/base/sgd-classification/learning-rate-str2enum",31g +"@stdlib/ml-base-sgd-classification-learning-rate-str2enum",31h +"@stdlib/ml/base/sgd-classification/learning-rates",31i +"@stdlib/ml-base-sgd-classification-learning-rates",31j +"@stdlib/ml/base/sgd-classification/loss-function-enum2str",31k +"@stdlib/ml-base-sgd-classification-loss-function-enum2str",31l +"@stdlib/ml/base/sgd-classification/loss-function-resolve-enum",31m +"@stdlib/ml-base-sgd-classification-loss-function-resolve-enum",31n +"@stdlib/ml/base/sgd-classification/loss-function-resolve-str",31o +"@stdlib/ml-base-sgd-classification-loss-function-resolve-str",31p +"@stdlib/ml/base/sgd-classification/loss-function-str2enum",31q +"@stdlib/ml-base-sgd-classification-loss-function-str2enum",31r +"@stdlib/ml/base/sgd-classification/loss-functions",31s +"@stdlib/ml-base-sgd-classification-loss-functions",31t +"@stdlib/number/uint64/base/bigint2words",31u +"@stdlib/number-uint64-base-bigint2words",31v +"@stdlib/number/uint64/base/get-high-word",31w +"@stdlib/number-uint64-base-get-high-word",31x +"@stdlib/number/uint64/base/get-low-word",31y +"@stdlib/number-uint64-base-get-low-word",31z +"@stdlib/number/uint64/base/set-high-word",320 +"@stdlib/number-uint64-base-set-high-word",321 +"@stdlib/number/uint64/base/string2words",322 +"@stdlib/number-uint64-base-string2words",323 +"@stdlib/stats/base/dists/anglit/cdf",324 +"@stdlib/stats-base-dists-anglit-cdf",325 +"@stdlib/stats/base/dists/anglit/entropy",326 +"@stdlib/stats-base-dists-anglit-entropy",327 +"@stdlib/stats/base/dists/anglit/mode",328 +"@stdlib/stats-base-dists-anglit-mode",329 +"@stdlib/stats/base/dists/anglit/stdev",32A +"@stdlib/stats-base-dists-anglit-stdev",32B +"@stdlib/stats/base/dists/anglit/variance",32C +"@stdlib/stats-base-dists-anglit-variance",32D +"@stdlib/stats/base/dists/log-logistic/cdf",32E +"@stdlib/stats-base-dists-log-logistic-cdf",32F +"@stdlib/stats/base/dists/log-logistic/quantile",32G +"@stdlib/stats-base-dists-log-logistic-quantile",32H +"@stdlib/stats/incr/mskewness",32I +"@stdlib/stats-incr-mskewness",32J +"@stdlib/stats/incr/nancovariance",32K +"@stdlib/stats-incr-nancovariance",32L +"@stdlib/stats/incr/nancv",32M +"@stdlib/stats-incr-nancv",32N +"@stdlib/stats/incr/nanewstdev",32O +"@stdlib/stats-incr-nanewstdev",32P +"@stdlib/stats/incr/nanewvariance",32Q +"@stdlib/stats-incr-nanewvariance",32R +"@stdlib/stats/incr/nankurtosis",32S +"@stdlib/stats-incr-nankurtosis",32T +"@stdlib/stats/incr/nanmae",32U +"@stdlib/stats-incr-nanmae",32V +"@stdlib/stats/incr/nanmapcorr",32W +"@stdlib/stats-incr-nanmapcorr",32X +"@stdlib/stats/incr/nanmape",32Y +"@stdlib/stats-incr-nanmape",32Z +"@stdlib/stats/incr/nanmax",32a +"@stdlib/stats-incr-nanmax",32b +"@stdlib/stats/incr/nanmda",32c +"@stdlib/stats-incr-nanmda",32d +"@stdlib/stats/incr/nanme",32e +"@stdlib/stats-incr-nanme",32f +"@stdlib/stats/incr/nanmeanvar",32g +"@stdlib/stats-incr-nanmeanvar",32h +"@stdlib/stats/incr/nanmgmean",32i +"@stdlib/stats-incr-nanmgmean",32j +"@stdlib/stats/incr/nanmhmean",32k +"@stdlib/stats-incr-nanmhmean",32l +"@stdlib/stats/incr/nanmidrange",32m +"@stdlib/stats-incr-nanmidrange",32n +"@stdlib/stats/incr/nanmmaxabs",32o +"@stdlib/stats-incr-nanmmaxabs",32p +"@stdlib/stats/incr/nanmmean",32q +"@stdlib/stats-incr-nanmmean",32r +"@stdlib/stats/incr/nanmmin",32s +"@stdlib/stats-incr-nanmmin",32t +"@stdlib/stats/incr/nanmpcorr",32u +"@stdlib/stats-incr-nanmpcorr",32v +"@stdlib/stats/incr/nanmrange",32w +"@stdlib/stats-incr-nanmrange",32x +"@stdlib/stats/incr/nanmrss",32y +"@stdlib/stats-incr-nanmrss",32z +"@stdlib/stats/incr/nanmsumprod",330 +"@stdlib/stats-incr-nanmsumprod",331 +"@stdlib/stats/incr/nanmvmr",332 +"@stdlib/stats-incr-nanmvmr",333 +"@stdlib/stats/incr/nanpcorr",334 +"@stdlib/stats-incr-nanpcorr",335 +"@stdlib/stats/incr/nanpcorr2",336 +"@stdlib/stats-incr-nanpcorr2",337 +"@stdlib/stats/incr/nanpcorrdist",338 +"@stdlib/stats-incr-nanpcorrdist",339 +"@stdlib/stats/incr/nanprod",33A +"@stdlib/stats-incr-nanprod",33B +"@stdlib/stats/incr/nanrange",33C +"@stdlib/stats-incr-nanrange",33D +"@stdlib/stats/strided/dmedian-sorted",33E +"@stdlib/stats-strided-dmedian-sorted",33F diff --git a/lib/node_modules/@stdlib/error/tools/pkg2id/data/data.json b/lib/node_modules/@stdlib/error/tools/pkg2id/data/data.json index 9efd2ec88b5f..1da1abaf6a94 100644 --- a/lib/node_modules/@stdlib/error/tools/pkg2id/data/data.json +++ b/lib/node_modules/@stdlib/error/tools/pkg2id/data/data.json @@ -1 +1 @@ -{"@stdlib/array/base/arraylike2object":"000","@stdlib/array-base-arraylike2object":"001","@stdlib/array/base/copy":"002","@stdlib/array-base-copy":"003","@stdlib/array/base/filled-by":"004","@stdlib/array-base-filled-by":"005","@stdlib/array/base/filled":"006","@stdlib/array-base-filled":"007","@stdlib/array/base/incrspace":"008","@stdlib/array-base-incrspace":"009","@stdlib/array/base/linspace":"00A","@stdlib/array-base-linspace":"00B","@stdlib/array/base/logspace":"00C","@stdlib/array-base-logspace":"00D","@stdlib/array/base/ones":"00E","@stdlib/array-base-ones":"00F","@stdlib/array/base":"00G","@stdlib/array-base":"00H","@stdlib/array/base/unitspace":"00I","@stdlib/array-base-unitspace":"00J","@stdlib/array/base/zeros":"00K","@stdlib/array-base-zeros":"00L","@stdlib/array/buffer":"00M","@stdlib/array-buffer":"00N","@stdlib/array/complex128":"00O","@stdlib/array-complex128":"00P","@stdlib/array/complex64":"00Q","@stdlib/array-complex64":"00R","@stdlib/array/convert-same":"00S","@stdlib/array-convert-same":"00T","@stdlib/array/convert":"00U","@stdlib/array-convert":"00V","@stdlib/array/ctors":"00W","@stdlib/array-ctors":"00X","@stdlib/array/dataview":"00Y","@stdlib/array-dataview":"00Z","@stdlib/array/datespace":"00a","@stdlib/array-datespace":"00b","@stdlib/array/dtype":"00c","@stdlib/array-dtype":"00d","@stdlib/array/dtypes":"00e","@stdlib/array-dtypes":"00f","@stdlib/array/filled-by":"00g","@stdlib/array-filled-by":"00h","@stdlib/array/filled":"00i","@stdlib/array-filled":"00j","@stdlib/array/float32":"00k","@stdlib/array-float32":"00l","@stdlib/array/float64":"00m","@stdlib/array-float64":"00n","@stdlib/array/from-iterator":"00o","@stdlib/array-from-iterator":"00p","@stdlib/array/full-like":"00q","@stdlib/array-full-like":"00r","@stdlib/array/full":"00s","@stdlib/array-full":"00t","@stdlib/array/incrspace":"00u","@stdlib/array-incrspace":"00v","@stdlib/array/int16":"00w","@stdlib/array-int16":"00x","@stdlib/array/int32":"00y","@stdlib/array-int32":"00z","@stdlib/array/int8":"010","@stdlib/array-int8":"011","@stdlib/array/linspace":"012","@stdlib/array-linspace":"013","@stdlib/array/logspace":"014","@stdlib/array-logspace":"015","@stdlib/array/min-dtype":"016","@stdlib/array-min-dtype":"017","@stdlib/array/next-dtype":"018","@stdlib/array-next-dtype":"019","@stdlib/array/ones-like":"01A","@stdlib/array-ones-like":"01B","@stdlib/array/ones":"01C","@stdlib/array-ones":"01D","@stdlib/array":"01F","@stdlib/array/pool":"01G","@stdlib/array-pool":"01H","@stdlib/array/promotion-rules":"01I","@stdlib/array-promotion-rules":"01J","@stdlib/array/reviver":"01K","@stdlib/array-reviver":"01L","@stdlib/array/safe-casts":"01M","@stdlib/array-safe-casts":"01N","@stdlib/array/same-kind-casts":"01O","@stdlib/array-same-kind-casts":"01P","@stdlib/array/shape":"01Q","@stdlib/array-shape":"01R","@stdlib/array/shared-buffer":"01S","@stdlib/array-shared-buffer":"01T","@stdlib/array/to-circular-iterator":"01U","@stdlib/array-to-circular-iterator":"01V","@stdlib/array/to-iterator-right":"01W","@stdlib/array-to-iterator-right":"01X","@stdlib/array/to-iterator":"01Y","@stdlib/array-to-iterator":"01Z","@stdlib/array/to-json":"01a","@stdlib/array-to-json":"01b","@stdlib/array/to-sparse-iterator-right":"01c","@stdlib/array-to-sparse-iterator-right":"01d","@stdlib/array/to-sparse-iterator":"01e","@stdlib/array-to-sparse-iterator":"01f","@stdlib/array/to-strided-iterator":"01g","@stdlib/array-to-strided-iterator":"01h","@stdlib/array/to-view-iterator-right":"01i","@stdlib/array-to-view-iterator-right":"01j","@stdlib/array/to-view-iterator":"01k","@stdlib/array-to-view-iterator":"01l","@stdlib/array/typed-complex-ctors":"01m","@stdlib/array-typed-complex-ctors":"01n","@stdlib/array/typed-complex-dtypes":"01o","@stdlib/array-typed-complex-dtypes":"01p","@stdlib/array/typed-complex":"01q","@stdlib/array-typed-complex":"01r","@stdlib/array/typed-ctors":"01s","@stdlib/array-typed-ctors":"01t","@stdlib/array/typed-dtypes":"01u","@stdlib/array-typed-dtypes":"01v","@stdlib/array/typed-float-ctors":"01w","@stdlib/array-typed-float-ctors":"01x","@stdlib/array/typed-float-dtypes":"01y","@stdlib/array-typed-float-dtypes":"01z","@stdlib/array/typed-integer-ctors":"020","@stdlib/array-typed-integer-ctors":"021","@stdlib/array/typed-integer-dtypes":"022","@stdlib/array-typed-integer-dtypes":"023","@stdlib/array/typed-real-ctors":"024","@stdlib/array-typed-real-ctors":"025","@stdlib/array/typed-real-dtypes":"026","@stdlib/array-typed-real-dtypes":"027","@stdlib/array/typed-real-float-ctors":"028","@stdlib/array-typed-real-float-ctors":"029","@stdlib/array/typed-real-float-dtypes":"02A","@stdlib/array-typed-real-float-dtypes":"02B","@stdlib/array/typed-real":"02C","@stdlib/array-typed-real":"02D","@stdlib/array/typed-signed-integer-ctors":"02E","@stdlib/array-typed-signed-integer-ctors":"02F","@stdlib/array/typed-signed-integer-dtypes":"02G","@stdlib/array-typed-signed-integer-dtypes":"02H","@stdlib/array/typed-unsigned-integer-ctors":"02I","@stdlib/array-typed-unsigned-integer-ctors":"02J","@stdlib/array/typed-unsigned-integer-dtypes":"02K","@stdlib/array-typed-unsigned-integer-dtypes":"02L","@stdlib/array/typed":"02M","@stdlib/array-typed":"02N","@stdlib/array/uint16":"02O","@stdlib/array-uint16":"02P","@stdlib/array/uint32":"02Q","@stdlib/array-uint32":"02R","@stdlib/array/uint8":"02S","@stdlib/array-uint8":"02T","@stdlib/array/uint8c":"02U","@stdlib/array-uint8c":"02V","@stdlib/array/zeros-like":"02W","@stdlib/array-zeros-like":"02X","@stdlib/array/zeros":"02Y","@stdlib/array-zeros":"02Z","@stdlib/assert/contains":"02a","@stdlib/assert-contains":"02b","@stdlib/assert/deep-equal":"02c","@stdlib/assert-deep-equal":"02d","@stdlib/assert/deep-has-own-property":"02e","@stdlib/assert-deep-has-own-property":"02f","@stdlib/assert/deep-has-property":"02g","@stdlib/assert-deep-has-property":"02h","@stdlib/assert/has-arraybuffer-support":"02i","@stdlib/assert-has-arraybuffer-support":"02j","@stdlib/assert/has-arrow-function-support":"02k","@stdlib/assert-has-arrow-function-support":"02l","@stdlib/assert/has-async-await-support":"02m","@stdlib/assert-has-async-await-support":"02n","@stdlib/assert/has-async-iterator-symbol-support":"02o","@stdlib/assert-has-async-iterator-symbol-support":"02p","@stdlib/assert/has-bigint-support":"02q","@stdlib/assert-has-bigint-support":"02r","@stdlib/assert/has-bigint64array-support":"02s","@stdlib/assert-has-bigint64array-support":"02t","@stdlib/assert/has-biguint64array-support":"02u","@stdlib/assert-has-biguint64array-support":"02v","@stdlib/assert/has-class-support":"02w","@stdlib/assert-has-class-support":"02x","@stdlib/assert/has-dataview-support":"02y","@stdlib/assert-has-dataview-support":"02z","@stdlib/assert/has-define-properties-support":"030","@stdlib/assert-has-define-properties-support":"031","@stdlib/assert/has-define-property-support":"032","@stdlib/assert-has-define-property-support":"033","@stdlib/assert/has-float32array-support":"034","@stdlib/assert-has-float32array-support":"035","@stdlib/assert/has-float64array-support":"036","@stdlib/assert-has-float64array-support":"037","@stdlib/assert/has-function-name-support":"038","@stdlib/assert-has-function-name-support":"039","@stdlib/assert/has-generator-support":"03A","@stdlib/assert-has-generator-support":"03B","@stdlib/assert/has-globalthis-support":"03C","@stdlib/assert-has-globalthis-support":"03D","@stdlib/assert/has-int16array-support":"03E","@stdlib/assert-has-int16array-support":"03F","@stdlib/assert/has-int32array-support":"03G","@stdlib/assert-has-int32array-support":"03H","@stdlib/assert/has-int8array-support":"03I","@stdlib/assert-has-int8array-support":"03J","@stdlib/assert/has-iterator-symbol-support":"03K","@stdlib/assert-has-iterator-symbol-support":"03L","@stdlib/assert/has-map-support":"03M","@stdlib/assert-has-map-support":"03N","@stdlib/assert/has-node-buffer-support":"03O","@stdlib/assert-has-node-buffer-support":"03P","@stdlib/assert/has-own-property":"03Q","@stdlib/assert-has-own-property":"03R","@stdlib/assert/has-property":"03S","@stdlib/assert-has-property":"03T","@stdlib/assert/has-proxy-support":"03U","@stdlib/assert-has-proxy-support":"03V","@stdlib/assert/has-set-support":"03W","@stdlib/assert-has-set-support":"03X","@stdlib/assert/has-sharedarraybuffer-support":"03Y","@stdlib/assert-has-sharedarraybuffer-support":"03Z","@stdlib/assert/has-symbol-support":"03a","@stdlib/assert-has-symbol-support":"03b","@stdlib/assert/has-tostringtag-support":"03c","@stdlib/assert-has-tostringtag-support":"03d","@stdlib/assert/has-uint16array-support":"03e","@stdlib/assert-has-uint16array-support":"03f","@stdlib/assert/has-uint32array-support":"03g","@stdlib/assert-has-uint32array-support":"03h","@stdlib/assert/has-uint8array-support":"03i","@stdlib/assert-has-uint8array-support":"03j","@stdlib/assert/has-uint8clampedarray-support":"03k","@stdlib/assert-has-uint8clampedarray-support":"03l","@stdlib/assert/has-utf16-surrogate-pair-at":"03m","@stdlib/assert-has-utf16-surrogate-pair-at":"03n","@stdlib/assert/has-wasm-support":"03o","@stdlib/assert-has-wasm-support":"03p","@stdlib/assert/has-weakmap-support":"03q","@stdlib/assert-has-weakmap-support":"03r","@stdlib/assert/has-weakset-support":"03s","@stdlib/assert-has-weakset-support":"03t","@stdlib/assert/instance-of":"03u","@stdlib/assert-instance-of":"03v","@stdlib/assert/is-absolute-http-uri":"03w","@stdlib/assert-is-absolute-http-uri":"03x","@stdlib/assert/is-absolute-path":"03y","@stdlib/assert-is-absolute-path":"03z","@stdlib/assert/is-absolute-uri":"040","@stdlib/assert-is-absolute-uri":"041","@stdlib/assert/is-accessor-property-in":"042","@stdlib/assert-is-accessor-property-in":"043","@stdlib/assert/is-accessor-property":"044","@stdlib/assert-is-accessor-property":"045","@stdlib/assert/is-alphagram":"046","@stdlib/assert-is-alphagram":"047","@stdlib/assert/is-alphanumeric":"048","@stdlib/assert-is-alphanumeric":"049","@stdlib/assert/is-anagram":"04A","@stdlib/assert-is-anagram":"04B","@stdlib/assert/is-arguments":"04C","@stdlib/assert-is-arguments":"04D","@stdlib/assert/is-array-array":"04E","@stdlib/assert-is-array-array":"04F","@stdlib/assert/is-array-length":"04G","@stdlib/assert-is-array-length":"04H","@stdlib/assert/is-array-like-object":"04I","@stdlib/assert-is-array-like-object":"04J","@stdlib/assert/is-array-like":"04K","@stdlib/assert-is-array-like":"04L","@stdlib/assert/is-array":"04M","@stdlib/assert-is-array":"04N","@stdlib/assert/is-arraybuffer-view":"04O","@stdlib/assert-is-arraybuffer-view":"04P","@stdlib/assert/is-arraybuffer":"04Q","@stdlib/assert-is-arraybuffer":"04R","@stdlib/assert/is-arrow-function":"04S","@stdlib/assert-is-arrow-function":"04T","@stdlib/assert/is-ascii":"04U","@stdlib/assert-is-ascii":"04V","@stdlib/assert/is-between-array":"04W","@stdlib/assert-is-between-array":"04X","@stdlib/assert/is-between":"04Y","@stdlib/assert-is-between":"04Z","@stdlib/assert/is-big-endian":"04a","@stdlib/assert-is-big-endian":"04b","@stdlib/assert/is-bigint":"04c","@stdlib/assert-is-bigint":"04d","@stdlib/assert/is-bigint64array":"04e","@stdlib/assert-is-bigint64array":"04f","@stdlib/assert/is-biguint64array":"04g","@stdlib/assert-is-biguint64array":"04h","@stdlib/assert/is-binary-string":"04i","@stdlib/assert-is-binary-string":"04j","@stdlib/assert/is-blank-string":"04k","@stdlib/assert-is-blank-string":"04l","@stdlib/assert/is-boolean-array":"04m","@stdlib/assert-is-boolean-array":"04n","@stdlib/assert/is-boolean":"04o","@stdlib/assert-is-boolean":"04p","@stdlib/assert/is-boxed-primitive":"04q","@stdlib/assert-is-boxed-primitive":"04r","@stdlib/assert/is-browser":"04s","@stdlib/assert-is-browser":"04t","@stdlib/assert/is-buffer":"04u","@stdlib/assert-is-buffer":"04v","@stdlib/assert/is-capitalized":"04w","@stdlib/assert-is-capitalized":"04x","@stdlib/assert/is-centrosymmetric-matrix":"04y","@stdlib/assert-is-centrosymmetric-matrix":"04z","@stdlib/assert/is-circular-array":"050","@stdlib/assert-is-circular-array":"051","@stdlib/assert/is-circular-plain-object":"052","@stdlib/assert-is-circular-plain-object":"053","@stdlib/assert/is-circular":"054","@stdlib/assert-is-circular":"055","@stdlib/assert/is-class":"056","@stdlib/assert-is-class":"057","@stdlib/assert/is-collection":"058","@stdlib/assert-is-collection":"059","@stdlib/assert/is-complex-like":"05A","@stdlib/assert-is-complex-like":"05B","@stdlib/assert/is-complex-typed-array-like":"05C","@stdlib/assert-is-complex-typed-array-like":"05D","@stdlib/assert/is-complex-typed-array":"05E","@stdlib/assert-is-complex-typed-array":"05F","@stdlib/assert/is-complex":"05G","@stdlib/assert-is-complex":"05H","@stdlib/assert/is-complex128":"05I","@stdlib/assert-is-complex128":"05J","@stdlib/assert/is-complex128array":"05K","@stdlib/assert-is-complex128array":"05L","@stdlib/assert/is-complex64":"05M","@stdlib/assert-is-complex64":"05N","@stdlib/assert/is-complex64array":"05O","@stdlib/assert-is-complex64array":"05P","@stdlib/assert/is-composite":"05Q","@stdlib/assert-is-composite":"05R","@stdlib/assert/is-configurable-property-in":"05S","@stdlib/assert-is-configurable-property-in":"05T","@stdlib/assert/is-configurable-property":"05U","@stdlib/assert-is-configurable-property":"05V","@stdlib/assert/is-cube-number":"05W","@stdlib/assert-is-cube-number":"05X","@stdlib/assert/is-darwin":"05Y","@stdlib/assert-is-darwin":"05Z","@stdlib/assert/is-data-property-in":"05a","@stdlib/assert-is-data-property-in":"05b","@stdlib/assert/is-data-property":"05c","@stdlib/assert-is-data-property":"05d","@stdlib/assert/is-dataview":"05e","@stdlib/assert-is-dataview":"05f","@stdlib/assert/is-date-object-array":"05g","@stdlib/assert-is-date-object-array":"05h","@stdlib/assert/is-date-object":"05i","@stdlib/assert-is-date-object":"05j","@stdlib/assert/is-digit-string":"05k","@stdlib/assert-is-digit-string":"05l","@stdlib/assert/is-docker":"05m","@stdlib/assert-is-docker":"05n","@stdlib/assert/is-electron-main":"05o","@stdlib/assert-is-electron-main":"05p","@stdlib/assert/is-electron-renderer":"05q","@stdlib/assert-is-electron-renderer":"05r","@stdlib/assert/is-electron":"05s","@stdlib/assert-is-electron":"05t","@stdlib/assert/is-email-address":"05u","@stdlib/assert-is-email-address":"05v","@stdlib/assert/is-empty-array-like-object":"05w","@stdlib/assert-is-empty-array-like-object":"05x","@stdlib/assert/is-empty-array":"05y","@stdlib/assert-is-empty-array":"05z","@stdlib/assert/is-empty-collection":"060","@stdlib/assert-is-empty-collection":"061","@stdlib/assert/is-empty-object":"062","@stdlib/assert-is-empty-object":"063","@stdlib/assert/is-empty-string":"064","@stdlib/assert-is-empty-string":"065","@stdlib/assert/is-enumerable-property-in":"066","@stdlib/assert-is-enumerable-property-in":"067","@stdlib/assert/is-enumerable-property":"068","@stdlib/assert-is-enumerable-property":"069","@stdlib/assert/is-error":"06A","@stdlib/assert-is-error":"06B","@stdlib/assert/is-eval-error":"06C","@stdlib/assert-is-eval-error":"06D","@stdlib/assert/is-even":"06E","@stdlib/assert-is-even":"06F","@stdlib/assert/is-falsy-array":"06G","@stdlib/assert-is-falsy-array":"06H","@stdlib/assert/is-falsy":"06I","@stdlib/assert-is-falsy":"06J","@stdlib/assert/is-finite-array":"06K","@stdlib/assert-is-finite-array":"06L","@stdlib/assert/is-finite":"06M","@stdlib/assert-is-finite":"06N","@stdlib/assert/is-float32array":"06O","@stdlib/assert-is-float32array":"06P","@stdlib/assert/is-float32matrix-like":"06Q","@stdlib/assert-is-float32matrix-like":"06R","@stdlib/assert/is-float32ndarray-like":"06S","@stdlib/assert-is-float32ndarray-like":"06T","@stdlib/assert/is-float32vector-like":"06U","@stdlib/assert-is-float32vector-like":"06V","@stdlib/assert/is-float64array":"06W","@stdlib/assert-is-float64array":"06X","@stdlib/assert/is-float64matrix-like":"06Y","@stdlib/assert-is-float64matrix-like":"06Z","@stdlib/assert/is-float64ndarray-like":"06a","@stdlib/assert-is-float64ndarray-like":"06b","@stdlib/assert/is-float64vector-like":"06c","@stdlib/assert-is-float64vector-like":"06d","@stdlib/assert/is-function-array":"06e","@stdlib/assert-is-function-array":"06f","@stdlib/assert/is-function":"06g","@stdlib/assert-is-function":"06h","@stdlib/assert/is-generator-object-like":"06i","@stdlib/assert-is-generator-object-like":"06j","@stdlib/assert/is-generator-object":"06k","@stdlib/assert-is-generator-object":"06l","@stdlib/assert/is-gzip-buffer":"06m","@stdlib/assert-is-gzip-buffer":"06n","@stdlib/assert/is-hex-string":"06o","@stdlib/assert-is-hex-string":"06p","@stdlib/assert/is-infinite":"06q","@stdlib/assert-is-infinite":"06r","@stdlib/assert/is-inherited-property":"06s","@stdlib/assert-is-inherited-property":"06t","@stdlib/assert/is-int16array":"06u","@stdlib/assert-is-int16array":"06v","@stdlib/assert/is-int32array":"06w","@stdlib/assert-is-int32array":"06x","@stdlib/assert/is-int8array":"06y","@stdlib/assert-is-int8array":"06z","@stdlib/assert/is-integer-array":"070","@stdlib/assert-is-integer-array":"071","@stdlib/assert/is-integer":"072","@stdlib/assert-is-integer":"073","@stdlib/assert/is-iterable-like":"074","@stdlib/assert-is-iterable-like":"075","@stdlib/assert/is-iterator-like":"076","@stdlib/assert-is-iterator-like":"077","@stdlib/assert/is-json":"078","@stdlib/assert-is-json":"079","@stdlib/assert/is-leap-year":"07A","@stdlib/assert-is-leap-year":"07B","@stdlib/assert/is-little-endian":"07C","@stdlib/assert-is-little-endian":"07D","@stdlib/assert/is-localhost":"07E","@stdlib/assert-is-localhost":"07F","@stdlib/assert/is-lowercase":"07G","@stdlib/assert-is-lowercase":"07H","@stdlib/assert/is-matrix-like":"07I","@stdlib/assert-is-matrix-like":"07J","@stdlib/assert/is-method-in":"07K","@stdlib/assert-is-method-in":"07L","@stdlib/assert/is-method":"07M","@stdlib/assert-is-method":"07N","@stdlib/assert/is-mobile":"07O","@stdlib/assert-is-mobile":"07P","@stdlib/assert/is-named-typed-tuple-like":"07Q","@stdlib/assert-is-named-typed-tuple-like":"07R","@stdlib/assert/is-nan-array":"07S","@stdlib/assert-is-nan-array":"07T","@stdlib/assert/is-nan":"07U","@stdlib/assert-is-nan":"07V","@stdlib/assert/is-native-function":"07W","@stdlib/assert-is-native-function":"07X","@stdlib/assert/is-ndarray-like":"07Y","@stdlib/assert-is-ndarray-like":"07Z","@stdlib/assert/is-negative-integer-array":"07a","@stdlib/assert-is-negative-integer-array":"07b","@stdlib/assert/is-negative-integer":"07c","@stdlib/assert-is-negative-integer":"07d","@stdlib/assert/is-negative-number-array":"07e","@stdlib/assert-is-negative-number-array":"07f","@stdlib/assert/is-negative-number":"07g","@stdlib/assert-is-negative-number":"07h","@stdlib/assert/is-negative-zero":"07i","@stdlib/assert-is-negative-zero":"07j","@stdlib/assert/is-node-builtin":"07k","@stdlib/assert-is-node-builtin":"07l","@stdlib/assert/is-node-duplex-stream-like":"07m","@stdlib/assert-is-node-duplex-stream-like":"07n","@stdlib/assert/is-node-readable-stream-like":"07o","@stdlib/assert-is-node-readable-stream-like":"07p","@stdlib/assert/is-node-repl":"07q","@stdlib/assert-is-node-repl":"07r","@stdlib/assert/is-node-stream-like":"07s","@stdlib/assert-is-node-stream-like":"07t","@stdlib/assert/is-node-transform-stream-like":"07u","@stdlib/assert-is-node-transform-stream-like":"07v","@stdlib/assert/is-node-writable-stream-like":"07w","@stdlib/assert-is-node-writable-stream-like":"07x","@stdlib/assert/is-node":"07y","@stdlib/assert-is-node":"07z","@stdlib/assert/is-nonconfigurable-property-in":"080","@stdlib/assert-is-nonconfigurable-property-in":"081","@stdlib/assert/is-nonconfigurable-property":"082","@stdlib/assert-is-nonconfigurable-property":"083","@stdlib/assert/is-nonenumerable-property-in":"084","@stdlib/assert-is-nonenumerable-property-in":"085","@stdlib/assert/is-nonenumerable-property":"086","@stdlib/assert-is-nonenumerable-property":"087","@stdlib/assert/is-nonnegative-integer-array":"088","@stdlib/assert-is-nonnegative-integer-array":"089","@stdlib/assert/is-nonnegative-integer":"08A","@stdlib/assert-is-nonnegative-integer":"08B","@stdlib/assert/is-nonnegative-number-array":"08C","@stdlib/assert-is-nonnegative-number-array":"08D","@stdlib/assert/is-nonnegative-number":"08E","@stdlib/assert-is-nonnegative-number":"08F","@stdlib/assert/is-nonpositive-integer-array":"08G","@stdlib/assert-is-nonpositive-integer-array":"08H","@stdlib/assert/is-nonpositive-integer":"08I","@stdlib/assert-is-nonpositive-integer":"08J","@stdlib/assert/is-nonpositive-number-array":"08K","@stdlib/assert-is-nonpositive-number-array":"08L","@stdlib/assert/is-nonpositive-number":"08M","@stdlib/assert-is-nonpositive-number":"08N","@stdlib/assert/is-nonsymmetric-matrix":"08O","@stdlib/assert-is-nonsymmetric-matrix":"08P","@stdlib/assert/is-null-array":"08Q","@stdlib/assert-is-null-array":"08R","@stdlib/assert/is-null":"08S","@stdlib/assert-is-null":"08T","@stdlib/assert/is-number-array":"08U","@stdlib/assert-is-number-array":"08V","@stdlib/assert/is-number":"08W","@stdlib/assert-is-number":"08X","@stdlib/assert/is-numeric-array":"08Y","@stdlib/assert-is-numeric-array":"08Z","@stdlib/assert/is-object-array":"08a","@stdlib/assert-is-object-array":"08b","@stdlib/assert/is-object-like":"08c","@stdlib/assert-is-object-like":"08d","@stdlib/assert/is-object":"08e","@stdlib/assert-is-object":"08f","@stdlib/assert/is-odd":"08g","@stdlib/assert-is-odd":"08h","@stdlib/assert/is-persymmetric-matrix":"08i","@stdlib/assert-is-persymmetric-matrix":"08j","@stdlib/assert/is-plain-object-array":"08k","@stdlib/assert-is-plain-object-array":"08l","@stdlib/assert/is-plain-object":"08m","@stdlib/assert-is-plain-object":"08n","@stdlib/assert/is-positive-integer-array":"08o","@stdlib/assert-is-positive-integer-array":"08p","@stdlib/assert/is-positive-integer":"08q","@stdlib/assert-is-positive-integer":"08r","@stdlib/assert/is-positive-number-array":"08s","@stdlib/assert-is-positive-number-array":"08t","@stdlib/assert/is-positive-number":"08u","@stdlib/assert-is-positive-number":"08v","@stdlib/assert/is-positive-zero":"08w","@stdlib/assert-is-positive-zero":"08x","@stdlib/assert/is-prime":"08y","@stdlib/assert-is-prime":"08z","@stdlib/assert/is-primitive-array":"090","@stdlib/assert-is-primitive-array":"091","@stdlib/assert/is-primitive":"092","@stdlib/assert-is-primitive":"093","@stdlib/assert/is-prng-like":"094","@stdlib/assert-is-prng-like":"095","@stdlib/assert/is-probability-array":"096","@stdlib/assert-is-probability-array":"097","@stdlib/assert/is-probability":"098","@stdlib/assert-is-probability":"099","@stdlib/assert/is-property-key":"09A","@stdlib/assert-is-property-key":"09B","@stdlib/assert/is-prototype-of":"09C","@stdlib/assert-is-prototype-of":"09D","@stdlib/assert/is-range-error":"09E","@stdlib/assert-is-range-error":"09F","@stdlib/assert/is-read-only-property-in":"09G","@stdlib/assert-is-read-only-property-in":"09H","@stdlib/assert/is-read-only-property":"09I","@stdlib/assert-is-read-only-property":"09J","@stdlib/assert/is-read-write-property-in":"09K","@stdlib/assert-is-read-write-property-in":"09L","@stdlib/assert/is-read-write-property":"09M","@stdlib/assert-is-read-write-property":"09N","@stdlib/assert/is-readable-property-in":"09O","@stdlib/assert-is-readable-property-in":"09P","@stdlib/assert/is-readable-property":"09Q","@stdlib/assert-is-readable-property":"09R","@stdlib/assert/is-reference-error":"09S","@stdlib/assert-is-reference-error":"09T","@stdlib/assert/is-regexp-string":"09U","@stdlib/assert-is-regexp-string":"09V","@stdlib/assert/is-regexp":"09W","@stdlib/assert-is-regexp":"09X","@stdlib/assert/is-relative-path":"09Y","@stdlib/assert-is-relative-path":"09Z","@stdlib/assert/is-relative-uri":"09a","@stdlib/assert-is-relative-uri":"09b","@stdlib/assert/is-safe-integer-array":"09c","@stdlib/assert-is-safe-integer-array":"09d","@stdlib/assert/is-safe-integer":"09e","@stdlib/assert-is-safe-integer":"09f","@stdlib/assert/is-same-native-class":"09g","@stdlib/assert-is-same-native-class":"09h","@stdlib/assert/is-same-type":"09i","@stdlib/assert-is-same-type":"09j","@stdlib/assert/is-same-value-zero":"09k","@stdlib/assert-is-same-value-zero":"09l","@stdlib/assert/is-same-value":"09m","@stdlib/assert-is-same-value":"09n","@stdlib/assert/is-sharedarraybuffer":"09o","@stdlib/assert-is-sharedarraybuffer":"09p","@stdlib/assert/is-skew-centrosymmetric-matrix":"09q","@stdlib/assert-is-skew-centrosymmetric-matrix":"09r","@stdlib/assert/is-skew-persymmetric-matrix":"09s","@stdlib/assert-is-skew-persymmetric-matrix":"09t","@stdlib/assert/is-skew-symmetric-matrix":"09u","@stdlib/assert-is-skew-symmetric-matrix":"09v","@stdlib/assert/is-square-matrix":"09w","@stdlib/assert-is-square-matrix":"09x","@stdlib/assert/is-square-number":"09y","@stdlib/assert-is-square-number":"09z","@stdlib/assert/is-square-triangular-number":"0A0","@stdlib/assert-is-square-triangular-number":"0A1","@stdlib/assert/is-strict-equal":"0A2","@stdlib/assert-is-strict-equal":"0A3","@stdlib/assert/is-string-array":"0A4","@stdlib/assert-is-string-array":"0A5","@stdlib/assert/is-string":"0A6","@stdlib/assert-is-string":"0A7","@stdlib/assert/is-symbol-array":"0A8","@stdlib/assert-is-symbol-array":"0A9","@stdlib/assert/is-symbol":"0AA","@stdlib/assert-is-symbol":"0AB","@stdlib/assert/is-symmetric-matrix":"0AC","@stdlib/assert-is-symmetric-matrix":"0AD","@stdlib/assert/is-syntax-error":"0AE","@stdlib/assert-is-syntax-error":"0AF","@stdlib/assert/is-touch-device":"0AG","@stdlib/assert-is-touch-device":"0AH","@stdlib/assert/is-triangular-number":"0AI","@stdlib/assert-is-triangular-number":"0AJ","@stdlib/assert/is-truthy-array":"0AK","@stdlib/assert-is-truthy-array":"0AL","@stdlib/assert/is-truthy":"0AM","@stdlib/assert-is-truthy":"0AN","@stdlib/assert/is-type-error":"0AO","@stdlib/assert-is-type-error":"0AP","@stdlib/assert/is-typed-array-length":"0AQ","@stdlib/assert-is-typed-array-length":"0AR","@stdlib/assert/is-typed-array-like":"0AS","@stdlib/assert-is-typed-array-like":"0AT","@stdlib/assert/is-typed-array":"0AU","@stdlib/assert-is-typed-array":"0AV","@stdlib/assert/is-uint16array":"0AW","@stdlib/assert-is-uint16array":"0AX","@stdlib/assert/is-uint32array":"0AY","@stdlib/assert-is-uint32array":"0AZ","@stdlib/assert/is-uint8array":"0Aa","@stdlib/assert-is-uint8array":"0Ab","@stdlib/assert/is-uint8clampedarray":"0Ac","@stdlib/assert-is-uint8clampedarray":"0Ad","@stdlib/assert/is-unc-path":"0Ae","@stdlib/assert-is-unc-path":"0Af","@stdlib/assert/is-undefined-or-null":"0Ag","@stdlib/assert-is-undefined-or-null":"0Ah","@stdlib/assert/is-undefined":"0Ai","@stdlib/assert-is-undefined":"0Aj","@stdlib/assert/is-unity-probability-array":"0Ak","@stdlib/assert-is-unity-probability-array":"0Al","@stdlib/assert/is-uppercase":"0Am","@stdlib/assert-is-uppercase":"0An","@stdlib/assert/is-uri-error":"0Ao","@stdlib/assert-is-uri-error":"0Ap","@stdlib/assert/is-uri":"0Aq","@stdlib/assert-is-uri":"0Ar","@stdlib/assert/is-vector-like":"0As","@stdlib/assert-is-vector-like":"0At","@stdlib/assert/is-web-worker":"0Au","@stdlib/assert-is-web-worker":"0Av","@stdlib/assert/is-whitespace":"0Aw","@stdlib/assert-is-whitespace":"0Ax","@stdlib/assert/is-windows":"0Ay","@stdlib/assert-is-windows":"0Az","@stdlib/assert/is-writable-property-in":"0B0","@stdlib/assert-is-writable-property-in":"0B1","@stdlib/assert/is-writable-property":"0B2","@stdlib/assert-is-writable-property":"0B3","@stdlib/assert/is-write-only-property-in":"0B4","@stdlib/assert-is-write-only-property-in":"0B5","@stdlib/assert/is-write-only-property":"0B6","@stdlib/assert-is-write-only-property":"0B7","@stdlib/assert":"0B9","@stdlib/assert/tools/array-function":"0BA","@stdlib/assert-tools-array-function":"0BB","@stdlib/assert/tools/array-like-function":"0BC","@stdlib/assert-tools-array-like-function":"0BD","@stdlib/assert/tools":"0BE","@stdlib/assert-tools":"0BF","@stdlib/assert/tools/typed-array-function":"0BG","@stdlib/assert-tools-typed-array-function":"0BH","@stdlib/bench/harness":"0BI","@stdlib/bench-harness":"0BJ","@stdlib/bench":"0BL","@stdlib/bigint/ctor":"0BM","@stdlib/bigint-ctor":"0BN","@stdlib/bigint":"0BP","@stdlib/blas/base/ccopy":"0BQ","@stdlib/blas-base-ccopy":"0BR","@stdlib/blas/base/cswap":"0BS","@stdlib/blas-base-cswap":"0BT","@stdlib/blas/base/dasum":"0BU","@stdlib/blas-base-dasum":"0BV","@stdlib/blas/base/daxpy":"0BW","@stdlib/blas-base-daxpy":"0BX","@stdlib/blas/base/dcopy":"0BY","@stdlib/blas-base-dcopy":"0BZ","@stdlib/blas/base/ddot":"0Ba","@stdlib/blas-base-ddot":"0Bb","@stdlib/blas/base/dnrm2":"0Bc","@stdlib/blas-base-dnrm2":"0Bd","@stdlib/blas/base/dscal":"0Be","@stdlib/blas-base-dscal":"0Bf","@stdlib/blas/base/dsdot":"0Bg","@stdlib/blas-base-dsdot":"0Bh","@stdlib/blas/base/dswap":"0Bi","@stdlib/blas-base-dswap":"0Bj","@stdlib/blas/base/gasum":"0Bk","@stdlib/blas-base-gasum":"0Bl","@stdlib/blas/base/gaxpy":"0Bm","@stdlib/blas-base-gaxpy":"0Bn","@stdlib/blas/base/gcopy":"0Bo","@stdlib/blas-base-gcopy":"0Bp","@stdlib/blas/base/gdot":"0Bq","@stdlib/blas-base-gdot":"0Br","@stdlib/blas/base/gnrm2":"0Bs","@stdlib/blas-base-gnrm2":"0Bt","@stdlib/blas/base/gscal":"0Bu","@stdlib/blas-base-gscal":"0Bv","@stdlib/blas/base/gswap":"0Bw","@stdlib/blas-base-gswap":"0Bx","@stdlib/blas/base":"0By","@stdlib/blas-base":"0Bz","@stdlib/blas/base/sasum":"0C0","@stdlib/blas-base-sasum":"0C1","@stdlib/blas/base/saxpy":"0C2","@stdlib/blas-base-saxpy":"0C3","@stdlib/blas/base/scopy":"0C4","@stdlib/blas-base-scopy":"0C5","@stdlib/blas/base/sdot":"0C6","@stdlib/blas-base-sdot":"0C7","@stdlib/blas/base/sdsdot":"0C8","@stdlib/blas-base-sdsdot":"0C9","@stdlib/blas/base/snrm2":"0CA","@stdlib/blas-base-snrm2":"0CB","@stdlib/blas/base/sscal":"0CC","@stdlib/blas-base-sscal":"0CD","@stdlib/blas/base/sswap":"0CE","@stdlib/blas-base-sswap":"0CF","@stdlib/blas/ddot":"0CG","@stdlib/blas-ddot":"0CH","@stdlib/blas/dswap":"0CI","@stdlib/blas-dswap":"0CJ","@stdlib/blas/ext/base/dapx":"0CK","@stdlib/blas-ext-base-dapx":"0CL","@stdlib/blas/ext/base/dapxsum":"0CM","@stdlib/blas-ext-base-dapxsum":"0CN","@stdlib/blas/ext/base/dapxsumkbn":"0CO","@stdlib/blas-ext-base-dapxsumkbn":"0CP","@stdlib/blas/ext/base/dapxsumkbn2":"0CQ","@stdlib/blas-ext-base-dapxsumkbn2":"0CR","@stdlib/blas/ext/base/dapxsumors":"0CS","@stdlib/blas-ext-base-dapxsumors":"0CT","@stdlib/blas/ext/base/dapxsumpw":"0CU","@stdlib/blas-ext-base-dapxsumpw":"0CV","@stdlib/blas/ext/base/dasumpw":"0CW","@stdlib/blas-ext-base-dasumpw":"0CX","@stdlib/blas/ext/base/dcusum":"0CY","@stdlib/blas-ext-base-dcusum":"0CZ","@stdlib/blas/ext/base/dcusumkbn":"0Ca","@stdlib/blas-ext-base-dcusumkbn":"0Cb","@stdlib/blas/ext/base/dcusumkbn2":"0Cc","@stdlib/blas-ext-base-dcusumkbn2":"0Cd","@stdlib/blas/ext/base/dcusumors":"0Ce","@stdlib/blas-ext-base-dcusumors":"0Cf","@stdlib/blas/ext/base/dcusumpw":"0Cg","@stdlib/blas-ext-base-dcusumpw":"0Ch","@stdlib/blas/ext/base/dfill":"0Ci","@stdlib/blas-ext-base-dfill":"0Cj","@stdlib/blas/ext/base/dnanasum":"0Ck","@stdlib/blas-ext-base-dnanasum":"0Cl","@stdlib/blas/ext/base/dnanasumors":"0Cm","@stdlib/blas-ext-base-dnanasumors":"0Cn","@stdlib/blas/ext/base/dnannsum":"0Co","@stdlib/blas-ext-base-dnannsum":"0Cp","@stdlib/blas/ext/base/dnannsumkbn":"0Cq","@stdlib/blas-ext-base-dnannsumkbn":"0Cr","@stdlib/blas/ext/base/dnannsumkbn2":"0Cs","@stdlib/blas-ext-base-dnannsumkbn2":"0Ct","@stdlib/blas/ext/base/dnannsumors":"0Cu","@stdlib/blas-ext-base-dnannsumors":"0Cv","@stdlib/blas/ext/base/dnannsumpw":"0Cw","@stdlib/blas-ext-base-dnannsumpw":"0Cx","@stdlib/blas/ext/base/dnansum":"0Cy","@stdlib/blas-ext-base-dnansum":"0Cz","@stdlib/blas/ext/base/dnansumkbn":"0D0","@stdlib/blas-ext-base-dnansumkbn":"0D1","@stdlib/blas/ext/base/dnansumkbn2":"0D2","@stdlib/blas-ext-base-dnansumkbn2":"0D3","@stdlib/blas/ext/base/dnansumors":"0D4","@stdlib/blas-ext-base-dnansumors":"0D5","@stdlib/blas/ext/base/dnansumpw":"0D6","@stdlib/blas-ext-base-dnansumpw":"0D7","@stdlib/blas/ext/base/drev":"0D8","@stdlib/blas-ext-base-drev":"0D9","@stdlib/blas/ext/base/dsapxsum":"0DA","@stdlib/blas-ext-base-dsapxsum":"0DB","@stdlib/blas/ext/base/dsapxsumpw":"0DC","@stdlib/blas-ext-base-dsapxsumpw":"0DD","@stdlib/blas/ext/base/dsnannsumors":"0DE","@stdlib/blas-ext-base-dsnannsumors":"0DF","@stdlib/blas/ext/base/dsnansum":"0DG","@stdlib/blas-ext-base-dsnansum":"0DH","@stdlib/blas/ext/base/dsnansumors":"0DI","@stdlib/blas-ext-base-dsnansumors":"0DJ","@stdlib/blas/ext/base/dsnansumpw":"0DK","@stdlib/blas-ext-base-dsnansumpw":"0DL","@stdlib/blas/ext/base/dsort2hp":"0DM","@stdlib/blas-ext-base-dsort2hp":"0DN","@stdlib/blas/ext/base/dsort2ins":"0DO","@stdlib/blas-ext-base-dsort2ins":"0DP","@stdlib/blas/ext/base/dsort2sh":"0DQ","@stdlib/blas-ext-base-dsort2sh":"0DR","@stdlib/blas/ext/base/dsorthp":"0DS","@stdlib/blas-ext-base-dsorthp":"0DT","@stdlib/blas/ext/base/dsortins":"0DU","@stdlib/blas-ext-base-dsortins":"0DV","@stdlib/blas/ext/base/dsortsh":"0DW","@stdlib/blas-ext-base-dsortsh":"0DX","@stdlib/blas/ext/base/dssum":"0DY","@stdlib/blas-ext-base-dssum":"0DZ","@stdlib/blas/ext/base/dssumors":"0Da","@stdlib/blas-ext-base-dssumors":"0Db","@stdlib/blas/ext/base/dssumpw":"0Dc","@stdlib/blas-ext-base-dssumpw":"0Dd","@stdlib/blas/ext/base/dsum":"0De","@stdlib/blas-ext-base-dsum":"0Df","@stdlib/blas/ext/base/dsumkbn":"0Dg","@stdlib/blas-ext-base-dsumkbn":"0Dh","@stdlib/blas/ext/base/dsumkbn2":"0Di","@stdlib/blas-ext-base-dsumkbn2":"0Dj","@stdlib/blas/ext/base/dsumors":"0Dk","@stdlib/blas-ext-base-dsumors":"0Dl","@stdlib/blas/ext/base/dsumpw":"0Dm","@stdlib/blas-ext-base-dsumpw":"0Dn","@stdlib/blas/ext/base/gapx":"0Do","@stdlib/blas-ext-base-gapx":"0Dp","@stdlib/blas/ext/base/gapxsum":"0Dq","@stdlib/blas-ext-base-gapxsum":"0Dr","@stdlib/blas/ext/base/gapxsumkbn":"0Ds","@stdlib/blas-ext-base-gapxsumkbn":"0Dt","@stdlib/blas/ext/base/gapxsumkbn2":"0Du","@stdlib/blas-ext-base-gapxsumkbn2":"0Dv","@stdlib/blas/ext/base/gapxsumors":"0Dw","@stdlib/blas-ext-base-gapxsumors":"0Dx","@stdlib/blas/ext/base/gapxsumpw":"0Dy","@stdlib/blas-ext-base-gapxsumpw":"0Dz","@stdlib/blas/ext/base/gasumpw":"0E0","@stdlib/blas-ext-base-gasumpw":"0E1","@stdlib/blas/ext/base/gcusum":"0E2","@stdlib/blas-ext-base-gcusum":"0E3","@stdlib/blas/ext/base/gcusumkbn":"0E4","@stdlib/blas-ext-base-gcusumkbn":"0E5","@stdlib/blas/ext/base/gcusumkbn2":"0E6","@stdlib/blas-ext-base-gcusumkbn2":"0E7","@stdlib/blas/ext/base/gcusumors":"0E8","@stdlib/blas-ext-base-gcusumors":"0E9","@stdlib/blas/ext/base/gcusumpw":"0EA","@stdlib/blas-ext-base-gcusumpw":"0EB","@stdlib/blas/ext/base/gfill-by":"0EC","@stdlib/blas-ext-base-gfill-by":"0ED","@stdlib/blas/ext/base/gfill":"0EE","@stdlib/blas-ext-base-gfill":"0EF","@stdlib/blas/ext/base/gnannsumkbn":"0EG","@stdlib/blas-ext-base-gnannsumkbn":"0EH","@stdlib/blas/ext/base/gnansum":"0EI","@stdlib/blas-ext-base-gnansum":"0EJ","@stdlib/blas/ext/base/gnansumkbn":"0EK","@stdlib/blas-ext-base-gnansumkbn":"0EL","@stdlib/blas/ext/base/gnansumkbn2":"0EM","@stdlib/blas-ext-base-gnansumkbn2":"0EN","@stdlib/blas/ext/base/gnansumors":"0EO","@stdlib/blas-ext-base-gnansumors":"0EP","@stdlib/blas/ext/base/gnansumpw":"0EQ","@stdlib/blas-ext-base-gnansumpw":"0ER","@stdlib/blas/ext/base/grev":"0ES","@stdlib/blas-ext-base-grev":"0ET","@stdlib/blas/ext/base/gsort2hp":"0EU","@stdlib/blas-ext-base-gsort2hp":"0EV","@stdlib/blas/ext/base/gsort2ins":"0EW","@stdlib/blas-ext-base-gsort2ins":"0EX","@stdlib/blas/ext/base/gsort2sh":"0EY","@stdlib/blas-ext-base-gsort2sh":"0EZ","@stdlib/blas/ext/base/gsorthp":"0Ea","@stdlib/blas-ext-base-gsorthp":"0Eb","@stdlib/blas/ext/base/gsortins":"0Ec","@stdlib/blas-ext-base-gsortins":"0Ed","@stdlib/blas/ext/base/gsortsh":"0Ee","@stdlib/blas-ext-base-gsortsh":"0Ef","@stdlib/blas/ext/base/gsum":"0Eg","@stdlib/blas-ext-base-gsum":"0Eh","@stdlib/blas/ext/base/gsumkbn":"0Ei","@stdlib/blas-ext-base-gsumkbn":"0Ej","@stdlib/blas/ext/base/gsumkbn2":"0Ek","@stdlib/blas-ext-base-gsumkbn2":"0El","@stdlib/blas/ext/base/gsumors":"0Em","@stdlib/blas-ext-base-gsumors":"0En","@stdlib/blas/ext/base/gsumpw":"0Eo","@stdlib/blas-ext-base-gsumpw":"0Ep","@stdlib/blas/ext/base":"0Eq","@stdlib/blas-ext-base":"0Er","@stdlib/blas/ext/base/sapx":"0Es","@stdlib/blas-ext-base-sapx":"0Et","@stdlib/blas/ext/base/sapxsum":"0Eu","@stdlib/blas-ext-base-sapxsum":"0Ev","@stdlib/blas/ext/base/sapxsumkbn":"0Ew","@stdlib/blas-ext-base-sapxsumkbn":"0Ex","@stdlib/blas/ext/base/sapxsumkbn2":"0Ey","@stdlib/blas-ext-base-sapxsumkbn2":"0Ez","@stdlib/blas/ext/base/sapxsumors":"0F0","@stdlib/blas-ext-base-sapxsumors":"0F1","@stdlib/blas/ext/base/sapxsumpw":"0F2","@stdlib/blas-ext-base-sapxsumpw":"0F3","@stdlib/blas/ext/base/sasumpw":"0F4","@stdlib/blas-ext-base-sasumpw":"0F5","@stdlib/blas/ext/base/scusum":"0F6","@stdlib/blas-ext-base-scusum":"0F7","@stdlib/blas/ext/base/scusumkbn":"0F8","@stdlib/blas-ext-base-scusumkbn":"0F9","@stdlib/blas/ext/base/scusumkbn2":"0FA","@stdlib/blas-ext-base-scusumkbn2":"0FB","@stdlib/blas/ext/base/scusumors":"0FC","@stdlib/blas-ext-base-scusumors":"0FD","@stdlib/blas/ext/base/scusumpw":"0FE","@stdlib/blas-ext-base-scusumpw":"0FF","@stdlib/blas/ext/base/sdsapxsum":"0FG","@stdlib/blas-ext-base-sdsapxsum":"0FH","@stdlib/blas/ext/base/sdsapxsumpw":"0FI","@stdlib/blas-ext-base-sdsapxsumpw":"0FJ","@stdlib/blas/ext/base/sdsnansum":"0FK","@stdlib/blas-ext-base-sdsnansum":"0FL","@stdlib/blas/ext/base/sdsnansumpw":"0FM","@stdlib/blas-ext-base-sdsnansumpw":"0FN","@stdlib/blas/ext/base/sdssum":"0FO","@stdlib/blas-ext-base-sdssum":"0FP","@stdlib/blas/ext/base/sdssumpw":"0FQ","@stdlib/blas-ext-base-sdssumpw":"0FR","@stdlib/blas/ext/base/sfill":"0FS","@stdlib/blas-ext-base-sfill":"0FT","@stdlib/blas/ext/base/snansum":"0FU","@stdlib/blas-ext-base-snansum":"0FV","@stdlib/blas/ext/base/snansumkbn":"0FW","@stdlib/blas-ext-base-snansumkbn":"0FX","@stdlib/blas/ext/base/snansumkbn2":"0FY","@stdlib/blas-ext-base-snansumkbn2":"0FZ","@stdlib/blas/ext/base/snansumors":"0Fa","@stdlib/blas-ext-base-snansumors":"0Fb","@stdlib/blas/ext/base/snansumpw":"0Fc","@stdlib/blas-ext-base-snansumpw":"0Fd","@stdlib/blas/ext/base/srev":"0Fe","@stdlib/blas-ext-base-srev":"0Ff","@stdlib/blas/ext/base/ssort2hp":"0Fg","@stdlib/blas-ext-base-ssort2hp":"0Fh","@stdlib/blas/ext/base/ssort2ins":"0Fi","@stdlib/blas-ext-base-ssort2ins":"0Fj","@stdlib/blas/ext/base/ssort2sh":"0Fk","@stdlib/blas-ext-base-ssort2sh":"0Fl","@stdlib/blas/ext/base/ssorthp":"0Fm","@stdlib/blas-ext-base-ssorthp":"0Fn","@stdlib/blas/ext/base/ssortins":"0Fo","@stdlib/blas-ext-base-ssortins":"0Fp","@stdlib/blas/ext/base/ssortsh":"0Fq","@stdlib/blas-ext-base-ssortsh":"0Fr","@stdlib/blas/ext/base/ssum":"0Fs","@stdlib/blas-ext-base-ssum":"0Ft","@stdlib/blas/ext/base/ssumkbn":"0Fu","@stdlib/blas-ext-base-ssumkbn":"0Fv","@stdlib/blas/ext/base/ssumkbn2":"0Fw","@stdlib/blas-ext-base-ssumkbn2":"0Fx","@stdlib/blas/ext/base/ssumors":"0Fy","@stdlib/blas-ext-base-ssumors":"0Fz","@stdlib/blas/ext/base/ssumpw":"0G0","@stdlib/blas-ext-base-ssumpw":"0G1","@stdlib/blas/ext":"0G2","@stdlib/blas-ext":"0G3","@stdlib/blas/gdot":"0G4","@stdlib/blas-gdot":"0G5","@stdlib/blas/gswap":"0G6","@stdlib/blas-gswap":"0G7","@stdlib/blas":"0G9","@stdlib/blas/sdot":"0GA","@stdlib/blas-sdot":"0GB","@stdlib/blas/sswap":"0GC","@stdlib/blas-sswap":"0GD","@stdlib/buffer/alloc-unsafe":"0GE","@stdlib/buffer-alloc-unsafe":"0GF","@stdlib/buffer/ctor":"0GG","@stdlib/buffer-ctor":"0GH","@stdlib/buffer/from-array":"0GI","@stdlib/buffer-from-array":"0GJ","@stdlib/buffer/from-arraybuffer":"0GK","@stdlib/buffer-from-arraybuffer":"0GL","@stdlib/buffer/from-buffer":"0GM","@stdlib/buffer-from-buffer":"0GN","@stdlib/buffer/from-string":"0GO","@stdlib/buffer-from-string":"0GP","@stdlib/buffer":"0GR","@stdlib/buffer/reviver":"0GS","@stdlib/buffer-reviver":"0GT","@stdlib/buffer/to-json":"0GU","@stdlib/buffer-to-json":"0GV","@stdlib/cli/ctor":"0GW","@stdlib/cli-ctor":"0GX","@stdlib/cli":"0GZ","@stdlib/complex/base/wrap-function":"0Ga","@stdlib/complex-base-wrap-function":"0Gb","@stdlib/complex/cmplx":"0Gc","@stdlib/complex-cmplx":"0Gd","@stdlib/complex/conj":"0Ge","@stdlib/complex-conj":"0Gf","@stdlib/complex/conjf":"0Gg","@stdlib/complex-conjf":"0Gh","@stdlib/complex/ctors":"0Gi","@stdlib/complex-ctors":"0Gj","@stdlib/complex/dtype":"0Gk","@stdlib/complex-dtype":"0Gl","@stdlib/complex/dtypes":"0Gm","@stdlib/complex-dtypes":"0Gn","@stdlib/complex/float32/ctor":"0Go","@stdlib/complex-float32":"1ur","@stdlib/complex/float64/ctor":"0Gq","@stdlib/complex-float64":"1uz","@stdlib/complex/imag":"0Gs","@stdlib/complex-imag":"0Gt","@stdlib/complex/imagf":"0Gu","@stdlib/complex-imagf":"0Gv","@stdlib/complex":"0Gx","@stdlib/complex/promotion-rules":"0Gy","@stdlib/complex-promotion-rules":"0Gz","@stdlib/complex/real":"0H0","@stdlib/complex-real":"0H1","@stdlib/complex/realf":"0H2","@stdlib/complex-realf":"0H3","@stdlib/complex/reim":"0H4","@stdlib/complex-reim":"0H5","@stdlib/complex/reimf":"0H6","@stdlib/complex-reimf":"0H7","@stdlib/complex/float32/reviver":"0H8","@stdlib/complex-reviver-float32":"0H9","@stdlib/complex/float64/reviver":"0HA","@stdlib/complex-reviver-float64":"0HB","@stdlib/complex/reviver":"0HC","@stdlib/complex-reviver":"0HD","@stdlib/constants/array/max-array-length":"0HE","@stdlib/constants-array-max-array-length":"0HF","@stdlib/constants/array/max-typed-array-length":"0HG","@stdlib/constants-array-max-typed-array-length":"0HH","@stdlib/constants/array":"0HI","@stdlib/constants-array":"0HJ","@stdlib/constants/complex128/num-bytes":"0HK","@stdlib/constants-complex128-num-bytes":"0HL","@stdlib/constants/complex128":"0HM","@stdlib/constants-complex128":"0HN","@stdlib/constants/complex64/num-bytes":"0HO","@stdlib/constants-complex64-num-bytes":"0HP","@stdlib/constants/complex64":"0HQ","@stdlib/constants-complex64":"0HR","@stdlib/constants/float16/cbrt-eps":"0HS","@stdlib/constants-float16-cbrt-eps":"0HT","@stdlib/constants/float16/eps":"0HU","@stdlib/constants-float16-eps":"0HV","@stdlib/constants/float16/exponent-bias":"0HW","@stdlib/constants-float16-exponent-bias":"0HX","@stdlib/constants/float16/max-safe-integer":"0HY","@stdlib/constants-float16-max-safe-integer":"0HZ","@stdlib/constants/float16/max":"0Ha","@stdlib/constants-float16-max":"0Hb","@stdlib/constants/float16/min-safe-integer":"0Hc","@stdlib/constants-float16-min-safe-integer":"0Hd","@stdlib/constants/float16/ninf":"0He","@stdlib/constants-float16-ninf":"0Hf","@stdlib/constants/float16/num-bytes":"0Hg","@stdlib/constants-float16-num-bytes":"0Hh","@stdlib/constants/float16":"0Hi","@stdlib/constants-float16":"0Hj","@stdlib/constants/float16/pinf":"0Hk","@stdlib/constants-float16-pinf":"0Hl","@stdlib/constants/float16/precision":"0Hm","@stdlib/constants-float16-precision":"0Hn","@stdlib/constants/float16/smallest-normal":"0Ho","@stdlib/constants-float16-smallest-normal":"0Hp","@stdlib/constants/float16/smallest-subnormal":"0Hq","@stdlib/constants-float16-smallest-subnormal":"0Hr","@stdlib/constants/float16/sqrt-eps":"0Hs","@stdlib/constants-float16-sqrt-eps":"0Ht","@stdlib/constants/float32/cbrt-eps":"0Hu","@stdlib/constants-float32-cbrt-eps":"0Hv","@stdlib/constants/float32/eps":"0Hw","@stdlib/constants-float32-eps":"0Hx","@stdlib/constants/float32/exponent-bias":"0Hy","@stdlib/constants-float32-exponent-bias":"0Hz","@stdlib/constants/float32/max-safe-integer":"0I0","@stdlib/constants-float32-max-safe-integer":"0I1","@stdlib/constants/float32/max":"0I2","@stdlib/constants-float32-max":"0I3","@stdlib/constants/float32/min-safe-integer":"0I4","@stdlib/constants-float32-min-safe-integer":"0I5","@stdlib/constants/float32/ninf":"0I6","@stdlib/constants-float32-ninf":"0I7","@stdlib/constants/float32/num-bytes":"0I8","@stdlib/constants-float32-num-bytes":"0I9","@stdlib/constants/float32":"0IA","@stdlib/constants-float32":"0IB","@stdlib/constants/float32/pinf":"0IC","@stdlib/constants-float32-pinf":"0ID","@stdlib/constants/float32/precision":"0IE","@stdlib/constants-float32-precision":"0IF","@stdlib/constants/float32/smallest-normal":"0IG","@stdlib/constants-float32-smallest-normal":"0IH","@stdlib/constants/float32/smallest-subnormal":"0II","@stdlib/constants-float32-smallest-subnormal":"0IJ","@stdlib/constants/float32/sqrt-eps":"0IK","@stdlib/constants-float32-sqrt-eps":"0IL","@stdlib/constants/float64/apery":"0IM","@stdlib/constants-float64-apery":"0IN","@stdlib/constants/float64/catalan":"0IO","@stdlib/constants-float64-catalan":"0IP","@stdlib/constants/float64/cbrt-eps":"0IQ","@stdlib/constants-float64-cbrt-eps":"0IR","@stdlib/constants/float64/e":"0IS","@stdlib/constants-float64-e":"0IT","@stdlib/constants/float64/eps":"0IU","@stdlib/constants-float64-eps":"0IV","@stdlib/constants/float64/eulergamma":"0IW","@stdlib/constants-float64-eulergamma":"0IX","@stdlib/constants/float64/exponent-bias":"0IY","@stdlib/constants-float64-exponent-bias":"0IZ","@stdlib/constants/float64/fourth-pi":"0Ia","@stdlib/constants-float64-fourth-pi":"0Ib","@stdlib/constants/float64/fourth-root-eps":"0Ic","@stdlib/constants-float64-fourth-root-eps":"0Id","@stdlib/constants/float64/gamma-lanczos-g":"0Ie","@stdlib/constants-float64-gamma-lanczos-g":"0If","@stdlib/constants/float64/glaisher-kinkelin":"0Ig","@stdlib/constants-float64-glaisher-kinkelin":"0Ih","@stdlib/constants/float64/half-ln-two":"0Ii","@stdlib/constants-float64-half-ln-two":"0Ij","@stdlib/constants/float64/half-pi":"0Ik","@stdlib/constants-float64-half-pi":"0Il","@stdlib/constants/float64/high-word-exponent-mask":"0Im","@stdlib/constants-float64-high-word-exponent-mask":"0In","@stdlib/constants/float64/high-word-significand-mask":"0Io","@stdlib/constants-float64-high-word-significand-mask":"0Ip","@stdlib/constants/float64/ln-half":"0Iq","@stdlib/constants-float64-ln-half":"0Ir","@stdlib/constants/float64/ln-pi":"0Is","@stdlib/constants-float64-ln-pi":"0It","@stdlib/constants/float64/ln-sqrt-two-pi":"0Iu","@stdlib/constants-float64-ln-sqrt-two-pi":"0Iv","@stdlib/constants/float64/ln-ten":"0Iw","@stdlib/constants-float64-ln-ten":"0Ix","@stdlib/constants/float64/ln-two-pi":"0Iy","@stdlib/constants-float64-ln-two-pi":"0Iz","@stdlib/constants/float64/ln-two":"0J0","@stdlib/constants-float64-ln-two":"0J1","@stdlib/constants/float64/log10-e":"0J2","@stdlib/constants-float64-log10-e":"0J3","@stdlib/constants/float64/log2-e":"0J4","@stdlib/constants-float64-log2-e":"0J5","@stdlib/constants/float64/max-base10-exponent-subnormal":"0J6","@stdlib/constants-float64-max-base10-exponent-subnormal":"0J7","@stdlib/constants/float64/max-base10-exponent":"0J8","@stdlib/constants-float64-max-base10-exponent":"0J9","@stdlib/constants/float64/max-base2-exponent-subnormal":"0JA","@stdlib/constants-float64-max-base2-exponent-subnormal":"0JB","@stdlib/constants/float64/max-base2-exponent":"0JC","@stdlib/constants-float64-max-base2-exponent":"0JD","@stdlib/constants/float64/max-ln":"0JE","@stdlib/constants-float64-max-ln":"0JF","@stdlib/constants/float64/max-safe-fibonacci":"0JG","@stdlib/constants-float64-max-safe-fibonacci":"0JH","@stdlib/constants/float64/max-safe-integer":"0JI","@stdlib/constants-float64-max-safe-integer":"0JJ","@stdlib/constants/float64/max-safe-lucas":"0JK","@stdlib/constants-float64-max-safe-lucas":"0JL","@stdlib/constants/float64/max-safe-nth-fibonacci":"0JM","@stdlib/constants-float64-max-safe-nth-fibonacci":"0JN","@stdlib/constants/float64/max-safe-nth-lucas":"0JO","@stdlib/constants-float64-max-safe-nth-lucas":"0JP","@stdlib/constants/float64/max":"0JQ","@stdlib/constants-float64-max":"0JR","@stdlib/constants/float64/min-base10-exponent-subnormal":"0JS","@stdlib/constants-float64-min-base10-exponent-subnormal":"0JT","@stdlib/constants/float64/min-base10-exponent":"0JU","@stdlib/constants-float64-min-base10-exponent":"0JV","@stdlib/constants/float64/min-base2-exponent-subnormal":"0JW","@stdlib/constants-float64-min-base2-exponent-subnormal":"0JX","@stdlib/constants/float64/min-base2-exponent":"0JY","@stdlib/constants-float64-min-base2-exponent":"0JZ","@stdlib/constants/float64/min-ln":"0Ja","@stdlib/constants-float64-min-ln":"0Jb","@stdlib/constants/float64/min-safe-integer":"0Jc","@stdlib/constants-float64-min-safe-integer":"0Jd","@stdlib/constants/float64/ninf":"0Je","@stdlib/constants-float64-ninf":"0Jf","@stdlib/constants/float64/num-bytes":"0Jg","@stdlib/constants-float64-num-bytes":"0Jh","@stdlib/constants/float64":"0Ji","@stdlib/constants-float64":"0Jj","@stdlib/constants/float64/phi":"0Jk","@stdlib/constants-float64-phi":"0Jl","@stdlib/constants/float64/pi-squared":"0Jm","@stdlib/constants-float64-pi-squared":"0Jn","@stdlib/constants/float64/pi":"0Jo","@stdlib/constants-float64-pi":"0Jp","@stdlib/constants/float64/pinf":"0Jq","@stdlib/constants-float64-pinf":"0Jr","@stdlib/constants/float64/precision":"0Js","@stdlib/constants-float64-precision":"0Jt","@stdlib/constants/float64/smallest-normal":"0Ju","@stdlib/constants-float64-smallest-normal":"0Jv","@stdlib/constants/float64/smallest-subnormal":"0Jw","@stdlib/constants-float64-smallest-subnormal":"0Jx","@stdlib/constants/float64/sqrt-eps":"0Jy","@stdlib/constants-float64-sqrt-eps":"0Jz","@stdlib/constants/float64/sqrt-half-pi":"0K0","@stdlib/constants-float64-sqrt-half-pi":"0K1","@stdlib/constants/float64/sqrt-half":"0K2","@stdlib/constants-float64-sqrt-half":"0K3","@stdlib/constants/float64/sqrt-phi":"0K4","@stdlib/constants-float64-sqrt-phi":"0K5","@stdlib/constants/float64/sqrt-pi":"0K6","@stdlib/constants-float64-sqrt-pi":"0K7","@stdlib/constants/float64/sqrt-three":"0K8","@stdlib/constants-float64-sqrt-three":"0K9","@stdlib/constants/float64/sqrt-two-pi":"0KA","@stdlib/constants-float64-sqrt-two-pi":"0KB","@stdlib/constants/float64/sqrt-two":"0KC","@stdlib/constants-float64-sqrt-two":"0KD","@stdlib/constants/float64/two-pi":"0KE","@stdlib/constants-float64-two-pi":"0KF","@stdlib/constants/int16/max":"0KG","@stdlib/constants-int16-max":"0KH","@stdlib/constants/int16/min":"0KI","@stdlib/constants-int16-min":"0KJ","@stdlib/constants/int16/num-bytes":"0KK","@stdlib/constants-int16-num-bytes":"0KL","@stdlib/constants/int16":"0KM","@stdlib/constants-int16":"0KN","@stdlib/constants/int32/max":"0KO","@stdlib/constants-int32-max":"0KP","@stdlib/constants/int32/min":"0KQ","@stdlib/constants-int32-min":"0KR","@stdlib/constants/int32/num-bytes":"0KS","@stdlib/constants-int32-num-bytes":"0KT","@stdlib/constants/int32":"0KU","@stdlib/constants-int32":"0KV","@stdlib/constants/int8/max":"0KW","@stdlib/constants-int8-max":"0KX","@stdlib/constants/int8/min":"0KY","@stdlib/constants-int8-min":"0KZ","@stdlib/constants/int8/num-bytes":"0Ka","@stdlib/constants-int8-num-bytes":"0Kb","@stdlib/constants/int8":"0Kc","@stdlib/constants-int8":"0Kd","@stdlib/constants":"0Kf","@stdlib/constants/path/delimiter-posix":"0Kg","@stdlib/constants-path-delimiter-posix":"0Kh","@stdlib/constants/path/delimiter-win32":"0Ki","@stdlib/constants-path-delimiter-win32":"0Kj","@stdlib/constants/path/delimiter":"0Kk","@stdlib/constants-path-delimiter":"0Kl","@stdlib/constants/path":"0Km","@stdlib/constants-path":"0Kn","@stdlib/constants/path/sep-posix":"0Ko","@stdlib/constants-path-sep-posix":"0Kp","@stdlib/constants/path/sep-win32":"0Kq","@stdlib/constants-path-sep-win32":"0Kr","@stdlib/constants/path/sep":"0Ks","@stdlib/constants-path-sep":"0Kt","@stdlib/constants/time/hours-in-day":"0Ku","@stdlib/constants-time-hours-in-day":"0Kv","@stdlib/constants/time/hours-in-week":"0Kw","@stdlib/constants-time-hours-in-week":"0Kx","@stdlib/constants/time/milliseconds-in-day":"0Ky","@stdlib/constants-time-milliseconds-in-day":"0Kz","@stdlib/constants/time/milliseconds-in-hour":"0L0","@stdlib/constants-time-milliseconds-in-hour":"0L1","@stdlib/constants/time/milliseconds-in-minute":"0L2","@stdlib/constants-time-milliseconds-in-minute":"0L3","@stdlib/constants/time/milliseconds-in-second":"0L4","@stdlib/constants-time-milliseconds-in-second":"0L5","@stdlib/constants/time/milliseconds-in-week":"0L6","@stdlib/constants-time-milliseconds-in-week":"0L7","@stdlib/constants/time/minutes-in-day":"0L8","@stdlib/constants-time-minutes-in-day":"0L9","@stdlib/constants/time/minutes-in-hour":"0LA","@stdlib/constants-time-minutes-in-hour":"0LB","@stdlib/constants/time/minutes-in-week":"0LC","@stdlib/constants-time-minutes-in-week":"0LD","@stdlib/constants/time/months-in-year":"0LE","@stdlib/constants-time-months-in-year":"0LF","@stdlib/constants/time":"0LG","@stdlib/constants-time":"0LH","@stdlib/constants/time/seconds-in-day":"0LI","@stdlib/constants-time-seconds-in-day":"0LJ","@stdlib/constants/time/seconds-in-hour":"0LK","@stdlib/constants-time-seconds-in-hour":"0LL","@stdlib/constants/time/seconds-in-minute":"0LM","@stdlib/constants-time-seconds-in-minute":"0LN","@stdlib/constants/time/seconds-in-week":"0LO","@stdlib/constants-time-seconds-in-week":"0LP","@stdlib/constants/uint16/max":"0LQ","@stdlib/constants-uint16-max":"0LR","@stdlib/constants/uint16/num-bytes":"0LS","@stdlib/constants-uint16-num-bytes":"0LT","@stdlib/constants/uint16":"0LU","@stdlib/constants-uint16":"0LV","@stdlib/constants/uint32/max":"0LW","@stdlib/constants-uint32-max":"0LX","@stdlib/constants/uint32/num-bytes":"0LY","@stdlib/constants-uint32-num-bytes":"0LZ","@stdlib/constants/uint32":"0La","@stdlib/constants-uint32":"0Lb","@stdlib/constants/uint8/max":"0Lc","@stdlib/constants-uint8-max":"0Ld","@stdlib/constants/uint8/num-bytes":"0Le","@stdlib/constants-uint8-num-bytes":"0Lf","@stdlib/constants/uint8":"0Lg","@stdlib/constants-uint8":"0Lh","@stdlib/constants/unicode/max-bmp":"0Li","@stdlib/constants-unicode-max-bmp":"0Lj","@stdlib/constants/unicode/max":"0Lk","@stdlib/constants-unicode-max":"0Ll","@stdlib/constants/unicode":"0Lm","@stdlib/constants-unicode":"0Ln","@stdlib/datasets/afinn-111":"0Lo","@stdlib/datasets-afinn-111":"0Lp","@stdlib/datasets/afinn-96":"0Lq","@stdlib/datasets-afinn-96":"0Lr","@stdlib/datasets/anscombes-quartet":"0Ls","@stdlib/datasets-anscombes-quartet":"0Lt","@stdlib/datasets/berndt-cps-wages-1985":"0Lu","@stdlib/datasets-berndt-cps-wages-1985":"0Lv","@stdlib/datasets/cdc-nchs-us-births-1969-1988":"0Lw","@stdlib/datasets-cdc-nchs-us-births-1969-1988":"0Lx","@stdlib/datasets/cdc-nchs-us-births-1994-2003":"0Ly","@stdlib/datasets-cdc-nchs-us-births-1994-2003":"0Lz","@stdlib/datasets/cdc-nchs-us-infant-mortality-bw-1915-2013":"0M0","@stdlib/datasets-cdc-nchs-us-infant-mortality-bw-1915-2013":"0M1","@stdlib/datasets/cmudict":"0M2","@stdlib/datasets-cmudict":"0M3","@stdlib/datasets/dale-chall-new":"0M4","@stdlib/datasets-dale-chall-new":"0M5","@stdlib/datasets/emoji-code-picto":"0M6","@stdlib/datasets-emoji-code-picto":"0M7","@stdlib/datasets/emoji-picto-code":"0M8","@stdlib/datasets-emoji-picto-code":"0M9","@stdlib/datasets/emoji":"0MA","@stdlib/datasets-emoji":"0MB","@stdlib/datasets/female-first-names-en":"0MC","@stdlib/datasets-female-first-names-en":"0MD","@stdlib/datasets/fivethirtyeight-ffq":"0ME","@stdlib/datasets-fivethirtyeight-ffq":"0MF","@stdlib/datasets/frb-sf-wage-rigidity":"0MG","@stdlib/datasets-frb-sf-wage-rigidity":"0MH","@stdlib/datasets/harrison-boston-house-prices-corrected":"0MI","@stdlib/datasets-harrison-boston-house-prices-corrected":"0MJ","@stdlib/datasets/harrison-boston-house-prices":"0MK","@stdlib/datasets-harrison-boston-house-prices":"0ML","@stdlib/datasets/herndon-venus-semidiameters":"0MM","@stdlib/datasets-herndon-venus-semidiameters":"0MN","@stdlib/datasets/img-acanthus-mollis":"0MO","@stdlib/datasets-img-acanthus-mollis":"0MP","@stdlib/datasets/img-airplane-from-above":"0MQ","@stdlib/datasets-img-airplane-from-above":"0MR","@stdlib/datasets/img-allium-oreophilum":"0MS","@stdlib/datasets-img-allium-oreophilum":"0MT","@stdlib/datasets/img-black-canyon":"0MU","@stdlib/datasets-img-black-canyon":"0MV","@stdlib/datasets/img-dust-bowl-home":"0MW","@stdlib/datasets-img-dust-bowl-home":"0MX","@stdlib/datasets/img-french-alpine-landscape":"0MY","@stdlib/datasets-img-french-alpine-landscape":"0MZ","@stdlib/datasets/img-locomotion-house-cat":"0Ma","@stdlib/datasets-img-locomotion-house-cat":"0Mb","@stdlib/datasets/img-locomotion-nude-male":"0Mc","@stdlib/datasets-img-locomotion-nude-male":"0Md","@stdlib/datasets/img-march-pastoral":"0Me","@stdlib/datasets-img-march-pastoral":"0Mf","@stdlib/datasets/img-nagasaki-boats":"0Mg","@stdlib/datasets-img-nagasaki-boats":"0Mh","@stdlib/datasets/liu-negative-opinion-words-en":"0Mi","@stdlib/datasets-liu-negative-opinion-words-en":"0Mj","@stdlib/datasets/liu-positive-opinion-words-en":"0Mk","@stdlib/datasets-liu-positive-opinion-words-en":"0Ml","@stdlib/datasets/male-first-names-en":"0Mm","@stdlib/datasets-male-first-names-en":"0Mn","@stdlib/datasets/minard-napoleons-march":"0Mo","@stdlib/datasets-minard-napoleons-march":"0Mp","@stdlib/datasets/moby-dick":"0Mq","@stdlib/datasets-moby-dick":"0Mr","@stdlib/datasets/month-names-en":"0Ms","@stdlib/datasets-month-names-en":"0Mt","@stdlib/datasets/nightingales-rose":"0Mu","@stdlib/datasets-nightingales-rose":"0Mv","@stdlib/datasets/pace-boston-house-prices":"0Mw","@stdlib/datasets-pace-boston-house-prices":"0Mx","@stdlib/datasets":"0Mz","@stdlib/datasets/primes-100k":"0N0","@stdlib/datasets-primes-100k":"0N1","@stdlib/datasets/savoy-stopwords-fin":"0N2","@stdlib/datasets-savoy-stopwords-fin":"0N3","@stdlib/datasets/savoy-stopwords-fr":"0N4","@stdlib/datasets-savoy-stopwords-fr":"0N5","@stdlib/datasets/savoy-stopwords-ger":"0N6","@stdlib/datasets-savoy-stopwords-ger":"0N7","@stdlib/datasets/savoy-stopwords-it":"0N8","@stdlib/datasets-savoy-stopwords-it":"0N9","@stdlib/datasets/savoy-stopwords-por":"0NA","@stdlib/datasets-savoy-stopwords-por":"0NB","@stdlib/datasets/savoy-stopwords-sp":"0NC","@stdlib/datasets-savoy-stopwords-sp":"0ND","@stdlib/datasets/savoy-stopwords-swe":"0NE","@stdlib/datasets-savoy-stopwords-swe":"0NF","@stdlib/datasets/sotu":"0NG","@stdlib/datasets-sotu":"0NH","@stdlib/datasets/spache-revised":"0NI","@stdlib/datasets-spache-revised":"0NJ","@stdlib/datasets/spam-assassin":"0NK","@stdlib/datasets-spam-assassin":"0NL","@stdlib/datasets/ssa-us-births-2000-2014":"0NM","@stdlib/datasets-ssa-us-births-2000-2014":"0NN","@stdlib/datasets/standard-card-deck":"0NO","@stdlib/datasets-standard-card-deck":"0NP","@stdlib/datasets/stopwords-en":"0NQ","@stdlib/datasets-stopwords-en":"0NR","@stdlib/datasets/suthaharan-multi-hop-sensor-network":"0NS","@stdlib/datasets-suthaharan-multi-hop-sensor-network":"0NT","@stdlib/datasets/suthaharan-single-hop-sensor-network":"0NU","@stdlib/datasets-suthaharan-single-hop-sensor-network":"0NV","@stdlib/datasets/us-states-abbr":"0NW","@stdlib/datasets-us-states-abbr":"0NX","@stdlib/datasets/us-states-capitals-names":"0NY","@stdlib/datasets-us-states-capitals-names":"0NZ","@stdlib/datasets/us-states-capitals":"0Na","@stdlib/datasets-us-states-capitals":"0Nb","@stdlib/datasets/us-states-names-capitals":"0Nc","@stdlib/datasets-us-states-names-capitals":"0Nd","@stdlib/datasets/us-states-names":"0Ne","@stdlib/datasets-us-states-names":"0Nf","@stdlib/error":"0Nh","@stdlib/error/reviver":"0Ni","@stdlib/error-reviver":"0Nj","@stdlib/error/to-json":"0Nk","@stdlib/error-to-json":"0Nl","@stdlib/error/tools/database":"0Nm","@stdlib/error-tools-database":"0Nn","@stdlib/error/tools/fmtprodmsg-factory":"0No","@stdlib/error-tools-fmtprodmsg-factory":"0Np","@stdlib/error/tools/fmtprodmsg":"0Nq","@stdlib/error-tools-fmtprodmsg":"0Nr","@stdlib/error/tools/id2msg":"0Ns","@stdlib/error-tools-id2msg":"0Nt","@stdlib/error/tools/id2pkg":"0Nu","@stdlib/error-tools-id2pkg":"0Nv","@stdlib/error/tools/msg2id":"0Nw","@stdlib/error-tools-msg2id":"0Nx","@stdlib/error/tools":"0Ny","@stdlib/error-tools":"0Nz","@stdlib/error/tools/pkg2id":"0O0","@stdlib/error-tools-pkg2id":"0O1","@stdlib/fs/close":"0O2","@stdlib/fs-close":"0O3","@stdlib/fs/exists":"0O4","@stdlib/fs-exists":"0O5","@stdlib/fs/open":"0O6","@stdlib/fs-open":"0O7","@stdlib/fs":"0O9","@stdlib/fs/read-dir":"0OA","@stdlib/fs-read-dir":"0OB","@stdlib/fs/read-file-list":"0OC","@stdlib/fs-read-file-list":"0OD","@stdlib/fs/read-file":"0OE","@stdlib/fs-read-file":"0OF","@stdlib/fs/read-json":"0OG","@stdlib/fs-read-json":"0OH","@stdlib/fs/read-wasm":"0OI","@stdlib/fs-read-wasm":"0OJ","@stdlib/fs/rename":"0OK","@stdlib/fs-rename":"0OL","@stdlib/fs/resolve-parent-path-by":"0OM","@stdlib/fs-resolve-parent-path-by":"0ON","@stdlib/fs/resolve-parent-path":"0OO","@stdlib/fs-resolve-parent-path":"0OP","@stdlib/fs/unlink":"0OQ","@stdlib/fs-unlink":"0OR","@stdlib/fs/write-file":"0OS","@stdlib/fs-write-file":"0OT","@stdlib/iter/advance":"0OU","@stdlib/iter-advance":"0OV","@stdlib/iter/any-by":"0OW","@stdlib/iter-any-by":"0OX","@stdlib/iter/any":"0OY","@stdlib/iter-any":"0OZ","@stdlib/iter/concat":"0Oa","@stdlib/iter-concat":"0Ob","@stdlib/iter/constant":"0Oc","@stdlib/iter-constant":"0Od","@stdlib/iter/counter":"0Oe","@stdlib/iter-counter":"0Of","@stdlib/iter/datespace":"0Og","@stdlib/iter-datespace":"0Oh","@stdlib/iter/dedupe-by":"0Oi","@stdlib/iter-dedupe-by":"0Oj","@stdlib/iter/dedupe":"0Ok","@stdlib/iter-dedupe":"0Ol","@stdlib/iter/empty":"0Om","@stdlib/iter-empty":"0On","@stdlib/iter/every-by":"0Oo","@stdlib/iter-every-by":"0Op","@stdlib/iter/every":"0Oq","@stdlib/iter-every":"0Or","@stdlib/iter/fill":"0Os","@stdlib/iter-fill":"0Ot","@stdlib/iter/filter-map":"0Ou","@stdlib/iter-filter-map":"0Ov","@stdlib/iter/filter":"0Ow","@stdlib/iter-filter":"0Ox","@stdlib/iter/first":"0Oy","@stdlib/iter-first":"0Oz","@stdlib/iter/flow":"0P0","@stdlib/iter-flow":"0P1","@stdlib/iter/for-each":"0P2","@stdlib/iter-for-each":"0P3","@stdlib/iter/head":"0P4","@stdlib/iter-head":"0P5","@stdlib/iter/incrspace":"0P6","@stdlib/iter-incrspace":"0P7","@stdlib/iter/intersection-by-hash":"0P8","@stdlib/iter-intersection-by-hash":"0P9","@stdlib/iter/intersection":"0PA","@stdlib/iter-intersection":"0PB","@stdlib/iter/last":"0PC","@stdlib/iter-last":"0PD","@stdlib/iter/length":"0PE","@stdlib/iter-length":"0PF","@stdlib/iter/linspace":"0PG","@stdlib/iter-linspace":"0PH","@stdlib/iter/logspace":"0PI","@stdlib/iter-logspace":"0PJ","@stdlib/iter/map":"0PK","@stdlib/iter-map":"0PL","@stdlib/iter/mapn":"0PM","@stdlib/iter-mapn":"0PN","@stdlib/iter/none-by":"0PO","@stdlib/iter-none-by":"0PP","@stdlib/iter/none":"0PQ","@stdlib/iter-none":"0PR","@stdlib/iter/nth":"0PS","@stdlib/iter-nth":"0PT","@stdlib/iter":"0PV","@stdlib/iter/pipeline-thunk":"0PW","@stdlib/iter-pipeline-thunk":"0PX","@stdlib/iter/pipeline":"0PY","@stdlib/iter-pipeline":"0PZ","@stdlib/iter/pop":"0Pa","@stdlib/iter-pop":"0Pb","@stdlib/iter/push":"0Pc","@stdlib/iter-push":"0Pd","@stdlib/iter/reject":"0Pe","@stdlib/iter-reject":"0Pf","@stdlib/iter/replicate-by":"0Pg","@stdlib/iter-replicate-by":"0Ph","@stdlib/iter/replicate":"0Pi","@stdlib/iter-replicate":"0Pj","@stdlib/iter/shift":"0Pk","@stdlib/iter-shift":"0Pl","@stdlib/iter/slice":"0Pm","@stdlib/iter-slice":"0Pn","@stdlib/iter/some-by":"0Po","@stdlib/iter-some-by":"0Pp","@stdlib/iter/some":"0Pq","@stdlib/iter-some":"0Pr","@stdlib/iter/step":"0Ps","@stdlib/iter-step":"0Pt","@stdlib/iter/strided-by":"0Pu","@stdlib/iter-strided-by":"0Pv","@stdlib/iter/strided":"0Pw","@stdlib/iter-strided":"0Px","@stdlib/iter/to-array-view-right":"0Py","@stdlib/iter-to-array-view-right":"0Pz","@stdlib/iter/to-array-view":"0Q0","@stdlib/iter-to-array-view":"0Q1","@stdlib/iter/union":"0Q2","@stdlib/iter-union":"0Q3","@stdlib/iter/unique-by-hash":"0Q4","@stdlib/iter-unique-by-hash":"0Q5","@stdlib/iter/unique-by":"0Q6","@stdlib/iter-unique-by":"0Q7","@stdlib/iter/unique":"0Q8","@stdlib/iter-unique":"0Q9","@stdlib/iter/unitspace":"0QA","@stdlib/iter-unitspace":"0QB","@stdlib/iter/unshift":"0QC","@stdlib/iter-unshift":"0QD","@stdlib/math/base/assert/int32-is-even":"0QE","@stdlib/math-base-assert-int32-is-even":"0QF","@stdlib/math/base/assert/int32-is-odd":"0QG","@stdlib/math-base-assert-int32-is-odd":"0QH","@stdlib/math/base/assert/is-composite":"0QI","@stdlib/math-base-assert-is-composite":"0QJ","@stdlib/math/base/assert/is-coprime":"0QK","@stdlib/math-base-assert-is-coprime":"0QL","@stdlib/math/base/assert/is-even":"0QM","@stdlib/math-base-assert-is-even":"0QN","@stdlib/math/base/assert/is-finite":"0QO","@stdlib/math-base-assert-is-finite":"0QP","@stdlib/math/base/assert/is-finitef":"0QQ","@stdlib/math-base-assert-is-finitef":"0QR","@stdlib/math/base/assert/is-infinite":"0QS","@stdlib/math-base-assert-is-infinite":"0QT","@stdlib/math/base/assert/is-infinitef":"0QU","@stdlib/math-base-assert-is-infinitef":"0QV","@stdlib/math/base/assert/is-integer":"0QW","@stdlib/math-base-assert-is-integer":"0QX","@stdlib/math/base/assert/is-nan":"0QY","@stdlib/math-base-assert-is-nan":"0QZ","@stdlib/math/base/assert/is-nanf":"0Qa","@stdlib/math-base-assert-is-nanf":"0Qb","@stdlib/math/base/assert/is-negative-integer":"0Qc","@stdlib/math-base-assert-is-negative-integer":"0Qd","@stdlib/math/base/assert/is-negative-zero":"0Qe","@stdlib/math-base-assert-is-negative-zero":"0Qf","@stdlib/math/base/assert/is-negative-zerof":"0Qg","@stdlib/math-base-assert-is-negative-zerof":"0Qh","@stdlib/math/base/assert/is-nonnegative-integer":"0Qi","@stdlib/math-base-assert-is-nonnegative-integer":"0Qj","@stdlib/math/base/assert/is-nonpositive-integer":"0Qk","@stdlib/math-base-assert-is-nonpositive-integer":"0Ql","@stdlib/math/base/assert/is-odd":"0Qm","@stdlib/math-base-assert-is-odd":"0Qn","@stdlib/math/base/assert/is-positive-integer":"0Qo","@stdlib/math-base-assert-is-positive-integer":"0Qp","@stdlib/math/base/assert/is-positive-zero":"0Qq","@stdlib/math-base-assert-is-positive-zero":"0Qr","@stdlib/math/base/assert/is-positive-zerof":"0Qs","@stdlib/math-base-assert-is-positive-zerof":"0Qt","@stdlib/math/base/assert/is-prime":"0Qu","@stdlib/math-base-assert-is-prime":"0Qv","@stdlib/math/base/assert/is-probability":"0Qw","@stdlib/math-base-assert-is-probability":"0Qx","@stdlib/math/base/assert/is-safe-integer":"0Qy","@stdlib/math-base-assert-is-safe-integer":"0Qz","@stdlib/math/base/assert":"0R0","@stdlib/math-base-assert":"0R1","@stdlib/math/base/assert/uint32-is-pow2":"0R2","@stdlib/math-base-assert-uint32-is-pow2":"0R3","@stdlib/math/base/napi/binary":"0R4","@stdlib/math-base-napi-binary":"0R5","@stdlib/math/base/napi":"0R6","@stdlib/math-base-napi":"0R7","@stdlib/math/base/napi/ternary":"0R8","@stdlib/math-base-napi-ternary":"0R9","@stdlib/math/base/napi/unary":"0RA","@stdlib/math-base-napi-unary":"0RB","@stdlib/math/base/ops/add":"0RC","@stdlib/math-base-ops-add":"0RD","@stdlib/math/base/ops/addf":"0RE","@stdlib/math-base-ops-addf":"0RF","@stdlib/math/base/ops/cadd":"0RG","@stdlib/math-base-ops-cadd":"0RH","@stdlib/math/base/ops/caddf":"0RI","@stdlib/math-base-ops-caddf":"0RJ","@stdlib/math/base/ops/cdiv":"0RK","@stdlib/math-base-ops-cdiv":"0RL","@stdlib/math/base/ops/cmul":"0RM","@stdlib/math-base-ops-cmul":"0RN","@stdlib/math/base/ops/cmulf":"0RO","@stdlib/math-base-ops-cmulf":"0RP","@stdlib/math/base/ops/cneg":"0RQ","@stdlib/math-base-ops-cneg":"0RR","@stdlib/math/base/ops/csub":"0RS","@stdlib/math-base-ops-csub":"0RT","@stdlib/math/base/ops/csubf":"0RU","@stdlib/math-base-ops-csubf":"0RV","@stdlib/math/base/ops/imul":"0RW","@stdlib/math-base-ops-imul":"0RX","@stdlib/math/base/ops/imuldw":"0RY","@stdlib/math-base-ops-imuldw":"0RZ","@stdlib/math/base/ops/mul":"0Ra","@stdlib/math-base-ops-mul":"0Rb","@stdlib/math/base/ops/mulf":"0Rc","@stdlib/math-base-ops-mulf":"0Rd","@stdlib/math/base/ops":"0Re","@stdlib/math-base-ops":"0Rf","@stdlib/math/base/ops/sub":"0Rg","@stdlib/math-base-ops-sub":"0Rh","@stdlib/math/base/ops/subf":"0Ri","@stdlib/math-base-ops-subf":"0Rj","@stdlib/math/base/ops/umul":"0Rk","@stdlib/math-base-ops-umul":"0Rl","@stdlib/math/base/ops/umuldw":"0Rm","@stdlib/math-base-ops-umuldw":"0Rn","@stdlib/math/base":"0Ro","@stdlib/math-base":"0Rp","@stdlib/math/base/special/abs":"0Rq","@stdlib/math-base-special-abs":"0Rr","@stdlib/math/base/special/abs2":"0Rs","@stdlib/math-base-special-abs2":"0Rt","@stdlib/math/base/special/abs2f":"0Ru","@stdlib/math-base-special-abs2f":"0Rv","@stdlib/math/base/special/absf":"0Rw","@stdlib/math-base-special-absf":"0Rx","@stdlib/math/base/special/acos":"0Ry","@stdlib/math-base-special-acos":"0Rz","@stdlib/math/base/special/acosh":"0S0","@stdlib/math-base-special-acosh":"0S1","@stdlib/math/base/special/acot":"0S2","@stdlib/math-base-special-acot":"0S3","@stdlib/math/base/special/acoth":"0S4","@stdlib/math-base-special-acoth":"0S5","@stdlib/math/base/special/acovercos":"0S6","@stdlib/math-base-special-acovercos":"0S7","@stdlib/math/base/special/acoversin":"0S8","@stdlib/math-base-special-acoversin":"0S9","@stdlib/math/base/special/acsc":"0SA","@stdlib/math-base-special-acsc":"0SB","@stdlib/math/base/special/acsch":"0SC","@stdlib/math-base-special-acsch":"0SD","@stdlib/math/base/special/ahavercos":"0SE","@stdlib/math-base-special-ahavercos":"0SF","@stdlib/math/base/special/ahaversin":"0SG","@stdlib/math-base-special-ahaversin":"0SH","@stdlib/math/base/special/asech":"0SI","@stdlib/math-base-special-asech":"0SJ","@stdlib/math/base/special/asin":"0SK","@stdlib/math-base-special-asin":"0SL","@stdlib/math/base/special/asinh":"0SM","@stdlib/math-base-special-asinh":"0SN","@stdlib/math/base/special/atan":"0SO","@stdlib/math-base-special-atan":"0SP","@stdlib/math/base/special/atan2":"0SQ","@stdlib/math-base-special-atan2":"0SR","@stdlib/math/base/special/atanh":"0SS","@stdlib/math-base-special-atanh":"0ST","@stdlib/math/base/special/avercos":"0SU","@stdlib/math-base-special-avercos":"0SV","@stdlib/math/base/special/aversin":"0SW","@stdlib/math-base-special-aversin":"0SX","@stdlib/math/base/special/bernoulli":"0SY","@stdlib/math-base-special-bernoulli":"0SZ","@stdlib/math/base/special/besselj0":"0Sa","@stdlib/math-base-special-besselj0":"0Sb","@stdlib/math/base/special/besselj1":"0Sc","@stdlib/math-base-special-besselj1":"0Sd","@stdlib/math/base/special/bessely0":"0Se","@stdlib/math-base-special-bessely0":"0Sf","@stdlib/math/base/special/bessely1":"0Sg","@stdlib/math-base-special-bessely1":"0Sh","@stdlib/math/base/special/beta":"0Si","@stdlib/math-base-special-beta":"0Sj","@stdlib/math/base/special/betainc":"0Sk","@stdlib/math-base-special-betainc":"0Sl","@stdlib/math/base/special/betaincinv":"0Sm","@stdlib/math-base-special-betaincinv":"0Sn","@stdlib/math/base/special/betaln":"0So","@stdlib/math-base-special-betaln":"0Sp","@stdlib/math/base/special/binet":"0Sq","@stdlib/math-base-special-binet":"0Sr","@stdlib/math/base/special/binomcoef":"0Ss","@stdlib/math-base-special-binomcoef":"0St","@stdlib/math/base/special/binomcoefln":"0Su","@stdlib/math-base-special-binomcoefln":"0Sv","@stdlib/math/base/special/boxcox":"0Sw","@stdlib/math-base-special-boxcox":"0Sx","@stdlib/math/base/special/boxcox1p":"0Sy","@stdlib/math-base-special-boxcox1p":"0Sz","@stdlib/math/base/special/boxcox1pinv":"0T0","@stdlib/math-base-special-boxcox1pinv":"0T1","@stdlib/math/base/special/boxcoxinv":"0T2","@stdlib/math-base-special-boxcoxinv":"0T3","@stdlib/math/base/special/cabs":"0T4","@stdlib/math-base-special-cabs":"0T5","@stdlib/math/base/special/cabs2":"0T6","@stdlib/math-base-special-cabs2":"0T7","@stdlib/math/base/special/cabs2f":"0T8","@stdlib/math-base-special-cabs2f":"0T9","@stdlib/math/base/special/cabsf":"0TA","@stdlib/math-base-special-cabsf":"0TB","@stdlib/math/base/special/cbrt":"0TC","@stdlib/math-base-special-cbrt":"0TD","@stdlib/math/base/special/cbrtf":"0TE","@stdlib/math-base-special-cbrtf":"0TF","@stdlib/math/base/special/cceil":"0TG","@stdlib/math-base-special-cceil":"0TH","@stdlib/math/base/special/cceilf":"0TI","@stdlib/math-base-special-cceilf":"0TJ","@stdlib/math/base/special/cceiln":"0TK","@stdlib/math-base-special-cceiln":"0TL","@stdlib/math/base/special/ccis":"0TM","@stdlib/math-base-special-ccis":"0TN","@stdlib/math/base/special/ceil":"0TO","@stdlib/math-base-special-ceil":"0TP","@stdlib/math/base/special/ceil10":"0TQ","@stdlib/math-base-special-ceil10":"0TR","@stdlib/math/base/special/ceil2":"0TS","@stdlib/math-base-special-ceil2":"0TT","@stdlib/math/base/special/ceilb":"0TU","@stdlib/math-base-special-ceilb":"0TV","@stdlib/math/base/special/ceilf":"0TW","@stdlib/math-base-special-ceilf":"0TX","@stdlib/math/base/special/ceiln":"0TY","@stdlib/math-base-special-ceiln":"0TZ","@stdlib/math/base/special/ceilsd":"0Ta","@stdlib/math-base-special-ceilsd":"0Tb","@stdlib/math/base/special/cexp":"0Tc","@stdlib/math-base-special-cexp":"0Td","@stdlib/math/base/special/cflipsign":"0Te","@stdlib/math-base-special-cflipsign":"0Tf","@stdlib/math/base/special/cflipsignf":"0Tg","@stdlib/math-base-special-cflipsignf":"0Th","@stdlib/math/base/special/cfloor":"0Ti","@stdlib/math-base-special-cfloor":"0Tj","@stdlib/math/base/special/cfloorn":"0Tk","@stdlib/math-base-special-cfloorn":"0Tl","@stdlib/math/base/special/cidentity":"0Tm","@stdlib/math-base-special-cidentity":"0Tn","@stdlib/math/base/special/cidentityf":"0To","@stdlib/math-base-special-cidentityf":"0Tp","@stdlib/math/base/special/cinv":"0Tq","@stdlib/math-base-special-cinv":"0Tr","@stdlib/math/base/special/clamp":"0Ts","@stdlib/math-base-special-clamp":"0Tt","@stdlib/math/base/special/clampf":"0Tu","@stdlib/math-base-special-clampf":"0Tv","@stdlib/math/base/special/copysign":"0Tw","@stdlib/math-base-special-copysign":"0Tx","@stdlib/math/base/special/copysignf":"0Ty","@stdlib/math-base-special-copysignf":"0Tz","@stdlib/math/base/special/cos":"0U0","@stdlib/math-base-special-cos":"0U1","@stdlib/math/base/special/cosh":"0U2","@stdlib/math-base-special-cosh":"0U3","@stdlib/math/base/special/cosm1":"0U4","@stdlib/math-base-special-cosm1":"0U5","@stdlib/math/base/special/cospi":"0U6","@stdlib/math-base-special-cospi":"0U7","@stdlib/math/base/special/cot":"0U8","@stdlib/math-base-special-cot":"0U9","@stdlib/math/base/special/coth":"0UA","@stdlib/math-base-special-coth":"0UB","@stdlib/math/base/special/covercos":"0UC","@stdlib/math-base-special-covercos":"0UD","@stdlib/math/base/special/coversin":"0UE","@stdlib/math-base-special-coversin":"0UF","@stdlib/math/base/special/cphase":"0UG","@stdlib/math-base-special-cphase":"0UH","@stdlib/math/base/special/cpolar":"0UI","@stdlib/math-base-special-cpolar":"0UJ","@stdlib/math/base/special/cround":"0UK","@stdlib/math-base-special-cround":"0UL","@stdlib/math/base/special/croundn":"0UM","@stdlib/math-base-special-croundn":"0UN","@stdlib/math/base/special/csch":"0UO","@stdlib/math-base-special-csch":"0UP","@stdlib/math/base/special/csignum":"0UQ","@stdlib/math-base-special-csignum":"0UR","@stdlib/math/base/special/deg2rad":"0US","@stdlib/math-base-special-deg2rad":"0UT","@stdlib/math/base/special/deg2radf":"0UU","@stdlib/math-base-special-deg2radf":"0UV","@stdlib/math/base/special/digamma":"0UW","@stdlib/math-base-special-digamma":"0UX","@stdlib/math/base/special/dirac-delta":"0UY","@stdlib/math-base-special-dirac-delta":"0UZ","@stdlib/math/base/special/dirichlet-eta":"0Ua","@stdlib/math-base-special-dirichlet-eta":"0Ub","@stdlib/math/base/special/ellipe":"0Uc","@stdlib/math-base-special-ellipe":"0Ud","@stdlib/math/base/special/ellipk":"0Ue","@stdlib/math-base-special-ellipk":"0Uf","@stdlib/math/base/special/erf":"0Ug","@stdlib/math-base-special-erf":"0Uh","@stdlib/math/base/special/erfc":"0Ui","@stdlib/math-base-special-erfc":"0Uj","@stdlib/math/base/special/erfcinv":"0Uk","@stdlib/math-base-special-erfcinv":"0Ul","@stdlib/math/base/special/erfinv":"0Um","@stdlib/math-base-special-erfinv":"0Un","@stdlib/math/base/special/exp":"0Uo","@stdlib/math-base-special-exp":"0Up","@stdlib/math/base/special/exp10":"0Uq","@stdlib/math-base-special-exp10":"0Ur","@stdlib/math/base/special/exp2":"0Us","@stdlib/math-base-special-exp2":"0Ut","@stdlib/math/base/special/expit":"0Uu","@stdlib/math-base-special-expit":"0Uv","@stdlib/math/base/special/expm1":"0Uw","@stdlib/math-base-special-expm1":"0Ux","@stdlib/math/base/special/expm1rel":"0Uy","@stdlib/math-base-special-expm1rel":"0Uz","@stdlib/math/base/special/factorial":"0V0","@stdlib/math-base-special-factorial":"0V1","@stdlib/math/base/special/factorialln":"0V2","@stdlib/math-base-special-factorialln":"0V3","@stdlib/math/base/special/falling-factorial":"0V4","@stdlib/math-base-special-falling-factorial":"0V5","@stdlib/math/base/special/fast/abs":"0V6","@stdlib/math-base-special-fast-abs":"0V7","@stdlib/math/base/special/fast/acosh":"0V8","@stdlib/math-base-special-fast-acosh":"0V9","@stdlib/math/base/special/fast/alpha-max-plus-beta-min":"0VA","@stdlib/math-base-special-fast-alpha-max-plus-beta-min":"0VB","@stdlib/math/base/special/fast/asinh":"0VC","@stdlib/math-base-special-fast-asinh":"0VD","@stdlib/math/base/special/fast/atanh":"0VE","@stdlib/math-base-special-fast-atanh":"0VF","@stdlib/math/base/special/fast/hypot":"0VG","@stdlib/math-base-special-fast-hypot":"0VH","@stdlib/math/base/special/fast/max":"0VI","@stdlib/math-base-special-fast-max":"0VJ","@stdlib/math/base/special/fast/min":"0VK","@stdlib/math-base-special-fast-min":"0VL","@stdlib/math/base/special/fast":"0VM","@stdlib/math-base-special-fast":"0VN","@stdlib/math/base/special/fast/pow-int":"0VO","@stdlib/math-base-special-fast-pow-int":"0VP","@stdlib/math/base/special/fast/uint32-log2":"0VQ","@stdlib/math-base-special-fast-uint32-log2":"0VR","@stdlib/math/base/special/fast/uint32-sqrt":"0VS","@stdlib/math-base-special-fast-uint32-sqrt":"0VT","@stdlib/math/base/special/fibonacci-index":"0VU","@stdlib/math-base-special-fibonacci-index":"0VV","@stdlib/math/base/special/fibonacci":"0VW","@stdlib/math-base-special-fibonacci":"0VX","@stdlib/math/base/special/flipsign":"0VY","@stdlib/math-base-special-flipsign":"0VZ","@stdlib/math/base/special/flipsignf":"0Va","@stdlib/math-base-special-flipsignf":"0Vb","@stdlib/math/base/special/floor":"0Vc","@stdlib/math-base-special-floor":"0Vd","@stdlib/math/base/special/floor10":"0Ve","@stdlib/math-base-special-floor10":"0Vf","@stdlib/math/base/special/floor2":"0Vg","@stdlib/math-base-special-floor2":"0Vh","@stdlib/math/base/special/floorb":"0Vi","@stdlib/math-base-special-floorb":"0Vj","@stdlib/math/base/special/floorf":"0Vk","@stdlib/math-base-special-floorf":"0Vl","@stdlib/math/base/special/floorn":"0Vm","@stdlib/math-base-special-floorn":"0Vn","@stdlib/math/base/special/floorsd":"0Vo","@stdlib/math-base-special-floorsd":"0Vp","@stdlib/math/base/special/fresnel":"0Vq","@stdlib/math-base-special-fresnel":"0Vr","@stdlib/math/base/special/fresnelc":"0Vs","@stdlib/math-base-special-fresnelc":"0Vt","@stdlib/math/base/special/fresnels":"0Vu","@stdlib/math-base-special-fresnels":"0Vv","@stdlib/math/base/special/frexp":"0Vw","@stdlib/math-base-special-frexp":"0Vx","@stdlib/math/base/special/gamma-delta-ratio":"0Vy","@stdlib/math-base-special-gamma-delta-ratio":"0Vz","@stdlib/math/base/special/gamma-lanczos-sum-expg-scaled":"0W0","@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled":"0W1","@stdlib/math/base/special/gamma-lanczos-sum":"0W2","@stdlib/math-base-special-gamma-lanczos-sum":"0W3","@stdlib/math/base/special/gamma":"0W4","@stdlib/math-base-special-gamma":"0W5","@stdlib/math/base/special/gamma1pm1":"0W6","@stdlib/math-base-special-gamma1pm1":"0W7","@stdlib/math/base/special/gammainc":"0W8","@stdlib/math-base-special-gammainc":"0W9","@stdlib/math/base/special/gammaincinv":"0WA","@stdlib/math-base-special-gammaincinv":"0WB","@stdlib/math/base/special/gammaln":"0WC","@stdlib/math-base-special-gammaln":"0WD","@stdlib/math/base/special/gcd":"0WE","@stdlib/math-base-special-gcd":"0WF","@stdlib/math/base/special/hacovercos":"0WG","@stdlib/math-base-special-hacovercos":"0WH","@stdlib/math/base/special/hacoversin":"0WI","@stdlib/math-base-special-hacoversin":"0WJ","@stdlib/math/base/special/havercos":"0WK","@stdlib/math-base-special-havercos":"0WL","@stdlib/math/base/special/haversin":"0WM","@stdlib/math-base-special-haversin":"0WN","@stdlib/math/base/special/heaviside":"0WO","@stdlib/math-base-special-heaviside":"0WP","@stdlib/math/base/special/hypot":"0WQ","@stdlib/math-base-special-hypot":"0WR","@stdlib/math/base/special/hypotf":"0WS","@stdlib/math-base-special-hypotf":"0WT","@stdlib/math/base/special/identity":"0WU","@stdlib/math-base-special-identity":"0WV","@stdlib/math/base/special/identityf":"0WW","@stdlib/math-base-special-identityf":"0WX","@stdlib/math/base/special/inv":"0WY","@stdlib/math-base-special-inv":"0WZ","@stdlib/math/base/special/invf":"0Wa","@stdlib/math-base-special-invf":"0Wb","@stdlib/math/base/special/kernel-betainc":"0Wc","@stdlib/math-base-special-kernel-betainc":"0Wd","@stdlib/math/base/special/kernel-betaincinv":"0We","@stdlib/math-base-special-kernel-betaincinv":"0Wf","@stdlib/math/base/special/kernel-cos":"0Wg","@stdlib/math-base-special-kernel-cos":"0Wh","@stdlib/math/base/special/kernel-sin":"0Wi","@stdlib/math-base-special-kernel-sin":"0Wj","@stdlib/math/base/special/kernel-tan":"0Wk","@stdlib/math-base-special-kernel-tan":"0Wl","@stdlib/math/base/special/kronecker-delta":"0Wm","@stdlib/math-base-special-kronecker-delta":"0Wn","@stdlib/math/base/special/kronecker-deltaf":"0Wo","@stdlib/math-base-special-kronecker-deltaf":"0Wp","@stdlib/math/base/special/labs":"0Wq","@stdlib/math-base-special-labs":"0Wr","@stdlib/math/base/special/lcm":"0Ws","@stdlib/math-base-special-lcm":"0Wt","@stdlib/math/base/special/ldexp":"0Wu","@stdlib/math-base-special-ldexp":"0Wv","@stdlib/math/base/special/ln":"0Ww","@stdlib/math-base-special-ln":"0Wx","@stdlib/math/base/special/log":"0Wy","@stdlib/math-base-special-log":"0Wz","@stdlib/math/base/special/log10":"0X0","@stdlib/math-base-special-log10":"0X1","@stdlib/math/base/special/log1mexp":"0X2","@stdlib/math-base-special-log1mexp":"0X3","@stdlib/math/base/special/log1p":"0X4","@stdlib/math-base-special-log1p":"0X5","@stdlib/math/base/special/log1pexp":"0X6","@stdlib/math-base-special-log1pexp":"0X7","@stdlib/math/base/special/log2":"0X8","@stdlib/math-base-special-log2":"0X9","@stdlib/math/base/special/logaddexp":"0XA","@stdlib/math-base-special-logaddexp":"0XB","@stdlib/math/base/special/logit":"0XC","@stdlib/math-base-special-logit":"0XD","@stdlib/math/base/special/lucas":"0XE","@stdlib/math-base-special-lucas":"0XF","@stdlib/math/base/special/max":"0XG","@stdlib/math-base-special-max":"0XH","@stdlib/math/base/special/maxabs":"0XI","@stdlib/math-base-special-maxabs":"0XJ","@stdlib/math/base/special/min":"0XK","@stdlib/math-base-special-min":"0XL","@stdlib/math/base/special/minabs":"0XM","@stdlib/math-base-special-minabs":"0XN","@stdlib/math/base/special/minmax":"0XO","@stdlib/math-base-special-minmax":"0XP","@stdlib/math/base/special/minmaxabs":"0XQ","@stdlib/math-base-special-minmaxabs":"0XR","@stdlib/math/base/special/modf":"0XS","@stdlib/math-base-special-modf":"0XT","@stdlib/math/base/special/negafibonacci":"0XU","@stdlib/math-base-special-negafibonacci":"0XV","@stdlib/math/base/special/negalucas":"0XW","@stdlib/math-base-special-negalucas":"0XX","@stdlib/math/base/special/nonfibonacci":"0XY","@stdlib/math-base-special-nonfibonacci":"0XZ","@stdlib/math/base/special":"0Xa","@stdlib/math-base-special":"0Xb","@stdlib/math/base/special/pdiff":"0Xc","@stdlib/math-base-special-pdiff":"0Xd","@stdlib/math/base/special/pdifff":"0Xe","@stdlib/math-base-special-pdifff":"0Xf","@stdlib/math/base/special/polygamma":"0Xg","@stdlib/math-base-special-polygamma":"0Xh","@stdlib/math/base/special/pow":"0Xi","@stdlib/math-base-special-pow":"0Xj","@stdlib/math/base/special/powm1":"0Xk","@stdlib/math-base-special-powm1":"0Xl","@stdlib/math/base/special/rad2deg":"0Xm","@stdlib/math-base-special-rad2deg":"0Xn","@stdlib/math/base/special/ramp":"0Xo","@stdlib/math-base-special-ramp":"0Xp","@stdlib/math/base/special/rampf":"0Xq","@stdlib/math-base-special-rampf":"0Xr","@stdlib/math/base/special/rempio2":"0Xs","@stdlib/math-base-special-rempio2":"0Xt","@stdlib/math/base/special/riemann-zeta":"0Xu","@stdlib/math-base-special-riemann-zeta":"0Xv","@stdlib/math/base/special/rising-factorial":"0Xw","@stdlib/math-base-special-rising-factorial":"0Xx","@stdlib/math/base/special/round":"0Xy","@stdlib/math-base-special-round":"0Xz","@stdlib/math/base/special/round10":"0Y0","@stdlib/math-base-special-round10":"0Y1","@stdlib/math/base/special/round2":"0Y2","@stdlib/math-base-special-round2":"0Y3","@stdlib/math/base/special/roundb":"0Y4","@stdlib/math-base-special-roundb":"0Y5","@stdlib/math/base/special/roundn":"0Y6","@stdlib/math-base-special-roundn":"0Y7","@stdlib/math/base/special/roundsd":"0Y8","@stdlib/math-base-special-roundsd":"0Y9","@stdlib/math/base/special/rsqrt":"0YA","@stdlib/math-base-special-rsqrt":"0YB","@stdlib/math/base/special/rsqrtf":"0YC","@stdlib/math-base-special-rsqrtf":"0YD","@stdlib/math/base/special/sici":"0YE","@stdlib/math-base-special-sici":"0YF","@stdlib/math/base/special/signum":"0YG","@stdlib/math-base-special-signum":"0YH","@stdlib/math/base/special/signumf":"0YI","@stdlib/math-base-special-signumf":"0YJ","@stdlib/math/base/special/sin":"0YK","@stdlib/math-base-special-sin":"0YL","@stdlib/math/base/special/sinc":"0YM","@stdlib/math-base-special-sinc":"0YN","@stdlib/math/base/special/sincos":"0YO","@stdlib/math-base-special-sincos":"0YP","@stdlib/math/base/special/sincospi":"0YQ","@stdlib/math-base-special-sincospi":"0YR","@stdlib/math/base/special/sinh":"0YS","@stdlib/math-base-special-sinh":"0YT","@stdlib/math/base/special/sinpi":"0YU","@stdlib/math-base-special-sinpi":"0YV","@stdlib/math/base/special/spence":"0YW","@stdlib/math-base-special-spence":"0YX","@stdlib/math/base/special/sqrt":"0YY","@stdlib/math-base-special-sqrt":"0YZ","@stdlib/math/base/special/sqrt1pm1":"0Ya","@stdlib/math-base-special-sqrt1pm1":"0Yb","@stdlib/math/base/special/sqrtf":"0Yc","@stdlib/math-base-special-sqrtf":"0Yd","@stdlib/math/base/special/tan":"0Ye","@stdlib/math-base-special-tan":"0Yf","@stdlib/math/base/special/tanh":"0Yg","@stdlib/math-base-special-tanh":"0Yh","@stdlib/math/base/special/tribonacci":"0Yi","@stdlib/math-base-special-tribonacci":"0Yj","@stdlib/math/base/special/trigamma":"0Yk","@stdlib/math-base-special-trigamma":"0Yl","@stdlib/math/base/special/trunc":"0Ym","@stdlib/math-base-special-trunc":"0Yn","@stdlib/math/base/special/trunc10":"0Yo","@stdlib/math-base-special-trunc10":"0Yp","@stdlib/math/base/special/trunc2":"0Yq","@stdlib/math-base-special-trunc2":"0Yr","@stdlib/math/base/special/truncb":"0Ys","@stdlib/math-base-special-truncb":"0Yt","@stdlib/math/base/special/truncf":"0Yu","@stdlib/math-base-special-truncf":"0Yv","@stdlib/math/base/special/truncn":"0Yw","@stdlib/math-base-special-truncn":"0Yx","@stdlib/math/base/special/truncsd":"0Yy","@stdlib/math-base-special-truncsd":"0Yz","@stdlib/math/base/special/vercos":"0Z0","@stdlib/math-base-special-vercos":"0Z1","@stdlib/math/base/special/versin":"0Z2","@stdlib/math-base-special-versin":"0Z3","@stdlib/math/base/special/wrap":"0Z4","@stdlib/math-base-special-wrap":"0Z5","@stdlib/math/base/special/xlog1py":"0Z6","@stdlib/math-base-special-xlog1py":"0Z7","@stdlib/math/base/special/xlogy":"0Z8","@stdlib/math-base-special-xlogy":"0Z9","@stdlib/math/base/tools/continued-fraction":"0ZA","@stdlib/math-base-tools-continued-fraction":"0ZB","@stdlib/math/base/tools/evalpoly-compile":"0ZC","@stdlib/math-base-tools-evalpoly-compile":"0ZD","@stdlib/math/base/tools/evalpoly":"0ZE","@stdlib/math-base-tools-evalpoly":"0ZF","@stdlib/math/base/tools/evalrational-compile":"0ZG","@stdlib/math-base-tools-evalrational-compile":"0ZH","@stdlib/math/base/tools/evalrational":"0ZI","@stdlib/math-base-tools-evalrational":"0ZJ","@stdlib/math/base/tools/fibpoly":"0ZK","@stdlib/math-base-tools-fibpoly":"0ZL","@stdlib/math/base/tools/hermitepoly":"0ZM","@stdlib/math-base-tools-hermitepoly":"0ZN","@stdlib/math/base/tools/lucaspoly":"0ZO","@stdlib/math-base-tools-lucaspoly":"0ZP","@stdlib/math/base/tools/normhermitepoly":"0ZQ","@stdlib/math-base-tools-normhermitepoly":"0ZR","@stdlib/math/base/tools":"0ZS","@stdlib/math-base-tools":"0ZT","@stdlib/math/base/tools/sum-series":"0ZU","@stdlib/math-base-tools-sum-series":"0ZV","@stdlib/math/base/utils/absolute-difference":"0ZW","@stdlib/math-base-utils-absolute-difference":"0ZX","@stdlib/math/base/utils/float64-epsilon-difference":"0ZY","@stdlib/math-base-utils-float64-epsilon-difference":"0ZZ","@stdlib/math/base/utils":"0Za","@stdlib/math-base-utils":"0Zb","@stdlib/math/base/utils/relative-difference":"0Zc","@stdlib/math-base-utils-relative-difference":"0Zd","@stdlib/math/iter/ops/add":"0Ze","@stdlib/math-iter-ops-add":"0Zf","@stdlib/math/iter/ops/divide":"0Zg","@stdlib/math-iter-ops-divide":"0Zh","@stdlib/math/iter/ops/mod":"0Zi","@stdlib/math-iter-ops-mod":"0Zj","@stdlib/math/iter/ops/multiply":"0Zk","@stdlib/math-iter-ops-multiply":"0Zl","@stdlib/math/iter/ops":"0Zm","@stdlib/math-iter-ops":"0Zn","@stdlib/math/iter/ops/subtract":"0Zo","@stdlib/math-iter-ops-subtract":"0Zp","@stdlib/math/iter":"0Zq","@stdlib/math-iter":"0Zr","@stdlib/math/iter/sequences/composites":"0Zs","@stdlib/math-iter-sequences-composites":"0Zt","@stdlib/math/iter/sequences/continued-fraction":"0Zu","@stdlib/math-iter-sequences-continued-fraction":"0Zv","@stdlib/math/iter/sequences/cubes":"0Zw","@stdlib/math-iter-sequences-cubes":"0Zx","@stdlib/math/iter/sequences/even-integers":"0Zy","@stdlib/math-iter-sequences-even-integers":"0Zz","@stdlib/math/iter/sequences/factorials":"0a0","@stdlib/math-iter-sequences-factorials":"0a1","@stdlib/math/iter/sequences/fibonacci":"0a2","@stdlib/math-iter-sequences-fibonacci":"0a3","@stdlib/math/iter/sequences/fifth-powers":"0a4","@stdlib/math-iter-sequences-fifth-powers":"0a5","@stdlib/math/iter/sequences/fourth-powers":"0a6","@stdlib/math-iter-sequences-fourth-powers":"0a7","@stdlib/math/iter/sequences/integers":"0a8","@stdlib/math-iter-sequences-integers":"0a9","@stdlib/math/iter/sequences/lucas":"0aA","@stdlib/math-iter-sequences-lucas":"0aB","@stdlib/math/iter/sequences/negafibonacci":"0aC","@stdlib/math-iter-sequences-negafibonacci":"0aD","@stdlib/math/iter/sequences/negalucas":"0aE","@stdlib/math-iter-sequences-negalucas":"0aF","@stdlib/math/iter/sequences/negative-even-integers":"0aG","@stdlib/math-iter-sequences-negative-even-integers":"0aH","@stdlib/math/iter/sequences/negative-integers":"0aI","@stdlib/math-iter-sequences-negative-integers":"0aJ","@stdlib/math/iter/sequences/negative-odd-integers":"0aK","@stdlib/math-iter-sequences-negative-odd-integers":"0aL","@stdlib/math/iter/sequences/nonfibonacci":"0aM","@stdlib/math-iter-sequences-nonfibonacci":"0aN","@stdlib/math/iter/sequences/nonnegative-even-integers":"0aO","@stdlib/math-iter-sequences-nonnegative-even-integers":"0aP","@stdlib/math/iter/sequences/nonnegative-integers":"0aQ","@stdlib/math-iter-sequences-nonnegative-integers":"0aR","@stdlib/math/iter/sequences/nonpositive-even-integers":"0aS","@stdlib/math-iter-sequences-nonpositive-even-integers":"0aT","@stdlib/math/iter/sequences/nonpositive-integers":"0aU","@stdlib/math-iter-sequences-nonpositive-integers":"0aV","@stdlib/math/iter/sequences/nonsquares":"0aW","@stdlib/math-iter-sequences-nonsquares":"0aX","@stdlib/math/iter/sequences/odd-integers":"0aY","@stdlib/math-iter-sequences-odd-integers":"0aZ","@stdlib/math/iter/sequences":"0aa","@stdlib/math-iter-sequences":"0ab","@stdlib/math/iter/sequences/positive-even-integers":"0ac","@stdlib/math-iter-sequences-positive-even-integers":"0ad","@stdlib/math/iter/sequences/positive-integers":"0ae","@stdlib/math-iter-sequences-positive-integers":"0af","@stdlib/math/iter/sequences/positive-odd-integers":"0ag","@stdlib/math-iter-sequences-positive-odd-integers":"0ah","@stdlib/math/iter/sequences/primes":"0ai","@stdlib/math-iter-sequences-primes":"0aj","@stdlib/math/iter/sequences/squared-triangular":"0ak","@stdlib/math-iter-sequences-squared-triangular":"0al","@stdlib/math/iter/sequences/squares":"0am","@stdlib/math-iter-sequences-squares":"0an","@stdlib/math/iter/sequences/triangular":"0ao","@stdlib/math-iter-sequences-triangular":"0ap","@stdlib/math/iter/special/abs":"0aq","@stdlib/math-iter-special-abs":"0ar","@stdlib/math/iter/special/abs2":"0as","@stdlib/math-iter-special-abs2":"0at","@stdlib/math/iter/special/acos":"0au","@stdlib/math-iter-special-acos":"0av","@stdlib/math/iter/special/acosh":"0aw","@stdlib/math-iter-special-acosh":"0ax","@stdlib/math/iter/special/acot":"0ay","@stdlib/math-iter-special-acot":"0az","@stdlib/math/iter/special/acoth":"0b0","@stdlib/math-iter-special-acoth":"0b1","@stdlib/math/iter/special/acovercos":"0b2","@stdlib/math-iter-special-acovercos":"0b3","@stdlib/math/iter/special/acoversin":"0b4","@stdlib/math-iter-special-acoversin":"0b5","@stdlib/math/iter/special/ahavercos":"0b6","@stdlib/math-iter-special-ahavercos":"0b7","@stdlib/math/iter/special/ahaversin":"0b8","@stdlib/math-iter-special-ahaversin":"0b9","@stdlib/math/iter/special/asin":"0bA","@stdlib/math-iter-special-asin":"0bB","@stdlib/math/iter/special/asinh":"0bC","@stdlib/math-iter-special-asinh":"0bD","@stdlib/math/iter/special/atan":"0bE","@stdlib/math-iter-special-atan":"0bF","@stdlib/math/iter/special/atan2":"0bG","@stdlib/math-iter-special-atan2":"0bH","@stdlib/math/iter/special/atanh":"0bI","@stdlib/math-iter-special-atanh":"0bJ","@stdlib/math/iter/special/avercos":"0bK","@stdlib/math-iter-special-avercos":"0bL","@stdlib/math/iter/special/aversin":"0bM","@stdlib/math-iter-special-aversin":"0bN","@stdlib/math/iter/special/besselj0":"0bO","@stdlib/math-iter-special-besselj0":"0bP","@stdlib/math/iter/special/besselj1":"0bQ","@stdlib/math-iter-special-besselj1":"0bR","@stdlib/math/iter/special/bessely0":"0bS","@stdlib/math-iter-special-bessely0":"0bT","@stdlib/math/iter/special/bessely1":"0bU","@stdlib/math-iter-special-bessely1":"0bV","@stdlib/math/iter/special/beta":"0bW","@stdlib/math-iter-special-beta":"0bX","@stdlib/math/iter/special/betaln":"0bY","@stdlib/math-iter-special-betaln":"0bZ","@stdlib/math/iter/special/binet":"0ba","@stdlib/math-iter-special-binet":"0bb","@stdlib/math/iter/special/cbrt":"0bc","@stdlib/math-iter-special-cbrt":"0bd","@stdlib/math/iter/special/ceil":"0be","@stdlib/math-iter-special-ceil":"0bf","@stdlib/math/iter/special/ceil10":"0bg","@stdlib/math-iter-special-ceil10":"0bh","@stdlib/math/iter/special/ceil2":"0bi","@stdlib/math-iter-special-ceil2":"0bj","@stdlib/math/iter/special/cos":"0bk","@stdlib/math-iter-special-cos":"0bl","@stdlib/math/iter/special/cosh":"0bm","@stdlib/math-iter-special-cosh":"0bn","@stdlib/math/iter/special/cosm1":"0bo","@stdlib/math-iter-special-cosm1":"0bp","@stdlib/math/iter/special/cospi":"0bq","@stdlib/math-iter-special-cospi":"0br","@stdlib/math/iter/special/covercos":"0bs","@stdlib/math-iter-special-covercos":"0bt","@stdlib/math/iter/special/coversin":"0bu","@stdlib/math-iter-special-coversin":"0bv","@stdlib/math/iter/special/deg2rad":"0bw","@stdlib/math-iter-special-deg2rad":"0bx","@stdlib/math/iter/special/digamma":"0by","@stdlib/math-iter-special-digamma":"0bz","@stdlib/math/iter/special/dirac-delta":"0c0","@stdlib/math-iter-special-dirac-delta":"0c1","@stdlib/math/iter/special/dirichlet-eta":"0c2","@stdlib/math-iter-special-dirichlet-eta":"0c3","@stdlib/math/iter/special/ellipe":"0c4","@stdlib/math-iter-special-ellipe":"0c5","@stdlib/math/iter/special/ellipk":"0c6","@stdlib/math-iter-special-ellipk":"0c7","@stdlib/math/iter/special/erf":"0c8","@stdlib/math-iter-special-erf":"0c9","@stdlib/math/iter/special/erfc":"0cA","@stdlib/math-iter-special-erfc":"0cB","@stdlib/math/iter/special/erfcinv":"0cC","@stdlib/math-iter-special-erfcinv":"0cD","@stdlib/math/iter/special/erfinv":"0cE","@stdlib/math-iter-special-erfinv":"0cF","@stdlib/math/iter/special/exp":"0cG","@stdlib/math-iter-special-exp":"0cH","@stdlib/math/iter/special/exp10":"0cI","@stdlib/math-iter-special-exp10":"0cJ","@stdlib/math/iter/special/exp2":"0cK","@stdlib/math-iter-special-exp2":"0cL","@stdlib/math/iter/special/expit":"0cM","@stdlib/math-iter-special-expit":"0cN","@stdlib/math/iter/special/expm1":"0cO","@stdlib/math-iter-special-expm1":"0cP","@stdlib/math/iter/special/expm1rel":"0cQ","@stdlib/math-iter-special-expm1rel":"0cR","@stdlib/math/iter/special/factorial":"0cS","@stdlib/math-iter-special-factorial":"0cT","@stdlib/math/iter/special/factorialln":"0cU","@stdlib/math-iter-special-factorialln":"0cV","@stdlib/math/iter/special/floor":"0cW","@stdlib/math-iter-special-floor":"0cX","@stdlib/math/iter/special/floor10":"0cY","@stdlib/math-iter-special-floor10":"0cZ","@stdlib/math/iter/special/floor2":"0ca","@stdlib/math-iter-special-floor2":"0cb","@stdlib/math/iter/special/fresnelc":"0cc","@stdlib/math-iter-special-fresnelc":"0cd","@stdlib/math/iter/special/fresnels":"0ce","@stdlib/math-iter-special-fresnels":"0cf","@stdlib/math/iter/special/gamma":"0cg","@stdlib/math-iter-special-gamma":"0ch","@stdlib/math/iter/special/gamma1pm1":"0ci","@stdlib/math-iter-special-gamma1pm1":"0cj","@stdlib/math/iter/special/gammaln":"0ck","@stdlib/math-iter-special-gammaln":"0cl","@stdlib/math/iter/special/hacovercos":"0cm","@stdlib/math-iter-special-hacovercos":"0cn","@stdlib/math/iter/special/hacoversin":"0co","@stdlib/math-iter-special-hacoversin":"0cp","@stdlib/math/iter/special/havercos":"0cq","@stdlib/math-iter-special-havercos":"0cr","@stdlib/math/iter/special/haversin":"0cs","@stdlib/math-iter-special-haversin":"0ct","@stdlib/math/iter/special/inv":"0cu","@stdlib/math-iter-special-inv":"0cv","@stdlib/math/iter/special/ln":"0cw","@stdlib/math-iter-special-ln":"0cx","@stdlib/math/iter/special/log":"0cy","@stdlib/math-iter-special-log":"0cz","@stdlib/math/iter/special/log10":"0d0","@stdlib/math-iter-special-log10":"0d1","@stdlib/math/iter/special/log1mexp":"0d2","@stdlib/math-iter-special-log1mexp":"0d3","@stdlib/math/iter/special/log1p":"0d4","@stdlib/math-iter-special-log1p":"0d5","@stdlib/math/iter/special/log1pexp":"0d6","@stdlib/math-iter-special-log1pexp":"0d7","@stdlib/math/iter/special/log2":"0d8","@stdlib/math-iter-special-log2":"0d9","@stdlib/math/iter/special/logit":"0dA","@stdlib/math-iter-special-logit":"0dB","@stdlib/math/iter/special":"0dC","@stdlib/math-iter-special":"0dD","@stdlib/math/iter/special/pow":"0dE","@stdlib/math-iter-special-pow":"0dF","@stdlib/math/iter/special/rad2deg":"0dG","@stdlib/math-iter-special-rad2deg":"0dH","@stdlib/math/iter/special/ramp":"0dI","@stdlib/math-iter-special-ramp":"0dJ","@stdlib/math/iter/special/riemann-zeta":"0dK","@stdlib/math-iter-special-riemann-zeta":"0dL","@stdlib/math/iter/special/round":"0dM","@stdlib/math-iter-special-round":"0dN","@stdlib/math/iter/special/round10":"0dO","@stdlib/math-iter-special-round10":"0dP","@stdlib/math/iter/special/round2":"0dQ","@stdlib/math-iter-special-round2":"0dR","@stdlib/math/iter/special/rsqrt":"0dS","@stdlib/math-iter-special-rsqrt":"0dT","@stdlib/math/iter/special/signum":"0dU","@stdlib/math-iter-special-signum":"0dV","@stdlib/math/iter/special/sin":"0dW","@stdlib/math-iter-special-sin":"0dX","@stdlib/math/iter/special/sinc":"0dY","@stdlib/math-iter-special-sinc":"0dZ","@stdlib/math/iter/special/sinh":"0da","@stdlib/math-iter-special-sinh":"0db","@stdlib/math/iter/special/sinpi":"0dc","@stdlib/math-iter-special-sinpi":"0dd","@stdlib/math/iter/special/spence":"0de","@stdlib/math-iter-special-spence":"0df","@stdlib/math/iter/special/sqrt":"0dg","@stdlib/math-iter-special-sqrt":"0dh","@stdlib/math/iter/special/sqrt1pm1":"0di","@stdlib/math-iter-special-sqrt1pm1":"0dj","@stdlib/math/iter/special/tan":"0dk","@stdlib/math-iter-special-tan":"0dl","@stdlib/math/iter/special/tanh":"0dm","@stdlib/math-iter-special-tanh":"0dn","@stdlib/math/iter/special/trigamma":"0do","@stdlib/math-iter-special-trigamma":"0dp","@stdlib/math/iter/special/trunc":"0dq","@stdlib/math-iter-special-trunc":"0dr","@stdlib/math/iter/special/trunc10":"0ds","@stdlib/math-iter-special-trunc10":"0dt","@stdlib/math/iter/special/trunc2":"0du","@stdlib/math-iter-special-trunc2":"0dv","@stdlib/math/iter/special/vercos":"0dw","@stdlib/math-iter-special-vercos":"0dx","@stdlib/math/iter/special/versin":"0dy","@stdlib/math-iter-special-versin":"0dz","@stdlib/math/iter/tools/map":"0e0","@stdlib/math-iter-tools-map":"0e1","@stdlib/math/iter/tools/map2":"0e2","@stdlib/math-iter-tools-map2":"0e3","@stdlib/math/iter/tools/map3":"0e4","@stdlib/math-iter-tools-map3":"0e5","@stdlib/math/iter/tools":"0e6","@stdlib/math-iter-tools":"0e7","@stdlib/math/iter/utils/continued-fraction":"0e8","@stdlib/math-iter-utils-continued-fraction":"0e9","@stdlib/math/iter/utils":"0eA","@stdlib/math-iter-utils":"0eB","@stdlib/math":"0eD","@stdlib/math/special/abs":"0eE","@stdlib/math-special-abs":"0eF","@stdlib/math/special":"0eG","@stdlib/math-special":"0eH","@stdlib/math/strided/ops/add":"0eI","@stdlib/math-strided-ops-add":"0eJ","@stdlib/math/strided/ops/mul":"0eK","@stdlib/math-strided-ops-mul":"0eL","@stdlib/math/strided/ops":"0eM","@stdlib/math-strided-ops":"0eN","@stdlib/math/strided/ops/sub":"0eO","@stdlib/math-strided-ops-sub":"0eP","@stdlib/math/strided":"0eQ","@stdlib/math-strided":"0eR","@stdlib/math/strided/special/abs-by":"0eS","@stdlib/math-strided-special-abs-by":"0eT","@stdlib/math/strided/special/abs":"0eU","@stdlib/math-strided-special-abs":"0eV","@stdlib/math/strided/special/abs2-by":"0eW","@stdlib/math-strided-special-abs2-by":"0eX","@stdlib/math/strided/special/abs2":"0eY","@stdlib/math-strided-special-abs2":"0eZ","@stdlib/math/strided/special/acos-by":"0ea","@stdlib/math-strided-special-acos-by":"0eb","@stdlib/math/strided/special/acosh-by":"0ec","@stdlib/math-strided-special-acosh-by":"0ed","@stdlib/math/strided/special/acot-by":"0ee","@stdlib/math-strided-special-acot-by":"0ef","@stdlib/math/strided/special/acoth-by":"0eg","@stdlib/math-strided-special-acoth-by":"0eh","@stdlib/math/strided/special/acovercos-by":"0ei","@stdlib/math-strided-special-acovercos-by":"0ej","@stdlib/math/strided/special/acoversin-by":"0ek","@stdlib/math-strided-special-acoversin-by":"0el","@stdlib/math/strided/special/ahavercos-by":"0em","@stdlib/math-strided-special-ahavercos-by":"0en","@stdlib/math/strided/special/ahaversin-by":"0eo","@stdlib/math-strided-special-ahaversin-by":"0ep","@stdlib/math/strided/special/asin-by":"0eq","@stdlib/math-strided-special-asin-by":"0er","@stdlib/math/strided/special/asinh-by":"0es","@stdlib/math-strided-special-asinh-by":"0et","@stdlib/math/strided/special/atan-by":"0eu","@stdlib/math-strided-special-atan-by":"0ev","@stdlib/math/strided/special/atanh-by":"0ew","@stdlib/math-strided-special-atanh-by":"0ex","@stdlib/math/strided/special/avercos-by":"0ey","@stdlib/math-strided-special-avercos-by":"0ez","@stdlib/math/strided/special/aversin-by":"0f0","@stdlib/math-strided-special-aversin-by":"0f1","@stdlib/math/strided/special/besselj0-by":"0f2","@stdlib/math-strided-special-besselj0-by":"0f3","@stdlib/math/strided/special/besselj1-by":"0f4","@stdlib/math-strided-special-besselj1-by":"0f5","@stdlib/math/strided/special/bessely0-by":"0f6","@stdlib/math-strided-special-bessely0-by":"0f7","@stdlib/math/strided/special/bessely1-by":"0f8","@stdlib/math-strided-special-bessely1-by":"0f9","@stdlib/math/strided/special/binet-by":"0fA","@stdlib/math-strided-special-binet-by":"0fB","@stdlib/math/strided/special/cbrt":"0fC","@stdlib/math-strided-special-cbrt":"0fD","@stdlib/math/strided/special/ceil":"0fE","@stdlib/math-strided-special-ceil":"0fF","@stdlib/math/strided/special/dabs":"0fG","@stdlib/math-strided-special-dabs":"0fH","@stdlib/math/strided/special/dabs2":"0fI","@stdlib/math-strided-special-dabs2":"0fJ","@stdlib/math/strided/special/dcbrt":"0fK","@stdlib/math-strided-special-dcbrt":"0fL","@stdlib/math/strided/special/dceil":"0fM","@stdlib/math-strided-special-dceil":"0fN","@stdlib/math/strided/special/ddeg2rad":"0fO","@stdlib/math-strided-special-ddeg2rad":"0fP","@stdlib/math/strided/special/deg2rad":"0fQ","@stdlib/math-strided-special-deg2rad":"0fR","@stdlib/math/strided/special/dfloor":"0fS","@stdlib/math-strided-special-dfloor":"0fT","@stdlib/math/strided/special/dinv":"0fU","@stdlib/math-strided-special-dinv":"0fV","@stdlib/math/strided/special/dmskabs":"0fW","@stdlib/math-strided-special-dmskabs":"0fX","@stdlib/math/strided/special/dmskabs2":"0fY","@stdlib/math-strided-special-dmskabs2":"0fZ","@stdlib/math/strided/special/dmskcbrt":"0fa","@stdlib/math-strided-special-dmskcbrt":"0fb","@stdlib/math/strided/special/dmskceil":"0fc","@stdlib/math-strided-special-dmskceil":"0fd","@stdlib/math/strided/special/dmskdeg2rad":"0fe","@stdlib/math-strided-special-dmskdeg2rad":"0ff","@stdlib/math/strided/special/dmskfloor":"0fg","@stdlib/math-strided-special-dmskfloor":"0fh","@stdlib/math/strided/special/dmskinv":"0fi","@stdlib/math-strided-special-dmskinv":"0fj","@stdlib/math/strided/special/dmskramp":"0fk","@stdlib/math-strided-special-dmskramp":"0fl","@stdlib/math/strided/special/dmskrsqrt":"0fm","@stdlib/math-strided-special-dmskrsqrt":"0fn","@stdlib/math/strided/special/dmsksqrt":"0fo","@stdlib/math-strided-special-dmsksqrt":"0fp","@stdlib/math/strided/special/dmsktrunc":"0fq","@stdlib/math-strided-special-dmsktrunc":"0fr","@stdlib/math/strided/special/dramp":"0fs","@stdlib/math-strided-special-dramp":"0ft","@stdlib/math/strided/special/drsqrt":"0fu","@stdlib/math-strided-special-drsqrt":"0fv","@stdlib/math/strided/special/dsqrt":"0fw","@stdlib/math-strided-special-dsqrt":"0fx","@stdlib/math/strided/special/dtrunc":"0fy","@stdlib/math-strided-special-dtrunc":"0fz","@stdlib/math/strided/special/floor":"0g0","@stdlib/math-strided-special-floor":"0g1","@stdlib/math/strided/special/inv":"0g2","@stdlib/math-strided-special-inv":"0g3","@stdlib/math/strided/special":"0g4","@stdlib/math-strided-special":"0g5","@stdlib/math/strided/special/ramp":"0g6","@stdlib/math-strided-special-ramp":"0g7","@stdlib/math/strided/special/rsqrt":"0g8","@stdlib/math-strided-special-rsqrt":"0g9","@stdlib/math/strided/special/sabs":"0gA","@stdlib/math-strided-special-sabs":"0gB","@stdlib/math/strided/special/sabs2":"0gC","@stdlib/math-strided-special-sabs2":"0gD","@stdlib/math/strided/special/scbrt":"0gE","@stdlib/math-strided-special-scbrt":"0gF","@stdlib/math/strided/special/sceil":"0gG","@stdlib/math-strided-special-sceil":"0gH","@stdlib/math/strided/special/sdeg2rad":"0gI","@stdlib/math-strided-special-sdeg2rad":"0gJ","@stdlib/math/strided/special/sfloor":"0gK","@stdlib/math-strided-special-sfloor":"0gL","@stdlib/math/strided/special/sinv":"0gM","@stdlib/math-strided-special-sinv":"0gN","@stdlib/math/strided/special/smskabs":"0gO","@stdlib/math-strided-special-smskabs":"0gP","@stdlib/math/strided/special/smskabs2":"0gQ","@stdlib/math-strided-special-smskabs2":"0gR","@stdlib/math/strided/special/smskcbrt":"0gS","@stdlib/math-strided-special-smskcbrt":"0gT","@stdlib/math/strided/special/smskceil":"0gU","@stdlib/math-strided-special-smskceil":"0gV","@stdlib/math/strided/special/smskdeg2rad":"0gW","@stdlib/math-strided-special-smskdeg2rad":"0gX","@stdlib/math/strided/special/smskfloor":"0gY","@stdlib/math-strided-special-smskfloor":"0gZ","@stdlib/math/strided/special/smskinv":"0ga","@stdlib/math-strided-special-smskinv":"0gb","@stdlib/math/strided/special/smskramp":"0gc","@stdlib/math-strided-special-smskramp":"0gd","@stdlib/math/strided/special/smskrsqrt":"0ge","@stdlib/math-strided-special-smskrsqrt":"0gf","@stdlib/math/strided/special/smsksqrt":"0gg","@stdlib/math-strided-special-smsksqrt":"0gh","@stdlib/math/strided/special/smsktrunc":"0gi","@stdlib/math-strided-special-smsktrunc":"0gj","@stdlib/math/strided/special/sqrt":"0gk","@stdlib/math-strided-special-sqrt":"0gl","@stdlib/math/strided/special/sramp":"0gm","@stdlib/math-strided-special-sramp":"0gn","@stdlib/math/strided/special/srsqrt":"0go","@stdlib/math-strided-special-srsqrt":"0gp","@stdlib/math/strided/special/ssqrt":"0gq","@stdlib/math-strided-special-ssqrt":"0gr","@stdlib/math/strided/special/strunc":"0gs","@stdlib/math-strided-special-strunc":"0gt","@stdlib/math/strided/special/trunc":"0gu","@stdlib/math-strided-special-trunc":"0gv","@stdlib/math/tools":"0gw","@stdlib/math-tools":"0gx","@stdlib/math/tools/unary":"0gy","@stdlib/math-tools-unary":"0gz","@stdlib/ml/incr/binary-classification":"0h0","@stdlib/ml-incr-binary-classification":"0h1","@stdlib/ml/incr/kmeans":"0h2","@stdlib/ml-incr-kmeans":"0h3","@stdlib/ml/incr":"0h4","@stdlib/ml-incr":"0h5","@stdlib/ml/incr/sgd-regression":"0h6","@stdlib/ml-incr-sgd-regression":"0h7","@stdlib/ml":"0h9","@stdlib/namespace/alias2pkg":"0hA","@stdlib/namespace-alias2pkg":"0hB","@stdlib/namespace/alias2related":"0hC","@stdlib/namespace-alias2related":"0hD","@stdlib/namespace/alias2standalone":"0hE","@stdlib/namespace-alias2standalone":"0hF","@stdlib/namespace/aliases":"0hG","@stdlib/namespace-aliases":"0hH","@stdlib/namespace":"0hJ","@stdlib/namespace/pkg2alias":"0hK","@stdlib/namespace-pkg2alias":"0hL","@stdlib/namespace/pkg2related":"0hM","@stdlib/namespace-pkg2related":"0hN","@stdlib/namespace/pkg2standalone":"0hO","@stdlib/namespace-pkg2standalone":"0hP","@stdlib/namespace/standalone2pkg":"0hQ","@stdlib/namespace-standalone2pkg":"0hR","@stdlib/ndarray/array":"0hS","@stdlib/ndarray-array":"0hT","@stdlib/ndarray/base/assert/is-allowed-data-type-cast":"0hU","@stdlib/ndarray-base-assert-is-allowed-data-type-cast":"0hV","@stdlib/ndarray/base/assert/is-buffer-length-compatible-shape":"0hW","@stdlib/ndarray-base-assert-is-buffer-length-compatible-shape":"0hX","@stdlib/ndarray/base/assert/is-buffer-length-compatible":"0hY","@stdlib/ndarray-base-assert-is-buffer-length-compatible":"0hZ","@stdlib/ndarray/base/assert/is-casting-mode":"0ha","@stdlib/ndarray-base-assert-is-casting-mode":"0hb","@stdlib/ndarray/base/assert/is-column-major-contiguous":"0hc","@stdlib/ndarray-base-assert-is-column-major-contiguous":"0hd","@stdlib/ndarray/base/assert/is-column-major":"0he","@stdlib/ndarray-base-assert-is-column-major":"0hf","@stdlib/ndarray/base/assert/is-contiguous":"0hg","@stdlib/ndarray-base-assert-is-contiguous":"0hh","@stdlib/ndarray/base/assert/is-data-type":"0hi","@stdlib/ndarray-base-assert-is-data-type":"0hj","@stdlib/ndarray/base/assert/is-index-mode":"0hk","@stdlib/ndarray-base-assert-is-index-mode":"0hl","@stdlib/ndarray/base/assert/is-order":"0hm","@stdlib/ndarray-base-assert-is-order":"0hn","@stdlib/ndarray/base/assert/is-read-only":"0ho","@stdlib/ndarray-base-assert-is-read-only":"0hp","@stdlib/ndarray/base/assert/is-row-major-contiguous":"0hq","@stdlib/ndarray-base-assert-is-row-major-contiguous":"0hr","@stdlib/ndarray/base/assert/is-row-major":"0hs","@stdlib/ndarray-base-assert-is-row-major":"0ht","@stdlib/ndarray/base/assert/is-safe-data-type-cast":"0hu","@stdlib/ndarray-base-assert-is-safe-data-type-cast":"0hv","@stdlib/ndarray/base/assert/is-same-kind-data-type-cast":"0hw","@stdlib/ndarray-base-assert-is-same-kind-data-type-cast":"0hx","@stdlib/ndarray/base/assert/is-single-segment-compatible":"0hy","@stdlib/ndarray-base-assert-is-single-segment-compatible":"0hz","@stdlib/ndarray/base/assert":"0i0","@stdlib/ndarray-base-assert":"0i1","@stdlib/ndarray/base/bind2vind":"0i2","@stdlib/ndarray-base-bind2vind":"0i3","@stdlib/ndarray/base/broadcast-array":"0i4","@stdlib/ndarray-base-broadcast-array":"0i5","@stdlib/ndarray/base/broadcast-shapes":"0i6","@stdlib/ndarray-base-broadcast-shapes":"0i7","@stdlib/ndarray/base/buffer-ctors":"0i8","@stdlib/ndarray-base-buffer-ctors":"0i9","@stdlib/ndarray/base/buffer-dtype-enum":"0iA","@stdlib/ndarray-base-buffer-dtype-enum":"0iB","@stdlib/ndarray/base/buffer-dtype":"0iC","@stdlib/ndarray-base-buffer-dtype":"0iD","@stdlib/ndarray/base/buffer":"0iE","@stdlib/ndarray-base-buffer":"0iF","@stdlib/ndarray/base/bytes-per-element":"0iG","@stdlib/ndarray-base-bytes-per-element":"0iH","@stdlib/ndarray/base/char2dtype":"0iI","@stdlib/ndarray-base-char2dtype":"0iJ","@stdlib/ndarray/base/clamp-index":"0iK","@stdlib/ndarray-base-clamp-index":"0iL","@stdlib/ndarray/base/ctor":"0iM","@stdlib/ndarray-base-ctor":"0iN","@stdlib/ndarray/base/dtype-char":"0iO","@stdlib/ndarray-base-dtype-char":"0iP","@stdlib/ndarray/base/dtype-desc":"0iQ","@stdlib/ndarray-base-dtype-desc":"0iR","@stdlib/ndarray/base/dtype-enum2str":"0iS","@stdlib/ndarray-base-dtype-enum2str":"0iT","@stdlib/ndarray/base/dtype-resolve-enum":"0iU","@stdlib/ndarray-base-dtype-resolve-enum":"0iV","@stdlib/ndarray/base/dtype-resolve-str":"0iW","@stdlib/ndarray-base-dtype-resolve-str":"0iX","@stdlib/ndarray/base/dtype-str2enum":"0iY","@stdlib/ndarray-base-dtype-str2enum":"0iZ","@stdlib/ndarray/base/dtype2c":"0ia","@stdlib/ndarray-base-dtype2c":"0ib","@stdlib/ndarray/base/dtypes2signatures":"0ic","@stdlib/ndarray-base-dtypes2signatures":"0id","@stdlib/ndarray/base/expand-dimensions":"0ie","@stdlib/ndarray-base-expand-dimensions":"0if","@stdlib/ndarray/base/from-scalar":"0ig","@stdlib/ndarray-base-from-scalar":"0ih","@stdlib/ndarray/base/function-object":"0ii","@stdlib/ndarray-base-function-object":"0ij","@stdlib/ndarray/base/ind":"0ik","@stdlib/ndarray-base-ind":"0il","@stdlib/ndarray/base/ind2sub":"0im","@stdlib/ndarray-base-ind2sub":"0in","@stdlib/ndarray/base/iteration-order":"0io","@stdlib/ndarray-base-iteration-order":"0ip","@stdlib/ndarray/base/max-view-buffer-index":"0iq","@stdlib/ndarray-base-max-view-buffer-index":"0ir","@stdlib/ndarray/base/maybe-broadcast-array":"0is","@stdlib/ndarray-base-maybe-broadcast-array":"0it","@stdlib/ndarray/base/meta-data-props":"0iu","@stdlib/ndarray-base-meta-data-props":"0iv","@stdlib/ndarray/base/min-view-buffer-index":"0iw","@stdlib/ndarray-base-min-view-buffer-index":"0ix","@stdlib/ndarray/base/minmax-view-buffer-index":"0iy","@stdlib/ndarray-base-minmax-view-buffer-index":"0iz","@stdlib/ndarray/base/napi/addon-arguments":"0j0","@stdlib/ndarray-base-napi-addon-arguments":"0j1","@stdlib/ndarray/base/napi/dtype-string-to-dtype":"0j2","@stdlib/ndarray-base-napi-dtype-string-to-dtype":"0j3","@stdlib/ndarray/base/napi":"0j4","@stdlib/ndarray-base-napi":"0j5","@stdlib/ndarray/base/napi/typedarray-type-to-dtype":"0j6","@stdlib/ndarray-base-napi-typedarray-type-to-dtype":"0j7","@stdlib/ndarray/base/napi/unary":"0j8","@stdlib/ndarray-base-napi-unary":"0j9","@stdlib/ndarray/base/ndarraylike2object":"0jA","@stdlib/ndarray-base-ndarraylike2object":"0jB","@stdlib/ndarray/base/nonsingleton-dimensions":"0jC","@stdlib/ndarray-base-nonsingleton-dimensions":"0jD","@stdlib/ndarray/base/numel":"0jE","@stdlib/ndarray-base-numel":"0jF","@stdlib/ndarray/base":"0jG","@stdlib/ndarray-base":"0jH","@stdlib/ndarray/base/prepend-singleton-dimensions":"0jI","@stdlib/ndarray-base-prepend-singleton-dimensions":"0jJ","@stdlib/ndarray/base/remove-singleton-dimensions":"0jK","@stdlib/ndarray-base-remove-singleton-dimensions":"0jL","@stdlib/ndarray/base/serialize-meta-data":"0jM","@stdlib/ndarray-base-serialize-meta-data":"0jN","@stdlib/ndarray/base/shape2strides":"0jO","@stdlib/ndarray-base-shape2strides":"0jP","@stdlib/ndarray/base/singleton-dimensions":"0jQ","@stdlib/ndarray-base-singleton-dimensions":"0jR","@stdlib/ndarray/base/strides2offset":"0jS","@stdlib/ndarray-base-strides2offset":"0jT","@stdlib/ndarray/base/strides2order":"0jU","@stdlib/ndarray-base-strides2order":"0jV","@stdlib/ndarray/base/sub2ind":"0jW","@stdlib/ndarray-base-sub2ind":"0jX","@stdlib/ndarray/base/to-array":"0jY","@stdlib/ndarray-base-to-array":"0jZ","@stdlib/ndarray/base/transpose":"0ja","@stdlib/ndarray-base-transpose":"0jb","@stdlib/ndarray/base/unary":"0jc","@stdlib/ndarray-base-unary":"0jd","@stdlib/ndarray/base/vind2bind":"0je","@stdlib/ndarray-base-vind2bind":"0jf","@stdlib/ndarray/base/wrap-index":"0jg","@stdlib/ndarray-base-wrap-index":"0jh","@stdlib/ndarray/base/zeros-like":"0ji","@stdlib/ndarray-base-zeros-like":"0jj","@stdlib/ndarray/base/zeros":"0jk","@stdlib/ndarray-base-zeros":"0jl","@stdlib/ndarray/casting-modes":"0jm","@stdlib/ndarray-casting-modes":"0jn","@stdlib/ndarray/ctor":"0jo","@stdlib/ndarray-ctor":"0jp","@stdlib/ndarray/dispatch":"0jq","@stdlib/ndarray-dispatch":"0jr","@stdlib/ndarray/dtypes":"0js","@stdlib/ndarray-dtypes":"0jt","@stdlib/ndarray/from-scalar":"0ju","@stdlib/ndarray-from-scalar":"0jv","@stdlib/ndarray/ind2sub":"0jw","@stdlib/ndarray-ind2sub":"0jx","@stdlib/ndarray/index-modes":"0jy","@stdlib/ndarray-index-modes":"0jz","@stdlib/ndarray/min-dtype":"0k0","@stdlib/ndarray-min-dtype":"0k1","@stdlib/ndarray/next-dtype":"0k2","@stdlib/ndarray-next-dtype":"0k3","@stdlib/ndarray/orders":"0k4","@stdlib/ndarray-orders":"0k5","@stdlib/ndarray":"0k7","@stdlib/ndarray/promotion-rules":"0k8","@stdlib/ndarray-promotion-rules":"0k9","@stdlib/ndarray/safe-casts":"0kA","@stdlib/ndarray-safe-casts":"0kB","@stdlib/ndarray/same-kind-casts":"0kC","@stdlib/ndarray-same-kind-casts":"0kD","@stdlib/ndarray/sub2ind":"0kE","@stdlib/ndarray-sub2ind":"0kF","@stdlib/ndarray/zeros-like":"0kG","@stdlib/ndarray-zeros-like":"0kH","@stdlib/ndarray/zeros":"0kI","@stdlib/ndarray-zeros":"0kJ","@stdlib/net/disposable-http-server":"0kK","@stdlib/net-disposable-http-server":"0kL","@stdlib/net/http-server":"0kM","@stdlib/net-http-server":"0kN","@stdlib/net":"0kP","@stdlib/net/simple-http-server":"0kQ","@stdlib/net-simple-http-server":"0kR","@stdlib/nlp/expand-contractions":"0kS","@stdlib/nlp-expand-contractions":"0kT","@stdlib/nlp/lda":"0kU","@stdlib/nlp-lda":"0kV","@stdlib/nlp/ordinalize":"0kW","@stdlib/nlp-ordinalize":"0kX","@stdlib/nlp":"0kZ","@stdlib/nlp/porter-stemmer":"0ka","@stdlib/nlp-porter-stemmer":"0kb","@stdlib/nlp/tokenize":"0kc","@stdlib/nlp-tokenize":"0kd","@stdlib/number/ctor":"0ke","@stdlib/number-ctor":"0kf","@stdlib/number/float32/base/exponent":"0kg","@stdlib/number-float32-base-exponent":"0kh","@stdlib/number/float32/base/from-binary-string":"0ki","@stdlib/number-float32-base-from-binary-string":"0kj","@stdlib/number/float32/base/from-word":"0kk","@stdlib/number-float32-base-from-word":"0kl","@stdlib/number/float32/base/normalize":"0km","@stdlib/number-float32-base-normalize":"0kn","@stdlib/number/float32/base":"0ko","@stdlib/number-float32-base":"0kp","@stdlib/number/float32/base/signbit":"0kq","@stdlib/number-float32-base-signbit":"0kr","@stdlib/number/float32/base/significand":"0ks","@stdlib/number-float32-base-significand":"0kt","@stdlib/number/float32/base/to-binary-string":"0ku","@stdlib/number-float32-base-to-binary-string":"0kv","@stdlib/number/float32/base/to-int32":"0kw","@stdlib/number-float32-base-to-int32":"0kx","@stdlib/number/float32/base/to-uint32":"0ky","@stdlib/number-float32-base-to-uint32":"0kz","@stdlib/number/float32/base/to-word":"0l0","@stdlib/number-float32-base-to-word":"0l1","@stdlib/number/float32":"0l2","@stdlib/number-float32":"0l3","@stdlib/number/float64/base/exponent":"0l4","@stdlib/number-float64-base-exponent":"0l5","@stdlib/number/float64/base/from-binary-string":"0l6","@stdlib/number-float64-base-from-binary-string":"0l7","@stdlib/number/float64/base/from-int64-bytes":"0l8","@stdlib/number-float64-base-from-int64-bytes":"0l9","@stdlib/number/float64/base/from-words":"0lA","@stdlib/number-float64-base-from-words":"0lB","@stdlib/number/float64/base/get-high-word":"0lC","@stdlib/number-float64-base-get-high-word":"0lD","@stdlib/number/float64/base/get-low-word":"0lE","@stdlib/number-float64-base-get-low-word":"0lF","@stdlib/number/float64/base/normalize":"0lG","@stdlib/number-float64-base-normalize":"0lH","@stdlib/number/float64/base":"0lI","@stdlib/number-float64-base":"0lJ","@stdlib/number/float64/base/set-high-word":"0lK","@stdlib/number-float64-base-set-high-word":"0lL","@stdlib/number/float64/base/set-low-word":"0lM","@stdlib/number-float64-base-set-low-word":"0lN","@stdlib/number/float64/base/signbit":"0lO","@stdlib/number-float64-base-signbit":"0lP","@stdlib/number/float64/base/to-binary-string":"0lQ","@stdlib/number-float64-base-to-binary-string":"0lR","@stdlib/number/float64/base/to-float32":"0lS","@stdlib/number-float64-base-to-float32":"0lT","@stdlib/number/float64/base/to-int32":"0lU","@stdlib/number-float64-base-to-int32":"0lV","@stdlib/number/float64/base/to-int64-bytes":"0lW","@stdlib/number-float64-base-to-int64-bytes":"0lX","@stdlib/number/float64/base/to-uint32":"0lY","@stdlib/number-float64-base-to-uint32":"0lZ","@stdlib/number/float64/base/to-words":"0la","@stdlib/number-float64-base-to-words":"0lb","@stdlib/number/float64":"0lc","@stdlib/number-float64":"0ld","@stdlib/number/int32/base":"0le","@stdlib/number-int32-base":"0lf","@stdlib/number/int32/base/to-uint32":"0lg","@stdlib/number-int32-base-to-uint32":"0lh","@stdlib/number/int32":"0li","@stdlib/number-int32":"0lj","@stdlib/number":"0ll","@stdlib/number/uint16/base/from-binary-string":"0lm","@stdlib/number-uint16-base-from-binary-string":"0ln","@stdlib/number/uint16/base":"0lo","@stdlib/number-uint16-base":"0lp","@stdlib/number/uint16/base/to-binary-string":"0lq","@stdlib/number-uint16-base-to-binary-string":"0lr","@stdlib/number/uint16":"0ls","@stdlib/number-uint16":"0lt","@stdlib/number/uint32/base/from-binary-string":"0lu","@stdlib/number-uint32-base-from-binary-string":"0lv","@stdlib/number/uint32/base":"0lw","@stdlib/number-uint32-base":"0lx","@stdlib/number/uint32/base/rotl":"0ly","@stdlib/number-uint32-base-rotl":"0lz","@stdlib/number/uint32/base/rotr":"0m0","@stdlib/number-uint32-base-rotr":"0m1","@stdlib/number/uint32/base/to-binary-string":"0m2","@stdlib/number-uint32-base-to-binary-string":"0m3","@stdlib/number/uint32/base/to-int32":"0m4","@stdlib/number-uint32-base-to-int32":"0m5","@stdlib/number/uint32":"0m6","@stdlib/number-uint32":"0m7","@stdlib/number/uint8/base/from-binary-string":"0m8","@stdlib/number-uint8-base-from-binary-string":"0m9","@stdlib/number/uint8/base":"0mA","@stdlib/number-uint8-base":"0mB","@stdlib/number/uint8/base/to-binary-string":"0mC","@stdlib/number-uint8-base-to-binary-string":"0mD","@stdlib/number/uint8":"0mE","@stdlib/number-uint8":"0mF","@stdlib/os/arch":"0mG","@stdlib/os-arch":"0mH","@stdlib/os/byte-order":"0mI","@stdlib/os-byte-order":"0mJ","@stdlib/os/configdir":"0mK","@stdlib/os-configdir":"0mL","@stdlib/os/float-word-order":"0mM","@stdlib/os-float-word-order":"0mN","@stdlib/os/homedir":"0mO","@stdlib/os-homedir":"0mP","@stdlib/os/num-cpus":"0mQ","@stdlib/os-num-cpus":"0mR","@stdlib/os":"0mT","@stdlib/os/platform":"0mU","@stdlib/os-platform":"0mV","@stdlib/os/tmpdir":"0mW","@stdlib/os-tmpdir":"0mX","@stdlib/plot/base/ctor":"0mY","@stdlib/plot-base-ctor":"0mZ","@stdlib/plot/components/svg/annotations":"0ma","@stdlib/plot-components-svg-annotations":"0mb","@stdlib/plot/components/svg/axis":"0mc","@stdlib/plot-components-svg-axis":"0md","@stdlib/plot/components/svg/background":"0me","@stdlib/plot-components-svg-background":"0mf","@stdlib/plot/components/svg/canvas":"0mg","@stdlib/plot-components-svg-canvas":"0mh","@stdlib/plot/components/svg/clip-path":"0mi","@stdlib/plot-components-svg-clip-path":"0mj","@stdlib/plot/components/svg/defs":"0mk","@stdlib/plot-components-svg-defs":"0ml","@stdlib/plot/components/svg/graph":"0mm","@stdlib/plot-components-svg-graph":"0mn","@stdlib/plot/components/svg/marks":"0mo","@stdlib/plot-components-svg-marks":"0mp","@stdlib/plot/components/svg/path":"0mq","@stdlib/plot-components-svg-path":"0mr","@stdlib/plot/components/svg/rug":"0ms","@stdlib/plot-components-svg-rug":"0mt","@stdlib/plot/components/svg/symbols":"0mu","@stdlib/plot-components-svg-symbols":"0mv","@stdlib/plot/components/svg/title":"0mw","@stdlib/plot-components-svg-title":"0mx","@stdlib/plot/ctor":"0my","@stdlib/plot-ctor":"0mz","@stdlib/plot":"0n1","@stdlib/plot/sparklines/base/ctor":"0n2","@stdlib/plot-sparklines-base-ctor":"0n3","@stdlib/plot/sparklines/base":"0n4","@stdlib/plot-sparklines-base":"0n5","@stdlib/plot/sparklines":"0n6","@stdlib/plot-sparklines":"0n7","@stdlib/plot/sparklines/unicode/column":"0n8","@stdlib/plot-sparklines-unicode-column":"0n9","@stdlib/plot/sparklines/unicode/line":"0nA","@stdlib/plot-sparklines-unicode-line":"0nB","@stdlib/plot/sparklines/unicode":"0nC","@stdlib/plot-sparklines-unicode":"0nD","@stdlib/plot/sparklines/unicode/tristate":"0nE","@stdlib/plot-sparklines-unicode-tristate":"0nF","@stdlib/plot/sparklines/unicode/up-down":"0nG","@stdlib/plot-sparklines-unicode-up-down":"0nH","@stdlib/plot/sparklines/unicode/win-loss":"0nI","@stdlib/plot-sparklines-unicode-win-loss":"0nJ","@stdlib/plot/unicode/stemleaf":"0nK","@stdlib/plot-unicode-stemleaf":"0nL","@stdlib/process/argv":"0nM","@stdlib/process-argv":"0nN","@stdlib/process/chdir":"0nO","@stdlib/process-chdir":"0nP","@stdlib/process/cwd":"0nQ","@stdlib/process-cwd":"0nR","@stdlib/process/env":"0nS","@stdlib/process-env":"0nT","@stdlib/process/exec-path":"0nU","@stdlib/process-exec-path":"0nV","@stdlib/process/getegid":"0nW","@stdlib/process-getegid":"0nX","@stdlib/process/geteuid":"0nY","@stdlib/process-geteuid":"0nZ","@stdlib/process/getgid":"0na","@stdlib/process-getgid":"0nb","@stdlib/process/getuid":"0nc","@stdlib/process-getuid":"0nd","@stdlib/process/node-version":"0ne","@stdlib/process-node-version":"0nf","@stdlib/process":"0nh","@stdlib/process/read-stdin":"0ni","@stdlib/process-read-stdin":"0nj","@stdlib/process/umask":"0nk","@stdlib/process-umask":"0nl","@stdlib/proxy/ctor":"0nm","@stdlib/proxy-ctor":"0nn","@stdlib/proxy":"0np","@stdlib/random/base/arcsine":"0nq","@stdlib/random-base-arcsine":"0nr","@stdlib/random/base/bernoulli":"0ns","@stdlib/random-base-bernoulli":"0nt","@stdlib/random/base/beta":"0nu","@stdlib/random-base-beta":"0nv","@stdlib/random/base/betaprime":"0nw","@stdlib/random-base-betaprime":"0nx","@stdlib/random/base/binomial":"0ny","@stdlib/random-base-binomial":"0nz","@stdlib/random/base/box-muller":"0o0","@stdlib/random-base-box-muller":"0o1","@stdlib/random/base/cauchy":"0o2","@stdlib/random-base-cauchy":"0o3","@stdlib/random/base/chi":"0o4","@stdlib/random-base-chi":"0o5","@stdlib/random/base/chisquare":"0o6","@stdlib/random-base-chisquare":"0o7","@stdlib/random/base/cosine":"0o8","@stdlib/random-base-cosine":"0o9","@stdlib/random/base/discrete-uniform":"0oA","@stdlib/random-base-discrete-uniform":"0oB","@stdlib/random/base/erlang":"0oC","@stdlib/random-base-erlang":"0oD","@stdlib/random/base/exponential":"0oE","@stdlib/random-base-exponential":"0oF","@stdlib/random/base/f":"0oG","@stdlib/random-base-f":"0oH","@stdlib/random/base/frechet":"0oI","@stdlib/random-base-frechet":"0oJ","@stdlib/random/base/gamma":"0oK","@stdlib/random-base-gamma":"0oL","@stdlib/random/base/geometric":"0oM","@stdlib/random-base-geometric":"0oN","@stdlib/random/base/gumbel":"0oO","@stdlib/random-base-gumbel":"0oP","@stdlib/random/base/hypergeometric":"0oQ","@stdlib/random-base-hypergeometric":"0oR","@stdlib/random/base/improved-ziggurat":"0oS","@stdlib/random-base-improved-ziggurat":"0oT","@stdlib/random/base/invgamma":"0oU","@stdlib/random-base-invgamma":"0oV","@stdlib/random/base/kumaraswamy":"0oW","@stdlib/random-base-kumaraswamy":"0oX","@stdlib/random/base/laplace":"0oY","@stdlib/random-base-laplace":"0oZ","@stdlib/random/base/levy":"0oa","@stdlib/random-base-levy":"0ob","@stdlib/random/base/logistic":"0oc","@stdlib/random-base-logistic":"0od","@stdlib/random/base/lognormal":"0oe","@stdlib/random-base-lognormal":"0of","@stdlib/random/base/minstd-shuffle":"0og","@stdlib/random-base-minstd-shuffle":"0oh","@stdlib/random/base/minstd":"0oi","@stdlib/random-base-minstd":"0oj","@stdlib/random/base/mt19937":"0ok","@stdlib/random-base-mt19937":"0ol","@stdlib/random/base/negative-binomial":"0om","@stdlib/random-base-negative-binomial":"0on","@stdlib/random/base/normal":"0oo","@stdlib/random-base-normal":"0op","@stdlib/random/base":"0oq","@stdlib/random-base":"0or","@stdlib/random/base/pareto-type1":"0os","@stdlib/random-base-pareto-type1":"0ot","@stdlib/random/base/poisson":"0ou","@stdlib/random-base-poisson":"0ov","@stdlib/random/base/randi":"0ow","@stdlib/random-base-randi":"0ox","@stdlib/random/base/randn":"0oy","@stdlib/random-base-randn":"0oz","@stdlib/random/base/randu":"0p0","@stdlib/random-base-randu":"0p1","@stdlib/random/base/rayleigh":"0p2","@stdlib/random-base-rayleigh":"0p3","@stdlib/random/base/reviver":"0p4","@stdlib/random-base-reviver":"0p5","@stdlib/random/base/t":"0p6","@stdlib/random-base-t":"0p7","@stdlib/random/base/triangular":"0p8","@stdlib/random-base-triangular":"0p9","@stdlib/random/base/uniform":"0pA","@stdlib/random-base-uniform":"0pB","@stdlib/random/base/weibull":"0pC","@stdlib/random-base-weibull":"0pD","@stdlib/random/iter/arcsine":"0pE","@stdlib/random-iter-arcsine":"0pF","@stdlib/random/iter/bernoulli":"0pG","@stdlib/random-iter-bernoulli":"0pH","@stdlib/random/iter/beta":"0pI","@stdlib/random-iter-beta":"0pJ","@stdlib/random/iter/betaprime":"0pK","@stdlib/random-iter-betaprime":"0pL","@stdlib/random/iter/binomial":"0pM","@stdlib/random-iter-binomial":"0pN","@stdlib/random/iter/box-muller":"0pO","@stdlib/random-iter-box-muller":"0pP","@stdlib/random/iter/cauchy":"0pQ","@stdlib/random-iter-cauchy":"0pR","@stdlib/random/iter/chi":"0pS","@stdlib/random-iter-chi":"0pT","@stdlib/random/iter/chisquare":"0pU","@stdlib/random-iter-chisquare":"0pV","@stdlib/random/iter/cosine":"0pW","@stdlib/random-iter-cosine":"0pX","@stdlib/random/iter/discrete-uniform":"0pY","@stdlib/random-iter-discrete-uniform":"0pZ","@stdlib/random/iter/erlang":"0pa","@stdlib/random-iter-erlang":"0pb","@stdlib/random/iter/exponential":"0pc","@stdlib/random-iter-exponential":"0pd","@stdlib/random/iter/f":"0pe","@stdlib/random-iter-f":"0pf","@stdlib/random/iter/frechet":"0pg","@stdlib/random-iter-frechet":"0ph","@stdlib/random/iter/gamma":"0pi","@stdlib/random-iter-gamma":"0pj","@stdlib/random/iter/geometric":"0pk","@stdlib/random-iter-geometric":"0pl","@stdlib/random/iter/gumbel":"0pm","@stdlib/random-iter-gumbel":"0pn","@stdlib/random/iter/hypergeometric":"0po","@stdlib/random-iter-hypergeometric":"0pp","@stdlib/random/iter/improved-ziggurat":"0pq","@stdlib/random-iter-improved-ziggurat":"0pr","@stdlib/random/iter/invgamma":"0ps","@stdlib/random-iter-invgamma":"0pt","@stdlib/random/iter/kumaraswamy":"0pu","@stdlib/random-iter-kumaraswamy":"0pv","@stdlib/random/iter/laplace":"0pw","@stdlib/random-iter-laplace":"0px","@stdlib/random/iter/levy":"0py","@stdlib/random-iter-levy":"0pz","@stdlib/random/iter/logistic":"0q0","@stdlib/random-iter-logistic":"0q1","@stdlib/random/iter/lognormal":"0q2","@stdlib/random-iter-lognormal":"0q3","@stdlib/random/iter/minstd-shuffle":"0q4","@stdlib/random-iter-minstd-shuffle":"0q5","@stdlib/random/iter/minstd":"0q6","@stdlib/random-iter-minstd":"0q7","@stdlib/random/iter/mt19937":"0q8","@stdlib/random-iter-mt19937":"0q9","@stdlib/random/iter/negative-binomial":"0qA","@stdlib/random-iter-negative-binomial":"0qB","@stdlib/random/iter/normal":"0qC","@stdlib/random-iter-normal":"0qD","@stdlib/random/iter":"0qE","@stdlib/random-iter":"0qF","@stdlib/random/iter/pareto-type1":"0qG","@stdlib/random-iter-pareto-type1":"0qH","@stdlib/random/iter/poisson":"0qI","@stdlib/random-iter-poisson":"0qJ","@stdlib/random/iter/randi":"0qK","@stdlib/random-iter-randi":"0qL","@stdlib/random/iter/randn":"0qM","@stdlib/random-iter-randn":"0qN","@stdlib/random/iter/randu":"0qO","@stdlib/random-iter-randu":"0qP","@stdlib/random/iter/rayleigh":"0qQ","@stdlib/random-iter-rayleigh":"0qR","@stdlib/random/iter/t":"0qS","@stdlib/random-iter-t":"0qT","@stdlib/random/iter/triangular":"0qU","@stdlib/random-iter-triangular":"0qV","@stdlib/random/iter/uniform":"0qW","@stdlib/random-iter-uniform":"0qX","@stdlib/random/iter/weibull":"0qY","@stdlib/random-iter-weibull":"0qZ","@stdlib/random":"0qb","@stdlib/random/sample":"0qc","@stdlib/random-sample":"0qd","@stdlib/random/shuffle":"0qe","@stdlib/random-shuffle":"0qf","@stdlib/random/streams/arcsine":"0qg","@stdlib/random-streams-arcsine":"0qh","@stdlib/random/streams/bernoulli":"0qi","@stdlib/random-streams-bernoulli":"0qj","@stdlib/random/streams/beta":"0qk","@stdlib/random-streams-beta":"0ql","@stdlib/random/streams/betaprime":"0qm","@stdlib/random-streams-betaprime":"0qn","@stdlib/random/streams/binomial":"0qo","@stdlib/random-streams-binomial":"0qp","@stdlib/random/streams/box-muller":"0qq","@stdlib/random-streams-box-muller":"0qr","@stdlib/random/streams/cauchy":"0qs","@stdlib/random-streams-cauchy":"0qt","@stdlib/random/streams/chi":"0qu","@stdlib/random-streams-chi":"0qv","@stdlib/random/streams/chisquare":"0qw","@stdlib/random-streams-chisquare":"0qx","@stdlib/random/streams/cosine":"0qy","@stdlib/random-streams-cosine":"0qz","@stdlib/random/streams/discrete-uniform":"0r0","@stdlib/random-streams-discrete-uniform":"0r1","@stdlib/random/streams/erlang":"0r2","@stdlib/random-streams-erlang":"0r3","@stdlib/random/streams/exponential":"0r4","@stdlib/random-streams-exponential":"0r5","@stdlib/random/streams/f":"0r6","@stdlib/random-streams-f":"0r7","@stdlib/random/streams/frechet":"0r8","@stdlib/random-streams-frechet":"0r9","@stdlib/random/streams/gamma":"0rA","@stdlib/random-streams-gamma":"0rB","@stdlib/random/streams/geometric":"0rC","@stdlib/random-streams-geometric":"0rD","@stdlib/random/streams/gumbel":"0rE","@stdlib/random-streams-gumbel":"0rF","@stdlib/random/streams/hypergeometric":"0rG","@stdlib/random-streams-hypergeometric":"0rH","@stdlib/random/streams/improved-ziggurat":"0rI","@stdlib/random-streams-improved-ziggurat":"0rJ","@stdlib/random/streams/invgamma":"0rK","@stdlib/random-streams-invgamma":"0rL","@stdlib/random/streams/kumaraswamy":"0rM","@stdlib/random-streams-kumaraswamy":"0rN","@stdlib/random/streams/laplace":"0rO","@stdlib/random-streams-laplace":"0rP","@stdlib/random/streams/levy":"0rQ","@stdlib/random-streams-levy":"0rR","@stdlib/random/streams/logistic":"0rS","@stdlib/random-streams-logistic":"0rT","@stdlib/random/streams/lognormal":"0rU","@stdlib/random-streams-lognormal":"0rV","@stdlib/random/streams/minstd-shuffle":"0rW","@stdlib/random-streams-minstd-shuffle":"0rX","@stdlib/random/streams/minstd":"0rY","@stdlib/random-streams-minstd":"0rZ","@stdlib/random/streams/mt19937":"0ra","@stdlib/random-streams-mt19937":"0rb","@stdlib/random/streams/negative-binomial":"0rc","@stdlib/random-streams-negative-binomial":"0rd","@stdlib/random/streams/normal":"0re","@stdlib/random-streams-normal":"0rf","@stdlib/random/streams":"0rg","@stdlib/random-streams":"0rh","@stdlib/random/streams/pareto-type1":"0ri","@stdlib/random-streams-pareto-type1":"0rj","@stdlib/random/streams/poisson":"0rk","@stdlib/random-streams-poisson":"0rl","@stdlib/random/streams/randi":"0rm","@stdlib/random-streams-randi":"0rn","@stdlib/random/streams/randn":"0ro","@stdlib/random-streams-randn":"0rp","@stdlib/random/streams/randu":"0rq","@stdlib/random-streams-randu":"0rr","@stdlib/random/streams/rayleigh":"0rs","@stdlib/random-streams-rayleigh":"0rt","@stdlib/random/streams/t":"0ru","@stdlib/random-streams-t":"0rv","@stdlib/random/streams/triangular":"0rw","@stdlib/random-streams-triangular":"0rx","@stdlib/random/streams/uniform":"0ry","@stdlib/random-streams-uniform":"0rz","@stdlib/random/streams/weibull":"0s0","@stdlib/random-streams-weibull":"0s1","@stdlib/regexp/basename-posix":"0s2","@stdlib/regexp-basename-posix":"0s3","@stdlib/regexp/basename-windows":"0s4","@stdlib/regexp-basename-windows":"0s5","@stdlib/regexp/basename":"0s6","@stdlib/regexp-basename":"0s7","@stdlib/regexp/color-hexadecimal":"0s8","@stdlib/regexp-color-hexadecimal":"0s9","@stdlib/regexp/decimal-number":"0sA","@stdlib/regexp-decimal-number":"0sB","@stdlib/regexp/dirname-posix":"0sC","@stdlib/regexp-dirname-posix":"0sD","@stdlib/regexp/dirname-windows":"0sE","@stdlib/regexp-dirname-windows":"0sF","@stdlib/regexp/dirname":"0sG","@stdlib/regexp-dirname":"0sH","@stdlib/regexp/eol":"0sI","@stdlib/regexp-eol":"0sJ","@stdlib/regexp/extended-length-path":"0sK","@stdlib/regexp-extended-length-path":"0sL","@stdlib/regexp/extname-posix":"0sM","@stdlib/regexp-extname-posix":"0sN","@stdlib/regexp/extname-windows":"0sO","@stdlib/regexp-extname-windows":"0sP","@stdlib/regexp/extname":"0sQ","@stdlib/regexp-extname":"0sR","@stdlib/regexp/filename-posix":"0sS","@stdlib/regexp-filename-posix":"0sT","@stdlib/regexp/filename-windows":"0sU","@stdlib/regexp-filename-windows":"0sV","@stdlib/regexp/filename":"0sW","@stdlib/regexp-filename":"0sX","@stdlib/regexp/function-name":"0sY","@stdlib/regexp-function-name":"0sZ","@stdlib/regexp/native-function":"0sa","@stdlib/regexp-native-function":"0sb","@stdlib/regexp":"0sd","@stdlib/regexp/regexp":"0se","@stdlib/regexp-regexp":"0sf","@stdlib/regexp/unc-path":"0sg","@stdlib/regexp-unc-path":"0sh","@stdlib/regexp/utf16-surrogate-pair":"0si","@stdlib/regexp-utf16-surrogate-pair":"0sj","@stdlib/regexp/utf16-unpaired-surrogate":"0sk","@stdlib/regexp-utf16-unpaired-surrogate":"0sl","@stdlib/regexp/whitespace":"0sm","@stdlib/regexp-whitespace":"0sn","@stdlib/repl/code-blocks":"0so","@stdlib/repl-code-blocks":"0sp","@stdlib/repl/help":"0sq","@stdlib/repl-help":"0sr","@stdlib/repl/info":"0ss","@stdlib/repl-info":"0st","@stdlib/repl":"0sv","@stdlib/repl/presentation":"0sw","@stdlib/repl-presentation":"0sx","@stdlib/repl/server":"0sy","@stdlib/repl-server":"0sz","@stdlib/repl/signature":"0t0","@stdlib/repl-signature":"0t1","@stdlib/repl/typed-signature":"0t2","@stdlib/repl-typed-signature":"0t3","@stdlib/simulate/iter/awgn":"0t4","@stdlib/simulate-iter-awgn":"0t5","@stdlib/simulate/iter/awln":"0t6","@stdlib/simulate-iter-awln":"0t7","@stdlib/simulate/iter/awun":"0t8","@stdlib/simulate-iter-awun":"0t9","@stdlib/simulate/iter/bartlett-hann-pulse":"0tA","@stdlib/simulate-iter-bartlett-hann-pulse":"0tB","@stdlib/simulate/iter/bartlett-pulse":"0tC","@stdlib/simulate-iter-bartlett-pulse":"0tD","@stdlib/simulate/iter/cosine-wave":"0tE","@stdlib/simulate-iter-cosine-wave":"0tF","@stdlib/simulate/iter/dirac-comb":"0tG","@stdlib/simulate-iter-dirac-comb":"0tH","@stdlib/simulate/iter/flat-top-pulse":"0tI","@stdlib/simulate-iter-flat-top-pulse":"0tJ","@stdlib/simulate/iter/hann-pulse":"0tK","@stdlib/simulate-iter-hann-pulse":"0tL","@stdlib/simulate/iter/lanczos-pulse":"0tM","@stdlib/simulate-iter-lanczos-pulse":"0tN","@stdlib/simulate/iter":"0tO","@stdlib/simulate-iter":"0tP","@stdlib/simulate/iter/periodic-sinc":"0tQ","@stdlib/simulate-iter-periodic-sinc":"0tR","@stdlib/simulate/iter/pulse":"0tS","@stdlib/simulate-iter-pulse":"0tT","@stdlib/simulate/iter/sawtooth-wave":"0tU","@stdlib/simulate-iter-sawtooth-wave":"0tV","@stdlib/simulate/iter/sine-wave":"0tW","@stdlib/simulate-iter-sine-wave":"0tX","@stdlib/simulate/iter/square-wave":"0tY","@stdlib/simulate-iter-square-wave":"0tZ","@stdlib/simulate/iter/triangle-wave":"0ta","@stdlib/simulate-iter-triangle-wave":"0tb","@stdlib/simulate":"0td","@stdlib/stats/anova1":"0te","@stdlib/stats-anova1":"0tf","@stdlib/stats/bartlett-test":"0tg","@stdlib/stats-bartlett-test":"0th","@stdlib/stats/base/cumax":"0ti","@stdlib/stats-base-cumax":"0tj","@stdlib/stats/base/cumaxabs":"0tk","@stdlib/stats-base-cumaxabs":"0tl","@stdlib/stats/base/cumin":"0tm","@stdlib/stats-base-cumin":"0tn","@stdlib/stats/base/cuminabs":"0to","@stdlib/stats-base-cuminabs":"0tp","@stdlib/stats/base/dcumax":"0tq","@stdlib/stats-base-dcumax":"0tr","@stdlib/stats/base/dcumaxabs":"0ts","@stdlib/stats-base-dcumaxabs":"0tt","@stdlib/stats/base/dcumin":"0tu","@stdlib/stats-base-dcumin":"0tv","@stdlib/stats/base/dcuminabs":"0tw","@stdlib/stats-base-dcuminabs":"0tx","@stdlib/stats/base/dists/arcsine/cdf":"0ty","@stdlib/stats-base-dists-arcsine-cdf":"0tz","@stdlib/stats/base/dists/arcsine/ctor":"0u0","@stdlib/stats-base-dists-arcsine-ctor":"0u1","@stdlib/stats/base/dists/arcsine/entropy":"0u2","@stdlib/stats-base-dists-arcsine-entropy":"0u3","@stdlib/stats/base/dists/arcsine/kurtosis":"0u4","@stdlib/stats-base-dists-arcsine-kurtosis":"0u5","@stdlib/stats/base/dists/arcsine/logcdf":"0u6","@stdlib/stats-base-dists-arcsine-logcdf":"0u7","@stdlib/stats/base/dists/arcsine/logpdf":"0u8","@stdlib/stats-base-dists-arcsine-logpdf":"0u9","@stdlib/stats/base/dists/arcsine/mean":"0uA","@stdlib/stats-base-dists-arcsine-mean":"0uB","@stdlib/stats/base/dists/arcsine/median":"0uC","@stdlib/stats-base-dists-arcsine-median":"0uD","@stdlib/stats/base/dists/arcsine/mode":"0uE","@stdlib/stats-base-dists-arcsine-mode":"0uF","@stdlib/stats/base/dists/arcsine":"0uG","@stdlib/stats-base-dists-arcsine":"0uH","@stdlib/stats/base/dists/arcsine/pdf":"0uI","@stdlib/stats-base-dists-arcsine-pdf":"0uJ","@stdlib/stats/base/dists/arcsine/quantile":"0uK","@stdlib/stats-base-dists-arcsine-quantile":"0uL","@stdlib/stats/base/dists/arcsine/skewness":"0uM","@stdlib/stats-base-dists-arcsine-skewness":"0uN","@stdlib/stats/base/dists/arcsine/stdev":"0uO","@stdlib/stats-base-dists-arcsine-stdev":"0uP","@stdlib/stats/base/dists/arcsine/variance":"0uQ","@stdlib/stats-base-dists-arcsine-variance":"0uR","@stdlib/stats/base/dists/bernoulli/cdf":"0uS","@stdlib/stats-base-dists-bernoulli-cdf":"0uT","@stdlib/stats/base/dists/bernoulli/ctor":"0uU","@stdlib/stats-base-dists-bernoulli-ctor":"0uV","@stdlib/stats/base/dists/bernoulli/entropy":"0uW","@stdlib/stats-base-dists-bernoulli-entropy":"0uX","@stdlib/stats/base/dists/bernoulli/kurtosis":"0uY","@stdlib/stats-base-dists-bernoulli-kurtosis":"0uZ","@stdlib/stats/base/dists/bernoulli/mean":"0ua","@stdlib/stats-base-dists-bernoulli-mean":"0ub","@stdlib/stats/base/dists/bernoulli/median":"0uc","@stdlib/stats-base-dists-bernoulli-median":"0ud","@stdlib/stats/base/dists/bernoulli/mgf":"0ue","@stdlib/stats-base-dists-bernoulli-mgf":"0uf","@stdlib/stats/base/dists/bernoulli/mode":"0ug","@stdlib/stats-base-dists-bernoulli-mode":"0uh","@stdlib/stats/base/dists/bernoulli":"0ui","@stdlib/stats-base-dists-bernoulli":"0uj","@stdlib/stats/base/dists/bernoulli/pmf":"0uk","@stdlib/stats-base-dists-bernoulli-pmf":"0ul","@stdlib/stats/base/dists/bernoulli/quantile":"0um","@stdlib/stats-base-dists-bernoulli-quantile":"0un","@stdlib/stats/base/dists/bernoulli/skewness":"0uo","@stdlib/stats-base-dists-bernoulli-skewness":"0up","@stdlib/stats/base/dists/bernoulli/stdev":"0uq","@stdlib/stats-base-dists-bernoulli-stdev":"0ur","@stdlib/stats/base/dists/bernoulli/variance":"0us","@stdlib/stats-base-dists-bernoulli-variance":"0ut","@stdlib/stats/base/dists/beta/cdf":"0uu","@stdlib/stats-base-dists-beta-cdf":"0uv","@stdlib/stats/base/dists/beta/ctor":"0uw","@stdlib/stats-base-dists-beta-ctor":"0ux","@stdlib/stats/base/dists/beta/entropy":"0uy","@stdlib/stats-base-dists-beta-entropy":"0uz","@stdlib/stats/base/dists/beta/kurtosis":"0v0","@stdlib/stats-base-dists-beta-kurtosis":"0v1","@stdlib/stats/base/dists/beta/logcdf":"0v2","@stdlib/stats-base-dists-beta-logcdf":"0v3","@stdlib/stats/base/dists/beta/logpdf":"0v4","@stdlib/stats-base-dists-beta-logpdf":"0v5","@stdlib/stats/base/dists/beta/mean":"0v6","@stdlib/stats-base-dists-beta-mean":"0v7","@stdlib/stats/base/dists/beta/median":"0v8","@stdlib/stats-base-dists-beta-median":"0v9","@stdlib/stats/base/dists/beta/mgf":"0vA","@stdlib/stats-base-dists-beta-mgf":"0vB","@stdlib/stats/base/dists/beta/mode":"0vC","@stdlib/stats-base-dists-beta-mode":"0vD","@stdlib/stats/base/dists/beta":"0vE","@stdlib/stats-base-dists-beta":"0vF","@stdlib/stats/base/dists/beta/pdf":"0vG","@stdlib/stats-base-dists-beta-pdf":"0vH","@stdlib/stats/base/dists/beta/quantile":"0vI","@stdlib/stats-base-dists-beta-quantile":"0vJ","@stdlib/stats/base/dists/beta/skewness":"0vK","@stdlib/stats-base-dists-beta-skewness":"0vL","@stdlib/stats/base/dists/beta/stdev":"0vM","@stdlib/stats-base-dists-beta-stdev":"0vN","@stdlib/stats/base/dists/beta/variance":"0vO","@stdlib/stats-base-dists-beta-variance":"0vP","@stdlib/stats/base/dists/betaprime/cdf":"0vQ","@stdlib/stats-base-dists-betaprime-cdf":"0vR","@stdlib/stats/base/dists/betaprime/ctor":"0vS","@stdlib/stats-base-dists-betaprime-ctor":"0vT","@stdlib/stats/base/dists/betaprime/kurtosis":"0vU","@stdlib/stats-base-dists-betaprime-kurtosis":"0vV","@stdlib/stats/base/dists/betaprime/logcdf":"0vW","@stdlib/stats-base-dists-betaprime-logcdf":"0vX","@stdlib/stats/base/dists/betaprime/logpdf":"0vY","@stdlib/stats-base-dists-betaprime-logpdf":"0vZ","@stdlib/stats/base/dists/betaprime/mean":"0va","@stdlib/stats-base-dists-betaprime-mean":"0vb","@stdlib/stats/base/dists/betaprime/mode":"0vc","@stdlib/stats-base-dists-betaprime-mode":"0vd","@stdlib/stats/base/dists/betaprime":"0ve","@stdlib/stats-base-dists-betaprime":"0vf","@stdlib/stats/base/dists/betaprime/pdf":"0vg","@stdlib/stats-base-dists-betaprime-pdf":"0vh","@stdlib/stats/base/dists/betaprime/quantile":"0vi","@stdlib/stats-base-dists-betaprime-quantile":"0vj","@stdlib/stats/base/dists/betaprime/skewness":"0vk","@stdlib/stats-base-dists-betaprime-skewness":"0vl","@stdlib/stats/base/dists/betaprime/stdev":"0vm","@stdlib/stats-base-dists-betaprime-stdev":"0vn","@stdlib/stats/base/dists/betaprime/variance":"0vo","@stdlib/stats-base-dists-betaprime-variance":"0vp","@stdlib/stats/base/dists/binomial/cdf":"0vq","@stdlib/stats-base-dists-binomial-cdf":"0vr","@stdlib/stats/base/dists/binomial/ctor":"0vs","@stdlib/stats-base-dists-binomial-ctor":"0vt","@stdlib/stats/base/dists/binomial/entropy":"0vu","@stdlib/stats-base-dists-binomial-entropy":"0vv","@stdlib/stats/base/dists/binomial/kurtosis":"0vw","@stdlib/stats-base-dists-binomial-kurtosis":"0vx","@stdlib/stats/base/dists/binomial/logpmf":"0vy","@stdlib/stats-base-dists-binomial-logpmf":"0vz","@stdlib/stats/base/dists/binomial/mean":"0w0","@stdlib/stats-base-dists-binomial-mean":"0w1","@stdlib/stats/base/dists/binomial/median":"0w2","@stdlib/stats-base-dists-binomial-median":"0w3","@stdlib/stats/base/dists/binomial/mgf":"0w4","@stdlib/stats-base-dists-binomial-mgf":"0w5","@stdlib/stats/base/dists/binomial/mode":"0w6","@stdlib/stats-base-dists-binomial-mode":"0w7","@stdlib/stats/base/dists/binomial":"0w8","@stdlib/stats-base-dists-binomial":"0w9","@stdlib/stats/base/dists/binomial/pmf":"0wA","@stdlib/stats-base-dists-binomial-pmf":"0wB","@stdlib/stats/base/dists/binomial/quantile":"0wC","@stdlib/stats-base-dists-binomial-quantile":"0wD","@stdlib/stats/base/dists/binomial/skewness":"0wE","@stdlib/stats-base-dists-binomial-skewness":"0wF","@stdlib/stats/base/dists/binomial/stdev":"0wG","@stdlib/stats-base-dists-binomial-stdev":"0wH","@stdlib/stats/base/dists/binomial/variance":"0wI","@stdlib/stats-base-dists-binomial-variance":"0wJ","@stdlib/stats/base/dists/cauchy/cdf":"0wK","@stdlib/stats-base-dists-cauchy-cdf":"0wL","@stdlib/stats/base/dists/cauchy/ctor":"0wM","@stdlib/stats-base-dists-cauchy-ctor":"0wN","@stdlib/stats/base/dists/cauchy/entropy":"0wO","@stdlib/stats-base-dists-cauchy-entropy":"0wP","@stdlib/stats/base/dists/cauchy/logcdf":"0wQ","@stdlib/stats-base-dists-cauchy-logcdf":"0wR","@stdlib/stats/base/dists/cauchy/logpdf":"0wS","@stdlib/stats-base-dists-cauchy-logpdf":"0wT","@stdlib/stats/base/dists/cauchy/median":"0wU","@stdlib/stats-base-dists-cauchy-median":"0wV","@stdlib/stats/base/dists/cauchy/mode":"0wW","@stdlib/stats-base-dists-cauchy-mode":"0wX","@stdlib/stats/base/dists/cauchy":"0wY","@stdlib/stats-base-dists-cauchy":"0wZ","@stdlib/stats/base/dists/cauchy/pdf":"0wa","@stdlib/stats-base-dists-cauchy-pdf":"0wb","@stdlib/stats/base/dists/cauchy/quantile":"0wc","@stdlib/stats-base-dists-cauchy-quantile":"0wd","@stdlib/stats/base/dists/chi/cdf":"0we","@stdlib/stats-base-dists-chi-cdf":"0wf","@stdlib/stats/base/dists/chi/ctor":"0wg","@stdlib/stats-base-dists-chi-ctor":"0wh","@stdlib/stats/base/dists/chi/entropy":"0wi","@stdlib/stats-base-dists-chi-entropy":"0wj","@stdlib/stats/base/dists/chi/kurtosis":"0wk","@stdlib/stats-base-dists-chi-kurtosis":"0wl","@stdlib/stats/base/dists/chi/logpdf":"0wm","@stdlib/stats-base-dists-chi-logpdf":"0wn","@stdlib/stats/base/dists/chi/mean":"0wo","@stdlib/stats-base-dists-chi-mean":"0wp","@stdlib/stats/base/dists/chi/mode":"0wq","@stdlib/stats-base-dists-chi-mode":"0wr","@stdlib/stats/base/dists/chi":"0ws","@stdlib/stats-base-dists-chi":"0wt","@stdlib/stats/base/dists/chi/pdf":"0wu","@stdlib/stats-base-dists-chi-pdf":"0wv","@stdlib/stats/base/dists/chi/quantile":"0ww","@stdlib/stats-base-dists-chi-quantile":"0wx","@stdlib/stats/base/dists/chi/skewness":"0wy","@stdlib/stats-base-dists-chi-skewness":"0wz","@stdlib/stats/base/dists/chi/stdev":"0x0","@stdlib/stats-base-dists-chi-stdev":"0x1","@stdlib/stats/base/dists/chi/variance":"0x2","@stdlib/stats-base-dists-chi-variance":"0x3","@stdlib/stats/base/dists/chisquare/cdf":"0x4","@stdlib/stats-base-dists-chisquare-cdf":"0x5","@stdlib/stats/base/dists/chisquare/ctor":"0x6","@stdlib/stats-base-dists-chisquare-ctor":"0x7","@stdlib/stats/base/dists/chisquare/entropy":"0x8","@stdlib/stats-base-dists-chisquare-entropy":"0x9","@stdlib/stats/base/dists/chisquare/kurtosis":"0xA","@stdlib/stats-base-dists-chisquare-kurtosis":"0xB","@stdlib/stats/base/dists/chisquare/logpdf":"0xC","@stdlib/stats-base-dists-chisquare-logpdf":"0xD","@stdlib/stats/base/dists/chisquare/mean":"0xE","@stdlib/stats-base-dists-chisquare-mean":"0xF","@stdlib/stats/base/dists/chisquare/median":"0xG","@stdlib/stats-base-dists-chisquare-median":"0xH","@stdlib/stats/base/dists/chisquare/mgf":"0xI","@stdlib/stats-base-dists-chisquare-mgf":"0xJ","@stdlib/stats/base/dists/chisquare/mode":"0xK","@stdlib/stats-base-dists-chisquare-mode":"0xL","@stdlib/stats/base/dists/chisquare":"0xM","@stdlib/stats-base-dists-chisquare":"0xN","@stdlib/stats/base/dists/chisquare/pdf":"0xO","@stdlib/stats-base-dists-chisquare-pdf":"0xP","@stdlib/stats/base/dists/chisquare/quantile":"0xQ","@stdlib/stats-base-dists-chisquare-quantile":"0xR","@stdlib/stats/base/dists/chisquare/skewness":"0xS","@stdlib/stats-base-dists-chisquare-skewness":"0xT","@stdlib/stats/base/dists/chisquare/stdev":"0xU","@stdlib/stats-base-dists-chisquare-stdev":"0xV","@stdlib/stats/base/dists/chisquare/variance":"0xW","@stdlib/stats-base-dists-chisquare-variance":"0xX","@stdlib/stats/base/dists/cosine/cdf":"0xY","@stdlib/stats-base-dists-cosine-cdf":"0xZ","@stdlib/stats/base/dists/cosine/ctor":"0xa","@stdlib/stats-base-dists-cosine-ctor":"0xb","@stdlib/stats/base/dists/cosine/kurtosis":"0xc","@stdlib/stats-base-dists-cosine-kurtosis":"0xd","@stdlib/stats/base/dists/cosine/logcdf":"0xe","@stdlib/stats-base-dists-cosine-logcdf":"0xf","@stdlib/stats/base/dists/cosine/logpdf":"0xg","@stdlib/stats-base-dists-cosine-logpdf":"0xh","@stdlib/stats/base/dists/cosine/mean":"0xi","@stdlib/stats-base-dists-cosine-mean":"0xj","@stdlib/stats/base/dists/cosine/median":"0xk","@stdlib/stats-base-dists-cosine-median":"0xl","@stdlib/stats/base/dists/cosine/mgf":"0xm","@stdlib/stats-base-dists-cosine-mgf":"0xn","@stdlib/stats/base/dists/cosine/mode":"0xo","@stdlib/stats-base-dists-cosine-mode":"0xp","@stdlib/stats/base/dists/cosine":"0xq","@stdlib/stats-base-dists-cosine":"0xr","@stdlib/stats/base/dists/cosine/pdf":"0xs","@stdlib/stats-base-dists-cosine-pdf":"0xt","@stdlib/stats/base/dists/cosine/quantile":"0xu","@stdlib/stats-base-dists-cosine-quantile":"0xv","@stdlib/stats/base/dists/cosine/skewness":"0xw","@stdlib/stats-base-dists-cosine-skewness":"0xx","@stdlib/stats/base/dists/cosine/stdev":"0xy","@stdlib/stats-base-dists-cosine-stdev":"0xz","@stdlib/stats/base/dists/cosine/variance":"0y0","@stdlib/stats-base-dists-cosine-variance":"0y1","@stdlib/stats/base/dists/degenerate/cdf":"0y2","@stdlib/stats-base-dists-degenerate-cdf":"0y3","@stdlib/stats/base/dists/degenerate/ctor":"0y4","@stdlib/stats-base-dists-degenerate-ctor":"0y5","@stdlib/stats/base/dists/degenerate/entropy":"0y6","@stdlib/stats-base-dists-degenerate-entropy":"0y7","@stdlib/stats/base/dists/degenerate/logcdf":"0y8","@stdlib/stats-base-dists-degenerate-logcdf":"0y9","@stdlib/stats/base/dists/degenerate/logpdf":"0yA","@stdlib/stats-base-dists-degenerate-logpdf":"0yB","@stdlib/stats/base/dists/degenerate/logpmf":"0yC","@stdlib/stats-base-dists-degenerate-logpmf":"0yD","@stdlib/stats/base/dists/degenerate/mean":"0yE","@stdlib/stats-base-dists-degenerate-mean":"0yF","@stdlib/stats/base/dists/degenerate/median":"0yG","@stdlib/stats-base-dists-degenerate-median":"0yH","@stdlib/stats/base/dists/degenerate/mgf":"0yI","@stdlib/stats-base-dists-degenerate-mgf":"0yJ","@stdlib/stats/base/dists/degenerate/mode":"0yK","@stdlib/stats-base-dists-degenerate-mode":"0yL","@stdlib/stats/base/dists/degenerate":"0yM","@stdlib/stats-base-dists-degenerate":"0yN","@stdlib/stats/base/dists/degenerate/pdf":"0yO","@stdlib/stats-base-dists-degenerate-pdf":"0yP","@stdlib/stats/base/dists/degenerate/pmf":"0yQ","@stdlib/stats-base-dists-degenerate-pmf":"0yR","@stdlib/stats/base/dists/degenerate/quantile":"0yS","@stdlib/stats-base-dists-degenerate-quantile":"0yT","@stdlib/stats/base/dists/degenerate/stdev":"0yU","@stdlib/stats-base-dists-degenerate-stdev":"0yV","@stdlib/stats/base/dists/degenerate/variance":"0yW","@stdlib/stats-base-dists-degenerate-variance":"0yX","@stdlib/stats/base/dists/discrete-uniform/cdf":"0yY","@stdlib/stats-base-dists-discrete-uniform-cdf":"0yZ","@stdlib/stats/base/dists/discrete-uniform/ctor":"0ya","@stdlib/stats-base-dists-discrete-uniform-ctor":"0yb","@stdlib/stats/base/dists/discrete-uniform/entropy":"0yc","@stdlib/stats-base-dists-discrete-uniform-entropy":"0yd","@stdlib/stats/base/dists/discrete-uniform/kurtosis":"0ye","@stdlib/stats-base-dists-discrete-uniform-kurtosis":"0yf","@stdlib/stats/base/dists/discrete-uniform/logcdf":"0yg","@stdlib/stats-base-dists-discrete-uniform-logcdf":"0yh","@stdlib/stats/base/dists/discrete-uniform/logpmf":"0yi","@stdlib/stats-base-dists-discrete-uniform-logpmf":"0yj","@stdlib/stats/base/dists/discrete-uniform/mean":"0yk","@stdlib/stats-base-dists-discrete-uniform-mean":"0yl","@stdlib/stats/base/dists/discrete-uniform/median":"0ym","@stdlib/stats-base-dists-discrete-uniform-median":"0yn","@stdlib/stats/base/dists/discrete-uniform/mgf":"0yo","@stdlib/stats-base-dists-discrete-uniform-mgf":"0yp","@stdlib/stats/base/dists/discrete-uniform":"0yq","@stdlib/stats-base-dists-discrete-uniform":"0yr","@stdlib/stats/base/dists/discrete-uniform/pmf":"0ys","@stdlib/stats-base-dists-discrete-uniform-pmf":"0yt","@stdlib/stats/base/dists/discrete-uniform/quantile":"0yu","@stdlib/stats-base-dists-discrete-uniform-quantile":"0yv","@stdlib/stats/base/dists/discrete-uniform/skewness":"0yw","@stdlib/stats-base-dists-discrete-uniform-skewness":"0yx","@stdlib/stats/base/dists/discrete-uniform/stdev":"0yy","@stdlib/stats-base-dists-discrete-uniform-stdev":"0yz","@stdlib/stats/base/dists/discrete-uniform/variance":"0z0","@stdlib/stats-base-dists-discrete-uniform-variance":"0z1","@stdlib/stats/base/dists/erlang/cdf":"0z2","@stdlib/stats-base-dists-erlang-cdf":"0z3","@stdlib/stats/base/dists/erlang/ctor":"0z4","@stdlib/stats-base-dists-erlang-ctor":"0z5","@stdlib/stats/base/dists/erlang/entropy":"0z6","@stdlib/stats-base-dists-erlang-entropy":"0z7","@stdlib/stats/base/dists/erlang/kurtosis":"0z8","@stdlib/stats-base-dists-erlang-kurtosis":"0z9","@stdlib/stats/base/dists/erlang/logpdf":"0zA","@stdlib/stats-base-dists-erlang-logpdf":"0zB","@stdlib/stats/base/dists/erlang/mean":"0zC","@stdlib/stats-base-dists-erlang-mean":"0zD","@stdlib/stats/base/dists/erlang/mgf":"0zE","@stdlib/stats-base-dists-erlang-mgf":"0zF","@stdlib/stats/base/dists/erlang/mode":"0zG","@stdlib/stats-base-dists-erlang-mode":"0zH","@stdlib/stats/base/dists/erlang":"0zI","@stdlib/stats-base-dists-erlang":"0zJ","@stdlib/stats/base/dists/erlang/pdf":"0zK","@stdlib/stats-base-dists-erlang-pdf":"0zL","@stdlib/stats/base/dists/erlang/quantile":"0zM","@stdlib/stats-base-dists-erlang-quantile":"0zN","@stdlib/stats/base/dists/erlang/skewness":"0zO","@stdlib/stats-base-dists-erlang-skewness":"0zP","@stdlib/stats/base/dists/erlang/stdev":"0zQ","@stdlib/stats-base-dists-erlang-stdev":"0zR","@stdlib/stats/base/dists/erlang/variance":"0zS","@stdlib/stats-base-dists-erlang-variance":"0zT","@stdlib/stats/base/dists/exponential/cdf":"0zU","@stdlib/stats-base-dists-exponential-cdf":"0zV","@stdlib/stats/base/dists/exponential/ctor":"0zW","@stdlib/stats-base-dists-exponential-ctor":"0zX","@stdlib/stats/base/dists/exponential/entropy":"0zY","@stdlib/stats-base-dists-exponential-entropy":"0zZ","@stdlib/stats/base/dists/exponential/kurtosis":"0za","@stdlib/stats-base-dists-exponential-kurtosis":"0zb","@stdlib/stats/base/dists/exponential/logcdf":"0zc","@stdlib/stats-base-dists-exponential-logcdf":"0zd","@stdlib/stats/base/dists/exponential/logpdf":"0ze","@stdlib/stats-base-dists-exponential-logpdf":"0zf","@stdlib/stats/base/dists/exponential/mean":"0zg","@stdlib/stats-base-dists-exponential-mean":"0zh","@stdlib/stats/base/dists/exponential/median":"0zi","@stdlib/stats-base-dists-exponential-median":"0zj","@stdlib/stats/base/dists/exponential/mgf":"0zk","@stdlib/stats-base-dists-exponential-mgf":"0zl","@stdlib/stats/base/dists/exponential/mode":"0zm","@stdlib/stats-base-dists-exponential-mode":"0zn","@stdlib/stats/base/dists/exponential":"0zo","@stdlib/stats-base-dists-exponential":"0zp","@stdlib/stats/base/dists/exponential/pdf":"0zq","@stdlib/stats-base-dists-exponential-pdf":"0zr","@stdlib/stats/base/dists/exponential/quantile":"0zs","@stdlib/stats-base-dists-exponential-quantile":"0zt","@stdlib/stats/base/dists/exponential/skewness":"0zu","@stdlib/stats-base-dists-exponential-skewness":"0zv","@stdlib/stats/base/dists/exponential/stdev":"0zw","@stdlib/stats-base-dists-exponential-stdev":"0zx","@stdlib/stats/base/dists/exponential/variance":"0zy","@stdlib/stats-base-dists-exponential-variance":"0zz","@stdlib/stats/base/dists/f/cdf":"100","@stdlib/stats-base-dists-f-cdf":"101","@stdlib/stats/base/dists/f/ctor":"102","@stdlib/stats-base-dists-f-ctor":"103","@stdlib/stats/base/dists/f/entropy":"104","@stdlib/stats-base-dists-f-entropy":"105","@stdlib/stats/base/dists/f/kurtosis":"106","@stdlib/stats-base-dists-f-kurtosis":"107","@stdlib/stats/base/dists/f/mean":"108","@stdlib/stats-base-dists-f-mean":"109","@stdlib/stats/base/dists/f/mode":"10A","@stdlib/stats-base-dists-f-mode":"10B","@stdlib/stats/base/dists/f":"10C","@stdlib/stats-base-dists-f":"10D","@stdlib/stats/base/dists/f/pdf":"10E","@stdlib/stats-base-dists-f-pdf":"10F","@stdlib/stats/base/dists/f/quantile":"10G","@stdlib/stats-base-dists-f-quantile":"10H","@stdlib/stats/base/dists/f/skewness":"10I","@stdlib/stats-base-dists-f-skewness":"10J","@stdlib/stats/base/dists/f/stdev":"10K","@stdlib/stats-base-dists-f-stdev":"10L","@stdlib/stats/base/dists/f/variance":"10M","@stdlib/stats-base-dists-f-variance":"10N","@stdlib/stats/base/dists/frechet/cdf":"10O","@stdlib/stats-base-dists-frechet-cdf":"10P","@stdlib/stats/base/dists/frechet/ctor":"10Q","@stdlib/stats-base-dists-frechet-ctor":"10R","@stdlib/stats/base/dists/frechet/entropy":"10S","@stdlib/stats-base-dists-frechet-entropy":"10T","@stdlib/stats/base/dists/frechet/kurtosis":"10U","@stdlib/stats-base-dists-frechet-kurtosis":"10V","@stdlib/stats/base/dists/frechet/logcdf":"10W","@stdlib/stats-base-dists-frechet-logcdf":"10X","@stdlib/stats/base/dists/frechet/logpdf":"10Y","@stdlib/stats-base-dists-frechet-logpdf":"10Z","@stdlib/stats/base/dists/frechet/mean":"10a","@stdlib/stats-base-dists-frechet-mean":"10b","@stdlib/stats/base/dists/frechet/median":"10c","@stdlib/stats-base-dists-frechet-median":"10d","@stdlib/stats/base/dists/frechet/mode":"10e","@stdlib/stats-base-dists-frechet-mode":"10f","@stdlib/stats/base/dists/frechet":"10g","@stdlib/stats-base-dists-frechet":"10h","@stdlib/stats/base/dists/frechet/pdf":"10i","@stdlib/stats-base-dists-frechet-pdf":"10j","@stdlib/stats/base/dists/frechet/quantile":"10k","@stdlib/stats-base-dists-frechet-quantile":"10l","@stdlib/stats/base/dists/frechet/skewness":"10m","@stdlib/stats-base-dists-frechet-skewness":"10n","@stdlib/stats/base/dists/frechet/stdev":"10o","@stdlib/stats-base-dists-frechet-stdev":"10p","@stdlib/stats/base/dists/frechet/variance":"10q","@stdlib/stats-base-dists-frechet-variance":"10r","@stdlib/stats/base/dists/gamma/cdf":"10s","@stdlib/stats-base-dists-gamma-cdf":"10t","@stdlib/stats/base/dists/gamma/ctor":"10u","@stdlib/stats-base-dists-gamma-ctor":"10v","@stdlib/stats/base/dists/gamma/entropy":"10w","@stdlib/stats-base-dists-gamma-entropy":"10x","@stdlib/stats/base/dists/gamma/kurtosis":"10y","@stdlib/stats-base-dists-gamma-kurtosis":"10z","@stdlib/stats/base/dists/gamma/logcdf":"110","@stdlib/stats-base-dists-gamma-logcdf":"111","@stdlib/stats/base/dists/gamma/logpdf":"112","@stdlib/stats-base-dists-gamma-logpdf":"113","@stdlib/stats/base/dists/gamma/mean":"114","@stdlib/stats-base-dists-gamma-mean":"115","@stdlib/stats/base/dists/gamma/mgf":"116","@stdlib/stats-base-dists-gamma-mgf":"117","@stdlib/stats/base/dists/gamma/mode":"118","@stdlib/stats-base-dists-gamma-mode":"119","@stdlib/stats/base/dists/gamma":"11A","@stdlib/stats-base-dists-gamma":"11B","@stdlib/stats/base/dists/gamma/pdf":"11C","@stdlib/stats-base-dists-gamma-pdf":"11D","@stdlib/stats/base/dists/gamma/quantile":"11E","@stdlib/stats-base-dists-gamma-quantile":"11F","@stdlib/stats/base/dists/gamma/skewness":"11G","@stdlib/stats-base-dists-gamma-skewness":"11H","@stdlib/stats/base/dists/gamma/stdev":"11I","@stdlib/stats-base-dists-gamma-stdev":"11J","@stdlib/stats/base/dists/gamma/variance":"11K","@stdlib/stats-base-dists-gamma-variance":"11L","@stdlib/stats/base/dists/geometric/cdf":"11M","@stdlib/stats-base-dists-geometric-cdf":"11N","@stdlib/stats/base/dists/geometric/ctor":"11O","@stdlib/stats-base-dists-geometric-ctor":"11P","@stdlib/stats/base/dists/geometric/entropy":"11Q","@stdlib/stats-base-dists-geometric-entropy":"11R","@stdlib/stats/base/dists/geometric/kurtosis":"11S","@stdlib/stats-base-dists-geometric-kurtosis":"11T","@stdlib/stats/base/dists/geometric/logcdf":"11U","@stdlib/stats-base-dists-geometric-logcdf":"11V","@stdlib/stats/base/dists/geometric/logpmf":"11W","@stdlib/stats-base-dists-geometric-logpmf":"11X","@stdlib/stats/base/dists/geometric/mean":"11Y","@stdlib/stats-base-dists-geometric-mean":"11Z","@stdlib/stats/base/dists/geometric/median":"11a","@stdlib/stats-base-dists-geometric-median":"11b","@stdlib/stats/base/dists/geometric/mgf":"11c","@stdlib/stats-base-dists-geometric-mgf":"11d","@stdlib/stats/base/dists/geometric/mode":"11e","@stdlib/stats-base-dists-geometric-mode":"11f","@stdlib/stats/base/dists/geometric":"11g","@stdlib/stats-base-dists-geometric":"11h","@stdlib/stats/base/dists/geometric/pmf":"11i","@stdlib/stats-base-dists-geometric-pmf":"11j","@stdlib/stats/base/dists/geometric/quantile":"11k","@stdlib/stats-base-dists-geometric-quantile":"11l","@stdlib/stats/base/dists/geometric/skewness":"11m","@stdlib/stats-base-dists-geometric-skewness":"11n","@stdlib/stats/base/dists/geometric/stdev":"11o","@stdlib/stats-base-dists-geometric-stdev":"11p","@stdlib/stats/base/dists/geometric/variance":"11q","@stdlib/stats-base-dists-geometric-variance":"11r","@stdlib/stats/base/dists/gumbel/cdf":"11s","@stdlib/stats-base-dists-gumbel-cdf":"11t","@stdlib/stats/base/dists/gumbel/ctor":"11u","@stdlib/stats-base-dists-gumbel-ctor":"11v","@stdlib/stats/base/dists/gumbel/entropy":"11w","@stdlib/stats-base-dists-gumbel-entropy":"11x","@stdlib/stats/base/dists/gumbel/kurtosis":"11y","@stdlib/stats-base-dists-gumbel-kurtosis":"11z","@stdlib/stats/base/dists/gumbel/logcdf":"120","@stdlib/stats-base-dists-gumbel-logcdf":"121","@stdlib/stats/base/dists/gumbel/logpdf":"122","@stdlib/stats-base-dists-gumbel-logpdf":"123","@stdlib/stats/base/dists/gumbel/mean":"124","@stdlib/stats-base-dists-gumbel-mean":"125","@stdlib/stats/base/dists/gumbel/median":"126","@stdlib/stats-base-dists-gumbel-median":"127","@stdlib/stats/base/dists/gumbel/mgf":"128","@stdlib/stats-base-dists-gumbel-mgf":"129","@stdlib/stats/base/dists/gumbel/mode":"12A","@stdlib/stats-base-dists-gumbel-mode":"12B","@stdlib/stats/base/dists/gumbel":"12C","@stdlib/stats-base-dists-gumbel":"12D","@stdlib/stats/base/dists/gumbel/pdf":"12E","@stdlib/stats-base-dists-gumbel-pdf":"12F","@stdlib/stats/base/dists/gumbel/quantile":"12G","@stdlib/stats-base-dists-gumbel-quantile":"12H","@stdlib/stats/base/dists/gumbel/skewness":"12I","@stdlib/stats-base-dists-gumbel-skewness":"12J","@stdlib/stats/base/dists/gumbel/stdev":"12K","@stdlib/stats-base-dists-gumbel-stdev":"12L","@stdlib/stats/base/dists/gumbel/variance":"12M","@stdlib/stats-base-dists-gumbel-variance":"12N","@stdlib/stats/base/dists/hypergeometric/cdf":"12O","@stdlib/stats-base-dists-hypergeometric-cdf":"12P","@stdlib/stats/base/dists/hypergeometric/ctor":"12Q","@stdlib/stats-base-dists-hypergeometric-ctor":"12R","@stdlib/stats/base/dists/hypergeometric/kurtosis":"12S","@stdlib/stats-base-dists-hypergeometric-kurtosis":"12T","@stdlib/stats/base/dists/hypergeometric/logpmf":"12U","@stdlib/stats-base-dists-hypergeometric-logpmf":"12V","@stdlib/stats/base/dists/hypergeometric/mean":"12W","@stdlib/stats-base-dists-hypergeometric-mean":"12X","@stdlib/stats/base/dists/hypergeometric/mode":"12Y","@stdlib/stats-base-dists-hypergeometric-mode":"12Z","@stdlib/stats/base/dists/hypergeometric":"12a","@stdlib/stats-base-dists-hypergeometric":"12b","@stdlib/stats/base/dists/hypergeometric/pmf":"12c","@stdlib/stats-base-dists-hypergeometric-pmf":"12d","@stdlib/stats/base/dists/hypergeometric/quantile":"12e","@stdlib/stats-base-dists-hypergeometric-quantile":"12f","@stdlib/stats/base/dists/hypergeometric/skewness":"12g","@stdlib/stats-base-dists-hypergeometric-skewness":"12h","@stdlib/stats/base/dists/hypergeometric/stdev":"12i","@stdlib/stats-base-dists-hypergeometric-stdev":"12j","@stdlib/stats/base/dists/hypergeometric/variance":"12k","@stdlib/stats-base-dists-hypergeometric-variance":"12l","@stdlib/stats/base/dists/invgamma/cdf":"12m","@stdlib/stats-base-dists-invgamma-cdf":"12n","@stdlib/stats/base/dists/invgamma/ctor":"12o","@stdlib/stats-base-dists-invgamma-ctor":"12p","@stdlib/stats/base/dists/invgamma/entropy":"12q","@stdlib/stats-base-dists-invgamma-entropy":"12r","@stdlib/stats/base/dists/invgamma/kurtosis":"12s","@stdlib/stats-base-dists-invgamma-kurtosis":"12t","@stdlib/stats/base/dists/invgamma/logpdf":"12u","@stdlib/stats-base-dists-invgamma-logpdf":"12v","@stdlib/stats/base/dists/invgamma/mean":"12w","@stdlib/stats-base-dists-invgamma-mean":"12x","@stdlib/stats/base/dists/invgamma/mode":"12y","@stdlib/stats-base-dists-invgamma-mode":"12z","@stdlib/stats/base/dists/invgamma":"130","@stdlib/stats-base-dists-invgamma":"131","@stdlib/stats/base/dists/invgamma/pdf":"132","@stdlib/stats-base-dists-invgamma-pdf":"133","@stdlib/stats/base/dists/invgamma/quantile":"134","@stdlib/stats-base-dists-invgamma-quantile":"135","@stdlib/stats/base/dists/invgamma/skewness":"136","@stdlib/stats-base-dists-invgamma-skewness":"137","@stdlib/stats/base/dists/invgamma/stdev":"138","@stdlib/stats-base-dists-invgamma-stdev":"139","@stdlib/stats/base/dists/invgamma/variance":"13A","@stdlib/stats-base-dists-invgamma-variance":"13B","@stdlib/stats/base/dists/kumaraswamy/cdf":"13C","@stdlib/stats-base-dists-kumaraswamy-cdf":"13D","@stdlib/stats/base/dists/kumaraswamy/ctor":"13E","@stdlib/stats-base-dists-kumaraswamy-ctor":"13F","@stdlib/stats/base/dists/kumaraswamy/kurtosis":"13G","@stdlib/stats-base-dists-kumaraswamy-kurtosis":"13H","@stdlib/stats/base/dists/kumaraswamy/logcdf":"13I","@stdlib/stats-base-dists-kumaraswamy-logcdf":"13J","@stdlib/stats/base/dists/kumaraswamy/logpdf":"13K","@stdlib/stats-base-dists-kumaraswamy-logpdf":"13L","@stdlib/stats/base/dists/kumaraswamy/mean":"13M","@stdlib/stats-base-dists-kumaraswamy-mean":"13N","@stdlib/stats/base/dists/kumaraswamy/median":"13O","@stdlib/stats-base-dists-kumaraswamy-median":"13P","@stdlib/stats/base/dists/kumaraswamy/mode":"13Q","@stdlib/stats-base-dists-kumaraswamy-mode":"13R","@stdlib/stats/base/dists/kumaraswamy":"13S","@stdlib/stats-base-dists-kumaraswamy":"13T","@stdlib/stats/base/dists/kumaraswamy/pdf":"13U","@stdlib/stats-base-dists-kumaraswamy-pdf":"13V","@stdlib/stats/base/dists/kumaraswamy/quantile":"13W","@stdlib/stats-base-dists-kumaraswamy-quantile":"13X","@stdlib/stats/base/dists/kumaraswamy/skewness":"13Y","@stdlib/stats-base-dists-kumaraswamy-skewness":"13Z","@stdlib/stats/base/dists/kumaraswamy/stdev":"13a","@stdlib/stats-base-dists-kumaraswamy-stdev":"13b","@stdlib/stats/base/dists/kumaraswamy/variance":"13c","@stdlib/stats-base-dists-kumaraswamy-variance":"13d","@stdlib/stats/base/dists/laplace/cdf":"13e","@stdlib/stats-base-dists-laplace-cdf":"13f","@stdlib/stats/base/dists/laplace/ctor":"13g","@stdlib/stats-base-dists-laplace-ctor":"13h","@stdlib/stats/base/dists/laplace/entropy":"13i","@stdlib/stats-base-dists-laplace-entropy":"13j","@stdlib/stats/base/dists/laplace/kurtosis":"13k","@stdlib/stats-base-dists-laplace-kurtosis":"13l","@stdlib/stats/base/dists/laplace/logcdf":"13m","@stdlib/stats-base-dists-laplace-logcdf":"13n","@stdlib/stats/base/dists/laplace/logpdf":"13o","@stdlib/stats-base-dists-laplace-logpdf":"13p","@stdlib/stats/base/dists/laplace/mean":"13q","@stdlib/stats-base-dists-laplace-mean":"13r","@stdlib/stats/base/dists/laplace/median":"13s","@stdlib/stats-base-dists-laplace-median":"13t","@stdlib/stats/base/dists/laplace/mgf":"13u","@stdlib/stats-base-dists-laplace-mgf":"13v","@stdlib/stats/base/dists/laplace/mode":"13w","@stdlib/stats-base-dists-laplace-mode":"13x","@stdlib/stats/base/dists/laplace":"13y","@stdlib/stats-base-dists-laplace":"13z","@stdlib/stats/base/dists/laplace/pdf":"140","@stdlib/stats-base-dists-laplace-pdf":"141","@stdlib/stats/base/dists/laplace/quantile":"142","@stdlib/stats-base-dists-laplace-quantile":"143","@stdlib/stats/base/dists/laplace/skewness":"144","@stdlib/stats-base-dists-laplace-skewness":"145","@stdlib/stats/base/dists/laplace/stdev":"146","@stdlib/stats-base-dists-laplace-stdev":"147","@stdlib/stats/base/dists/laplace/variance":"148","@stdlib/stats-base-dists-laplace-variance":"149","@stdlib/stats/base/dists/levy/cdf":"14A","@stdlib/stats-base-dists-levy-cdf":"14B","@stdlib/stats/base/dists/levy/ctor":"14C","@stdlib/stats-base-dists-levy-ctor":"14D","@stdlib/stats/base/dists/levy/entropy":"14E","@stdlib/stats-base-dists-levy-entropy":"14F","@stdlib/stats/base/dists/levy/logcdf":"14G","@stdlib/stats-base-dists-levy-logcdf":"14H","@stdlib/stats/base/dists/levy/logpdf":"14I","@stdlib/stats-base-dists-levy-logpdf":"14J","@stdlib/stats/base/dists/levy/mean":"14K","@stdlib/stats-base-dists-levy-mean":"14L","@stdlib/stats/base/dists/levy/median":"14M","@stdlib/stats-base-dists-levy-median":"14N","@stdlib/stats/base/dists/levy/mode":"14O","@stdlib/stats-base-dists-levy-mode":"14P","@stdlib/stats/base/dists/levy":"14Q","@stdlib/stats-base-dists-levy":"14R","@stdlib/stats/base/dists/levy/pdf":"14S","@stdlib/stats-base-dists-levy-pdf":"14T","@stdlib/stats/base/dists/levy/quantile":"14U","@stdlib/stats-base-dists-levy-quantile":"14V","@stdlib/stats/base/dists/levy/stdev":"14W","@stdlib/stats-base-dists-levy-stdev":"14X","@stdlib/stats/base/dists/levy/variance":"14Y","@stdlib/stats-base-dists-levy-variance":"14Z","@stdlib/stats/base/dists/logistic/cdf":"14a","@stdlib/stats-base-dists-logistic-cdf":"14b","@stdlib/stats/base/dists/logistic/ctor":"14c","@stdlib/stats-base-dists-logistic-ctor":"14d","@stdlib/stats/base/dists/logistic/entropy":"14e","@stdlib/stats-base-dists-logistic-entropy":"14f","@stdlib/stats/base/dists/logistic/kurtosis":"14g","@stdlib/stats-base-dists-logistic-kurtosis":"14h","@stdlib/stats/base/dists/logistic/logcdf":"14i","@stdlib/stats-base-dists-logistic-logcdf":"14j","@stdlib/stats/base/dists/logistic/logpdf":"14k","@stdlib/stats-base-dists-logistic-logpdf":"14l","@stdlib/stats/base/dists/logistic/mean":"14m","@stdlib/stats-base-dists-logistic-mean":"14n","@stdlib/stats/base/dists/logistic/median":"14o","@stdlib/stats-base-dists-logistic-median":"14p","@stdlib/stats/base/dists/logistic/mgf":"14q","@stdlib/stats-base-dists-logistic-mgf":"14r","@stdlib/stats/base/dists/logistic/mode":"14s","@stdlib/stats-base-dists-logistic-mode":"14t","@stdlib/stats/base/dists/logistic":"14u","@stdlib/stats-base-dists-logistic":"14v","@stdlib/stats/base/dists/logistic/pdf":"14w","@stdlib/stats-base-dists-logistic-pdf":"14x","@stdlib/stats/base/dists/logistic/quantile":"14y","@stdlib/stats-base-dists-logistic-quantile":"14z","@stdlib/stats/base/dists/logistic/skewness":"150","@stdlib/stats-base-dists-logistic-skewness":"151","@stdlib/stats/base/dists/logistic/stdev":"152","@stdlib/stats-base-dists-logistic-stdev":"153","@stdlib/stats/base/dists/logistic/variance":"154","@stdlib/stats-base-dists-logistic-variance":"155","@stdlib/stats/base/dists/lognormal/cdf":"156","@stdlib/stats-base-dists-lognormal-cdf":"157","@stdlib/stats/base/dists/lognormal/ctor":"158","@stdlib/stats-base-dists-lognormal-ctor":"159","@stdlib/stats/base/dists/lognormal/entropy":"15A","@stdlib/stats-base-dists-lognormal-entropy":"15B","@stdlib/stats/base/dists/lognormal/kurtosis":"15C","@stdlib/stats-base-dists-lognormal-kurtosis":"15D","@stdlib/stats/base/dists/lognormal/logpdf":"15E","@stdlib/stats-base-dists-lognormal-logpdf":"15F","@stdlib/stats/base/dists/lognormal/mean":"15G","@stdlib/stats-base-dists-lognormal-mean":"15H","@stdlib/stats/base/dists/lognormal/median":"15I","@stdlib/stats-base-dists-lognormal-median":"15J","@stdlib/stats/base/dists/lognormal/mode":"15K","@stdlib/stats-base-dists-lognormal-mode":"15L","@stdlib/stats/base/dists/lognormal":"15M","@stdlib/stats-base-dists-lognormal":"15N","@stdlib/stats/base/dists/lognormal/pdf":"15O","@stdlib/stats-base-dists-lognormal-pdf":"15P","@stdlib/stats/base/dists/lognormal/quantile":"15Q","@stdlib/stats-base-dists-lognormal-quantile":"15R","@stdlib/stats/base/dists/lognormal/skewness":"15S","@stdlib/stats-base-dists-lognormal-skewness":"15T","@stdlib/stats/base/dists/lognormal/stdev":"15U","@stdlib/stats-base-dists-lognormal-stdev":"15V","@stdlib/stats/base/dists/lognormal/variance":"15W","@stdlib/stats-base-dists-lognormal-variance":"15X","@stdlib/stats/base/dists/negative-binomial/cdf":"15Y","@stdlib/stats-base-dists-negative-binomial-cdf":"15Z","@stdlib/stats/base/dists/negative-binomial/ctor":"15a","@stdlib/stats-base-dists-negative-binomial-ctor":"15b","@stdlib/stats/base/dists/negative-binomial/kurtosis":"15c","@stdlib/stats-base-dists-negative-binomial-kurtosis":"15d","@stdlib/stats/base/dists/negative-binomial/logpmf":"15e","@stdlib/stats-base-dists-negative-binomial-logpmf":"15f","@stdlib/stats/base/dists/negative-binomial/mean":"15g","@stdlib/stats-base-dists-negative-binomial-mean":"15h","@stdlib/stats/base/dists/negative-binomial/mgf":"15i","@stdlib/stats-base-dists-negative-binomial-mgf":"15j","@stdlib/stats/base/dists/negative-binomial/mode":"15k","@stdlib/stats-base-dists-negative-binomial-mode":"15l","@stdlib/stats/base/dists/negative-binomial":"15m","@stdlib/stats-base-dists-negative-binomial":"15n","@stdlib/stats/base/dists/negative-binomial/pmf":"15o","@stdlib/stats-base-dists-negative-binomial-pmf":"15p","@stdlib/stats/base/dists/negative-binomial/quantile":"15q","@stdlib/stats-base-dists-negative-binomial-quantile":"15r","@stdlib/stats/base/dists/negative-binomial/skewness":"15s","@stdlib/stats-base-dists-negative-binomial-skewness":"15t","@stdlib/stats/base/dists/negative-binomial/stdev":"15u","@stdlib/stats-base-dists-negative-binomial-stdev":"15v","@stdlib/stats/base/dists/negative-binomial/variance":"15w","@stdlib/stats-base-dists-negative-binomial-variance":"15x","@stdlib/stats/base/dists/normal/cdf":"15y","@stdlib/stats-base-dists-normal-cdf":"15z","@stdlib/stats/base/dists/normal/ctor":"160","@stdlib/stats-base-dists-normal-ctor":"161","@stdlib/stats/base/dists/normal/entropy":"162","@stdlib/stats-base-dists-normal-entropy":"163","@stdlib/stats/base/dists/normal/kurtosis":"164","@stdlib/stats-base-dists-normal-kurtosis":"165","@stdlib/stats/base/dists/normal/logpdf":"166","@stdlib/stats-base-dists-normal-logpdf":"167","@stdlib/stats/base/dists/normal/mean":"168","@stdlib/stats-base-dists-normal-mean":"169","@stdlib/stats/base/dists/normal/median":"16A","@stdlib/stats-base-dists-normal-median":"16B","@stdlib/stats/base/dists/normal/mgf":"16C","@stdlib/stats-base-dists-normal-mgf":"16D","@stdlib/stats/base/dists/normal/mode":"16E","@stdlib/stats-base-dists-normal-mode":"16F","@stdlib/stats/base/dists/normal":"16G","@stdlib/stats-base-dists-normal":"16H","@stdlib/stats/base/dists/normal/pdf":"16I","@stdlib/stats-base-dists-normal-pdf":"16J","@stdlib/stats/base/dists/normal/quantile":"16K","@stdlib/stats-base-dists-normal-quantile":"16L","@stdlib/stats/base/dists/normal/skewness":"16M","@stdlib/stats-base-dists-normal-skewness":"16N","@stdlib/stats/base/dists/normal/stdev":"16O","@stdlib/stats-base-dists-normal-stdev":"16P","@stdlib/stats/base/dists/normal/variance":"16Q","@stdlib/stats-base-dists-normal-variance":"16R","@stdlib/stats/base/dists":"16S","@stdlib/stats-base-dists":"16T","@stdlib/stats/base/dists/pareto-type1/cdf":"16U","@stdlib/stats-base-dists-pareto-type1-cdf":"16V","@stdlib/stats/base/dists/pareto-type1/ctor":"16W","@stdlib/stats-base-dists-pareto-type1-ctor":"16X","@stdlib/stats/base/dists/pareto-type1/entropy":"16Y","@stdlib/stats-base-dists-pareto-type1-entropy":"16Z","@stdlib/stats/base/dists/pareto-type1/kurtosis":"16a","@stdlib/stats-base-dists-pareto-type1-kurtosis":"16b","@stdlib/stats/base/dists/pareto-type1/logcdf":"16c","@stdlib/stats-base-dists-pareto-type1-logcdf":"16d","@stdlib/stats/base/dists/pareto-type1/logpdf":"16e","@stdlib/stats-base-dists-pareto-type1-logpdf":"16f","@stdlib/stats/base/dists/pareto-type1/mean":"16g","@stdlib/stats-base-dists-pareto-type1-mean":"16h","@stdlib/stats/base/dists/pareto-type1/median":"16i","@stdlib/stats-base-dists-pareto-type1-median":"16j","@stdlib/stats/base/dists/pareto-type1/mode":"16k","@stdlib/stats-base-dists-pareto-type1-mode":"16l","@stdlib/stats/base/dists/pareto-type1":"16m","@stdlib/stats-base-dists-pareto-type1":"16n","@stdlib/stats/base/dists/pareto-type1/pdf":"16o","@stdlib/stats-base-dists-pareto-type1-pdf":"16p","@stdlib/stats/base/dists/pareto-type1/quantile":"16q","@stdlib/stats-base-dists-pareto-type1-quantile":"16r","@stdlib/stats/base/dists/pareto-type1/skewness":"16s","@stdlib/stats-base-dists-pareto-type1-skewness":"16t","@stdlib/stats/base/dists/pareto-type1/stdev":"16u","@stdlib/stats-base-dists-pareto-type1-stdev":"16v","@stdlib/stats/base/dists/pareto-type1/variance":"16w","@stdlib/stats-base-dists-pareto-type1-variance":"16x","@stdlib/stats/base/dists/poisson/cdf":"16y","@stdlib/stats-base-dists-poisson-cdf":"16z","@stdlib/stats/base/dists/poisson/ctor":"170","@stdlib/stats-base-dists-poisson-ctor":"171","@stdlib/stats/base/dists/poisson/entropy":"172","@stdlib/stats-base-dists-poisson-entropy":"173","@stdlib/stats/base/dists/poisson/kurtosis":"174","@stdlib/stats-base-dists-poisson-kurtosis":"175","@stdlib/stats/base/dists/poisson/logpmf":"176","@stdlib/stats-base-dists-poisson-logpmf":"177","@stdlib/stats/base/dists/poisson/mean":"178","@stdlib/stats-base-dists-poisson-mean":"179","@stdlib/stats/base/dists/poisson/median":"17A","@stdlib/stats-base-dists-poisson-median":"17B","@stdlib/stats/base/dists/poisson/mgf":"17C","@stdlib/stats-base-dists-poisson-mgf":"17D","@stdlib/stats/base/dists/poisson/mode":"17E","@stdlib/stats-base-dists-poisson-mode":"17F","@stdlib/stats/base/dists/poisson":"17G","@stdlib/stats-base-dists-poisson":"17H","@stdlib/stats/base/dists/poisson/pmf":"17I","@stdlib/stats-base-dists-poisson-pmf":"17J","@stdlib/stats/base/dists/poisson/quantile":"17K","@stdlib/stats-base-dists-poisson-quantile":"17L","@stdlib/stats/base/dists/poisson/skewness":"17M","@stdlib/stats-base-dists-poisson-skewness":"17N","@stdlib/stats/base/dists/poisson/stdev":"17O","@stdlib/stats-base-dists-poisson-stdev":"17P","@stdlib/stats/base/dists/poisson/variance":"17Q","@stdlib/stats-base-dists-poisson-variance":"17R","@stdlib/stats/base/dists/rayleigh/cdf":"17S","@stdlib/stats-base-dists-rayleigh-cdf":"17T","@stdlib/stats/base/dists/rayleigh/ctor":"17U","@stdlib/stats-base-dists-rayleigh-ctor":"17V","@stdlib/stats/base/dists/rayleigh/entropy":"17W","@stdlib/stats-base-dists-rayleigh-entropy":"17X","@stdlib/stats/base/dists/rayleigh/kurtosis":"17Y","@stdlib/stats-base-dists-rayleigh-kurtosis":"17Z","@stdlib/stats/base/dists/rayleigh/logcdf":"17a","@stdlib/stats-base-dists-rayleigh-logcdf":"17b","@stdlib/stats/base/dists/rayleigh/logpdf":"17c","@stdlib/stats-base-dists-rayleigh-logpdf":"17d","@stdlib/stats/base/dists/rayleigh/mean":"17e","@stdlib/stats-base-dists-rayleigh-mean":"17f","@stdlib/stats/base/dists/rayleigh/median":"17g","@stdlib/stats-base-dists-rayleigh-median":"17h","@stdlib/stats/base/dists/rayleigh/mgf":"17i","@stdlib/stats-base-dists-rayleigh-mgf":"17j","@stdlib/stats/base/dists/rayleigh/mode":"17k","@stdlib/stats-base-dists-rayleigh-mode":"17l","@stdlib/stats/base/dists/rayleigh":"17m","@stdlib/stats-base-dists-rayleigh":"17n","@stdlib/stats/base/dists/rayleigh/pdf":"17o","@stdlib/stats-base-dists-rayleigh-pdf":"17p","@stdlib/stats/base/dists/rayleigh/quantile":"17q","@stdlib/stats-base-dists-rayleigh-quantile":"17r","@stdlib/stats/base/dists/rayleigh/skewness":"17s","@stdlib/stats-base-dists-rayleigh-skewness":"17t","@stdlib/stats/base/dists/rayleigh/stdev":"17u","@stdlib/stats-base-dists-rayleigh-stdev":"17v","@stdlib/stats/base/dists/rayleigh/variance":"17w","@stdlib/stats-base-dists-rayleigh-variance":"17x","@stdlib/stats/base/dists/signrank/cdf":"17y","@stdlib/stats-base-dists-signrank-cdf":"17z","@stdlib/stats/base/dists/signrank":"180","@stdlib/stats-base-dists-signrank":"181","@stdlib/stats/base/dists/signrank/pdf":"182","@stdlib/stats-base-dists-signrank-pdf":"183","@stdlib/stats/base/dists/signrank/quantile":"184","@stdlib/stats-base-dists-signrank-quantile":"185","@stdlib/stats/base/dists/t/cdf":"186","@stdlib/stats-base-dists-t-cdf":"187","@stdlib/stats/base/dists/t/ctor":"188","@stdlib/stats-base-dists-t-ctor":"189","@stdlib/stats/base/dists/t/entropy":"18A","@stdlib/stats-base-dists-t-entropy":"18B","@stdlib/stats/base/dists/t/kurtosis":"18C","@stdlib/stats-base-dists-t-kurtosis":"18D","@stdlib/stats/base/dists/t/logcdf":"18E","@stdlib/stats-base-dists-t-logcdf":"18F","@stdlib/stats/base/dists/t/logpdf":"18G","@stdlib/stats-base-dists-t-logpdf":"18H","@stdlib/stats/base/dists/t/mean":"18I","@stdlib/stats-base-dists-t-mean":"18J","@stdlib/stats/base/dists/t/median":"18K","@stdlib/stats-base-dists-t-median":"18L","@stdlib/stats/base/dists/t/mode":"18M","@stdlib/stats-base-dists-t-mode":"18N","@stdlib/stats/base/dists/t":"18O","@stdlib/stats-base-dists-t":"18P","@stdlib/stats/base/dists/t/pdf":"18Q","@stdlib/stats-base-dists-t-pdf":"18R","@stdlib/stats/base/dists/t/quantile":"18S","@stdlib/stats-base-dists-t-quantile":"18T","@stdlib/stats/base/dists/t/skewness":"18U","@stdlib/stats-base-dists-t-skewness":"18V","@stdlib/stats/base/dists/t/stdev":"18W","@stdlib/stats-base-dists-t-stdev":"18X","@stdlib/stats/base/dists/t/variance":"18Y","@stdlib/stats-base-dists-t-variance":"18Z","@stdlib/stats/base/dists/triangular/cdf":"18a","@stdlib/stats-base-dists-triangular-cdf":"18b","@stdlib/stats/base/dists/triangular/ctor":"18c","@stdlib/stats-base-dists-triangular-ctor":"18d","@stdlib/stats/base/dists/triangular/entropy":"18e","@stdlib/stats-base-dists-triangular-entropy":"18f","@stdlib/stats/base/dists/triangular/kurtosis":"18g","@stdlib/stats-base-dists-triangular-kurtosis":"18h","@stdlib/stats/base/dists/triangular/logcdf":"18i","@stdlib/stats-base-dists-triangular-logcdf":"18j","@stdlib/stats/base/dists/triangular/logpdf":"18k","@stdlib/stats-base-dists-triangular-logpdf":"18l","@stdlib/stats/base/dists/triangular/mean":"18m","@stdlib/stats-base-dists-triangular-mean":"18n","@stdlib/stats/base/dists/triangular/median":"18o","@stdlib/stats-base-dists-triangular-median":"18p","@stdlib/stats/base/dists/triangular/mgf":"18q","@stdlib/stats-base-dists-triangular-mgf":"18r","@stdlib/stats/base/dists/triangular/mode":"18s","@stdlib/stats-base-dists-triangular-mode":"18t","@stdlib/stats/base/dists/triangular":"18u","@stdlib/stats-base-dists-triangular":"18v","@stdlib/stats/base/dists/triangular/pdf":"18w","@stdlib/stats-base-dists-triangular-pdf":"18x","@stdlib/stats/base/dists/triangular/quantile":"18y","@stdlib/stats-base-dists-triangular-quantile":"18z","@stdlib/stats/base/dists/triangular/skewness":"190","@stdlib/stats-base-dists-triangular-skewness":"191","@stdlib/stats/base/dists/triangular/stdev":"192","@stdlib/stats-base-dists-triangular-stdev":"193","@stdlib/stats/base/dists/triangular/variance":"194","@stdlib/stats-base-dists-triangular-variance":"195","@stdlib/stats/base/dists/truncated-normal":"196","@stdlib/stats-base-dists-truncated-normal":"197","@stdlib/stats/base/dists/truncated-normal/pdf":"198","@stdlib/stats-base-dists-truncated-normal-pdf":"199","@stdlib/stats/base/dists/uniform/cdf":"19A","@stdlib/stats-base-dists-uniform-cdf":"19B","@stdlib/stats/base/dists/uniform/ctor":"19C","@stdlib/stats-base-dists-uniform-ctor":"19D","@stdlib/stats/base/dists/uniform/entropy":"19E","@stdlib/stats-base-dists-uniform-entropy":"19F","@stdlib/stats/base/dists/uniform/kurtosis":"19G","@stdlib/stats-base-dists-uniform-kurtosis":"19H","@stdlib/stats/base/dists/uniform/logcdf":"19I","@stdlib/stats-base-dists-uniform-logcdf":"19J","@stdlib/stats/base/dists/uniform/logpdf":"19K","@stdlib/stats-base-dists-uniform-logpdf":"19L","@stdlib/stats/base/dists/uniform/mean":"19M","@stdlib/stats-base-dists-uniform-mean":"19N","@stdlib/stats/base/dists/uniform/median":"19O","@stdlib/stats-base-dists-uniform-median":"19P","@stdlib/stats/base/dists/uniform/mgf":"19Q","@stdlib/stats-base-dists-uniform-mgf":"19R","@stdlib/stats/base/dists/uniform":"19S","@stdlib/stats-base-dists-uniform":"19T","@stdlib/stats/base/dists/uniform/pdf":"19U","@stdlib/stats-base-dists-uniform-pdf":"19V","@stdlib/stats/base/dists/uniform/quantile":"19W","@stdlib/stats-base-dists-uniform-quantile":"19X","@stdlib/stats/base/dists/uniform/skewness":"19Y","@stdlib/stats-base-dists-uniform-skewness":"19Z","@stdlib/stats/base/dists/uniform/stdev":"19a","@stdlib/stats-base-dists-uniform-stdev":"19b","@stdlib/stats/base/dists/uniform/variance":"19c","@stdlib/stats-base-dists-uniform-variance":"19d","@stdlib/stats/base/dists/weibull/cdf":"19e","@stdlib/stats-base-dists-weibull-cdf":"19f","@stdlib/stats/base/dists/weibull/ctor":"19g","@stdlib/stats-base-dists-weibull-ctor":"19h","@stdlib/stats/base/dists/weibull/entropy":"19i","@stdlib/stats-base-dists-weibull-entropy":"19j","@stdlib/stats/base/dists/weibull/kurtosis":"19k","@stdlib/stats-base-dists-weibull-kurtosis":"19l","@stdlib/stats/base/dists/weibull/logcdf":"19m","@stdlib/stats-base-dists-weibull-logcdf":"19n","@stdlib/stats/base/dists/weibull/logpdf":"19o","@stdlib/stats-base-dists-weibull-logpdf":"19p","@stdlib/stats/base/dists/weibull/mean":"19q","@stdlib/stats-base-dists-weibull-mean":"19r","@stdlib/stats/base/dists/weibull/median":"19s","@stdlib/stats-base-dists-weibull-median":"19t","@stdlib/stats/base/dists/weibull/mgf":"19u","@stdlib/stats-base-dists-weibull-mgf":"19v","@stdlib/stats/base/dists/weibull/mode":"19w","@stdlib/stats-base-dists-weibull-mode":"19x","@stdlib/stats/base/dists/weibull":"19y","@stdlib/stats-base-dists-weibull":"19z","@stdlib/stats/base/dists/weibull/pdf":"1A0","@stdlib/stats-base-dists-weibull-pdf":"1A1","@stdlib/stats/base/dists/weibull/quantile":"1A2","@stdlib/stats-base-dists-weibull-quantile":"1A3","@stdlib/stats/base/dists/weibull/skewness":"1A4","@stdlib/stats-base-dists-weibull-skewness":"1A5","@stdlib/stats/base/dists/weibull/stdev":"1A6","@stdlib/stats-base-dists-weibull-stdev":"1A7","@stdlib/stats/base/dists/weibull/variance":"1A8","@stdlib/stats-base-dists-weibull-variance":"1A9","@stdlib/stats/base/dmax":"1AA","@stdlib/stats-base-dmax":"1AB","@stdlib/stats/base/dmaxabs":"1AC","@stdlib/stats-base-dmaxabs":"1AD","@stdlib/stats/base/dmaxabssorted":"1AE","@stdlib/stats-base-dmaxabssorted":"1AF","@stdlib/stats/base/dmaxsorted":"1AG","@stdlib/stats-base-dmaxsorted":"1AH","@stdlib/stats/base/dmean":"1AI","@stdlib/stats-base-dmean":"1AJ","@stdlib/stats/base/dmeankbn":"1AK","@stdlib/stats-base-dmeankbn":"1AL","@stdlib/stats/base/dmeankbn2":"1AM","@stdlib/stats-base-dmeankbn2":"1AN","@stdlib/stats/base/dmeanli":"1AO","@stdlib/stats-base-dmeanli":"1AP","@stdlib/stats/base/dmeanlipw":"1AQ","@stdlib/stats-base-dmeanlipw":"1AR","@stdlib/stats/base/dmeanors":"1AS","@stdlib/stats-base-dmeanors":"1AT","@stdlib/stats/base/dmeanpn":"1AU","@stdlib/stats-base-dmeanpn":"1AV","@stdlib/stats/base/dmeanpw":"1AW","@stdlib/stats-base-dmeanpw":"1AX","@stdlib/stats/base/dmeanstdev":"1AY","@stdlib/stats-base-dmeanstdev":"1AZ","@stdlib/stats/base/dmeanstdevpn":"1Aa","@stdlib/stats-base-dmeanstdevpn":"1Ab","@stdlib/stats/base/dmeanvar":"1Ac","@stdlib/stats-base-dmeanvar":"1Ad","@stdlib/stats/base/dmeanvarpn":"1Ae","@stdlib/stats-base-dmeanvarpn":"1Af","@stdlib/stats/base/dmeanwd":"1Ag","@stdlib/stats-base-dmeanwd":"1Ah","@stdlib/stats/base/dmediansorted":"1Ai","@stdlib/stats-base-dmediansorted":"1Aj","@stdlib/stats/base/dmidrange":"1Ak","@stdlib/stats-base-dmidrange":"1Al","@stdlib/stats/base/dmin":"1Am","@stdlib/stats-base-dmin":"1An","@stdlib/stats/base/dminabs":"1Ao","@stdlib/stats-base-dminabs":"1Ap","@stdlib/stats/base/dminsorted":"1Aq","@stdlib/stats-base-dminsorted":"1Ar","@stdlib/stats/base/dmskmax":"1As","@stdlib/stats-base-dmskmax":"1At","@stdlib/stats/base/dmskmin":"1Au","@stdlib/stats-base-dmskmin":"1Av","@stdlib/stats/base/dmskrange":"1Aw","@stdlib/stats-base-dmskrange":"1Ax","@stdlib/stats/base/dnanmax":"1Ay","@stdlib/stats-base-dnanmax":"1Az","@stdlib/stats/base/dnanmaxabs":"1B0","@stdlib/stats-base-dnanmaxabs":"1B1","@stdlib/stats/base/dnanmean":"1B2","@stdlib/stats-base-dnanmean":"1B3","@stdlib/stats/base/dnanmeanors":"1B4","@stdlib/stats-base-dnanmeanors":"1B5","@stdlib/stats/base/dnanmeanpn":"1B6","@stdlib/stats-base-dnanmeanpn":"1B7","@stdlib/stats/base/dnanmeanpw":"1B8","@stdlib/stats-base-dnanmeanpw":"1B9","@stdlib/stats/base/dnanmeanwd":"1BA","@stdlib/stats-base-dnanmeanwd":"1BB","@stdlib/stats/base/dnanmin":"1BC","@stdlib/stats-base-dnanmin":"1BD","@stdlib/stats/base/dnanminabs":"1BE","@stdlib/stats-base-dnanminabs":"1BF","@stdlib/stats/base/dnanmskmax":"1BG","@stdlib/stats-base-dnanmskmax":"1BH","@stdlib/stats/base/dnanmskmin":"1BI","@stdlib/stats-base-dnanmskmin":"1BJ","@stdlib/stats/base/dnanmskrange":"1BK","@stdlib/stats-base-dnanmskrange":"1BL","@stdlib/stats/base/dnanrange":"1BM","@stdlib/stats-base-dnanrange":"1BN","@stdlib/stats/base/dnanstdev":"1BO","@stdlib/stats-base-dnanstdev":"1BP","@stdlib/stats/base/dnanstdevch":"1BQ","@stdlib/stats-base-dnanstdevch":"1BR","@stdlib/stats/base/dnanstdevpn":"1BS","@stdlib/stats-base-dnanstdevpn":"1BT","@stdlib/stats/base/dnanstdevtk":"1BU","@stdlib/stats-base-dnanstdevtk":"1BV","@stdlib/stats/base/dnanstdevwd":"1BW","@stdlib/stats-base-dnanstdevwd":"1BX","@stdlib/stats/base/dnanstdevyc":"1BY","@stdlib/stats-base-dnanstdevyc":"1BZ","@stdlib/stats/base/dnanvariance":"1Ba","@stdlib/stats-base-dnanvariance":"1Bb","@stdlib/stats/base/dnanvariancech":"1Bc","@stdlib/stats-base-dnanvariancech":"1Bd","@stdlib/stats/base/dnanvariancepn":"1Be","@stdlib/stats-base-dnanvariancepn":"1Bf","@stdlib/stats/base/dnanvariancetk":"1Bg","@stdlib/stats-base-dnanvariancetk":"1Bh","@stdlib/stats/base/dnanvariancewd":"1Bi","@stdlib/stats-base-dnanvariancewd":"1Bj","@stdlib/stats/base/dnanvarianceyc":"1Bk","@stdlib/stats-base-dnanvarianceyc":"1Bl","@stdlib/stats/base/drange":"1Bm","@stdlib/stats-base-drange":"1Bn","@stdlib/stats/base/dsem":"1Bo","@stdlib/stats-base-dsem":"1Bp","@stdlib/stats/base/dsemch":"1Bq","@stdlib/stats-base-dsemch":"1Br","@stdlib/stats/base/dsempn":"1Bs","@stdlib/stats-base-dsempn":"1Bt","@stdlib/stats/base/dsemtk":"1Bu","@stdlib/stats-base-dsemtk":"1Bv","@stdlib/stats/base/dsemwd":"1Bw","@stdlib/stats-base-dsemwd":"1Bx","@stdlib/stats/base/dsemyc":"1By","@stdlib/stats-base-dsemyc":"1Bz","@stdlib/stats/base/dsmean":"1C0","@stdlib/stats-base-dsmean":"1C1","@stdlib/stats/base/dsmeanors":"1C2","@stdlib/stats-base-dsmeanors":"1C3","@stdlib/stats/base/dsmeanpn":"1C4","@stdlib/stats-base-dsmeanpn":"1C5","@stdlib/stats/base/dsmeanpw":"1C6","@stdlib/stats-base-dsmeanpw":"1C7","@stdlib/stats/base/dsmeanwd":"1C8","@stdlib/stats-base-dsmeanwd":"1C9","@stdlib/stats/base/dsnanmean":"1CA","@stdlib/stats-base-dsnanmean":"1CB","@stdlib/stats/base/dsnanmeanors":"1CC","@stdlib/stats-base-dsnanmeanors":"1CD","@stdlib/stats/base/dsnanmeanpn":"1CE","@stdlib/stats-base-dsnanmeanpn":"1CF","@stdlib/stats/base/dsnanmeanwd":"1CG","@stdlib/stats-base-dsnanmeanwd":"1CH","@stdlib/stats/base/dstdev":"1CI","@stdlib/stats-base-dstdev":"1CJ","@stdlib/stats/base/dstdevch":"1CK","@stdlib/stats-base-dstdevch":"1CL","@stdlib/stats/base/dstdevpn":"1CM","@stdlib/stats-base-dstdevpn":"1CN","@stdlib/stats/base/dstdevtk":"1CO","@stdlib/stats-base-dstdevtk":"1CP","@stdlib/stats/base/dstdevwd":"1CQ","@stdlib/stats-base-dstdevwd":"1CR","@stdlib/stats/base/dstdevyc":"1CS","@stdlib/stats-base-dstdevyc":"1CT","@stdlib/stats/base/dsvariance":"1CU","@stdlib/stats-base-dsvariance":"1CV","@stdlib/stats/base/dsvariancepn":"1CW","@stdlib/stats-base-dsvariancepn":"1CX","@stdlib/stats/base/dvariance":"1CY","@stdlib/stats-base-dvariance":"1CZ","@stdlib/stats/base/dvariancech":"1Ca","@stdlib/stats-base-dvariancech":"1Cb","@stdlib/stats/base/dvariancepn":"1Cc","@stdlib/stats-base-dvariancepn":"1Cd","@stdlib/stats/base/dvariancetk":"1Ce","@stdlib/stats-base-dvariancetk":"1Cf","@stdlib/stats/base/dvariancewd":"1Cg","@stdlib/stats-base-dvariancewd":"1Ch","@stdlib/stats/base/dvarianceyc":"1Ci","@stdlib/stats-base-dvarianceyc":"1Cj","@stdlib/stats/base/dvarm":"1Ck","@stdlib/stats-base-dvarm":"1Cl","@stdlib/stats/base/dvarmpn":"1Cm","@stdlib/stats-base-dvarmpn":"1Cn","@stdlib/stats/base/dvarmtk":"1Co","@stdlib/stats-base-dvarmtk":"1Cp","@stdlib/stats/base/max-by":"1Cq","@stdlib/stats-base-max-by":"1Cr","@stdlib/stats/base/max":"1Cs","@stdlib/stats-base-max":"1Ct","@stdlib/stats/base/maxabs":"1Cu","@stdlib/stats-base-maxabs":"1Cv","@stdlib/stats/base/maxsorted":"1Cw","@stdlib/stats-base-maxsorted":"1Cx","@stdlib/stats/base/mean":"1Cy","@stdlib/stats-base-mean":"1Cz","@stdlib/stats/base/meankbn":"1D0","@stdlib/stats-base-meankbn":"1D1","@stdlib/stats/base/meankbn2":"1D2","@stdlib/stats-base-meankbn2":"1D3","@stdlib/stats/base/meanors":"1D4","@stdlib/stats-base-meanors":"1D5","@stdlib/stats/base/meanpn":"1D6","@stdlib/stats-base-meanpn":"1D7","@stdlib/stats/base/meanpw":"1D8","@stdlib/stats-base-meanpw":"1D9","@stdlib/stats/base/meanwd":"1DA","@stdlib/stats-base-meanwd":"1DB","@stdlib/stats/base/mediansorted":"1DC","@stdlib/stats-base-mediansorted":"1DD","@stdlib/stats/base/min-by":"1DE","@stdlib/stats-base-min-by":"1DF","@stdlib/stats/base/min":"1DG","@stdlib/stats-base-min":"1DH","@stdlib/stats/base/minabs":"1DI","@stdlib/stats-base-minabs":"1DJ","@stdlib/stats/base/minsorted":"1DK","@stdlib/stats-base-minsorted":"1DL","@stdlib/stats/base/mskmax":"1DM","@stdlib/stats-base-mskmax":"1DN","@stdlib/stats/base/mskmin":"1DO","@stdlib/stats-base-mskmin":"1DP","@stdlib/stats/base/mskrange":"1DQ","@stdlib/stats-base-mskrange":"1DR","@stdlib/stats/base/nanmax-by":"1DS","@stdlib/stats-base-nanmax-by":"1DT","@stdlib/stats/base/nanmax":"1DU","@stdlib/stats-base-nanmax":"1DV","@stdlib/stats/base/nanmaxabs":"1DW","@stdlib/stats-base-nanmaxabs":"1DX","@stdlib/stats/base/nanmean":"1DY","@stdlib/stats-base-nanmean":"1DZ","@stdlib/stats/base/nanmeanors":"1Da","@stdlib/stats-base-nanmeanors":"1Db","@stdlib/stats/base/nanmeanpn":"1Dc","@stdlib/stats-base-nanmeanpn":"1Dd","@stdlib/stats/base/nanmeanwd":"1De","@stdlib/stats-base-nanmeanwd":"1Df","@stdlib/stats/base/nanmin-by":"1Dg","@stdlib/stats-base-nanmin-by":"1Dh","@stdlib/stats/base/nanmin":"1Di","@stdlib/stats-base-nanmin":"1Dj","@stdlib/stats/base/nanminabs":"1Dk","@stdlib/stats-base-nanminabs":"1Dl","@stdlib/stats/base/nanmskmax":"1Dm","@stdlib/stats-base-nanmskmax":"1Dn","@stdlib/stats/base/nanmskmin":"1Do","@stdlib/stats-base-nanmskmin":"1Dp","@stdlib/stats/base/nanmskrange":"1Dq","@stdlib/stats-base-nanmskrange":"1Dr","@stdlib/stats/base/nanrange-by":"1Ds","@stdlib/stats-base-nanrange-by":"1Dt","@stdlib/stats/base/nanrange":"1Du","@stdlib/stats-base-nanrange":"1Dv","@stdlib/stats/base/nanstdev":"1Dw","@stdlib/stats-base-nanstdev":"1Dx","@stdlib/stats/base/nanstdevch":"1Dy","@stdlib/stats-base-nanstdevch":"1Dz","@stdlib/stats/base/nanstdevpn":"1E0","@stdlib/stats-base-nanstdevpn":"1E1","@stdlib/stats/base/nanstdevtk":"1E2","@stdlib/stats-base-nanstdevtk":"1E3","@stdlib/stats/base/nanstdevwd":"1E4","@stdlib/stats-base-nanstdevwd":"1E5","@stdlib/stats/base/nanstdevyc":"1E6","@stdlib/stats-base-nanstdevyc":"1E7","@stdlib/stats/base/nanvariance":"1E8","@stdlib/stats-base-nanvariance":"1E9","@stdlib/stats/base/nanvariancech":"1EA","@stdlib/stats-base-nanvariancech":"1EB","@stdlib/stats/base/nanvariancepn":"1EC","@stdlib/stats-base-nanvariancepn":"1ED","@stdlib/stats/base/nanvariancetk":"1EE","@stdlib/stats-base-nanvariancetk":"1EF","@stdlib/stats/base/nanvariancewd":"1EG","@stdlib/stats-base-nanvariancewd":"1EH","@stdlib/stats/base/nanvarianceyc":"1EI","@stdlib/stats-base-nanvarianceyc":"1EJ","@stdlib/stats/base":"1EK","@stdlib/stats-base":"1EL","@stdlib/stats/base/range-by":"1EM","@stdlib/stats-base-range-by":"1EN","@stdlib/stats/base/range":"1EO","@stdlib/stats-base-range":"1EP","@stdlib/stats/base/scumax":"1EQ","@stdlib/stats-base-scumax":"1ER","@stdlib/stats/base/scumaxabs":"1ES","@stdlib/stats-base-scumaxabs":"1ET","@stdlib/stats/base/scumin":"1EU","@stdlib/stats-base-scumin":"1EV","@stdlib/stats/base/scuminabs":"1EW","@stdlib/stats-base-scuminabs":"1EX","@stdlib/stats/base/sdsmean":"1EY","@stdlib/stats-base-sdsmean":"1EZ","@stdlib/stats/base/sdsmeanors":"1Ea","@stdlib/stats-base-sdsmeanors":"1Eb","@stdlib/stats/base/sdsnanmean":"1Ec","@stdlib/stats-base-sdsnanmean":"1Ed","@stdlib/stats/base/sdsnanmeanors":"1Ee","@stdlib/stats-base-sdsnanmeanors":"1Ef","@stdlib/stats/base/smax":"1Eg","@stdlib/stats-base-smax":"1Eh","@stdlib/stats/base/smaxabs":"1Ei","@stdlib/stats-base-smaxabs":"1Ej","@stdlib/stats/base/smaxabssorted":"1Ek","@stdlib/stats-base-smaxabssorted":"1El","@stdlib/stats/base/smaxsorted":"1Em","@stdlib/stats-base-smaxsorted":"1En","@stdlib/stats/base/smean":"1Eo","@stdlib/stats-base-smean":"1Ep","@stdlib/stats/base/smeankbn":"1Eq","@stdlib/stats-base-smeankbn":"1Er","@stdlib/stats/base/smeankbn2":"1Es","@stdlib/stats-base-smeankbn2":"1Et","@stdlib/stats/base/smeanli":"1Eu","@stdlib/stats-base-smeanli":"1Ev","@stdlib/stats/base/smeanlipw":"1Ew","@stdlib/stats-base-smeanlipw":"1Ex","@stdlib/stats/base/smeanors":"1Ey","@stdlib/stats-base-smeanors":"1Ez","@stdlib/stats/base/smeanpn":"1F0","@stdlib/stats-base-smeanpn":"1F1","@stdlib/stats/base/smeanpw":"1F2","@stdlib/stats-base-smeanpw":"1F3","@stdlib/stats/base/smeanwd":"1F4","@stdlib/stats-base-smeanwd":"1F5","@stdlib/stats/base/smediansorted":"1F6","@stdlib/stats-base-smediansorted":"1F7","@stdlib/stats/base/smidrange":"1F8","@stdlib/stats-base-smidrange":"1F9","@stdlib/stats/base/smin":"1FA","@stdlib/stats-base-smin":"1FB","@stdlib/stats/base/sminabs":"1FC","@stdlib/stats-base-sminabs":"1FD","@stdlib/stats/base/sminsorted":"1FE","@stdlib/stats-base-sminsorted":"1FF","@stdlib/stats/base/smskmax":"1FG","@stdlib/stats-base-smskmax":"1FH","@stdlib/stats/base/smskmin":"1FI","@stdlib/stats-base-smskmin":"1FJ","@stdlib/stats/base/smskrange":"1FK","@stdlib/stats-base-smskrange":"1FL","@stdlib/stats/base/snanmax":"1FM","@stdlib/stats-base-snanmax":"1FN","@stdlib/stats/base/snanmaxabs":"1FO","@stdlib/stats-base-snanmaxabs":"1FP","@stdlib/stats/base/snanmean":"1FQ","@stdlib/stats-base-snanmean":"1FR","@stdlib/stats/base/snanmeanors":"1FS","@stdlib/stats-base-snanmeanors":"1FT","@stdlib/stats/base/snanmeanpn":"1FU","@stdlib/stats-base-snanmeanpn":"1FV","@stdlib/stats/base/snanmeanwd":"1FW","@stdlib/stats-base-snanmeanwd":"1FX","@stdlib/stats/base/snanmin":"1FY","@stdlib/stats-base-snanmin":"1FZ","@stdlib/stats/base/snanminabs":"1Fa","@stdlib/stats-base-snanminabs":"1Fb","@stdlib/stats/base/snanmskmax":"1Fc","@stdlib/stats-base-snanmskmax":"1Fd","@stdlib/stats/base/snanmskmin":"1Fe","@stdlib/stats-base-snanmskmin":"1Ff","@stdlib/stats/base/snanmskrange":"1Fg","@stdlib/stats-base-snanmskrange":"1Fh","@stdlib/stats/base/snanrange":"1Fi","@stdlib/stats-base-snanrange":"1Fj","@stdlib/stats/base/snanstdev":"1Fk","@stdlib/stats-base-snanstdev":"1Fl","@stdlib/stats/base/snanstdevch":"1Fm","@stdlib/stats-base-snanstdevch":"1Fn","@stdlib/stats/base/snanstdevpn":"1Fo","@stdlib/stats-base-snanstdevpn":"1Fp","@stdlib/stats/base/snanstdevtk":"1Fq","@stdlib/stats-base-snanstdevtk":"1Fr","@stdlib/stats/base/snanstdevwd":"1Fs","@stdlib/stats-base-snanstdevwd":"1Ft","@stdlib/stats/base/snanstdevyc":"1Fu","@stdlib/stats-base-snanstdevyc":"1Fv","@stdlib/stats/base/snanvariance":"1Fw","@stdlib/stats-base-snanvariance":"1Fx","@stdlib/stats/base/snanvariancech":"1Fy","@stdlib/stats-base-snanvariancech":"1Fz","@stdlib/stats/base/snanvariancepn":"1G0","@stdlib/stats-base-snanvariancepn":"1G1","@stdlib/stats/base/snanvariancetk":"1G2","@stdlib/stats-base-snanvariancetk":"1G3","@stdlib/stats/base/snanvariancewd":"1G4","@stdlib/stats-base-snanvariancewd":"1G5","@stdlib/stats/base/snanvarianceyc":"1G6","@stdlib/stats-base-snanvarianceyc":"1G7","@stdlib/stats/base/srange":"1G8","@stdlib/stats-base-srange":"1G9","@stdlib/stats/base/sstdev":"1GA","@stdlib/stats-base-sstdev":"1GB","@stdlib/stats/base/sstdevch":"1GC","@stdlib/stats-base-sstdevch":"1GD","@stdlib/stats/base/sstdevpn":"1GE","@stdlib/stats-base-sstdevpn":"1GF","@stdlib/stats/base/sstdevtk":"1GG","@stdlib/stats-base-sstdevtk":"1GH","@stdlib/stats/base/sstdevwd":"1GI","@stdlib/stats-base-sstdevwd":"1GJ","@stdlib/stats/base/sstdevyc":"1GK","@stdlib/stats-base-sstdevyc":"1GL","@stdlib/stats/base/stdev":"1GM","@stdlib/stats-base-stdev":"1GN","@stdlib/stats/base/stdevch":"1GO","@stdlib/stats-base-stdevch":"1GP","@stdlib/stats/base/stdevpn":"1GQ","@stdlib/stats-base-stdevpn":"1GR","@stdlib/stats/base/stdevtk":"1GS","@stdlib/stats-base-stdevtk":"1GT","@stdlib/stats/base/stdevwd":"1GU","@stdlib/stats-base-stdevwd":"1GV","@stdlib/stats/base/stdevyc":"1GW","@stdlib/stats-base-stdevyc":"1GX","@stdlib/stats/base/svariance":"1GY","@stdlib/stats-base-svariance":"1GZ","@stdlib/stats/base/svariancech":"1Ga","@stdlib/stats-base-svariancech":"1Gb","@stdlib/stats/base/svariancepn":"1Gc","@stdlib/stats-base-svariancepn":"1Gd","@stdlib/stats/base/svariancetk":"1Ge","@stdlib/stats-base-svariancetk":"1Gf","@stdlib/stats/base/svariancewd":"1Gg","@stdlib/stats-base-svariancewd":"1Gh","@stdlib/stats/base/svarianceyc":"1Gi","@stdlib/stats-base-svarianceyc":"1Gj","@stdlib/stats/base/variance":"1Gk","@stdlib/stats-base-variance":"1Gl","@stdlib/stats/base/variancech":"1Gm","@stdlib/stats-base-variancech":"1Gn","@stdlib/stats/base/variancepn":"1Go","@stdlib/stats-base-variancepn":"1Gp","@stdlib/stats/base/variancetk":"1Gq","@stdlib/stats-base-variancetk":"1Gr","@stdlib/stats/base/variancewd":"1Gs","@stdlib/stats-base-variancewd":"1Gt","@stdlib/stats/base/varianceyc":"1Gu","@stdlib/stats-base-varianceyc":"1Gv","@stdlib/stats/binomial-test":"1Gw","@stdlib/stats-binomial-test":"1Gx","@stdlib/stats/chi2gof":"1Gy","@stdlib/stats-chi2gof":"1Gz","@stdlib/stats/chi2test":"1H0","@stdlib/stats-chi2test":"1H1","@stdlib/stats/fligner-test":"1H2","@stdlib/stats-fligner-test":"1H3","@stdlib/stats/incr/apcorr":"1H4","@stdlib/stats-incr-apcorr":"1H5","@stdlib/stats/incr/count":"1H6","@stdlib/stats-incr-count":"1H7","@stdlib/stats/incr/covariance":"1H8","@stdlib/stats-incr-covariance":"1H9","@stdlib/stats/incr/covmat":"1HA","@stdlib/stats-incr-covmat":"1HB","@stdlib/stats/incr/cv":"1HC","@stdlib/stats-incr-cv":"1HD","@stdlib/stats/incr/ewmean":"1HE","@stdlib/stats-incr-ewmean":"1HF","@stdlib/stats/incr/ewstdev":"1HG","@stdlib/stats-incr-ewstdev":"1HH","@stdlib/stats/incr/ewvariance":"1HI","@stdlib/stats-incr-ewvariance":"1HJ","@stdlib/stats/incr/gmean":"1HK","@stdlib/stats-incr-gmean":"1HL","@stdlib/stats/incr/grubbs":"1HM","@stdlib/stats-incr-grubbs":"1HN","@stdlib/stats/incr/hmean":"1HO","@stdlib/stats-incr-hmean":"1HP","@stdlib/stats/incr/kurtosis":"1HQ","@stdlib/stats-incr-kurtosis":"1HR","@stdlib/stats/incr/maape":"1HS","@stdlib/stats-incr-maape":"1HT","@stdlib/stats/incr/mae":"1HU","@stdlib/stats-incr-mae":"1HV","@stdlib/stats/incr/mapcorr":"1HW","@stdlib/stats-incr-mapcorr":"1HX","@stdlib/stats/incr/mape":"1HY","@stdlib/stats-incr-mape":"1HZ","@stdlib/stats/incr/max":"1Ha","@stdlib/stats-incr-max":"1Hb","@stdlib/stats/incr/maxabs":"1Hc","@stdlib/stats-incr-maxabs":"1Hd","@stdlib/stats/incr/mcovariance":"1He","@stdlib/stats-incr-mcovariance":"1Hf","@stdlib/stats/incr/mcv":"1Hg","@stdlib/stats-incr-mcv":"1Hh","@stdlib/stats/incr/mda":"1Hi","@stdlib/stats-incr-mda":"1Hj","@stdlib/stats/incr/me":"1Hk","@stdlib/stats-incr-me":"1Hl","@stdlib/stats/incr/mean":"1Hm","@stdlib/stats-incr-mean":"1Hn","@stdlib/stats/incr/meanabs":"1Ho","@stdlib/stats-incr-meanabs":"1Hp","@stdlib/stats/incr/meanabs2":"1Hq","@stdlib/stats-incr-meanabs2":"1Hr","@stdlib/stats/incr/meanstdev":"1Hs","@stdlib/stats-incr-meanstdev":"1Ht","@stdlib/stats/incr/meanvar":"1Hu","@stdlib/stats-incr-meanvar":"1Hv","@stdlib/stats/incr/mgmean":"1Hw","@stdlib/stats-incr-mgmean":"1Hx","@stdlib/stats/incr/mgrubbs":"1Hy","@stdlib/stats-incr-mgrubbs":"1Hz","@stdlib/stats/incr/mhmean":"1I0","@stdlib/stats-incr-mhmean":"1I1","@stdlib/stats/incr/midrange":"1I2","@stdlib/stats-incr-midrange":"1I3","@stdlib/stats/incr/min":"1I4","@stdlib/stats-incr-min":"1I5","@stdlib/stats/incr/minabs":"1I6","@stdlib/stats-incr-minabs":"1I7","@stdlib/stats/incr/minmax":"1I8","@stdlib/stats-incr-minmax":"1I9","@stdlib/stats/incr/minmaxabs":"1IA","@stdlib/stats-incr-minmaxabs":"1IB","@stdlib/stats/incr/mmaape":"1IC","@stdlib/stats-incr-mmaape":"1ID","@stdlib/stats/incr/mmae":"1IE","@stdlib/stats-incr-mmae":"1IF","@stdlib/stats/incr/mmape":"1IG","@stdlib/stats-incr-mmape":"1IH","@stdlib/stats/incr/mmax":"1II","@stdlib/stats-incr-mmax":"1IJ","@stdlib/stats/incr/mmaxabs":"1IK","@stdlib/stats-incr-mmaxabs":"1IL","@stdlib/stats/incr/mmda":"1IM","@stdlib/stats-incr-mmda":"1IN","@stdlib/stats/incr/mme":"1IO","@stdlib/stats-incr-mme":"1IP","@stdlib/stats/incr/mmean":"1IQ","@stdlib/stats-incr-mmean":"1IR","@stdlib/stats/incr/mmeanabs":"1IS","@stdlib/stats-incr-mmeanabs":"1IT","@stdlib/stats/incr/mmeanabs2":"1IU","@stdlib/stats-incr-mmeanabs2":"1IV","@stdlib/stats/incr/mmeanstdev":"1IW","@stdlib/stats-incr-mmeanstdev":"1IX","@stdlib/stats/incr/mmeanvar":"1IY","@stdlib/stats-incr-mmeanvar":"1IZ","@stdlib/stats/incr/mmidrange":"1Ia","@stdlib/stats-incr-mmidrange":"1Ib","@stdlib/stats/incr/mmin":"1Ic","@stdlib/stats-incr-mmin":"1Id","@stdlib/stats/incr/mminabs":"1Ie","@stdlib/stats-incr-mminabs":"1If","@stdlib/stats/incr/mminmax":"1Ig","@stdlib/stats-incr-mminmax":"1Ih","@stdlib/stats/incr/mminmaxabs":"1Ii","@stdlib/stats-incr-mminmaxabs":"1Ij","@stdlib/stats/incr/mmpe":"1Ik","@stdlib/stats-incr-mmpe":"1Il","@stdlib/stats/incr/mmse":"1Im","@stdlib/stats-incr-mmse":"1In","@stdlib/stats/incr/mpcorr":"1Io","@stdlib/stats-incr-mpcorr":"1Ip","@stdlib/stats/incr/mpcorr2":"1Iq","@stdlib/stats-incr-mpcorr2":"1Ir","@stdlib/stats/incr/mpcorrdist":"1Is","@stdlib/stats-incr-mpcorrdist":"1It","@stdlib/stats/incr/mpe":"1Iu","@stdlib/stats-incr-mpe":"1Iv","@stdlib/stats/incr/mprod":"1Iw","@stdlib/stats-incr-mprod":"1Ix","@stdlib/stats/incr/mrange":"1Iy","@stdlib/stats-incr-mrange":"1Iz","@stdlib/stats/incr/mrmse":"1J0","@stdlib/stats-incr-mrmse":"1J1","@stdlib/stats/incr/mrss":"1J2","@stdlib/stats-incr-mrss":"1J3","@stdlib/stats/incr/mse":"1J4","@stdlib/stats-incr-mse":"1J5","@stdlib/stats/incr/mstdev":"1J6","@stdlib/stats-incr-mstdev":"1J7","@stdlib/stats/incr/msum":"1J8","@stdlib/stats-incr-msum":"1J9","@stdlib/stats/incr/msumabs":"1JA","@stdlib/stats-incr-msumabs":"1JB","@stdlib/stats/incr/msumabs2":"1JC","@stdlib/stats-incr-msumabs2":"1JD","@stdlib/stats/incr/msummary":"1JE","@stdlib/stats-incr-msummary":"1JF","@stdlib/stats/incr/msumprod":"1JG","@stdlib/stats-incr-msumprod":"1JH","@stdlib/stats/incr/mvariance":"1JI","@stdlib/stats-incr-mvariance":"1JJ","@stdlib/stats/incr/mvmr":"1JK","@stdlib/stats-incr-mvmr":"1JL","@stdlib/stats/incr/nancount":"1JM","@stdlib/stats-incr-nancount":"1JN","@stdlib/stats/incr/nansum":"1JO","@stdlib/stats-incr-nansum":"1JP","@stdlib/stats/incr/nansumabs":"1JQ","@stdlib/stats-incr-nansumabs":"1JR","@stdlib/stats/incr/nansumabs2":"1JS","@stdlib/stats-incr-nansumabs2":"1JT","@stdlib/stats/incr":"1JU","@stdlib/stats-incr":"1JV","@stdlib/stats/incr/pcorr":"1JW","@stdlib/stats-incr-pcorr":"1JX","@stdlib/stats/incr/pcorr2":"1JY","@stdlib/stats-incr-pcorr2":"1JZ","@stdlib/stats/incr/pcorrdist":"1Ja","@stdlib/stats-incr-pcorrdist":"1Jb","@stdlib/stats/incr/pcorrdistmat":"1Jc","@stdlib/stats-incr-pcorrdistmat":"1Jd","@stdlib/stats/incr/pcorrmat":"1Je","@stdlib/stats-incr-pcorrmat":"1Jf","@stdlib/stats/incr/prod":"1Jg","@stdlib/stats-incr-prod":"1Jh","@stdlib/stats/incr/range":"1Ji","@stdlib/stats-incr-range":"1Jj","@stdlib/stats/incr/rmse":"1Jk","@stdlib/stats-incr-rmse":"1Jl","@stdlib/stats/incr/rss":"1Jm","@stdlib/stats-incr-rss":"1Jn","@stdlib/stats/incr/skewness":"1Jo","@stdlib/stats-incr-skewness":"1Jp","@stdlib/stats/incr/stdev":"1Jq","@stdlib/stats-incr-stdev":"1Jr","@stdlib/stats/incr/sum":"1Js","@stdlib/stats-incr-sum":"1Jt","@stdlib/stats/incr/sumabs":"1Ju","@stdlib/stats-incr-sumabs":"1Jv","@stdlib/stats/incr/sumabs2":"1Jw","@stdlib/stats-incr-sumabs2":"1Jx","@stdlib/stats/incr/summary":"1Jy","@stdlib/stats-incr-summary":"1Jz","@stdlib/stats/incr/sumprod":"1K0","@stdlib/stats-incr-sumprod":"1K1","@stdlib/stats/incr/variance":"1K2","@stdlib/stats-incr-variance":"1K3","@stdlib/stats/incr/vmr":"1K4","@stdlib/stats-incr-vmr":"1K5","@stdlib/stats/incr/wmean":"1K6","@stdlib/stats-incr-wmean":"1K7","@stdlib/stats/iter/cugmean":"1K8","@stdlib/stats-iter-cugmean":"1K9","@stdlib/stats/iter/cuhmean":"1KA","@stdlib/stats-iter-cuhmean":"1KB","@stdlib/stats/iter/cumax":"1KC","@stdlib/stats-iter-cumax":"1KD","@stdlib/stats/iter/cumaxabs":"1KE","@stdlib/stats-iter-cumaxabs":"1KF","@stdlib/stats/iter/cumean":"1KG","@stdlib/stats-iter-cumean":"1KH","@stdlib/stats/iter/cumeanabs":"1KI","@stdlib/stats-iter-cumeanabs":"1KJ","@stdlib/stats/iter/cumeanabs2":"1KK","@stdlib/stats-iter-cumeanabs2":"1KL","@stdlib/stats/iter/cumidrange":"1KM","@stdlib/stats-iter-cumidrange":"1KN","@stdlib/stats/iter/cumin":"1KO","@stdlib/stats-iter-cumin":"1KP","@stdlib/stats/iter/cuminabs":"1KQ","@stdlib/stats-iter-cuminabs":"1KR","@stdlib/stats/iter/cuprod":"1KS","@stdlib/stats-iter-cuprod":"1KT","@stdlib/stats/iter/curange":"1KU","@stdlib/stats-iter-curange":"1KV","@stdlib/stats/iter/cusum":"1KW","@stdlib/stats-iter-cusum":"1KX","@stdlib/stats/iter/cusumabs":"1KY","@stdlib/stats-iter-cusumabs":"1KZ","@stdlib/stats/iter/cusumabs2":"1Ka","@stdlib/stats-iter-cusumabs2":"1Kb","@stdlib/stats/iter/max":"1Kc","@stdlib/stats-iter-max":"1Kd","@stdlib/stats/iter/maxabs":"1Ke","@stdlib/stats-iter-maxabs":"1Kf","@stdlib/stats/iter/mean":"1Kg","@stdlib/stats-iter-mean":"1Kh","@stdlib/stats/iter/meanabs":"1Ki","@stdlib/stats-iter-meanabs":"1Kj","@stdlib/stats/iter/meanabs2":"1Kk","@stdlib/stats-iter-meanabs2":"1Kl","@stdlib/stats/iter/midrange":"1Km","@stdlib/stats-iter-midrange":"1Kn","@stdlib/stats/iter/min":"1Ko","@stdlib/stats-iter-min":"1Kp","@stdlib/stats/iter/minabs":"1Kq","@stdlib/stats-iter-minabs":"1Kr","@stdlib/stats/iter/mmax":"1Ks","@stdlib/stats-iter-mmax":"1Kt","@stdlib/stats/iter/mmaxabs":"1Ku","@stdlib/stats-iter-mmaxabs":"1Kv","@stdlib/stats/iter/mmean":"1Kw","@stdlib/stats-iter-mmean":"1Kx","@stdlib/stats/iter/mmeanabs":"1Ky","@stdlib/stats-iter-mmeanabs":"1Kz","@stdlib/stats/iter/mmeanabs2":"1L0","@stdlib/stats-iter-mmeanabs2":"1L1","@stdlib/stats/iter/mmidrange":"1L2","@stdlib/stats-iter-mmidrange":"1L3","@stdlib/stats/iter/mmin":"1L4","@stdlib/stats-iter-mmin":"1L5","@stdlib/stats/iter/mminabs":"1L6","@stdlib/stats-iter-mminabs":"1L7","@stdlib/stats/iter/mprod":"1L8","@stdlib/stats-iter-mprod":"1L9","@stdlib/stats/iter/mrange":"1LA","@stdlib/stats-iter-mrange":"1LB","@stdlib/stats/iter/msum":"1LC","@stdlib/stats-iter-msum":"1LD","@stdlib/stats/iter/msumabs":"1LE","@stdlib/stats-iter-msumabs":"1LF","@stdlib/stats/iter/msumabs2":"1LG","@stdlib/stats-iter-msumabs2":"1LH","@stdlib/stats/iter":"1LI","@stdlib/stats-iter":"1LJ","@stdlib/stats/iter/prod":"1LK","@stdlib/stats-iter-prod":"1LL","@stdlib/stats/iter/range":"1LM","@stdlib/stats-iter-range":"1LN","@stdlib/stats/iter/stdev":"1LO","@stdlib/stats-iter-stdev":"1LP","@stdlib/stats/iter/sum":"1LQ","@stdlib/stats-iter-sum":"1LR","@stdlib/stats/iter/sumabs":"1LS","@stdlib/stats-iter-sumabs":"1LT","@stdlib/stats/iter/sumabs2":"1LU","@stdlib/stats-iter-sumabs2":"1LV","@stdlib/stats/iter/variance":"1LW","@stdlib/stats-iter-variance":"1LX","@stdlib/stats/kde2d":"1LY","@stdlib/stats-kde2d":"1LZ","@stdlib/stats/kruskal-test":"1La","@stdlib/stats-kruskal-test":"1Lb","@stdlib/stats/kstest":"1Lc","@stdlib/stats-kstest":"1Ld","@stdlib/stats/levene-test":"1Le","@stdlib/stats-levene-test":"1Lf","@stdlib/stats/lowess":"1Lg","@stdlib/stats-lowess":"1Lh","@stdlib/stats":"1Lj","@stdlib/stats/padjust":"1Lk","@stdlib/stats-padjust":"1Ll","@stdlib/stats/pcorrtest":"1Lm","@stdlib/stats-pcorrtest":"1Ln","@stdlib/stats/ranks":"1Lo","@stdlib/stats-ranks":"1Lp","@stdlib/stats/ttest":"1Lq","@stdlib/stats-ttest":"1Lr","@stdlib/stats/ttest2":"1Ls","@stdlib/stats-ttest2":"1Lt","@stdlib/stats/vartest":"1Lu","@stdlib/stats-vartest":"1Lv","@stdlib/stats/wilcoxon":"1Lw","@stdlib/stats-wilcoxon":"1Lx","@stdlib/stats/ztest":"1Ly","@stdlib/stats-ztest":"1Lz","@stdlib/stats/ztest2":"1M0","@stdlib/stats-ztest2":"1M1","@stdlib/streams/node/debug-sink":"1M2","@stdlib/streams-node-debug-sink":"1M3","@stdlib/streams/node/debug":"1M4","@stdlib/streams-node-debug":"1M5","@stdlib/streams/node/empty":"1M6","@stdlib/streams-node-empty":"1M7","@stdlib/streams/node/from-array":"1M8","@stdlib/streams-node-from-array":"1M9","@stdlib/streams/node/from-circular-array":"1MA","@stdlib/streams-node-from-circular-array":"1MB","@stdlib/streams/node/from-constant":"1MC","@stdlib/streams-node-from-constant":"1MD","@stdlib/streams/node/from-iterator":"1ME","@stdlib/streams-node-from-iterator":"1MF","@stdlib/streams/node/from-strided-array":"1MG","@stdlib/streams-node-from-strided-array":"1MH","@stdlib/streams/node/inspect-sink":"1MI","@stdlib/streams-node-inspect-sink":"1MJ","@stdlib/streams/node/inspect":"1MK","@stdlib/streams-node-inspect":"1ML","@stdlib/streams/node/join":"1MM","@stdlib/streams-node-join":"1MN","@stdlib/streams/node":"1MO","@stdlib/streams-node":"1MP","@stdlib/streams/node/split":"1MQ","@stdlib/streams-node-split":"1MR","@stdlib/streams/node/stderr":"1MS","@stdlib/streams-node-stderr":"1MT","@stdlib/streams/node/stdin":"1MU","@stdlib/streams-node-stdin":"1MV","@stdlib/streams/node/stdout":"1MW","@stdlib/streams-node-stdout":"1MX","@stdlib/streams/node/transform":"1MY","@stdlib/streams-node-transform":"1MZ","@stdlib/streams":"1Mb","@stdlib/strided/base/binary-addon-dispatch":"1Mc","@stdlib/strided-base-binary-addon-dispatch":"1Md","@stdlib/strided/base/binary-dtype-signatures":"1Me","@stdlib/strided-base-binary-dtype-signatures":"1Mf","@stdlib/strided/base/binary-signature-callbacks":"1Mg","@stdlib/strided-base-binary-signature-callbacks":"1Mh","@stdlib/strided/base/binary":"1Mi","@stdlib/strided-base-binary":"1Mj","@stdlib/strided/base/cmap":"1Mk","@stdlib/strided-base-cmap":"1Ml","@stdlib/strided/base/dmap":"1Mm","@stdlib/strided-base-dmap":"1Mn","@stdlib/strided/base/dmap2":"1Mo","@stdlib/strided-base-dmap2":"1Mp","@stdlib/strided/base/dmskmap":"1Mq","@stdlib/strided-base-dmskmap":"1Mr","@stdlib/strided/base/dmskmap2":"1Ms","@stdlib/strided-base-dmskmap2":"1Mt","@stdlib/strided/base/dtype-enum2str":"1Mu","@stdlib/strided-base-dtype-enum2str":"1Mv","@stdlib/strided/base/dtype-resolve-enum":"1Mw","@stdlib/strided-base-dtype-resolve-enum":"1Mx","@stdlib/strided/base/dtype-resolve-str":"1My","@stdlib/strided-base-dtype-resolve-str":"1Mz","@stdlib/strided/base/dtype-str2enum":"1N0","@stdlib/strided-base-dtype-str2enum":"1N1","@stdlib/strided/base/function-object":"1N2","@stdlib/strided-base-function-object":"1N3","@stdlib/strided/base/map-by":"1N4","@stdlib/strided-base-map-by":"1N5","@stdlib/strided/base/map-by2":"1N6","@stdlib/strided-base-map-by2":"1N7","@stdlib/strided/base/max-view-buffer-index":"1N8","@stdlib/strided-base-max-view-buffer-index":"1N9","@stdlib/strided/base/meta-data-props":"1NA","@stdlib/strided-base-meta-data-props":"1NB","@stdlib/strided/base/min-view-buffer-index":"1NC","@stdlib/strided-base-min-view-buffer-index":"1ND","@stdlib/strided/base/mskunary":"1NE","@stdlib/strided-base-mskunary":"1NF","@stdlib/strided/base/nullary":"1NG","@stdlib/strided-base-nullary":"1NH","@stdlib/strided/base/offset-view":"1NI","@stdlib/strided-base-offset-view":"1NJ","@stdlib/strided/base":"1NK","@stdlib/strided-base":"1NL","@stdlib/strided/base/quaternary":"1NM","@stdlib/strided-base-quaternary":"1NN","@stdlib/strided/base/quinary":"1NO","@stdlib/strided-base-quinary":"1NP","@stdlib/strided/base/reinterpret-complex128":"1NQ","@stdlib/strided-base-reinterpret-complex128":"1NR","@stdlib/strided/base/reinterpret-complex64":"1NS","@stdlib/strided-base-reinterpret-complex64":"1NT","@stdlib/strided/base/smap":"1NU","@stdlib/strided-base-smap":"1NV","@stdlib/strided/base/smap2":"1NW","@stdlib/strided-base-smap2":"1NX","@stdlib/strided/base/smskmap":"1NY","@stdlib/strided-base-smskmap":"1NZ","@stdlib/strided/base/smskmap2":"1Na","@stdlib/strided-base-smskmap2":"1Nb","@stdlib/strided/base/ternary":"1Nc","@stdlib/strided-base-ternary":"1Nd","@stdlib/strided/base/unary-addon-dispatch":"1Ne","@stdlib/strided-base-unary-addon-dispatch":"1Nf","@stdlib/strided/base/unary":"1Ng","@stdlib/strided-base-unary":"1Nh","@stdlib/strided/base/zmap":"1Ni","@stdlib/strided-base-zmap":"1Nj","@stdlib/strided/common":"1Nk","@stdlib/strided-common":"1Nl","@stdlib/strided/dispatch":"1Nm","@stdlib/strided-dispatch":"1Nn","@stdlib/strided/dtypes":"1No","@stdlib/strided-dtypes":"1Np","@stdlib/strided/napi/addon-arguments":"1Nq","@stdlib/strided-napi-addon-arguments":"1Nr","@stdlib/strided/napi/binary":"1Ns","@stdlib/strided-napi-binary":"1Nt","@stdlib/strided/napi/cmap":"1Nu","@stdlib/strided-napi-cmap":"1Nv","@stdlib/strided/napi/dmap":"1Nw","@stdlib/strided-napi-dmap":"1Nx","@stdlib/strided/napi/dmap2":"1Ny","@stdlib/strided-napi-dmap2":"1Nz","@stdlib/strided/napi/dmskmap":"1O0","@stdlib/strided-napi-dmskmap":"1O1","@stdlib/strided/napi/dmskmap2":"1O2","@stdlib/strided-napi-dmskmap2":"1O3","@stdlib/strided/napi/mskunary":"1O4","@stdlib/strided-napi-mskunary":"1O5","@stdlib/strided/napi":"1O6","@stdlib/strided-napi":"1O7","@stdlib/strided/napi/smap":"1O8","@stdlib/strided-napi-smap":"1O9","@stdlib/strided/napi/smap2":"1OA","@stdlib/strided-napi-smap2":"1OB","@stdlib/strided/napi/smskmap":"1OC","@stdlib/strided-napi-smskmap":"1OD","@stdlib/strided/napi/smskmap2":"1OE","@stdlib/strided-napi-smskmap2":"1OF","@stdlib/strided/napi/unary":"1OG","@stdlib/strided-napi-unary":"1OH","@stdlib/strided/napi/zmap":"1OI","@stdlib/strided-napi-zmap":"1OJ","@stdlib/strided":"1OL","@stdlib/string/acronym":"1OM","@stdlib/string-acronym":"1ON","@stdlib/string/base/format-interpolate":"1OO","@stdlib/string-base-format-interpolate":"1OP","@stdlib/string/base/format-tokenize":"1OQ","@stdlib/string-base-format-tokenize":"1OR","@stdlib/string/base":"1OS","@stdlib/string-base":"1OT","@stdlib/string/camelcase":"1OU","@stdlib/string-camelcase":"1OV","@stdlib/string/capitalize":"1OW","@stdlib/string-capitalize":"1OX","@stdlib/string/code-point-at":"1OY","@stdlib/string-code-point-at":"1OZ","@stdlib/string/constantcase":"1Oa","@stdlib/string-constantcase":"1Ob","@stdlib/string/ends-with":"1Oc","@stdlib/string-ends-with":"1Od","@stdlib/string/format":"1Oe","@stdlib/string-format":"1Of","@stdlib/string/from-code-point":"1Og","@stdlib/string-from-code-point":"1Oh","@stdlib/string/kebabcase":"1Oi","@stdlib/string-kebabcase":"1Oj","@stdlib/string/left-pad":"1Ok","@stdlib/string-left-pad":"1Ol","@stdlib/string/left-trim-n":"1Om","@stdlib/string-left-trim-n":"1On","@stdlib/string/left-trim":"1Oo","@stdlib/string-left-trim":"1Op","@stdlib/string/lowercase":"1Oq","@stdlib/string-lowercase":"1Or","@stdlib/string/next-grapheme-cluster-break":"1Os","@stdlib/string-next-grapheme-cluster-break":"1Ot","@stdlib/string/num-grapheme-clusters":"1Ou","@stdlib/string-num-grapheme-clusters":"1Ov","@stdlib/string":"1Ox","@stdlib/string/pad":"1Oy","@stdlib/string-pad":"1Oz","@stdlib/string/pascalcase":"1P0","@stdlib/string-pascalcase":"1P1","@stdlib/string/percent-encode":"1P2","@stdlib/string-percent-encode":"1P3","@stdlib/string/prev-grapheme-cluster-break":"1P4","@stdlib/string-prev-grapheme-cluster-break":"1P5","@stdlib/string/remove-first":"1P6","@stdlib/string-remove-first":"1P7","@stdlib/string/remove-last":"1P8","@stdlib/string-remove-last":"1P9","@stdlib/string/remove-punctuation":"1PA","@stdlib/string-remove-punctuation":"1PB","@stdlib/string/remove-utf8-bom":"1PC","@stdlib/string-remove-utf8-bom":"1PD","@stdlib/string/remove-words":"1PE","@stdlib/string-remove-words":"1PF","@stdlib/string/repeat":"1PG","@stdlib/string-repeat":"1PH","@stdlib/string/replace":"1PI","@stdlib/string-replace":"1PJ","@stdlib/string/reverse":"1PK","@stdlib/string-reverse":"1PL","@stdlib/string/right-pad":"1PM","@stdlib/string-right-pad":"1PN","@stdlib/string/right-trim-n":"1PO","@stdlib/string-right-trim-n":"1PP","@stdlib/string/right-trim":"1PQ","@stdlib/string-right-trim":"1PR","@stdlib/string/snakecase":"1PS","@stdlib/string-snakecase":"1PT","@stdlib/string/split-grapheme-clusters":"1PU","@stdlib/string-split-grapheme-clusters":"1PV","@stdlib/string/startcase":"1PW","@stdlib/string-startcase":"1PX","@stdlib/string/starts-with":"1PY","@stdlib/string-starts-with":"1PZ","@stdlib/string/substring-after-last":"1Pa","@stdlib/string-substring-after-last":"1Pb","@stdlib/string/substring-after":"1Pc","@stdlib/string-substring-after":"1Pd","@stdlib/string/substring-before-last":"1Pe","@stdlib/string-substring-before-last":"1Pf","@stdlib/string/substring-before":"1Pg","@stdlib/string-substring-before":"1Ph","@stdlib/string/tools/grapheme-cluster-break":"1Pi","@stdlib/string-tools-grapheme-cluster-break":"1Pj","@stdlib/string/tools":"1Pk","@stdlib/string-tools":"1Pl","@stdlib/string/trim":"1Pm","@stdlib/string-trim":"1Pn","@stdlib/string/truncate-middle":"1Po","@stdlib/string-truncate-middle":"1Pp","@stdlib/string/truncate":"1Pq","@stdlib/string-truncate":"1Pr","@stdlib/string/uncapitalize":"1Ps","@stdlib/string-uncapitalize":"1Pt","@stdlib/string/uppercase":"1Pu","@stdlib/string-uppercase":"1Pv","@stdlib/string/utf16-to-utf8-array":"1Pw","@stdlib/string-utf16-to-utf8-array":"1Px","@stdlib/symbol/async-iterator":"1Py","@stdlib/symbol-async-iterator":"1Pz","@stdlib/symbol/ctor":"1Q0","@stdlib/symbol-ctor":"1Q1","@stdlib/symbol/iterator":"1Q2","@stdlib/symbol-iterator":"1Q3","@stdlib/symbol":"1Q5","@stdlib/time/day-of-quarter":"1Q6","@stdlib/time-day-of-quarter":"1Q7","@stdlib/time/day-of-year":"1Q8","@stdlib/time-day-of-year":"1Q9","@stdlib/time/days-in-month":"1QA","@stdlib/time-days-in-month":"1QB","@stdlib/time/days-in-year":"1QC","@stdlib/time-days-in-year":"1QD","@stdlib/time/hours-in-month":"1QE","@stdlib/time-hours-in-month":"1QF","@stdlib/time/hours-in-year":"1QG","@stdlib/time-hours-in-year":"1QH","@stdlib/time/iso-weeks-in-year":"1QI","@stdlib/time-iso-weeks-in-year":"1QJ","@stdlib/time/minutes-in-month":"1QK","@stdlib/time-minutes-in-month":"1QL","@stdlib/time/minutes-in-year":"1QM","@stdlib/time-minutes-in-year":"1QN","@stdlib/time/now":"1QO","@stdlib/time-now":"1QP","@stdlib/time":"1QR","@stdlib/time/quarter-of-year":"1QS","@stdlib/time-quarter-of-year":"1QT","@stdlib/time/seconds-in-month":"1QU","@stdlib/time-seconds-in-month":"1QV","@stdlib/time/seconds-in-year":"1QW","@stdlib/time-seconds-in-year":"1QX","@stdlib/time/tic":"1QY","@stdlib/time-tic":"1QZ","@stdlib/time/toc":"1Qa","@stdlib/time-toc":"1Qb","@stdlib/types":"1Qd","@stdlib/utils/any-by-right":"1Qe","@stdlib/utils-any-by-right":"1Qf","@stdlib/utils/any-by":"1Qg","@stdlib/utils-any-by":"1Qh","@stdlib/utils/any":"1Qi","@stdlib/utils-any":"1Qj","@stdlib/utils/append":"1Qk","@stdlib/utils-append":"1Ql","@stdlib/utils/argument-function":"1Qm","@stdlib/utils-argument-function":"1Qn","@stdlib/utils/async/any-by-right":"1Qo","@stdlib/utils-async-any-by-right":"1Qp","@stdlib/utils/async/any-by":"1Qq","@stdlib/utils-async-any-by":"1Qr","@stdlib/utils/async/bifurcate-by":"1Qs","@stdlib/utils-async-bifurcate-by":"1Qt","@stdlib/utils/async/compose":"1Qu","@stdlib/utils-async-compose":"1Qv","@stdlib/utils/async/count-by":"1Qw","@stdlib/utils-async-count-by":"1Qx","@stdlib/utils/async/do-until":"1Qy","@stdlib/utils-async-do-until":"1Qz","@stdlib/utils/async/do-while":"1R0","@stdlib/utils-async-do-while":"1R1","@stdlib/utils/async/every-by-right":"1R2","@stdlib/utils-async-every-by-right":"1R3","@stdlib/utils/async/every-by":"1R4","@stdlib/utils-async-every-by":"1R5","@stdlib/utils/async/for-each-right":"1R6","@stdlib/utils-async-for-each-right":"1R7","@stdlib/utils/async/for-each":"1R8","@stdlib/utils-async-for-each":"1R9","@stdlib/utils/async/function-sequence":"1RA","@stdlib/utils-async-function-sequence":"1RB","@stdlib/utils/async/group-by":"1RC","@stdlib/utils-async-group-by":"1RD","@stdlib/utils/async/if-else":"1RE","@stdlib/utils-async-if-else":"1RF","@stdlib/utils/async/if-then":"1RG","@stdlib/utils-async-if-then":"1RH","@stdlib/utils/async/inmap-right":"1RI","@stdlib/utils-async-inmap-right":"1RJ","@stdlib/utils/async/inmap":"1RK","@stdlib/utils-async-inmap":"1RL","@stdlib/utils/async/map-function":"1RM","@stdlib/utils-async-map-function":"1RN","@stdlib/utils/async/map-keys":"1RO","@stdlib/utils-async-map-keys":"1RP","@stdlib/utils/async/map-values":"1RQ","@stdlib/utils-async-map-values":"1RR","@stdlib/utils/async/none-by-right":"1RS","@stdlib/utils-async-none-by-right":"1RT","@stdlib/utils/async/none-by":"1RU","@stdlib/utils-async-none-by":"1RV","@stdlib/utils/async":"1RW","@stdlib/utils-async":"1RX","@stdlib/utils/async/reduce-right":"1RY","@stdlib/utils-async-reduce-right":"1RZ","@stdlib/utils/async/reduce":"1Ra","@stdlib/utils-async-reduce":"1Rb","@stdlib/utils/async/series-waterfall":"1Rc","@stdlib/utils-async-series-waterfall":"1Rd","@stdlib/utils/async/some-by-right":"1Re","@stdlib/utils-async-some-by-right":"1Rf","@stdlib/utils/async/some-by":"1Rg","@stdlib/utils-async-some-by":"1Rh","@stdlib/utils/async/tabulate-by":"1Ri","@stdlib/utils-async-tabulate-by":"1Rj","@stdlib/utils/async/try-catch":"1Rk","@stdlib/utils-async-try-catch":"1Rl","@stdlib/utils/async/try-then":"1Rm","@stdlib/utils-async-try-then":"1Rn","@stdlib/utils/async/until":"1Ro","@stdlib/utils-async-until":"1Rp","@stdlib/utils/async/while":"1Rq","@stdlib/utils-async-while":"1Rr","@stdlib/utils/bifurcate-by":"1Rs","@stdlib/utils-bifurcate-by":"1Rt","@stdlib/utils/bifurcate-in":"1Ru","@stdlib/utils-bifurcate-in":"1Rv","@stdlib/utils/bifurcate-own":"1Rw","@stdlib/utils-bifurcate-own":"1Rx","@stdlib/utils/bifurcate":"1Ry","@stdlib/utils-bifurcate":"1Rz","@stdlib/utils/capitalize-keys":"1S0","@stdlib/utils-capitalize-keys":"1S1","@stdlib/utils/circular-buffer":"1S2","@stdlib/utils-circular-buffer":"1S3","@stdlib/utils/common-keys-in":"1S4","@stdlib/utils-common-keys-in":"1S5","@stdlib/utils/common-keys":"1S6","@stdlib/utils-common-keys":"1S7","@stdlib/utils/compact-adjacency-matrix":"1S8","@stdlib/utils-compact-adjacency-matrix":"1S9","@stdlib/utils/compose":"1SA","@stdlib/utils-compose":"1SB","@stdlib/utils/constant-function":"1SC","@stdlib/utils-constant-function":"1SD","@stdlib/utils/constructor-name":"1SE","@stdlib/utils-constructor-name":"1SF","@stdlib/utils/convert-path":"1SG","@stdlib/utils-convert-path":"1SH","@stdlib/utils/copy":"1SI","@stdlib/utils-copy":"1SJ","@stdlib/utils/count-by":"1SK","@stdlib/utils-count-by":"1SL","@stdlib/utils/curry-right":"1SM","@stdlib/utils-curry-right":"1SN","@stdlib/utils/curry":"1SO","@stdlib/utils-curry":"1SP","@stdlib/utils/deep-get":"1SQ","@stdlib/utils-deep-get":"1SR","@stdlib/utils/deep-pluck":"1SS","@stdlib/utils-deep-pluck":"1ST","@stdlib/utils/deep-set":"1SU","@stdlib/utils-deep-set":"1SV","@stdlib/utils/define-configurable-read-only-accessor":"1SW","@stdlib/utils-define-configurable-read-only-accessor":"1SX","@stdlib/utils/define-configurable-read-only-property":"1SY","@stdlib/utils-define-configurable-read-only-property":"1SZ","@stdlib/utils/define-configurable-read-write-accessor":"1Sa","@stdlib/utils-define-configurable-read-write-accessor":"1Sb","@stdlib/utils/define-configurable-write-only-accessor":"1Sc","@stdlib/utils-define-configurable-write-only-accessor":"1Sd","@stdlib/utils/define-memoized-configurable-read-only-property":"1Se","@stdlib/utils-define-memoized-configurable-read-only-property":"1Sf","@stdlib/utils/define-memoized-property":"1Sg","@stdlib/utils-define-memoized-property":"1Sh","@stdlib/utils/define-memoized-read-only-property":"1Si","@stdlib/utils-define-memoized-read-only-property":"1Sj","@stdlib/utils/define-nonenumerable-property":"1Sk","@stdlib/utils-define-nonenumerable-property":"1Sl","@stdlib/utils/define-nonenumerable-read-only-accessor":"1Sm","@stdlib/utils-define-nonenumerable-read-only-accessor":"1Sn","@stdlib/utils/define-nonenumerable-read-only-property":"1So","@stdlib/utils-define-nonenumerable-read-only-property":"1Sp","@stdlib/utils/define-nonenumerable-read-write-accessor":"1Sq","@stdlib/utils-define-nonenumerable-read-write-accessor":"1Sr","@stdlib/utils/define-nonenumerable-write-only-accessor":"1Ss","@stdlib/utils-define-nonenumerable-write-only-accessor":"1St","@stdlib/utils/define-properties":"1Su","@stdlib/utils-define-properties":"1Sv","@stdlib/utils/define-property":"1Sw","@stdlib/utils-define-property":"1Sx","@stdlib/utils/define-read-only-accessor":"1Sy","@stdlib/utils-define-read-only-accessor":"1Sz","@stdlib/utils/define-read-only-property":"1T0","@stdlib/utils-define-read-only-property":"1T1","@stdlib/utils/define-read-write-accessor":"1T2","@stdlib/utils-define-read-write-accessor":"1T3","@stdlib/utils/define-write-only-accessor":"1T4","@stdlib/utils-define-write-only-accessor":"1T5","@stdlib/utils/dirname":"1T6","@stdlib/utils-dirname":"1T7","@stdlib/utils/do-until-each-right":"1T8","@stdlib/utils-do-until-each-right":"1T9","@stdlib/utils/do-until-each":"1TA","@stdlib/utils-do-until-each":"1TB","@stdlib/utils/do-until":"1TC","@stdlib/utils-do-until":"1TD","@stdlib/utils/do-while-each-right":"1TE","@stdlib/utils-do-while-each-right":"1TF","@stdlib/utils/do-while-each":"1TG","@stdlib/utils-do-while-each":"1TH","@stdlib/utils/do-while":"1TI","@stdlib/utils-do-while":"1TJ","@stdlib/utils/doubly-linked-list":"1TK","@stdlib/utils-doubly-linked-list":"1TL","@stdlib/utils/entries-in":"1TM","@stdlib/utils-entries-in":"1TN","@stdlib/utils/entries":"1TO","@stdlib/utils-entries":"1TP","@stdlib/utils/enumerable-properties-in":"1TQ","@stdlib/utils-enumerable-properties-in":"1TR","@stdlib/utils/enumerable-properties":"1TS","@stdlib/utils-enumerable-properties":"1TT","@stdlib/utils/enumerable-property-symbols-in":"1TU","@stdlib/utils-enumerable-property-symbols-in":"1TV","@stdlib/utils/enumerable-property-symbols":"1TW","@stdlib/utils-enumerable-property-symbols":"1TX","@stdlib/utils/escape-regexp-string":"1TY","@stdlib/utils-escape-regexp-string":"1TZ","@stdlib/utils/eval":"1Ta","@stdlib/utils-eval":"1Tb","@stdlib/utils/every-by-right":"1Tc","@stdlib/utils-every-by-right":"1Td","@stdlib/utils/every-by":"1Te","@stdlib/utils-every-by":"1Tf","@stdlib/utils/every":"1Tg","@stdlib/utils-every":"1Th","@stdlib/utils/extname":"1Ti","@stdlib/utils-extname":"1Tj","@stdlib/utils/fifo":"1Tk","@stdlib/utils-fifo":"1Tl","@stdlib/utils/filter-arguments":"1Tm","@stdlib/utils-filter-arguments":"1Tn","@stdlib/utils/find":"1To","@stdlib/utils-find":"1Tp","@stdlib/utils/flatten-array":"1Tq","@stdlib/utils-flatten-array":"1Tr","@stdlib/utils/flatten-object":"1Ts","@stdlib/utils-flatten-object":"1Tt","@stdlib/utils/for-each-right":"1Tu","@stdlib/utils-for-each-right":"1Tv","@stdlib/utils/for-each":"1Tw","@stdlib/utils-for-each":"1Tx","@stdlib/utils/for-in":"1Ty","@stdlib/utils-for-in":"1Tz","@stdlib/utils/for-own":"1U0","@stdlib/utils-for-own":"1U1","@stdlib/utils/from-entries":"1U2","@stdlib/utils-from-entries":"1U3","@stdlib/utils/function-name":"1U4","@stdlib/utils-function-name":"1U5","@stdlib/utils/function-sequence":"1U6","@stdlib/utils-function-sequence":"1U7","@stdlib/utils/get-prototype-of":"1U8","@stdlib/utils-get-prototype-of":"1U9","@stdlib/utils/global":"1UA","@stdlib/utils-global":"1UB","@stdlib/utils/group-by":"1UC","@stdlib/utils-group-by":"1UD","@stdlib/utils/group-in":"1UE","@stdlib/utils-group-in":"1UF","@stdlib/utils/group-own":"1UG","@stdlib/utils-group-own":"1UH","@stdlib/utils/group":"1UI","@stdlib/utils-group":"1UJ","@stdlib/utils/identity-function":"1UK","@stdlib/utils-identity-function":"1UL","@stdlib/utils/if-else":"1UM","@stdlib/utils-if-else":"1UN","@stdlib/utils/if-then":"1UO","@stdlib/utils-if-then":"1UP","@stdlib/utils/index-of":"1UQ","@stdlib/utils-index-of":"1UR","@stdlib/utils/inherit":"1US","@stdlib/utils-inherit":"1UT","@stdlib/utils/inherited-enumerable-properties":"1UU","@stdlib/utils-inherited-enumerable-properties":"1UV","@stdlib/utils/inherited-enumerable-property-symbols":"1UW","@stdlib/utils-inherited-enumerable-property-symbols":"1UX","@stdlib/utils/inherited-keys":"1UY","@stdlib/utils-inherited-keys":"1UZ","@stdlib/utils/inherited-nonenumerable-properties":"1Ua","@stdlib/utils-inherited-nonenumerable-properties":"1Ub","@stdlib/utils/inherited-nonenumerable-property-names":"1Uc","@stdlib/utils-inherited-nonenumerable-property-names":"1Ud","@stdlib/utils/inherited-nonenumerable-property-symbols":"1Ue","@stdlib/utils-inherited-nonenumerable-property-symbols":"1Uf","@stdlib/utils/inherited-properties":"1Ug","@stdlib/utils-inherited-properties":"1Uh","@stdlib/utils/inherited-property-descriptor":"1Ui","@stdlib/utils-inherited-property-descriptor":"1Uj","@stdlib/utils/inherited-property-descriptors":"1Uk","@stdlib/utils-inherited-property-descriptors":"1Ul","@stdlib/utils/inherited-property-names":"1Um","@stdlib/utils-inherited-property-names":"1Un","@stdlib/utils/inherited-property-symbols":"1Uo","@stdlib/utils-inherited-property-symbols":"1Up","@stdlib/utils/inherited-writable-properties":"1Uq","@stdlib/utils-inherited-writable-properties":"1Ur","@stdlib/utils/inherited-writable-property-names":"1Us","@stdlib/utils-inherited-writable-property-names":"1Ut","@stdlib/utils/inherited-writable-property-symbols":"1Uu","@stdlib/utils-inherited-writable-property-symbols":"1Uv","@stdlib/utils/inmap-right":"1Uw","@stdlib/utils-inmap-right":"1Ux","@stdlib/utils/inmap":"1Uy","@stdlib/utils-inmap":"1Uz","@stdlib/utils/key-by-right":"1V0","@stdlib/utils-key-by-right":"1V1","@stdlib/utils/key-by":"1V2","@stdlib/utils-key-by":"1V3","@stdlib/utils/keys-in":"1V4","@stdlib/utils-keys-in":"1V5","@stdlib/utils/keys":"1V6","@stdlib/utils-keys":"1V7","@stdlib/utils/library-manifest":"1V8","@stdlib/utils-library-manifest":"1V9","@stdlib/utils/linked-list":"1VA","@stdlib/utils-linked-list":"1VB","@stdlib/utils/lowercase-keys":"1VC","@stdlib/utils-lowercase-keys":"1VD","@stdlib/utils/map-arguments":"1VE","@stdlib/utils-map-arguments":"1VF","@stdlib/utils/map-function":"1VG","@stdlib/utils-map-function":"1VH","@stdlib/utils/map-keys":"1VI","@stdlib/utils-map-keys":"1VJ","@stdlib/utils/map-reduce-right":"1VK","@stdlib/utils-map-reduce-right":"1VL","@stdlib/utils/map-reduce":"1VM","@stdlib/utils-map-reduce":"1VN","@stdlib/utils/map-right":"1VO","@stdlib/utils-map-right":"1VP","@stdlib/utils/map-values":"1VQ","@stdlib/utils-map-values":"1VR","@stdlib/utils/map":"1VS","@stdlib/utils-map":"1VT","@stdlib/utils/map2-right":"1VU","@stdlib/utils-map2-right":"1VV","@stdlib/utils/map2":"1VW","@stdlib/utils-map2":"1VX","@stdlib/utils/map2d":"1VY","@stdlib/utils-map2d":"1VZ","@stdlib/utils/map3d":"1Va","@stdlib/utils-map3d":"1Vb","@stdlib/utils/map4d":"1Vc","@stdlib/utils-map4d":"1Vd","@stdlib/utils/map5d":"1Ve","@stdlib/utils-map5d":"1Vf","@stdlib/utils/mask-arguments":"1Vg","@stdlib/utils-mask-arguments":"1Vh","@stdlib/utils/memoize":"1Vi","@stdlib/utils-memoize":"1Vj","@stdlib/utils/merge":"1Vk","@stdlib/utils-merge":"1Vl","@stdlib/utils/move-property":"1Vm","@stdlib/utils-move-property":"1Vn","@stdlib/utils/named-typed-tuple":"1Vo","@stdlib/utils-named-typed-tuple":"1Vp","@stdlib/utils/nary-function":"1Vq","@stdlib/utils-nary-function":"1Vr","@stdlib/utils/native-class":"1Vs","@stdlib/utils-native-class":"1Vt","@stdlib/utils/next-tick":"1Vu","@stdlib/utils-next-tick":"1Vv","@stdlib/utils/none-by-right":"1Vw","@stdlib/utils-none-by-right":"1Vx","@stdlib/utils/none-by":"1Vy","@stdlib/utils-none-by":"1Vz","@stdlib/utils/none":"1W0","@stdlib/utils-none":"1W1","@stdlib/utils/nonenumerable-properties-in":"1W2","@stdlib/utils-nonenumerable-properties-in":"1W3","@stdlib/utils/nonenumerable-properties":"1W4","@stdlib/utils-nonenumerable-properties":"1W5","@stdlib/utils/nonenumerable-property-names-in":"1W6","@stdlib/utils-nonenumerable-property-names-in":"1W7","@stdlib/utils/nonenumerable-property-names":"1W8","@stdlib/utils-nonenumerable-property-names":"1W9","@stdlib/utils/nonenumerable-property-symbols-in":"1WA","@stdlib/utils-nonenumerable-property-symbols-in":"1WB","@stdlib/utils/nonenumerable-property-symbols":"1WC","@stdlib/utils-nonenumerable-property-symbols":"1WD","@stdlib/utils/nonindex-keys":"1WE","@stdlib/utils-nonindex-keys":"1WF","@stdlib/utils/noop":"1WG","@stdlib/utils-noop":"1WH","@stdlib/utils/object-inverse-by":"1WI","@stdlib/utils-object-inverse-by":"1WJ","@stdlib/utils/object-inverse":"1WK","@stdlib/utils-object-inverse":"1WL","@stdlib/utils/omit-by":"1WM","@stdlib/utils-omit-by":"1WN","@stdlib/utils/omit":"1WO","@stdlib/utils-omit":"1WP","@stdlib/utils/open-url":"1WQ","@stdlib/utils-open-url":"1WR","@stdlib/utils":"1WT","@stdlib/utils/papply-right":"1WU","@stdlib/utils-papply-right":"1WV","@stdlib/utils/papply":"1WW","@stdlib/utils-papply":"1WX","@stdlib/utils/parallel":"1WY","@stdlib/utils-parallel":"1WZ","@stdlib/utils/parse-json":"1Wa","@stdlib/utils-parse-json":"1Wb","@stdlib/utils/pick-arguments":"1Wc","@stdlib/utils-pick-arguments":"1Wd","@stdlib/utils/pick-by":"1We","@stdlib/utils-pick-by":"1Wf","@stdlib/utils/pick":"1Wg","@stdlib/utils-pick":"1Wh","@stdlib/utils/pluck":"1Wi","@stdlib/utils-pluck":"1Wj","@stdlib/utils/pop":"1Wk","@stdlib/utils-pop":"1Wl","@stdlib/utils/prepend":"1Wm","@stdlib/utils-prepend":"1Wn","@stdlib/utils/properties-in":"1Wo","@stdlib/utils-properties-in":"1Wp","@stdlib/utils/properties":"1Wq","@stdlib/utils-properties":"1Wr","@stdlib/utils/property-descriptor-in":"1Ws","@stdlib/utils-property-descriptor-in":"1Wt","@stdlib/utils/property-descriptor":"1Wu","@stdlib/utils-property-descriptor":"1Wv","@stdlib/utils/property-descriptors-in":"1Ww","@stdlib/utils-property-descriptors-in":"1Wx","@stdlib/utils/property-descriptors":"1Wy","@stdlib/utils-property-descriptors":"1Wz","@stdlib/utils/property-names-in":"1X0","@stdlib/utils-property-names-in":"1X1","@stdlib/utils/property-names":"1X2","@stdlib/utils-property-names":"1X3","@stdlib/utils/property-symbols-in":"1X4","@stdlib/utils-property-symbols-in":"1X5","@stdlib/utils/property-symbols":"1X6","@stdlib/utils-property-symbols":"1X7","@stdlib/utils/push":"1X8","@stdlib/utils-push":"1X9","@stdlib/utils/real-max":"1XA","@stdlib/utils-real-max":"1XB","@stdlib/utils/real-min":"1XC","@stdlib/utils-real-min":"1XD","@stdlib/utils/reduce-right":"1XE","@stdlib/utils-reduce-right":"1XF","@stdlib/utils/reduce":"1XG","@stdlib/utils-reduce":"1XH","@stdlib/utils/reduce2d":"1XI","@stdlib/utils-reduce2d":"1XJ","@stdlib/utils/regexp-from-string":"1XK","@stdlib/utils-regexp-from-string":"1XL","@stdlib/utils/reject-arguments":"1XM","@stdlib/utils-reject-arguments":"1XN","@stdlib/utils/reorder-arguments":"1XO","@stdlib/utils-reorder-arguments":"1XP","@stdlib/utils/reverse-arguments":"1XQ","@stdlib/utils-reverse-arguments":"1XR","@stdlib/utils/safe-int-max":"1XS","@stdlib/utils-safe-int-max":"1XT","@stdlib/utils/safe-int-min":"1XU","@stdlib/utils-safe-int-min":"1XV","@stdlib/utils/shift":"1XW","@stdlib/utils-shift":"1XX","@stdlib/utils/size-of":"1XY","@stdlib/utils-size-of":"1XZ","@stdlib/utils/some-by-right":"1Xa","@stdlib/utils-some-by-right":"1Xb","@stdlib/utils/some-by":"1Xc","@stdlib/utils-some-by":"1Xd","@stdlib/utils/some":"1Xe","@stdlib/utils-some":"1Xf","@stdlib/utils/stack":"1Xg","@stdlib/utils-stack":"1Xh","@stdlib/utils/tabulate-by":"1Xi","@stdlib/utils-tabulate-by":"1Xj","@stdlib/utils/tabulate":"1Xk","@stdlib/utils-tabulate":"1Xl","@stdlib/utils/timeit":"1Xm","@stdlib/utils-timeit":"1Xn","@stdlib/utils/try-catch":"1Xo","@stdlib/utils-try-catch":"1Xp","@stdlib/utils/try-function":"1Xq","@stdlib/utils-try-function":"1Xr","@stdlib/utils/try-require":"1Xs","@stdlib/utils-try-require":"1Xt","@stdlib/utils/try-then":"1Xu","@stdlib/utils-try-then":"1Xv","@stdlib/utils/type-max":"1Xw","@stdlib/utils-type-max":"1Xx","@stdlib/utils/type-min":"1Xy","@stdlib/utils-type-min":"1Xz","@stdlib/utils/type-of":"1Y0","@stdlib/utils-type-of":"1Y1","@stdlib/utils/uncapitalize-keys":"1Y2","@stdlib/utils-uncapitalize-keys":"1Y3","@stdlib/utils/uncurry-right":"1Y4","@stdlib/utils-uncurry-right":"1Y5","@stdlib/utils/uncurry":"1Y6","@stdlib/utils-uncurry":"1Y7","@stdlib/utils/unshift":"1Y8","@stdlib/utils-unshift":"1Y9","@stdlib/utils/until-each-right":"1YA","@stdlib/utils-until-each-right":"1YB","@stdlib/utils/until-each":"1YC","@stdlib/utils-until-each":"1YD","@stdlib/utils/until":"1YE","@stdlib/utils-until":"1YF","@stdlib/utils/unzip":"1YG","@stdlib/utils-unzip":"1YH","@stdlib/utils/uppercase-keys":"1YI","@stdlib/utils-uppercase-keys":"1YJ","@stdlib/utils/values-in":"1YK","@stdlib/utils-values-in":"1YL","@stdlib/utils/values":"1YM","@stdlib/utils-values":"1YN","@stdlib/utils/while-each-right":"1YO","@stdlib/utils-while-each-right":"1YP","@stdlib/utils/while-each":"1YQ","@stdlib/utils-while-each":"1YR","@stdlib/utils/while":"1YS","@stdlib/utils-while":"1YT","@stdlib/utils/writable-properties-in":"1YU","@stdlib/utils-writable-properties-in":"1YV","@stdlib/utils/writable-properties":"1YW","@stdlib/utils-writable-properties":"1YX","@stdlib/utils/writable-property-names-in":"1YY","@stdlib/utils-writable-property-names-in":"1YZ","@stdlib/utils/writable-property-names":"1Ya","@stdlib/utils-writable-property-names":"1Yb","@stdlib/utils/writable-property-symbols-in":"1Yc","@stdlib/utils-writable-property-symbols-in":"1Yd","@stdlib/utils/writable-property-symbols":"1Ye","@stdlib/utils-writable-property-symbols":"1Yf","@stdlib/utils/zip":"1Yg","@stdlib/utils-zip":"1Yh","@stdlib/array/base/accessor-getter":"1Yi","@stdlib/array-base-accessor-getter":"1Yj","@stdlib/array/base/accessor-setter":"1Yk","@stdlib/array-base-accessor-setter":"1Yl","@stdlib/array/base/accessor":"1Ym","@stdlib/array-base-accessor":"1Yn","@stdlib/array/base/accessors":"1Yo","@stdlib/array-base-accessors":"1Yp","@stdlib/array/base/assert/contains":"1Yq","@stdlib/array-base-assert-contains":"1Yr","@stdlib/array/base/assert/is-accessor-array":"1Ys","@stdlib/array-base-assert-is-accessor-array":"1Yt","@stdlib/array/base/assert":"1Yu","@stdlib/array-base-assert":"1Yv","@stdlib/array/base/cartesian-power":"1Yw","@stdlib/array-base-cartesian-power":"1Yx","@stdlib/array/base/cartesian-product":"1Yy","@stdlib/array-base-cartesian-product":"1Yz","@stdlib/array/base/cartesian-square":"1Z0","@stdlib/array-base-cartesian-square":"1Z1","@stdlib/array/base/copy-indexed":"1Z2","@stdlib/array-base-copy-indexed":"1Z3","@stdlib/array/base/filled2d":"1Z4","@stdlib/array-base-filled2d":"1Z5","@stdlib/array/base/flatten":"1Z6","@stdlib/array-base-flatten":"1Z7","@stdlib/array/base/flatten2d-by":"1Z8","@stdlib/array-base-flatten2d-by":"1Z9","@stdlib/array/base/flatten2d":"1ZA","@stdlib/array-base-flatten2d":"1ZB","@stdlib/array/base/flatten3d-by":"1ZC","@stdlib/array-base-flatten3d-by":"1ZD","@stdlib/array/base/flatten3d":"1ZE","@stdlib/array-base-flatten3d":"1ZF","@stdlib/array/base/flatten4d-by":"1ZG","@stdlib/array-base-flatten4d-by":"1ZH","@stdlib/array/base/flatten4d":"1ZI","@stdlib/array-base-flatten4d":"1ZJ","@stdlib/array/base/flatten5d-by":"1ZK","@stdlib/array-base-flatten5d-by":"1ZL","@stdlib/array/base/flatten5d":"1ZM","@stdlib/array-base-flatten5d":"1ZN","@stdlib/array/base/getter":"1ZO","@stdlib/array-base-getter":"1ZP","@stdlib/array/base/last":"1ZQ","@stdlib/array-base-last":"1ZR","@stdlib/array/base/n-cartesian-product":"1ZS","@stdlib/array-base-n-cartesian-product":"1ZT","@stdlib/array/base/ones2d":"1ZU","@stdlib/array-base-ones2d":"1ZV","@stdlib/array/base/setter":"1ZW","@stdlib/array-base-setter":"1ZX","@stdlib/array/base/take":"1ZY","@stdlib/array-base-take":"1ZZ","@stdlib/array/base/to-accessor-array":"1Za","@stdlib/array-base-to-accessor-array":"1Zb","@stdlib/array/base/zero-to":"1Zc","@stdlib/array-base-zero-to":"1Zd","@stdlib/array/base/zeros2d":"1Ze","@stdlib/array-base-zeros2d":"1Zf","@stdlib/array/empty-like":"1Zg","@stdlib/array-empty-like":"1Zh","@stdlib/array/empty":"1Zi","@stdlib/array-empty":"1Zj","@stdlib/array/nans-like":"1Zk","@stdlib/array-nans-like":"1Zl","@stdlib/array/nans":"1Zm","@stdlib/array-nans":"1Zn","@stdlib/assert/is-accessor-array":"1Zo","@stdlib/assert-is-accessor-array":"1Zp","@stdlib/assert/is-camelcase":"1Zq","@stdlib/assert-is-camelcase":"1Zr","@stdlib/assert/is-constantcase":"1Zs","@stdlib/assert-is-constantcase":"1Zt","@stdlib/assert/is-current-year":"1Zu","@stdlib/assert-is-current-year":"1Zv","@stdlib/assert/is-domain-name":"1Zw","@stdlib/assert-is-domain-name":"1Zx","@stdlib/assert/is-duration-string":"1Zy","@stdlib/assert-is-duration-string":"1Zz","@stdlib/assert/is-kebabcase":"1a0","@stdlib/assert-is-kebabcase":"1a1","@stdlib/assert/is-pascalcase":"1a2","@stdlib/assert-is-pascalcase":"1a3","@stdlib/assert/is-semver":"1a4","@stdlib/assert-is-semver":"1a5","@stdlib/assert/is-snakecase":"1a6","@stdlib/assert-is-snakecase":"1a7","@stdlib/assert/is-startcase":"1a8","@stdlib/assert-is-startcase":"1a9","@stdlib/assert/napi/equal-typedarray-types":"1aA","@stdlib/assert-napi-equal-typedarray-types":"1aB","@stdlib/assert/napi/equal-types":"1aC","@stdlib/assert-napi-equal-types":"1aD","@stdlib/assert/napi/is-type":"1aE","@stdlib/assert-napi-is-type":"1aF","@stdlib/assert/napi/is-typedarray":"1aG","@stdlib/assert-napi-is-typedarray":"1aH","@stdlib/assert/napi":"1aI","@stdlib/assert-napi":"1aJ","@stdlib/assert/napi/status-ok":"1aK","@stdlib/assert-napi-status-ok":"1aL","@stdlib/blas/base/drotg":"1aM","@stdlib/blas-base-drotg":"1aN","@stdlib/blas/base/srotg":"1aO","@stdlib/blas-base-srotg":"1aP","@stdlib/boolean/ctor":"1aQ","@stdlib/boolean-ctor":"1aR","@stdlib/boolean":"1aT","@stdlib/complex/base/cast-return":"1aU","@stdlib/complex-base-cast-return":"1aV","@stdlib/complex/base":"1aW","@stdlib/complex-base":"1aX","@stdlib/console/log-each":"1aY","@stdlib/console-log-each":"1aZ","@stdlib/console/log":"1aa","@stdlib/console-log":"1ab","@stdlib/console":"1ad","@stdlib/constants/float32/abs-mask":"1ae","@stdlib/constants-float32-abs-mask":"1af","@stdlib/constants/float32/exponent-mask":"1ag","@stdlib/constants-float32-exponent-mask":"1ah","@stdlib/constants/float32/sign-mask":"1ai","@stdlib/constants-float32-sign-mask":"1aj","@stdlib/constants/float32/significand-mask":"1ak","@stdlib/constants-float32-significand-mask":"1al","@stdlib/constants/float64/high-word-abs-mask":"1am","@stdlib/constants-float64-high-word-abs-mask":"1an","@stdlib/constants/float64/high-word-sign-mask":"1ao","@stdlib/constants-float64-high-word-sign-mask":"1ap","@stdlib/function/ctor":"1aq","@stdlib/function-ctor":"1ar","@stdlib/function":"1at","@stdlib/function/to-string":"1au","@stdlib/function-to-string":"1av","@stdlib/math/base/assert/is-negative-finite":"1aw","@stdlib/math-base-assert-is-negative-finite":"1ax","@stdlib/math/base/assert/is-nonnegative-finite":"1ay","@stdlib/math-base-assert-is-nonnegative-finite":"1az","@stdlib/math/base/assert/is-nonpositive-finite":"1b0","@stdlib/math-base-assert-is-nonpositive-finite":"1b1","@stdlib/math/base/assert/is-positive-finite":"1b2","@stdlib/math-base-assert-is-positive-finite":"1b3","@stdlib/math/base/ops/cnegf":"1b4","@stdlib/math-base-ops-cnegf":"1b5","@stdlib/math/base/special/asec":"1b6","@stdlib/math-base-special-asec":"1b7","@stdlib/math/base/special/ellipj":"1b8","@stdlib/math-base-special-ellipj":"1b9","@stdlib/math/base/special/erfcx":"1bA","@stdlib/math-base-special-erfcx":"1bB","@stdlib/math/base/special/gammasgn":"1bC","@stdlib/math-base-special-gammasgn":"1bD","@stdlib/math/base/special/maxabsn":"1bE","@stdlib/math-base-special-maxabsn":"1bF","@stdlib/math/base/special/maxn":"1bG","@stdlib/math-base-special-maxn":"1bH","@stdlib/math/base/special/minabsn":"1bI","@stdlib/math-base-special-minabsn":"1bJ","@stdlib/math/base/special/minmaxabsn":"1bK","@stdlib/math-base-special-minmaxabsn":"1bL","@stdlib/math/base/special/minmaxn":"1bM","@stdlib/math-base-special-minmaxn":"1bN","@stdlib/math/base/special/minn":"1bO","@stdlib/math-base-special-minn":"1bP","@stdlib/math/base/special/rcbrt":"1bQ","@stdlib/math-base-special-rcbrt":"1bR","@stdlib/math/base/special/sqrtpi":"1bS","@stdlib/math-base-special-sqrtpi":"1bT","@stdlib/math/base/tools/evalpoly-compile-c":"1bU","@stdlib/math-base-tools-evalpoly-compile-c":"1bV","@stdlib/math/base/tools/evalrational-compile-c":"1bW","@stdlib/math-base-tools-evalrational-compile-c":"1bX","@stdlib/math/strided/ops/add-by":"1bY","@stdlib/math-strided-ops-add-by":"1bZ","@stdlib/math/strided/ops/mul-by":"1ba","@stdlib/math-strided-ops-mul-by":"1bb","@stdlib/math/strided/ops/sub-by":"1bc","@stdlib/math-strided-ops-sub-by":"1bd","@stdlib/math/strided/special/cbrt-by":"1be","@stdlib/math-strided-special-cbrt-by":"1bf","@stdlib/math/strided/special/cos-by":"1bg","@stdlib/math-strided-special-cos-by":"1bh","@stdlib/math/strided/special/dcbrt-by":"1bi","@stdlib/math-strided-special-dcbrt-by":"1bj","@stdlib/math/strided/special/sin-by":"1bk","@stdlib/math-strided-special-sin-by":"1bl","@stdlib/math/strided/special/sqrt-by":"1bm","@stdlib/math-strided-special-sqrt-by":"1bn","@stdlib/napi/argv-complex128array":"1bo","@stdlib/napi-argv-complex128array":"1bp","@stdlib/napi/argv-complex64array":"1bq","@stdlib/napi-argv-complex64array":"1br","@stdlib/napi/argv-double":"1bs","@stdlib/napi-argv-double":"1bt","@stdlib/napi/argv-float":"1bu","@stdlib/napi-argv-float":"1bv","@stdlib/napi/argv-float32array":"1bw","@stdlib/napi-argv-float32array":"1bx","@stdlib/napi/argv-float64array":"1by","@stdlib/napi-argv-float64array":"1bz","@stdlib/napi/argv-int16array":"1c0","@stdlib/napi-argv-int16array":"1c1","@stdlib/napi/argv-int32":"1c2","@stdlib/napi-argv-int32":"1c3","@stdlib/napi/argv-int32array":"1c4","@stdlib/napi-argv-int32array":"1c5","@stdlib/napi/argv-int64":"1c6","@stdlib/napi-argv-int64":"1c7","@stdlib/napi/argv-int8array":"1c8","@stdlib/napi-argv-int8array":"1c9","@stdlib/napi/argv-strided-complex128array":"1cA","@stdlib/napi-argv-strided-complex128array":"1cB","@stdlib/napi/argv-strided-complex64array":"1cC","@stdlib/napi-argv-strided-complex64array":"1cD","@stdlib/napi/argv-strided-float32array":"1cE","@stdlib/napi-argv-strided-float32array":"1cF","@stdlib/napi/argv-strided-float64array":"1cG","@stdlib/napi-argv-strided-float64array":"1cH","@stdlib/napi/argv-strided-int16array":"1cI","@stdlib/napi-argv-strided-int16array":"1cJ","@stdlib/napi/argv-strided-int32array":"1cK","@stdlib/napi-argv-strided-int32array":"1cL","@stdlib/napi/argv-strided-int8array":"1cM","@stdlib/napi-argv-strided-int8array":"1cN","@stdlib/napi/argv-strided-uint16array":"1cO","@stdlib/napi-argv-strided-uint16array":"1cP","@stdlib/napi/argv-strided-uint32array":"1cQ","@stdlib/napi-argv-strided-uint32array":"1cR","@stdlib/napi/argv-strided-uint8array":"1cS","@stdlib/napi-argv-strided-uint8array":"1cT","@stdlib/napi/argv-uint16array":"1cU","@stdlib/napi-argv-uint16array":"1cV","@stdlib/napi/argv-uint32":"1cW","@stdlib/napi-argv-uint32":"1cX","@stdlib/napi/argv-uint32array":"1cY","@stdlib/napi-argv-uint32array":"1cZ","@stdlib/napi/argv-uint8array":"1ca","@stdlib/napi-argv-uint8array":"1cb","@stdlib/napi/argv":"1cc","@stdlib/napi-argv":"1cd","@stdlib/napi/export":"1ce","@stdlib/napi-export":"1cf","@stdlib/napi":"1ch","@stdlib/ndarray/base/assert/is-complex-floating-point-data-type":"1ci","@stdlib/ndarray-base-assert-is-complex-floating-point-data-type":"1cj","@stdlib/ndarray/base/assert/is-floating-point-data-type":"1ck","@stdlib/ndarray-base-assert-is-floating-point-data-type":"1cl","@stdlib/ndarray/base/assert/is-integer-data-type":"1cm","@stdlib/ndarray-base-assert-is-integer-data-type":"1cn","@stdlib/ndarray/base/assert/is-numeric-data-type":"1co","@stdlib/ndarray-base-assert-is-numeric-data-type":"1cp","@stdlib/ndarray/base/assert/is-real-data-type":"1cq","@stdlib/ndarray-base-assert-is-real-data-type":"1cr","@stdlib/ndarray/base/assert/is-real-floating-point-data-type":"1cs","@stdlib/ndarray-base-assert-is-real-floating-point-data-type":"1ct","@stdlib/ndarray/base/assert/is-signed-integer-data-type":"1cu","@stdlib/ndarray-base-assert-is-signed-integer-data-type":"1cv","@stdlib/ndarray/base/assert/is-unsigned-integer-data-type":"1cw","@stdlib/ndarray-base-assert-is-unsigned-integer-data-type":"1cx","@stdlib/ndarray/base/binary-loop-interchange-order":"1cy","@stdlib/ndarray-base-binary-loop-interchange-order":"1cz","@stdlib/ndarray/base/binary-tiling-block-size":"1d0","@stdlib/ndarray-base-binary-tiling-block-size":"1d1","@stdlib/ndarray/base/broadcast-scalar":"1d2","@stdlib/ndarray-base-broadcast-scalar":"1d3","@stdlib/ndarray/base/empty-like":"1d4","@stdlib/ndarray-base-empty-like":"1d5","@stdlib/ndarray/base/empty":"1d6","@stdlib/ndarray-base-empty":"1d7","@stdlib/ndarray/base/nullary-loop-interchange-order":"1d8","@stdlib/ndarray-base-nullary-loop-interchange-order":"1d9","@stdlib/ndarray/base/nullary-tiling-block-size":"1dA","@stdlib/ndarray-base-nullary-tiling-block-size":"1dB","@stdlib/ndarray/base/nullary":"1dC","@stdlib/ndarray-base-nullary":"1dD","@stdlib/ndarray/base/output-policy-enum2str":"1dE","@stdlib/ndarray-base-output-policy-enum2str":"1dF","@stdlib/ndarray/base/output-policy-resolve-enum":"1dG","@stdlib/ndarray-base-output-policy-resolve-enum":"1dH","@stdlib/ndarray/base/output-policy-resolve-str":"1dI","@stdlib/ndarray-base-output-policy-resolve-str":"1dJ","@stdlib/ndarray/base/output-policy-str2enum":"1dK","@stdlib/ndarray-base-output-policy-str2enum":"1dL","@stdlib/ndarray/base/unary-by":"1dM","@stdlib/ndarray-base-unary-by":"1dN","@stdlib/ndarray/base/unary-loop-interchange-order":"1dO","@stdlib/ndarray-base-unary-loop-interchange-order":"1dP","@stdlib/ndarray/base/unary-output-dtype":"1dQ","@stdlib/ndarray-base-unary-output-dtype":"1dR","@stdlib/ndarray/base/unary-tiling-block-size":"1dS","@stdlib/ndarray-base-unary-tiling-block-size":"1dT","@stdlib/ndarray/defaults":"1dU","@stdlib/ndarray-defaults":"1dV","@stdlib/ndarray/dispatch-by":"1dW","@stdlib/ndarray-dispatch-by":"1dX","@stdlib/ndarray/empty-like":"1dY","@stdlib/ndarray-empty-like":"1dZ","@stdlib/ndarray/empty":"1da","@stdlib/ndarray-empty":"1db","@stdlib/ndarray/output-dtype-policies":"1dc","@stdlib/ndarray-output-dtype-policies":"1dd","@stdlib/ndarray/to-array":"1de","@stdlib/ndarray-to-array":"1df","@stdlib/nlp/expand-acronyms":"1dg","@stdlib/nlp-expand-acronyms":"1dh","@stdlib/nlp/sentencize":"1di","@stdlib/nlp-sentencize":"1dj","@stdlib/number/float64/reviver":"1dk","@stdlib/number-float64-reviver":"1dl","@stdlib/number/float64/to-json":"1dm","@stdlib/number-float64-to-json":"1dn","@stdlib/object/assign":"1do","@stdlib/object-assign":"1dp","@stdlib/object/ctor":"1dq","@stdlib/object-ctor":"1dr","@stdlib/object":"1dt","@stdlib/random/array/arcsine":"1du","@stdlib/random-array-arcsine":"1dv","@stdlib/random/array/beta":"1dw","@stdlib/random-array-beta":"1dx","@stdlib/random/array/betaprime":"1dy","@stdlib/random-array-betaprime":"1dz","@stdlib/random/array/cosine":"1e0","@stdlib/random-array-cosine":"1e1","@stdlib/random/array/discrete-uniform":"1e2","@stdlib/random-array-discrete-uniform":"1e3","@stdlib/random/array/exponential":"1e4","@stdlib/random-array-exponential":"1e5","@stdlib/random/array/gamma":"1e6","@stdlib/random-array-gamma":"1e7","@stdlib/random/array/geometric":"1e8","@stdlib/random-array-geometric":"1e9","@stdlib/random/array/invgamma":"1eA","@stdlib/random-array-invgamma":"1eB","@stdlib/random/array/lognormal":"1eC","@stdlib/random-array-lognormal":"1eD","@stdlib/random/array/minstd-shuffle":"1eE","@stdlib/random-array-minstd-shuffle":"1eF","@stdlib/random/array/minstd":"1eG","@stdlib/random-array-minstd":"1eH","@stdlib/random/array/mt19937":"1eI","@stdlib/random-array-mt19937":"1eJ","@stdlib/random/array/normal":"1eK","@stdlib/random-array-normal":"1eL","@stdlib/random/array":"1eM","@stdlib/random-array":"1eN","@stdlib/random/array/randu":"1eO","@stdlib/random-array-randu":"1eP","@stdlib/random/array/uniform":"1eQ","@stdlib/random-array-uniform":"1eR","@stdlib/random/exponential":"1eS","@stdlib/random-exponential":"1eT","@stdlib/random/strided/arcsine":"1eU","@stdlib/random-strided-arcsine":"1eV","@stdlib/random/strided/beta":"1eW","@stdlib/random-strided-beta":"1eX","@stdlib/random/strided/betaprime":"1eY","@stdlib/random-strided-betaprime":"1eZ","@stdlib/random/strided/cosine":"1ea","@stdlib/random-strided-cosine":"1eb","@stdlib/random/strided/discrete-uniform":"1ec","@stdlib/random-strided-discrete-uniform":"1ed","@stdlib/random/strided/exponential":"1ee","@stdlib/random-strided-exponential":"1ef","@stdlib/random/strided/gamma":"1eg","@stdlib/random-strided-gamma":"1eh","@stdlib/random/strided/invgamma":"1ei","@stdlib/random-strided-invgamma":"1ej","@stdlib/random/strided/lognormal":"1ek","@stdlib/random-strided-lognormal":"1el","@stdlib/random/strided/minstd-shuffle":"1em","@stdlib/random-strided-minstd-shuffle":"1en","@stdlib/random/strided/minstd":"1eo","@stdlib/random-strided-minstd":"1ep","@stdlib/random/strided/mt19937":"1eq","@stdlib/random-strided-mt19937":"1er","@stdlib/random/strided/normal":"1es","@stdlib/random-strided-normal":"1et","@stdlib/random/strided":"1eu","@stdlib/random-strided":"1ev","@stdlib/random/strided/randu":"1ew","@stdlib/random-strided-randu":"1ex","@stdlib/random/strided/uniform":"1ey","@stdlib/random-strided-uniform":"1ez","@stdlib/random/strided/weibull":"1f0","@stdlib/random-strided-weibull":"1f1","@stdlib/regexp/duration-string":"1f2","@stdlib/regexp-duration-string":"1f3","@stdlib/regexp/reviver":"1f4","@stdlib/regexp-reviver":"1f5","@stdlib/regexp/semver":"1f6","@stdlib/regexp-semver":"1f7","@stdlib/regexp/to-json":"1f8","@stdlib/regexp-to-json":"1f9","@stdlib/stats/base/dists/lognormal/logcdf":"1fA","@stdlib/stats-base-dists-lognormal-logcdf":"1fB","@stdlib/stats/base/dists/normal/logcdf":"1fC","@stdlib/stats-base-dists-normal-logcdf":"1fD","@stdlib/stats/base/dists/studentized-range/cdf":"1fE","@stdlib/stats-base-dists-studentized-range-cdf":"1fF","@stdlib/stats/base/dists/studentized-range":"1fG","@stdlib/stats-base-dists-studentized-range":"1fH","@stdlib/stats/base/dists/studentized-range/quantile":"1fI","@stdlib/stats-base-dists-studentized-range-quantile":"1fJ","@stdlib/strided/base/mskunary-addon-dispatch":"1fK","@stdlib/strided-base-mskunary-addon-dispatch":"1fL","@stdlib/strided/base/mskunary-dtype-signatures":"1fM","@stdlib/strided-base-mskunary-dtype-signatures":"1fN","@stdlib/strided/base/mskunary-signature-callbacks":"1fO","@stdlib/strided-base-mskunary-signature-callbacks":"1fP","@stdlib/strided/base/nullary-addon-dispatch":"1fQ","@stdlib/strided-base-nullary-addon-dispatch":"1fR","@stdlib/strided/base/unary-by":"1fS","@stdlib/strided-base-unary-by":"1fT","@stdlib/strided/base/unary-dtype-signatures":"1fU","@stdlib/strided-base-unary-dtype-signatures":"1fV","@stdlib/strided/base/unary-signature-callbacks":"1fW","@stdlib/strided-base-unary-signature-callbacks":"1fX","@stdlib/strided/dispatch-by":"1fY","@stdlib/strided-dispatch-by":"1fZ","@stdlib/strided/napi/nullary":"1fa","@stdlib/strided-napi-nullary":"1fb","@stdlib/string/base/camelcase":"1fc","@stdlib/string-base-camelcase":"1fd","@stdlib/string/base/capitalize":"1fe","@stdlib/string-base-capitalize":"1ff","@stdlib/string/base/code-point-at":"1fg","@stdlib/string-base-code-point-at":"1fh","@stdlib/string/base/constantcase":"1fi","@stdlib/string-base-constantcase":"1fj","@stdlib/string/base/distances/levenshtein":"1fk","@stdlib/string-base-distances-levenshtein":"1fl","@stdlib/string/base/distances":"1fm","@stdlib/string-base-distances":"1fn","@stdlib/string/base/dotcase":"1fo","@stdlib/string-base-dotcase":"1fp","@stdlib/string/base/ends-with":"1fq","@stdlib/string-base-ends-with":"1fr","@stdlib/string/base/first-code-point":"1fs","@stdlib/string-base-first-code-point":"1ft","@stdlib/string/base/first-grapheme-cluster":"1fu","@stdlib/string-base-first-grapheme-cluster":"1fv","@stdlib/string/base/first":"1fw","@stdlib/string-base-first":"1fx","@stdlib/string/base/for-each-code-point":"1fy","@stdlib/string-base-for-each-code-point":"1fz","@stdlib/string/base/for-each-grapheme-cluster":"1g0","@stdlib/string-base-for-each-grapheme-cluster":"1g1","@stdlib/string/base/for-each":"1g2","@stdlib/string-base-for-each":"1g3","@stdlib/string/base/headercase":"1g4","@stdlib/string-base-headercase":"1g5","@stdlib/string/base/invcase":"1g6","@stdlib/string-base-invcase":"1g7","@stdlib/string/base/kebabcase":"1g8","@stdlib/string-base-kebabcase":"1g9","@stdlib/string/base/left-pad":"1gA","@stdlib/string-base-left-pad":"1gB","@stdlib/string/base/left-trim":"1gC","@stdlib/string-base-left-trim":"1gD","@stdlib/string/base/lowercase":"1gE","@stdlib/string-base-lowercase":"1gF","@stdlib/string/base/pascalcase":"1gG","@stdlib/string-base-pascalcase":"1gH","@stdlib/string/base/percent-encode":"1gI","@stdlib/string-base-percent-encode":"1gJ","@stdlib/string/base/remove-first-code-point":"1gK","@stdlib/string-base-remove-first-code-point":"1gL","@stdlib/string/base/remove-first-grapheme-cluster":"1gM","@stdlib/string-base-remove-first-grapheme-cluster":"1gN","@stdlib/string/base/remove-first":"1gO","@stdlib/string-base-remove-first":"1gP","@stdlib/string/base/repeat":"1gQ","@stdlib/string-base-repeat":"1gR","@stdlib/string/base/replace-before":"1gS","@stdlib/string-base-replace-before":"1gT","@stdlib/string/base/replace":"1gU","@stdlib/string-base-replace":"1gV","@stdlib/string/base/right-pad":"1gW","@stdlib/string-base-right-pad":"1gX","@stdlib/string/base/right-trim":"1gY","@stdlib/string-base-right-trim":"1gZ","@stdlib/string/base/snakecase":"1ga","@stdlib/string-base-snakecase":"1gb","@stdlib/string/base/startcase":"1gc","@stdlib/string-base-startcase":"1gd","@stdlib/string/base/starts-with":"1ge","@stdlib/string-base-starts-with":"1gf","@stdlib/string/base/trim":"1gg","@stdlib/string-base-trim":"1gh","@stdlib/string/base/uncapitalize":"1gi","@stdlib/string-base-uncapitalize":"1gj","@stdlib/string/base/uppercase":"1gk","@stdlib/string-base-uppercase":"1gl","@stdlib/string/dotcase":"1gm","@stdlib/string-dotcase":"1gn","@stdlib/string/first":"1go","@stdlib/string-first":"1gp","@stdlib/string/for-each":"1gq","@stdlib/string-for-each":"1gr","@stdlib/string/headercase":"1gs","@stdlib/string-headercase":"1gt","@stdlib/string/num2words":"1gu","@stdlib/string-num2words":"1gv","@stdlib/string/replace-before":"1gw","@stdlib/string-replace-before":"1gx","@stdlib/string/to-grapheme-cluster-iterator-right":"1gy","@stdlib/string-to-grapheme-cluster-iterator-right":"1gz","@stdlib/string/to-grapheme-cluster-iterator":"1h0","@stdlib/string-to-grapheme-cluster-iterator":"1h1","@stdlib/time/base":"1h2","@stdlib/time-base":"1h3","@stdlib/time/base/parse-duration":"1h4","@stdlib/time-base-parse-duration":"1h5","@stdlib/time/current-year":"1h6","@stdlib/time-current-year":"1h7","@stdlib/time/duration2ms":"1h8","@stdlib/time-duration2ms":"1h9","@stdlib/time/ms2duration":"1hA","@stdlib/time-ms2duration":"1hB","@stdlib/utils/decorate-after":"1hC","@stdlib/utils-decorate-after":"1hD","@stdlib/utils/dsv/base":"1hE","@stdlib/utils-dsv-base":"1hF","@stdlib/utils/dsv/base/parse":"1hG","@stdlib/utils-dsv-base-parse":"1hH","@stdlib/utils/dsv":"1hI","@stdlib/utils-dsv":"1hJ","@stdlib/utils/thunk":"1hK","@stdlib/utils-thunk":"1hL","@stdlib/array/base/broadcast-array":"1hM","@stdlib/array-base-broadcast-array":"1hN","@stdlib/array/base/filled2d-by":"1hO","@stdlib/array-base-filled2d-by":"1hP","@stdlib/array/base/filled3d-by":"1hQ","@stdlib/array-base-filled3d-by":"1hR","@stdlib/array/base/filled3d":"1hS","@stdlib/array-base-filled3d":"1hT","@stdlib/array/base/filled4d-by":"1hU","@stdlib/array-base-filled4d-by":"1hV","@stdlib/array/base/filled4d":"1hW","@stdlib/array-base-filled4d":"1hX","@stdlib/array/base/filled5d-by":"1hY","@stdlib/array-base-filled5d-by":"1hZ","@stdlib/array/base/filled5d":"1ha","@stdlib/array-base-filled5d":"1hb","@stdlib/array/base/fillednd":"1hc","@stdlib/array-base-fillednd":"1hd","@stdlib/array/base/flatten-by":"1he","@stdlib/array-base-flatten-by":"1hf","@stdlib/array/base/one-to":"1hg","@stdlib/array-base-one-to":"1hh","@stdlib/array/base/ones3d":"1hi","@stdlib/array-base-ones3d":"1hj","@stdlib/array/base/ones4d":"1hk","@stdlib/array-base-ones4d":"1hl","@stdlib/array/base/ones5d":"1hm","@stdlib/array-base-ones5d":"1hn","@stdlib/array/base/onesnd":"1ho","@stdlib/array-base-onesnd":"1hp","@stdlib/array/base/unary2d":"1hq","@stdlib/array-base-unary2d":"1hr","@stdlib/array/base/zeros3d":"1hs","@stdlib/array-base-zeros3d":"1ht","@stdlib/array/base/zeros4d":"1hu","@stdlib/array-base-zeros4d":"1hv","@stdlib/array/base/zeros5d":"1hw","@stdlib/array-base-zeros5d":"1hx","@stdlib/array/base/zerosnd":"1hy","@stdlib/array-base-zerosnd":"1hz","@stdlib/array/base/binary2d":"1i0","@stdlib/array-base-binary2d":"1i1","@stdlib/array/base/binary3d":"1i2","@stdlib/array-base-binary3d":"1i3","@stdlib/array/base/binary4d":"1i4","@stdlib/array-base-binary4d":"1i5","@stdlib/array/base/binary5d":"1i6","@stdlib/array-base-binary5d":"1i7","@stdlib/array/base/binarynd":"1i8","@stdlib/array-base-binarynd":"1i9","@stdlib/array/base/broadcasted-binary2d":"1iA","@stdlib/array-base-broadcasted-binary2d":"1iB","@stdlib/array/base/broadcasted-binary3d":"1iC","@stdlib/array-base-broadcasted-binary3d":"1iD","@stdlib/array/base/broadcasted-binary4d":"1iE","@stdlib/array-base-broadcasted-binary4d":"1iF","@stdlib/array/base/broadcasted-binary5d":"1iG","@stdlib/array-base-broadcasted-binary5d":"1iH","@stdlib/array/base/broadcasted-unary2d":"1iI","@stdlib/array-base-broadcasted-unary2d":"1iJ","@stdlib/array/base/broadcasted-unary3d":"1iK","@stdlib/array-base-broadcasted-unary3d":"1iL","@stdlib/array/base/broadcasted-unary4d":"1iM","@stdlib/array-base-broadcasted-unary4d":"1iN","@stdlib/array/base/broadcasted-unary5d":"1iO","@stdlib/array-base-broadcasted-unary5d":"1iP","@stdlib/array/base/fillednd-by":"1iQ","@stdlib/array-base-fillednd-by":"1iR","@stdlib/array/base/unary3d":"1iS","@stdlib/array-base-unary3d":"1iT","@stdlib/array/base/unary4d":"1iU","@stdlib/array-base-unary4d":"1iV","@stdlib/array/base/unary5d":"1iW","@stdlib/array-base-unary5d":"1iX","@stdlib/array/base/unarynd":"1iY","@stdlib/array-base-unarynd":"1iZ","@stdlib/array/base/mskbinary2d":"1ia","@stdlib/array-base-mskbinary2d":"1ib","@stdlib/array/base/mskunary2d":"1ic","@stdlib/array-base-mskunary2d":"1id","@stdlib/array/base/mskunary3d":"1ie","@stdlib/array-base-mskunary3d":"1if","@stdlib/array/base/unary2d-by":"1ig","@stdlib/array-base-unary2d-by":"1ih","@stdlib/assert/is-multi-slice":"1ii","@stdlib/assert-is-multi-slice":"1ij","@stdlib/assert/is-slice":"1ik","@stdlib/assert-is-slice":"1il","@stdlib/math/base/special/log1pmx":"1im","@stdlib/math-base-special-log1pmx":"1in","@stdlib/slice/base":"1io","@stdlib/slice-base":"1ip","@stdlib/slice/base/seq2slice":"1iq","@stdlib/slice-base-seq2slice":"1ir","@stdlib/slice/base/slice2seq":"1is","@stdlib/slice-base-slice2seq":"1it","@stdlib/slice/base/str2multislice":"1iu","@stdlib/slice-base-str2multislice":"1iv","@stdlib/slice/base/str2slice":"1iw","@stdlib/slice-base-str2slice":"1ix","@stdlib/slice/ctor":"1iy","@stdlib/slice-ctor":"1iz","@stdlib/slice/multi":"1j0","@stdlib/slice-multi":"1j1","@stdlib/slice":"1j3","@stdlib/slice/seq2slice":"1j4","@stdlib/slice-seq2slice":"1j5","@stdlib/ndarray/fancy":"1j6","@stdlib/ndarray-fancy":"1j7","@stdlib/slice/base/length":"1j8","@stdlib/slice-base-length":"1j9","@stdlib/slice/base/normalize-multi-slice":"1jA","@stdlib/slice-base-normalize-multi-slice":"1jB","@stdlib/slice/base/normalize-slice":"1jC","@stdlib/slice-base-normalize-slice":"1jD","@stdlib/slice/base/seq2multislice":"1jE","@stdlib/slice-base-seq2multislice":"1jF","@stdlib/slice/base/shape":"1jG","@stdlib/slice-base-shape":"1jH","@stdlib/string/base/remove-last-code-point":"1jI","@stdlib/string-base-remove-last-code-point":"1jJ","@stdlib/string/base/remove-last-grapheme-cluster":"1jK","@stdlib/string-base-remove-last-grapheme-cluster":"1jL","@stdlib/string/base/remove-last":"1jM","@stdlib/string-base-remove-last":"1jN","@stdlib/ndarray/base/slice-assign":"1jO","@stdlib/ndarray-base-slice-assign":"1jP","@stdlib/ndarray/base/slice":"1jQ","@stdlib/ndarray-base-slice":"1jR","@stdlib/ndarray/slice-assign":"1jS","@stdlib/ndarray-slice-assign":"1jT","@stdlib/ndarray/slice":"1jU","@stdlib/ndarray-slice":"1jV","@stdlib/slice/base/nonreduced-dimensions":"1jW","@stdlib/slice-base-nonreduced-dimensions":"1jX","@stdlib/slice/base/reduced-dimensions":"1jY","@stdlib/slice-base-reduced-dimensions":"1jZ","@stdlib/slice/base/sargs2multislice":"1ja","@stdlib/slice-base-sargs2multislice":"1jb","@stdlib/ndarray/base/ndims":"1jc","@stdlib/ndarray-base-ndims":"1jd","@stdlib/ndarray/base/next-cartesian-index":"1je","@stdlib/ndarray-base-next-cartesian-index":"1jf","@stdlib/ndarray/base/offset":"1jg","@stdlib/ndarray-base-offset":"1jh","@stdlib/ndarray/base/shape":"1ji","@stdlib/ndarray-base-shape":"1jj","@stdlib/ndarray/base/strides":"1jk","@stdlib/ndarray-base-strides":"1jl","@stdlib/ndarray/broadcast-array":"1jm","@stdlib/ndarray-broadcast-array":"1jn","@stdlib/ndarray/iter/columns":"1jo","@stdlib/ndarray-iter-columns":"1jp","@stdlib/ndarray/iter/entries":"1jq","@stdlib/ndarray-iter-entries":"1jr","@stdlib/ndarray/iter/indices":"1js","@stdlib/ndarray-iter-indices":"1jt","@stdlib/ndarray/iter":"1ju","@stdlib/ndarray-iter":"1jv","@stdlib/ndarray/iter/rows":"1jw","@stdlib/ndarray-iter-rows":"1jx","@stdlib/ndarray/iter/to-array-each":"1jy","@stdlib/ndarray-iter-to-array-each":"1jz","@stdlib/ndarray/iter/values":"1k0","@stdlib/ndarray-iter-values":"1k1","@stdlib/ndarray/maybe-broadcast-array":"1k2","@stdlib/ndarray-maybe-broadcast-array":"1k3","@stdlib/ndarray/ndims":"1k4","@stdlib/ndarray-ndims":"1k5","@stdlib/ndarray/numel":"1k6","@stdlib/ndarray-numel":"1k7","@stdlib/ndarray/offset":"1k8","@stdlib/ndarray-offset":"1k9","@stdlib/ndarray/shape":"1kA","@stdlib/ndarray-shape":"1kB","@stdlib/ndarray/strides":"1kC","@stdlib/ndarray-strides":"1kD","@stdlib/ndarray/base/assert/is-mostly-safe-data-type-cast":"1kE","@stdlib/ndarray-base-assert-is-mostly-safe-data-type-cast":"1kF","@stdlib/ndarray/base/assign":"1kG","@stdlib/ndarray-base-assign":"1kH","@stdlib/ndarray/base/data-buffer":"1kI","@stdlib/ndarray-base-data-buffer":"1kJ","@stdlib/ndarray/base/dtype":"1kK","@stdlib/ndarray-base-dtype":"1kL","@stdlib/ndarray/base/order":"1kM","@stdlib/ndarray-base-order":"1kN","@stdlib/ndarray/base/reverse":"1kO","@stdlib/ndarray-base-reverse":"1kP","@stdlib/ndarray/base/slice-dimension":"1kQ","@stdlib/ndarray-base-slice-dimension":"1kR","@stdlib/ndarray/data-buffer":"1kS","@stdlib/ndarray-data-buffer":"1kT","@stdlib/ndarray/dtype":"1kU","@stdlib/ndarray-dtype":"1kV","@stdlib/ndarray/mostly-safe-casts":"1kW","@stdlib/ndarray-mostly-safe-casts":"1kX","@stdlib/ndarray/order":"1kY","@stdlib/ndarray-order":"1kZ","@stdlib/ndarray/slice-dimension":"1ka","@stdlib/ndarray-slice-dimension":"1kb","@stdlib/slice/base/args2multislice":"1kc","@stdlib/slice-base-args2multislice":"1kd","@stdlib/array/base/broadcasted-quaternary2d":"1ke","@stdlib/array-base-broadcasted-quaternary2d":"1kf","@stdlib/array/base/broadcasted-quinary2d":"1kg","@stdlib/array-base-broadcasted-quinary2d":"1kh","@stdlib/array/base/broadcasted-ternary2d":"1ki","@stdlib/array-base-broadcasted-ternary2d":"1kj","@stdlib/array/base/quaternary2d":"1kk","@stdlib/array-base-quaternary2d":"1kl","@stdlib/array/base/quinary2d":"1km","@stdlib/array-base-quinary2d":"1kn","@stdlib/array/base/strided2array2d":"1ko","@stdlib/array-base-strided2array2d":"1kp","@stdlib/array/base/strided2array3d":"1kq","@stdlib/array-base-strided2array3d":"1kr","@stdlib/array/base/strided2array4d":"1ks","@stdlib/array-base-strided2array4d":"1kt","@stdlib/array/base/strided2array5d":"1ku","@stdlib/array-base-strided2array5d":"1kv","@stdlib/array/base/ternary2d":"1kw","@stdlib/array-base-ternary2d":"1kx","@stdlib/array/base/ternary3d":"1ky","@stdlib/array-base-ternary3d":"1kz","@stdlib/array/base/ternary4d":"1l0","@stdlib/array-base-ternary4d":"1l1","@stdlib/array/base/ternary5d":"1l2","@stdlib/array-base-ternary5d":"1l3","@stdlib/ndarray/base/fliplr":"1l4","@stdlib/ndarray-base-fliplr":"1l5","@stdlib/ndarray/base/flipud":"1l6","@stdlib/ndarray-base-flipud":"1l7","@stdlib/ndarray/base/normalize-index":"1l8","@stdlib/ndarray-base-normalize-index":"1l9","@stdlib/ndarray/base/reverse-dimension":"1lA","@stdlib/ndarray-base-reverse-dimension":"1lB","@stdlib/ndarray/base/slice-dimension-from":"1lC","@stdlib/ndarray-base-slice-dimension-from":"1lD","@stdlib/ndarray/base/slice-dimension-to":"1lE","@stdlib/ndarray-base-slice-dimension-to":"1lF","@stdlib/ndarray/base/slice-from":"1lG","@stdlib/ndarray-base-slice-from":"1lH","@stdlib/ndarray/base/slice-to":"1lI","@stdlib/ndarray-base-slice-to":"1lJ","@stdlib/ndarray/iter/column-entries":"1lK","@stdlib/ndarray-iter-column-entries":"1lL","@stdlib/ndarray/iter/matrices":"1lM","@stdlib/ndarray-iter-matrices":"1lN","@stdlib/ndarray/iter/matrix-entries":"1lO","@stdlib/ndarray-iter-matrix-entries":"1lP","@stdlib/ndarray/iter/row-entries":"1lQ","@stdlib/ndarray-iter-row-entries":"1lR","@stdlib/ndarray/slice-dimension-from":"1lS","@stdlib/ndarray-slice-dimension-from":"1lT","@stdlib/ndarray/slice-dimension-to":"1lU","@stdlib/ndarray-slice-dimension-to":"1lV","@stdlib/string/base/reverse-code-points":"1lW","@stdlib/string-base-reverse-code-points":"1lX","@stdlib/string/base/reverse-grapheme-clusters":"1lY","@stdlib/string-base-reverse-grapheme-clusters":"1lZ","@stdlib/string/base/reverse":"1la","@stdlib/string-base-reverse":"1lb","@stdlib/string/base/truncate-middle":"1lc","@stdlib/string-base-truncate-middle":"1ld","@stdlib/string/next-code-point-index":"1le","@stdlib/string-next-code-point-index":"1lf","@stdlib/array/base/fliplr2d":"1lg","@stdlib/array-base-fliplr2d":"1lh","@stdlib/array/base/flipud2d":"1li","@stdlib/array-base-flipud2d":"1lj","@stdlib/array/base/from-strided":"1lk","@stdlib/array-base-from-strided":"1ll","@stdlib/array/base/map2d":"1lm","@stdlib/array-base-map2d":"1ln","@stdlib/array/base/map3d":"1lo","@stdlib/array-base-map3d":"1lp","@stdlib/array/base/quaternary3d":"1lq","@stdlib/array-base-quaternary3d":"1lr","@stdlib/array/base/quaternary4d":"1ls","@stdlib/array-base-quaternary4d":"1lt","@stdlib/array/base/quaternary5d":"1lu","@stdlib/array-base-quaternary5d":"1lv","@stdlib/array/base/resolve-getter":"1lw","@stdlib/array-base-resolve-getter":"1lx","@stdlib/array/base/take-indexed":"1ly","@stdlib/array-base-take-indexed":"1lz","@stdlib/array/base/take2d":"1m0","@stdlib/array-base-take2d":"1m1","@stdlib/math/base/napi/quaternary":"1m2","@stdlib/math-base-napi-quaternary":"1m3","@stdlib/math/base/napi/quinary":"1m4","@stdlib/math-base-napi-quinary":"1m5","@stdlib/math/base/ops/add3":"1m6","@stdlib/math-base-ops-add3":"1m7","@stdlib/math/base/ops/add4":"1m8","@stdlib/math-base-ops-add4":"1m9","@stdlib/math/base/ops/add5":"1mA","@stdlib/math-base-ops-add5":"1mB","@stdlib/math/base/ops/div":"1mC","@stdlib/math-base-ops-div":"1mD","@stdlib/math/base/ops/divf":"1mE","@stdlib/math-base-ops-divf":"1mF","@stdlib/math/base/special/factorial2":"1mG","@stdlib/math-base-special-factorial2":"1mH","@stdlib/array/base/fliplr3d":"1mI","@stdlib/array-base-fliplr3d":"1mJ","@stdlib/array/base/fliplr4d":"1mK","@stdlib/array-base-fliplr4d":"1mL","@stdlib/array/base/fliplr5d":"1mM","@stdlib/array-base-fliplr5d":"1mN","@stdlib/array/base/map4d":"1mO","@stdlib/array-base-map4d":"1mP","@stdlib/array/base/map5d":"1mQ","@stdlib/array-base-map5d":"1mR","@stdlib/array/base/take3d":"1mS","@stdlib/array-base-take3d":"1mT","@stdlib/assert/is-complex128matrix-like":"1mU","@stdlib/assert-is-complex128matrix-like":"1mV","@stdlib/assert/is-complex128ndarray-like":"1mW","@stdlib/assert-is-complex128ndarray-like":"1mX","@stdlib/assert/is-complex128vector-like":"1mY","@stdlib/assert-is-complex128vector-like":"1mZ","@stdlib/assert/is-complex64matrix-like":"1ma","@stdlib/assert-is-complex64matrix-like":"1mb","@stdlib/assert/is-complex64ndarray-like":"1mc","@stdlib/assert-is-complex64ndarray-like":"1md","@stdlib/assert/is-complex64vector-like":"1me","@stdlib/assert-is-complex64vector-like":"1mf","@stdlib/ndarray/base/stride":"1mg","@stdlib/ndarray-base-stride":"1mh","@stdlib/ndarray/slice-to":"1mi","@stdlib/ndarray-slice-to":"1mj","@stdlib/ndarray/stride":"1mk","@stdlib/ndarray-stride":"1ml","@stdlib/array/base/first":"1mm","@stdlib/array-base-first":"1mn","@stdlib/array/base/index-of":"1mo","@stdlib/array-base-index-of":"1mp","@stdlib/array/base/last-index-of":"1mq","@stdlib/array-base-last-index-of":"1mr","@stdlib/array/base/slice":"1ms","@stdlib/array-base-slice":"1mt","@stdlib/iter/while-each":"1mu","@stdlib/iter-while-each":"1mv","@stdlib/ndarray/slice-from":"1mw","@stdlib/ndarray-slice-from":"1mx","@stdlib/string/base/altcase":"1my","@stdlib/string-base-altcase":"1mz","@stdlib/string/base/distances/hamming":"1n0","@stdlib/string-base-distances-hamming":"1n1","@stdlib/array/base/bifurcate-entries":"1n2","@stdlib/array-base-bifurcate-entries":"1n3","@stdlib/array/base/bifurcate-indices":"1n4","@stdlib/array-base-bifurcate-indices":"1n5","@stdlib/array/base/bifurcate-values":"1n6","@stdlib/array-base-bifurcate-values":"1n7","@stdlib/array/base/dedupe":"1n8","@stdlib/array-base-dedupe":"1n9","@stdlib/array/base/flipud3d":"1nA","@stdlib/array-base-flipud3d":"1nB","@stdlib/array/base/flipud4d":"1nC","@stdlib/array-base-flipud4d":"1nD","@stdlib/array/base/flipud5d":"1nE","@stdlib/array-base-flipud5d":"1nF","@stdlib/array/base/group-entries":"1nG","@stdlib/array-base-group-entries":"1nH","@stdlib/array/base/group-indices":"1nI","@stdlib/array-base-group-indices":"1nJ","@stdlib/array/base/group-values":"1nK","@stdlib/array-base-group-values":"1nL","@stdlib/array/base/quinary3d":"1nM","@stdlib/array-base-quinary3d":"1nN","@stdlib/array/base/quinary4d":"1nO","@stdlib/array-base-quinary4d":"1nP","@stdlib/array/base/quinary5d":"1nQ","@stdlib/array-base-quinary5d":"1nR","@stdlib/array/base/to-deduped":"1nS","@stdlib/array-base-to-deduped":"1nT","@stdlib/ndarray/base/broadcast-arrays":"1nU","@stdlib/ndarray-base-broadcast-arrays":"1nV","@stdlib/ndarray/base/flags":"1nW","@stdlib/ndarray-base-flags":"1nX","@stdlib/ndarray/base/maybe-broadcast-arrays":"1nY","@stdlib/ndarray-base-maybe-broadcast-arrays":"1nZ","@stdlib/ndarray/broadcast-arrays":"1na","@stdlib/ndarray-broadcast-arrays":"1nb","@stdlib/ndarray/maybe-broadcast-arrays":"1nc","@stdlib/ndarray-maybe-broadcast-arrays":"1nd","@stdlib/array/base/bifurcate-entries-by":"1ne","@stdlib/array-base-bifurcate-entries-by":"1nf","@stdlib/array/base/bifurcate-indices-by":"1ng","@stdlib/array-base-bifurcate-indices-by":"1nh","@stdlib/array/base/bifurcate-values-by":"1ni","@stdlib/array-base-bifurcate-values-by":"1nj","@stdlib/array/base/group-entries-by":"1nk","@stdlib/array-base-group-entries-by":"1nl","@stdlib/array/base/group-indices-by":"1nm","@stdlib/array-base-group-indices-by":"1nn","@stdlib/array/base/group-values-by":"1no","@stdlib/array-base-group-values-by":"1np","@stdlib/array/defaults":"1nq","@stdlib/array-defaults":"1nr","@stdlib/ndarray/base/flag":"1ns","@stdlib/ndarray-base-flag":"1nt","@stdlib/ndarray/base/numel-dimension":"1nu","@stdlib/ndarray-base-numel-dimension":"1nv","@stdlib/ndarray/flag":"1nw","@stdlib/ndarray-flag":"1nx","@stdlib/ndarray/flags":"1ny","@stdlib/ndarray-flags":"1nz","@stdlib/ndarray/numel-dimension":"1o0","@stdlib/ndarray-numel-dimension":"1o1","@stdlib/random/array/bernoulli":"1o2","@stdlib/random-array-bernoulli":"1o3","@stdlib/random/array/chi":"1o4","@stdlib/random-array-chi":"1o5","@stdlib/random/array/chisquare":"1o6","@stdlib/random-array-chisquare":"1o7","@stdlib/random/array/poisson":"1o8","@stdlib/random-array-poisson":"1o9","@stdlib/random/array/rayleigh":"1oA","@stdlib/random-array-rayleigh":"1oB","@stdlib/random/array/t":"1oC","@stdlib/random-array-t":"1oD","@stdlib/random/array/tools/nullary":"1oE","@stdlib/random-array-tools-nullary":"1oF","@stdlib/random/array/tools/unary-factory":"1oG","@stdlib/random-array-tools-unary-factory":"1oH","@stdlib/random/array/tools/unary":"1oI","@stdlib/random-array-tools-unary":"1oJ","@stdlib/array/base/any-by-right":"1oK","@stdlib/array-base-any-by-right":"1oL","@stdlib/array/base/any-by":"1oM","@stdlib/array-base-any-by":"1oN","@stdlib/array/base/any":"1oO","@stdlib/array-base-any":"1oP","@stdlib/array/base/assert/has-same-values":"1oQ","@stdlib/array-base-assert-has-same-values":"1oR","@stdlib/array/base/assert/is-complex128array":"1oS","@stdlib/array-base-assert-is-complex128array":"1oT","@stdlib/array/base/assert/is-complex64array":"1oU","@stdlib/array-base-assert-is-complex64array":"1oV","@stdlib/array/base/at":"1oW","@stdlib/array-base-at":"1oX","@stdlib/array/base/at2d":"1oY","@stdlib/array-base-at2d":"1oZ","@stdlib/array/base/at3d":"1oa","@stdlib/array-base-at3d":"1ob","@stdlib/array/base/at4d":"1oc","@stdlib/array-base-at4d":"1od","@stdlib/array/base/at5d":"1oe","@stdlib/array-base-at5d":"1of","@stdlib/array/base/atnd":"1og","@stdlib/array-base-atnd":"1oh","@stdlib/array/base/every-by-right":"1oi","@stdlib/array-base-every-by-right":"1oj","@stdlib/array/base/every-by":"1ok","@stdlib/array-base-every-by":"1ol","@stdlib/array/base/every":"1om","@stdlib/array-base-every":"1on","@stdlib/array/base/filter":"1oo","@stdlib/array-base-filter":"1op","@stdlib/array/base/mskfilter":"1oq","@stdlib/array-base-mskfilter":"1or","@stdlib/array/base/none-by-right":"1os","@stdlib/array-base-none-by-right":"1ot","@stdlib/array/base/none-by":"1ou","@stdlib/array-base-none-by":"1ov","@stdlib/array/base/none":"1ow","@stdlib/array-base-none":"1ox","@stdlib/array/base/resolve-setter":"1oy","@stdlib/array-base-resolve-setter":"1oz","@stdlib/array/base/reverse":"1p0","@stdlib/array-base-reverse":"1p1","@stdlib/array/base/to-reversed":"1p2","@stdlib/array-base-to-reversed":"1p3","@stdlib/array/cartesian-power":"1p4","@stdlib/array-cartesian-power":"1p5","@stdlib/array/cartesian-product":"1p6","@stdlib/array-cartesian-product":"1p7","@stdlib/array/cartesian-square":"1p8","@stdlib/array-cartesian-square":"1p9","@stdlib/array/one-to-like":"1pA","@stdlib/array-one-to-like":"1pB","@stdlib/array/one-to":"1pC","@stdlib/array-one-to":"1pD","@stdlib/array/slice":"1pE","@stdlib/array-slice":"1pF","@stdlib/array/zero-to-like":"1pG","@stdlib/array-zero-to-like":"1pH","@stdlib/array/zero-to":"1pI","@stdlib/array-zero-to":"1pJ","@stdlib/assert/is-same-array":"1pK","@stdlib/assert-is-same-array":"1pL","@stdlib/assert/is-same-complex128":"1pM","@stdlib/assert-is-same-complex128":"1pN","@stdlib/assert/is-same-complex128array":"1pO","@stdlib/assert-is-same-complex128array":"1pP","@stdlib/assert/is-same-complex64":"1pQ","@stdlib/assert-is-same-complex64":"1pR","@stdlib/assert/is-same-complex64array":"1pS","@stdlib/assert-is-same-complex64array":"1pT","@stdlib/assert/is-same-float32array":"1pU","@stdlib/assert-is-same-float32array":"1pV","@stdlib/assert/is-same-float64array":"1pW","@stdlib/assert-is-same-float64array":"1pX","@stdlib/complex/float64/base/assert/is-equal":"1pY","@stdlib/complex-base-assert-is-equal":"1pZ","@stdlib/complex/base/assert/is-equalf":"1pa","@stdlib/complex-base-assert-is-equalf":"1pb","@stdlib/complex/base/assert/is-not-equal":"1pc","@stdlib/complex-base-assert-is-not-equal":"1pd","@stdlib/complex/base/assert/is-not-equalf":"1pe","@stdlib/complex-base-assert-is-not-equalf":"1pf","@stdlib/complex/base/assert/is-same-value-zero":"1pg","@stdlib/complex-base-assert-is-same-value-zero":"1ph","@stdlib/complex/base/assert/is-same-value-zerof":"1pi","@stdlib/complex-base-assert-is-same-value-zerof":"1pj","@stdlib/complex/base/assert/is-same-value":"1pk","@stdlib/complex-base-assert-is-same-value":"1pl","@stdlib/complex/base/assert/is-same-valuef":"1pm","@stdlib/complex-base-assert-is-same-valuef":"1pn","@stdlib/complex/base/assert":"1po","@stdlib/complex-base-assert":"1pp","@stdlib/constants/complex128/nan":"1pq","@stdlib/constants-complex128-nan":"1pr","@stdlib/constants/complex128/zero":"1ps","@stdlib/constants-complex128-zero":"1pt","@stdlib/constants/complex64/nan":"1pu","@stdlib/constants-complex64-nan":"1pv","@stdlib/constants/complex64/zero":"1pw","@stdlib/constants-complex64-zero":"1px","@stdlib/constants/float32/nan":"1py","@stdlib/constants-float32-nan":"1pz","@stdlib/constants/float64/nan":"1q0","@stdlib/constants-float64-nan":"1q1","@stdlib/ndarray/at":"1q2","@stdlib/ndarray-at":"1q3","@stdlib/number/float32/base/assert/is-same-value-zero":"1q4","@stdlib/number-float32-base-assert-is-same-value-zero":"1q5","@stdlib/number/float32/base/assert/is-same-value":"1q6","@stdlib/number-float32-base-assert-is-same-value":"1q7","@stdlib/number/float32/base/assert":"1q8","@stdlib/number-float32-base-assert":"1q9","@stdlib/number/float64/base/assert/is-same-value-zero":"1qA","@stdlib/number-float64-base-assert-is-same-value-zero":"1qB","@stdlib/number/float64/base/assert/is-same-value":"1qC","@stdlib/number-float64-base-assert-is-same-value":"1qD","@stdlib/number/float64/base/assert":"1qE","@stdlib/number-float64-base-assert":"1qF","@stdlib/random/array/binomial":"1qG","@stdlib/random-array-binomial":"1qH","@stdlib/random/array/cauchy":"1qI","@stdlib/random-array-cauchy":"1qJ","@stdlib/random/array/erlang":"1qK","@stdlib/random-array-erlang":"1qL","@stdlib/random/array/f":"1qM","@stdlib/random-array-f":"1qN","@stdlib/random/array/frechet":"1qO","@stdlib/random-array-frechet":"1qP","@stdlib/random/array/gumbel":"1qQ","@stdlib/random-array-gumbel":"1qR","@stdlib/random/array/hypergeometric":"1qS","@stdlib/random-array-hypergeometric":"1qT","@stdlib/random/array/kumaraswamy":"1qU","@stdlib/random-array-kumaraswamy":"1qV","@stdlib/random/array/laplace":"1qW","@stdlib/random-array-laplace":"1qX","@stdlib/random/array/levy":"1qY","@stdlib/random-array-levy":"1qZ","@stdlib/random/array/logistic":"1qa","@stdlib/random-array-logistic":"1qb","@stdlib/random/array/negative-binomial":"1qc","@stdlib/random-array-negative-binomial":"1qd","@stdlib/random/array/pareto-type1":"1qe","@stdlib/random-array-pareto-type1":"1qf","@stdlib/random/array/tools/binary-factory":"1qg","@stdlib/random-array-tools-binary-factory":"1qh","@stdlib/random/array/tools/binary":"1qi","@stdlib/random-array-tools-binary":"1qj","@stdlib/random/array/tools/ternary-factory":"1qk","@stdlib/random-array-tools-ternary-factory":"1ql","@stdlib/random/array/tools/ternary":"1qm","@stdlib/random-array-tools-ternary":"1qn","@stdlib/random/array/triangular":"1qo","@stdlib/random-array-triangular":"1qp","@stdlib/random/array/weibull":"1qq","@stdlib/random-array-weibull":"1qr","@stdlib/array/base/assert/is-complex-floating-point-data-type":"1qs","@stdlib/array-base-assert-is-complex-floating-point-data-type":"1qt","@stdlib/array/base/assert/is-data-type":"1qu","@stdlib/array-base-assert-is-data-type":"1qv","@stdlib/array/base/assert/is-floating-point-data-type":"1qw","@stdlib/array-base-assert-is-floating-point-data-type":"1qx","@stdlib/array/base/assert/is-integer-data-type":"1qy","@stdlib/array-base-assert-is-integer-data-type":"1qz","@stdlib/array/base/assert/is-mostly-safe-data-type-cast":"1r0","@stdlib/array-base-assert-is-mostly-safe-data-type-cast":"1r1","@stdlib/array/base/assert/is-numeric-data-type":"1r2","@stdlib/array-base-assert-is-numeric-data-type":"1r3","@stdlib/array/base/assert/is-real-data-type":"1r4","@stdlib/array-base-assert-is-real-data-type":"1r5","@stdlib/array/base/assert/is-real-floating-point-data-type":"1r6","@stdlib/array-base-assert-is-real-floating-point-data-type":"1r7","@stdlib/array/base/assert/is-safe-data-type-cast":"1r8","@stdlib/array-base-assert-is-safe-data-type-cast":"1r9","@stdlib/array/base/assert/is-same-kind-data-type-cast":"1rA","@stdlib/array-base-assert-is-same-kind-data-type-cast":"1rB","@stdlib/array/base/assert/is-signed-integer-data-type":"1rC","@stdlib/array-base-assert-is-signed-integer-data-type":"1rD","@stdlib/array/base/assert/is-unsigned-integer-data-type":"1rE","@stdlib/array-base-assert-is-unsigned-integer-data-type":"1rF","@stdlib/array/base/fancy-slice-assign":"1rG","@stdlib/array-base-fancy-slice-assign":"1rH","@stdlib/array/base/fancy-slice":"1rI","@stdlib/array-base-fancy-slice":"1rJ","@stdlib/array/base/min-signed-integer-dtype":"1rK","@stdlib/array-base-min-signed-integer-dtype":"1rL","@stdlib/array/base/min-unsigned-integer-dtype":"1rM","@stdlib/array-base-min-unsigned-integer-dtype":"1rN","@stdlib/array/base/mskreject":"1rO","@stdlib/array-base-mskreject":"1rP","@stdlib/array/base/reject":"1rQ","@stdlib/array-base-reject":"1rR","@stdlib/array/from-scalar":"1rS","@stdlib/array-from-scalar":"1rT","@stdlib/array/mostly-safe-casts":"1rU","@stdlib/array-mostly-safe-casts":"1rV","@stdlib/array/to-fancy":"1rW","@stdlib/array-to-fancy":"1rX","@stdlib/random/array/tools":"1rY","@stdlib/random-array-tools":"1rZ","@stdlib/random/strided/bernoulli":"1ra","@stdlib/random-strided-bernoulli":"1rb","@stdlib/random/strided/chi":"1rc","@stdlib/random-strided-chi":"1rd","@stdlib/random/strided/chisquare":"1re","@stdlib/random-strided-chisquare":"1rf","@stdlib/random/strided/geometric":"1rg","@stdlib/random-strided-geometric":"1rh","@stdlib/random/strided/poisson":"1ri","@stdlib/random-strided-poisson":"1rj","@stdlib/random/strided/rayleigh":"1rk","@stdlib/random-strided-rayleigh":"1rl","@stdlib/random/strided/t":"1rm","@stdlib/random-strided-t":"1rn","@stdlib/random/strided/tools/binary-factory":"1ro","@stdlib/random-strided-tools-binary-factory":"1rp","@stdlib/random/strided/tools":"1rq","@stdlib/random-strided-tools":"1rr","@stdlib/random/strided/tools/ternary-factory":"1rs","@stdlib/random-strided-tools-ternary-factory":"1rt","@stdlib/random/strided/tools/unary-factory":"1ru","@stdlib/random-strided-tools-unary-factory":"1rv","@stdlib/slice/base/int2slice":"1rw","@stdlib/slice-base-int2slice":"1rx","@stdlib/array/index":"1ry","@stdlib/array-index":"1rz","@stdlib/array/take":"1s0","@stdlib/array-take":"1s1","@stdlib/strided/base/reinterpret-complex":"1s2","@stdlib/strided-base-reinterpret-complex":"1s3","@stdlib/array/base/assert/is-complex-typed-array":"1s4","@stdlib/array-base-assert-is-complex-typed-array":"1s5","@stdlib/array/base/count-falsy":"1s6","@stdlib/array-base-count-falsy":"1s7","@stdlib/array/base/count-same-value":"1s8","@stdlib/array-base-count-same-value":"1s9","@stdlib/array/base/count-truthy":"1sA","@stdlib/array-base-count-truthy":"1sB","@stdlib/array/mskfilter":"1sC","@stdlib/array-mskfilter":"1sD","@stdlib/array/mskreject":"1sE","@stdlib/array-mskreject":"1sF","@stdlib/assert/is-negative-finite":"1sG","@stdlib/assert-is-negative-finite":"1sH","@stdlib/assert/is-nonnegative-finite":"1sI","@stdlib/assert-is-nonnegative-finite":"1sJ","@stdlib/assert/is-positive-finite":"1sK","@stdlib/assert-is-positive-finite":"1sL","@stdlib/random/base/shared":"1sM","@stdlib/random-base-shared":"1sN","@stdlib/array/base/count-if":"1sO","@stdlib/array-base-count-if":"1sP","@stdlib/array/base/count-same-value-zero":"1sQ","@stdlib/array-base-count-same-value-zero":"1sR","@stdlib/array/base/with":"1sS","@stdlib/array-base-with":"1sT","@stdlib/assert/is-nonpositive-finite":"1sU","@stdlib/assert-is-nonpositive-finite":"1sV","@stdlib/assert/is-ragged-nested-array":"1sW","@stdlib/assert-is-ragged-nested-array":"1sX","@stdlib/assert/is-well-formed-string":"1sY","@stdlib/assert-is-well-formed-string":"1sZ","@stdlib/complex/base/parse":"1sa","@stdlib/complex-base-parse":"1sb","@stdlib/complex/float32/parse":"1sc","@stdlib/complex-parse-float32":"1sd","@stdlib/complex/float64/parse":"1se","@stdlib/complex-parse-float64":"1sf","@stdlib/iter/until-each":"1sg","@stdlib/iter-until-each":"1sh","@stdlib/math/base/special/csc":"1si","@stdlib/math-base-special-csc":"1sj","@stdlib/math/iter/sequences/tribonacci":"1sk","@stdlib/math-iter-sequences-tribonacci":"1sl","@stdlib/string/base/for-each-right":"1sm","@stdlib/string-base-for-each-right":"1sn","@stdlib/string/base/replace-after-last":"1so","@stdlib/string-base-replace-after-last":"1sp","@stdlib/string/base/replace-after":"1sq","@stdlib/string-base-replace-after":"1sr","@stdlib/string/base/replace-before-last":"1ss","@stdlib/string-base-replace-before-last":"1st","@stdlib/utils/every-in-by":"1su","@stdlib/utils-every-in-by":"1sv","@stdlib/utils/none-own-by":"1sw","@stdlib/utils-none-own-by":"1sx","@stdlib/utils/some-in-by":"1sy","@stdlib/utils-some-in-by":"1sz","@stdlib/array/base/join":"1t0","@stdlib/array-base-join":"1t1","@stdlib/array/base/take-map":"1t2","@stdlib/array-base-take-map":"1t3","@stdlib/assert/is-same-date-object":"1t4","@stdlib/assert-is-same-date-object":"1t5","@stdlib/blas/base/zcopy":"1t6","@stdlib/blas-base-zcopy":"1t7","@stdlib/blas/base/zswap":"1t8","@stdlib/blas-base-zswap":"1t9","@stdlib/constants/float32/fourth-pi":"1tA","@stdlib/constants-float32-fourth-pi":"1tB","@stdlib/constants/float32/half-pi":"1tC","@stdlib/constants-float32-half-pi":"1tD","@stdlib/constants/float32/pi":"1tE","@stdlib/constants-float32-pi":"1tF","@stdlib/constants/float32/two-pi":"1tG","@stdlib/constants-float32-two-pi":"1tH","@stdlib/iter/do-until-each":"1tI","@stdlib/iter-do-until-each":"1tJ","@stdlib/iter/do-while-each":"1tK","@stdlib/iter-do-while-each":"1tL","@stdlib/math/base/special/acosd":"1tM","@stdlib/math-base-special-acosd":"1tN","@stdlib/math/base/special/acosf":"1tO","@stdlib/math-base-special-acosf":"1tP","@stdlib/math/base/special/acotd":"1tQ","@stdlib/math-base-special-acotd":"1tR","@stdlib/math/base/special/acotf":"1tS","@stdlib/math-base-special-acotf":"1tT","@stdlib/math/base/special/acscd":"1tU","@stdlib/math-base-special-acscd":"1tV","@stdlib/math/base/special/acscf":"1tW","@stdlib/math-base-special-acscf":"1tX","@stdlib/math/base/special/asecd":"1tY","@stdlib/math-base-special-asecd":"1tZ","@stdlib/math/base/special/asecf":"1ta","@stdlib/math-base-special-asecf":"1tb","@stdlib/math/base/special/asind":"1tc","@stdlib/math-base-special-asind":"1td","@stdlib/math/base/special/asinf":"1te","@stdlib/math-base-special-asinf":"1tf","@stdlib/math/base/special/atand":"1tg","@stdlib/math-base-special-atand":"1th","@stdlib/math/base/special/atanf":"1ti","@stdlib/math-base-special-atanf":"1tj","@stdlib/math/base/special/cosd":"1tk","@stdlib/math-base-special-cosd":"1tl","@stdlib/math/base/special/cotd":"1tm","@stdlib/math-base-special-cotd":"1tn","@stdlib/math/base/special/cscd":"1to","@stdlib/math-base-special-cscd":"1tp","@stdlib/math/base/special/rad2degf":"1tq","@stdlib/math-base-special-rad2degf":"1tr","@stdlib/math/base/special/secd":"1ts","@stdlib/math-base-special-secd":"1tt","@stdlib/math/base/special/tand":"1tu","@stdlib/math-base-special-tand":"1tv","@stdlib/math/base/tools/evalpolyf":"1tw","@stdlib/math-base-tools-evalpolyf":"1tx","@stdlib/math/base/tools/evalrationalf":"1ty","@stdlib/math-base-tools-evalrationalf":"1tz","@stdlib/string/base/last-code-point":"1u0","@stdlib/string-base-last-code-point":"1u1","@stdlib/string/base/last-grapheme-cluster":"1u2","@stdlib/string-base-last-grapheme-cluster":"1u3","@stdlib/string/base/last":"1u4","@stdlib/string-base-last":"1u5","@stdlib/string/base/stickycase":"1u6","@stdlib/string-base-stickycase":"1u7","@stdlib/string/to-well-formed":"1u8","@stdlib/string-to-well-formed":"1u9","@stdlib/utils/any-in-by":"1uA","@stdlib/utils-any-in-by":"1uB","@stdlib/utils/any-own-by":"1uC","@stdlib/utils-any-own-by":"1uD","@stdlib/utils/every-own-by":"1uE","@stdlib/utils-every-own-by":"1uF","@stdlib/utils/none-in-by":"1uG","@stdlib/utils-none-in-by":"1uH","@stdlib/utils/parse-ndjson":"1uI","@stdlib/utils-parse-ndjson":"1uJ","@stdlib/utils/some-own-by":"1uK","@stdlib/utils-some-own-by":"1uL","@stdlib/array/base/mskfilter-map":"1uM","@stdlib/array-base-mskfilter-map":"1uN","@stdlib/array/base/mskreject-map":"1uO","@stdlib/array-base-mskreject-map":"1uP","@stdlib/array/bool":"1uQ","@stdlib/array-bool":"1uR","@stdlib/assert/napi/has-property":"1uS","@stdlib/assert-napi-has-property":"1uT","@stdlib/blas/base/dger":"1uU","@stdlib/blas-base-dger":"1uV","@stdlib/blas/base/drot":"1uW","@stdlib/blas-base-drot":"1uX","@stdlib/blas/base/idamax":"1uY","@stdlib/blas-base-idamax":"1uZ","@stdlib/blas/base/isamax":"1ua","@stdlib/blas-base-isamax":"1ub","@stdlib/blas/base/shared":"1uc","@stdlib/blas-base-shared":"1ud","@stdlib/blas/base/srot":"1ue","@stdlib/blas-base-srot":"1uf","@stdlib/blas/base/xerbla":"1ug","@stdlib/blas-base-xerbla":"1uh","@stdlib/complex/float32/base/assert/is-equal":"1ui","@stdlib/complex-float32-base-assert-is-equal":"1uj","@stdlib/complex/float32/base/assert/is-not-equal":"1uk","@stdlib/complex-float32-base-assert-is-not-equal":"1ul","@stdlib/complex/float32/base/assert/is-same-value-zero":"1um","@stdlib/complex-float32-base-assert-is-same-value-zero":"1un","@stdlib/complex/float32/base/assert/is-same-value":"1uo","@stdlib/complex-float32-base-assert-is-same-value":"1up","@stdlib/complex/float32":"1uq","@stdlib/complex/float64/base/assert/is-not-equal":"1us","@stdlib/complex-float64-base-assert-is-not-equal":"1ut","@stdlib/complex/float64/base/assert/is-same-value-zero":"1uu","@stdlib/complex-float64-base-assert-is-same-value-zero":"1uv","@stdlib/complex/float64/base/assert/is-same-value":"1uw","@stdlib/complex-float64-base-assert-is-same-value":"1ux","@stdlib/complex/float64":"1uy","@stdlib/constants/float32/phi":"1v0","@stdlib/constants-float32-phi":"1v1","@stdlib/fs/append-file":"1v2","@stdlib/fs-append-file":"1v3","@stdlib/math/base/special/acscdf":"1v4","@stdlib/math-base-special-acscdf":"1v5","@stdlib/math/base/special/asecdf":"1v6","@stdlib/math-base-special-asecdf":"1v7","@stdlib/math/base/special/asindf":"1v8","@stdlib/math-base-special-asindf":"1v9","@stdlib/math/base/special/kernel-log1p":"1vA","@stdlib/math-base-special-kernel-log1p":"1vB","@stdlib/math/base/special/rcbrtf":"1vC","@stdlib/math-base-special-rcbrtf":"1vD","@stdlib/math/base/tools/normhermitepolyf":"1vE","@stdlib/math-base-tools-normhermitepolyf":"1vF","@stdlib/napi/argv-complex128":"1vG","@stdlib/napi-argv-complex128":"1vH","@stdlib/napi/argv-complex64":"1vI","@stdlib/napi-argv-complex64":"1vJ","@stdlib/napi/create-complex-like":"1vK","@stdlib/napi-create-complex-like":"1vL","@stdlib/napi/create-double":"1vM","@stdlib/napi-create-double":"1vN","@stdlib/napi/create-int32":"1vO","@stdlib/napi-create-int32":"1vP","@stdlib/napi/create-uint32":"1vQ","@stdlib/napi-create-uint32":"1vR","@stdlib/string/base/for-each-code-point-right":"1vS","@stdlib/string-base-for-each-code-point-right":"1vT","@stdlib/string/last":"1vU","@stdlib/string-last":"1vV","@stdlib/assert/is-booleanarray":"1vW","@stdlib/assert-is-booleanarray":"1vX","@stdlib/blas/base/assert/is-layout":"1vY","@stdlib/blas-base-assert-is-layout":"1vZ","@stdlib/blas/base/assert/is-matrix-triangle":"1va","@stdlib/blas-base-assert-is-matrix-triangle":"1vb","@stdlib/blas/base/assert/is-transpose-operation":"1vc","@stdlib/blas-base-assert-is-transpose-operation":"1vd","@stdlib/blas/base/assert":"1ve","@stdlib/blas-base-assert":"1vf","@stdlib/blas/base/cscal":"1vg","@stdlib/blas-base-cscal":"1vh","@stdlib/blas/base/dcabs1":"1vi","@stdlib/blas-base-dcabs1":"1vj","@stdlib/blas/base/diagonal-types":"1vk","@stdlib/blas-base-diagonal-types":"1vl","@stdlib/blas/base/layout-enum2str":"1vm","@stdlib/blas-base-layout-enum2str":"1vn","@stdlib/blas/base/layout-resolve-enum":"1vo","@stdlib/blas-base-layout-resolve-enum":"1vp","@stdlib/blas/base/layout-resolve-str":"1vq","@stdlib/blas-base-layout-resolve-str":"1vr","@stdlib/blas/base/layout-str2enum":"1vs","@stdlib/blas-base-layout-str2enum":"1vt","@stdlib/blas/base/layouts":"1vu","@stdlib/blas-base-layouts":"1vv","@stdlib/blas/base/matrix-triangles":"1vw","@stdlib/blas-base-matrix-triangles":"1vx","@stdlib/blas/base/operation-sides":"1vy","@stdlib/blas-base-operation-sides":"1vz","@stdlib/blas/base/scabs1":"1w0","@stdlib/blas-base-scabs1":"1w1","@stdlib/blas/base/transpose-operations":"1w2","@stdlib/blas-base-transpose-operations":"1w3","@stdlib/strided/base/reinterpret-boolean":"1w4","@stdlib/strided-base-reinterpret-boolean":"1w5","@stdlib/array/base/assert/is-boolean-data-type":"1w6","@stdlib/array-base-assert-is-boolean-data-type":"1w7","@stdlib/array/base/assert/is-booleanarray":"1w8","@stdlib/array-base-assert-is-booleanarray":"1w9","@stdlib/array/base/cuany":"1wA","@stdlib/array-base-cuany":"1wB","@stdlib/array/base/cuevery":"1wC","@stdlib/array-base-cuevery":"1wD","@stdlib/array/base/mskput":"1wE","@stdlib/array-base-mskput":"1wF","@stdlib/array/base/place":"1wG","@stdlib/array-base-place":"1wH","@stdlib/array/base/put":"1wI","@stdlib/array-base-put":"1wJ","@stdlib/array/base/where":"1wK","@stdlib/array-base-where":"1wL","@stdlib/array/mskput":"1wM","@stdlib/array-mskput":"1wN","@stdlib/array/place":"1wO","@stdlib/array-place":"1wP","@stdlib/array/put":"1wQ","@stdlib/array-put":"1wR","@stdlib/assert/is-same-booleanarray":"1wS","@stdlib/assert-is-same-booleanarray":"1wT","@stdlib/blas/base/assert/is-diagonal-type":"1wU","@stdlib/blas-base-assert-is-diagonal-type":"1wV","@stdlib/blas/base/assert/is-operation-side":"1wW","@stdlib/blas-base-assert-is-operation-side":"1wX","@stdlib/blas/base/scnrm2":"1wY","@stdlib/blas-base-scnrm2":"1wZ","@stdlib/blas/base/srotm":"1wa","@stdlib/blas-base-srotm":"1wb","@stdlib/blas/base/sspmv":"1wc","@stdlib/blas-base-sspmv":"1wd","@stdlib/blas/base/ssymv":"1we","@stdlib/blas-base-ssymv":"1wf","@stdlib/blas/base/transpose-operation-enum2str":"1wg","@stdlib/blas-base-transpose-operation-enum2str":"1wh","@stdlib/blas/base/transpose-operation-resolve-enum":"1wi","@stdlib/blas-base-transpose-operation-resolve-enum":"1wj","@stdlib/blas/base/transpose-operation-resolve-str":"1wk","@stdlib/blas-base-transpose-operation-resolve-str":"1wl","@stdlib/blas/base/transpose-operation-str2enum":"1wm","@stdlib/blas-base-transpose-operation-str2enum":"1wn","@stdlib/blas/base/zscal":"1wo","@stdlib/blas-base-zscal":"1wp","@stdlib/math/base/special/lnf":"1wq","@stdlib/math-base-special-lnf":"1wr","@stdlib/math/base/special/nanmax":"1ws","@stdlib/math-base-special-nanmax":"1wt","@stdlib/math/base/special/nanmin":"1wu","@stdlib/math-base-special-nanmin":"1wv","@stdlib/array/base/cunone":"1ww","@stdlib/array-base-cunone":"1wx","@stdlib/blas/base/diagonal-type-enum2str":"1wy","@stdlib/blas-base-diagonal-type-enum2str":"1wz","@stdlib/blas/base/diagonal-type-resolve-enum":"1x0","@stdlib/blas-base-diagonal-type-resolve-enum":"1x1","@stdlib/blas/base/diagonal-type-resolve-str":"1x2","@stdlib/blas-base-diagonal-type-resolve-str":"1x3","@stdlib/blas/base/diagonal-type-str2enum":"1x4","@stdlib/blas-base-diagonal-type-str2enum":"1x5","@stdlib/blas/base/drotm":"1x6","@stdlib/blas-base-drotm":"1x7","@stdlib/blas/base/dspmv":"1x8","@stdlib/blas-base-dspmv":"1x9","@stdlib/blas/base/dsymv":"1xA","@stdlib/blas-base-dsymv":"1xB","@stdlib/blas/base/matrix-triangle-enum2str":"1xC","@stdlib/blas-base-matrix-triangle-enum2str":"1xD","@stdlib/blas/base/matrix-triangle-resolve-enum":"1xE","@stdlib/blas-base-matrix-triangle-resolve-enum":"1xF","@stdlib/blas/base/matrix-triangle-resolve-str":"1xG","@stdlib/blas-base-matrix-triangle-resolve-str":"1xH","@stdlib/blas/base/matrix-triangle-str2enum":"1xI","@stdlib/blas-base-matrix-triangle-str2enum":"1xJ","@stdlib/blas/base/operation-side-enum2str":"1xK","@stdlib/blas-base-operation-side-enum2str":"1xL","@stdlib/blas/base/operation-side-resolve-enum":"1xM","@stdlib/blas-base-operation-side-resolve-enum":"1xN","@stdlib/blas/base/operation-side-resolve-str":"1xO","@stdlib/blas-base-operation-side-resolve-str":"1xP","@stdlib/blas/base/operation-side-str2enum":"1xQ","@stdlib/blas-base-operation-side-str2enum":"1xR","@stdlib/iter/cuany":"1xS","@stdlib/iter-cuany":"1xT","@stdlib/strided/base/stride2offset":"1xU","@stdlib/strided-base-stride2offset":"1xV","@stdlib/utils/async/parallel":"1xW","@stdlib/utils-async-parallel":"1xX","@stdlib/blas/base/csrot":"1xY","@stdlib/blas-base-csrot":"1xZ","@stdlib/blas/base/dznrm2":"1xa","@stdlib/blas-base-dznrm2":"1xb","@stdlib/blas/base/zaxpy":"1xc","@stdlib/blas-base-zaxpy":"1xd","@stdlib/blas/base/zdrot":"1xe","@stdlib/blas-base-zdrot":"1xf","@stdlib/lapack/base/dlaswp":"1xg","@stdlib/lapack-base-dlaswp":"1xh","@stdlib/lapack/base":"1xi","@stdlib/lapack-base":"1xj","@stdlib/lapack":"1xl","@stdlib/ndarray/base/assert/is-boolean-data-type":"1xm","@stdlib/ndarray-base-assert-is-boolean-data-type":"1xn","@stdlib/blas/base/caxpy":"1xo","@stdlib/blas-base-caxpy":"1xp","@stdlib/blas/base/scasum":"1xq","@stdlib/blas-base-scasum":"1xr","@stdlib/complex/float32/base/add":"1xs","@stdlib/complex-float32-base-add":"1xt","@stdlib/complex/float32/base/assert":"1xu","@stdlib/complex-float32-base-assert":"1xv","@stdlib/complex/float32/base/mul":"1xw","@stdlib/complex-float32-base-mul":"1xx","@stdlib/complex/float32/base":"1xy","@stdlib/complex-float32-base":"1xz","@stdlib/complex/float32/conj":"1y0","@stdlib/complex-float32-conj":"1y1","@stdlib/complex/float32/imag":"1y2","@stdlib/complex-float32-imag":"1y3","@stdlib/complex/float32/real":"1y4","@stdlib/complex-float32-real":"1y5","@stdlib/complex/float32/reim":"1y6","@stdlib/complex-float32-reim":"1y7","@stdlib/complex/float64/base/add":"1y8","@stdlib/complex-float64-base-add":"1y9","@stdlib/complex/float64/base/assert":"1yA","@stdlib/complex-float64-base-assert":"1yB","@stdlib/complex/float64/base/mul":"1yC","@stdlib/complex-float64-base-mul":"1yD","@stdlib/complex/float64/base":"1yE","@stdlib/complex-float64-base":"1yF","@stdlib/complex/float64/conj":"1yG","@stdlib/complex-float64-conj":"1yH","@stdlib/complex/float64/imag":"1yI","@stdlib/complex-float64-imag":"1yJ","@stdlib/complex/float64/real":"1yK","@stdlib/complex-float64-real":"1yL","@stdlib/complex/float64/reim":"1yM","@stdlib/complex-float64-reim":"1yN","@stdlib/constants/float64/max-safe-nth-factorial":"1yO","@stdlib/constants-float64-max-safe-nth-factorial":"1yP","@stdlib/math/base/special/fmod":"1yQ","@stdlib/math-base-special-fmod":"1yR","@stdlib/fs/resolve-parent-paths":"1yS","@stdlib/fs-resolve-parent-paths":"1yT","@stdlib/iter/cusome":"1yU","@stdlib/iter-cusome":"1yV","@stdlib/ndarray/base/for-each":"1yW","@stdlib/ndarray-base-for-each":"1yX","@stdlib/blas/base/dgemv":"1yY","@stdlib/blas-base-dgemv":"1yZ","@stdlib/blas/base/dsyr":"1ya","@stdlib/blas-base-dsyr":"1yb","@stdlib/blas/base/dsyr2":"1yc","@stdlib/blas-base-dsyr2":"1yd","@stdlib/blas/base/dtrmv":"1ye","@stdlib/blas-base-dtrmv":"1yf","@stdlib/blas/base/sgemv":"1yg","@stdlib/blas-base-sgemv":"1yh","@stdlib/blas/base/ssyr":"1yi","@stdlib/blas-base-ssyr":"1yj","@stdlib/blas/base/ssyr2":"1yk","@stdlib/blas-base-ssyr2":"1yl","@stdlib/blas/base/strmv":"1ym","@stdlib/blas-base-strmv":"1yn","@stdlib/lapack/base/dlacpy":"1yo","@stdlib/lapack-base-dlacpy":"1yp","@stdlib/lapack/base/dlassq":"1yq","@stdlib/lapack-base-dlassq":"1yr","@stdlib/lapack/base/dpttrf":"1ys","@stdlib/lapack-base-dpttrf":"1yt","@stdlib/lapack/base/slacpy":"1yu","@stdlib/lapack-base-slacpy":"1yv","@stdlib/lapack/base/spttrf":"1yw","@stdlib/lapack-base-spttrf":"1yx","@stdlib/array/base/remove-at":"1yy","@stdlib/array-base-remove-at":"1yz","@stdlib/array/base/without":"1z0","@stdlib/array-base-without":"1z1","@stdlib/blas/base/dgemm":"1z2","@stdlib/blas-base-dgemm":"1z3","@stdlib/blas/base/dtrsv":"1z4","@stdlib/blas-base-dtrsv":"1z5","@stdlib/blas/base/sgemm":"1z6","@stdlib/blas-base-sgemm":"1z7","@stdlib/blas/base/sspr":"1z8","@stdlib/blas-base-sspr":"1z9","@stdlib/blas/base/strsv":"1zA","@stdlib/blas-base-strsv":"1zB","@stdlib/constants/float32/max-base2-exponent-subnormal":"1zC","@stdlib/constants-float32-max-base2-exponent-subnormal":"1zD","@stdlib/constants/float32/max-base2-exponent":"1zE","@stdlib/constants-float32-max-base2-exponent":"1zF","@stdlib/constants/float32/min-base2-exponent-subnormal":"1zG","@stdlib/constants-float32-min-base2-exponent-subnormal":"1zH","@stdlib/iter/cunone-by":"1zI","@stdlib/iter-cunone-by":"1zJ","@stdlib/lapack/base/dge-trans":"1zK","@stdlib/lapack-base-dge-trans":"1zL","@stdlib/lapack/base/sge-trans":"1zM","@stdlib/lapack-base-sge-trans":"1zN","@stdlib/lapack/base/slaswp":"1zO","@stdlib/lapack-base-slaswp":"1zP","@stdlib/math/base/assert/is-integerf":"1zQ","@stdlib/math-base-assert-is-integerf":"1zR","@stdlib/math/base/special/roundf":"1zS","@stdlib/math-base-special-roundf":"1zT","@stdlib/ndarray/base/map":"1zU","@stdlib/ndarray-base-map":"1zV","@stdlib/ndarray/base/ndarraylike2ndarray":"1zW","@stdlib/ndarray-base-ndarraylike2ndarray":"1zX","@stdlib/ndarray/iter/interleave-subarrays":"1zY","@stdlib/ndarray-iter-interleave-subarrays":"1zZ","@stdlib/ndarray/iter/select-dimension":"1za","@stdlib/ndarray-iter-select-dimension":"1zb","@stdlib/ndarray/iter/stacks":"1zc","@stdlib/ndarray-iter-stacks":"1zd","@stdlib/ndarray/iter/subarrays":"1ze","@stdlib/ndarray-iter-subarrays":"1zf","@stdlib/ndarray/ndarraylike2ndarray":"1zg","@stdlib/ndarray-ndarraylike2ndarray":"1zh","@stdlib/array/base/assert/has-equal-values-indexed":"1zi","@stdlib/array-base-assert-has-equal-values-indexed":"1zj","@stdlib/array/base/assert/has-equal-values":"1zk","@stdlib/array-base-assert-has-equal-values":"1zl","@stdlib/assert/has-atob-support":"1zm","@stdlib/assert-has-atob-support":"1zn","@stdlib/assert/has-btoa-support":"1zo","@stdlib/assert-has-btoa-support":"1zp","@stdlib/assert/is-equal-array":"1zq","@stdlib/assert-is-equal-array":"1zr","@stdlib/assert/is-same-accessor-array":"1zs","@stdlib/assert-is-same-accessor-array":"1zt","@stdlib/assert/is-same-array-like-object":"1zu","@stdlib/assert-is-same-array-like-object":"1zv","@stdlib/assert/is-same-array-like":"1zw","@stdlib/assert-is-same-array-like":"1zx","@stdlib/assert/is-wasm-memory":"1zy","@stdlib/assert-is-wasm-memory":"1zz","@stdlib/blas/base/daxpy-wasm":"200","@stdlib/blas-base-daxpy-wasm":"201","@stdlib/blas/base/dspr":"202","@stdlib/blas-base-dspr":"203","@stdlib/blas/ext/base/cfill":"204","@stdlib/blas-ext-base-cfill":"205","@stdlib/constants/float32/max-safe-nth-factorial":"206","@stdlib/constants-float32-max-safe-nth-factorial":"207","@stdlib/constants/float32/max-safe-nth-fibonacci":"208","@stdlib/constants-float32-max-safe-nth-fibonacci":"209","@stdlib/constants/float64/num-high-word-significand-bits":"20A","@stdlib/constants-float64-num-high-word-significand-bits":"20B","@stdlib/lapack/base/dlamch":"20C","@stdlib/lapack-base-dlamch":"20D","@stdlib/math/base/assert/is-nonnegative-integerf":"20E","@stdlib/math-base-assert-is-nonnegative-integerf":"20F","@stdlib/math/base/special/acotdf":"20G","@stdlib/math-base-special-acotdf":"20H","@stdlib/math/base/special/acovercosf":"20I","@stdlib/math-base-special-acovercosf":"20J","@stdlib/math/base/special/acoversinf":"20K","@stdlib/math-base-special-acoversinf":"20L","@stdlib/math/base/special/atandf":"20M","@stdlib/math-base-special-atandf":"20N","@stdlib/math/base/special/avercosf":"20O","@stdlib/math-base-special-avercosf":"20P","@stdlib/math/base/special/aversinf":"20Q","@stdlib/math-base-special-aversinf":"20R","@stdlib/math/base/special/ldexpf":"20S","@stdlib/math-base-special-ldexpf":"20T","@stdlib/math/base/special/logf":"20U","@stdlib/math-base-special-logf":"20V","@stdlib/math/base/special/maxabsf":"20W","@stdlib/math-base-special-maxabsf":"20X","@stdlib/math/base/special/maxf":"20Y","@stdlib/math-base-special-maxf":"20Z","@stdlib/math/base/special/minabsf":"20a","@stdlib/math-base-special-minabsf":"20b","@stdlib/math/base/special/minf":"20c","@stdlib/math-base-special-minf":"20d","@stdlib/math/base/special/xlogyf":"20e","@stdlib/math-base-special-xlogyf":"20f","@stdlib/napi/argv-strided-complex128array2d":"20g","@stdlib/napi-argv-strided-complex128array2d":"20h","@stdlib/napi/argv-strided-complex64array2d":"20i","@stdlib/napi-argv-strided-complex64array2d":"20j","@stdlib/napi/argv-strided-float32array2d":"20k","@stdlib/napi-argv-strided-float32array2d":"20l","@stdlib/napi/argv-strided-float64array2d":"20m","@stdlib/napi-argv-strided-float64array2d":"20n","@stdlib/napi/argv-strided-int16array2d":"20o","@stdlib/napi-argv-strided-int16array2d":"20p","@stdlib/napi/argv-strided-int32array2d":"20q","@stdlib/napi-argv-strided-int32array2d":"20r","@stdlib/napi/argv-strided-int8array2d":"20s","@stdlib/napi-argv-strided-int8array2d":"20t","@stdlib/napi/argv-strided-uint16array2d":"20u","@stdlib/napi-argv-strided-uint16array2d":"20v","@stdlib/napi/argv-strided-uint32array2d":"20w","@stdlib/napi-argv-strided-uint32array2d":"20x","@stdlib/napi/argv-strided-uint8array2d":"20y","@stdlib/napi-argv-strided-uint8array2d":"20z","@stdlib/ndarray/base/assert/has-equal-shape":"210","@stdlib/ndarray-base-assert-has-equal-shape":"211","@stdlib/ndarray/base/fill":"212","@stdlib/ndarray-base-fill":"213","@stdlib/ndarray/base/to-reversed":"214","@stdlib/ndarray-base-to-reversed":"215","@stdlib/strided/base/read-dataview":"216","@stdlib/strided-base-read-dataview":"217","@stdlib/strided/base/strided2object":"218","@stdlib/strided-base-strided2object":"219","@stdlib/strided/base/write-dataview":"21A","@stdlib/strided-base-write-dataview":"21B","@stdlib/string/base/atob":"21C","@stdlib/string-base-atob":"21D","@stdlib/wasm/base/array2dtype":"21E","@stdlib/wasm-base-array2dtype":"21F","@stdlib/wasm/base/arrays2ptrs":"21G","@stdlib/wasm-base-arrays2ptrs":"21H","@stdlib/wasm/base/dtype2wasm":"21I","@stdlib/wasm-base-dtype2wasm":"21J","@stdlib/wasm/base":"21K","@stdlib/wasm-base":"21L","@stdlib/wasm/base/strided2object":"21M","@stdlib/wasm-base-strided2object":"21N","@stdlib/wasm/memory":"21O","@stdlib/wasm-memory":"21P","@stdlib/wasm/module-wrapper":"21Q","@stdlib/wasm-module-wrapper":"21R","@stdlib/wasm":"21T","@stdlib/array/base/cunone-by-right":"21U","@stdlib/array-base-cunone-by-right":"21V","@stdlib/array/base/cunone-by":"21W","@stdlib/array-base-cunone-by":"21X","@stdlib/array/base/cusome-by-right":"21Y","@stdlib/array-base-cusome-by-right":"21Z","@stdlib/array/fixed-endian-float64":"21a","@stdlib/array-fixed-endian-float64":"21b","@stdlib/assert/is-ndarray-like-with-data-type":"21c","@stdlib/assert-is-ndarray-like-with-data-type":"21d","@stdlib/blas/ext/base/zfill":"21e","@stdlib/blas-ext-base-zfill":"21f","@stdlib/blas/tools":"21g","@stdlib/blas-tools":"21h","@stdlib/blas/tools/swap-factory":"21i","@stdlib/blas-tools-swap-factory":"21j","@stdlib/constants/float32/max-safe-fibonacci":"21k","@stdlib/constants-float32-max-safe-fibonacci":"21l","@stdlib/string/base/base64-to-uint8array":"21m","@stdlib/string-base-base64-to-uint8array":"21n","@stdlib/array/base/assert/is-byte-order":"21o","@stdlib/array-base-assert-is-byte-order":"21p","@stdlib/array/base/cuany-by-right":"21q","@stdlib/array-base-cuany-by-right":"21r","@stdlib/array/base/cuany-by":"21s","@stdlib/array-base-cuany-by":"21t","@stdlib/array/base/cuevery-by":"21u","@stdlib/array-base-cuevery-by":"21v","@stdlib/array/base/cusome-by":"21w","@stdlib/array-base-cusome-by":"21x","@stdlib/array/base/cusome":"21y","@stdlib/array-base-cusome":"21z","@stdlib/array/base/nulls":"220","@stdlib/array-base-nulls":"221","@stdlib/array/byte-orders":"222","@stdlib/array-byte-orders":"223","@stdlib/array/fixed-endian-factory":"224","@stdlib/array-fixed-endian-factory":"225","@stdlib/array/fixed-endian-float32":"226","@stdlib/array-fixed-endian-float32":"227","@stdlib/array/little-endian-factory":"228","@stdlib/array-little-endian-factory":"229","@stdlib/array/little-endian-float32":"22A","@stdlib/array-little-endian-float32":"22B","@stdlib/array/little-endian-float64":"22C","@stdlib/array-little-endian-float64":"22D","@stdlib/array/base/cuevery-by-right":"22E","@stdlib/array-base-cuevery-by-right":"22F","@stdlib/array/base/mskbinary3d":"22G","@stdlib/array-base-mskbinary3d":"22H","@stdlib/assert/is-same-typed-array-like":"22I","@stdlib/assert-is-same-typed-array-like":"22J","@stdlib/blas/base/ccopy-wasm":"22K","@stdlib/blas-base-ccopy-wasm":"22L","@stdlib/blas/base/cscal-wasm":"22M","@stdlib/blas-base-cscal-wasm":"22N","@stdlib/blas/base/csrot-wasm":"22O","@stdlib/blas-base-csrot-wasm":"22P","@stdlib/blas/base/cswap-wasm":"22Q","@stdlib/blas-base-cswap-wasm":"22R","@stdlib/blas/base/dasum-wasm":"22S","@stdlib/blas-base-dasum-wasm":"22T","@stdlib/blas/base/dcopy-wasm":"22U","@stdlib/blas-base-dcopy-wasm":"22V","@stdlib/blas/base/ddot-wasm":"22W","@stdlib/blas-base-ddot-wasm":"22X","@stdlib/blas/base/dnrm2-wasm":"22Y","@stdlib/blas-base-dnrm2-wasm":"22Z","@stdlib/blas/base/drot-wasm":"22a","@stdlib/blas-base-drot-wasm":"22b","@stdlib/blas/base/drotm-wasm":"22c","@stdlib/blas-base-drotm-wasm":"22d","@stdlib/blas/base/dscal-wasm":"22e","@stdlib/blas-base-dscal-wasm":"22f","@stdlib/blas/base/dswap-wasm":"22g","@stdlib/blas-base-dswap-wasm":"22h","@stdlib/blas/base/idamax-wasm":"22i","@stdlib/blas-base-idamax-wasm":"22j","@stdlib/blas/base/sasum-wasm":"22k","@stdlib/blas-base-sasum-wasm":"22l","@stdlib/blas/base/saxpy-wasm":"22m","@stdlib/blas-base-saxpy-wasm":"22n","@stdlib/blas/base/scopy-wasm":"22o","@stdlib/blas-base-scopy-wasm":"22p","@stdlib/blas/base/sdot-wasm":"22q","@stdlib/blas-base-sdot-wasm":"22r","@stdlib/blas/base/snrm2-wasm":"22s","@stdlib/blas-base-snrm2-wasm":"22t","@stdlib/blas/base/srot-wasm":"22u","@stdlib/blas-base-srot-wasm":"22v","@stdlib/blas/ext/base/dapxsumkbn-wasm":"22w","@stdlib/blas-ext-base-dapxsumkbn-wasm":"22x","@stdlib/constants/float32/e":"22y","@stdlib/constants-float32-e":"22z","@stdlib/constants/float32/half-ln-two":"230","@stdlib/constants-float32-half-ln-two":"231","@stdlib/constants/float32/ln-two":"232","@stdlib/constants-float32-ln-two":"233","@stdlib/constants/float32/max-base10-exponent-subnormal":"234","@stdlib/constants-float32-max-base10-exponent-subnormal":"235","@stdlib/constants/float32/max-base10-exponent":"236","@stdlib/constants-float32-max-base10-exponent":"237","@stdlib/constants/float32/min-base10-exponent-subnormal":"238","@stdlib/constants-float32-min-base10-exponent-subnormal":"239","@stdlib/constants/float32/min-base10-exponent":"23A","@stdlib/constants-float32-min-base10-exponent":"23B","@stdlib/constants/float32/min-base2-exponent":"23C","@stdlib/constants-float32-min-base2-exponent":"23D","@stdlib/constants/float64/max-safe-nth-double-factorial":"23E","@stdlib/constants-float64-max-safe-nth-double-factorial":"23F","@stdlib/fs/read-ndjson":"23G","@stdlib/fs-read-ndjson":"23H","@stdlib/iter/cuany-by":"23I","@stdlib/iter-cuany-by":"23J","@stdlib/iter/cuevery-by":"23K","@stdlib/iter-cuevery-by":"23L","@stdlib/iter/cuevery":"23M","@stdlib/iter-cuevery":"23N","@stdlib/iter/cunone":"23O","@stdlib/iter-cunone":"23P","@stdlib/iter/cusome-by":"23Q","@stdlib/iter-cusome-by":"23R","@stdlib/math/base/assert/is-evenf":"23S","@stdlib/math-base-assert-is-evenf":"23T","@stdlib/math/base/special/acosdf":"23U","@stdlib/math-base-special-acosdf":"23V","@stdlib/math/base/special/ahavercosf":"23W","@stdlib/math-base-special-ahavercosf":"23X","@stdlib/math/base/special/ahaversinf":"23Y","@stdlib/math-base-special-ahaversinf":"23Z","@stdlib/math/base/special/cfloorf":"23a","@stdlib/math-base-special-cfloorf":"23b","@stdlib/math/base/special/croundf":"23c","@stdlib/math-base-special-croundf":"23d","@stdlib/math/base/special/fmodf":"23e","@stdlib/math-base-special-fmodf":"23f","@stdlib/math/base/special/gcdf":"23g","@stdlib/math-base-special-gcdf":"23h","@stdlib/math/base/special/nanmaxf":"23i","@stdlib/math-base-special-nanmaxf":"23j","@stdlib/math/base/special/nanminf":"23k","@stdlib/math-base-special-nanminf":"23l","@stdlib/math/base/special/sec":"23m","@stdlib/math-base-special-sec":"23n","@stdlib/array/base/broadcasted-quaternary3d":"23o","@stdlib/array-base-broadcasted-quaternary3d":"23p","@stdlib/array/base/broadcasted-quaternary4d":"23q","@stdlib/array-base-broadcasted-quaternary4d":"23r","@stdlib/array/base/broadcasted-quaternary5d":"23s","@stdlib/array-base-broadcasted-quaternary5d":"23t","@stdlib/array/base/broadcasted-quinary4d":"23u","@stdlib/array-base-broadcasted-quinary4d":"23v","@stdlib/array/base/broadcasted-ternary3d":"23w","@stdlib/array-base-broadcasted-ternary3d":"23x","@stdlib/array/base/broadcasted-ternary4d":"23y","@stdlib/array-base-broadcasted-ternary4d":"23z","@stdlib/array/base/broadcasted-ternary5d":"240","@stdlib/array-base-broadcasted-ternary5d":"241","@stdlib/array/base/mskbinary4d":"242","@stdlib/array-base-mskbinary4d":"243","@stdlib/array/base/mskbinary5d":"244","@stdlib/array-base-mskbinary5d":"245","@stdlib/array/base/mskunary4d":"246","@stdlib/array-base-mskunary4d":"247","@stdlib/array/base/mskunary5d":"248","@stdlib/array-base-mskunary5d":"249","@stdlib/array/base/unary3d-by":"24A","@stdlib/array-base-unary3d-by":"24B","@stdlib/array/base/unary4d-by":"24C","@stdlib/array-base-unary4d-by":"24D","@stdlib/array/base/unary5d-by":"24E","@stdlib/array-base-unary5d-by":"24F","@stdlib/constants/float32/ln-half":"24G","@stdlib/constants-float32-ln-half":"24H","@stdlib/constants/float32/ln-pi":"24I","@stdlib/constants-float32-ln-pi":"24J","@stdlib/constants/float32/ln-ten":"24K","@stdlib/constants-float32-ln-ten":"24L","@stdlib/constants/float32/max-safe-nth-lucas":"24M","@stdlib/constants-float32-max-safe-nth-lucas":"24N","@stdlib/constants/float32/sqrt-half-pi":"24O","@stdlib/constants-float32-sqrt-half-pi":"24P","@stdlib/constants/float32/sqrt-half":"24Q","@stdlib/constants-float32-sqrt-half":"24R","@stdlib/constants/float32/sqrt-phi":"24S","@stdlib/constants-float32-sqrt-phi":"24T","@stdlib/constants/float32/sqrt-pi":"24U","@stdlib/constants-float32-sqrt-pi":"24V","@stdlib/constants/float32/sqrt-three":"24W","@stdlib/constants-float32-sqrt-three":"24X","@stdlib/constants/float32/sqrt-two-pi":"24Y","@stdlib/constants-float32-sqrt-two-pi":"24Z","@stdlib/constants/float32/sqrt-two":"24a","@stdlib/constants-float32-sqrt-two":"24b","@stdlib/constants/float64/max-safe-nth-tribonacci":"24c","@stdlib/constants-float64-max-safe-nth-tribonacci":"24d","@stdlib/math/base/assert/is-oddf":"24e","@stdlib/math-base-assert-is-oddf":"24f","@stdlib/math/base/special/lcmf":"24g","@stdlib/math-base-special-lcmf":"24h","@stdlib/math/base/special/negalucasf":"24i","@stdlib/math-base-special-negalucasf":"24j","@stdlib/math/base/special/nonfibonaccif":"24k","@stdlib/math-base-special-nonfibonaccif":"24l","@stdlib/math/base/special/sqrtpif":"24m","@stdlib/math-base-special-sqrtpif":"24n","@stdlib/ndarray/base/from-scalar-like":"24o","@stdlib/ndarray-base-from-scalar-like":"24p","@stdlib/ndarray/base/min-signed-integer-dtype":"24q","@stdlib/ndarray-base-min-signed-integer-dtype":"24r","@stdlib/ndarray/base/min-unsigned-integer-dtype":"24s","@stdlib/ndarray-base-min-unsigned-integer-dtype":"24t","@stdlib/ndarray/filter-map":"24u","@stdlib/ndarray-filter-map":"24v","@stdlib/ndarray/filter":"24w","@stdlib/ndarray-filter":"24x","@stdlib/ndarray/for-each":"24y","@stdlib/ndarray-for-each":"24z","@stdlib/ndarray/index":"250","@stdlib/ndarray-index":"251","@stdlib/ndarray/map":"252","@stdlib/ndarray-map":"253","@stdlib/ndarray/reject":"254","@stdlib/ndarray-reject":"255","@stdlib/ndarray/to-fancy":"256","@stdlib/ndarray-to-fancy":"257","@stdlib/ndarray/to-json":"258","@stdlib/ndarray-to-json":"259","@stdlib/stats/base/dists/planck/cdf":"25A","@stdlib/stats-base-dists-planck-cdf":"25B","@stdlib/stats/base/dists/planck/entropy":"25C","@stdlib/stats-base-dists-planck-entropy":"25D","@stdlib/stats/base/dists/planck/kurtosis":"25E","@stdlib/stats-base-dists-planck-kurtosis":"25F","@stdlib/stats/base/dists/planck/logcdf":"25G","@stdlib/stats-base-dists-planck-logcdf":"25H","@stdlib/stats/base/dists/planck/logpmf":"25I","@stdlib/stats-base-dists-planck-logpmf":"25J","@stdlib/stats/base/dists/planck/mean":"25K","@stdlib/stats-base-dists-planck-mean":"25L","@stdlib/stats/base/dists/planck/median":"25M","@stdlib/stats-base-dists-planck-median":"25N","@stdlib/stats/base/dists/planck/mode":"25O","@stdlib/stats-base-dists-planck-mode":"25P","@stdlib/stats/base/dists/planck/pmf":"25Q","@stdlib/stats-base-dists-planck-pmf":"25R","@stdlib/stats/base/dists/planck/quantile":"25S","@stdlib/stats-base-dists-planck-quantile":"25T","@stdlib/stats/base/dists/planck/skewness":"25U","@stdlib/stats-base-dists-planck-skewness":"25V","@stdlib/stats/base/dists/planck/stdev":"25W","@stdlib/stats-base-dists-planck-stdev":"25X","@stdlib/stats/base/dists/planck/variance":"25Y","@stdlib/stats-base-dists-planck-variance":"25Z","@stdlib/array/base/assert/is-sorted-ascending":"25a","@stdlib/array-base-assert-is-sorted-ascending":"25b","@stdlib/array/base/fill":"25c","@stdlib/array-base-fill":"25d","@stdlib/array/base/indices-complement":"25e","@stdlib/array-base-indices-complement":"25f","@stdlib/array/base/mskfilter2":"25g","@stdlib/array-base-mskfilter2":"25h","@stdlib/array/base/mskfiltern":"25i","@stdlib/array-base-mskfiltern":"25j","@stdlib/array/base/scatter-filled":"25k","@stdlib/array-base-scatter-filled":"25l","@stdlib/array/base/scattered":"25m","@stdlib/array-base-scattered":"25n","@stdlib/array/base/take-indexed2":"25o","@stdlib/array-base-take-indexed2":"25p","@stdlib/math/base/assert/is-probabilityf":"25q","@stdlib/math-base-assert-is-probabilityf":"25r","@stdlib/math/base/special/dirac-deltaf":"25s","@stdlib/math-base-special-dirac-deltaf":"25t","@stdlib/ndarray/base/assert/is-column-major-string":"25u","@stdlib/ndarray-base-assert-is-column-major-string":"25v","@stdlib/ndarray/base/assert/is-row-major-string":"25w","@stdlib/ndarray-base-assert-is-row-major-string":"25x","@stdlib/ndarray/base/normalize-indices":"25y","@stdlib/ndarray-base-normalize-indices":"25z","@stdlib/ndarray/base/spread-dimensions":"260","@stdlib/ndarray-base-spread-dimensions":"261","@stdlib/ndarray/base/to-normalized-indices":"262","@stdlib/ndarray-base-to-normalized-indices":"263","@stdlib/ndarray/base/to-unique-normalized-indices":"264","@stdlib/ndarray-base-to-unique-normalized-indices":"265","@stdlib/blas/base/zdscal":"266","@stdlib/blas-base-zdscal":"267","@stdlib/lapack/base/zlacgv":"268","@stdlib/lapack-base-zlacgv":"269","@stdlib/lapack/base/zlacpy":"26A","@stdlib/lapack-base-zlacpy":"26B","@stdlib/lapack/base/zrot":"26C","@stdlib/lapack-base-zrot":"26D","@stdlib/math/base/special/heavisidef":"26E","@stdlib/math-base-special-heavisidef":"26F","@stdlib/ndarray/base/unary-accumulate":"26G","@stdlib/ndarray-base-unary-accumulate":"26H","@stdlib/stats/strided/dmax":"26I","@stdlib/stats-strided-dmax":"26J","@stdlib/array/base/for-each":"26K","@stdlib/array-base-for-each":"26L","@stdlib/blas/base/wasm/ccopy":"26M","@stdlib/blas-base-wasm-ccopy":"26N","@stdlib/blas/base/wasm/cscal":"26O","@stdlib/blas-base-wasm-cscal":"26P","@stdlib/blas/base/wasm/csrot":"26Q","@stdlib/blas-base-wasm-csrot":"26R","@stdlib/blas/base/wasm/cswap":"26S","@stdlib/blas-base-wasm-cswap":"26T","@stdlib/blas/base/wasm/dasum":"26U","@stdlib/blas-base-wasm-dasum":"26V","@stdlib/blas/base/wasm/daxpy":"26W","@stdlib/blas-base-wasm-daxpy":"26X","@stdlib/blas/base/wasm/dcopy":"26Y","@stdlib/blas-base-wasm-dcopy":"26Z","@stdlib/blas/base/wasm/ddot":"26a","@stdlib/blas-base-wasm-ddot":"26b","@stdlib/blas/base/wasm/dnrm2":"26c","@stdlib/blas-base-wasm-dnrm2":"26d","@stdlib/blas/base/wasm/drot":"26e","@stdlib/blas-base-wasm-drot":"26f","@stdlib/blas/base/wasm/drotm":"26g","@stdlib/blas-base-wasm-drotm":"26h","@stdlib/blas/base/wasm/dscal":"26i","@stdlib/blas-base-wasm-dscal":"26j","@stdlib/blas/base/wasm/dswap":"26k","@stdlib/blas-base-wasm-dswap":"26l","@stdlib/blas/base/wasm/idamax":"26m","@stdlib/blas-base-wasm-idamax":"26n","@stdlib/blas/base/wasm/isamax":"26o","@stdlib/blas-base-wasm-isamax":"26p","@stdlib/blas/base/wasm":"26q","@stdlib/blas-base-wasm":"26r","@stdlib/blas/base/wasm/sasum":"26s","@stdlib/blas-base-wasm-sasum":"26t","@stdlib/blas/base/wasm/saxpy":"26u","@stdlib/blas-base-wasm-saxpy":"26v","@stdlib/blas/base/wasm/scopy":"26w","@stdlib/blas-base-wasm-scopy":"26x","@stdlib/blas/base/wasm/sdot":"26y","@stdlib/blas-base-wasm-sdot":"26z","@stdlib/blas/base/wasm/snrm2":"270","@stdlib/blas-base-wasm-snrm2":"271","@stdlib/blas/base/wasm/srot":"272","@stdlib/blas-base-wasm-srot":"273","@stdlib/blas/base/wasm/sscal":"274","@stdlib/blas-base-wasm-sscal":"275","@stdlib/blas/base/wasm/zcopy":"276","@stdlib/blas-base-wasm-zcopy":"277","@stdlib/blas/base/wasm/zdrot":"278","@stdlib/blas-base-wasm-zdrot":"279","@stdlib/blas/base/wasm/zswap":"27A","@stdlib/blas-base-wasm-zswap":"27B","@stdlib/blas/ext/base/wasm/dapxsumkbn":"27C","@stdlib/blas-ext-base-wasm-dapxsumkbn":"27D","@stdlib/blas/ext/base/wasm":"27E","@stdlib/blas-ext-base-wasm":"27F","@stdlib/complex/float64/base/mul-add":"27G","@stdlib/complex-float64-base-mul-add":"27H","@stdlib/complex/float64/base/scale":"27I","@stdlib/complex-float64-base-scale":"27J","@stdlib/dstructs/circular-buffer":"27K","@stdlib/dstructs-circular-buffer":"27L","@stdlib/dstructs/compact-adjacency-matrix":"27M","@stdlib/dstructs-compact-adjacency-matrix":"27N","@stdlib/dstructs/doubly-linked-list":"27O","@stdlib/dstructs-doubly-linked-list":"27P","@stdlib/dstructs/fifo":"27Q","@stdlib/dstructs-fifo":"27R","@stdlib/dstructs/linked-list":"27S","@stdlib/dstructs-linked-list":"27T","@stdlib/dstructs/named-typed-tuple":"27U","@stdlib/dstructs-named-typed-tuple":"27V","@stdlib/dstructs":"27X","@stdlib/dstructs/stack":"27Y","@stdlib/dstructs-stack":"27Z","@stdlib/function/thunk":"27a","@stdlib/function-thunk":"27b","@stdlib/lapack/base/clacgv":"27c","@stdlib/lapack-base-clacgv":"27d","@stdlib/lapack/base/clacpy":"27e","@stdlib/lapack-base-clacpy":"27f","@stdlib/lapack/base/claset":"27g","@stdlib/lapack-base-claset":"27h","@stdlib/lapack/base/crot":"27i","@stdlib/lapack-base-crot":"27j","@stdlib/lapack/base/zlaset":"27k","@stdlib/lapack-base-zlaset":"27l","@stdlib/math/array":"27m","@stdlib/math-array":"27n","@stdlib/math/array/special/abs":"27o","@stdlib/math-array-special-abs":"27p","@stdlib/math/array/special":"27q","@stdlib/math-array-special":"27r","@stdlib/math/array/tools":"27s","@stdlib/math-array-tools":"27t","@stdlib/math/array/tools/unary-factory":"27u","@stdlib/math-array-tools-unary-factory":"27v","@stdlib/math/array/tools/unary":"27w","@stdlib/math-array-tools-unary":"27x","@stdlib/math/base/special/hyp2f1":"27y","@stdlib/math-base-special-hyp2f1":"27z","@stdlib/napi/argv-bool":"280","@stdlib/napi-argv-bool":"281","@stdlib/ndarray/base/assert/is-output-data-type-policy":"282","@stdlib/ndarray-base-assert-is-output-data-type-policy":"283","@stdlib/number/float32/base/add":"284","@stdlib/number-float32-base-add":"285","@stdlib/number/float32/base/div":"286","@stdlib/number-float32-base-div":"287","@stdlib/number/float32/base/mul":"288","@stdlib/number-float32-base-mul":"289","@stdlib/number/float32/base/sub":"28A","@stdlib/number-float32-base-sub":"28B","@stdlib/number/float64/base/add":"28C","@stdlib/number-float64-base-add":"28D","@stdlib/number/float64/base/add3":"28E","@stdlib/number-float64-base-add3":"28F","@stdlib/number/float64/base/add4":"28G","@stdlib/number-float64-base-add4":"28H","@stdlib/number/float64/base/add5":"28I","@stdlib/number-float64-base-add5":"28J","@stdlib/number/float64/base/div":"28K","@stdlib/number-float64-base-div":"28L","@stdlib/number/float64/base/mul":"28M","@stdlib/number-float64-base-mul":"28N","@stdlib/number/float64/base/sub":"28O","@stdlib/number-float64-base-sub":"28P","@stdlib/number/uint32/base/mul":"28Q","@stdlib/number-uint32-base-mul":"28R","@stdlib/stats/base/dists/bradford/cdf":"28S","@stdlib/stats-base-dists-bradford-cdf":"28T","@stdlib/stats/base/dists/bradford/entropy":"28U","@stdlib/stats-base-dists-bradford-entropy":"28V","@stdlib/stats/base/dists/bradford/mean":"28W","@stdlib/stats-base-dists-bradford-mean":"28X","@stdlib/stats/base/dists/bradford/median":"28Y","@stdlib/stats-base-dists-bradford-median":"28Z","@stdlib/stats/base/dists/bradford/mode":"28a","@stdlib/stats-base-dists-bradford-mode":"28b","@stdlib/stats/base/dists/bradford/stdev":"28c","@stdlib/stats-base-dists-bradford-stdev":"28d","@stdlib/stats/base/dists/bradford/variance":"28e","@stdlib/stats-base-dists-bradford-variance":"28f","@stdlib/stats/base/dists/planck/mgf":"28g","@stdlib/stats-base-dists-planck-mgf":"28h","@stdlib/stats/strided/dcumax":"28i","@stdlib/stats-strided-dcumax":"28j","@stdlib/stats/strided/dcumaxabs":"28k","@stdlib/stats-strided-dcumaxabs":"28l","@stdlib/stats/strided/dcuminabs":"28m","@stdlib/stats-strided-dcuminabs":"28n","@stdlib/stats/strided/dmaxabs":"28o","@stdlib/stats-strided-dmaxabs":"28p","@stdlib/stats/strided/dmaxabssorted":"28q","@stdlib/stats-strided-dmaxabssorted":"28r","@stdlib/stats/strided/dmaxsorted":"28s","@stdlib/stats-strided-dmaxsorted":"28t","@stdlib/stats/strided/dmeankbn":"28u","@stdlib/stats-strided-dmeankbn":"28v","@stdlib/stats/strided/dmeankbn2":"28w","@stdlib/stats-strided-dmeankbn2":"28x","@stdlib/stats/strided/dmeanli":"28y","@stdlib/stats-strided-dmeanli":"28z","@stdlib/stats/strided/dmeanlipw":"290","@stdlib/stats-strided-dmeanlipw":"291","@stdlib/stats/strided/dmeanors":"292","@stdlib/stats-strided-dmeanors":"293","@stdlib/stats/strided/dmeanpw":"294","@stdlib/stats-strided-dmeanpw":"295","@stdlib/stats/strided/dmeanwd":"296","@stdlib/stats-strided-dmeanwd":"297","@stdlib/stats/strided/dmediansorted":"298","@stdlib/stats-strided-dmediansorted":"299","@stdlib/stats/strided/dmidrange":"29A","@stdlib/stats-strided-dmidrange":"29B","@stdlib/stats/strided/dmin":"29C","@stdlib/stats-strided-dmin":"29D","@stdlib/stats/strided/dminabs":"29E","@stdlib/stats-strided-dminabs":"29F","@stdlib/stats/strided/dminsorted":"29G","@stdlib/stats-strided-dminsorted":"29H","@stdlib/stats/strided/dnanmax":"29I","@stdlib/stats-strided-dnanmax":"29J","@stdlib/stats/strided/dnanmaxabs":"29K","@stdlib/stats-strided-dnanmaxabs":"29L","@stdlib/stats/strided/dnanmean":"29M","@stdlib/stats-strided-dnanmean":"29N","@stdlib/array/base/banded/filled2d-by":"29O","@stdlib/array-base-banded-filled2d-by":"29P","@stdlib/array/base/banded/to-compact":"29Q","@stdlib/array-base-banded-to-compact":"29R","@stdlib/array/base/fill-by":"29S","@stdlib/array-base-fill-by":"29T","@stdlib/array/base/map":"29U","@stdlib/array-base-map":"29V","@stdlib/array/base/symmetric-banded/filled2d-by":"29W","@stdlib/array-base-symmetric-banded-filled2d-by":"29X","@stdlib/array/base/symmetric-banded/to-compact":"29Y","@stdlib/array-base-symmetric-banded-to-compact":"29Z","@stdlib/array/base/symmetric/filled2d-by":"29a","@stdlib/array-base-symmetric-filled2d-by":"29b","@stdlib/blas/base/wasm/srotm":"29c","@stdlib/blas-base-wasm-srotm":"29d","@stdlib/blas/ext/base/wasm/dapxsum":"29e","@stdlib/blas-ext-base-wasm-dapxsum":"29f","@stdlib/blas/ext/base/wasm/dapxsumors":"29g","@stdlib/blas-ext-base-wasm-dapxsumors":"29h","@stdlib/blas/ext/base/wasm/dapxsumpw":"29i","@stdlib/blas-ext-base-wasm-dapxsumpw":"29j","@stdlib/blas/ext/base/wasm/dasumpw":"29k","@stdlib/blas-ext-base-wasm-dasumpw":"29l","@stdlib/blas/ext/base/wasm/dnansumpw":"29m","@stdlib/blas-ext-base-wasm-dnansumpw":"29n","@stdlib/complex/float32/base/identity":"29o","@stdlib/complex-float32-base-identity":"29p","@stdlib/complex/float32/base/neg":"29q","@stdlib/complex-float32-base-neg":"29r","@stdlib/complex/float32/base/sub":"29s","@stdlib/complex-float32-base-sub":"29t","@stdlib/complex/float64/base/div":"29u","@stdlib/complex-float64-base-div":"29v","@stdlib/complex/float64/base/identity":"29w","@stdlib/complex-float64-base-identity":"29x","@stdlib/complex/float64/base/neg":"29y","@stdlib/complex-float64-base-neg":"29z","@stdlib/complex/float64/base/sub":"2A0","@stdlib/complex-float64-base-sub":"2A1","@stdlib/console/log-each-map":"2A2","@stdlib/console-log-each-map":"2A3","@stdlib/constants/float32/apery":"2A4","@stdlib/constants-float32-apery":"2A5","@stdlib/constants/float32/gamma-lanczos-g":"2A6","@stdlib/constants-float32-gamma-lanczos-g":"2A7","@stdlib/constants/float32/ln-sqrt-two-pi":"2A8","@stdlib/constants-float32-ln-sqrt-two-pi":"2A9","@stdlib/constants/float32/ln-two-pi":"2AA","@stdlib/constants-float32-ln-two-pi":"2AB","@stdlib/constants/float32/log10-e":"2AC","@stdlib/constants-float32-log10-e":"2AD","@stdlib/constants/float32/log2-e":"2AE","@stdlib/constants-float32-log2-e":"2AF","@stdlib/constants/float32/max-safe-nth-double-factorial":"2AG","@stdlib/constants-float32-max-safe-nth-double-factorial":"2AH","@stdlib/constants/float32/max-safe-nth-tribonacci":"2AI","@stdlib/constants-float32-max-safe-nth-tribonacci":"2AJ","@stdlib/constants/float32/num-significand-bits":"2AK","@stdlib/constants-float32-num-significand-bits":"2AL","@stdlib/constants/float32/pi-squared":"2AM","@stdlib/constants-float32-pi-squared":"2AN","@stdlib/math/base/special/sincosd":"2AO","@stdlib/math-base-special-sincosd":"2AP","@stdlib/math/base/special/sind":"2AQ","@stdlib/math-base-special-sind":"2AR","@stdlib/ndarray/base/assert/is-scalar-mostly-safe-compatible":"2AS","@stdlib/ndarray-base-assert-is-scalar-mostly-safe-compatible":"2AT","@stdlib/ndarray/base/every":"2AU","@stdlib/ndarray-base-every":"2AV","@stdlib/ndarray/base/fill-by":"2AW","@stdlib/ndarray-base-fill-by":"2AX","@stdlib/ndarray/base/unary-reduce-subarray":"2AY","@stdlib/ndarray-base-unary-reduce-subarray":"2AZ","@stdlib/ndarray/fill-by":"2Aa","@stdlib/ndarray-fill-by":"2Ab","@stdlib/ndarray/fill":"2Ac","@stdlib/ndarray-fill":"2Ad","@stdlib/number/float32/base/identity":"2Ae","@stdlib/number-float32-base-identity":"2Af","@stdlib/number/float64/base/identity":"2Ag","@stdlib/number-float64-base-identity":"2Ah","@stdlib/number/int32/base/mul":"2Ai","@stdlib/number-int32-base-mul":"2Aj","@stdlib/number/int32/base/muldw":"2Ak","@stdlib/number-int32-base-muldw":"2Al","@stdlib/number/uint32/base/muldw":"2Am","@stdlib/number-uint32-base-muldw":"2An","@stdlib/stats/base/dists/bradford/pdf":"2Ao","@stdlib/stats-base-dists-bradford-pdf":"2Ap","@stdlib/stats/base/dists/bradford/quantile":"2Aq","@stdlib/stats-base-dists-bradford-quantile":"2Ar","@stdlib/stats/incr/nanmean":"2As","@stdlib/stats-incr-nanmean":"2At","@stdlib/stats/incr/nanmeanabs":"2Au","@stdlib/stats-incr-nanmeanabs":"2Av","@stdlib/stats/incr/nanskewness":"2Aw","@stdlib/stats-incr-nanskewness":"2Ax","@stdlib/stats/strided/dnanmeanors":"2Ay","@stdlib/stats-strided-dnanmeanors":"2Az","@stdlib/stats/strided/dnanmeanpn":"2B0","@stdlib/stats-strided-dnanmeanpn":"2B1","@stdlib/stats/strided/dnanmeanpw":"2B2","@stdlib/stats-strided-dnanmeanpw":"2B3","@stdlib/stats/strided/dnanmeanwd":"2B4","@stdlib/stats-strided-dnanmeanwd":"2B5","@stdlib/stats/strided/dnanmin":"2B6","@stdlib/stats-strided-dnanmin":"2B7","@stdlib/stats/strided/dnanminabs":"2B8","@stdlib/stats-strided-dnanminabs":"2B9","@stdlib/stats/strided/dnanrange":"2BA","@stdlib/stats-strided-dnanrange":"2BB","@stdlib/stats/strided/dnanstdevch":"2BC","@stdlib/stats-strided-dnanstdevch":"2BD","@stdlib/stats/strided/dnanstdevpn":"2BE","@stdlib/stats-strided-dnanstdevpn":"2BF","@stdlib/stats/strided/dnanstdevtk":"2BG","@stdlib/stats-strided-dnanstdevtk":"2BH","@stdlib/stats/strided/dnanstdevwd":"2BI","@stdlib/stats-strided-dnanstdevwd":"2BJ","@stdlib/stats/strided/dnanstdevyc":"2BK","@stdlib/stats-strided-dnanstdevyc":"2BL","@stdlib/stats/strided/dnanvariance":"2BM","@stdlib/stats-strided-dnanvariance":"2BN","@stdlib/stats/strided/dnanvariancech":"2BO","@stdlib/stats-strided-dnanvariancech":"2BP","@stdlib/stats/strided/dnanvariancepn":"2BQ","@stdlib/stats-strided-dnanvariancepn":"2BR","@stdlib/stats/strided/dnanvariancetk":"2BS","@stdlib/stats-strided-dnanvariancetk":"2BT","@stdlib/stats/strided/dnanvariancewd":"2BU","@stdlib/stats-strided-dnanvariancewd":"2BV","@stdlib/stats/strided/dnanvarianceyc":"2BW","@stdlib/stats-strided-dnanvarianceyc":"2BX","@stdlib/stats/strided/drange":"2BY","@stdlib/stats-strided-drange":"2BZ","@stdlib/stats/strided/dsemch":"2Ba","@stdlib/stats-strided-dsemch":"2Bb","@stdlib/stats/strided/dsemtk":"2Bc","@stdlib/stats-strided-dsemtk":"2Bd","@stdlib/stats/strided/dsemwd":"2Be","@stdlib/stats-strided-dsemwd":"2Bf","@stdlib/stats/strided/dsemyc":"2Bg","@stdlib/stats-strided-dsemyc":"2Bh","@stdlib/stats/strided/dsmean":"2Bi","@stdlib/stats-strided-dsmean":"2Bj","@stdlib/stats/strided/dsmeanpn":"2Bk","@stdlib/stats-strided-dsmeanpn":"2Bl","@stdlib/stats/strided/dsmeanpw":"2Bm","@stdlib/stats-strided-dsmeanpw":"2Bn","@stdlib/stats/strided/dsmeanwd":"2Bo","@stdlib/stats-strided-dsmeanwd":"2Bp","@stdlib/stats/strided/dsnanmean":"2Bq","@stdlib/stats-strided-dsnanmean":"2Br","@stdlib/stats/strided/dsnanmeanors":"2Bs","@stdlib/stats-strided-dsnanmeanors":"2Bt","@stdlib/stats/strided/dsnanmeanpn":"2Bu","@stdlib/stats-strided-dsnanmeanpn":"2Bv","@stdlib/stats/strided/dsnanmeanwd":"2Bw","@stdlib/stats-strided-dsnanmeanwd":"2Bx","@stdlib/stats/strided/dstdevch":"2By","@stdlib/stats-strided-dstdevch":"2Bz","@stdlib/stats/strided/dstdevpn":"2C0","@stdlib/stats-strided-dstdevpn":"2C1","@stdlib/stats/strided/dstdevtk":"2C2","@stdlib/stats-strided-dstdevtk":"2C3","@stdlib/stats/strided/dstdevwd":"2C4","@stdlib/stats-strided-dstdevwd":"2C5","@stdlib/stats/strided/dstdevyc":"2C6","@stdlib/stats-strided-dstdevyc":"2C7","@stdlib/stats/strided/dsvariance":"2C8","@stdlib/stats-strided-dsvariance":"2C9","@stdlib/stats/strided/dsvariancepn":"2CA","@stdlib/stats-strided-dsvariancepn":"2CB","@stdlib/stats/strided/dvariance":"2CC","@stdlib/stats-strided-dvariance":"2CD","@stdlib/stats/strided/dvariancech":"2CE","@stdlib/stats-strided-dvariancech":"2CF","@stdlib/stats/strided/dvariancepn":"2CG","@stdlib/stats-strided-dvariancepn":"2CH","@stdlib/stats/strided/dvariancetk":"2CI","@stdlib/stats-strided-dvariancetk":"2CJ","@stdlib/stats/strided/dvariancewd":"2CK","@stdlib/stats-strided-dvariancewd":"2CL","@stdlib/stats/strided/dvarianceyc":"2CM","@stdlib/stats-strided-dvarianceyc":"2CN","@stdlib/stats/strided/dvarmtk":"2CO","@stdlib/stats-strided-dvarmtk":"2CP","@stdlib/stats/strided/scumax":"2CQ","@stdlib/stats-strided-scumax":"2CR","@stdlib/stats/strided/scumaxabs":"2CS","@stdlib/stats-strided-scumaxabs":"2CT","@stdlib/stats/strided/scumin":"2CU","@stdlib/stats-strided-scumin":"2CV","@stdlib/stats/strided/scuminabs":"2CW","@stdlib/stats-strided-scuminabs":"2CX","@stdlib/stats/strided/sdsmean":"2CY","@stdlib/stats-strided-sdsmean":"2CZ","@stdlib/stats/strided/sdsmeanors":"2Ca","@stdlib/stats-strided-sdsmeanors":"2Cb","@stdlib/stats/strided/smax":"2Cc","@stdlib/stats-strided-smax":"2Cd","@stdlib/stats/strided/smaxabs":"2Ce","@stdlib/stats-strided-smaxabs":"2Cf","@stdlib/stats/strided/smaxabssorted":"2Cg","@stdlib/stats-strided-smaxabssorted":"2Ch","@stdlib/stats/strided/smaxsorted":"2Ci","@stdlib/stats-strided-smaxsorted":"2Cj","@stdlib/stats/strided/smeanli":"2Ck","@stdlib/stats-strided-smeanli":"2Cl","@stdlib/stats/strided/smeanpw":"2Cm","@stdlib/stats-strided-smeanpw":"2Cn","@stdlib/stats/strided/smeanwd":"2Co","@stdlib/stats-strided-smeanwd":"2Cp","@stdlib/stats/strided/smediansorted":"2Cq","@stdlib/stats-strided-smediansorted":"2Cr","@stdlib/stats/strided/smin":"2Cs","@stdlib/stats-strided-smin":"2Ct","@stdlib/stats/strided/sminabs":"2Cu","@stdlib/stats-strided-sminabs":"2Cv","@stdlib/stats/strided/sminsorted":"2Cw","@stdlib/stats-strided-sminsorted":"2Cx","@stdlib/stats/strided/smskmax":"2Cy","@stdlib/stats-strided-smskmax":"2Cz","@stdlib/stats/strided/smskmin":"2D0","@stdlib/stats-strided-smskmin":"2D1","@stdlib/stats/strided/smskrange":"2D2","@stdlib/stats-strided-smskrange":"2D3","@stdlib/stats/strided/snanmax":"2D4","@stdlib/stats-strided-snanmax":"2D5","@stdlib/stats/strided/snanmaxabs":"2D6","@stdlib/stats-strided-snanmaxabs":"2D7","@stdlib/stats/strided/snanmeanors":"2D8","@stdlib/stats-strided-snanmeanors":"2D9","@stdlib/stats/strided/snanmeanpn":"2DA","@stdlib/stats-strided-snanmeanpn":"2DB","@stdlib/stats/strided/snanmeanwd":"2DC","@stdlib/stats-strided-snanmeanwd":"2DD","@stdlib/stats/strided/snanmin":"2DE","@stdlib/stats-strided-snanmin":"2DF","@stdlib/stats/strided/snanminabs":"2DG","@stdlib/stats-strided-snanminabs":"2DH","@stdlib/stats/strided/snanrange":"2DI","@stdlib/stats-strided-snanrange":"2DJ","@stdlib/stats/strided/srange":"2DK","@stdlib/stats-strided-srange":"2DL","@stdlib/stats/strided/sstdevch":"2DM","@stdlib/stats-strided-sstdevch":"2DN","@stdlib/stats/strided/sstdevpn":"2DO","@stdlib/stats-strided-sstdevpn":"2DP","@stdlib/stats/strided/sstdevtk":"2DQ","@stdlib/stats-strided-sstdevtk":"2DR","@stdlib/string/base/slice-grapheme-clusters":"2DS","@stdlib/string-base-slice-grapheme-clusters":"2DT","@stdlib/string/base/slice":"2DU","@stdlib/string-base-slice":"2DV","@stdlib/string/num-code-points":"2DW","@stdlib/string-num-code-points":"2DX","@stdlib/array/base/index-of-same-value":"2DY","@stdlib/array-base-index-of-same-value":"2DZ","@stdlib/array/base/last-index-of-same-value":"2Da","@stdlib/array-base-last-index-of-same-value":"2Db","@stdlib/array/base/linspace2d":"2Dc","@stdlib/array-base-linspace2d":"2Dd","@stdlib/array/base/reshape":"2De","@stdlib/array-base-reshape":"2Df","@stdlib/constants/float32/catalan":"2Dg","@stdlib/constants-float32-catalan":"2Dh","@stdlib/constants/float32/eulergamma":"2Di","@stdlib/constants-float32-eulergamma":"2Dj","@stdlib/constants/float32/fourth-root-eps":"2Dk","@stdlib/constants-float32-fourth-root-eps":"2Dl","@stdlib/constants/float32/max-ln":"2Dm","@stdlib/constants-float32-max-ln":"2Dn","@stdlib/constants/float32/max-safe-lucas":"2Do","@stdlib/constants-float32-max-safe-lucas":"2Dp","@stdlib/constants/float32/min-ln":"2Dq","@stdlib/constants-float32-min-ln":"2Dr","@stdlib/math/base/special/atan2d":"2Ds","@stdlib/math-base-special-atan2d":"2Dt","@stdlib/math/base/special/csignumf":"2Du","@stdlib/math-base-special-csignumf":"2Dv","@stdlib/math/base/special/fibonaccif":"2Dw","@stdlib/math-base-special-fibonaccif":"2Dx","@stdlib/ndarray/base/includes":"2Dy","@stdlib/ndarray-base-includes":"2Dz","@stdlib/ndarray/every":"2E0","@stdlib/ndarray-every":"2E1","@stdlib/ndarray/includes":"2E2","@stdlib/ndarray-includes":"2E3","@stdlib/stats/incr/nanstdev":"2E4","@stdlib/stats-incr-nanstdev":"2E5","@stdlib/stats/strided/dcumin":"2E6","@stdlib/stats-strided-dcumin":"2E7","@stdlib/stats/strided/dmskmax":"2E8","@stdlib/stats-strided-dmskmax":"2E9","@stdlib/stats/strided/dmskmin":"2EA","@stdlib/stats-strided-dmskmin":"2EB","@stdlib/stats/strided/dmskrange":"2EC","@stdlib/stats-strided-dmskrange":"2ED","@stdlib/stats/strided/dsmeanors":"2EE","@stdlib/stats-strided-dsmeanors":"2EF","@stdlib/stats/strided/smidrange":"2EG","@stdlib/stats-strided-smidrange":"2EH","@stdlib/stats/strided/sstdevyc":"2EI","@stdlib/stats-strided-sstdevyc":"2EJ","@stdlib/stats/strided/svariancech":"2EK","@stdlib/stats-strided-svariancech":"2EL","@stdlib/stats/strided/svariancepn":"2EM","@stdlib/stats-strided-svariancepn":"2EN","@stdlib/stats/strided/svariancetk":"2EO","@stdlib/stats-strided-svariancetk":"2EP","@stdlib/stats/strided/svarianceyc":"2EQ","@stdlib/stats-strided-svarianceyc":"2ER","@stdlib/string/base/slice-code-points":"2ES","@stdlib/string-base-slice-code-points":"2ET","@stdlib/array/base/count-ifs":"2EU","@stdlib/array-base-count-ifs":"2EV","@stdlib/math/base/special/fibonacci-indexf":"2EW","@stdlib/math-base-special-fibonacci-indexf":"2EX","@stdlib/stats/array/max":"2EY","@stdlib/stats-array-max":"2EZ","@stdlib/stats/array/mskmax":"2Ea","@stdlib/stats-array-mskmax":"2Eb","@stdlib/stats/array/nanmax":"2Ec","@stdlib/stats-array-nanmax":"2Ed","@stdlib/stats/array/varianceyc":"2Ee","@stdlib/stats-array-varianceyc":"2Ef","@stdlib/array/base/banded":"2Eg","@stdlib/array-base-banded":"2Eh","@stdlib/array/base/symmetric-banded":"2Ei","@stdlib/array-base-symmetric-banded":"2Ej","@stdlib/array/base/symmetric":"2Ek","@stdlib/array-base-symmetric":"2El","@stdlib/blas/base/wasm/sswap":"2Em","@stdlib/blas-base-wasm-sswap":"2En","@stdlib/math/base/special/lucasf":"2Eo","@stdlib/math-base-special-lucasf":"2Ep","@stdlib/ndarray/base/every-by":"2Eq","@stdlib/ndarray-base-every-by":"2Er","@stdlib/ndarray/base/unary-reduce-strided1d":"2Es","@stdlib/ndarray-base-unary-reduce-strided1d":"2Et","@stdlib/object/every-in-by":"2Eu","@stdlib/object-every-in-by":"2Ev","@stdlib/stats/array/min":"2Ew","@stdlib/stats-array-min":"2Ex","@stdlib/stats/base/ndarray/dmax":"2Ey","@stdlib/stats-base-ndarray-dmax":"2Ez","@stdlib/stats/base/ndarray/max":"2F0","@stdlib/stats-base-ndarray-max":"2F1","@stdlib/stats/base/ndarray":"2F2","@stdlib/stats-base-ndarray":"2F3","@stdlib/stats/base/ndarray/smax":"2F4","@stdlib/stats-base-ndarray-smax":"2F5","@stdlib/stats/max":"2F6","@stdlib/stats-max":"2F7","@stdlib/stats/tools/reduce/unary-strided-dispatch-factory":"2F8","@stdlib/stats-tools-reduce-unary-strided-dispatch-factory":"2F9","@stdlib/stats/tools/reduce/unary-strided-dispatch":"2FA","@stdlib/stats-tools-reduce-unary-strided-dispatch":"2FB","@stdlib/blas/base/wasm/dsdot":"2FC","@stdlib/blas-base-wasm-dsdot":"2FD","@stdlib/blas/ext/base/ndarray/dcusum":"2FE","@stdlib/blas-ext-base-ndarray-dcusum":"2FF","@stdlib/blas/ext/base/ndarray/dsum":"2FG","@stdlib/blas-ext-base-ndarray-dsum":"2FH","@stdlib/blas/ext/base/ndarray/gcusum":"2FI","@stdlib/blas-ext-base-ndarray-gcusum":"2FJ","@stdlib/blas/ext/base/ndarray/gsum":"2FK","@stdlib/blas-ext-base-ndarray-gsum":"2FL","@stdlib/blas/ext/base/ndarray":"2FM","@stdlib/blas-ext-base-ndarray":"2FN","@stdlib/blas/ext/base/ndarray/scusum":"2FO","@stdlib/blas-ext-base-ndarray-scusum":"2FP","@stdlib/blas/ext/base/ndarray/ssum":"2FQ","@stdlib/blas-ext-base-ndarray-ssum":"2FR","@stdlib/blas/ext/cusum":"2FS","@stdlib/blas-ext-cusum":"2FT","@stdlib/blas/ext/sum":"2FU","@stdlib/blas-ext-sum":"2FV","@stdlib/constants/float32/max-nth-double-factorial":"2FW","@stdlib/constants-float32-max-nth-double-factorial":"2FX","@stdlib/constants/float32/max-nth-factorial":"2FY","@stdlib/constants-float32-max-nth-factorial":"2FZ","@stdlib/constants/float64/max-nth-double-factorial":"2Fa","@stdlib/constants-float64-max-nth-double-factorial":"2Fb","@stdlib/constants/float64/max-nth-factorial":"2Fc","@stdlib/constants-float64-max-nth-factorial":"2Fd","@stdlib/ndarray/base/assert/is-boolean-index-data-type":"2Fe","@stdlib/ndarray-base-assert-is-boolean-index-data-type":"2Ff","@stdlib/ndarray/base/assert/is-index-data-type":"2Fg","@stdlib/ndarray-base-assert-is-index-data-type":"2Fh","@stdlib/ndarray/base/assert/is-input-casting-policy":"2Fi","@stdlib/ndarray-base-assert-is-input-casting-policy":"2Fj","@stdlib/ndarray/base/assert/is-integer-index-data-type":"2Fk","@stdlib/ndarray-base-assert-is-integer-index-data-type":"2Fl","@stdlib/ndarray/base/assert/is-mask-index-data-type":"2Fm","@stdlib/ndarray-base-assert-is-mask-index-data-type":"2Fn","@stdlib/ndarray/base/unary-input-casting-dtype":"2Fo","@stdlib/ndarray-base-unary-input-casting-dtype":"2Fp","@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-factory":"2Fq","@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-factory":"2Fr","@stdlib/ndarray/base/unary-reduce-strided1d-dispatch":"2Fs","@stdlib/ndarray-base-unary-reduce-strided1d-dispatch":"2Ft","@stdlib/ndarray/base/unary-strided1d-dispatch-factory":"2Fu","@stdlib/ndarray-base-unary-strided1d-dispatch-factory":"2Fv","@stdlib/ndarray/base/unary-strided1d-dispatch":"2Fw","@stdlib/ndarray-base-unary-strided1d-dispatch":"2Fx","@stdlib/ndarray/base/unary-strided1d":"2Fy","@stdlib/ndarray-base-unary-strided1d":"2Fz","@stdlib/ndarray/input-casting-policies":"2G0","@stdlib/ndarray-input-casting-policies":"2G1","@stdlib/stats/base/ndarray/cumax":"2G2","@stdlib/stats-base-ndarray-cumax":"2G3","@stdlib/stats/base/ndarray/dcumax":"2G4","@stdlib/stats-base-ndarray-dcumax":"2G5","@stdlib/stats/base/ndarray/scumax":"2G6","@stdlib/stats-base-ndarray-scumax":"2G7","@stdlib/stats/cumax":"2G8","@stdlib/stats-cumax":"2G9","@stdlib/blas/base/wasm/sdsdot":"2GA","@stdlib/blas-base-wasm-sdsdot":"2GB","@stdlib/blas/ext/base/wasm/dnanasumors":"2GC","@stdlib/blas-ext-base-wasm-dnanasumors":"2GD","@stdlib/blas/ext/base/wasm/sapxsumkbn":"2GE","@stdlib/blas-ext-base-wasm-sapxsumkbn":"2GF","@stdlib/lapack/base/zlaswp":"2GG","@stdlib/lapack-base-zlaswp":"2GH","@stdlib/math/base/special/logitf":"2GI","@stdlib/math-base-special-logitf":"2GJ","@stdlib/random/tools":"2GK","@stdlib/random-tools":"2GL","@stdlib/random/tools/unary-factory":"2GM","@stdlib/random-tools-unary-factory":"2GN","@stdlib/random/tools/unary":"2GO","@stdlib/random-tools-unary":"2GP","@stdlib/stats/array/maxabs":"2GQ","@stdlib/stats-array-maxabs":"2GR","@stdlib/stats/array/maxsorted":"2GS","@stdlib/stats-array-maxsorted":"2GT","@stdlib/stats/incr/nanmaxabs":"2GU","@stdlib/stats-incr-nanmaxabs":"2GV","@stdlib/stats/incr/nanmstdev":"2GW","@stdlib/stats-incr-nanmstdev":"2GX","@stdlib/stats/strided/wasm/dmeanors":"2GY","@stdlib/stats-strided-wasm-dmeanors":"2GZ","@stdlib/array/base/assert/any-has-own-property":"2Ga","@stdlib/array-base-assert-any-has-own-property":"2Gb","@stdlib/array/base/assert/any-has-property":"2Gc","@stdlib/array-base-assert-any-has-property":"2Gd","@stdlib/array/base/assert/any-is-entry-in":"2Ge","@stdlib/array-base-assert-any-is-entry-in":"2Gf","@stdlib/array/base/assert/any-is-entry":"2Gg","@stdlib/array-base-assert-any-is-entry":"2Gh","@stdlib/ndarray/base/binary-output-dtype":"2Gi","@stdlib/ndarray-base-binary-output-dtype":"2Gj","@stdlib/ndarray/base/binary":"2Gk","@stdlib/ndarray-base-binary":"2Gl","@stdlib/ndarray/base/output-dtype":"2Gm","@stdlib/ndarray-base-output-dtype":"2Gn","@stdlib/ndarray/base/promote-dtypes":"2Go","@stdlib/ndarray-base-promote-dtypes":"2Gp","@stdlib/stats/array/minabs":"2Gq","@stdlib/stats-array-minabs":"2Gr","@stdlib/stats/array/minsorted":"2Gs","@stdlib/stats-array-minsorted":"2Gt","@stdlib/stats/array/mskmin":"2Gu","@stdlib/stats-array-mskmin":"2Gv","@stdlib/blas/ext/base/dnancusumkbn":"2Gw","@stdlib/blas-ext-base-dnancusumkbn":"2Gx","@stdlib/blas/ext/base/wasm/dapx":"2Gy","@stdlib/blas-ext-base-wasm-dapx":"2Gz","@stdlib/lapack/base/claswp":"2H0","@stdlib/lapack-base-claswp":"2H1","@stdlib/math/base/special/bernoullif":"2H2","@stdlib/math-base-special-bernoullif":"2H3","@stdlib/math/base/special/gammasgnf":"2H4","@stdlib/math-base-special-gammasgnf":"2H5","@stdlib/ndarray/base/loop-interchange-order":"2H6","@stdlib/ndarray-base-loop-interchange-order":"2H7","@stdlib/ndarray/vector/ctor":"2H8","@stdlib/ndarray-vector-ctor":"2H9","@stdlib/ndarray/vector/float32":"2HA","@stdlib/ndarray-vector-float32":"2HB","@stdlib/ndarray/vector/float64":"2HC","@stdlib/ndarray-vector-float64":"2HD","@stdlib/random/tools/binary-factory":"2HE","@stdlib/random-tools-binary-factory":"2HF","@stdlib/random/tools/binary":"2HG","@stdlib/random-tools-binary":"2HH","@stdlib/random/uniform":"2HI","@stdlib/random-uniform":"2HJ","@stdlib/stats/array/mean":"2HK","@stdlib/stats-array-mean":"2HL","@stdlib/stats/array/mskrange":"2HM","@stdlib/stats-array-mskrange":"2HN","@stdlib/stats/array/nanmin":"2HO","@stdlib/stats-array-nanmin":"2HP","@stdlib/array/base/any-has-own-property":"2HQ","@stdlib/array-base-any-has-own-property":"2HR","@stdlib/array/base/any-has-property":"2HS","@stdlib/array-base-any-has-property":"2HT","@stdlib/array/base/any-is-entry-in":"2HU","@stdlib/array-base-any-is-entry-in":"2HV","@stdlib/array/base/any-is-entry":"2HW","@stdlib/array-base-any-is-entry":"2HX","@stdlib/assert/is-equal-booleanarray":"2HY","@stdlib/assert-is-equal-booleanarray":"2HZ","@stdlib/assert/is-equal-date-object":"2Ha","@stdlib/assert-is-equal-date-object":"2Hb","@stdlib/assert/is-equal-int16array":"2Hc","@stdlib/assert-is-equal-int16array":"2Hd","@stdlib/assert/is-equal-int32array":"2He","@stdlib/assert-is-equal-int32array":"2Hf","@stdlib/assert/is-equal-int8array":"2Hg","@stdlib/assert-is-equal-int8array":"2Hh","@stdlib/assert/is-equal-uint16array":"2Hi","@stdlib/assert-is-equal-uint16array":"2Hj","@stdlib/assert/is-equal-uint32array":"2Hk","@stdlib/assert-is-equal-uint32array":"2Hl","@stdlib/assert/is-equal-uint8array":"2Hm","@stdlib/assert-is-equal-uint8array":"2Hn","@stdlib/assert/is-equal-uint8clampedarray":"2Ho","@stdlib/assert-is-equal-uint8clampedarray":"2Hp","@stdlib/blas/base/csscal":"2Hq","@stdlib/blas-base-csscal":"2Hr","@stdlib/blas/ext/base/csum":"2Hs","@stdlib/blas-ext-base-csum":"2Ht","@stdlib/blas/ext/base/csumkbn":"2Hu","@stdlib/blas-ext-base-csumkbn":"2Hv","@stdlib/blas/ext/base/gnannsumpw":"2Hw","@stdlib/blas-ext-base-gnannsumpw":"2Hx","@stdlib/blas/ext/base/ndarray/csum":"2Hy","@stdlib/blas-ext-base-ndarray-csum":"2Hz","@stdlib/blas/ext/base/ndarray/zsum":"2I0","@stdlib/blas-ext-base-ndarray-zsum":"2I1","@stdlib/blas/ext/base/zsum":"2I2","@stdlib/blas-ext-base-zsum":"2I3","@stdlib/blas/ext/base/zsumkbn":"2I4","@stdlib/blas-ext-base-zsumkbn":"2I5","@stdlib/complex/float32/base/scale":"2I6","@stdlib/complex-float32-base-scale":"2I7","@stdlib/lapack/base/dgttrf":"2I8","@stdlib/lapack-base-dgttrf":"2I9","@stdlib/lapack/base/dlapy2":"2IA","@stdlib/lapack-base-dlapy2":"2IB","@stdlib/lapack/base/dlapy3":"2IC","@stdlib/lapack-base-dlapy3":"2ID","@stdlib/lapack/base/iladlc":"2IE","@stdlib/lapack-base-iladlc":"2IF","@stdlib/lapack/base/iladlr":"2IG","@stdlib/lapack-base-iladlr":"2IH","@stdlib/math/base/special/atan2f":"2II","@stdlib/math-base-special-atan2f":"2IJ","@stdlib/math/base/special/binomcoeff":"2IK","@stdlib/math-base-special-binomcoeff":"2IL","@stdlib/math/base/special/cinvf":"2IM","@stdlib/math-base-special-cinvf":"2IN","@stdlib/math/base/special/factorial2f":"2IO","@stdlib/math-base-special-factorial2f":"2IP","@stdlib/math/base/special/kernel-cosf":"2IQ","@stdlib/math-base-special-kernel-cosf":"2IR","@stdlib/math/base/special/kernel-sinf":"2IS","@stdlib/math-base-special-kernel-sinf":"2IT","@stdlib/math/base/special/negafibonaccif":"2IU","@stdlib/math-base-special-negafibonaccif":"2IV","@stdlib/math/base/special/rempio2f":"2IW","@stdlib/math-base-special-rempio2f":"2IX","@stdlib/math/base/special/spencef":"2IY","@stdlib/math-base-special-spencef":"2IZ","@stdlib/math/base/special/tribonaccif":"2Ia","@stdlib/math-base-special-tribonaccif":"2Ib","@stdlib/math/base/special/wrapf":"2Ic","@stdlib/math-base-special-wrapf":"2Id","@stdlib/ndarray/base/count-falsy":"2Ie","@stdlib/ndarray-base-count-falsy":"2If","@stdlib/ndarray/base/count-if":"2Ig","@stdlib/ndarray-base-count-if":"2Ih","@stdlib/ndarray/base/count-truthy":"2Ii","@stdlib/ndarray-base-count-truthy":"2Ij","@stdlib/ndarray/base/some-by":"2Ik","@stdlib/ndarray-base-some-by":"2Il","@stdlib/ndarray/base/unary-reduce-strided1d-by":"2Im","@stdlib/ndarray-base-unary-reduce-strided1d-by":"2In","@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-by-factory":"2Io","@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-by-factory":"2Ip","@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-by":"2Iq","@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-by":"2Ir","@stdlib/ndarray/base/unary-reduce-subarray-by":"2Is","@stdlib/ndarray-base-unary-reduce-subarray-by":"2It","@stdlib/ndarray/count-falsy":"2Iu","@stdlib/ndarray-count-falsy":"2Iv","@stdlib/ndarray/count-if":"2Iw","@stdlib/ndarray-count-if":"2Ix","@stdlib/ndarray/count-truthy":"2Iy","@stdlib/ndarray-count-truthy":"2Iz","@stdlib/ndarray/some-by":"2J0","@stdlib/ndarray-some-by":"2J1","@stdlib/ndarray/vector/bool":"2J2","@stdlib/ndarray-vector-bool":"2J3","@stdlib/ndarray/vector/complex128":"2J4","@stdlib/ndarray-vector-complex128":"2J5","@stdlib/ndarray/vector/complex64":"2J6","@stdlib/ndarray-vector-complex64":"2J7","@stdlib/ndarray/vector/int16":"2J8","@stdlib/ndarray-vector-int16":"2J9","@stdlib/ndarray/vector/int32":"2JA","@stdlib/ndarray-vector-int32":"2JB","@stdlib/ndarray/vector/int8":"2JC","@stdlib/ndarray-vector-int8":"2JD","@stdlib/ndarray/vector":"2JE","@stdlib/ndarray-vector":"2JF","@stdlib/ndarray/vector/uint16":"2JG","@stdlib/ndarray-vector-uint16":"2JH","@stdlib/ndarray/vector/uint32":"2JI","@stdlib/ndarray-vector-uint32":"2JJ","@stdlib/ndarray/vector/uint8":"2JK","@stdlib/ndarray-vector-uint8":"2JL","@stdlib/ndarray/vector/uint8c":"2JM","@stdlib/ndarray-vector-uint8c":"2JN","@stdlib/stats/array/max-by":"2JO","@stdlib/stats-array-max-by":"2JP","@stdlib/stats/array/mediansorted":"2JQ","@stdlib/stats-array-mediansorted":"2JR","@stdlib/stats/array/min-by":"2JS","@stdlib/stats-array-min-by":"2JT","@stdlib/stats/array/nanmax-by":"2JU","@stdlib/stats-array-nanmax-by":"2JV","@stdlib/stats/array/nanmaxabs":"2JW","@stdlib/stats-array-nanmaxabs":"2JX","@stdlib/stats/array/nanmin-by":"2JY","@stdlib/stats-array-nanmin-by":"2JZ","@stdlib/stats/array/nanminabs":"2Ja","@stdlib/stats-array-nanminabs":"2Jb","@stdlib/stats/array/nanrange":"2Jc","@stdlib/stats-array-nanrange":"2Jd","@stdlib/stats/array":"2Je","@stdlib/stats-array":"2Jf","@stdlib/stats/array/range":"2Jg","@stdlib/stats-array-range":"2Jh","@stdlib/stats/base/ndarray/max-by":"2Ji","@stdlib/stats-base-ndarray-max-by":"2Jj","@stdlib/stats/max-by":"2Jk","@stdlib/stats-max-by":"2Jl","@stdlib/stats/strided/dmean":"2Jm","@stdlib/stats-strided-dmean":"2Jn","@stdlib/stats/strided/dmeanpn":"2Jo","@stdlib/stats-strided-dmeanpn":"2Jp","@stdlib/stats/strided/dnanmskmax":"2Jq","@stdlib/stats-strided-dnanmskmax":"2Jr","@stdlib/stats/strided/dnanmskmin":"2Js","@stdlib/stats-strided-dnanmskmin":"2Jt","@stdlib/stats/strided/dnanmskrange":"2Ju","@stdlib/stats-strided-dnanmskrange":"2Jv","@stdlib/stats/strided/dnanstdev":"2Jw","@stdlib/stats-strided-dnanstdev":"2Jx","@stdlib/stats/strided/dsem":"2Jy","@stdlib/stats-strided-dsem":"2Jz","@stdlib/stats/strided/dsempn":"2K0","@stdlib/stats-strided-dsempn":"2K1","@stdlib/stats/strided/dstdev":"2K2","@stdlib/stats-strided-dstdev":"2K3","@stdlib/stats/strided":"2K4","@stdlib/stats-strided":"2K5","@stdlib/stats/strided/snanmskmax":"2K6","@stdlib/stats-strided-snanmskmax":"2K7","@stdlib/stats/strided/snanmskmin":"2K8","@stdlib/stats-strided-snanmskmin":"2K9","@stdlib/stats/strided/snanmskrange":"2KA","@stdlib/stats-strided-snanmskrange":"2KB","@stdlib/stats/strided/wasm/dmeanwd":"2KC","@stdlib/stats-strided-wasm-dmeanwd":"2KD","@stdlib/array/struct-factory":"2KE","@stdlib/array-struct-factory":"2KF","@stdlib/assert/napi/is-dataview":"2KG","@stdlib/assert-napi-is-dataview":"2KH","@stdlib/dstructs/struct":"2KI","@stdlib/dstructs-struct":"2KJ","@stdlib/math/base/special/cosf":"2KK","@stdlib/math-base-special-cosf":"2KL","@stdlib/math/base/special/cosm1f":"2KM","@stdlib/math-base-special-cosm1f":"2KN","@stdlib/math/base/special/covercosf":"2KO","@stdlib/math-base-special-covercosf":"2KP","@stdlib/math/base/special/coversinf":"2KQ","@stdlib/math-base-special-coversinf":"2KR","@stdlib/math/base/special/cphasef":"2KS","@stdlib/math-base-special-cphasef":"2KT","@stdlib/math/base/special/cscf":"2KU","@stdlib/math-base-special-cscf":"2KV","@stdlib/math/base/special/frexpf":"2KW","@stdlib/math-base-special-frexpf":"2KX","@stdlib/math/base/special/gamma-lanczos-sum-expg-scaledf":"2KY","@stdlib/math-base-special-gamma-lanczos-sum-expg-scaledf":"2KZ","@stdlib/math/base/special/hacovercosf":"2Ka","@stdlib/math-base-special-hacovercosf":"2Kb","@stdlib/math/base/special/hacoversinf":"2Kc","@stdlib/math-base-special-hacoversinf":"2Kd","@stdlib/math/base/special/havercosf":"2Ke","@stdlib/math-base-special-havercosf":"2Kf","@stdlib/math/base/special/haversinf":"2Kg","@stdlib/math-base-special-haversinf":"2Kh","@stdlib/math/base/special/kernel-tanf":"2Ki","@stdlib/math-base-special-kernel-tanf":"2Kj","@stdlib/math/base/special/minmaxabsf":"2Kk","@stdlib/math-base-special-minmaxabsf":"2Kl","@stdlib/math/base/special/minmaxf":"2Km","@stdlib/math-base-special-minmaxf":"2Kn","@stdlib/math/base/special/modff":"2Ko","@stdlib/math-base-special-modff":"2Kp","@stdlib/math/base/special/secf":"2Kq","@stdlib/math-base-special-secf":"2Kr","@stdlib/math/base/special/sinf":"2Ks","@stdlib/math-base-special-sinf":"2Kt","@stdlib/math/base/special/tanf":"2Ku","@stdlib/math-base-special-tanf":"2Kv","@stdlib/math/base/special/vercosf":"2Kw","@stdlib/math-base-special-vercosf":"2Kx","@stdlib/math/base/special/versinf":"2Ky","@stdlib/math-base-special-versinf":"2Kz","@stdlib/napi/argv-dataview-cast":"2L0","@stdlib/napi-argv-dataview-cast":"2L1","@stdlib/napi/argv-dataview":"2L2","@stdlib/napi-argv-dataview":"2L3","@stdlib/ndarray/base/assert/is-struct-data-type":"2L4","@stdlib/ndarray-base-assert-is-struct-data-type":"2L5","@stdlib/number/float64/base/ulp-difference":"2L6","@stdlib/number-float64-base-ulp-difference":"2L7","@stdlib/number/uint16/base/add":"2L8","@stdlib/number-uint16-base-add":"2L9","@stdlib/number/uint16/base/mul":"2LA","@stdlib/number-uint16-base-mul":"2LB","@stdlib/number/uint16/base/sub":"2LC","@stdlib/number-uint16-base-sub":"2LD","@stdlib/number/uint32/base/add":"2LE","@stdlib/number-uint32-base-add":"2LF","@stdlib/number/uint32/base/sub":"2LG","@stdlib/number-uint32-base-sub":"2LH","@stdlib/number/uint8/base/add":"2LI","@stdlib/number-uint8-base-add":"2LJ","@stdlib/number/uint8/base/mul":"2LK","@stdlib/number-uint8-base-mul":"2LL","@stdlib/number/uint8/base/sub":"2LM","@stdlib/number-uint8-base-sub":"2LN","@stdlib/stats/array/meankbn":"2LO","@stdlib/stats-array-meankbn":"2LP","@stdlib/stats/array/meankbn2":"2LQ","@stdlib/stats-array-meankbn2":"2LR","@stdlib/stats/array/meanors":"2LS","@stdlib/stats-array-meanors":"2LT","@stdlib/stats/array/meanpn":"2LU","@stdlib/stats-array-meanpn":"2LV","@stdlib/stats/array/meanpw":"2LW","@stdlib/stats-array-meanpw":"2LX","@stdlib/stats/array/meanwd":"2LY","@stdlib/stats-array-meanwd":"2LZ","@stdlib/stats/array/nanmean":"2La","@stdlib/stats-array-nanmean":"2Lb","@stdlib/stats/array/nanmskmax":"2Lc","@stdlib/stats-array-nanmskmax":"2Ld","@stdlib/stats/base/ztest/alternative-enum2str":"2Le","@stdlib/stats-base-ztest-alternative-enum2str":"2Lf","@stdlib/stats/base/ztest/alternative-resolve-enum":"2Lg","@stdlib/stats-base-ztest-alternative-resolve-enum":"2Lh","@stdlib/stats/base/ztest/alternative-resolve-str":"2Li","@stdlib/stats-base-ztest-alternative-resolve-str":"2Lj","@stdlib/stats/base/ztest/alternative-str2enum":"2Lk","@stdlib/stats-base-ztest-alternative-str2enum":"2Ll","@stdlib/stats/base/ztest/alternatives":"2Lm","@stdlib/stats-base-ztest-alternatives":"2Ln","@stdlib/stats/base/ztest/one-sample/results/factory":"2Lo","@stdlib/stats-base-ztest-one-sample-results-factory":"2Lp","@stdlib/stats/base/ztest/one-sample/results/float32":"2Lq","@stdlib/stats-base-ztest-one-sample-results-float32":"2Lr","@stdlib/stats/base/ztest/one-sample/results/float64":"2Ls","@stdlib/stats-base-ztest-one-sample-results-float64":"2Lt","@stdlib/stats/base/ztest/one-sample/results/struct-factory":"2Lu","@stdlib/stats-base-ztest-one-sample-results-struct-factory":"2Lv","@stdlib/stats/base/ztest/one-sample/results/to-json":"2Lw","@stdlib/stats-base-ztest-one-sample-results-to-json":"2Lx","@stdlib/stats/base/ztest/one-sample/results/to-string":"2Ly","@stdlib/stats-base-ztest-one-sample-results-to-string":"2Lz","@stdlib/stats/strided/dvarm":"2M0","@stdlib/stats-strided-dvarm":"2M1","@stdlib/stats/strided/dvarmpn":"2M2","@stdlib/stats-strided-dvarmpn":"2M3","@stdlib/stats/strided/dztest":"2M4","@stdlib/stats-strided-dztest":"2M5","@stdlib/stats/strided/max-by":"2M6","@stdlib/stats-strided-max-by":"2M7","@stdlib/stats/strided/max":"2M8","@stdlib/stats-strided-max":"2M9","@stdlib/stats/strided/maxabs":"2MA","@stdlib/stats-strided-maxabs":"2MB","@stdlib/stats/strided/maxsorted":"2MC","@stdlib/stats-strided-maxsorted":"2MD","@stdlib/stats/strided/mean":"2ME","@stdlib/stats-strided-mean":"2MF","@stdlib/stats/strided/meankbn":"2MG","@stdlib/stats-strided-meankbn":"2MH","@stdlib/stats/strided/meankbn2":"2MI","@stdlib/stats-strided-meankbn2":"2MJ","@stdlib/stats/strided/meanors":"2MK","@stdlib/stats-strided-meanors":"2ML","@stdlib/stats/strided/meanpn":"2MM","@stdlib/stats-strided-meanpn":"2MN","@stdlib/stats/strided/meanpw":"2MO","@stdlib/stats-strided-meanpw":"2MP","@stdlib/stats/strided/meanwd":"2MQ","@stdlib/stats-strided-meanwd":"2MR","@stdlib/stats/strided/mediansorted":"2MS","@stdlib/stats-strided-mediansorted":"2MT","@stdlib/stats/strided/min-by":"2MU","@stdlib/stats-strided-min-by":"2MV","@stdlib/stats/strided/min":"2MW","@stdlib/stats-strided-min":"2MX","@stdlib/stats/strided/minabs":"2MY","@stdlib/stats-strided-minabs":"2MZ","@stdlib/stats/strided/minsorted":"2Ma","@stdlib/stats-strided-minsorted":"2Mb","@stdlib/stats/strided/mskmax":"2Mc","@stdlib/stats-strided-mskmax":"2Md","@stdlib/stats/strided/mskmin":"2Me","@stdlib/stats-strided-mskmin":"2Mf","@stdlib/stats/strided/mskrange":"2Mg","@stdlib/stats-strided-mskrange":"2Mh","@stdlib/stats/strided/nanmax-by":"2Mi","@stdlib/stats-strided-nanmax-by":"2Mj","@stdlib/stats/strided/nanmax":"2Mk","@stdlib/stats-strided-nanmax":"2Ml","@stdlib/stats/strided/nanmaxabs":"2Mm","@stdlib/stats-strided-nanmaxabs":"2Mn","@stdlib/stats/strided/nanmin-by":"2Mo","@stdlib/stats-strided-nanmin-by":"2Mp","@stdlib/stats/strided/nanmin":"2Mq","@stdlib/stats-strided-nanmin":"2Mr","@stdlib/stats/strided/nanminabs":"2Ms","@stdlib/stats-strided-nanminabs":"2Mt","@stdlib/stats/strided/smean":"2Mu","@stdlib/stats-strided-smean":"2Mv","@stdlib/stats/strided/smeanpn":"2Mw","@stdlib/stats-strided-smeanpn":"2Mx","@stdlib/stats/strided/sstdev":"2My","@stdlib/stats-strided-sstdev":"2Mz","@stdlib/stats/strided/svariance":"2N0","@stdlib/stats-strided-svariance":"2N1","@stdlib/stats/strided/svariancewd":"2N2","@stdlib/stats-strided-svariancewd":"2N3","@stdlib/stats/strided/sztest":"2N4","@stdlib/stats-strided-sztest":"2N5","@stdlib/stats/strided/ztest":"2N6","@stdlib/stats-strided-ztest":"2N7","@stdlib/array/base/assert/has-almost-equal-values":"2N8","@stdlib/array-base-assert-has-almost-equal-values":"2N9","@stdlib/assert/has-float16array-support":"2NA","@stdlib/assert-has-float16array-support":"2NB","@stdlib/assert/is-almost-equal-float64array":"2NC","@stdlib/assert-is-almost-equal-float64array":"2ND","@stdlib/assert/is-almost-equal":"2NE","@stdlib/assert-is-almost-equal":"2NF","@stdlib/assert/is-float16array":"2NG","@stdlib/assert-is-float16array":"2NH","@stdlib/assert/is-struct-constructor-like":"2NI","@stdlib/assert-is-struct-constructor-like":"2NJ","@stdlib/assert/is-struct":"2NK","@stdlib/assert-is-struct":"2NL","@stdlib/blas/base/assert/is-matrix-orientation":"2NM","@stdlib/blas-base-assert-is-matrix-orientation":"2NN","@stdlib/blas/base/gger":"2NO","@stdlib/blas-base-gger":"2NP","@stdlib/blas/base/igamax":"2NQ","@stdlib/blas-base-igamax":"2NR","@stdlib/blas/base/matrix-orientation-enum2str":"2NS","@stdlib/blas-base-matrix-orientation-enum2str":"2NT","@stdlib/blas/base/matrix-orientation-resolve-enum":"2NU","@stdlib/blas-base-matrix-orientation-resolve-enum":"2NV","@stdlib/blas/base/matrix-orientation-resolve-str":"2NW","@stdlib/blas-base-matrix-orientation-resolve-str":"2NX","@stdlib/blas/base/matrix-orientation-str2enum":"2NY","@stdlib/blas-base-matrix-orientation-str2enum":"2NZ","@stdlib/blas/base/matrix-orientations":"2Na","@stdlib/blas-base-matrix-orientations":"2Nb","@stdlib/blas/base/sger":"2Nc","@stdlib/blas-base-sger":"2Nd","@stdlib/blas/base/wasm/dznrm2":"2Ne","@stdlib/blas-base-wasm-dznrm2":"2Nf","@stdlib/blas/base/wasm/scasum":"2Ng","@stdlib/blas-base-wasm-scasum":"2Nh","@stdlib/blas/base/wasm/scnrm2":"2Ni","@stdlib/blas-base-wasm-scnrm2":"2Nj","@stdlib/blas/ext/base/dindex-of":"2Nk","@stdlib/blas-ext-base-dindex-of":"2Nl","@stdlib/blas/ext/base/dlast-index-of":"2Nm","@stdlib/blas-ext-base-dlast-index-of":"2Nn","@stdlib/blas/ext/base/gindex-of":"2No","@stdlib/blas-ext-base-gindex-of":"2Np","@stdlib/blas/ext/base/glast-index-of":"2Nq","@stdlib/blas-ext-base-glast-index-of":"2Nr","@stdlib/blas/ext/base/ndarray/dindex-of":"2Ns","@stdlib/blas-ext-base-ndarray-dindex-of":"2Nt","@stdlib/blas/ext/base/ndarray/dlast-index-of":"2Nu","@stdlib/blas-ext-base-ndarray-dlast-index-of":"2Nv","@stdlib/blas/ext/base/ndarray/gindex-of":"2Nw","@stdlib/blas-ext-base-ndarray-gindex-of":"2Nx","@stdlib/blas/ext/base/ndarray/glast-index-of":"2Ny","@stdlib/blas-ext-base-ndarray-glast-index-of":"2Nz","@stdlib/blas/ext/base/ndarray/sindex-of":"2O0","@stdlib/blas-ext-base-ndarray-sindex-of":"2O1","@stdlib/blas/ext/base/ndarray/slast-index-of":"2O2","@stdlib/blas-ext-base-ndarray-slast-index-of":"2O3","@stdlib/blas/ext/base/sindex-of":"2O4","@stdlib/blas-ext-base-sindex-of":"2O5","@stdlib/blas/ext/base/slast-index-of":"2O6","@stdlib/blas-ext-base-slast-index-of":"2O7","@stdlib/blas/ext/base/wasm/dnansumkbn2":"2O8","@stdlib/blas-ext-base-wasm-dnansumkbn2":"2O9","@stdlib/complex/float32/base/assert/is-almost-equal":"2OA","@stdlib/complex-float32-base-assert-is-almost-equal":"2OB","@stdlib/complex/float64/base/assert/is-almost-equal":"2OC","@stdlib/complex-float64-base-assert-is-almost-equal":"2OD","@stdlib/lapack/base/dlaset":"2OE","@stdlib/lapack-base-dlaset":"2OF","@stdlib/lapack/base/shared":"2OG","@stdlib/lapack-base-shared":"2OH","@stdlib/lapack/base/xerbla":"2OI","@stdlib/lapack-base-xerbla":"2OJ","@stdlib/math/base/special/kernel-log1pf":"2OK","@stdlib/math-base-special-kernel-log1pf":"2OL","@stdlib/math/base/special/round-nearest-even":"2OM","@stdlib/math-base-special-round-nearest-even":"2ON","@stdlib/math/base/special/sech":"2OO","@stdlib/math-base-special-sech":"2OP","@stdlib/ndarray/base/assert/is-data-type-string":"2OQ","@stdlib/ndarray-base-assert-is-data-type-string":"2OR","@stdlib/ndarray/base/ndarraylike2scalar":"2OS","@stdlib/ndarray-base-ndarraylike2scalar":"2OT","@stdlib/ndarray/base/unary-reduce-strided1d-assign-struct":"2OU","@stdlib/ndarray-base-unary-reduce-strided1d-assign-struct":"2OV","@stdlib/number/float32/base/assert/is-almost-equal":"2OW","@stdlib/number-float32-base-assert-is-almost-equal":"2OX","@stdlib/number/float32/base/ulp-difference":"2OY","@stdlib/number-float32-base-ulp-difference":"2OZ","@stdlib/number/float64/base/assert/is-almost-equal":"2Oa","@stdlib/number-float64-base-assert-is-almost-equal":"2Ob","@stdlib/object/every-own-by":"2Oc","@stdlib/object-every-own-by":"2Od","@stdlib/object/none-in-by":"2Oe","@stdlib/object-none-in-by":"2Of","@stdlib/object/some-in-by":"2Og","@stdlib/object-some-in-by":"2Oh","@stdlib/stats/array/nanmeanors":"2Oi","@stdlib/stats-array-nanmeanors":"2Oj","@stdlib/stats/array/nanmeanpn":"2Ok","@stdlib/stats-array-nanmeanpn":"2Ol","@stdlib/stats/array/nanmeanwd":"2Om","@stdlib/stats-array-nanmeanwd":"2On","@stdlib/stats/array/nanmskmin":"2Oo","@stdlib/stats-array-nanmskmin":"2Op","@stdlib/stats/array/nanmskrange":"2Oq","@stdlib/stats-array-nanmskrange":"2Or","@stdlib/stats/array/nanrange-by":"2Os","@stdlib/stats-array-nanrange-by":"2Ot","@stdlib/stats/array/nanstdev":"2Ou","@stdlib/stats-array-nanstdev":"2Ov","@stdlib/stats/array/nanstdevch":"2Ow","@stdlib/stats-array-nanstdevch":"2Ox","@stdlib/stats/array/nanvariance":"2Oy","@stdlib/stats-array-nanvariance":"2Oz","@stdlib/stats/array/nanvariancech":"2P0","@stdlib/stats-array-nanvariancech":"2P1","@stdlib/stats/array/nanvariancepn":"2P2","@stdlib/stats-array-nanvariancepn":"2P3","@stdlib/stats/array/nanvariancetk":"2P4","@stdlib/stats-array-nanvariancetk":"2P5","@stdlib/stats/array/nanvariancewd":"2P6","@stdlib/stats-array-nanvariancewd":"2P7","@stdlib/stats/array/nanvarianceyc":"2P8","@stdlib/stats-array-nanvarianceyc":"2P9","@stdlib/stats/array/range-by":"2PA","@stdlib/stats-array-range-by":"2PB","@stdlib/stats/array/stdev":"2PC","@stdlib/stats-array-stdev":"2PD","@stdlib/stats/array/stdevch":"2PE","@stdlib/stats-array-stdevch":"2PF","@stdlib/stats/array/stdevpn":"2PG","@stdlib/stats-array-stdevpn":"2PH","@stdlib/stats/array/stdevtk":"2PI","@stdlib/stats-array-stdevtk":"2PJ","@stdlib/stats/array/stdevwd":"2PK","@stdlib/stats-array-stdevwd":"2PL","@stdlib/stats/array/stdevyc":"2PM","@stdlib/stats-array-stdevyc":"2PN","@stdlib/stats/array/variance":"2PO","@stdlib/stats-array-variance":"2PP","@stdlib/stats/array/variancech":"2PQ","@stdlib/stats-array-variancech":"2PR","@stdlib/stats/array/variancepn":"2PS","@stdlib/stats-array-variancepn":"2PT","@stdlib/stats/array/variancetk":"2PU","@stdlib/stats-array-variancetk":"2PV","@stdlib/stats/array/variancewd":"2PW","@stdlib/stats-array-variancewd":"2PX","@stdlib/stats/base/dists/bradford/skewness":"2PY","@stdlib/stats-base-dists-bradford-skewness":"2PZ","@stdlib/stats/base/ndarray/cumin":"2Pa","@stdlib/stats-base-ndarray-cumin":"2Pb","@stdlib/stats/base/ndarray/dcumin":"2Pc","@stdlib/stats-base-ndarray-dcumin":"2Pd","@stdlib/stats/base/ndarray/dmin":"2Pe","@stdlib/stats-base-ndarray-dmin":"2Pf","@stdlib/stats/base/ndarray/drange":"2Pg","@stdlib/stats-base-ndarray-drange":"2Ph","@stdlib/stats/base/ndarray/dztest":"2Pi","@stdlib/stats-base-ndarray-dztest":"2Pj","@stdlib/stats/base/ndarray/min-by":"2Pk","@stdlib/stats-base-ndarray-min-by":"2Pl","@stdlib/stats/base/ndarray/min":"2Pm","@stdlib/stats-base-ndarray-min":"2Pn","@stdlib/stats/base/ndarray/range":"2Po","@stdlib/stats-base-ndarray-range":"2Pp","@stdlib/stats/base/ndarray/scumin":"2Pq","@stdlib/stats-base-ndarray-scumin":"2Pr","@stdlib/stats/base/ndarray/smin":"2Ps","@stdlib/stats-base-ndarray-smin":"2Pt","@stdlib/stats/base/ndarray/srange":"2Pu","@stdlib/stats-base-ndarray-srange":"2Pv","@stdlib/stats/base/ndarray/sztest":"2Pw","@stdlib/stats-base-ndarray-sztest":"2Px","@stdlib/stats/base/ndarray/ztest":"2Py","@stdlib/stats-base-ndarray-ztest":"2Pz","@stdlib/stats/base/ztest/two-sample/results/factory":"2Q0","@stdlib/stats-base-ztest-two-sample-results-factory":"2Q1","@stdlib/stats/base/ztest/two-sample/results/float32":"2Q2","@stdlib/stats-base-ztest-two-sample-results-float32":"2Q3","@stdlib/stats/base/ztest/two-sample/results/float64":"2Q4","@stdlib/stats-base-ztest-two-sample-results-float64":"2Q5","@stdlib/stats/base/ztest/two-sample/results/struct-factory":"2Q6","@stdlib/stats-base-ztest-two-sample-results-struct-factory":"2Q7","@stdlib/stats/base/ztest/two-sample/results/to-json":"2Q8","@stdlib/stats-base-ztest-two-sample-results-to-json":"2Q9","@stdlib/stats/base/ztest/two-sample/results/to-string":"2QA","@stdlib/stats-base-ztest-two-sample-results-to-string":"2QB","@stdlib/stats/incr/nanmsum":"2QC","@stdlib/stats-incr-nanmsum":"2QD","@stdlib/stats/strided/covarmtk":"2QE","@stdlib/stats-strided-covarmtk":"2QF","@stdlib/stats/strided/dcovarmtk":"2QG","@stdlib/stats-strided-dcovarmtk":"2QH","@stdlib/stats/strided/dcovmatmtk":"2QI","@stdlib/stats-strided-dcovmatmtk":"2QJ","@stdlib/stats/strided/dmeanstdev":"2QK","@stdlib/stats-strided-dmeanstdev":"2QL","@stdlib/stats/strided/dmeanstdevpn":"2QM","@stdlib/stats-strided-dmeanstdevpn":"2QN","@stdlib/stats/strided/dmeanvar":"2QO","@stdlib/stats-strided-dmeanvar":"2QP","@stdlib/stats/strided/dmeanvarpn":"2QQ","@stdlib/stats-strided-dmeanvarpn":"2QR","@stdlib/stats/strided/nanmean":"2QS","@stdlib/stats-strided-nanmean":"2QT","@stdlib/stats/strided/nanmeanors":"2QU","@stdlib/stats-strided-nanmeanors":"2QV","@stdlib/stats/strided/nanmeanpn":"2QW","@stdlib/stats-strided-nanmeanpn":"2QX","@stdlib/stats/strided/nanmeanwd":"2QY","@stdlib/stats-strided-nanmeanwd":"2QZ","@stdlib/stats/strided/nanmskmax":"2Qa","@stdlib/stats-strided-nanmskmax":"2Qb","@stdlib/stats/strided/nanmskmin":"2Qc","@stdlib/stats-strided-nanmskmin":"2Qd","@stdlib/stats/strided/nanmskrange":"2Qe","@stdlib/stats-strided-nanmskrange":"2Qf","@stdlib/stats/strided/nanrange-by":"2Qg","@stdlib/stats-strided-nanrange-by":"2Qh","@stdlib/stats/strided/nanrange":"2Qi","@stdlib/stats-strided-nanrange":"2Qj","@stdlib/stats/strided/nanvariance":"2Qk","@stdlib/stats-strided-nanvariance":"2Ql","@stdlib/stats/strided/nanvariancech":"2Qm","@stdlib/stats-strided-nanvariancech":"2Qn","@stdlib/stats/strided/nanvariancepn":"2Qo","@stdlib/stats-strided-nanvariancepn":"2Qp","@stdlib/stats/strided/nanvariancetk":"2Qq","@stdlib/stats-strided-nanvariancetk":"2Qr","@stdlib/stats/strided/nanvariancewd":"2Qs","@stdlib/stats-strided-nanvariancewd":"2Qt","@stdlib/stats/strided/nanvarianceyc":"2Qu","@stdlib/stats-strided-nanvarianceyc":"2Qv","@stdlib/stats/strided/range-by":"2Qw","@stdlib/stats-strided-range-by":"2Qx","@stdlib/stats/strided/range":"2Qy","@stdlib/stats-strided-range":"2Qz","@stdlib/stats/strided/scovarmtk":"2R0","@stdlib/stats-strided-scovarmtk":"2R1","@stdlib/stats/strided/smeankbn":"2R2","@stdlib/stats-strided-smeankbn":"2R3","@stdlib/stats/strided/smeankbn2":"2R4","@stdlib/stats-strided-smeankbn2":"2R5","@stdlib/stats/strided/smeanlipw":"2R6","@stdlib/stats-strided-smeanlipw":"2R7","@stdlib/stats/strided/smeanors":"2R8","@stdlib/stats-strided-smeanors":"2R9","@stdlib/stats/strided/stdev":"2RA","@stdlib/stats-strided-stdev":"2RB","@stdlib/stats/strided/stdevch":"2RC","@stdlib/stats-strided-stdevch":"2RD","@stdlib/stats/strided/stdevpn":"2RE","@stdlib/stats-strided-stdevpn":"2RF","@stdlib/stats/strided/stdevtk":"2RG","@stdlib/stats-strided-stdevtk":"2RH","@stdlib/stats/strided/stdevwd":"2RI","@stdlib/stats-strided-stdevwd":"2RJ","@stdlib/stats/strided/stdevyc":"2RK","@stdlib/stats-strided-stdevyc":"2RL","@stdlib/stats/strided/sztest2":"2RM","@stdlib/stats-strided-sztest2":"2RN","@stdlib/stats/strided/variance":"2RO","@stdlib/stats-strided-variance":"2RP","@stdlib/stats/strided/variancech":"2RQ","@stdlib/stats-strided-variancech":"2RR","@stdlib/stats/strided/variancepn":"2RS","@stdlib/stats-strided-variancepn":"2RT","@stdlib/stats/strided/variancetk":"2RU","@stdlib/stats-strided-variancetk":"2RV","@stdlib/stats/strided/variancewd":"2RW","@stdlib/stats-strided-variancewd":"2RX","@stdlib/stats/strided/varianceyc":"2RY","@stdlib/stats-strided-varianceyc":"2RZ","@stdlib/stats/strided/ztest2":"2Ra","@stdlib/stats-strided-ztest2":"2Rb","@stdlib/wasm/types":"2Rc","@stdlib/wasm-types":"2Rd","@stdlib/array/base/zip2object":"2Re","@stdlib/array-base-zip2object":"2Rf","@stdlib/assert/is-almost-equal-array":"2Rg","@stdlib/assert-is-almost-equal-array":"2Rh","@stdlib/assert/is-almost-equal-complex128array":"2Ri","@stdlib/assert-is-almost-equal-complex128array":"2Rj","@stdlib/assert/is-almost-equal-complex64array":"2Rk","@stdlib/assert-is-almost-equal-complex64array":"2Rl","@stdlib/assert/is-almost-equal-float32array":"2Rm","@stdlib/assert-is-almost-equal-float32array":"2Rn","@stdlib/blas/ext/index-of":"2Ro","@stdlib/blas-ext-index-of":"2Rp","@stdlib/math/base/special/cospif":"2Rq","@stdlib/math-base-special-cospif":"2Rr","@stdlib/math/base/special/cpolarf":"2Rs","@stdlib/math-base-special-cpolarf":"2Rt","@stdlib/math/base/special/kernel-sincos":"2Ru","@stdlib/math-base-special-kernel-sincos":"2Rv","@stdlib/math/base/special/sinpif":"2Rw","@stdlib/math-base-special-sinpif":"2Rx","@stdlib/object/assign-in":"2Ry","@stdlib/object-assign-in":"2Rz","@stdlib/stats/array/nanstdevpn":"2S0","@stdlib/stats-array-nanstdevpn":"2S1","@stdlib/stats/array/nanstdevtk":"2S2","@stdlib/stats-array-nanstdevtk":"2S3","@stdlib/stats/array/nanstdevwd":"2S4","@stdlib/stats-array-nanstdevwd":"2S5","@stdlib/stats/array/nanstdevyc":"2S6","@stdlib/stats-array-nanstdevyc":"2S7","@stdlib/stats/base/ndarray/dztest2":"2S8","@stdlib/stats-base-ndarray-dztest2":"2S9","@stdlib/stats/base/ndarray/sztest2":"2SA","@stdlib/stats-base-ndarray-sztest2":"2SB","@stdlib/stats/base/ndarray/ztest2":"2SC","@stdlib/stats-base-ndarray-ztest2":"2SD","@stdlib/stats/strided/dztest2":"2SE","@stdlib/stats-strided-dztest2":"2SF","@stdlib/stats/strided/nanstdev":"2SG","@stdlib/stats-strided-nanstdev":"2SH","@stdlib/stats/strided/nanstdevch":"2SI","@stdlib/stats-strided-nanstdevch":"2SJ","@stdlib/stats/strided/nanstdevpn":"2SK","@stdlib/stats-strided-nanstdevpn":"2SL","@stdlib/stats/strided/nanstdevtk":"2SM","@stdlib/stats-strided-nanstdevtk":"2SN","@stdlib/stats/strided/nanstdevwd":"2SO","@stdlib/stats-strided-nanstdevwd":"2SP","@stdlib/stats/strided/nanstdevyc":"2SQ","@stdlib/stats-strided-nanstdevyc":"2SR","@stdlib/array/base/entries2objects":"2SS","@stdlib/array-base-entries2objects":"2ST","@stdlib/array/base/entries2views":"2SU","@stdlib/array-base-entries2views":"2SV","@stdlib/array/base/group-values-on-key":"2SW","@stdlib/array-base-group-values-on-key":"2SX","@stdlib/array/base/nested2objects":"2SY","@stdlib/array-base-nested2objects":"2SZ","@stdlib/array/base/nested2views":"2Sa","@stdlib/array-base-nested2views":"2Sb","@stdlib/array/base/rekey-views":"2Sc","@stdlib/array-base-rekey-views":"2Sd","@stdlib/array/base/rekey":"2Se","@stdlib/array-base-rekey":"2Sf","@stdlib/array/base/zip":"2Sg","@stdlib/array-base-zip":"2Sh","@stdlib/array/base/zip2objects":"2Si","@stdlib/array-base-zip2objects":"2Sj","@stdlib/array/base/zip2views":"2Sk","@stdlib/array-base-zip2views":"2Sl","@stdlib/blas/base/ggemm":"2Sm","@stdlib/blas-base-ggemm":"2Sn","@stdlib/blas/base/ggemv":"2So","@stdlib/blas-base-ggemv":"2Sp","@stdlib/blas/base/gsyr":"2Sq","@stdlib/blas-base-gsyr":"2Sr","@stdlib/blas/base/ndarray/ddot":"2Ss","@stdlib/blas-base-ndarray-ddot":"2St","@stdlib/blas/base/ndarray/gdot":"2Su","@stdlib/blas-base-ndarray-gdot":"2Sv","@stdlib/blas/base/ndarray/sdot":"2Sw","@stdlib/blas-base-ndarray-sdot":"2Sx","@stdlib/blas/ext/base/gfind-index":"2Sy","@stdlib/blas-ext-base-gfind-index":"2Sz","@stdlib/blas/ext/base/gfind-last-index":"2T0","@stdlib/blas-ext-base-gfind-last-index":"2T1","@stdlib/blas/ext/base/ndarray/dsorthp":"2T2","@stdlib/blas-ext-base-ndarray-dsorthp":"2T3","@stdlib/blas/ext/base/ndarray/gfind-index":"2T4","@stdlib/blas-ext-base-ndarray-gfind-index":"2T5","@stdlib/blas/ext/base/ndarray/gfind-last-index":"2T6","@stdlib/blas-ext-base-ndarray-gfind-last-index":"2T7","@stdlib/blas/ext/base/ndarray/gsorthp":"2T8","@stdlib/blas-ext-base-ndarray-gsorthp":"2T9","@stdlib/blas/ext/base/ndarray/ssorthp":"2TA","@stdlib/blas-ext-base-ndarray-ssorthp":"2TB","@stdlib/blas/ext/find-index":"2TC","@stdlib/blas-ext-find-index":"2TD","@stdlib/blas/ext/find-last-index":"2TE","@stdlib/blas-ext-find-last-index":"2TF","@stdlib/lapack/base/dladiv":"2TG","@stdlib/lapack-base-dladiv":"2TH","@stdlib/math/base/assert/is-negative-integerf":"2TI","@stdlib/math-base-assert-is-negative-integerf":"2TJ","@stdlib/math/base/special/absgammalnf":"2TK","@stdlib/math-base-special-absgammalnf":"2TL","@stdlib/math/base/special/cosdf":"2TM","@stdlib/math-base-special-cosdf":"2TN","@stdlib/math/base/special/cotdf":"2TO","@stdlib/math-base-special-cotdf":"2TP","@stdlib/math/base/special/cotf":"2TQ","@stdlib/math-base-special-cotf":"2TR","@stdlib/math/base/special/cscdf":"2TS","@stdlib/math-base-special-cscdf":"2TT","@stdlib/math/base/special/factoriallnf":"2TU","@stdlib/math-base-special-factoriallnf":"2TV","@stdlib/math/base/special/kernel-sincosf":"2TW","@stdlib/math-base-special-kernel-sincosf":"2TX","@stdlib/math/base/special/secdf":"2TY","@stdlib/math-base-special-secdf":"2TZ","@stdlib/math/base/special/sincf":"2Ta","@stdlib/math-base-special-sincf":"2Tb","@stdlib/math/base/special/sincosf":"2Tc","@stdlib/math-base-special-sincosf":"2Td","@stdlib/math/base/special/sindf":"2Te","@stdlib/math-base-special-sindf":"2Tf","@stdlib/math/base/special/tandf":"2Tg","@stdlib/math-base-special-tandf":"2Th","@stdlib/math/base/special/trigammaf":"2Ti","@stdlib/math-base-special-trigammaf":"2Tj","@stdlib/ndarray/base/binary-reduce-strided1d":"2Tk","@stdlib/ndarray-base-binary-reduce-strided1d":"2Tl","@stdlib/ndarray/base/from-array":"2Tm","@stdlib/ndarray-base-from-array":"2Tn","@stdlib/ndarray/base/zip2views1d":"2To","@stdlib/ndarray-base-zip2views1d":"2Tp","@stdlib/net/http2-secure-server":"2Tq","@stdlib/net-http2-secure-server":"2Tr","@stdlib/number/int16/base/identity":"2Ts","@stdlib/number-int16-base-identity":"2Tt","@stdlib/number/int32/base/identity":"2Tu","@stdlib/number-int32-base-identity":"2Tv","@stdlib/number/int8/base/identity":"2Tw","@stdlib/number-int8-base-identity":"2Tx","@stdlib/number/uint16/base/identity":"2Ty","@stdlib/number-uint16-base-identity":"2Tz","@stdlib/number/uint32/base/identity":"2U0","@stdlib/number-uint32-base-identity":"2U1","@stdlib/number/uint8/base/identity":"2U2","@stdlib/number-uint8-base-identity":"2U3","@stdlib/stats/base/dists/bradford":"2U4","@stdlib/stats-base-dists-bradford":"2U5","@stdlib/stats/base/dists/planck":"2U6","@stdlib/stats-base-dists-planck":"2U7","@stdlib/stats/base/ndarray/covarmtk":"2U8","@stdlib/stats-base-ndarray-covarmtk":"2U9","@stdlib/stats/base/ndarray/dcovarmtk":"2UA","@stdlib/stats-base-ndarray-dcovarmtk":"2UB","@stdlib/stats/base/ndarray/dmaxabs":"2UC","@stdlib/stats-base-ndarray-dmaxabs":"2UD","@stdlib/stats/base/ndarray/dmean":"2UE","@stdlib/stats-base-ndarray-dmean":"2UF","@stdlib/stats/base/ndarray/dminabs":"2UG","@stdlib/stats-base-ndarray-dminabs":"2UH","@stdlib/stats/base/ndarray/dnanmax":"2UI","@stdlib/stats-base-ndarray-dnanmax":"2UJ","@stdlib/stats/base/ndarray/dnanmin":"2UK","@stdlib/stats-base-ndarray-dnanmin":"2UL","@stdlib/stats/base/ndarray/maxabs":"2UM","@stdlib/stats-base-ndarray-maxabs":"2UN","@stdlib/stats/base/ndarray/mean":"2UO","@stdlib/stats-base-ndarray-mean":"2UP","@stdlib/stats/base/ndarray/minabs":"2UQ","@stdlib/stats-base-ndarray-minabs":"2UR","@stdlib/stats/base/ndarray/nanmax":"2US","@stdlib/stats-base-ndarray-nanmax":"2UT","@stdlib/stats/base/ndarray/nanmin":"2UU","@stdlib/stats-base-ndarray-nanmin":"2UV","@stdlib/stats/base/ndarray/scovarmtk":"2UW","@stdlib/stats-base-ndarray-scovarmtk":"2UX","@stdlib/stats/base/ndarray/smaxabs":"2UY","@stdlib/stats-base-ndarray-smaxabs":"2UZ","@stdlib/stats/base/ndarray/smean":"2Ua","@stdlib/stats-base-ndarray-smean":"2Ub","@stdlib/stats/base/ndarray/sminabs":"2Uc","@stdlib/stats-base-ndarray-sminabs":"2Ud","@stdlib/stats/base/ndarray/snanmax":"2Ue","@stdlib/stats-base-ndarray-snanmax":"2Uf","@stdlib/stats/base/ndarray/snanmin":"2Ug","@stdlib/stats-base-ndarray-snanmin":"2Uh","@stdlib/stats/cumin":"2Ui","@stdlib/stats-cumin":"2Uj","@stdlib/stats/maxabs":"2Uk","@stdlib/stats-maxabs":"2Ul","@stdlib/stats/mean":"2Um","@stdlib/stats-mean":"2Un","@stdlib/stats/min-by":"2Uo","@stdlib/stats-min-by":"2Up","@stdlib/stats/min":"2Uq","@stdlib/stats-min":"2Ur","@stdlib/stats/minabs":"2Us","@stdlib/stats-minabs":"2Ut","@stdlib/stats/nanmax":"2Uu","@stdlib/stats-nanmax":"2Uv","@stdlib/stats/nanmin":"2Uw","@stdlib/stats-nanmin":"2Ux","@stdlib/stats/range":"2Uy","@stdlib/stats-range":"2Uz","@stdlib/lapack/base/dlarf1f":"2V0","@stdlib/lapack-base-dlarf1f":"2V1","@stdlib/math/base/special/fast/absf":"2V2","@stdlib/math-base-special-fast-absf":"2V3","@stdlib/ndarray/base/any":"2V4","@stdlib/ndarray-base-any":"2V5","@stdlib/ndarray/base/nullary-strided1d":"2V6","@stdlib/ndarray-base-nullary-strided1d":"2V7","@stdlib/ndarray/with":"2V8","@stdlib/ndarray-with":"2V9","@stdlib/stats/base/ndarray/dnanmean":"2VA","@stdlib/stats-base-ndarray-dnanmean":"2VB","@stdlib/stats/base/ndarray/nanmean":"2VC","@stdlib/stats-base-ndarray-nanmean":"2VD","@stdlib/stats/base/ndarray/snanmean":"2VE","@stdlib/stats-base-ndarray-snanmean":"2VF","@stdlib/stats/nanmean":"2VG","@stdlib/stats-nanmean":"2VH","@stdlib/blas/base/wasm/zscal":"2VI","@stdlib/blas-base-wasm-zscal":"2VJ","@stdlib/blas/ext/last-index-of":"2VK","@stdlib/blas-ext-last-index-of":"2VL","@stdlib/complex/float32/base/mul-add":"2VM","@stdlib/complex-float32-base-mul-add":"2VN","@stdlib/math/base/special/fast/hypotf":"2VO","@stdlib/math-base-special-fast-hypotf":"2VP","@stdlib/ndarray/base/any-by":"2VQ","@stdlib/ndarray-base-any-by":"2VR","@stdlib/ndarray/base/binary-input-casting-dtype":"2VS","@stdlib/ndarray-base-binary-input-casting-dtype":"2VT","@stdlib/ndarray/base/binary-reduce-strided1d-dispatch-factory":"2VU","@stdlib/ndarray-base-binary-reduce-strided1d-dispatch-factory":"2VV","@stdlib/ndarray/base/binary-reduce-strided1d-dispatch":"2VW","@stdlib/ndarray-base-binary-reduce-strided1d-dispatch":"2VX","@stdlib/ndarray/base/broadcast-array-except-dimensions":"2VY","@stdlib/ndarray-base-broadcast-array-except-dimensions":"2VZ","@stdlib/ndarray/base/find":"2Va","@stdlib/ndarray-base-find":"2Vb","@stdlib/ndarray/base/flatten-shape":"2Vc","@stdlib/ndarray-base-flatten-shape":"2Vd","@stdlib/ndarray/base/nullary-strided1d-dispatch":"2Ve","@stdlib/ndarray-base-nullary-strided1d-dispatch":"2Vf","@stdlib/ndarray/base/unary-addon-dispatch":"2Vg","@stdlib/ndarray-base-unary-addon-dispatch":"2Vh","@stdlib/ndarray/fill-slice":"2Vi","@stdlib/ndarray-fill-slice":"2Vj","@stdlib/ndarray/flatten":"2Vk","@stdlib/ndarray-flatten":"2Vl","@stdlib/stats/base/ndarray/dmaxsorted":"2Vm","@stdlib/stats-base-ndarray-dmaxsorted":"2Vn","@stdlib/stats/base/ndarray/maxsorted":"2Vo","@stdlib/stats-base-ndarray-maxsorted":"2Vp","@stdlib/stats/base/ndarray/smaxsorted":"2Vq","@stdlib/stats-base-ndarray-smaxsorted":"2Vr","@stdlib/stats/strided/sdsnanmeanors":"2Vs","@stdlib/stats-strided-sdsnanmeanors":"2Vt","@stdlib/stats/strided/snanmean":"2Vu","@stdlib/stats-strided-snanmean":"2Vv","@stdlib/stats/strided/sstdevwd":"2Vw","@stdlib/stats-strided-sstdevwd":"2Vx","@stdlib/array/base/insert-at":"2Vy","@stdlib/array-base-insert-at":"2Vz","@stdlib/array/base/to-inserted-at":"2W0","@stdlib/array-base-to-inserted-at":"2W1","@stdlib/blas/ext/base/gindex-of-row":"2W2","@stdlib/blas-ext-base-gindex-of-row":"2W3","@stdlib/math/base/special/fast/maxf":"2W4","@stdlib/math-base-special-fast-maxf":"2W5","@stdlib/ndarray/base/assert/is-data-type-object":"2W6","@stdlib/ndarray-base-assert-is-data-type-object":"2W7","@stdlib/ndarray/base/assert/is-equal-data-type":"2W8","@stdlib/ndarray-base-assert-is-equal-data-type":"2W9","@stdlib/ndarray/base/dtype-alignment":"2WA","@stdlib/ndarray-base-dtype-alignment":"2WB","@stdlib/ndarray/base/dtypes2enums":"2WC","@stdlib/ndarray-base-dtypes2enums":"2WD","@stdlib/ndarray/base/nullary-strided1d-dispatch-factory":"2WE","@stdlib/ndarray-base-nullary-strided1d-dispatch-factory":"2WF","@stdlib/ndarray/dtype-ctor":"2WG","@stdlib/ndarray-dtype-ctor":"2WH","@stdlib/ndarray/flatten-by":"2WI","@stdlib/ndarray-flatten-by":"2WJ","@stdlib/stats/strided/wasm/dnanvariancewd":"2WK","@stdlib/stats-strided-wasm-dnanvariancewd":"2WL","@stdlib/blas/ext/sorthp":"2WM","@stdlib/blas-ext-sorthp":"2WN","@stdlib/math/base/special/fast/minf":"2WO","@stdlib/math-base-special-fast-minf":"2WP","@stdlib/ndarray/any-by":"2WQ","@stdlib/ndarray-any-by":"2WR","@stdlib/ndarray/any":"2WS","@stdlib/ndarray-any":"2WT","@stdlib/ndarray/base/dtype-enums":"2WU","@stdlib/ndarray-base-dtype-enums":"2WV","@stdlib/ndarray/base/dtype-objects":"2WW","@stdlib/ndarray-base-dtype-objects":"2WX","@stdlib/ndarray/base/dtype-strings":"2WY","@stdlib/ndarray-base-dtype-strings":"2WZ","@stdlib/ndarray/base/pop":"2Wa","@stdlib/ndarray-base-pop":"2Wb","@stdlib/ndarray/base/shift":"2Wc","@stdlib/ndarray-base-shift":"2Wd","@stdlib/stats/incr/nangmean":"2We","@stdlib/stats-incr-nangmean":"2Wf","@stdlib/stats/incr/nanhmean":"2Wg","@stdlib/stats-incr-nanhmean":"2Wh","@stdlib/stats/incr/nanmin":"2Wi","@stdlib/stats-incr-nanmin":"2Wj","@stdlib/assert/has-is-concat-spreadable-symbol-support":"2Wk","@stdlib/assert-has-is-concat-spreadable-symbol-support":"2Wl","@stdlib/blas/ext/to-sortedhp":"2Wm","@stdlib/blas-ext-to-sortedhp":"2Wn","@stdlib/ndarray/base/assert/is-complex-floating-point-data-type-char":"2Wo","@stdlib/ndarray-base-assert-is-complex-floating-point-data-type-char":"2Wp","@stdlib/ndarray/base/copy":"2Wq","@stdlib/ndarray-base-copy":"2Wr","@stdlib/ndarray/base/dtype-chars":"2Ws","@stdlib/ndarray-base-dtype-chars":"2Wt","@stdlib/ndarray/base/flatten-shape-from":"2Wu","@stdlib/ndarray-base-flatten-shape-from":"2Wv","@stdlib/ndarray/base/some":"2Ww","@stdlib/ndarray-base-some":"2Wx","@stdlib/ndarray/concat":"2Wy","@stdlib/ndarray-concat":"2Wz","@stdlib/ndarray/find":"2X0","@stdlib/ndarray-find":"2X1","@stdlib/ndarray/flatten-from":"2X2","@stdlib/ndarray-flatten-from":"2X3","@stdlib/ndarray/pop":"2X4","@stdlib/ndarray-pop":"2X5","@stdlib/ndarray/reverse-dimension":"2X6","@stdlib/ndarray-reverse-dimension":"2X7","@stdlib/ndarray/reverse":"2X8","@stdlib/ndarray-reverse":"2X9","@stdlib/ndarray/shift":"2XA","@stdlib/ndarray-shift":"2XB","@stdlib/ndarray/to-reversed":"2XC","@stdlib/ndarray-to-reversed":"2XD","@stdlib/stats/base/ndarray/meankbn":"2XE","@stdlib/stats-base-ndarray-meankbn":"2XF","@stdlib/stats/base/ndarray/meankbn2":"2XG","@stdlib/stats-base-ndarray-meankbn2":"2XH","@stdlib/stats/base/ndarray/meanors":"2XI","@stdlib/stats-base-ndarray-meanors":"2XJ","@stdlib/stats/base/ndarray/meanpn":"2XK","@stdlib/stats-base-ndarray-meanpn":"2XL","@stdlib/stats/base/ndarray/meanpw":"2XM","@stdlib/stats-base-ndarray-meanpw":"2XN","@stdlib/stats/base/ndarray/meanwd":"2XO","@stdlib/stats-base-ndarray-meanwd":"2XP","@stdlib/stats/base/ndarray/mediansorted":"2XQ","@stdlib/stats-base-ndarray-mediansorted":"2XR","@stdlib/stats/base/ndarray/minsorted":"2XS","@stdlib/stats-base-ndarray-minsorted":"2XT","@stdlib/stats/base/ndarray/mskmax":"2XU","@stdlib/stats-base-ndarray-mskmax":"2XV","@stdlib/symbol/is-concat-spreadable":"2XW","@stdlib/symbol-is-concat-spreadable":"2XX","@stdlib/assert/has-has-instance-symbol-support":"2XY","@stdlib/assert-has-has-instance-symbol-support":"2XZ","@stdlib/assert/has-match-symbol-support":"2Xa","@stdlib/assert-has-match-symbol-support":"2Xb","@stdlib/assert/has-replace-symbol-support":"2Xc","@stdlib/assert-has-replace-symbol-support":"2Xd","@stdlib/assert/has-search-symbol-support":"2Xe","@stdlib/assert-has-search-symbol-support":"2Xf","@stdlib/assert/has-split-symbol-support":"2Xg","@stdlib/assert-has-split-symbol-support":"2Xh","@stdlib/assert/has-to-primitive-symbol-support":"2Xi","@stdlib/assert-has-to-primitive-symbol-support":"2Xj","@stdlib/blas/ext/base/dlinspace":"2Xk","@stdlib/blas-ext-base-dlinspace":"2Xl","@stdlib/blas/ext/base/glinspace":"2Xm","@stdlib/blas-ext-base-glinspace":"2Xn","@stdlib/blas/ext/base/ndarray/dlinspace":"2Xo","@stdlib/blas-ext-base-ndarray-dlinspace":"2Xp","@stdlib/blas/ext/base/ndarray/glinspace":"2Xq","@stdlib/blas-ext-base-ndarray-glinspace":"2Xr","@stdlib/blas/ext/base/ndarray/slinspace":"2Xs","@stdlib/blas-ext-base-ndarray-slinspace":"2Xt","@stdlib/blas/ext/base/slinspace":"2Xu","@stdlib/blas-ext-base-slinspace":"2Xv","@stdlib/ndarray/base/complement-shape":"2Xw","@stdlib/ndarray-base-complement-shape":"2Xx","@stdlib/ndarray/copy":"2Xy","@stdlib/ndarray-copy":"2Xz","@stdlib/stats/base/ndarray/dmeankbn":"2Y0","@stdlib/stats-base-ndarray-dmeankbn":"2Y1","@stdlib/stats/base/ndarray/dmeankbn2":"2Y2","@stdlib/stats-base-ndarray-dmeankbn2":"2Y3","@stdlib/stats/base/ndarray/dmeanli":"2Y4","@stdlib/stats-base-ndarray-dmeanli":"2Y5","@stdlib/stats/base/ndarray/dmeanlipw":"2Y6","@stdlib/stats-base-ndarray-dmeanlipw":"2Y7","@stdlib/stats/base/ndarray/dminsorted":"2Y8","@stdlib/stats-base-ndarray-dminsorted":"2Y9","@stdlib/stats/base/ndarray/mskmin":"2YA","@stdlib/stats-base-ndarray-mskmin":"2YB","@stdlib/stats/base/ndarray/range-by":"2YC","@stdlib/stats-base-ndarray-range-by":"2YD","@stdlib/stats/base/ndarray/smaxabssorted":"2YE","@stdlib/stats-base-ndarray-smaxabssorted":"2YF","@stdlib/stats/base/ndarray/sminsorted":"2YG","@stdlib/stats-base-ndarray-sminsorted":"2YH","@stdlib/stats/base/ndarray/snanmaxabs":"2YI","@stdlib/stats-base-ndarray-snanmaxabs":"2YJ","@stdlib/stats/base/ndarray/snanminabs":"2YK","@stdlib/stats-base-ndarray-snanminabs":"2YL","@stdlib/symbol/has-instance":"2YM","@stdlib/symbol-has-instance":"2YN","@stdlib/symbol/to-primitive":"2YO","@stdlib/symbol-to-primitive":"2YP","@stdlib/blas/ext/base/drrss":"2YQ","@stdlib/blas-ext-base-drrss":"2YR","@stdlib/blas/ext/linspace":"2YS","@stdlib/blas-ext-linspace":"2YT","@stdlib/ndarray/some":"2YU","@stdlib/ndarray-some":"2YV","@stdlib/number/float64/base/to-float16":"2YW","@stdlib/number-float64-base-to-float16":"2YX","@stdlib/number/int16/base":"2YY","@stdlib/number-int16-base":"2YZ","@stdlib/number/int8/base":"2Ya","@stdlib/number-int8-base":"2Yb","@stdlib/stats/base/ndarray/dnanmaxabs":"2Yc","@stdlib/stats-base-ndarray-dnanmaxabs":"2Yd","@stdlib/stats/base/ndarray/dnanminabs":"2Ye","@stdlib/stats-base-ndarray-dnanminabs":"2Yf","@stdlib/stats/base/ndarray/nanmaxabs":"2Yg","@stdlib/stats-base-ndarray-nanmaxabs":"2Yh","@stdlib/stats/base/ndarray/nanminabs":"2Yi","@stdlib/stats-base-ndarray-nanminabs":"2Yj","@stdlib/stats/base/ndarray/scumaxabs":"2Yk","@stdlib/stats-base-ndarray-scumaxabs":"2Yl","@stdlib/stats/base/ndarray/scuminabs":"2Ym","@stdlib/stats-base-ndarray-scuminabs":"2Yn","@stdlib/stats/incr/nanmcv":"2Yo","@stdlib/stats-incr-nanmcv":"2Yp","@stdlib/stats/strided/wasm/dmeanpw":"2Yq","@stdlib/stats-strided-wasm-dmeanpw":"2Yr","@stdlib/string/base/concat":"2Ys","@stdlib/string-base-concat":"2Yt","@stdlib/symbol/replace":"2Yu","@stdlib/symbol-replace":"2Yv","@stdlib/blas/ext/base/gjoin":"2Yw","@stdlib/blas-ext-base-gjoin":"2Yx","@stdlib/blas/ext/base/ndarray/csumkbn":"2Yy","@stdlib/blas-ext-base-ndarray-csumkbn":"2Yz","@stdlib/blas/ext/base/ndarray/dcusumkbn":"2Z0","@stdlib/blas-ext-base-ndarray-dcusumkbn":"2Z1","@stdlib/blas/ext/base/ndarray/dcusumkbn2":"2Z2","@stdlib/blas-ext-base-ndarray-dcusumkbn2":"2Z3","@stdlib/blas/ext/base/ndarray/dsumkbn":"2Z4","@stdlib/blas-ext-base-ndarray-dsumkbn":"2Z5","@stdlib/blas/ext/base/ndarray/dsumkbn2":"2Z6","@stdlib/blas-ext-base-ndarray-dsumkbn2":"2Z7","@stdlib/blas/ext/base/ndarray/gjoin":"2Z8","@stdlib/blas-ext-base-ndarray-gjoin":"2Z9","@stdlib/blas/ext/base/ndarray/gsumkbn":"2ZA","@stdlib/blas-ext-base-ndarray-gsumkbn":"2ZB","@stdlib/blas/ext/base/ndarray/gsumkbn2":"2ZC","@stdlib/blas-ext-base-ndarray-gsumkbn2":"2ZD","@stdlib/blas/ext/base/ndarray/scusumkbn":"2ZE","@stdlib/blas-ext-base-ndarray-scusumkbn":"2ZF","@stdlib/blas/ext/base/ndarray/scusumkbn2":"2ZG","@stdlib/blas-ext-base-ndarray-scusumkbn2":"2ZH","@stdlib/blas/ext/base/ndarray/ssumkbn":"2ZI","@stdlib/blas-ext-base-ndarray-ssumkbn":"2ZJ","@stdlib/blas/ext/base/ndarray/ssumkbn2":"2ZK","@stdlib/blas-ext-base-ndarray-ssumkbn2":"2ZL","@stdlib/blas/ext/base/ndarray/zsumkbn":"2ZM","@stdlib/blas-ext-base-ndarray-zsumkbn":"2ZN","@stdlib/constants/float16/apery":"2ZO","@stdlib/constants-float16-apery":"2ZP","@stdlib/constants/float16/catalan":"2ZQ","@stdlib/constants-float16-catalan":"2ZR","@stdlib/constants/float16/e":"2ZS","@stdlib/constants-float16-e":"2ZT","@stdlib/constants/float16/eulergamma":"2ZU","@stdlib/constants-float16-eulergamma":"2ZV","@stdlib/constants/float16/exponent-mask":"2ZW","@stdlib/constants-float16-exponent-mask":"2ZX","@stdlib/constants/float16/fourth-pi":"2ZY","@stdlib/constants-float16-fourth-pi":"2ZZ","@stdlib/constants/float16/half-pi":"2Za","@stdlib/constants-float16-half-pi":"2Zb","@stdlib/constants/float16/max-base2-exponent":"2Zc","@stdlib/constants-float16-max-base2-exponent":"2Zd","@stdlib/constants/float16/max-ln":"2Ze","@stdlib/constants-float16-max-ln":"2Zf","@stdlib/constants/float16/min-base2-exponent":"2Zg","@stdlib/constants-float16-min-base2-exponent":"2Zh","@stdlib/constants/float16/min-ln":"2Zi","@stdlib/constants-float16-min-ln":"2Zj","@stdlib/constants/float16/num-exponent-bits":"2Zk","@stdlib/constants-float16-num-exponent-bits":"2Zl","@stdlib/constants/float16/num-significand-bits":"2Zm","@stdlib/constants-float16-num-significand-bits":"2Zn","@stdlib/constants/float16/phi":"2Zo","@stdlib/constants-float16-phi":"2Zp","@stdlib/constants/float16/pi-squared":"2Zq","@stdlib/constants-float16-pi-squared":"2Zr","@stdlib/constants/float16/pi":"2Zs","@stdlib/constants-float16-pi":"2Zt","@stdlib/constants/float16/sign-mask":"2Zu","@stdlib/constants-float16-sign-mask":"2Zv","@stdlib/constants/float16/significand-mask":"2Zw","@stdlib/constants-float16-significand-mask":"2Zx","@stdlib/constants/float16/sqrt-two":"2Zy","@stdlib/constants-float16-sqrt-two":"2Zz","@stdlib/constants/float16/two-pi":"2a0","@stdlib/constants-float16-two-pi":"2a1","@stdlib/constants/float32/glaisher-kinkelin":"2a2","@stdlib/constants-float32-glaisher-kinkelin":"2a3","@stdlib/math/base/special/log1pf":"2a4","@stdlib/math-base-special-log1pf":"2a5","@stdlib/math/base/special/powf":"2a6","@stdlib/math-base-special-powf":"2a7","@stdlib/ndarray/base/to-flippedlr":"2a8","@stdlib/ndarray-base-to-flippedlr":"2a9","@stdlib/ndarray/base/to-flippedud":"2aA","@stdlib/ndarray-base-to-flippedud":"2aB","@stdlib/ndarray/concat1d":"2aC","@stdlib/ndarray-concat1d":"2aD","@stdlib/ndarray/fliplr":"2aE","@stdlib/ndarray-fliplr":"2aF","@stdlib/ndarray/flipud":"2aG","@stdlib/ndarray-flipud":"2aH","@stdlib/number/float16/base/exponent":"2aI","@stdlib/number-float16-base-exponent":"2aJ","@stdlib/number/float16/base/from-word":"2aK","@stdlib/number-float16-base-from-word":"2aL","@stdlib/number/float16/base/to-binary-string":"2aM","@stdlib/number-float16-base-to-binary-string":"2aN","@stdlib/number/float16/base/to-word":"2aO","@stdlib/number-float16-base-to-word":"2aP","@stdlib/object/any-in-by":"2aQ","@stdlib/object-any-in-by":"2aR","@stdlib/object/any-own-by":"2aS","@stdlib/object-any-own-by":"2aT","@stdlib/object/move-property":"2aU","@stdlib/object-move-property":"2aV","@stdlib/object/none-own-by":"2aW","@stdlib/object-none-own-by":"2aX","@stdlib/object/some-own-by":"2aY","@stdlib/object-some-own-by":"2aZ","@stdlib/stats/base/ndarray/dcumaxabs":"2aa","@stdlib/stats-base-ndarray-dcumaxabs":"2ab","@stdlib/stats/base/ndarray/dcuminabs":"2ac","@stdlib/stats-base-ndarray-dcuminabs":"2ad","@stdlib/stats/base/ndarray/dmaxabssorted":"2ae","@stdlib/stats-base-ndarray-dmaxabssorted":"2af","@stdlib/stats/base/ndarray/dmeanors":"2ag","@stdlib/stats-base-ndarray-dmeanors":"2ah","@stdlib/stats/base/ndarray/dmeanpn":"2ai","@stdlib/stats-base-ndarray-dmeanpn":"2aj","@stdlib/stats/base/ndarray/dmeanpw":"2ak","@stdlib/stats-base-ndarray-dmeanpw":"2al","@stdlib/stats/base/ndarray/dmeanwd":"2am","@stdlib/stats-base-ndarray-dmeanwd":"2an","@stdlib/stats/base/ndarray/dmediansorted":"2ao","@stdlib/stats-base-ndarray-dmediansorted":"2ap","@stdlib/stats/base/ndarray/dmidrange":"2aq","@stdlib/stats-base-ndarray-dmidrange":"2ar","@stdlib/stats/base/ndarray/dmskmax":"2as","@stdlib/stats-base-ndarray-dmskmax":"2at","@stdlib/stats/base/ndarray/dmskmin":"2au","@stdlib/stats-base-ndarray-dmskmin":"2av","@stdlib/stats/base/ndarray/dmskrange":"2aw","@stdlib/stats-base-ndarray-dmskrange":"2ax","@stdlib/stats/base/ndarray/dnanmeanors":"2ay","@stdlib/stats-base-ndarray-dnanmeanors":"2az","@stdlib/stats/base/ndarray/dnanmeanpn":"2b0","@stdlib/stats-base-ndarray-dnanmeanpn":"2b1","@stdlib/stats/base/ndarray/dnanmeanpw":"2b2","@stdlib/stats-base-ndarray-dnanmeanpw":"2b3","@stdlib/stats/base/ndarray/dnanmeanwd":"2b4","@stdlib/stats-base-ndarray-dnanmeanwd":"2b5","@stdlib/stats/base/ndarray/dnanmskmax":"2b6","@stdlib/stats-base-ndarray-dnanmskmax":"2b7","@stdlib/stats/base/ndarray/dnanmskmin":"2b8","@stdlib/stats-base-ndarray-dnanmskmin":"2b9","@stdlib/stats/base/ndarray/dnanmskrange":"2bA","@stdlib/stats-base-ndarray-dnanmskrange":"2bB","@stdlib/stats/base/ndarray/mskrange":"2bC","@stdlib/stats-base-ndarray-mskrange":"2bD","@stdlib/stats/base/ndarray/nanmax-by":"2bE","@stdlib/stats-base-ndarray-nanmax-by":"2bF","@stdlib/stats/base/ndarray/nanmeanors":"2bG","@stdlib/stats-base-ndarray-nanmeanors":"2bH","@stdlib/stats/base/ndarray/nanmeanpn":"2bI","@stdlib/stats-base-ndarray-nanmeanpn":"2bJ","@stdlib/stats/base/ndarray/nanmeanwd":"2bK","@stdlib/stats-base-ndarray-nanmeanwd":"2bL","@stdlib/stats/base/ndarray/nanmin-by":"2bM","@stdlib/stats-base-ndarray-nanmin-by":"2bN","@stdlib/stats/base/ndarray/nanmskmax":"2bO","@stdlib/stats-base-ndarray-nanmskmax":"2bP","@stdlib/stats/base/ndarray/nanmskmin":"2bQ","@stdlib/stats-base-ndarray-nanmskmin":"2bR","@stdlib/stats/base/ndarray/nanmskrange":"2bS","@stdlib/stats-base-ndarray-nanmskrange":"2bT","@stdlib/stats/base/ndarray/nanrange-by":"2bU","@stdlib/stats-base-ndarray-nanrange-by":"2bV","@stdlib/stats/base/ndarray/nanrange":"2bW","@stdlib/stats-base-ndarray-nanrange":"2bX","@stdlib/stats/base/ndarray/sdsmean":"2bY","@stdlib/stats-base-ndarray-sdsmean":"2bZ","@stdlib/stats/base/ndarray/sdsmeanors":"2ba","@stdlib/stats-base-ndarray-sdsmeanors":"2bb","@stdlib/stats/base/ndarray/sdsnanmeanors":"2bc","@stdlib/stats-base-ndarray-sdsnanmeanors":"2bd","@stdlib/stats/base/ndarray/smeankbn":"2be","@stdlib/stats-base-ndarray-smeankbn":"2bf","@stdlib/stats/base/ndarray/smeankbn2":"2bg","@stdlib/stats-base-ndarray-smeankbn2":"2bh","@stdlib/stats/base/ndarray/smeanli":"2bi","@stdlib/stats-base-ndarray-smeanli":"2bj","@stdlib/stats/base/ndarray/smeanlipw":"2bk","@stdlib/stats-base-ndarray-smeanlipw":"2bl","@stdlib/stats/base/ndarray/smeanors":"2bm","@stdlib/stats-base-ndarray-smeanors":"2bn","@stdlib/stats/base/ndarray/smeanpn":"2bo","@stdlib/stats-base-ndarray-smeanpn":"2bp","@stdlib/stats/base/ndarray/smeanpw":"2bq","@stdlib/stats-base-ndarray-smeanpw":"2br","@stdlib/stats/base/ndarray/smeanwd":"2bs","@stdlib/stats-base-ndarray-smeanwd":"2bt","@stdlib/stats/base/ndarray/smediansorted":"2bu","@stdlib/stats-base-ndarray-smediansorted":"2bv","@stdlib/stats/base/ndarray/smidrange":"2bw","@stdlib/stats-base-ndarray-smidrange":"2bx","@stdlib/stats/base/ndarray/smskmax":"2by","@stdlib/stats-base-ndarray-smskmax":"2bz","@stdlib/stats/base/ndarray/smskmin":"2c0","@stdlib/stats-base-ndarray-smskmin":"2c1","@stdlib/stats/base/ndarray/smskrange":"2c2","@stdlib/stats-base-ndarray-smskrange":"2c3","@stdlib/stats/base/ndarray/snanmeanors":"2c4","@stdlib/stats-base-ndarray-snanmeanors":"2c5","@stdlib/stats/base/ndarray/snanmeanpn":"2c6","@stdlib/stats-base-ndarray-snanmeanpn":"2c7","@stdlib/stats/base/ndarray/snanmeanwd":"2c8","@stdlib/stats-base-ndarray-snanmeanwd":"2c9","@stdlib/stats/base/ndarray/snanmskmax":"2cA","@stdlib/stats-base-ndarray-snanmskmax":"2cB","@stdlib/stats/base/ndarray/snanmskmin":"2cC","@stdlib/stats-base-ndarray-snanmskmin":"2cD","@stdlib/stats/base/ndarray/snanmskrange":"2cE","@stdlib/stats-base-ndarray-snanmskrange":"2cF","@stdlib/stats/maxsorted":"2cG","@stdlib/stats-maxsorted":"2cH","@stdlib/stats/meankbn":"2cI","@stdlib/stats-meankbn":"2cJ","@stdlib/stats/meankbn2":"2cK","@stdlib/stats-meankbn2":"2cL","@stdlib/stats/meanors":"2cM","@stdlib/stats-meanors":"2cN","@stdlib/stats/meanpn":"2cO","@stdlib/stats-meanpn":"2cP","@stdlib/stats/meanpw":"2cQ","@stdlib/stats-meanpw":"2cR","@stdlib/stats/meanwd":"2cS","@stdlib/stats-meanwd":"2cT","@stdlib/stats/mediansorted":"2cU","@stdlib/stats-mediansorted":"2cV","@stdlib/stats/minsorted":"2cW","@stdlib/stats-minsorted":"2cX","@stdlib/stats/nanmax-by":"2cY","@stdlib/stats-nanmax-by":"2cZ","@stdlib/stats/nanmaxabs":"2ca","@stdlib/stats-nanmaxabs":"2cb","@stdlib/stats/nanmeanors":"2cc","@stdlib/stats-nanmeanors":"2cd","@stdlib/stats/nanmeanpn":"2ce","@stdlib/stats-nanmeanpn":"2cf","@stdlib/stats/nanmeanwd":"2cg","@stdlib/stats-nanmeanwd":"2ch","@stdlib/stats/nanmin-by":"2ci","@stdlib/stats-nanmin-by":"2cj","@stdlib/stats/nanminabs":"2ck","@stdlib/stats-nanminabs":"2cl","@stdlib/stats/range-by":"2cm","@stdlib/stats-range-by":"2cn","@stdlib/array/base/assert/has-almost-same-values":"2co","@stdlib/array-base-assert-has-almost-same-values":"2cp","@stdlib/array/base/falses":"2cq","@stdlib/array-base-falses":"2cr","@stdlib/array/base/to-filled":"2cs","@stdlib/array-base-to-filled":"2ct","@stdlib/array/base/trues":"2cu","@stdlib/array-base-trues":"2cv","@stdlib/array/float16":"2cw","@stdlib/array-float16":"2cx","@stdlib/array/nulls":"2cy","@stdlib/array-nulls":"2cz","@stdlib/assert/is-almost-same-array":"2d0","@stdlib/assert-is-almost-same-array":"2d1","@stdlib/assert/is-almost-same-complex128array":"2d2","@stdlib/assert-is-almost-same-complex128array":"2d3","@stdlib/assert/is-almost-same-complex64array":"2d4","@stdlib/assert-is-almost-same-complex64array":"2d5","@stdlib/assert/is-almost-same-float32array":"2d6","@stdlib/assert-is-almost-same-float32array":"2d7","@stdlib/assert/is-almost-same-float64array":"2d8","@stdlib/assert-is-almost-same-float64array":"2d9","@stdlib/assert/is-almost-same-value":"2dA","@stdlib/assert-is-almost-same-value":"2dB","@stdlib/assert/is-ndarray-descriptor":"2dC","@stdlib/assert-is-ndarray-descriptor":"2dD","@stdlib/blas/base/cgemv":"2dE","@stdlib/blas-base-cgemv":"2dF","@stdlib/blas/base/dzasum":"2dG","@stdlib/blas-base-dzasum":"2dH","@stdlib/blas/base/ndarray/caxpy":"2dI","@stdlib/blas-base-ndarray-caxpy":"2dJ","@stdlib/blas/base/ndarray/ccopy":"2dK","@stdlib/blas-base-ndarray-ccopy":"2dL","@stdlib/blas/base/ndarray/cscal":"2dM","@stdlib/blas-base-ndarray-cscal":"2dN","@stdlib/blas/base/ndarray/csscal":"2dO","@stdlib/blas-base-ndarray-csscal":"2dP","@stdlib/blas/base/ndarray/cswap":"2dQ","@stdlib/blas-base-ndarray-cswap":"2dR","@stdlib/blas/base/ndarray/dasum":"2dS","@stdlib/blas-base-ndarray-dasum":"2dT","@stdlib/blas/base/ndarray/daxpy":"2dU","@stdlib/blas-base-ndarray-daxpy":"2dV","@stdlib/blas/base/ndarray/dcopy":"2dW","@stdlib/blas-base-ndarray-dcopy":"2dX","@stdlib/blas/base/ndarray/dnrm2":"2dY","@stdlib/blas-base-ndarray-dnrm2":"2dZ","@stdlib/blas/base/ndarray/dscal":"2da","@stdlib/blas-base-ndarray-dscal":"2db","@stdlib/blas/base/ndarray/dsdot":"2dc","@stdlib/blas-base-ndarray-dsdot":"2dd","@stdlib/blas/base/ndarray/dswap":"2de","@stdlib/blas-base-ndarray-dswap":"2df","@stdlib/blas/base/ndarray/dzasum":"2dg","@stdlib/blas-base-ndarray-dzasum":"2dh","@stdlib/blas/base/ndarray/dznrm2":"2di","@stdlib/blas-base-ndarray-dznrm2":"2dj","@stdlib/blas/base/ndarray/gasum":"2dk","@stdlib/blas-base-ndarray-gasum":"2dl","@stdlib/blas/base/ndarray/gaxpy":"2dm","@stdlib/blas-base-ndarray-gaxpy":"2dn","@stdlib/blas/base/ndarray/gcopy":"2do","@stdlib/blas-base-ndarray-gcopy":"2dp","@stdlib/blas/base/ndarray/gnrm2":"2dq","@stdlib/blas-base-ndarray-gnrm2":"2dr","@stdlib/blas/base/ndarray/gscal":"2ds","@stdlib/blas-base-ndarray-gscal":"2dt","@stdlib/blas/base/ndarray/gswap":"2du","@stdlib/blas-base-ndarray-gswap":"2dv","@stdlib/blas/base/ndarray/idamax":"2dw","@stdlib/blas-base-ndarray-idamax":"2dx","@stdlib/blas/base/ndarray":"2dy","@stdlib/blas-base-ndarray":"2dz","@stdlib/blas/base/ndarray/sasum":"2e0","@stdlib/blas-base-ndarray-sasum":"2e1","@stdlib/blas/base/ndarray/saxpy":"2e2","@stdlib/blas-base-ndarray-saxpy":"2e3","@stdlib/blas/base/ndarray/scasum":"2e4","@stdlib/blas-base-ndarray-scasum":"2e5","@stdlib/blas/base/ndarray/scnrm2":"2e6","@stdlib/blas-base-ndarray-scnrm2":"2e7","@stdlib/blas/base/ndarray/scopy":"2e8","@stdlib/blas-base-ndarray-scopy":"2e9","@stdlib/blas/base/ndarray/sdsdot":"2eA","@stdlib/blas-base-ndarray-sdsdot":"2eB","@stdlib/blas/base/ndarray/snrm2":"2eC","@stdlib/blas-base-ndarray-snrm2":"2eD","@stdlib/blas/base/ndarray/sscal":"2eE","@stdlib/blas-base-ndarray-sscal":"2eF","@stdlib/blas/base/ndarray/sswap":"2eG","@stdlib/blas-base-ndarray-sswap":"2eH","@stdlib/blas/base/ndarray/zaxpy":"2eI","@stdlib/blas-base-ndarray-zaxpy":"2eJ","@stdlib/blas/base/ndarray/zcopy":"2eK","@stdlib/blas-base-ndarray-zcopy":"2eL","@stdlib/blas/base/ndarray/zdscal":"2eM","@stdlib/blas-base-ndarray-zdscal":"2eN","@stdlib/blas/base/ndarray/zscal":"2eO","@stdlib/blas-base-ndarray-zscal":"2eP","@stdlib/blas/base/ndarray/zswap":"2eQ","@stdlib/blas-base-ndarray-zswap":"2eR","@stdlib/blas/ext/base/capx":"2eS","@stdlib/blas-ext-base-capx":"2eT","@stdlib/blas/ext/base/caxpb":"2eU","@stdlib/blas-ext-base-caxpb":"2eV","@stdlib/blas/ext/base/cindex-of-column":"2eW","@stdlib/blas-ext-base-cindex-of-column":"2eX","@stdlib/blas/ext/base/cindex-of-row":"2eY","@stdlib/blas-ext-base-cindex-of-row":"2eZ","@stdlib/blas/ext/base/cindex-of":"2ea","@stdlib/blas-ext-base-cindex-of":"2eb","@stdlib/blas/ext/base/clast-index-of-row":"2ec","@stdlib/blas-ext-base-clast-index-of-row":"2ed","@stdlib/blas/ext/base/cone-to":"2ee","@stdlib/blas-ext-base-cone-to":"2ef","@stdlib/blas/ext/base/cunitspace":"2eg","@stdlib/blas-ext-base-cunitspace":"2eh","@stdlib/blas/ext/base/cwhere":"2ei","@stdlib/blas-ext-base-cwhere":"2ej","@stdlib/blas/ext/base/cxsa":"2ek","@stdlib/blas-ext-base-cxsa":"2el","@stdlib/blas/ext/base/czero-to":"2em","@stdlib/blas-ext-base-czero-to":"2en","@stdlib/blas/ext/base/daxpb":"2eo","@stdlib/blas-ext-base-daxpb":"2ep","@stdlib/blas/ext/base/dcartesian-power":"2eq","@stdlib/blas-ext-base-dcartesian-power":"2er","@stdlib/blas/ext/base/dcartesian-product":"2es","@stdlib/blas-ext-base-dcartesian-product":"2et","@stdlib/blas/ext/base/dcartesian-square":"2eu","@stdlib/blas-ext-base-dcartesian-square":"2ev","@stdlib/blas/ext/base/dcircshift":"2ew","@stdlib/blas-ext-base-dcircshift":"2ex","@stdlib/blas/ext/base/ddiff":"2ey","@stdlib/blas-ext-base-ddiff":"2ez","@stdlib/blas/ext/base/dediff":"2f0","@stdlib/blas-ext-base-dediff":"2f1","@stdlib/blas/ext/base/dindex-of-column":"2f2","@stdlib/blas-ext-base-dindex-of-column":"2f3","@stdlib/blas/ext/base/dindex-of-row":"2f4","@stdlib/blas-ext-base-dindex-of-row":"2f5","@stdlib/blas/ext/base/dlast-index-of-row":"2f6","@stdlib/blas-ext-base-dlast-index-of-row":"2f7","@stdlib/blas/ext/base/dmskrev":"2f8","@stdlib/blas-ext-base-dmskrev":"2f9","@stdlib/blas/ext/base/dnancount":"2fA","@stdlib/blas-ext-base-dnancount":"2fB","@stdlib/blas/ext/base/done-to":"2fC","@stdlib/blas-ext-base-done-to":"2fD","@stdlib/blas/ext/base/drss":"2fE","@stdlib/blas-ext-base-drss":"2fF","@stdlib/blas/ext/base/drssbl":"2fG","@stdlib/blas-ext-base-drssbl":"2fH","@stdlib/blas/ext/base/drsskbn":"2fI","@stdlib/blas-ext-base-drsskbn":"2fJ","@stdlib/blas/ext/base/dsort":"2fK","@stdlib/blas-ext-base-dsort":"2fL","@stdlib/blas/ext/base/dunitspace":"2fM","@stdlib/blas-ext-base-dunitspace":"2fN","@stdlib/blas/ext/base/dvander":"2fO","@stdlib/blas-ext-base-dvander":"2fP","@stdlib/blas/ext/base/dwhere":"2fQ","@stdlib/blas-ext-base-dwhere":"2fR","@stdlib/blas/ext/base/dxsa":"2fS","@stdlib/blas-ext-base-dxsa":"2fT","@stdlib/blas/ext/base/dzero-to":"2fU","@stdlib/blas-ext-base-dzero-to":"2fV","@stdlib/blas/ext/base/gaxpb":"2fW","@stdlib/blas-ext-base-gaxpb":"2fX","@stdlib/blas/ext/base/gaxpby":"2fY","@stdlib/blas-ext-base-gaxpby":"2fZ","@stdlib/blas/ext/base/gcartesian-power":"2fa","@stdlib/blas-ext-base-gcartesian-power":"2fb","@stdlib/blas/ext/base/gcartesian-square":"2fc","@stdlib/blas-ext-base-gcartesian-square":"2fd","@stdlib/blas/ext/base/gcircshift":"2fe","@stdlib/blas-ext-base-gcircshift":"2ff","@stdlib/blas/ext/base/gconjoin":"2fg","@stdlib/blas-ext-base-gconjoin":"2fh","@stdlib/blas/ext/base/gcuevery":"2fi","@stdlib/blas-ext-base-gcuevery":"2fj","@stdlib/blas/ext/base/gcunone":"2fk","@stdlib/blas-ext-base-gcunone":"2fl","@stdlib/blas/ext/base/gdiff":"2fm","@stdlib/blas-ext-base-gdiff":"2fn","@stdlib/blas/ext/base/gindex-of-column":"2fo","@stdlib/blas-ext-base-gindex-of-column":"2fp","@stdlib/blas/ext/base/gjoin-between":"2fq","@stdlib/blas-ext-base-gjoin-between":"2fr","@stdlib/blas/ext/base/glast-index-of-row":"2fs","@stdlib/blas-ext-base-glast-index-of-row":"2ft","@stdlib/blas/ext/base/gmskrev":"2fu","@stdlib/blas-ext-base-gmskrev":"2fv","@stdlib/blas/ext/base/gnancount":"2fw","@stdlib/blas-ext-base-gnancount":"2fx","@stdlib/blas/ext/base/gone-to":"2fy","@stdlib/blas-ext-base-gone-to":"2fz","@stdlib/blas/ext/base/greplicate":"2g0","@stdlib/blas-ext-base-greplicate":"2g1","@stdlib/blas/ext/base/gsort":"2g2","@stdlib/blas-ext-base-gsort":"2g3","@stdlib/blas/ext/base/gunitspace":"2g4","@stdlib/blas-ext-base-gunitspace":"2g5","@stdlib/blas/ext/base/gvander":"2g6","@stdlib/blas-ext-base-gvander":"2g7","@stdlib/blas/ext/base/gwhere":"2g8","@stdlib/blas-ext-base-gwhere":"2g9","@stdlib/blas/ext/base/gxsa":"2gA","@stdlib/blas-ext-base-gxsa":"2gB","@stdlib/blas/ext/base/gzero-to":"2gC","@stdlib/blas-ext-base-gzero-to":"2gD","@stdlib/blas/ext/base/ndarray/caxpb":"2gE","@stdlib/blas-ext-base-ndarray-caxpb":"2gF","@stdlib/blas/ext/base/ndarray/cindex-of":"2gG","@stdlib/blas-ext-base-ndarray-cindex-of":"2gH","@stdlib/blas/ext/base/ndarray/cone-to":"2gI","@stdlib/blas-ext-base-ndarray-cone-to":"2gJ","@stdlib/blas/ext/base/ndarray/cunitspace":"2gK","@stdlib/blas-ext-base-ndarray-cunitspace":"2gL","@stdlib/blas/ext/base/ndarray/cxsa":"2gM","@stdlib/blas-ext-base-ndarray-cxsa":"2gN","@stdlib/blas/ext/base/ndarray/czero-to":"2gO","@stdlib/blas-ext-base-ndarray-czero-to":"2gP","@stdlib/blas/ext/base/ndarray/daxpb":"2gQ","@stdlib/blas-ext-base-ndarray-daxpb":"2gR","@stdlib/blas/ext/base/ndarray/dcircshift":"2gS","@stdlib/blas-ext-base-ndarray-dcircshift":"2gT","@stdlib/blas/ext/base/ndarray/dcusumors":"2gU","@stdlib/blas-ext-base-ndarray-dcusumors":"2gV","@stdlib/blas/ext/base/ndarray/dcusumpw":"2gW","@stdlib/blas-ext-base-ndarray-dcusumpw":"2gX","@stdlib/blas/ext/base/ndarray/dnansum":"2gY","@stdlib/blas-ext-base-ndarray-dnansum":"2gZ","@stdlib/blas/ext/base/ndarray/dnansumkbn":"2ga","@stdlib/blas-ext-base-ndarray-dnansumkbn":"2gb","@stdlib/blas/ext/base/ndarray/dnansumkbn2":"2gc","@stdlib/blas-ext-base-ndarray-dnansumkbn2":"2gd","@stdlib/blas/ext/base/ndarray/dnansumors":"2ge","@stdlib/blas-ext-base-ndarray-dnansumors":"2gf","@stdlib/blas/ext/base/ndarray/dnansumpw":"2gg","@stdlib/blas-ext-base-ndarray-dnansumpw":"2gh","@stdlib/blas/ext/base/ndarray/done-to":"2gi","@stdlib/blas-ext-base-ndarray-done-to":"2gj","@stdlib/blas/ext/base/ndarray/dsort":"2gk","@stdlib/blas-ext-base-ndarray-dsort":"2gl","@stdlib/blas/ext/base/ndarray/dsortins":"2gm","@stdlib/blas-ext-base-ndarray-dsortins":"2gn","@stdlib/blas/ext/base/ndarray/dsortsh":"2go","@stdlib/blas-ext-base-ndarray-dsortsh":"2gp","@stdlib/blas/ext/base/ndarray/dsumors":"2gq","@stdlib/blas-ext-base-ndarray-dsumors":"2gr","@stdlib/blas/ext/base/ndarray/dsumpw":"2gs","@stdlib/blas-ext-base-ndarray-dsumpw":"2gt","@stdlib/blas/ext/base/ndarray/dunitspace":"2gu","@stdlib/blas-ext-base-ndarray-dunitspace":"2gv","@stdlib/blas/ext/base/ndarray/dxsa":"2gw","@stdlib/blas-ext-base-ndarray-dxsa":"2gx","@stdlib/blas/ext/base/ndarray/dzero-to":"2gy","@stdlib/blas-ext-base-ndarray-dzero-to":"2gz","@stdlib/blas/ext/base/ndarray/gaxpb":"2h0","@stdlib/blas-ext-base-ndarray-gaxpb":"2h1","@stdlib/blas/ext/base/ndarray/gcircshift":"2h2","@stdlib/blas-ext-base-ndarray-gcircshift":"2h3","@stdlib/blas/ext/base/ndarray/gcusumkbn":"2h4","@stdlib/blas-ext-base-ndarray-gcusumkbn":"2h5","@stdlib/blas/ext/base/ndarray/gcusumkbn2":"2h6","@stdlib/blas-ext-base-ndarray-gcusumkbn2":"2h7","@stdlib/blas/ext/base/ndarray/gcusumors":"2h8","@stdlib/blas-ext-base-ndarray-gcusumors":"2h9","@stdlib/blas/ext/base/ndarray/gcusumpw":"2hA","@stdlib/blas-ext-base-ndarray-gcusumpw":"2hB","@stdlib/blas/ext/base/ndarray/gjoin-between":"2hC","@stdlib/blas-ext-base-ndarray-gjoin-between":"2hD","@stdlib/blas/ext/base/ndarray/gnansum":"2hE","@stdlib/blas-ext-base-ndarray-gnansum":"2hF","@stdlib/blas/ext/base/ndarray/gnansumkbn":"2hG","@stdlib/blas-ext-base-ndarray-gnansumkbn":"2hH","@stdlib/blas/ext/base/ndarray/gnansumkbn2":"2hI","@stdlib/blas-ext-base-ndarray-gnansumkbn2":"2hJ","@stdlib/blas/ext/base/ndarray/gnansumors":"2hK","@stdlib/blas-ext-base-ndarray-gnansumors":"2hL","@stdlib/blas/ext/base/ndarray/gnansumpw":"2hM","@stdlib/blas-ext-base-ndarray-gnansumpw":"2hN","@stdlib/blas/ext/base/ndarray/gone-to":"2hO","@stdlib/blas-ext-base-ndarray-gone-to":"2hP","@stdlib/blas/ext/base/ndarray/gsort":"2hQ","@stdlib/blas-ext-base-ndarray-gsort":"2hR","@stdlib/blas/ext/base/ndarray/gsumors":"2hS","@stdlib/blas-ext-base-ndarray-gsumors":"2hT","@stdlib/blas/ext/base/ndarray/gsumpw":"2hU","@stdlib/blas-ext-base-ndarray-gsumpw":"2hV","@stdlib/blas/ext/base/ndarray/gunitspace":"2hW","@stdlib/blas-ext-base-ndarray-gunitspace":"2hX","@stdlib/blas/ext/base/ndarray/gzero-to":"2hY","@stdlib/blas-ext-base-ndarray-gzero-to":"2hZ","@stdlib/blas/ext/base/ndarray/saxpb":"2ha","@stdlib/blas-ext-base-ndarray-saxpb":"2hb","@stdlib/blas/ext/base/ndarray/scircshift":"2hc","@stdlib/blas-ext-base-ndarray-scircshift":"2hd","@stdlib/blas/ext/base/ndarray/scusumors":"2he","@stdlib/blas-ext-base-ndarray-scusumors":"2hf","@stdlib/blas/ext/base/ndarray/snansum":"2hg","@stdlib/blas-ext-base-ndarray-snansum":"2hh","@stdlib/blas/ext/base/ndarray/snansumkbn":"2hi","@stdlib/blas-ext-base-ndarray-snansumkbn":"2hj","@stdlib/blas/ext/base/ndarray/snansumkbn2":"2hk","@stdlib/blas-ext-base-ndarray-snansumkbn2":"2hl","@stdlib/blas/ext/base/ndarray/snansumors":"2hm","@stdlib/blas-ext-base-ndarray-snansumors":"2hn","@stdlib/blas/ext/base/ndarray/snansumpw":"2ho","@stdlib/blas-ext-base-ndarray-snansumpw":"2hp","@stdlib/blas/ext/base/ndarray/sone-to":"2hq","@stdlib/blas-ext-base-ndarray-sone-to":"2hr","@stdlib/blas/ext/base/ndarray/ssort":"2hs","@stdlib/blas-ext-base-ndarray-ssort":"2ht","@stdlib/blas/ext/base/ndarray/ssumors":"2hu","@stdlib/blas-ext-base-ndarray-ssumors":"2hv","@stdlib/blas/ext/base/ndarray/ssumpw":"2hw","@stdlib/blas-ext-base-ndarray-ssumpw":"2hx","@stdlib/blas/ext/base/ndarray/sunitspace":"2hy","@stdlib/blas-ext-base-ndarray-sunitspace":"2hz","@stdlib/blas/ext/base/ndarray/sxsa":"2i0","@stdlib/blas-ext-base-ndarray-sxsa":"2i1","@stdlib/blas/ext/base/ndarray/szero-to":"2i2","@stdlib/blas-ext-base-ndarray-szero-to":"2i3","@stdlib/blas/ext/base/ndarray/zaxpb":"2i4","@stdlib/blas-ext-base-ndarray-zaxpb":"2i5","@stdlib/blas/ext/base/ndarray/zindex-of":"2i6","@stdlib/blas-ext-base-ndarray-zindex-of":"2i7","@stdlib/blas/ext/base/ndarray/zone-to":"2i8","@stdlib/blas-ext-base-ndarray-zone-to":"2i9","@stdlib/blas/ext/base/ndarray/zunitspace":"2iA","@stdlib/blas-ext-base-ndarray-zunitspace":"2iB","@stdlib/blas/ext/base/ndarray/zzero-to":"2iC","@stdlib/blas-ext-base-ndarray-zzero-to":"2iD","@stdlib/blas/ext/base/saxpb":"2iE","@stdlib/blas-ext-base-saxpb":"2iF","@stdlib/blas/ext/base/scartesian-power":"2iG","@stdlib/blas-ext-base-scartesian-power":"2iH","@stdlib/blas/ext/base/scartesian-square":"2iI","@stdlib/blas-ext-base-scartesian-square":"2iJ","@stdlib/blas/ext/base/scircshift":"2iK","@stdlib/blas-ext-base-scircshift":"2iL","@stdlib/blas/ext/base/sdiff":"2iM","@stdlib/blas-ext-base-sdiff":"2iN","@stdlib/blas/ext/base/sediff":"2iO","@stdlib/blas-ext-base-sediff":"2iP","@stdlib/blas/ext/base/sindex-of-column":"2iQ","@stdlib/blas-ext-base-sindex-of-column":"2iR","@stdlib/blas/ext/base/sindex-of-row":"2iS","@stdlib/blas-ext-base-sindex-of-row":"2iT","@stdlib/blas/ext/base/slast-index-of-row":"2iU","@stdlib/blas-ext-base-slast-index-of-row":"2iV","@stdlib/blas/ext/base/snancount":"2iW","@stdlib/blas-ext-base-snancount":"2iX","@stdlib/blas/ext/base/sone-to":"2iY","@stdlib/blas-ext-base-sone-to":"2iZ","@stdlib/blas/ext/base/ssort":"2ia","@stdlib/blas-ext-base-ssort":"2ib","@stdlib/blas/ext/base/sunitspace":"2ic","@stdlib/blas-ext-base-sunitspace":"2id","@stdlib/blas/ext/base/svander":"2ie","@stdlib/blas-ext-base-svander":"2if","@stdlib/blas/ext/base/swhere":"2ig","@stdlib/blas-ext-base-swhere":"2ih","@stdlib/blas/ext/base/sxsa":"2ii","@stdlib/blas-ext-base-sxsa":"2ij","@stdlib/blas/ext/base/szero-to":"2ik","@stdlib/blas-ext-base-szero-to":"2il","@stdlib/blas/ext/base/zapx":"2im","@stdlib/blas-ext-base-zapx":"2in","@stdlib/blas/ext/base/zaxpb":"2io","@stdlib/blas-ext-base-zaxpb":"2ip","@stdlib/blas/ext/base/zdiff":"2iq","@stdlib/blas-ext-base-zdiff":"2ir","@stdlib/blas/ext/base/zindex-of-column":"2is","@stdlib/blas-ext-base-zindex-of-column":"2it","@stdlib/blas/ext/base/zindex-of-row":"2iu","@stdlib/blas-ext-base-zindex-of-row":"2iv","@stdlib/blas/ext/base/zindex-of":"2iw","@stdlib/blas-ext-base-zindex-of":"2ix","@stdlib/blas/ext/base/zlast-index-of-row":"2iy","@stdlib/blas-ext-base-zlast-index-of-row":"2iz","@stdlib/blas/ext/base/znancount":"2j0","@stdlib/blas-ext-base-znancount":"2j1","@stdlib/blas/ext/base/zone-to":"2j2","@stdlib/blas-ext-base-zone-to":"2j3","@stdlib/blas/ext/base/zunitspace":"2j4","@stdlib/blas-ext-base-zunitspace":"2j5","@stdlib/blas/ext/base/zwhere":"2j6","@stdlib/blas-ext-base-zwhere":"2j7","@stdlib/blas/ext/base/zxsa":"2j8","@stdlib/blas-ext-base-zxsa":"2j9","@stdlib/blas/ext/base/zzero-to":"2jA","@stdlib/blas-ext-base-zzero-to":"2jB","@stdlib/blas/ext/circshift":"2jC","@stdlib/blas-ext-circshift":"2jD","@stdlib/blas/ext/join":"2jE","@stdlib/blas-ext-join":"2jF","@stdlib/blas/ext/one-to":"2jG","@stdlib/blas-ext-one-to":"2jH","@stdlib/blas/ext/sort":"2jI","@stdlib/blas-ext-sort":"2jJ","@stdlib/blas/ext/to-sorted":"2jK","@stdlib/blas-ext-to-sorted":"2jL","@stdlib/blas/ext/unitspace":"2jM","@stdlib/blas-ext-unitspace":"2jN","@stdlib/blas/ext/zero-to":"2jO","@stdlib/blas-ext-zero-to":"2jP","@stdlib/complex/base/assert/is-almost-equal":"2jQ","@stdlib/complex-base-assert-is-almost-equal":"2jR","@stdlib/complex/base/assert/is-almost-same-value":"2jS","@stdlib/complex-base-assert-is-almost-same-value":"2jT","@stdlib/complex/float32/base/add3":"2jU","@stdlib/complex-float32-base-add3":"2jV","@stdlib/complex/float32/base/assert/is-almost-same-value":"2jW","@stdlib/complex-float32-base-assert-is-almost-same-value":"2jX","@stdlib/complex/float64/base/add3":"2jY","@stdlib/complex-float64-base-add3":"2jZ","@stdlib/complex/float64/base/assert/is-almost-same-value":"2ja","@stdlib/complex-float64-base-assert-is-almost-same-value":"2jb","@stdlib/constants/float16/abs-mask":"2jc","@stdlib/constants-float16-abs-mask":"2jd","@stdlib/constants/float16/half-ln-two":"2je","@stdlib/constants-float16-half-ln-two":"2jf","@stdlib/constants/float16/ln-half":"2jg","@stdlib/constants-float16-ln-half":"2jh","@stdlib/constants/float16/ln-pi":"2ji","@stdlib/constants-float16-ln-pi":"2jj","@stdlib/constants/float16/ln-sqrt-two-pi":"2jk","@stdlib/constants-float16-ln-sqrt-two-pi":"2jl","@stdlib/constants/float16/ln-ten":"2jm","@stdlib/constants-float16-ln-ten":"2jn","@stdlib/constants/float16/ln-two-pi":"2jo","@stdlib/constants-float16-ln-two-pi":"2jp","@stdlib/constants/float16/ln-two":"2jq","@stdlib/constants-float16-ln-two":"2jr","@stdlib/constants/float16/log10-e":"2js","@stdlib/constants-float16-log10-e":"2jt","@stdlib/constants/float16/log2-e":"2ju","@stdlib/constants-float16-log2-e":"2jv","@stdlib/constants/float16/max-base10-exponent-subnormal":"2jw","@stdlib/constants-float16-max-base10-exponent-subnormal":"2jx","@stdlib/constants/float16/max-base10-exponent":"2jy","@stdlib/constants-float16-max-base10-exponent":"2jz","@stdlib/constants/float16/max-base2-exponent-subnormal":"2k0","@stdlib/constants-float16-max-base2-exponent-subnormal":"2k1","@stdlib/constants/float16/min-base10-exponent-subnormal":"2k2","@stdlib/constants-float16-min-base10-exponent-subnormal":"2k3","@stdlib/constants/float16/min-base10-exponent":"2k4","@stdlib/constants-float16-min-base10-exponent":"2k5","@stdlib/constants/float16/min-base2-exponent-subnormal":"2k6","@stdlib/constants-float16-min-base2-exponent-subnormal":"2k7","@stdlib/constants/float16/nan":"2k8","@stdlib/constants-float16-nan":"2k9","@stdlib/constants/float16/sqrt-half":"2kA","@stdlib/constants-float16-sqrt-half":"2kB","@stdlib/constants/float16/sqrt-three":"2kC","@stdlib/constants-float16-sqrt-three":"2kD","@stdlib/constants/float16/sqrt-two-pi":"2kE","@stdlib/constants-float16-sqrt-two-pi":"2kF","@stdlib/constants/float32/num-exponent-bits":"2kG","@stdlib/constants-float32-num-exponent-bits":"2kH","@stdlib/fft/base/fftpack/decompose":"2kI","@stdlib/fft-base-fftpack-decompose":"2kJ","@stdlib/math/base/special/acoshf":"2kK","@stdlib/math-base-special-acoshf":"2kL","@stdlib/math/base/special/acothf":"2kM","@stdlib/math-base-special-acothf":"2kN","@stdlib/math/base/special/asinhf":"2kO","@stdlib/math-base-special-asinhf":"2kP","@stdlib/math/base/special/atanhf":"2kQ","@stdlib/math-base-special-atanhf":"2kR","@stdlib/math/base/special/coshf":"2kS","@stdlib/math-base-special-coshf":"2kT","@stdlib/math/base/special/fast/atanhf":"2kU","@stdlib/math-base-special-fast-atanhf":"2kV","@stdlib/math/base/special/floor2f":"2kW","@stdlib/math-base-special-floor2f":"2kX","@stdlib/math/base/special/floornf":"2kY","@stdlib/math-base-special-floornf":"2kZ","@stdlib/math/base/special/roundnf":"2ka","@stdlib/math-base-special-roundnf":"2kb","@stdlib/math/base/special/sincosdf":"2kc","@stdlib/math-base-special-sincosdf":"2kd","@stdlib/math/base/tools/chebyshev-series":"2ke","@stdlib/math-base-tools-chebyshev-series":"2kf","@stdlib/math/base/tools/chebyshev-seriesf":"2kg","@stdlib/math-base-tools-chebyshev-seriesf":"2kh","@stdlib/ml/base/kmeans/algorithm-enum2str":"2ki","@stdlib/ml-base-kmeans-algorithm-enum2str":"2kj","@stdlib/ml/base/kmeans/algorithm-resolve-enum":"2kk","@stdlib/ml-base-kmeans-algorithm-resolve-enum":"2kl","@stdlib/ml/base/kmeans/algorithm-resolve-str":"2km","@stdlib/ml-base-kmeans-algorithm-resolve-str":"2kn","@stdlib/ml/base/kmeans/algorithm-str2enum":"2ko","@stdlib/ml-base-kmeans-algorithm-str2enum":"2kp","@stdlib/ml/base/kmeans/algorithms":"2kq","@stdlib/ml-base-kmeans-algorithms":"2kr","@stdlib/ml/base/kmeans/metric-enum2str":"2ks","@stdlib/ml-base-kmeans-metric-enum2str":"2kt","@stdlib/ml/base/kmeans/metric-resolve-enum":"2ku","@stdlib/ml-base-kmeans-metric-resolve-enum":"2kv","@stdlib/ml/base/kmeans/metric-resolve-str":"2kw","@stdlib/ml-base-kmeans-metric-resolve-str":"2kx","@stdlib/ml/base/kmeans/metric-str2enum":"2ky","@stdlib/ml-base-kmeans-metric-str2enum":"2kz","@stdlib/ml/base/kmeans/metrics":"2l0","@stdlib/ml-base-kmeans-metrics":"2l1","@stdlib/napi/argv-booleanarray":"2l2","@stdlib/napi-argv-booleanarray":"2l3","@stdlib/napi/argv-strided-booleanarray":"2l4","@stdlib/napi-argv-strided-booleanarray":"2l5","@stdlib/napi/argv-strided-booleanarray2d":"2l6","@stdlib/napi-argv-strided-booleanarray2d":"2l7","@stdlib/napi/argv-uint64":"2l8","@stdlib/napi-argv-uint64":"2l9","@stdlib/napi/create-int64":"2lA","@stdlib/napi-create-int64":"2lB","@stdlib/napi/create-uint64":"2lC","@stdlib/napi-create-uint64":"2lD","@stdlib/ndarray/base/append-singleton-dimensions":"2lE","@stdlib/ndarray-base-append-singleton-dimensions":"2lF","@stdlib/ndarray/base/assign-scalar":"2lG","@stdlib/ndarray-base-assign-scalar":"2lH","@stdlib/ndarray/base/atleast1d":"2lI","@stdlib/ndarray-base-atleast1d":"2lJ","@stdlib/ndarray/base/atleast2d":"2lK","@stdlib/ndarray-base-atleast2d":"2lL","@stdlib/ndarray/base/atleast3d":"2lM","@stdlib/ndarray-base-atleast3d":"2lN","@stdlib/ndarray/base/atleastnd":"2lO","@stdlib/ndarray-base-atleastnd":"2lP","@stdlib/ndarray/base/broadcast-scalar-like":"2lQ","@stdlib/ndarray-base-broadcast-scalar-like":"2lR","@stdlib/ndarray/base/consensus-order":"2lS","@stdlib/ndarray-base-consensus-order":"2lT","@stdlib/ndarray/base/descriptor":"2lU","@stdlib/ndarray-base-descriptor":"2lV","@stdlib/ndarray/base/diagonal":"2lW","@stdlib/ndarray-base-diagonal":"2lX","@stdlib/ndarray/base/dtypes2strings":"2lY","@stdlib/ndarray-base-dtypes2strings":"2lZ","@stdlib/ndarray/base/falses-like":"2la","@stdlib/ndarray-base-falses-like":"2lb","@stdlib/ndarray/base/falses":"2lc","@stdlib/ndarray-base-falses":"2ld","@stdlib/ndarray/base/fill-diagonal":"2le","@stdlib/ndarray-base-fill-diagonal":"2lf","@stdlib/ndarray/base/full-by":"2lg","@stdlib/ndarray-base-full-by":"2lh","@stdlib/ndarray/base/full":"2li","@stdlib/ndarray-base-full":"2lj","@stdlib/ndarray/base/maybe-broadcast-array-except-dimensions":"2lk","@stdlib/ndarray-base-maybe-broadcast-array-except-dimensions":"2ll","@stdlib/ndarray/base/nans-like":"2lm","@stdlib/ndarray-base-nans-like":"2ln","@stdlib/ndarray/base/nans":"2lo","@stdlib/ndarray-base-nans":"2lp","@stdlib/ndarray/base/ndarraylike2descriptor":"2lq","@stdlib/ndarray-base-ndarraylike2descriptor":"2lr","@stdlib/ndarray/base/nulls-like":"2ls","@stdlib/ndarray-base-nulls-like":"2lt","@stdlib/ndarray/base/nulls":"2lu","@stdlib/ndarray-base-nulls":"2lv","@stdlib/ndarray/base/ones-like":"2lw","@stdlib/ndarray-base-ones-like":"2lx","@stdlib/ndarray/base/ones":"2ly","@stdlib/ndarray-base-ones":"2lz","@stdlib/ndarray/base/output-order":"2m0","@stdlib/ndarray-base-output-order":"2m1","@stdlib/ndarray/base/quaternary-loop-interchange-order":"2m2","@stdlib/ndarray-base-quaternary-loop-interchange-order":"2m3","@stdlib/ndarray/base/quaternary-tiling-block-size":"2m4","@stdlib/ndarray-base-quaternary-tiling-block-size":"2m5","@stdlib/ndarray/base/quinary-loop-interchange-order":"2m6","@stdlib/ndarray-base-quinary-loop-interchange-order":"2m7","@stdlib/ndarray/base/quinary-tiling-block-size":"2m8","@stdlib/ndarray-base-quinary-tiling-block-size":"2m9","@stdlib/ndarray/base/reinterpret-boolean":"2mA","@stdlib/ndarray-base-reinterpret-boolean":"2mB","@stdlib/ndarray/base/reinterpret-complex":"2mC","@stdlib/ndarray-base-reinterpret-complex":"2mD","@stdlib/ndarray/base/reinterpret-complex128":"2mE","@stdlib/ndarray-base-reinterpret-complex128":"2mF","@stdlib/ndarray/base/reinterpret-complex64":"2mG","@stdlib/ndarray-base-reinterpret-complex64":"2mH","@stdlib/ndarray/base/reverse-dimensions":"2mI","@stdlib/ndarray-base-reverse-dimensions":"2mJ","@stdlib/ndarray/base/rot180":"2mK","@stdlib/ndarray-base-rot180":"2mL","@stdlib/ndarray/base/rot90":"2mM","@stdlib/ndarray-base-rot90":"2mN","@stdlib/ndarray/base/rotl90":"2mO","@stdlib/ndarray-base-rotl90":"2mP","@stdlib/ndarray/base/rotr90":"2mQ","@stdlib/ndarray-base-rotr90":"2mR","@stdlib/ndarray/base/ternary-loop-interchange-order":"2mS","@stdlib/ndarray-base-ternary-loop-interchange-order":"2mT","@stdlib/ndarray/base/ternary-output-dtype":"2mU","@stdlib/ndarray-base-ternary-output-dtype":"2mV","@stdlib/ndarray/base/ternary-tiling-block-size":"2mW","@stdlib/ndarray-base-ternary-tiling-block-size":"2mX","@stdlib/ndarray/base/ternary":"2mY","@stdlib/ndarray-base-ternary":"2mZ","@stdlib/ndarray/base/tile":"2ma","@stdlib/ndarray-base-tile":"2mb","@stdlib/ndarray/base/tiling-block-size":"2mc","@stdlib/ndarray-base-tiling-block-size":"2md","@stdlib/ndarray/base/to-reversed-dimension":"2me","@stdlib/ndarray-base-to-reversed-dimension":"2mf","@stdlib/ndarray/base/to-reversed-dimensions":"2mg","@stdlib/ndarray-base-to-reversed-dimensions":"2mh","@stdlib/ndarray/base/to-rot180":"2mi","@stdlib/ndarray-base-to-rot180":"2mj","@stdlib/ndarray/base/to-rot90":"2mk","@stdlib/ndarray-base-to-rot90":"2ml","@stdlib/ndarray/base/to-rotl90":"2mm","@stdlib/ndarray-base-to-rotl90":"2mn","@stdlib/ndarray/base/to-rotr90":"2mo","@stdlib/ndarray-base-to-rotr90":"2mp","@stdlib/ndarray/base/to-transposed":"2mq","@stdlib/ndarray-base-to-transposed":"2mr","@stdlib/ndarray/base/to-unflattened":"2ms","@stdlib/ndarray-base-to-unflattened":"2mt","@stdlib/ndarray/base/trues-like":"2mu","@stdlib/ndarray-base-trues-like":"2mv","@stdlib/ndarray/base/trues":"2mw","@stdlib/ndarray-base-trues":"2mx","@stdlib/ndarray/base/unflatten-shape":"2my","@stdlib/ndarray-base-unflatten-shape":"2mz","@stdlib/ndarray/base/unflatten":"2n0","@stdlib/ndarray-base-unflatten":"2n1","@stdlib/ndarray/broadcast-scalar-like":"2n2","@stdlib/ndarray-broadcast-scalar-like":"2n3","@stdlib/ndarray/broadcast-scalar":"2n4","@stdlib/ndarray-broadcast-scalar":"2n5","@stdlib/ndarray/colcat":"2n6","@stdlib/ndarray-colcat":"2n7","@stdlib/ndarray/diagonal":"2n8","@stdlib/ndarray-diagonal":"2n9","@stdlib/ndarray/every-by":"2nA","@stdlib/ndarray-every-by":"2nB","@stdlib/ndarray/falses-like":"2nC","@stdlib/ndarray-falses-like":"2nD","@stdlib/ndarray/falses":"2nE","@stdlib/ndarray-falses":"2nF","@stdlib/ndarray/find-last":"2nG","@stdlib/ndarray-find-last":"2nH","@stdlib/ndarray/first":"2nI","@stdlib/ndarray-first":"2nJ","@stdlib/ndarray/flatten-from-by":"2nK","@stdlib/ndarray-flatten-from-by":"2nL","@stdlib/ndarray/from-scalar-like":"2nM","@stdlib/ndarray-from-scalar-like":"2nN","@stdlib/ndarray/hconcat":"2nO","@stdlib/ndarray-hconcat":"2nP","@stdlib/ndarray/last":"2nQ","@stdlib/ndarray-last":"2nR","@stdlib/ndarray/nans-like":"2nS","@stdlib/ndarray-nans-like":"2nT","@stdlib/ndarray/nans":"2nU","@stdlib/ndarray-nans":"2nV","@stdlib/ndarray/ndarraylike2scalar":"2nW","@stdlib/ndarray-ndarraylike2scalar":"2nX","@stdlib/ndarray/ones-like":"2nY","@stdlib/ndarray-ones-like":"2nZ","@stdlib/ndarray/ones":"2na","@stdlib/ndarray-ones":"2nb","@stdlib/ndarray/prepend-singleton-dimensions":"2nc","@stdlib/ndarray-prepend-singleton-dimensions":"2nd","@stdlib/ndarray/push":"2ne","@stdlib/ndarray-push":"2nf","@stdlib/ndarray/remove-singleton-dimensions":"2ng","@stdlib/ndarray-remove-singleton-dimensions":"2nh","@stdlib/ndarray/reverse-dimensions":"2ni","@stdlib/ndarray-reverse-dimensions":"2nj","@stdlib/ndarray/rot180":"2nk","@stdlib/ndarray-rot180":"2nl","@stdlib/ndarray/rot90":"2nm","@stdlib/ndarray-rot90":"2nn","@stdlib/ndarray/rotl90":"2no","@stdlib/ndarray-rotl90":"2np","@stdlib/ndarray/rotr90":"2nq","@stdlib/ndarray-rotr90":"2nr","@stdlib/ndarray/rowcat":"2ns","@stdlib/ndarray-rowcat":"2nt","@stdlib/ndarray/spread-dimensions":"2nu","@stdlib/ndarray-spread-dimensions":"2nv","@stdlib/ndarray/to-flippedlr":"2nw","@stdlib/ndarray-to-flippedlr":"2nx","@stdlib/ndarray/to-flippedud":"2ny","@stdlib/ndarray-to-flippedud":"2nz","@stdlib/ndarray/to-locale-string":"2o0","@stdlib/ndarray-to-locale-string":"2o1","@stdlib/ndarray/to-reversed-dimension":"2o2","@stdlib/ndarray-to-reversed-dimension":"2o3","@stdlib/ndarray/to-reversed-dimensions":"2o4","@stdlib/ndarray-to-reversed-dimensions":"2o5","@stdlib/ndarray/to-rot180":"2o6","@stdlib/ndarray-to-rot180":"2o7","@stdlib/ndarray/to-rot90":"2o8","@stdlib/ndarray-to-rot90":"2o9","@stdlib/ndarray/to-rotl90":"2oA","@stdlib/ndarray-to-rotl90":"2oB","@stdlib/ndarray/to-rotr90":"2oC","@stdlib/ndarray-to-rotr90":"2oD","@stdlib/ndarray/to-string":"2oE","@stdlib/ndarray-to-string":"2oF","@stdlib/ndarray/to-transposed":"2oG","@stdlib/ndarray-to-transposed":"2oH","@stdlib/ndarray/to-unflattened":"2oI","@stdlib/ndarray-to-unflattened":"2oJ","@stdlib/ndarray/transpose":"2oK","@stdlib/ndarray-transpose":"2oL","@stdlib/ndarray/trues-like":"2oM","@stdlib/ndarray-trues-like":"2oN","@stdlib/ndarray/trues":"2oO","@stdlib/ndarray-trues":"2oP","@stdlib/ndarray/unflatten":"2oQ","@stdlib/ndarray-unflatten":"2oR","@stdlib/ndarray/unshift":"2oS","@stdlib/ndarray-unshift":"2oT","@stdlib/ndarray/vconcat":"2oU","@stdlib/ndarray-vconcat":"2oV","@stdlib/number/float16/base/assert/is-almost-equal":"2oW","@stdlib/number-float16-base-assert-is-almost-equal":"2oX","@stdlib/number/float16/base/assert/is-nan":"2oY","@stdlib/number-float16-base-assert-is-nan":"2oZ","@stdlib/number/float16/base/assert/is-negative-zero":"2oa","@stdlib/number-float16-base-assert-is-negative-zero":"2ob","@stdlib/number/float16/base/assert/is-positive-zero":"2oc","@stdlib/number-float16-base-assert-is-positive-zero":"2od","@stdlib/number/float16/base/from-binary-string":"2oe","@stdlib/number-float16-base-from-binary-string":"2of","@stdlib/number/float16/base/mul":"2og","@stdlib/number-float16-base-mul":"2oh","@stdlib/number/float16/base/signbit":"2oi","@stdlib/number-float16-base-signbit":"2oj","@stdlib/number/float16/base/significand":"2ok","@stdlib/number-float16-base-significand":"2ol","@stdlib/number/float16/base/sub":"2om","@stdlib/number-float16-base-sub":"2on","@stdlib/number/float16/base/to-float32":"2oo","@stdlib/number-float16-base-to-float32":"2op","@stdlib/number/float16/base/to-float64":"2oq","@stdlib/number-float16-base-to-float64":"2or","@stdlib/number/float16/base/ulp-difference":"2os","@stdlib/number-float16-base-ulp-difference":"2ot","@stdlib/number/float16/ctor":"2ou","@stdlib/number-float16-ctor":"2ov","@stdlib/number/float32/base/assert/is-almost-same-value":"2ow","@stdlib/number-float32-base-assert-is-almost-same-value":"2ox","@stdlib/number/float32/base/to-float16":"2oy","@stdlib/number-float32-base-to-float16":"2oz","@stdlib/number/float64/base/assert/is-almost-same-value":"2p0","@stdlib/number-float64-base-assert-is-almost-same-value":"2p1","@stdlib/number/float64/base/sub3":"2p2","@stdlib/number-float64-base-sub3":"2p3","@stdlib/number/uint64/ctor":"2p4","@stdlib/number-uint64-ctor":"2p5","@stdlib/object/bifurcate-in":"2p6","@stdlib/object-bifurcate-in":"2p7","@stdlib/object/bifurcate-own":"2p8","@stdlib/object-bifurcate-own":"2p9","@stdlib/object/capitalize-keys":"2pA","@stdlib/object-capitalize-keys":"2pB","@stdlib/object/common-keys-in":"2pC","@stdlib/object-common-keys-in":"2pD","@stdlib/object/common-keys":"2pE","@stdlib/object-common-keys":"2pF","@stdlib/object/deep-get":"2pG","@stdlib/object-deep-get":"2pH","@stdlib/object/deep-set":"2pI","@stdlib/object-deep-set":"2pJ","@stdlib/object/for-in":"2pK","@stdlib/object-for-in":"2pL","@stdlib/object/for-own":"2pM","@stdlib/object-for-own":"2pN","@stdlib/object/inverse-by":"2pO","@stdlib/object-inverse-by":"2pP","@stdlib/object/inverse":"2pQ","@stdlib/object-inverse":"2pR","@stdlib/object/lowercase-keys":"2pS","@stdlib/object-lowercase-keys":"2pT","@stdlib/object/uncapitalize-keys":"2pU","@stdlib/object-uncapitalize-keys":"2pV","@stdlib/object/uppercase-keys":"2pW","@stdlib/object-uppercase-keys":"2pX","@stdlib/random/arcsine":"2pY","@stdlib/random-arcsine":"2pZ","@stdlib/random/bernoulli":"2pa","@stdlib/random-bernoulli":"2pb","@stdlib/random/beta":"2pc","@stdlib/random-beta":"2pd","@stdlib/random/betaprime":"2pe","@stdlib/random-betaprime":"2pf","@stdlib/random/binomial":"2pg","@stdlib/random-binomial":"2ph","@stdlib/random/cauchy":"2pi","@stdlib/random-cauchy":"2pj","@stdlib/random/chi":"2pk","@stdlib/random-chi":"2pl","@stdlib/random/chisquare":"2pm","@stdlib/random-chisquare":"2pn","@stdlib/random/cosine":"2po","@stdlib/random-cosine":"2pp","@stdlib/random/discrete-uniform":"2pq","@stdlib/random-discrete-uniform":"2pr","@stdlib/random/erlang":"2ps","@stdlib/random-erlang":"2pt","@stdlib/random/f":"2pu","@stdlib/random-f":"2pv","@stdlib/random/frechet":"2pw","@stdlib/random-frechet":"2px","@stdlib/random/gamma":"2py","@stdlib/random-gamma":"2pz","@stdlib/random/geometric":"2q0","@stdlib/random-geometric":"2q1","@stdlib/random/gumbel":"2q2","@stdlib/random-gumbel":"2q3","@stdlib/random/hypergeometric":"2q4","@stdlib/random-hypergeometric":"2q5","@stdlib/random/invgamma":"2q6","@stdlib/random-invgamma":"2q7","@stdlib/random/kumaraswamy":"2q8","@stdlib/random-kumaraswamy":"2q9","@stdlib/random/laplace":"2qA","@stdlib/random-laplace":"2qB","@stdlib/random/levy":"2qC","@stdlib/random-levy":"2qD","@stdlib/random/logistic":"2qE","@stdlib/random-logistic":"2qF","@stdlib/random/lognormal":"2qG","@stdlib/random-lognormal":"2qH","@stdlib/random/negative-binomial":"2qI","@stdlib/random-negative-binomial":"2qJ","@stdlib/random/normal":"2qK","@stdlib/random-normal":"2qL","@stdlib/random/pareto-type1":"2qM","@stdlib/random-pareto-type1":"2qN","@stdlib/random/poisson":"2qO","@stdlib/random-poisson":"2qP","@stdlib/random/rayleigh":"2qQ","@stdlib/random-rayleigh":"2qR","@stdlib/random/t":"2qS","@stdlib/random-t":"2qT","@stdlib/random/tools/ternary-factory":"2qU","@stdlib/random-tools-ternary-factory":"2qV","@stdlib/random/tools/ternary":"2qW","@stdlib/random-tools-ternary":"2qX","@stdlib/random/triangular":"2qY","@stdlib/random-triangular":"2qZ","@stdlib/random/weibull":"2qa","@stdlib/random-weibull":"2qb","@stdlib/stats/array/midrange-by":"2qc","@stdlib/stats-array-midrange-by":"2qd","@stdlib/stats/array/midrange":"2qe","@stdlib/stats-array-midrange":"2qf","@stdlib/stats/array/mskmaxabs":"2qg","@stdlib/stats-array-mskmaxabs":"2qh","@stdlib/stats/array/mskmidrange":"2qi","@stdlib/stats-array-mskmidrange":"2qj","@stdlib/stats/array/mskminabs":"2qk","@stdlib/stats-array-mskminabs":"2ql","@stdlib/stats/array/nanmidrange-by":"2qm","@stdlib/stats-array-nanmidrange-by":"2qn","@stdlib/stats/array/nanmidrange":"2qo","@stdlib/stats-array-nanmidrange":"2qp","@stdlib/stats/array/nanmskmidrange":"2qq","@stdlib/stats-array-nanmskmidrange":"2qr","@stdlib/stats/array/rangeabs":"2qs","@stdlib/stats-array-rangeabs":"2qt","@stdlib/stats/base/dists/halfnormal/entropy":"2qu","@stdlib/stats-base-dists-halfnormal-entropy":"2qv","@stdlib/stats/base/dists/halfnormal/kurtosis":"2qw","@stdlib/stats-base-dists-halfnormal-kurtosis":"2qx","@stdlib/stats/base/dists/halfnormal/logpdf":"2qy","@stdlib/stats-base-dists-halfnormal-logpdf":"2qz","@stdlib/stats/base/dists/halfnormal/mean":"2r0","@stdlib/stats-base-dists-halfnormal-mean":"2r1","@stdlib/stats/base/dists/halfnormal/mode":"2r2","@stdlib/stats-base-dists-halfnormal-mode":"2r3","@stdlib/stats/base/dists/halfnormal/stdev":"2r4","@stdlib/stats-base-dists-halfnormal-stdev":"2r5","@stdlib/stats/base/dists/wald/kurtosis":"2r6","@stdlib/stats-base-dists-wald-kurtosis":"2r7","@stdlib/stats/base/dists/wald/mean":"2r8","@stdlib/stats-base-dists-wald-mean":"2r9","@stdlib/stats/base/dists/wald/mode":"2rA","@stdlib/stats-base-dists-wald-mode":"2rB","@stdlib/stats/base/dists/wald/pdf":"2rC","@stdlib/stats-base-dists-wald-pdf":"2rD","@stdlib/stats/base/dists/wald/skewness":"2rE","@stdlib/stats-base-dists-wald-skewness":"2rF","@stdlib/stats/base/dists/wald/variance":"2rG","@stdlib/stats-base-dists-wald-variance":"2rH","@stdlib/stats/base/ndarray/dmeanstdev":"2rI","@stdlib/stats-base-ndarray-dmeanstdev":"2rJ","@stdlib/stats/base/ndarray/dmskmaxabs":"2rK","@stdlib/stats-base-ndarray-dmskmaxabs":"2rL","@stdlib/stats/base/ndarray/dnanmidrange":"2rM","@stdlib/stats-base-ndarray-dnanmidrange":"2rN","@stdlib/stats/base/ndarray/dnanmskmaxabs":"2rO","@stdlib/stats-base-ndarray-dnanmskmaxabs":"2rP","@stdlib/stats/base/ndarray/dnanmskminabs":"2rQ","@stdlib/stats-base-ndarray-dnanmskminabs":"2rR","@stdlib/stats/base/ndarray/dnanrange":"2rS","@stdlib/stats-base-ndarray-dnanrange":"2rT","@stdlib/stats/base/ndarray/dnanrangeabs":"2rU","@stdlib/stats-base-ndarray-dnanrangeabs":"2rV","@stdlib/stats/base/ndarray/dnanstdev":"2rW","@stdlib/stats-base-ndarray-dnanstdev":"2rX","@stdlib/stats/base/ndarray/dnanstdevch":"2rY","@stdlib/stats-base-ndarray-dnanstdevch":"2rZ","@stdlib/stats/base/ndarray/dnanstdevpn":"2ra","@stdlib/stats-base-ndarray-dnanstdevpn":"2rb","@stdlib/stats/base/ndarray/drangeabs":"2rc","@stdlib/stats-base-ndarray-drangeabs":"2rd","@stdlib/stats/base/ndarray/dstdev":"2re","@stdlib/stats-base-ndarray-dstdev":"2rf","@stdlib/stats/base/ndarray/dstdevch":"2rg","@stdlib/stats-base-ndarray-dstdevch":"2rh","@stdlib/stats/base/ndarray/dstdevpn":"2ri","@stdlib/stats-base-ndarray-dstdevpn":"2rj","@stdlib/stats/base/ndarray/dstdevtk":"2rk","@stdlib/stats-base-ndarray-dstdevtk":"2rl","@stdlib/stats/base/ndarray/dstdevwd":"2rm","@stdlib/stats-base-ndarray-dstdevwd":"2rn","@stdlib/stats/base/ndarray/dstdevyc":"2ro","@stdlib/stats-base-ndarray-dstdevyc":"2rp","@stdlib/stats/base/ndarray/dvariance":"2rq","@stdlib/stats-base-ndarray-dvariance":"2rr","@stdlib/stats/base/ndarray/midrange-by":"2rs","@stdlib/stats-base-ndarray-midrange-by":"2rt","@stdlib/stats/base/ndarray/midrange":"2ru","@stdlib/stats-base-ndarray-midrange":"2rv","@stdlib/stats/base/ndarray/midrangeabs":"2rw","@stdlib/stats-base-ndarray-midrangeabs":"2rx","@stdlib/stats/base/ndarray/mskmaxabs":"2ry","@stdlib/stats-base-ndarray-mskmaxabs":"2rz","@stdlib/stats/base/ndarray/mskmidrange":"2s0","@stdlib/stats-base-ndarray-mskmidrange":"2s1","@stdlib/stats/base/ndarray/nanmidrange-by":"2s2","@stdlib/stats-base-ndarray-nanmidrange-by":"2s3","@stdlib/stats/base/ndarray/nanmidrange":"2s4","@stdlib/stats-base-ndarray-nanmidrange":"2s5","@stdlib/stats/base/ndarray/nanmskmidrange":"2s6","@stdlib/stats-base-ndarray-nanmskmidrange":"2s7","@stdlib/stats/base/ndarray/rangeabs":"2s8","@stdlib/stats-base-ndarray-rangeabs":"2s9","@stdlib/stats/base/ndarray/smskmaxabs":"2sA","@stdlib/stats-base-ndarray-smskmaxabs":"2sB","@stdlib/stats/base/ndarray/smskmidrange":"2sC","@stdlib/stats-base-ndarray-smskmidrange":"2sD","@stdlib/stats/base/ndarray/snanmidrange":"2sE","@stdlib/stats-base-ndarray-snanmidrange":"2sF","@stdlib/stats/base/ndarray/snanmskmaxabs":"2sG","@stdlib/stats-base-ndarray-snanmskmaxabs":"2sH","@stdlib/stats/base/ndarray/snanmskmidrange":"2sI","@stdlib/stats-base-ndarray-snanmskmidrange":"2sJ","@stdlib/stats/base/ndarray/snanmskminabs":"2sK","@stdlib/stats-base-ndarray-snanmskminabs":"2sL","@stdlib/stats/base/ndarray/snanrange":"2sM","@stdlib/stats-base-ndarray-snanrange":"2sN","@stdlib/stats/base/ndarray/srangeabs":"2sO","@stdlib/stats-base-ndarray-srangeabs":"2sP","@stdlib/stats/base/ndarray/sstdev":"2sQ","@stdlib/stats-base-ndarray-sstdev":"2sR","@stdlib/stats/base/ndarray/sstdevch":"2sS","@stdlib/stats-base-ndarray-sstdevch":"2sT","@stdlib/stats/base/ndarray/sstdevpn":"2sU","@stdlib/stats-base-ndarray-sstdevpn":"2sV","@stdlib/stats/base/ndarray/sstdevtk":"2sW","@stdlib/stats-base-ndarray-sstdevtk":"2sX","@stdlib/stats/base/ndarray/sstdevwd":"2sY","@stdlib/stats-base-ndarray-sstdevwd":"2sZ","@stdlib/stats/base/ndarray/sstdevyc":"2sa","@stdlib/stats-base-ndarray-sstdevyc":"2sb","@stdlib/stats/base/ndarray/stdev":"2sc","@stdlib/stats-base-ndarray-stdev":"2sd","@stdlib/stats/base/ndarray/stdevch":"2se","@stdlib/stats-base-ndarray-stdevch":"2sf","@stdlib/stats/base/ndarray/stdevpn":"2sg","@stdlib/stats-base-ndarray-stdevpn":"2sh","@stdlib/stats/base/ndarray/stdevtk":"2si","@stdlib/stats-base-ndarray-stdevtk":"2sj","@stdlib/stats/base/ndarray/stdevwd":"2sk","@stdlib/stats-base-ndarray-stdevwd":"2sl","@stdlib/stats/base/ndarray/stdevyc":"2sm","@stdlib/stats-base-ndarray-stdevyc":"2sn","@stdlib/stats/base/ndarray/svariance":"2so","@stdlib/stats-base-ndarray-svariance":"2sp","@stdlib/stats/base/ndarray/svariancech":"2sq","@stdlib/stats-base-ndarray-svariancech":"2sr","@stdlib/stats/base/ndarray/svariancepn":"2ss","@stdlib/stats-base-ndarray-svariancepn":"2st","@stdlib/stats/base/ndarray/svariancetk":"2su","@stdlib/stats-base-ndarray-svariancetk":"2sv","@stdlib/stats/base/ndarray/svariancewd":"2sw","@stdlib/stats-base-ndarray-svariancewd":"2sx","@stdlib/stats/base/ndarray/svarianceyc":"2sy","@stdlib/stats-base-ndarray-svarianceyc":"2sz","@stdlib/stats/base/ndarray/variance":"2t0","@stdlib/stats-base-ndarray-variance":"2t1","@stdlib/stats/base/ndarray/variancech":"2t2","@stdlib/stats-base-ndarray-variancech":"2t3","@stdlib/stats/base/ndarray/variancepn":"2t4","@stdlib/stats-base-ndarray-variancepn":"2t5","@stdlib/stats/base/ndarray/variancetk":"2t6","@stdlib/stats-base-ndarray-variancetk":"2t7","@stdlib/stats/base/ndarray/variancewd":"2t8","@stdlib/stats-base-ndarray-variancewd":"2t9","@stdlib/stats/base/ndarray/varianceyc":"2tA","@stdlib/stats-base-ndarray-varianceyc":"2tB","@stdlib/stats/incr/nanmmape":"2tC","@stdlib/stats-incr-nanmmape":"2tD","@stdlib/stats/incr/nanmmse":"2tE","@stdlib/stats-incr-nanmmse":"2tF","@stdlib/stats/incr/nanvariance":"2tG","@stdlib/stats-incr-nanvariance":"2tH","@stdlib/stats/midrange-by":"2tI","@stdlib/stats-midrange-by":"2tJ","@stdlib/stats/midrange":"2tK","@stdlib/stats-midrange":"2tL","@stdlib/stats/nanmidrange-by":"2tM","@stdlib/stats-nanmidrange-by":"2tN","@stdlib/stats/nanmidrange":"2tO","@stdlib/stats-nanmidrange":"2tP","@stdlib/stats/nanrange-by":"2tQ","@stdlib/stats-nanrange-by":"2tR","@stdlib/stats/nanrange":"2tS","@stdlib/stats-nanrange":"2tT","@stdlib/stats/rangeabs":"2tU","@stdlib/stats-rangeabs":"2tV","@stdlib/stats/strided/distances/dchebyshev":"2tW","@stdlib/stats-strided-distances-dchebyshev":"2tX","@stdlib/stats/strided/distances/dcityblock":"2tY","@stdlib/stats-strided-distances-dcityblock":"2tZ","@stdlib/stats/strided/distances/dcorrelation":"2ta","@stdlib/stats-strided-distances-dcorrelation":"2tb","@stdlib/stats/strided/distances/dcosine-distance":"2tc","@stdlib/stats-strided-distances-dcosine-distance":"2td","@stdlib/stats/strided/distances/dcosine-similarity":"2te","@stdlib/stats-strided-distances-dcosine-similarity":"2tf","@stdlib/stats/strided/distances/deuclidean":"2tg","@stdlib/stats-strided-distances-deuclidean":"2th","@stdlib/stats/strided/distances/dminkowski":"2ti","@stdlib/stats-strided-distances-dminkowski":"2tj","@stdlib/stats/strided/distances/dsquared-euclidean":"2tk","@stdlib/stats-strided-distances-dsquared-euclidean":"2tl","@stdlib/stats/strided/distances":"2tm","@stdlib/stats-strided-distances":"2tn","@stdlib/stats/strided/dmidrangeabs":"2to","@stdlib/stats-strided-dmidrangeabs":"2tp","@stdlib/stats/strided/dmskmaxabs":"2tq","@stdlib/stats-strided-dmskmaxabs":"2tr","@stdlib/stats/strided/dmskmidrange":"2ts","@stdlib/stats-strided-dmskmidrange":"2tt","@stdlib/stats/strided/dnanmidrange":"2tu","@stdlib/stats-strided-dnanmidrange":"2tv","@stdlib/stats/strided/dnanmskmaxabs":"2tw","@stdlib/stats-strided-dnanmskmaxabs":"2tx","@stdlib/stats/strided/dnanmskmidrange":"2ty","@stdlib/stats-strided-dnanmskmidrange":"2tz","@stdlib/stats/strided/dnanmskminabs":"2u0","@stdlib/stats-strided-dnanmskminabs":"2u1","@stdlib/stats/strided/dnanrangeabs":"2u2","@stdlib/stats-strided-dnanrangeabs":"2u3","@stdlib/stats/strided/dpcorr":"2u4","@stdlib/stats-strided-dpcorr":"2u5","@stdlib/stats/strided/dpcorrwd":"2u6","@stdlib/stats-strided-dpcorrwd":"2u7","@stdlib/stats/strided/drangeabs":"2u8","@stdlib/stats-strided-drangeabs":"2u9","@stdlib/stats/strided/midrange-by":"2uA","@stdlib/stats-strided-midrange-by":"2uB","@stdlib/stats/strided/midrange":"2uC","@stdlib/stats-strided-midrange":"2uD","@stdlib/stats/strided/midrangeabs":"2uE","@stdlib/stats-strided-midrangeabs":"2uF","@stdlib/stats/strided/mskmaxabs":"2uG","@stdlib/stats-strided-mskmaxabs":"2uH","@stdlib/stats/strided/mskmidrange":"2uI","@stdlib/stats-strided-mskmidrange":"2uJ","@stdlib/stats/strided/mskminabs":"2uK","@stdlib/stats-strided-mskminabs":"2uL","@stdlib/stats/strided/nanmidrange-by":"2uM","@stdlib/stats-strided-nanmidrange-by":"2uN","@stdlib/stats/strided/nanmidrange":"2uO","@stdlib/stats-strided-nanmidrange":"2uP","@stdlib/stats/strided/nanmskmidrange":"2uQ","@stdlib/stats-strided-nanmskmidrange":"2uR","@stdlib/stats/strided/nanrangeabs":"2uS","@stdlib/stats-strided-nanrangeabs":"2uT","@stdlib/stats/strided/rangeabs":"2uU","@stdlib/stats-strided-rangeabs":"2uV","@stdlib/stats/strided/smskmaxabs":"2uW","@stdlib/stats-strided-smskmaxabs":"2uX","@stdlib/stats/strided/smskmidrange":"2uY","@stdlib/stats-strided-smskmidrange":"2uZ","@stdlib/stats/strided/snanmidrange":"2ua","@stdlib/stats-strided-snanmidrange":"2ub","@stdlib/stats/strided/snanmskmaxabs":"2uc","@stdlib/stats-strided-snanmskmaxabs":"2ud","@stdlib/stats/strided/snanmskmidrange":"2ue","@stdlib/stats-strided-snanmskmidrange":"2uf","@stdlib/stats/strided/snanmskminabs":"2ug","@stdlib/stats-strided-snanmskminabs":"2uh","@stdlib/stats/strided/srangeabs":"2ui","@stdlib/stats-strided-srangeabs":"2uj","@stdlib/strided/base/reinterpret-float16":"2uk","@stdlib/strided-base-reinterpret-float16":"2ul","@stdlib/array/falses":"2um","@stdlib/array-falses":"2un","@stdlib/array/trues":"2uo","@stdlib/array-trues":"2up","@stdlib/assert/is-uint64":"2uq","@stdlib/assert-is-uint64":"2ur","@stdlib/blas/base/ndarray/igamax":"2us","@stdlib/blas-base-ndarray-igamax":"2ut","@stdlib/blas/base/ndarray/isamax":"2uu","@stdlib/blas-base-ndarray-isamax":"2uv","@stdlib/blas/ext/base/caxpby":"2uw","@stdlib/blas-ext-base-caxpby":"2ux","@stdlib/blas/ext/base/cdiff":"2uy","@stdlib/blas-ext-base-cdiff":"2uz","@stdlib/blas/ext/base/cwxsa":"2v0","@stdlib/blas-ext-base-cwxsa":"2v1","@stdlib/blas/ext/base/cxpy":"2v2","@stdlib/blas-ext-base-cxpy":"2v3","@stdlib/blas/ext/base/daxpby":"2v4","@stdlib/blas-ext-base-daxpby":"2v5","@stdlib/blas/ext/base/dcuany":"2v6","@stdlib/blas-ext-base-dcuany":"2v7","@stdlib/blas/ext/base/dcuevery":"2v8","@stdlib/blas-ext-base-dcuevery":"2v9","@stdlib/blas/ext/base/dcunone":"2vA","@stdlib/blas-ext-base-dcunone":"2vB","@stdlib/blas/ext/base/dcusome":"2vC","@stdlib/blas-ext-base-dcusome":"2vD","@stdlib/blas/ext/base/dindex-of-falsy":"2vE","@stdlib/blas-ext-base-dindex-of-falsy":"2vF","@stdlib/blas/ext/base/dindex-of-truthy":"2vG","@stdlib/blas-ext-base-dindex-of-truthy":"2vH","@stdlib/blas/ext/base/dminheap-sift-down":"2vI","@stdlib/blas-ext-base-dminheap-sift-down":"2vJ","@stdlib/blas/ext/base/dnone":"2vK","@stdlib/blas-ext-base-dnone":"2vL","@stdlib/blas/ext/base/dones":"2vM","@stdlib/blas-ext-base-dones":"2vN","@stdlib/blas/ext/base/dsome":"2vO","@stdlib/blas-ext-base-dsome":"2vP","@stdlib/blas/ext/base/dwapx":"2vQ","@stdlib/blas-ext-base-dwapx":"2vR","@stdlib/blas/ext/base/dwxsa":"2vS","@stdlib/blas-ext-base-dwxsa":"2vT","@stdlib/blas/ext/base/dxpy":"2vU","@stdlib/blas-ext-base-dxpy":"2vV","@stdlib/blas/ext/base/dzeros":"2vW","@stdlib/blas-ext-base-dzeros":"2vX","@stdlib/blas/ext/base/gany":"2vY","@stdlib/blas-ext-base-gany":"2vZ","@stdlib/blas/ext/base/gcartesian-product":"2va","@stdlib/blas-ext-base-gcartesian-product":"2vb","@stdlib/blas/ext/base/gcuany":"2vc","@stdlib/blas-ext-base-gcuany":"2vd","@stdlib/blas/ext/base/gcusome":"2ve","@stdlib/blas-ext-base-gcusome":"2vf","@stdlib/blas/ext/base/gediff":"2vg","@stdlib/blas-ext-base-gediff":"2vh","@stdlib/blas/ext/base/gevery":"2vi","@stdlib/blas-ext-base-gevery":"2vj","@stdlib/blas/ext/base/gindex-of-falsy":"2vk","@stdlib/blas-ext-base-gindex-of-falsy":"2vl","@stdlib/blas/ext/base/gindex-of-truthy":"2vm","@stdlib/blas-ext-base-gindex-of-truthy":"2vn","@stdlib/blas/ext/base/glast-index-of-truthy":"2vo","@stdlib/blas-ext-base-glast-index-of-truthy":"2vp","@stdlib/blas/ext/base/gminheap-sift-down":"2vq","@stdlib/blas-ext-base-gminheap-sift-down":"2vr","@stdlib/blas/ext/base/gminheapify":"2vs","@stdlib/blas-ext-base-gminheapify":"2vt","@stdlib/blas/ext/base/gnone":"2vu","@stdlib/blas-ext-base-gnone":"2vv","@stdlib/blas/ext/base/gsome":"2vw","@stdlib/blas-ext-base-gsome":"2vx","@stdlib/blas/ext/base/gwapx":"2vy","@stdlib/blas-ext-base-gwapx":"2vz","@stdlib/blas/ext/base/gwxsa":"2w0","@stdlib/blas-ext-base-gwxsa":"2w1","@stdlib/blas/ext/base/gxpy":"2w2","@stdlib/blas-ext-base-gxpy":"2w3","@stdlib/blas/ext/base/ndarray/caxpby":"2w4","@stdlib/blas-ext-base-ndarray-caxpby":"2w5","@stdlib/blas/ext/base/ndarray/daxpby":"2w6","@stdlib/blas-ext-base-ndarray-daxpby":"2w7","@stdlib/blas/ext/base/ndarray/ddiff":"2w8","@stdlib/blas-ext-base-ndarray-ddiff":"2w9","@stdlib/blas/ext/base/ndarray/dindex-of-falsy":"2wA","@stdlib/blas-ext-base-ndarray-dindex-of-falsy":"2wB","@stdlib/blas/ext/base/ndarray/gaxpby":"2wC","@stdlib/blas-ext-base-ndarray-gaxpby":"2wD","@stdlib/blas/ext/base/ndarray/gindex-of-falsy":"2wE","@stdlib/blas-ext-base-ndarray-gindex-of-falsy":"2wF","@stdlib/blas/ext/base/ndarray/gindex-of-truthy":"2wG","@stdlib/blas-ext-base-ndarray-gindex-of-truthy":"2wH","@stdlib/blas/ext/base/ndarray/gxsa":"2wI","@stdlib/blas-ext-base-ndarray-gxsa":"2wJ","@stdlib/blas/ext/base/ndarray/saxpby":"2wK","@stdlib/blas-ext-base-ndarray-saxpby":"2wL","@stdlib/blas/ext/base/ndarray/scunone":"2wM","@stdlib/blas-ext-base-ndarray-scunone":"2wN","@stdlib/blas/ext/base/ndarray/zaxpby":"2wO","@stdlib/blas-ext-base-ndarray-zaxpby":"2wP","@stdlib/blas/ext/base/ndarray/zxsa":"2wQ","@stdlib/blas-ext-base-ndarray-zxsa":"2wR","@stdlib/blas/ext/base/saxpby":"2wS","@stdlib/blas-ext-base-saxpby":"2wT","@stdlib/blas/ext/base/scartesian-product":"2wU","@stdlib/blas-ext-base-scartesian-product":"2wV","@stdlib/blas/ext/base/scuany":"2wW","@stdlib/blas-ext-base-scuany":"2wX","@stdlib/blas/ext/base/scuevery":"2wY","@stdlib/blas-ext-base-scuevery":"2wZ","@stdlib/blas/ext/base/scunone":"2wa","@stdlib/blas-ext-base-scunone":"2wb","@stdlib/blas/ext/base/scusome":"2wc","@stdlib/blas-ext-base-scusome":"2wd","@stdlib/blas/ext/base/sindex-of-falsy":"2we","@stdlib/blas-ext-base-sindex-of-falsy":"2wf","@stdlib/blas/ext/base/sindex-of-truthy":"2wg","@stdlib/blas-ext-base-sindex-of-truthy":"2wh","@stdlib/blas/ext/base/sminheap-sift-down":"2wi","@stdlib/blas-ext-base-sminheap-sift-down":"2wj","@stdlib/blas/ext/base/smskrev":"2wk","@stdlib/blas-ext-base-smskrev":"2wl","@stdlib/blas/ext/base/sones":"2wm","@stdlib/blas-ext-base-sones":"2wn","@stdlib/blas/ext/base/swapx":"2wo","@stdlib/blas-ext-base-swapx":"2wp","@stdlib/blas/ext/base/swxsa":"2wq","@stdlib/blas-ext-base-swxsa":"2wr","@stdlib/blas/ext/base/sxpy":"2ws","@stdlib/blas-ext-base-sxpy":"2wt","@stdlib/blas/ext/base/szeros":"2wu","@stdlib/blas-ext-base-szeros":"2wv","@stdlib/blas/ext/base/zaxpby":"2ww","@stdlib/blas-ext-base-zaxpby":"2wx","@stdlib/blas/ext/base/zwxsa":"2wy","@stdlib/blas-ext-base-zwxsa":"2wz","@stdlib/blas/ext/base/zxpy":"2x0","@stdlib/blas-ext-base-zxpy":"2x1","@stdlib/fft/base/fftpack/cffti":"2x2","@stdlib/fft-base-fftpack-cffti":"2x3","@stdlib/fft/base/fftpack/cosqi":"2x4","@stdlib/fft-base-fftpack-cosqi":"2x5","@stdlib/fft/base/fftpack":"2x6","@stdlib/fft-base-fftpack":"2x7","@stdlib/fft/base/fftpack/rffti":"2x8","@stdlib/fft-base-fftpack-rffti":"2x9","@stdlib/fft/base":"2xA","@stdlib/fft-base":"2xB","@stdlib/fft":"2xD","@stdlib/lapack/base/dlaisnan":"2xE","@stdlib/lapack-base-dlaisnan":"2xF","@stdlib/ml/base/kmeans/results/struct-factory":"2xG","@stdlib/ml-base-kmeans-results-struct-factory":"2xH","@stdlib/napi/create-boolean":"2xI","@stdlib/napi-create-boolean":"2xJ","@stdlib/ndarray/base/assign-diagonal":"2xK","@stdlib/ndarray-base-assign-diagonal":"2xL","@stdlib/number/uint64/base/add":"2xM","@stdlib/number-uint64-base-add":"2xN","@stdlib/number/uint64/base/assert/is-equal":"2xO","@stdlib/number-uint64-base-assert-is-equal":"2xP","@stdlib/number/uint64/base/to-words":"2xQ","@stdlib/number-uint64-base-to-words":"2xR","@stdlib/stats/base/dists/anglit/mean":"2xS","@stdlib/stats-base-dists-anglit-mean":"2xT","@stdlib/stats/base/dists/anglit/median":"2xU","@stdlib/stats-base-dists-anglit-median":"2xV","@stdlib/stats/incr/nanmse":"2xW","@stdlib/stats-incr-nanmse":"2xX","@stdlib/stats/incr/nanmsumabs":"2xY","@stdlib/stats-incr-nanmsumabs":"2xZ","@stdlib/stats/incr/nanrmse":"2xa","@stdlib/stats-incr-nanrmse":"2xb","@stdlib/stats/strided/dmaxabs-sorted":"2xc","@stdlib/stats-strided-dmaxabs-sorted":"2xd","@stdlib/blas/ext/base/cwapx":"2xe","@stdlib/blas-ext-base-cwapx":"2xf","@stdlib/blas/ext/base/cxsy":"2xg","@stdlib/blas-ext-base-cxsy":"2xh","@stdlib/blas/ext/base/dany":"2xi","@stdlib/blas-ext-base-dany":"2xj","@stdlib/blas/ext/base/dlast-index-of-falsy":"2xk","@stdlib/blas-ext-base-dlast-index-of-falsy":"2xl","@stdlib/blas/ext/base/dlast-index-of-truthy":"2xm","@stdlib/blas-ext-base-dlast-index-of-truthy":"2xn","@stdlib/blas/ext/base/dlogspace":"2xo","@stdlib/blas-ext-base-dlogspace":"2xp","@stdlib/blas/ext/base/dxmy":"2xq","@stdlib/blas-ext-base-dxmy":"2xr","@stdlib/blas/ext/base/dxsy":"2xs","@stdlib/blas-ext-base-dxsy":"2xt","@stdlib/blas/ext/base/glast-index-of-falsy":"2xu","@stdlib/blas-ext-base-glast-index-of-falsy":"2xv","@stdlib/blas/ext/base/glogspace":"2xw","@stdlib/blas-ext-base-glogspace":"2xx","@stdlib/blas/ext/base/gwax":"2xy","@stdlib/blas-ext-base-gwax":"2xz","@stdlib/blas/ext/base/gwaxpb":"2y0","@stdlib/blas-ext-base-gwaxpb":"2y1","@stdlib/blas/ext/base/gwxpy":"2y2","@stdlib/blas-ext-base-gwxpy":"2y3","@stdlib/blas/ext/base/gwxsy":"2y4","@stdlib/blas-ext-base-gwxsy":"2y5","@stdlib/blas/ext/base/gxmy":"2y6","@stdlib/blas-ext-base-gxmy":"2y7","@stdlib/blas/ext/base/gxsy":"2y8","@stdlib/blas-ext-base-gxsy":"2y9","@stdlib/blas/ext/base/ndarray/cxpy":"2yA","@stdlib/blas-ext-base-ndarray-cxpy":"2yB","@stdlib/blas/ext/base/ndarray/cxsy":"2yC","@stdlib/blas-ext-base-ndarray-cxsy":"2yD","@stdlib/blas/ext/base/ndarray/dxpy":"2yE","@stdlib/blas-ext-base-ndarray-dxpy":"2yF","@stdlib/blas/ext/base/ndarray/dxsy":"2yG","@stdlib/blas-ext-base-ndarray-dxsy":"2yH","@stdlib/blas/ext/base/ndarray/gxpy":"2yI","@stdlib/blas-ext-base-ndarray-gxpy":"2yJ","@stdlib/blas/ext/base/ndarray/gxsy":"2yK","@stdlib/blas-ext-base-ndarray-gxsy":"2yL","@stdlib/blas/ext/base/ndarray/sxpy":"2yM","@stdlib/blas-ext-base-ndarray-sxpy":"2yN","@stdlib/blas/ext/base/ndarray/sxsy":"2yO","@stdlib/blas-ext-base-ndarray-sxsy":"2yP","@stdlib/blas/ext/base/ndarray/zxpy":"2yQ","@stdlib/blas-ext-base-ndarray-zxpy":"2yR","@stdlib/blas/ext/base/ndarray/zxsy":"2yS","@stdlib/blas-ext-base-ndarray-zxsy":"2yT","@stdlib/blas/ext/base/slast-index-of-falsy":"2yU","@stdlib/blas-ext-base-slast-index-of-falsy":"2yV","@stdlib/blas/ext/base/slast-index-of-truthy":"2yW","@stdlib/blas-ext-base-slast-index-of-truthy":"2yX","@stdlib/blas/ext/base/slogspace":"2yY","@stdlib/blas-ext-base-slogspace":"2yZ","@stdlib/blas/ext/base/snone":"2ya","@stdlib/blas-ext-base-snone":"2yb","@stdlib/blas/ext/base/ssome":"2yc","@stdlib/blas-ext-base-ssome":"2yd","@stdlib/blas/ext/base/sxmy":"2ye","@stdlib/blas-ext-base-sxmy":"2yf","@stdlib/blas/ext/base/sxsy":"2yg","@stdlib/blas-ext-base-sxsy":"2yh","@stdlib/blas/ext/base/zwapx":"2yi","@stdlib/blas-ext-base-zwapx":"2yj","@stdlib/blas/ext/base/zxsy":"2yk","@stdlib/blas-ext-base-zxsy":"2yl","@stdlib/fft/base/fftpack/sinqi":"2ym","@stdlib/fft-base-fftpack-sinqi":"2yn","@stdlib/lapack/base/disnan":"2yo","@stdlib/lapack-base-disnan":"2yp","@stdlib/lapack/base/dlarf":"2yq","@stdlib/lapack-base-dlarf":"2yr","@stdlib/ml/strided/dkmeans-distance":"2ys","@stdlib/ml-strided-dkmeans-distance":"2yt","@stdlib/ndarray/base/assert/is-binary-data-type":"2yu","@stdlib/ndarray-base-assert-is-binary-data-type":"2yv","@stdlib/ndarray/base/assert/is-generic-data-type":"2yw","@stdlib/ndarray-base-assert-is-generic-data-type":"2yx","@stdlib/ndarray/matrix/complex128":"2yy","@stdlib/ndarray-matrix-complex128":"2yz","@stdlib/ndarray/matrix/complex64":"2z0","@stdlib/ndarray-matrix-complex64":"2z1","@stdlib/ndarray/matrix/ctor":"2z2","@stdlib/ndarray-matrix-ctor":"2z3","@stdlib/ndarray/matrix/float32":"2z4","@stdlib/ndarray-matrix-float32":"2z5","@stdlib/ndarray/matrix/float64":"2z6","@stdlib/ndarray-matrix-float64":"2z7","@stdlib/ndarray/matrix/int32":"2z8","@stdlib/ndarray-matrix-int32":"2z9","@stdlib/ndarray/matrix":"2zA","@stdlib/ndarray-matrix":"2zB","@stdlib/stats/strided/dmax-sorted":"2zC","@stdlib/stats-strided-dmax-sorted":"2zD"} +{"@stdlib/array/base/arraylike2object":"000","@stdlib/array-base-arraylike2object":"001","@stdlib/array/base/copy":"002","@stdlib/array-base-copy":"003","@stdlib/array/base/filled-by":"004","@stdlib/array-base-filled-by":"005","@stdlib/array/base/filled":"006","@stdlib/array-base-filled":"007","@stdlib/array/base/incrspace":"008","@stdlib/array-base-incrspace":"009","@stdlib/array/base/linspace":"00A","@stdlib/array-base-linspace":"00B","@stdlib/array/base/logspace":"00C","@stdlib/array-base-logspace":"00D","@stdlib/array/base/ones":"00E","@stdlib/array-base-ones":"00F","@stdlib/array/base":"00G","@stdlib/array-base":"00H","@stdlib/array/base/unitspace":"00I","@stdlib/array-base-unitspace":"00J","@stdlib/array/base/zeros":"00K","@stdlib/array-base-zeros":"00L","@stdlib/array/buffer":"00M","@stdlib/array-buffer":"00N","@stdlib/array/complex128":"00O","@stdlib/array-complex128":"00P","@stdlib/array/complex64":"00Q","@stdlib/array-complex64":"00R","@stdlib/array/convert-same":"00S","@stdlib/array-convert-same":"00T","@stdlib/array/convert":"00U","@stdlib/array-convert":"00V","@stdlib/array/ctors":"00W","@stdlib/array-ctors":"00X","@stdlib/array/dataview":"00Y","@stdlib/array-dataview":"00Z","@stdlib/array/datespace":"00a","@stdlib/array-datespace":"00b","@stdlib/array/dtype":"00c","@stdlib/array-dtype":"00d","@stdlib/array/dtypes":"00e","@stdlib/array-dtypes":"00f","@stdlib/array/filled-by":"00g","@stdlib/array-filled-by":"00h","@stdlib/array/filled":"00i","@stdlib/array-filled":"00j","@stdlib/array/float32":"00k","@stdlib/array-float32":"00l","@stdlib/array/float64":"00m","@stdlib/array-float64":"00n","@stdlib/array/from-iterator":"00o","@stdlib/array-from-iterator":"00p","@stdlib/array/full-like":"00q","@stdlib/array-full-like":"00r","@stdlib/array/full":"00s","@stdlib/array-full":"00t","@stdlib/array/incrspace":"00u","@stdlib/array-incrspace":"00v","@stdlib/array/int16":"00w","@stdlib/array-int16":"00x","@stdlib/array/int32":"00y","@stdlib/array-int32":"00z","@stdlib/array/int8":"010","@stdlib/array-int8":"011","@stdlib/array/linspace":"012","@stdlib/array-linspace":"013","@stdlib/array/logspace":"014","@stdlib/array-logspace":"015","@stdlib/array/min-dtype":"016","@stdlib/array-min-dtype":"017","@stdlib/array/next-dtype":"018","@stdlib/array-next-dtype":"019","@stdlib/array/ones-like":"01A","@stdlib/array-ones-like":"01B","@stdlib/array/ones":"01C","@stdlib/array-ones":"01D","@stdlib/array":"01F","@stdlib/array/pool":"01G","@stdlib/array-pool":"01H","@stdlib/array/promotion-rules":"01I","@stdlib/array-promotion-rules":"01J","@stdlib/array/reviver":"01K","@stdlib/array-reviver":"01L","@stdlib/array/safe-casts":"01M","@stdlib/array-safe-casts":"01N","@stdlib/array/same-kind-casts":"01O","@stdlib/array-same-kind-casts":"01P","@stdlib/array/shape":"01Q","@stdlib/array-shape":"01R","@stdlib/array/shared-buffer":"01S","@stdlib/array-shared-buffer":"01T","@stdlib/array/to-circular-iterator":"01U","@stdlib/array-to-circular-iterator":"01V","@stdlib/array/to-iterator-right":"01W","@stdlib/array-to-iterator-right":"01X","@stdlib/array/to-iterator":"01Y","@stdlib/array-to-iterator":"01Z","@stdlib/array/to-json":"01a","@stdlib/array-to-json":"01b","@stdlib/array/to-sparse-iterator-right":"01c","@stdlib/array-to-sparse-iterator-right":"01d","@stdlib/array/to-sparse-iterator":"01e","@stdlib/array-to-sparse-iterator":"01f","@stdlib/array/to-strided-iterator":"01g","@stdlib/array-to-strided-iterator":"01h","@stdlib/array/to-view-iterator-right":"01i","@stdlib/array-to-view-iterator-right":"01j","@stdlib/array/to-view-iterator":"01k","@stdlib/array-to-view-iterator":"01l","@stdlib/array/typed-complex-ctors":"01m","@stdlib/array-typed-complex-ctors":"01n","@stdlib/array/typed-complex-dtypes":"01o","@stdlib/array-typed-complex-dtypes":"01p","@stdlib/array/typed-complex":"01q","@stdlib/array-typed-complex":"01r","@stdlib/array/typed-ctors":"01s","@stdlib/array-typed-ctors":"01t","@stdlib/array/typed-dtypes":"01u","@stdlib/array-typed-dtypes":"01v","@stdlib/array/typed-float-ctors":"01w","@stdlib/array-typed-float-ctors":"01x","@stdlib/array/typed-float-dtypes":"01y","@stdlib/array-typed-float-dtypes":"01z","@stdlib/array/typed-integer-ctors":"020","@stdlib/array-typed-integer-ctors":"021","@stdlib/array/typed-integer-dtypes":"022","@stdlib/array-typed-integer-dtypes":"023","@stdlib/array/typed-real-ctors":"024","@stdlib/array-typed-real-ctors":"025","@stdlib/array/typed-real-dtypes":"026","@stdlib/array-typed-real-dtypes":"027","@stdlib/array/typed-real-float-ctors":"028","@stdlib/array-typed-real-float-ctors":"029","@stdlib/array/typed-real-float-dtypes":"02A","@stdlib/array-typed-real-float-dtypes":"02B","@stdlib/array/typed-real":"02C","@stdlib/array-typed-real":"02D","@stdlib/array/typed-signed-integer-ctors":"02E","@stdlib/array-typed-signed-integer-ctors":"02F","@stdlib/array/typed-signed-integer-dtypes":"02G","@stdlib/array-typed-signed-integer-dtypes":"02H","@stdlib/array/typed-unsigned-integer-ctors":"02I","@stdlib/array-typed-unsigned-integer-ctors":"02J","@stdlib/array/typed-unsigned-integer-dtypes":"02K","@stdlib/array-typed-unsigned-integer-dtypes":"02L","@stdlib/array/typed":"02M","@stdlib/array-typed":"02N","@stdlib/array/uint16":"02O","@stdlib/array-uint16":"02P","@stdlib/array/uint32":"02Q","@stdlib/array-uint32":"02R","@stdlib/array/uint8":"02S","@stdlib/array-uint8":"02T","@stdlib/array/uint8c":"02U","@stdlib/array-uint8c":"02V","@stdlib/array/zeros-like":"02W","@stdlib/array-zeros-like":"02X","@stdlib/array/zeros":"02Y","@stdlib/array-zeros":"02Z","@stdlib/assert/contains":"02a","@stdlib/assert-contains":"02b","@stdlib/assert/deep-equal":"02c","@stdlib/assert-deep-equal":"02d","@stdlib/assert/deep-has-own-property":"02e","@stdlib/assert-deep-has-own-property":"02f","@stdlib/assert/deep-has-property":"02g","@stdlib/assert-deep-has-property":"02h","@stdlib/assert/has-arraybuffer-support":"02i","@stdlib/assert-has-arraybuffer-support":"02j","@stdlib/assert/has-arrow-function-support":"02k","@stdlib/assert-has-arrow-function-support":"02l","@stdlib/assert/has-async-await-support":"02m","@stdlib/assert-has-async-await-support":"02n","@stdlib/assert/has-async-iterator-symbol-support":"02o","@stdlib/assert-has-async-iterator-symbol-support":"02p","@stdlib/assert/has-bigint-support":"02q","@stdlib/assert-has-bigint-support":"02r","@stdlib/assert/has-bigint64array-support":"02s","@stdlib/assert-has-bigint64array-support":"02t","@stdlib/assert/has-biguint64array-support":"02u","@stdlib/assert-has-biguint64array-support":"02v","@stdlib/assert/has-class-support":"02w","@stdlib/assert-has-class-support":"02x","@stdlib/assert/has-dataview-support":"02y","@stdlib/assert-has-dataview-support":"02z","@stdlib/assert/has-define-properties-support":"030","@stdlib/assert-has-define-properties-support":"031","@stdlib/assert/has-define-property-support":"032","@stdlib/assert-has-define-property-support":"033","@stdlib/assert/has-float32array-support":"034","@stdlib/assert-has-float32array-support":"035","@stdlib/assert/has-float64array-support":"036","@stdlib/assert-has-float64array-support":"037","@stdlib/assert/has-function-name-support":"038","@stdlib/assert-has-function-name-support":"039","@stdlib/assert/has-generator-support":"03A","@stdlib/assert-has-generator-support":"03B","@stdlib/assert/has-globalthis-support":"03C","@stdlib/assert-has-globalthis-support":"03D","@stdlib/assert/has-int16array-support":"03E","@stdlib/assert-has-int16array-support":"03F","@stdlib/assert/has-int32array-support":"03G","@stdlib/assert-has-int32array-support":"03H","@stdlib/assert/has-int8array-support":"03I","@stdlib/assert-has-int8array-support":"03J","@stdlib/assert/has-iterator-symbol-support":"03K","@stdlib/assert-has-iterator-symbol-support":"03L","@stdlib/assert/has-map-support":"03M","@stdlib/assert-has-map-support":"03N","@stdlib/assert/has-node-buffer-support":"03O","@stdlib/assert-has-node-buffer-support":"03P","@stdlib/assert/has-own-property":"03Q","@stdlib/assert-has-own-property":"03R","@stdlib/assert/has-property":"03S","@stdlib/assert-has-property":"03T","@stdlib/assert/has-proxy-support":"03U","@stdlib/assert-has-proxy-support":"03V","@stdlib/assert/has-set-support":"03W","@stdlib/assert-has-set-support":"03X","@stdlib/assert/has-sharedarraybuffer-support":"03Y","@stdlib/assert-has-sharedarraybuffer-support":"03Z","@stdlib/assert/has-symbol-support":"03a","@stdlib/assert-has-symbol-support":"03b","@stdlib/assert/has-tostringtag-support":"03c","@stdlib/assert-has-tostringtag-support":"03d","@stdlib/assert/has-uint16array-support":"03e","@stdlib/assert-has-uint16array-support":"03f","@stdlib/assert/has-uint32array-support":"03g","@stdlib/assert-has-uint32array-support":"03h","@stdlib/assert/has-uint8array-support":"03i","@stdlib/assert-has-uint8array-support":"03j","@stdlib/assert/has-uint8clampedarray-support":"03k","@stdlib/assert-has-uint8clampedarray-support":"03l","@stdlib/assert/has-utf16-surrogate-pair-at":"03m","@stdlib/assert-has-utf16-surrogate-pair-at":"03n","@stdlib/assert/has-wasm-support":"03o","@stdlib/assert-has-wasm-support":"03p","@stdlib/assert/has-weakmap-support":"03q","@stdlib/assert-has-weakmap-support":"03r","@stdlib/assert/has-weakset-support":"03s","@stdlib/assert-has-weakset-support":"03t","@stdlib/assert/instance-of":"03u","@stdlib/assert-instance-of":"03v","@stdlib/assert/is-absolute-http-uri":"03w","@stdlib/assert-is-absolute-http-uri":"03x","@stdlib/assert/is-absolute-path":"03y","@stdlib/assert-is-absolute-path":"03z","@stdlib/assert/is-absolute-uri":"040","@stdlib/assert-is-absolute-uri":"041","@stdlib/assert/is-accessor-property-in":"042","@stdlib/assert-is-accessor-property-in":"043","@stdlib/assert/is-accessor-property":"044","@stdlib/assert-is-accessor-property":"045","@stdlib/assert/is-alphagram":"046","@stdlib/assert-is-alphagram":"047","@stdlib/assert/is-alphanumeric":"048","@stdlib/assert-is-alphanumeric":"049","@stdlib/assert/is-anagram":"04A","@stdlib/assert-is-anagram":"04B","@stdlib/assert/is-arguments":"04C","@stdlib/assert-is-arguments":"04D","@stdlib/assert/is-array-array":"04E","@stdlib/assert-is-array-array":"04F","@stdlib/assert/is-array-length":"04G","@stdlib/assert-is-array-length":"04H","@stdlib/assert/is-array-like-object":"04I","@stdlib/assert-is-array-like-object":"04J","@stdlib/assert/is-array-like":"04K","@stdlib/assert-is-array-like":"04L","@stdlib/assert/is-array":"04M","@stdlib/assert-is-array":"04N","@stdlib/assert/is-arraybuffer-view":"04O","@stdlib/assert-is-arraybuffer-view":"04P","@stdlib/assert/is-arraybuffer":"04Q","@stdlib/assert-is-arraybuffer":"04R","@stdlib/assert/is-arrow-function":"04S","@stdlib/assert-is-arrow-function":"04T","@stdlib/assert/is-ascii":"04U","@stdlib/assert-is-ascii":"04V","@stdlib/assert/is-between-array":"04W","@stdlib/assert-is-between-array":"04X","@stdlib/assert/is-between":"04Y","@stdlib/assert-is-between":"04Z","@stdlib/assert/is-big-endian":"04a","@stdlib/assert-is-big-endian":"04b","@stdlib/assert/is-bigint":"04c","@stdlib/assert-is-bigint":"04d","@stdlib/assert/is-bigint64array":"04e","@stdlib/assert-is-bigint64array":"04f","@stdlib/assert/is-biguint64array":"04g","@stdlib/assert-is-biguint64array":"04h","@stdlib/assert/is-binary-string":"04i","@stdlib/assert-is-binary-string":"04j","@stdlib/assert/is-blank-string":"04k","@stdlib/assert-is-blank-string":"04l","@stdlib/assert/is-boolean-array":"04m","@stdlib/assert-is-boolean-array":"04n","@stdlib/assert/is-boolean":"04o","@stdlib/assert-is-boolean":"04p","@stdlib/assert/is-boxed-primitive":"04q","@stdlib/assert-is-boxed-primitive":"04r","@stdlib/assert/is-browser":"04s","@stdlib/assert-is-browser":"04t","@stdlib/assert/is-buffer":"04u","@stdlib/assert-is-buffer":"04v","@stdlib/assert/is-capitalized":"04w","@stdlib/assert-is-capitalized":"04x","@stdlib/assert/is-centrosymmetric-matrix":"04y","@stdlib/assert-is-centrosymmetric-matrix":"04z","@stdlib/assert/is-circular-array":"050","@stdlib/assert-is-circular-array":"051","@stdlib/assert/is-circular-plain-object":"052","@stdlib/assert-is-circular-plain-object":"053","@stdlib/assert/is-circular":"054","@stdlib/assert-is-circular":"055","@stdlib/assert/is-class":"056","@stdlib/assert-is-class":"057","@stdlib/assert/is-collection":"058","@stdlib/assert-is-collection":"059","@stdlib/assert/is-complex-like":"05A","@stdlib/assert-is-complex-like":"05B","@stdlib/assert/is-complex-typed-array-like":"05C","@stdlib/assert-is-complex-typed-array-like":"05D","@stdlib/assert/is-complex-typed-array":"05E","@stdlib/assert-is-complex-typed-array":"05F","@stdlib/assert/is-complex":"05G","@stdlib/assert-is-complex":"05H","@stdlib/assert/is-complex128":"05I","@stdlib/assert-is-complex128":"05J","@stdlib/assert/is-complex128array":"05K","@stdlib/assert-is-complex128array":"05L","@stdlib/assert/is-complex64":"05M","@stdlib/assert-is-complex64":"05N","@stdlib/assert/is-complex64array":"05O","@stdlib/assert-is-complex64array":"05P","@stdlib/assert/is-composite":"05Q","@stdlib/assert-is-composite":"05R","@stdlib/assert/is-configurable-property-in":"05S","@stdlib/assert-is-configurable-property-in":"05T","@stdlib/assert/is-configurable-property":"05U","@stdlib/assert-is-configurable-property":"05V","@stdlib/assert/is-cube-number":"05W","@stdlib/assert-is-cube-number":"05X","@stdlib/assert/is-darwin":"05Y","@stdlib/assert-is-darwin":"05Z","@stdlib/assert/is-data-property-in":"05a","@stdlib/assert-is-data-property-in":"05b","@stdlib/assert/is-data-property":"05c","@stdlib/assert-is-data-property":"05d","@stdlib/assert/is-dataview":"05e","@stdlib/assert-is-dataview":"05f","@stdlib/assert/is-date-object-array":"05g","@stdlib/assert-is-date-object-array":"05h","@stdlib/assert/is-date-object":"05i","@stdlib/assert-is-date-object":"05j","@stdlib/assert/is-digit-string":"05k","@stdlib/assert-is-digit-string":"05l","@stdlib/assert/is-docker":"05m","@stdlib/assert-is-docker":"05n","@stdlib/assert/is-electron-main":"05o","@stdlib/assert-is-electron-main":"05p","@stdlib/assert/is-electron-renderer":"05q","@stdlib/assert-is-electron-renderer":"05r","@stdlib/assert/is-electron":"05s","@stdlib/assert-is-electron":"05t","@stdlib/assert/is-email-address":"05u","@stdlib/assert-is-email-address":"05v","@stdlib/assert/is-empty-array-like-object":"05w","@stdlib/assert-is-empty-array-like-object":"05x","@stdlib/assert/is-empty-array":"05y","@stdlib/assert-is-empty-array":"05z","@stdlib/assert/is-empty-collection":"060","@stdlib/assert-is-empty-collection":"061","@stdlib/assert/is-empty-object":"062","@stdlib/assert-is-empty-object":"063","@stdlib/assert/is-empty-string":"064","@stdlib/assert-is-empty-string":"065","@stdlib/assert/is-enumerable-property-in":"066","@stdlib/assert-is-enumerable-property-in":"067","@stdlib/assert/is-enumerable-property":"068","@stdlib/assert-is-enumerable-property":"069","@stdlib/assert/is-error":"06A","@stdlib/assert-is-error":"06B","@stdlib/assert/is-eval-error":"06C","@stdlib/assert-is-eval-error":"06D","@stdlib/assert/is-even":"06E","@stdlib/assert-is-even":"06F","@stdlib/assert/is-falsy-array":"06G","@stdlib/assert-is-falsy-array":"06H","@stdlib/assert/is-falsy":"06I","@stdlib/assert-is-falsy":"06J","@stdlib/assert/is-finite-array":"06K","@stdlib/assert-is-finite-array":"06L","@stdlib/assert/is-finite":"06M","@stdlib/assert-is-finite":"06N","@stdlib/assert/is-float32array":"06O","@stdlib/assert-is-float32array":"06P","@stdlib/assert/is-float32matrix-like":"06Q","@stdlib/assert-is-float32matrix-like":"06R","@stdlib/assert/is-float32ndarray-like":"06S","@stdlib/assert-is-float32ndarray-like":"06T","@stdlib/assert/is-float32vector-like":"06U","@stdlib/assert-is-float32vector-like":"06V","@stdlib/assert/is-float64array":"06W","@stdlib/assert-is-float64array":"06X","@stdlib/assert/is-float64matrix-like":"06Y","@stdlib/assert-is-float64matrix-like":"06Z","@stdlib/assert/is-float64ndarray-like":"06a","@stdlib/assert-is-float64ndarray-like":"06b","@stdlib/assert/is-float64vector-like":"06c","@stdlib/assert-is-float64vector-like":"06d","@stdlib/assert/is-function-array":"06e","@stdlib/assert-is-function-array":"06f","@stdlib/assert/is-function":"06g","@stdlib/assert-is-function":"06h","@stdlib/assert/is-generator-object-like":"06i","@stdlib/assert-is-generator-object-like":"06j","@stdlib/assert/is-generator-object":"06k","@stdlib/assert-is-generator-object":"06l","@stdlib/assert/is-gzip-buffer":"06m","@stdlib/assert-is-gzip-buffer":"06n","@stdlib/assert/is-hex-string":"06o","@stdlib/assert-is-hex-string":"06p","@stdlib/assert/is-infinite":"06q","@stdlib/assert-is-infinite":"06r","@stdlib/assert/is-inherited-property":"06s","@stdlib/assert-is-inherited-property":"06t","@stdlib/assert/is-int16array":"06u","@stdlib/assert-is-int16array":"06v","@stdlib/assert/is-int32array":"06w","@stdlib/assert-is-int32array":"06x","@stdlib/assert/is-int8array":"06y","@stdlib/assert-is-int8array":"06z","@stdlib/assert/is-integer-array":"070","@stdlib/assert-is-integer-array":"071","@stdlib/assert/is-integer":"072","@stdlib/assert-is-integer":"073","@stdlib/assert/is-iterable-like":"074","@stdlib/assert-is-iterable-like":"075","@stdlib/assert/is-iterator-like":"076","@stdlib/assert-is-iterator-like":"077","@stdlib/assert/is-json":"078","@stdlib/assert-is-json":"079","@stdlib/assert/is-leap-year":"07A","@stdlib/assert-is-leap-year":"07B","@stdlib/assert/is-little-endian":"07C","@stdlib/assert-is-little-endian":"07D","@stdlib/assert/is-localhost":"07E","@stdlib/assert-is-localhost":"07F","@stdlib/assert/is-lowercase":"07G","@stdlib/assert-is-lowercase":"07H","@stdlib/assert/is-matrix-like":"07I","@stdlib/assert-is-matrix-like":"07J","@stdlib/assert/is-method-in":"07K","@stdlib/assert-is-method-in":"07L","@stdlib/assert/is-method":"07M","@stdlib/assert-is-method":"07N","@stdlib/assert/is-mobile":"07O","@stdlib/assert-is-mobile":"07P","@stdlib/assert/is-named-typed-tuple-like":"07Q","@stdlib/assert-is-named-typed-tuple-like":"07R","@stdlib/assert/is-nan-array":"07S","@stdlib/assert-is-nan-array":"07T","@stdlib/assert/is-nan":"07U","@stdlib/assert-is-nan":"07V","@stdlib/assert/is-native-function":"07W","@stdlib/assert-is-native-function":"07X","@stdlib/assert/is-ndarray-like":"07Y","@stdlib/assert-is-ndarray-like":"07Z","@stdlib/assert/is-negative-integer-array":"07a","@stdlib/assert-is-negative-integer-array":"07b","@stdlib/assert/is-negative-integer":"07c","@stdlib/assert-is-negative-integer":"07d","@stdlib/assert/is-negative-number-array":"07e","@stdlib/assert-is-negative-number-array":"07f","@stdlib/assert/is-negative-number":"07g","@stdlib/assert-is-negative-number":"07h","@stdlib/assert/is-negative-zero":"07i","@stdlib/assert-is-negative-zero":"07j","@stdlib/assert/is-node-builtin":"07k","@stdlib/assert-is-node-builtin":"07l","@stdlib/assert/is-node-duplex-stream-like":"07m","@stdlib/assert-is-node-duplex-stream-like":"07n","@stdlib/assert/is-node-readable-stream-like":"07o","@stdlib/assert-is-node-readable-stream-like":"07p","@stdlib/assert/is-node-repl":"07q","@stdlib/assert-is-node-repl":"07r","@stdlib/assert/is-node-stream-like":"07s","@stdlib/assert-is-node-stream-like":"07t","@stdlib/assert/is-node-transform-stream-like":"07u","@stdlib/assert-is-node-transform-stream-like":"07v","@stdlib/assert/is-node-writable-stream-like":"07w","@stdlib/assert-is-node-writable-stream-like":"07x","@stdlib/assert/is-node":"07y","@stdlib/assert-is-node":"07z","@stdlib/assert/is-nonconfigurable-property-in":"080","@stdlib/assert-is-nonconfigurable-property-in":"081","@stdlib/assert/is-nonconfigurable-property":"082","@stdlib/assert-is-nonconfigurable-property":"083","@stdlib/assert/is-nonenumerable-property-in":"084","@stdlib/assert-is-nonenumerable-property-in":"085","@stdlib/assert/is-nonenumerable-property":"086","@stdlib/assert-is-nonenumerable-property":"087","@stdlib/assert/is-nonnegative-integer-array":"088","@stdlib/assert-is-nonnegative-integer-array":"089","@stdlib/assert/is-nonnegative-integer":"08A","@stdlib/assert-is-nonnegative-integer":"08B","@stdlib/assert/is-nonnegative-number-array":"08C","@stdlib/assert-is-nonnegative-number-array":"08D","@stdlib/assert/is-nonnegative-number":"08E","@stdlib/assert-is-nonnegative-number":"08F","@stdlib/assert/is-nonpositive-integer-array":"08G","@stdlib/assert-is-nonpositive-integer-array":"08H","@stdlib/assert/is-nonpositive-integer":"08I","@stdlib/assert-is-nonpositive-integer":"08J","@stdlib/assert/is-nonpositive-number-array":"08K","@stdlib/assert-is-nonpositive-number-array":"08L","@stdlib/assert/is-nonpositive-number":"08M","@stdlib/assert-is-nonpositive-number":"08N","@stdlib/assert/is-nonsymmetric-matrix":"08O","@stdlib/assert-is-nonsymmetric-matrix":"08P","@stdlib/assert/is-null-array":"08Q","@stdlib/assert-is-null-array":"08R","@stdlib/assert/is-null":"08S","@stdlib/assert-is-null":"08T","@stdlib/assert/is-number-array":"08U","@stdlib/assert-is-number-array":"08V","@stdlib/assert/is-number":"08W","@stdlib/assert-is-number":"08X","@stdlib/assert/is-numeric-array":"08Y","@stdlib/assert-is-numeric-array":"08Z","@stdlib/assert/is-object-array":"08a","@stdlib/assert-is-object-array":"08b","@stdlib/assert/is-object-like":"08c","@stdlib/assert-is-object-like":"08d","@stdlib/assert/is-object":"08e","@stdlib/assert-is-object":"08f","@stdlib/assert/is-odd":"08g","@stdlib/assert-is-odd":"08h","@stdlib/assert/is-persymmetric-matrix":"08i","@stdlib/assert-is-persymmetric-matrix":"08j","@stdlib/assert/is-plain-object-array":"08k","@stdlib/assert-is-plain-object-array":"08l","@stdlib/assert/is-plain-object":"08m","@stdlib/assert-is-plain-object":"08n","@stdlib/assert/is-positive-integer-array":"08o","@stdlib/assert-is-positive-integer-array":"08p","@stdlib/assert/is-positive-integer":"08q","@stdlib/assert-is-positive-integer":"08r","@stdlib/assert/is-positive-number-array":"08s","@stdlib/assert-is-positive-number-array":"08t","@stdlib/assert/is-positive-number":"08u","@stdlib/assert-is-positive-number":"08v","@stdlib/assert/is-positive-zero":"08w","@stdlib/assert-is-positive-zero":"08x","@stdlib/assert/is-prime":"08y","@stdlib/assert-is-prime":"08z","@stdlib/assert/is-primitive-array":"090","@stdlib/assert-is-primitive-array":"091","@stdlib/assert/is-primitive":"092","@stdlib/assert-is-primitive":"093","@stdlib/assert/is-prng-like":"094","@stdlib/assert-is-prng-like":"095","@stdlib/assert/is-probability-array":"096","@stdlib/assert-is-probability-array":"097","@stdlib/assert/is-probability":"098","@stdlib/assert-is-probability":"099","@stdlib/assert/is-property-key":"09A","@stdlib/assert-is-property-key":"09B","@stdlib/assert/is-prototype-of":"09C","@stdlib/assert-is-prototype-of":"09D","@stdlib/assert/is-range-error":"09E","@stdlib/assert-is-range-error":"09F","@stdlib/assert/is-read-only-property-in":"09G","@stdlib/assert-is-read-only-property-in":"09H","@stdlib/assert/is-read-only-property":"09I","@stdlib/assert-is-read-only-property":"09J","@stdlib/assert/is-read-write-property-in":"09K","@stdlib/assert-is-read-write-property-in":"09L","@stdlib/assert/is-read-write-property":"09M","@stdlib/assert-is-read-write-property":"09N","@stdlib/assert/is-readable-property-in":"09O","@stdlib/assert-is-readable-property-in":"09P","@stdlib/assert/is-readable-property":"09Q","@stdlib/assert-is-readable-property":"09R","@stdlib/assert/is-reference-error":"09S","@stdlib/assert-is-reference-error":"09T","@stdlib/assert/is-regexp-string":"09U","@stdlib/assert-is-regexp-string":"09V","@stdlib/assert/is-regexp":"09W","@stdlib/assert-is-regexp":"09X","@stdlib/assert/is-relative-path":"09Y","@stdlib/assert-is-relative-path":"09Z","@stdlib/assert/is-relative-uri":"09a","@stdlib/assert-is-relative-uri":"09b","@stdlib/assert/is-safe-integer-array":"09c","@stdlib/assert-is-safe-integer-array":"09d","@stdlib/assert/is-safe-integer":"09e","@stdlib/assert-is-safe-integer":"09f","@stdlib/assert/is-same-native-class":"09g","@stdlib/assert-is-same-native-class":"09h","@stdlib/assert/is-same-type":"09i","@stdlib/assert-is-same-type":"09j","@stdlib/assert/is-same-value-zero":"09k","@stdlib/assert-is-same-value-zero":"09l","@stdlib/assert/is-same-value":"09m","@stdlib/assert-is-same-value":"09n","@stdlib/assert/is-sharedarraybuffer":"09o","@stdlib/assert-is-sharedarraybuffer":"09p","@stdlib/assert/is-skew-centrosymmetric-matrix":"09q","@stdlib/assert-is-skew-centrosymmetric-matrix":"09r","@stdlib/assert/is-skew-persymmetric-matrix":"09s","@stdlib/assert-is-skew-persymmetric-matrix":"09t","@stdlib/assert/is-skew-symmetric-matrix":"09u","@stdlib/assert-is-skew-symmetric-matrix":"09v","@stdlib/assert/is-square-matrix":"09w","@stdlib/assert-is-square-matrix":"09x","@stdlib/assert/is-square-number":"09y","@stdlib/assert-is-square-number":"09z","@stdlib/assert/is-square-triangular-number":"0A0","@stdlib/assert-is-square-triangular-number":"0A1","@stdlib/assert/is-strict-equal":"0A2","@stdlib/assert-is-strict-equal":"0A3","@stdlib/assert/is-string-array":"0A4","@stdlib/assert-is-string-array":"0A5","@stdlib/assert/is-string":"0A6","@stdlib/assert-is-string":"0A7","@stdlib/assert/is-symbol-array":"0A8","@stdlib/assert-is-symbol-array":"0A9","@stdlib/assert/is-symbol":"0AA","@stdlib/assert-is-symbol":"0AB","@stdlib/assert/is-symmetric-matrix":"0AC","@stdlib/assert-is-symmetric-matrix":"0AD","@stdlib/assert/is-syntax-error":"0AE","@stdlib/assert-is-syntax-error":"0AF","@stdlib/assert/is-touch-device":"0AG","@stdlib/assert-is-touch-device":"0AH","@stdlib/assert/is-triangular-number":"0AI","@stdlib/assert-is-triangular-number":"0AJ","@stdlib/assert/is-truthy-array":"0AK","@stdlib/assert-is-truthy-array":"0AL","@stdlib/assert/is-truthy":"0AM","@stdlib/assert-is-truthy":"0AN","@stdlib/assert/is-type-error":"0AO","@stdlib/assert-is-type-error":"0AP","@stdlib/assert/is-typed-array-length":"0AQ","@stdlib/assert-is-typed-array-length":"0AR","@stdlib/assert/is-typed-array-like":"0AS","@stdlib/assert-is-typed-array-like":"0AT","@stdlib/assert/is-typed-array":"0AU","@stdlib/assert-is-typed-array":"0AV","@stdlib/assert/is-uint16array":"0AW","@stdlib/assert-is-uint16array":"0AX","@stdlib/assert/is-uint32array":"0AY","@stdlib/assert-is-uint32array":"0AZ","@stdlib/assert/is-uint8array":"0Aa","@stdlib/assert-is-uint8array":"0Ab","@stdlib/assert/is-uint8clampedarray":"0Ac","@stdlib/assert-is-uint8clampedarray":"0Ad","@stdlib/assert/is-unc-path":"0Ae","@stdlib/assert-is-unc-path":"0Af","@stdlib/assert/is-undefined-or-null":"0Ag","@stdlib/assert-is-undefined-or-null":"0Ah","@stdlib/assert/is-undefined":"0Ai","@stdlib/assert-is-undefined":"0Aj","@stdlib/assert/is-unity-probability-array":"0Ak","@stdlib/assert-is-unity-probability-array":"0Al","@stdlib/assert/is-uppercase":"0Am","@stdlib/assert-is-uppercase":"0An","@stdlib/assert/is-uri-error":"0Ao","@stdlib/assert-is-uri-error":"0Ap","@stdlib/assert/is-uri":"0Aq","@stdlib/assert-is-uri":"0Ar","@stdlib/assert/is-vector-like":"0As","@stdlib/assert-is-vector-like":"0At","@stdlib/assert/is-web-worker":"0Au","@stdlib/assert-is-web-worker":"0Av","@stdlib/assert/is-whitespace":"0Aw","@stdlib/assert-is-whitespace":"0Ax","@stdlib/assert/is-windows":"0Ay","@stdlib/assert-is-windows":"0Az","@stdlib/assert/is-writable-property-in":"0B0","@stdlib/assert-is-writable-property-in":"0B1","@stdlib/assert/is-writable-property":"0B2","@stdlib/assert-is-writable-property":"0B3","@stdlib/assert/is-write-only-property-in":"0B4","@stdlib/assert-is-write-only-property-in":"0B5","@stdlib/assert/is-write-only-property":"0B6","@stdlib/assert-is-write-only-property":"0B7","@stdlib/assert":"0B9","@stdlib/assert/tools/array-function":"0BA","@stdlib/assert-tools-array-function":"0BB","@stdlib/assert/tools/array-like-function":"0BC","@stdlib/assert-tools-array-like-function":"0BD","@stdlib/assert/tools":"0BE","@stdlib/assert-tools":"0BF","@stdlib/assert/tools/typed-array-function":"0BG","@stdlib/assert-tools-typed-array-function":"0BH","@stdlib/bench/harness":"0BI","@stdlib/bench-harness":"0BJ","@stdlib/bench":"0BL","@stdlib/bigint/ctor":"0BM","@stdlib/bigint-ctor":"0BN","@stdlib/bigint":"0BP","@stdlib/blas/base/ccopy":"0BQ","@stdlib/blas-base-ccopy":"0BR","@stdlib/blas/base/cswap":"0BS","@stdlib/blas-base-cswap":"0BT","@stdlib/blas/base/dasum":"0BU","@stdlib/blas-base-dasum":"0BV","@stdlib/blas/base/daxpy":"0BW","@stdlib/blas-base-daxpy":"0BX","@stdlib/blas/base/dcopy":"0BY","@stdlib/blas-base-dcopy":"0BZ","@stdlib/blas/base/ddot":"0Ba","@stdlib/blas-base-ddot":"0Bb","@stdlib/blas/base/dnrm2":"0Bc","@stdlib/blas-base-dnrm2":"0Bd","@stdlib/blas/base/dscal":"0Be","@stdlib/blas-base-dscal":"0Bf","@stdlib/blas/base/dsdot":"0Bg","@stdlib/blas-base-dsdot":"0Bh","@stdlib/blas/base/dswap":"0Bi","@stdlib/blas-base-dswap":"0Bj","@stdlib/blas/base/gasum":"0Bk","@stdlib/blas-base-gasum":"0Bl","@stdlib/blas/base/gaxpy":"0Bm","@stdlib/blas-base-gaxpy":"0Bn","@stdlib/blas/base/gcopy":"0Bo","@stdlib/blas-base-gcopy":"0Bp","@stdlib/blas/base/gdot":"0Bq","@stdlib/blas-base-gdot":"0Br","@stdlib/blas/base/gnrm2":"0Bs","@stdlib/blas-base-gnrm2":"0Bt","@stdlib/blas/base/gscal":"0Bu","@stdlib/blas-base-gscal":"0Bv","@stdlib/blas/base/gswap":"0Bw","@stdlib/blas-base-gswap":"0Bx","@stdlib/blas/base":"0By","@stdlib/blas-base":"0Bz","@stdlib/blas/base/sasum":"0C0","@stdlib/blas-base-sasum":"0C1","@stdlib/blas/base/saxpy":"0C2","@stdlib/blas-base-saxpy":"0C3","@stdlib/blas/base/scopy":"0C4","@stdlib/blas-base-scopy":"0C5","@stdlib/blas/base/sdot":"0C6","@stdlib/blas-base-sdot":"0C7","@stdlib/blas/base/sdsdot":"0C8","@stdlib/blas-base-sdsdot":"0C9","@stdlib/blas/base/snrm2":"0CA","@stdlib/blas-base-snrm2":"0CB","@stdlib/blas/base/sscal":"0CC","@stdlib/blas-base-sscal":"0CD","@stdlib/blas/base/sswap":"0CE","@stdlib/blas-base-sswap":"0CF","@stdlib/blas/ddot":"0CG","@stdlib/blas-ddot":"0CH","@stdlib/blas/dswap":"0CI","@stdlib/blas-dswap":"0CJ","@stdlib/blas/ext/base/dapx":"0CK","@stdlib/blas-ext-base-dapx":"0CL","@stdlib/blas/ext/base/dapxsum":"0CM","@stdlib/blas-ext-base-dapxsum":"0CN","@stdlib/blas/ext/base/dapxsumkbn":"0CO","@stdlib/blas-ext-base-dapxsumkbn":"0CP","@stdlib/blas/ext/base/dapxsumkbn2":"0CQ","@stdlib/blas-ext-base-dapxsumkbn2":"0CR","@stdlib/blas/ext/base/dapxsumors":"0CS","@stdlib/blas-ext-base-dapxsumors":"0CT","@stdlib/blas/ext/base/dapxsumpw":"0CU","@stdlib/blas-ext-base-dapxsumpw":"0CV","@stdlib/blas/ext/base/dasumpw":"0CW","@stdlib/blas-ext-base-dasumpw":"0CX","@stdlib/blas/ext/base/dcusum":"0CY","@stdlib/blas-ext-base-dcusum":"0CZ","@stdlib/blas/ext/base/dcusumkbn":"0Ca","@stdlib/blas-ext-base-dcusumkbn":"0Cb","@stdlib/blas/ext/base/dcusumkbn2":"0Cc","@stdlib/blas-ext-base-dcusumkbn2":"0Cd","@stdlib/blas/ext/base/dcusumors":"0Ce","@stdlib/blas-ext-base-dcusumors":"0Cf","@stdlib/blas/ext/base/dcusumpw":"0Cg","@stdlib/blas-ext-base-dcusumpw":"0Ch","@stdlib/blas/ext/base/dfill":"0Ci","@stdlib/blas-ext-base-dfill":"0Cj","@stdlib/blas/ext/base/dnanasum":"0Ck","@stdlib/blas-ext-base-dnanasum":"0Cl","@stdlib/blas/ext/base/dnanasumors":"0Cm","@stdlib/blas-ext-base-dnanasumors":"0Cn","@stdlib/blas/ext/base/dnannsum":"0Co","@stdlib/blas-ext-base-dnannsum":"0Cp","@stdlib/blas/ext/base/dnannsumkbn":"0Cq","@stdlib/blas-ext-base-dnannsumkbn":"0Cr","@stdlib/blas/ext/base/dnannsumkbn2":"0Cs","@stdlib/blas-ext-base-dnannsumkbn2":"0Ct","@stdlib/blas/ext/base/dnannsumors":"0Cu","@stdlib/blas-ext-base-dnannsumors":"0Cv","@stdlib/blas/ext/base/dnannsumpw":"0Cw","@stdlib/blas-ext-base-dnannsumpw":"0Cx","@stdlib/blas/ext/base/dnansum":"0Cy","@stdlib/blas-ext-base-dnansum":"0Cz","@stdlib/blas/ext/base/dnansumkbn":"0D0","@stdlib/blas-ext-base-dnansumkbn":"0D1","@stdlib/blas/ext/base/dnansumkbn2":"0D2","@stdlib/blas-ext-base-dnansumkbn2":"0D3","@stdlib/blas/ext/base/dnansumors":"0D4","@stdlib/blas-ext-base-dnansumors":"0D5","@stdlib/blas/ext/base/dnansumpw":"0D6","@stdlib/blas-ext-base-dnansumpw":"0D7","@stdlib/blas/ext/base/drev":"0D8","@stdlib/blas-ext-base-drev":"0D9","@stdlib/blas/ext/base/dsapxsum":"0DA","@stdlib/blas-ext-base-dsapxsum":"0DB","@stdlib/blas/ext/base/dsapxsumpw":"0DC","@stdlib/blas-ext-base-dsapxsumpw":"0DD","@stdlib/blas/ext/base/dsnannsumors":"0DE","@stdlib/blas-ext-base-dsnannsumors":"0DF","@stdlib/blas/ext/base/dsnansum":"0DG","@stdlib/blas-ext-base-dsnansum":"0DH","@stdlib/blas/ext/base/dsnansumors":"0DI","@stdlib/blas-ext-base-dsnansumors":"0DJ","@stdlib/blas/ext/base/dsnansumpw":"0DK","@stdlib/blas-ext-base-dsnansumpw":"0DL","@stdlib/blas/ext/base/dsort2hp":"0DM","@stdlib/blas-ext-base-dsort2hp":"0DN","@stdlib/blas/ext/base/dsort2ins":"0DO","@stdlib/blas-ext-base-dsort2ins":"0DP","@stdlib/blas/ext/base/dsort2sh":"0DQ","@stdlib/blas-ext-base-dsort2sh":"0DR","@stdlib/blas/ext/base/dsorthp":"0DS","@stdlib/blas-ext-base-dsorthp":"0DT","@stdlib/blas/ext/base/dsortins":"0DU","@stdlib/blas-ext-base-dsortins":"0DV","@stdlib/blas/ext/base/dsortsh":"0DW","@stdlib/blas-ext-base-dsortsh":"0DX","@stdlib/blas/ext/base/dssum":"0DY","@stdlib/blas-ext-base-dssum":"0DZ","@stdlib/blas/ext/base/dssumors":"0Da","@stdlib/blas-ext-base-dssumors":"0Db","@stdlib/blas/ext/base/dssumpw":"0Dc","@stdlib/blas-ext-base-dssumpw":"0Dd","@stdlib/blas/ext/base/dsum":"0De","@stdlib/blas-ext-base-dsum":"0Df","@stdlib/blas/ext/base/dsumkbn":"0Dg","@stdlib/blas-ext-base-dsumkbn":"0Dh","@stdlib/blas/ext/base/dsumkbn2":"0Di","@stdlib/blas-ext-base-dsumkbn2":"0Dj","@stdlib/blas/ext/base/dsumors":"0Dk","@stdlib/blas-ext-base-dsumors":"0Dl","@stdlib/blas/ext/base/dsumpw":"0Dm","@stdlib/blas-ext-base-dsumpw":"0Dn","@stdlib/blas/ext/base/gapx":"0Do","@stdlib/blas-ext-base-gapx":"0Dp","@stdlib/blas/ext/base/gapxsum":"0Dq","@stdlib/blas-ext-base-gapxsum":"0Dr","@stdlib/blas/ext/base/gapxsumkbn":"0Ds","@stdlib/blas-ext-base-gapxsumkbn":"0Dt","@stdlib/blas/ext/base/gapxsumkbn2":"0Du","@stdlib/blas-ext-base-gapxsumkbn2":"0Dv","@stdlib/blas/ext/base/gapxsumors":"0Dw","@stdlib/blas-ext-base-gapxsumors":"0Dx","@stdlib/blas/ext/base/gapxsumpw":"0Dy","@stdlib/blas-ext-base-gapxsumpw":"0Dz","@stdlib/blas/ext/base/gasumpw":"0E0","@stdlib/blas-ext-base-gasumpw":"0E1","@stdlib/blas/ext/base/gcusum":"0E2","@stdlib/blas-ext-base-gcusum":"0E3","@stdlib/blas/ext/base/gcusumkbn":"0E4","@stdlib/blas-ext-base-gcusumkbn":"0E5","@stdlib/blas/ext/base/gcusumkbn2":"0E6","@stdlib/blas-ext-base-gcusumkbn2":"0E7","@stdlib/blas/ext/base/gcusumors":"0E8","@stdlib/blas-ext-base-gcusumors":"0E9","@stdlib/blas/ext/base/gcusumpw":"0EA","@stdlib/blas-ext-base-gcusumpw":"0EB","@stdlib/blas/ext/base/gfill-by":"0EC","@stdlib/blas-ext-base-gfill-by":"0ED","@stdlib/blas/ext/base/gfill":"0EE","@stdlib/blas-ext-base-gfill":"0EF","@stdlib/blas/ext/base/gnannsumkbn":"0EG","@stdlib/blas-ext-base-gnannsumkbn":"0EH","@stdlib/blas/ext/base/gnansum":"0EI","@stdlib/blas-ext-base-gnansum":"0EJ","@stdlib/blas/ext/base/gnansumkbn":"0EK","@stdlib/blas-ext-base-gnansumkbn":"0EL","@stdlib/blas/ext/base/gnansumkbn2":"0EM","@stdlib/blas-ext-base-gnansumkbn2":"0EN","@stdlib/blas/ext/base/gnansumors":"0EO","@stdlib/blas-ext-base-gnansumors":"0EP","@stdlib/blas/ext/base/gnansumpw":"0EQ","@stdlib/blas-ext-base-gnansumpw":"0ER","@stdlib/blas/ext/base/grev":"0ES","@stdlib/blas-ext-base-grev":"0ET","@stdlib/blas/ext/base/gsort2hp":"0EU","@stdlib/blas-ext-base-gsort2hp":"0EV","@stdlib/blas/ext/base/gsort2ins":"0EW","@stdlib/blas-ext-base-gsort2ins":"0EX","@stdlib/blas/ext/base/gsort2sh":"0EY","@stdlib/blas-ext-base-gsort2sh":"0EZ","@stdlib/blas/ext/base/gsorthp":"0Ea","@stdlib/blas-ext-base-gsorthp":"0Eb","@stdlib/blas/ext/base/gsortins":"0Ec","@stdlib/blas-ext-base-gsortins":"0Ed","@stdlib/blas/ext/base/gsortsh":"0Ee","@stdlib/blas-ext-base-gsortsh":"0Ef","@stdlib/blas/ext/base/gsum":"0Eg","@stdlib/blas-ext-base-gsum":"0Eh","@stdlib/blas/ext/base/gsumkbn":"0Ei","@stdlib/blas-ext-base-gsumkbn":"0Ej","@stdlib/blas/ext/base/gsumkbn2":"0Ek","@stdlib/blas-ext-base-gsumkbn2":"0El","@stdlib/blas/ext/base/gsumors":"0Em","@stdlib/blas-ext-base-gsumors":"0En","@stdlib/blas/ext/base/gsumpw":"0Eo","@stdlib/blas-ext-base-gsumpw":"0Ep","@stdlib/blas/ext/base":"0Eq","@stdlib/blas-ext-base":"0Er","@stdlib/blas/ext/base/sapx":"0Es","@stdlib/blas-ext-base-sapx":"0Et","@stdlib/blas/ext/base/sapxsum":"0Eu","@stdlib/blas-ext-base-sapxsum":"0Ev","@stdlib/blas/ext/base/sapxsumkbn":"0Ew","@stdlib/blas-ext-base-sapxsumkbn":"0Ex","@stdlib/blas/ext/base/sapxsumkbn2":"0Ey","@stdlib/blas-ext-base-sapxsumkbn2":"0Ez","@stdlib/blas/ext/base/sapxsumors":"0F0","@stdlib/blas-ext-base-sapxsumors":"0F1","@stdlib/blas/ext/base/sapxsumpw":"0F2","@stdlib/blas-ext-base-sapxsumpw":"0F3","@stdlib/blas/ext/base/sasumpw":"0F4","@stdlib/blas-ext-base-sasumpw":"0F5","@stdlib/blas/ext/base/scusum":"0F6","@stdlib/blas-ext-base-scusum":"0F7","@stdlib/blas/ext/base/scusumkbn":"0F8","@stdlib/blas-ext-base-scusumkbn":"0F9","@stdlib/blas/ext/base/scusumkbn2":"0FA","@stdlib/blas-ext-base-scusumkbn2":"0FB","@stdlib/blas/ext/base/scusumors":"0FC","@stdlib/blas-ext-base-scusumors":"0FD","@stdlib/blas/ext/base/scusumpw":"0FE","@stdlib/blas-ext-base-scusumpw":"0FF","@stdlib/blas/ext/base/sdsapxsum":"0FG","@stdlib/blas-ext-base-sdsapxsum":"0FH","@stdlib/blas/ext/base/sdsapxsumpw":"0FI","@stdlib/blas-ext-base-sdsapxsumpw":"0FJ","@stdlib/blas/ext/base/sdsnansum":"0FK","@stdlib/blas-ext-base-sdsnansum":"0FL","@stdlib/blas/ext/base/sdsnansumpw":"0FM","@stdlib/blas-ext-base-sdsnansumpw":"0FN","@stdlib/blas/ext/base/sdssum":"0FO","@stdlib/blas-ext-base-sdssum":"0FP","@stdlib/blas/ext/base/sdssumpw":"0FQ","@stdlib/blas-ext-base-sdssumpw":"0FR","@stdlib/blas/ext/base/sfill":"0FS","@stdlib/blas-ext-base-sfill":"0FT","@stdlib/blas/ext/base/snansum":"0FU","@stdlib/blas-ext-base-snansum":"0FV","@stdlib/blas/ext/base/snansumkbn":"0FW","@stdlib/blas-ext-base-snansumkbn":"0FX","@stdlib/blas/ext/base/snansumkbn2":"0FY","@stdlib/blas-ext-base-snansumkbn2":"0FZ","@stdlib/blas/ext/base/snansumors":"0Fa","@stdlib/blas-ext-base-snansumors":"0Fb","@stdlib/blas/ext/base/snansumpw":"0Fc","@stdlib/blas-ext-base-snansumpw":"0Fd","@stdlib/blas/ext/base/srev":"0Fe","@stdlib/blas-ext-base-srev":"0Ff","@stdlib/blas/ext/base/ssort2hp":"0Fg","@stdlib/blas-ext-base-ssort2hp":"0Fh","@stdlib/blas/ext/base/ssort2ins":"0Fi","@stdlib/blas-ext-base-ssort2ins":"0Fj","@stdlib/blas/ext/base/ssort2sh":"0Fk","@stdlib/blas-ext-base-ssort2sh":"0Fl","@stdlib/blas/ext/base/ssorthp":"0Fm","@stdlib/blas-ext-base-ssorthp":"0Fn","@stdlib/blas/ext/base/ssortins":"0Fo","@stdlib/blas-ext-base-ssortins":"0Fp","@stdlib/blas/ext/base/ssortsh":"0Fq","@stdlib/blas-ext-base-ssortsh":"0Fr","@stdlib/blas/ext/base/ssum":"0Fs","@stdlib/blas-ext-base-ssum":"0Ft","@stdlib/blas/ext/base/ssumkbn":"0Fu","@stdlib/blas-ext-base-ssumkbn":"0Fv","@stdlib/blas/ext/base/ssumkbn2":"0Fw","@stdlib/blas-ext-base-ssumkbn2":"0Fx","@stdlib/blas/ext/base/ssumors":"0Fy","@stdlib/blas-ext-base-ssumors":"0Fz","@stdlib/blas/ext/base/ssumpw":"0G0","@stdlib/blas-ext-base-ssumpw":"0G1","@stdlib/blas/ext":"0G2","@stdlib/blas-ext":"0G3","@stdlib/blas/gdot":"0G4","@stdlib/blas-gdot":"0G5","@stdlib/blas/gswap":"0G6","@stdlib/blas-gswap":"0G7","@stdlib/blas":"0G9","@stdlib/blas/sdot":"0GA","@stdlib/blas-sdot":"0GB","@stdlib/blas/sswap":"0GC","@stdlib/blas-sswap":"0GD","@stdlib/buffer/alloc-unsafe":"0GE","@stdlib/buffer-alloc-unsafe":"0GF","@stdlib/buffer/ctor":"0GG","@stdlib/buffer-ctor":"0GH","@stdlib/buffer/from-array":"0GI","@stdlib/buffer-from-array":"0GJ","@stdlib/buffer/from-arraybuffer":"0GK","@stdlib/buffer-from-arraybuffer":"0GL","@stdlib/buffer/from-buffer":"0GM","@stdlib/buffer-from-buffer":"0GN","@stdlib/buffer/from-string":"0GO","@stdlib/buffer-from-string":"0GP","@stdlib/buffer":"0GR","@stdlib/buffer/reviver":"0GS","@stdlib/buffer-reviver":"0GT","@stdlib/buffer/to-json":"0GU","@stdlib/buffer-to-json":"0GV","@stdlib/cli/ctor":"0GW","@stdlib/cli-ctor":"0GX","@stdlib/cli":"0GZ","@stdlib/complex/base/wrap-function":"0Ga","@stdlib/complex-base-wrap-function":"0Gb","@stdlib/complex/cmplx":"0Gc","@stdlib/complex-cmplx":"0Gd","@stdlib/complex/conj":"0Ge","@stdlib/complex-conj":"0Gf","@stdlib/complex/conjf":"0Gg","@stdlib/complex-conjf":"0Gh","@stdlib/complex/ctors":"0Gi","@stdlib/complex-ctors":"0Gj","@stdlib/complex/dtype":"0Gk","@stdlib/complex-dtype":"0Gl","@stdlib/complex/dtypes":"0Gm","@stdlib/complex-dtypes":"0Gn","@stdlib/complex/float32/ctor":"0Go","@stdlib/complex-float32":"1ur","@stdlib/complex/float64/ctor":"0Gq","@stdlib/complex-float64":"1uz","@stdlib/complex/imag":"0Gs","@stdlib/complex-imag":"0Gt","@stdlib/complex/imagf":"0Gu","@stdlib/complex-imagf":"0Gv","@stdlib/complex":"0Gx","@stdlib/complex/promotion-rules":"0Gy","@stdlib/complex-promotion-rules":"0Gz","@stdlib/complex/real":"0H0","@stdlib/complex-real":"0H1","@stdlib/complex/realf":"0H2","@stdlib/complex-realf":"0H3","@stdlib/complex/reim":"0H4","@stdlib/complex-reim":"0H5","@stdlib/complex/reimf":"0H6","@stdlib/complex-reimf":"0H7","@stdlib/complex/float32/reviver":"0H8","@stdlib/complex-reviver-float32":"0H9","@stdlib/complex/float64/reviver":"0HA","@stdlib/complex-reviver-float64":"0HB","@stdlib/complex/reviver":"0HC","@stdlib/complex-reviver":"0HD","@stdlib/constants/array/max-array-length":"0HE","@stdlib/constants-array-max-array-length":"0HF","@stdlib/constants/array/max-typed-array-length":"0HG","@stdlib/constants-array-max-typed-array-length":"0HH","@stdlib/constants/array":"0HI","@stdlib/constants-array":"0HJ","@stdlib/constants/complex128/num-bytes":"0HK","@stdlib/constants-complex128-num-bytes":"0HL","@stdlib/constants/complex128":"0HM","@stdlib/constants-complex128":"0HN","@stdlib/constants/complex64/num-bytes":"0HO","@stdlib/constants-complex64-num-bytes":"0HP","@stdlib/constants/complex64":"0HQ","@stdlib/constants-complex64":"0HR","@stdlib/constants/float16/cbrt-eps":"0HS","@stdlib/constants-float16-cbrt-eps":"0HT","@stdlib/constants/float16/eps":"0HU","@stdlib/constants-float16-eps":"0HV","@stdlib/constants/float16/exponent-bias":"0HW","@stdlib/constants-float16-exponent-bias":"0HX","@stdlib/constants/float16/max-safe-integer":"0HY","@stdlib/constants-float16-max-safe-integer":"0HZ","@stdlib/constants/float16/max":"0Ha","@stdlib/constants-float16-max":"0Hb","@stdlib/constants/float16/min-safe-integer":"0Hc","@stdlib/constants-float16-min-safe-integer":"0Hd","@stdlib/constants/float16/ninf":"0He","@stdlib/constants-float16-ninf":"0Hf","@stdlib/constants/float16/num-bytes":"0Hg","@stdlib/constants-float16-num-bytes":"0Hh","@stdlib/constants/float16":"0Hi","@stdlib/constants-float16":"0Hj","@stdlib/constants/float16/pinf":"0Hk","@stdlib/constants-float16-pinf":"0Hl","@stdlib/constants/float16/precision":"0Hm","@stdlib/constants-float16-precision":"0Hn","@stdlib/constants/float16/smallest-normal":"0Ho","@stdlib/constants-float16-smallest-normal":"0Hp","@stdlib/constants/float16/smallest-subnormal":"0Hq","@stdlib/constants-float16-smallest-subnormal":"0Hr","@stdlib/constants/float16/sqrt-eps":"0Hs","@stdlib/constants-float16-sqrt-eps":"0Ht","@stdlib/constants/float32/cbrt-eps":"0Hu","@stdlib/constants-float32-cbrt-eps":"0Hv","@stdlib/constants/float32/eps":"0Hw","@stdlib/constants-float32-eps":"0Hx","@stdlib/constants/float32/exponent-bias":"0Hy","@stdlib/constants-float32-exponent-bias":"0Hz","@stdlib/constants/float32/max-safe-integer":"0I0","@stdlib/constants-float32-max-safe-integer":"0I1","@stdlib/constants/float32/max":"0I2","@stdlib/constants-float32-max":"0I3","@stdlib/constants/float32/min-safe-integer":"0I4","@stdlib/constants-float32-min-safe-integer":"0I5","@stdlib/constants/float32/ninf":"0I6","@stdlib/constants-float32-ninf":"0I7","@stdlib/constants/float32/num-bytes":"0I8","@stdlib/constants-float32-num-bytes":"0I9","@stdlib/constants/float32":"0IA","@stdlib/constants-float32":"0IB","@stdlib/constants/float32/pinf":"0IC","@stdlib/constants-float32-pinf":"0ID","@stdlib/constants/float32/precision":"0IE","@stdlib/constants-float32-precision":"0IF","@stdlib/constants/float32/smallest-normal":"0IG","@stdlib/constants-float32-smallest-normal":"0IH","@stdlib/constants/float32/smallest-subnormal":"0II","@stdlib/constants-float32-smallest-subnormal":"0IJ","@stdlib/constants/float32/sqrt-eps":"0IK","@stdlib/constants-float32-sqrt-eps":"0IL","@stdlib/constants/float64/apery":"0IM","@stdlib/constants-float64-apery":"0IN","@stdlib/constants/float64/catalan":"0IO","@stdlib/constants-float64-catalan":"0IP","@stdlib/constants/float64/cbrt-eps":"0IQ","@stdlib/constants-float64-cbrt-eps":"0IR","@stdlib/constants/float64/e":"0IS","@stdlib/constants-float64-e":"0IT","@stdlib/constants/float64/eps":"0IU","@stdlib/constants-float64-eps":"0IV","@stdlib/constants/float64/eulergamma":"0IW","@stdlib/constants-float64-eulergamma":"0IX","@stdlib/constants/float64/exponent-bias":"0IY","@stdlib/constants-float64-exponent-bias":"0IZ","@stdlib/constants/float64/fourth-pi":"0Ia","@stdlib/constants-float64-fourth-pi":"0Ib","@stdlib/constants/float64/fourth-root-eps":"0Ic","@stdlib/constants-float64-fourth-root-eps":"0Id","@stdlib/constants/float64/gamma-lanczos-g":"0Ie","@stdlib/constants-float64-gamma-lanczos-g":"0If","@stdlib/constants/float64/glaisher-kinkelin":"0Ig","@stdlib/constants-float64-glaisher-kinkelin":"0Ih","@stdlib/constants/float64/half-ln-two":"0Ii","@stdlib/constants-float64-half-ln-two":"0Ij","@stdlib/constants/float64/half-pi":"0Ik","@stdlib/constants-float64-half-pi":"0Il","@stdlib/constants/float64/high-word-exponent-mask":"0Im","@stdlib/constants-float64-high-word-exponent-mask":"0In","@stdlib/constants/float64/high-word-significand-mask":"0Io","@stdlib/constants-float64-high-word-significand-mask":"0Ip","@stdlib/constants/float64/ln-half":"0Iq","@stdlib/constants-float64-ln-half":"0Ir","@stdlib/constants/float64/ln-pi":"0Is","@stdlib/constants-float64-ln-pi":"0It","@stdlib/constants/float64/ln-sqrt-two-pi":"0Iu","@stdlib/constants-float64-ln-sqrt-two-pi":"0Iv","@stdlib/constants/float64/ln-ten":"0Iw","@stdlib/constants-float64-ln-ten":"0Ix","@stdlib/constants/float64/ln-two-pi":"0Iy","@stdlib/constants-float64-ln-two-pi":"0Iz","@stdlib/constants/float64/ln-two":"0J0","@stdlib/constants-float64-ln-two":"0J1","@stdlib/constants/float64/log10-e":"0J2","@stdlib/constants-float64-log10-e":"0J3","@stdlib/constants/float64/log2-e":"0J4","@stdlib/constants-float64-log2-e":"0J5","@stdlib/constants/float64/max-base10-exponent-subnormal":"0J6","@stdlib/constants-float64-max-base10-exponent-subnormal":"0J7","@stdlib/constants/float64/max-base10-exponent":"0J8","@stdlib/constants-float64-max-base10-exponent":"0J9","@stdlib/constants/float64/max-base2-exponent-subnormal":"0JA","@stdlib/constants-float64-max-base2-exponent-subnormal":"0JB","@stdlib/constants/float64/max-base2-exponent":"0JC","@stdlib/constants-float64-max-base2-exponent":"0JD","@stdlib/constants/float64/max-ln":"0JE","@stdlib/constants-float64-max-ln":"0JF","@stdlib/constants/float64/max-safe-fibonacci":"0JG","@stdlib/constants-float64-max-safe-fibonacci":"0JH","@stdlib/constants/float64/max-safe-integer":"0JI","@stdlib/constants-float64-max-safe-integer":"0JJ","@stdlib/constants/float64/max-safe-lucas":"0JK","@stdlib/constants-float64-max-safe-lucas":"0JL","@stdlib/constants/float64/max-safe-nth-fibonacci":"0JM","@stdlib/constants-float64-max-safe-nth-fibonacci":"0JN","@stdlib/constants/float64/max-safe-nth-lucas":"0JO","@stdlib/constants-float64-max-safe-nth-lucas":"0JP","@stdlib/constants/float64/max":"0JQ","@stdlib/constants-float64-max":"0JR","@stdlib/constants/float64/min-base10-exponent-subnormal":"0JS","@stdlib/constants-float64-min-base10-exponent-subnormal":"0JT","@stdlib/constants/float64/min-base10-exponent":"0JU","@stdlib/constants-float64-min-base10-exponent":"0JV","@stdlib/constants/float64/min-base2-exponent-subnormal":"0JW","@stdlib/constants-float64-min-base2-exponent-subnormal":"0JX","@stdlib/constants/float64/min-base2-exponent":"0JY","@stdlib/constants-float64-min-base2-exponent":"0JZ","@stdlib/constants/float64/min-ln":"0Ja","@stdlib/constants-float64-min-ln":"0Jb","@stdlib/constants/float64/min-safe-integer":"0Jc","@stdlib/constants-float64-min-safe-integer":"0Jd","@stdlib/constants/float64/ninf":"0Je","@stdlib/constants-float64-ninf":"0Jf","@stdlib/constants/float64/num-bytes":"0Jg","@stdlib/constants-float64-num-bytes":"0Jh","@stdlib/constants/float64":"0Ji","@stdlib/constants-float64":"0Jj","@stdlib/constants/float64/phi":"0Jk","@stdlib/constants-float64-phi":"0Jl","@stdlib/constants/float64/pi-squared":"0Jm","@stdlib/constants-float64-pi-squared":"0Jn","@stdlib/constants/float64/pi":"0Jo","@stdlib/constants-float64-pi":"0Jp","@stdlib/constants/float64/pinf":"0Jq","@stdlib/constants-float64-pinf":"0Jr","@stdlib/constants/float64/precision":"0Js","@stdlib/constants-float64-precision":"0Jt","@stdlib/constants/float64/smallest-normal":"0Ju","@stdlib/constants-float64-smallest-normal":"0Jv","@stdlib/constants/float64/smallest-subnormal":"0Jw","@stdlib/constants-float64-smallest-subnormal":"0Jx","@stdlib/constants/float64/sqrt-eps":"0Jy","@stdlib/constants-float64-sqrt-eps":"0Jz","@stdlib/constants/float64/sqrt-half-pi":"0K0","@stdlib/constants-float64-sqrt-half-pi":"0K1","@stdlib/constants/float64/sqrt-half":"0K2","@stdlib/constants-float64-sqrt-half":"0K3","@stdlib/constants/float64/sqrt-phi":"0K4","@stdlib/constants-float64-sqrt-phi":"0K5","@stdlib/constants/float64/sqrt-pi":"0K6","@stdlib/constants-float64-sqrt-pi":"0K7","@stdlib/constants/float64/sqrt-three":"0K8","@stdlib/constants-float64-sqrt-three":"0K9","@stdlib/constants/float64/sqrt-two-pi":"0KA","@stdlib/constants-float64-sqrt-two-pi":"0KB","@stdlib/constants/float64/sqrt-two":"0KC","@stdlib/constants-float64-sqrt-two":"0KD","@stdlib/constants/float64/two-pi":"0KE","@stdlib/constants-float64-two-pi":"0KF","@stdlib/constants/int16/max":"0KG","@stdlib/constants-int16-max":"0KH","@stdlib/constants/int16/min":"0KI","@stdlib/constants-int16-min":"0KJ","@stdlib/constants/int16/num-bytes":"0KK","@stdlib/constants-int16-num-bytes":"0KL","@stdlib/constants/int16":"0KM","@stdlib/constants-int16":"0KN","@stdlib/constants/int32/max":"0KO","@stdlib/constants-int32-max":"0KP","@stdlib/constants/int32/min":"0KQ","@stdlib/constants-int32-min":"0KR","@stdlib/constants/int32/num-bytes":"0KS","@stdlib/constants-int32-num-bytes":"0KT","@stdlib/constants/int32":"0KU","@stdlib/constants-int32":"0KV","@stdlib/constants/int8/max":"0KW","@stdlib/constants-int8-max":"0KX","@stdlib/constants/int8/min":"0KY","@stdlib/constants-int8-min":"0KZ","@stdlib/constants/int8/num-bytes":"0Ka","@stdlib/constants-int8-num-bytes":"0Kb","@stdlib/constants/int8":"0Kc","@stdlib/constants-int8":"0Kd","@stdlib/constants":"0Kf","@stdlib/constants/path/delimiter-posix":"0Kg","@stdlib/constants-path-delimiter-posix":"0Kh","@stdlib/constants/path/delimiter-win32":"0Ki","@stdlib/constants-path-delimiter-win32":"0Kj","@stdlib/constants/path/delimiter":"0Kk","@stdlib/constants-path-delimiter":"0Kl","@stdlib/constants/path":"0Km","@stdlib/constants-path":"0Kn","@stdlib/constants/path/sep-posix":"0Ko","@stdlib/constants-path-sep-posix":"0Kp","@stdlib/constants/path/sep-win32":"0Kq","@stdlib/constants-path-sep-win32":"0Kr","@stdlib/constants/path/sep":"0Ks","@stdlib/constants-path-sep":"0Kt","@stdlib/constants/time/hours-in-day":"0Ku","@stdlib/constants-time-hours-in-day":"0Kv","@stdlib/constants/time/hours-in-week":"0Kw","@stdlib/constants-time-hours-in-week":"0Kx","@stdlib/constants/time/milliseconds-in-day":"0Ky","@stdlib/constants-time-milliseconds-in-day":"0Kz","@stdlib/constants/time/milliseconds-in-hour":"0L0","@stdlib/constants-time-milliseconds-in-hour":"0L1","@stdlib/constants/time/milliseconds-in-minute":"0L2","@stdlib/constants-time-milliseconds-in-minute":"0L3","@stdlib/constants/time/milliseconds-in-second":"0L4","@stdlib/constants-time-milliseconds-in-second":"0L5","@stdlib/constants/time/milliseconds-in-week":"0L6","@stdlib/constants-time-milliseconds-in-week":"0L7","@stdlib/constants/time/minutes-in-day":"0L8","@stdlib/constants-time-minutes-in-day":"0L9","@stdlib/constants/time/minutes-in-hour":"0LA","@stdlib/constants-time-minutes-in-hour":"0LB","@stdlib/constants/time/minutes-in-week":"0LC","@stdlib/constants-time-minutes-in-week":"0LD","@stdlib/constants/time/months-in-year":"0LE","@stdlib/constants-time-months-in-year":"0LF","@stdlib/constants/time":"0LG","@stdlib/constants-time":"0LH","@stdlib/constants/time/seconds-in-day":"0LI","@stdlib/constants-time-seconds-in-day":"0LJ","@stdlib/constants/time/seconds-in-hour":"0LK","@stdlib/constants-time-seconds-in-hour":"0LL","@stdlib/constants/time/seconds-in-minute":"0LM","@stdlib/constants-time-seconds-in-minute":"0LN","@stdlib/constants/time/seconds-in-week":"0LO","@stdlib/constants-time-seconds-in-week":"0LP","@stdlib/constants/uint16/max":"0LQ","@stdlib/constants-uint16-max":"0LR","@stdlib/constants/uint16/num-bytes":"0LS","@stdlib/constants-uint16-num-bytes":"0LT","@stdlib/constants/uint16":"0LU","@stdlib/constants-uint16":"0LV","@stdlib/constants/uint32/max":"0LW","@stdlib/constants-uint32-max":"0LX","@stdlib/constants/uint32/num-bytes":"0LY","@stdlib/constants-uint32-num-bytes":"0LZ","@stdlib/constants/uint32":"0La","@stdlib/constants-uint32":"0Lb","@stdlib/constants/uint8/max":"0Lc","@stdlib/constants-uint8-max":"0Ld","@stdlib/constants/uint8/num-bytes":"0Le","@stdlib/constants-uint8-num-bytes":"0Lf","@stdlib/constants/uint8":"0Lg","@stdlib/constants-uint8":"0Lh","@stdlib/constants/unicode/max-bmp":"0Li","@stdlib/constants-unicode-max-bmp":"0Lj","@stdlib/constants/unicode/max":"0Lk","@stdlib/constants-unicode-max":"0Ll","@stdlib/constants/unicode":"0Lm","@stdlib/constants-unicode":"0Ln","@stdlib/datasets/afinn-111":"0Lo","@stdlib/datasets-afinn-111":"0Lp","@stdlib/datasets/afinn-96":"0Lq","@stdlib/datasets-afinn-96":"0Lr","@stdlib/datasets/anscombes-quartet":"0Ls","@stdlib/datasets-anscombes-quartet":"0Lt","@stdlib/datasets/berndt-cps-wages-1985":"0Lu","@stdlib/datasets-berndt-cps-wages-1985":"0Lv","@stdlib/datasets/cdc-nchs-us-births-1969-1988":"0Lw","@stdlib/datasets-cdc-nchs-us-births-1969-1988":"0Lx","@stdlib/datasets/cdc-nchs-us-births-1994-2003":"0Ly","@stdlib/datasets-cdc-nchs-us-births-1994-2003":"0Lz","@stdlib/datasets/cdc-nchs-us-infant-mortality-bw-1915-2013":"0M0","@stdlib/datasets-cdc-nchs-us-infant-mortality-bw-1915-2013":"0M1","@stdlib/datasets/cmudict":"0M2","@stdlib/datasets-cmudict":"0M3","@stdlib/datasets/dale-chall-new":"0M4","@stdlib/datasets-dale-chall-new":"0M5","@stdlib/datasets/emoji-code-picto":"0M6","@stdlib/datasets-emoji-code-picto":"0M7","@stdlib/datasets/emoji-picto-code":"0M8","@stdlib/datasets-emoji-picto-code":"0M9","@stdlib/datasets/emoji":"0MA","@stdlib/datasets-emoji":"0MB","@stdlib/datasets/female-first-names-en":"0MC","@stdlib/datasets-female-first-names-en":"0MD","@stdlib/datasets/fivethirtyeight-ffq":"0ME","@stdlib/datasets-fivethirtyeight-ffq":"0MF","@stdlib/datasets/frb-sf-wage-rigidity":"0MG","@stdlib/datasets-frb-sf-wage-rigidity":"0MH","@stdlib/datasets/harrison-boston-house-prices-corrected":"0MI","@stdlib/datasets-harrison-boston-house-prices-corrected":"0MJ","@stdlib/datasets/harrison-boston-house-prices":"0MK","@stdlib/datasets-harrison-boston-house-prices":"0ML","@stdlib/datasets/herndon-venus-semidiameters":"0MM","@stdlib/datasets-herndon-venus-semidiameters":"0MN","@stdlib/datasets/img-acanthus-mollis":"0MO","@stdlib/datasets-img-acanthus-mollis":"0MP","@stdlib/datasets/img-airplane-from-above":"0MQ","@stdlib/datasets-img-airplane-from-above":"0MR","@stdlib/datasets/img-allium-oreophilum":"0MS","@stdlib/datasets-img-allium-oreophilum":"0MT","@stdlib/datasets/img-black-canyon":"0MU","@stdlib/datasets-img-black-canyon":"0MV","@stdlib/datasets/img-dust-bowl-home":"0MW","@stdlib/datasets-img-dust-bowl-home":"0MX","@stdlib/datasets/img-french-alpine-landscape":"0MY","@stdlib/datasets-img-french-alpine-landscape":"0MZ","@stdlib/datasets/img-locomotion-house-cat":"0Ma","@stdlib/datasets-img-locomotion-house-cat":"0Mb","@stdlib/datasets/img-locomotion-nude-male":"0Mc","@stdlib/datasets-img-locomotion-nude-male":"0Md","@stdlib/datasets/img-march-pastoral":"0Me","@stdlib/datasets-img-march-pastoral":"0Mf","@stdlib/datasets/img-nagasaki-boats":"0Mg","@stdlib/datasets-img-nagasaki-boats":"0Mh","@stdlib/datasets/liu-negative-opinion-words-en":"0Mi","@stdlib/datasets-liu-negative-opinion-words-en":"0Mj","@stdlib/datasets/liu-positive-opinion-words-en":"0Mk","@stdlib/datasets-liu-positive-opinion-words-en":"0Ml","@stdlib/datasets/male-first-names-en":"0Mm","@stdlib/datasets-male-first-names-en":"0Mn","@stdlib/datasets/minard-napoleons-march":"0Mo","@stdlib/datasets-minard-napoleons-march":"0Mp","@stdlib/datasets/moby-dick":"0Mq","@stdlib/datasets-moby-dick":"0Mr","@stdlib/datasets/month-names-en":"0Ms","@stdlib/datasets-month-names-en":"0Mt","@stdlib/datasets/nightingales-rose":"0Mu","@stdlib/datasets-nightingales-rose":"0Mv","@stdlib/datasets/pace-boston-house-prices":"0Mw","@stdlib/datasets-pace-boston-house-prices":"0Mx","@stdlib/datasets":"0Mz","@stdlib/datasets/primes-100k":"0N0","@stdlib/datasets-primes-100k":"0N1","@stdlib/datasets/savoy-stopwords-fin":"0N2","@stdlib/datasets-savoy-stopwords-fin":"0N3","@stdlib/datasets/savoy-stopwords-fr":"0N4","@stdlib/datasets-savoy-stopwords-fr":"0N5","@stdlib/datasets/savoy-stopwords-ger":"0N6","@stdlib/datasets-savoy-stopwords-ger":"0N7","@stdlib/datasets/savoy-stopwords-it":"0N8","@stdlib/datasets-savoy-stopwords-it":"0N9","@stdlib/datasets/savoy-stopwords-por":"0NA","@stdlib/datasets-savoy-stopwords-por":"0NB","@stdlib/datasets/savoy-stopwords-sp":"0NC","@stdlib/datasets-savoy-stopwords-sp":"0ND","@stdlib/datasets/savoy-stopwords-swe":"0NE","@stdlib/datasets-savoy-stopwords-swe":"0NF","@stdlib/datasets/sotu":"0NG","@stdlib/datasets-sotu":"0NH","@stdlib/datasets/spache-revised":"0NI","@stdlib/datasets-spache-revised":"0NJ","@stdlib/datasets/spam-assassin":"0NK","@stdlib/datasets-spam-assassin":"0NL","@stdlib/datasets/ssa-us-births-2000-2014":"0NM","@stdlib/datasets-ssa-us-births-2000-2014":"0NN","@stdlib/datasets/standard-card-deck":"0NO","@stdlib/datasets-standard-card-deck":"0NP","@stdlib/datasets/stopwords-en":"0NQ","@stdlib/datasets-stopwords-en":"0NR","@stdlib/datasets/suthaharan-multi-hop-sensor-network":"0NS","@stdlib/datasets-suthaharan-multi-hop-sensor-network":"0NT","@stdlib/datasets/suthaharan-single-hop-sensor-network":"0NU","@stdlib/datasets-suthaharan-single-hop-sensor-network":"0NV","@stdlib/datasets/us-states-abbr":"0NW","@stdlib/datasets-us-states-abbr":"0NX","@stdlib/datasets/us-states-capitals-names":"0NY","@stdlib/datasets-us-states-capitals-names":"0NZ","@stdlib/datasets/us-states-capitals":"0Na","@stdlib/datasets-us-states-capitals":"0Nb","@stdlib/datasets/us-states-names-capitals":"0Nc","@stdlib/datasets-us-states-names-capitals":"0Nd","@stdlib/datasets/us-states-names":"0Ne","@stdlib/datasets-us-states-names":"0Nf","@stdlib/error":"0Nh","@stdlib/error/reviver":"0Ni","@stdlib/error-reviver":"0Nj","@stdlib/error/to-json":"0Nk","@stdlib/error-to-json":"0Nl","@stdlib/error/tools/database":"0Nm","@stdlib/error-tools-database":"0Nn","@stdlib/error/tools/fmtprodmsg-factory":"0No","@stdlib/error-tools-fmtprodmsg-factory":"0Np","@stdlib/error/tools/fmtprodmsg":"0Nq","@stdlib/error-tools-fmtprodmsg":"0Nr","@stdlib/error/tools/id2msg":"0Ns","@stdlib/error-tools-id2msg":"0Nt","@stdlib/error/tools/id2pkg":"0Nu","@stdlib/error-tools-id2pkg":"0Nv","@stdlib/error/tools/msg2id":"0Nw","@stdlib/error-tools-msg2id":"0Nx","@stdlib/error/tools":"0Ny","@stdlib/error-tools":"0Nz","@stdlib/error/tools/pkg2id":"0O0","@stdlib/error-tools-pkg2id":"0O1","@stdlib/fs/close":"0O2","@stdlib/fs-close":"0O3","@stdlib/fs/exists":"0O4","@stdlib/fs-exists":"0O5","@stdlib/fs/open":"0O6","@stdlib/fs-open":"0O7","@stdlib/fs":"0O9","@stdlib/fs/read-dir":"0OA","@stdlib/fs-read-dir":"0OB","@stdlib/fs/read-file-list":"0OC","@stdlib/fs-read-file-list":"0OD","@stdlib/fs/read-file":"0OE","@stdlib/fs-read-file":"0OF","@stdlib/fs/read-json":"0OG","@stdlib/fs-read-json":"0OH","@stdlib/fs/read-wasm":"0OI","@stdlib/fs-read-wasm":"0OJ","@stdlib/fs/rename":"0OK","@stdlib/fs-rename":"0OL","@stdlib/fs/resolve-parent-path-by":"0OM","@stdlib/fs-resolve-parent-path-by":"0ON","@stdlib/fs/resolve-parent-path":"0OO","@stdlib/fs-resolve-parent-path":"0OP","@stdlib/fs/unlink":"0OQ","@stdlib/fs-unlink":"0OR","@stdlib/fs/write-file":"0OS","@stdlib/fs-write-file":"0OT","@stdlib/iter/advance":"0OU","@stdlib/iter-advance":"0OV","@stdlib/iter/any-by":"0OW","@stdlib/iter-any-by":"0OX","@stdlib/iter/any":"0OY","@stdlib/iter-any":"0OZ","@stdlib/iter/concat":"0Oa","@stdlib/iter-concat":"0Ob","@stdlib/iter/constant":"0Oc","@stdlib/iter-constant":"0Od","@stdlib/iter/counter":"0Oe","@stdlib/iter-counter":"0Of","@stdlib/iter/datespace":"0Og","@stdlib/iter-datespace":"0Oh","@stdlib/iter/dedupe-by":"0Oi","@stdlib/iter-dedupe-by":"0Oj","@stdlib/iter/dedupe":"0Ok","@stdlib/iter-dedupe":"0Ol","@stdlib/iter/empty":"0Om","@stdlib/iter-empty":"0On","@stdlib/iter/every-by":"0Oo","@stdlib/iter-every-by":"0Op","@stdlib/iter/every":"0Oq","@stdlib/iter-every":"0Or","@stdlib/iter/fill":"0Os","@stdlib/iter-fill":"0Ot","@stdlib/iter/filter-map":"0Ou","@stdlib/iter-filter-map":"0Ov","@stdlib/iter/filter":"0Ow","@stdlib/iter-filter":"0Ox","@stdlib/iter/first":"0Oy","@stdlib/iter-first":"0Oz","@stdlib/iter/flow":"0P0","@stdlib/iter-flow":"0P1","@stdlib/iter/for-each":"0P2","@stdlib/iter-for-each":"0P3","@stdlib/iter/head":"0P4","@stdlib/iter-head":"0P5","@stdlib/iter/incrspace":"0P6","@stdlib/iter-incrspace":"0P7","@stdlib/iter/intersection-by-hash":"0P8","@stdlib/iter-intersection-by-hash":"0P9","@stdlib/iter/intersection":"0PA","@stdlib/iter-intersection":"0PB","@stdlib/iter/last":"0PC","@stdlib/iter-last":"0PD","@stdlib/iter/length":"0PE","@stdlib/iter-length":"0PF","@stdlib/iter/linspace":"0PG","@stdlib/iter-linspace":"0PH","@stdlib/iter/logspace":"0PI","@stdlib/iter-logspace":"0PJ","@stdlib/iter/map":"0PK","@stdlib/iter-map":"0PL","@stdlib/iter/mapn":"0PM","@stdlib/iter-mapn":"0PN","@stdlib/iter/none-by":"0PO","@stdlib/iter-none-by":"0PP","@stdlib/iter/none":"0PQ","@stdlib/iter-none":"0PR","@stdlib/iter/nth":"0PS","@stdlib/iter-nth":"0PT","@stdlib/iter":"0PV","@stdlib/iter/pipeline-thunk":"0PW","@stdlib/iter-pipeline-thunk":"0PX","@stdlib/iter/pipeline":"0PY","@stdlib/iter-pipeline":"0PZ","@stdlib/iter/pop":"0Pa","@stdlib/iter-pop":"0Pb","@stdlib/iter/push":"0Pc","@stdlib/iter-push":"0Pd","@stdlib/iter/reject":"0Pe","@stdlib/iter-reject":"0Pf","@stdlib/iter/replicate-by":"0Pg","@stdlib/iter-replicate-by":"0Ph","@stdlib/iter/replicate":"0Pi","@stdlib/iter-replicate":"0Pj","@stdlib/iter/shift":"0Pk","@stdlib/iter-shift":"0Pl","@stdlib/iter/slice":"0Pm","@stdlib/iter-slice":"0Pn","@stdlib/iter/some-by":"0Po","@stdlib/iter-some-by":"0Pp","@stdlib/iter/some":"0Pq","@stdlib/iter-some":"0Pr","@stdlib/iter/step":"0Ps","@stdlib/iter-step":"0Pt","@stdlib/iter/strided-by":"0Pu","@stdlib/iter-strided-by":"0Pv","@stdlib/iter/strided":"0Pw","@stdlib/iter-strided":"0Px","@stdlib/iter/to-array-view-right":"0Py","@stdlib/iter-to-array-view-right":"0Pz","@stdlib/iter/to-array-view":"0Q0","@stdlib/iter-to-array-view":"0Q1","@stdlib/iter/union":"0Q2","@stdlib/iter-union":"0Q3","@stdlib/iter/unique-by-hash":"0Q4","@stdlib/iter-unique-by-hash":"0Q5","@stdlib/iter/unique-by":"0Q6","@stdlib/iter-unique-by":"0Q7","@stdlib/iter/unique":"0Q8","@stdlib/iter-unique":"0Q9","@stdlib/iter/unitspace":"0QA","@stdlib/iter-unitspace":"0QB","@stdlib/iter/unshift":"0QC","@stdlib/iter-unshift":"0QD","@stdlib/math/base/assert/int32-is-even":"0QE","@stdlib/math-base-assert-int32-is-even":"0QF","@stdlib/math/base/assert/int32-is-odd":"0QG","@stdlib/math-base-assert-int32-is-odd":"0QH","@stdlib/math/base/assert/is-composite":"0QI","@stdlib/math-base-assert-is-composite":"0QJ","@stdlib/math/base/assert/is-coprime":"0QK","@stdlib/math-base-assert-is-coprime":"0QL","@stdlib/math/base/assert/is-even":"0QM","@stdlib/math-base-assert-is-even":"0QN","@stdlib/math/base/assert/is-finite":"0QO","@stdlib/math-base-assert-is-finite":"0QP","@stdlib/math/base/assert/is-finitef":"0QQ","@stdlib/math-base-assert-is-finitef":"0QR","@stdlib/math/base/assert/is-infinite":"0QS","@stdlib/math-base-assert-is-infinite":"0QT","@stdlib/math/base/assert/is-infinitef":"0QU","@stdlib/math-base-assert-is-infinitef":"0QV","@stdlib/math/base/assert/is-integer":"0QW","@stdlib/math-base-assert-is-integer":"0QX","@stdlib/math/base/assert/is-nan":"0QY","@stdlib/math-base-assert-is-nan":"0QZ","@stdlib/math/base/assert/is-nanf":"0Qa","@stdlib/math-base-assert-is-nanf":"0Qb","@stdlib/math/base/assert/is-negative-integer":"0Qc","@stdlib/math-base-assert-is-negative-integer":"0Qd","@stdlib/math/base/assert/is-negative-zero":"0Qe","@stdlib/math-base-assert-is-negative-zero":"0Qf","@stdlib/math/base/assert/is-negative-zerof":"0Qg","@stdlib/math-base-assert-is-negative-zerof":"0Qh","@stdlib/math/base/assert/is-nonnegative-integer":"0Qi","@stdlib/math-base-assert-is-nonnegative-integer":"0Qj","@stdlib/math/base/assert/is-nonpositive-integer":"0Qk","@stdlib/math-base-assert-is-nonpositive-integer":"0Ql","@stdlib/math/base/assert/is-odd":"0Qm","@stdlib/math-base-assert-is-odd":"0Qn","@stdlib/math/base/assert/is-positive-integer":"0Qo","@stdlib/math-base-assert-is-positive-integer":"0Qp","@stdlib/math/base/assert/is-positive-zero":"0Qq","@stdlib/math-base-assert-is-positive-zero":"0Qr","@stdlib/math/base/assert/is-positive-zerof":"0Qs","@stdlib/math-base-assert-is-positive-zerof":"0Qt","@stdlib/math/base/assert/is-prime":"0Qu","@stdlib/math-base-assert-is-prime":"0Qv","@stdlib/math/base/assert/is-probability":"0Qw","@stdlib/math-base-assert-is-probability":"0Qx","@stdlib/math/base/assert/is-safe-integer":"0Qy","@stdlib/math-base-assert-is-safe-integer":"0Qz","@stdlib/math/base/assert":"0R0","@stdlib/math-base-assert":"0R1","@stdlib/math/base/assert/uint32-is-pow2":"0R2","@stdlib/math-base-assert-uint32-is-pow2":"0R3","@stdlib/math/base/napi/binary":"0R4","@stdlib/math-base-napi-binary":"0R5","@stdlib/math/base/napi":"0R6","@stdlib/math-base-napi":"0R7","@stdlib/math/base/napi/ternary":"0R8","@stdlib/math-base-napi-ternary":"0R9","@stdlib/math/base/napi/unary":"0RA","@stdlib/math-base-napi-unary":"0RB","@stdlib/math/base/ops/add":"0RC","@stdlib/math-base-ops-add":"0RD","@stdlib/math/base/ops/addf":"0RE","@stdlib/math-base-ops-addf":"0RF","@stdlib/math/base/ops/cadd":"0RG","@stdlib/math-base-ops-cadd":"0RH","@stdlib/math/base/ops/caddf":"0RI","@stdlib/math-base-ops-caddf":"0RJ","@stdlib/math/base/ops/cdiv":"0RK","@stdlib/math-base-ops-cdiv":"0RL","@stdlib/math/base/ops/cmul":"0RM","@stdlib/math-base-ops-cmul":"0RN","@stdlib/math/base/ops/cmulf":"0RO","@stdlib/math-base-ops-cmulf":"0RP","@stdlib/math/base/ops/cneg":"0RQ","@stdlib/math-base-ops-cneg":"0RR","@stdlib/math/base/ops/csub":"0RS","@stdlib/math-base-ops-csub":"0RT","@stdlib/math/base/ops/csubf":"0RU","@stdlib/math-base-ops-csubf":"0RV","@stdlib/math/base/ops/imul":"0RW","@stdlib/math-base-ops-imul":"0RX","@stdlib/math/base/ops/imuldw":"0RY","@stdlib/math-base-ops-imuldw":"0RZ","@stdlib/math/base/ops/mul":"0Ra","@stdlib/math-base-ops-mul":"0Rb","@stdlib/math/base/ops/mulf":"0Rc","@stdlib/math-base-ops-mulf":"0Rd","@stdlib/math/base/ops":"0Re","@stdlib/math-base-ops":"0Rf","@stdlib/math/base/ops/sub":"0Rg","@stdlib/math-base-ops-sub":"0Rh","@stdlib/math/base/ops/subf":"0Ri","@stdlib/math-base-ops-subf":"0Rj","@stdlib/math/base/ops/umul":"0Rk","@stdlib/math-base-ops-umul":"0Rl","@stdlib/math/base/ops/umuldw":"0Rm","@stdlib/math-base-ops-umuldw":"0Rn","@stdlib/math/base":"0Ro","@stdlib/math-base":"0Rp","@stdlib/math/base/special/abs":"0Rq","@stdlib/math-base-special-abs":"0Rr","@stdlib/math/base/special/abs2":"0Rs","@stdlib/math-base-special-abs2":"0Rt","@stdlib/math/base/special/abs2f":"0Ru","@stdlib/math-base-special-abs2f":"0Rv","@stdlib/math/base/special/absf":"0Rw","@stdlib/math-base-special-absf":"0Rx","@stdlib/math/base/special/acos":"0Ry","@stdlib/math-base-special-acos":"0Rz","@stdlib/math/base/special/acosh":"0S0","@stdlib/math-base-special-acosh":"0S1","@stdlib/math/base/special/acot":"0S2","@stdlib/math-base-special-acot":"0S3","@stdlib/math/base/special/acoth":"0S4","@stdlib/math-base-special-acoth":"0S5","@stdlib/math/base/special/acovercos":"0S6","@stdlib/math-base-special-acovercos":"0S7","@stdlib/math/base/special/acoversin":"0S8","@stdlib/math-base-special-acoversin":"0S9","@stdlib/math/base/special/acsc":"0SA","@stdlib/math-base-special-acsc":"0SB","@stdlib/math/base/special/acsch":"0SC","@stdlib/math-base-special-acsch":"0SD","@stdlib/math/base/special/ahavercos":"0SE","@stdlib/math-base-special-ahavercos":"0SF","@stdlib/math/base/special/ahaversin":"0SG","@stdlib/math-base-special-ahaversin":"0SH","@stdlib/math/base/special/asech":"0SI","@stdlib/math-base-special-asech":"0SJ","@stdlib/math/base/special/asin":"0SK","@stdlib/math-base-special-asin":"0SL","@stdlib/math/base/special/asinh":"0SM","@stdlib/math-base-special-asinh":"0SN","@stdlib/math/base/special/atan":"0SO","@stdlib/math-base-special-atan":"0SP","@stdlib/math/base/special/atan2":"0SQ","@stdlib/math-base-special-atan2":"0SR","@stdlib/math/base/special/atanh":"0SS","@stdlib/math-base-special-atanh":"0ST","@stdlib/math/base/special/avercos":"0SU","@stdlib/math-base-special-avercos":"0SV","@stdlib/math/base/special/aversin":"0SW","@stdlib/math-base-special-aversin":"0SX","@stdlib/math/base/special/bernoulli":"0SY","@stdlib/math-base-special-bernoulli":"0SZ","@stdlib/math/base/special/besselj0":"0Sa","@stdlib/math-base-special-besselj0":"0Sb","@stdlib/math/base/special/besselj1":"0Sc","@stdlib/math-base-special-besselj1":"0Sd","@stdlib/math/base/special/bessely0":"0Se","@stdlib/math-base-special-bessely0":"0Sf","@stdlib/math/base/special/bessely1":"0Sg","@stdlib/math-base-special-bessely1":"0Sh","@stdlib/math/base/special/beta":"0Si","@stdlib/math-base-special-beta":"0Sj","@stdlib/math/base/special/betainc":"0Sk","@stdlib/math-base-special-betainc":"0Sl","@stdlib/math/base/special/betaincinv":"0Sm","@stdlib/math-base-special-betaincinv":"0Sn","@stdlib/math/base/special/betaln":"0So","@stdlib/math-base-special-betaln":"0Sp","@stdlib/math/base/special/binet":"0Sq","@stdlib/math-base-special-binet":"0Sr","@stdlib/math/base/special/binomcoef":"0Ss","@stdlib/math-base-special-binomcoef":"0St","@stdlib/math/base/special/binomcoefln":"0Su","@stdlib/math-base-special-binomcoefln":"0Sv","@stdlib/math/base/special/boxcox":"0Sw","@stdlib/math-base-special-boxcox":"0Sx","@stdlib/math/base/special/boxcox1p":"0Sy","@stdlib/math-base-special-boxcox1p":"0Sz","@stdlib/math/base/special/boxcox1pinv":"0T0","@stdlib/math-base-special-boxcox1pinv":"0T1","@stdlib/math/base/special/boxcoxinv":"0T2","@stdlib/math-base-special-boxcoxinv":"0T3","@stdlib/math/base/special/cabs":"0T4","@stdlib/math-base-special-cabs":"0T5","@stdlib/math/base/special/cabs2":"0T6","@stdlib/math-base-special-cabs2":"0T7","@stdlib/math/base/special/cabs2f":"0T8","@stdlib/math-base-special-cabs2f":"0T9","@stdlib/math/base/special/cabsf":"0TA","@stdlib/math-base-special-cabsf":"0TB","@stdlib/math/base/special/cbrt":"0TC","@stdlib/math-base-special-cbrt":"0TD","@stdlib/math/base/special/cbrtf":"0TE","@stdlib/math-base-special-cbrtf":"0TF","@stdlib/math/base/special/cceil":"0TG","@stdlib/math-base-special-cceil":"0TH","@stdlib/math/base/special/cceilf":"0TI","@stdlib/math-base-special-cceilf":"0TJ","@stdlib/math/base/special/cceiln":"0TK","@stdlib/math-base-special-cceiln":"0TL","@stdlib/math/base/special/ccis":"0TM","@stdlib/math-base-special-ccis":"0TN","@stdlib/math/base/special/ceil":"0TO","@stdlib/math-base-special-ceil":"0TP","@stdlib/math/base/special/ceil10":"0TQ","@stdlib/math-base-special-ceil10":"0TR","@stdlib/math/base/special/ceil2":"0TS","@stdlib/math-base-special-ceil2":"0TT","@stdlib/math/base/special/ceilb":"0TU","@stdlib/math-base-special-ceilb":"0TV","@stdlib/math/base/special/ceilf":"0TW","@stdlib/math-base-special-ceilf":"0TX","@stdlib/math/base/special/ceiln":"0TY","@stdlib/math-base-special-ceiln":"0TZ","@stdlib/math/base/special/ceilsd":"0Ta","@stdlib/math-base-special-ceilsd":"0Tb","@stdlib/math/base/special/cexp":"0Tc","@stdlib/math-base-special-cexp":"0Td","@stdlib/math/base/special/cflipsign":"0Te","@stdlib/math-base-special-cflipsign":"0Tf","@stdlib/math/base/special/cflipsignf":"0Tg","@stdlib/math-base-special-cflipsignf":"0Th","@stdlib/math/base/special/cfloor":"0Ti","@stdlib/math-base-special-cfloor":"0Tj","@stdlib/math/base/special/cfloorn":"0Tk","@stdlib/math-base-special-cfloorn":"0Tl","@stdlib/math/base/special/cidentity":"0Tm","@stdlib/math-base-special-cidentity":"0Tn","@stdlib/math/base/special/cidentityf":"0To","@stdlib/math-base-special-cidentityf":"0Tp","@stdlib/math/base/special/cinv":"0Tq","@stdlib/math-base-special-cinv":"0Tr","@stdlib/math/base/special/clamp":"0Ts","@stdlib/math-base-special-clamp":"0Tt","@stdlib/math/base/special/clampf":"0Tu","@stdlib/math-base-special-clampf":"0Tv","@stdlib/math/base/special/copysign":"0Tw","@stdlib/math-base-special-copysign":"0Tx","@stdlib/math/base/special/copysignf":"0Ty","@stdlib/math-base-special-copysignf":"0Tz","@stdlib/math/base/special/cos":"0U0","@stdlib/math-base-special-cos":"0U1","@stdlib/math/base/special/cosh":"0U2","@stdlib/math-base-special-cosh":"0U3","@stdlib/math/base/special/cosm1":"0U4","@stdlib/math-base-special-cosm1":"0U5","@stdlib/math/base/special/cospi":"0U6","@stdlib/math-base-special-cospi":"0U7","@stdlib/math/base/special/cot":"0U8","@stdlib/math-base-special-cot":"0U9","@stdlib/math/base/special/coth":"0UA","@stdlib/math-base-special-coth":"0UB","@stdlib/math/base/special/covercos":"0UC","@stdlib/math-base-special-covercos":"0UD","@stdlib/math/base/special/coversin":"0UE","@stdlib/math-base-special-coversin":"0UF","@stdlib/math/base/special/cphase":"0UG","@stdlib/math-base-special-cphase":"0UH","@stdlib/math/base/special/cpolar":"0UI","@stdlib/math-base-special-cpolar":"0UJ","@stdlib/math/base/special/cround":"0UK","@stdlib/math-base-special-cround":"0UL","@stdlib/math/base/special/croundn":"0UM","@stdlib/math-base-special-croundn":"0UN","@stdlib/math/base/special/csch":"0UO","@stdlib/math-base-special-csch":"0UP","@stdlib/math/base/special/csignum":"0UQ","@stdlib/math-base-special-csignum":"0UR","@stdlib/math/base/special/deg2rad":"0US","@stdlib/math-base-special-deg2rad":"0UT","@stdlib/math/base/special/deg2radf":"0UU","@stdlib/math-base-special-deg2radf":"0UV","@stdlib/math/base/special/digamma":"0UW","@stdlib/math-base-special-digamma":"0UX","@stdlib/math/base/special/dirac-delta":"0UY","@stdlib/math-base-special-dirac-delta":"0UZ","@stdlib/math/base/special/dirichlet-eta":"0Ua","@stdlib/math-base-special-dirichlet-eta":"0Ub","@stdlib/math/base/special/ellipe":"0Uc","@stdlib/math-base-special-ellipe":"0Ud","@stdlib/math/base/special/ellipk":"0Ue","@stdlib/math-base-special-ellipk":"0Uf","@stdlib/math/base/special/erf":"0Ug","@stdlib/math-base-special-erf":"0Uh","@stdlib/math/base/special/erfc":"0Ui","@stdlib/math-base-special-erfc":"0Uj","@stdlib/math/base/special/erfcinv":"0Uk","@stdlib/math-base-special-erfcinv":"0Ul","@stdlib/math/base/special/erfinv":"0Um","@stdlib/math-base-special-erfinv":"0Un","@stdlib/math/base/special/exp":"0Uo","@stdlib/math-base-special-exp":"0Up","@stdlib/math/base/special/exp10":"0Uq","@stdlib/math-base-special-exp10":"0Ur","@stdlib/math/base/special/exp2":"0Us","@stdlib/math-base-special-exp2":"0Ut","@stdlib/math/base/special/expit":"0Uu","@stdlib/math-base-special-expit":"0Uv","@stdlib/math/base/special/expm1":"0Uw","@stdlib/math-base-special-expm1":"0Ux","@stdlib/math/base/special/expm1rel":"0Uy","@stdlib/math-base-special-expm1rel":"0Uz","@stdlib/math/base/special/factorial":"0V0","@stdlib/math-base-special-factorial":"0V1","@stdlib/math/base/special/factorialln":"0V2","@stdlib/math-base-special-factorialln":"0V3","@stdlib/math/base/special/falling-factorial":"0V4","@stdlib/math-base-special-falling-factorial":"0V5","@stdlib/math/base/special/fast/abs":"0V6","@stdlib/math-base-special-fast-abs":"0V7","@stdlib/math/base/special/fast/acosh":"0V8","@stdlib/math-base-special-fast-acosh":"0V9","@stdlib/math/base/special/fast/alpha-max-plus-beta-min":"0VA","@stdlib/math-base-special-fast-alpha-max-plus-beta-min":"0VB","@stdlib/math/base/special/fast/asinh":"0VC","@stdlib/math-base-special-fast-asinh":"0VD","@stdlib/math/base/special/fast/atanh":"0VE","@stdlib/math-base-special-fast-atanh":"0VF","@stdlib/math/base/special/fast/hypot":"0VG","@stdlib/math-base-special-fast-hypot":"0VH","@stdlib/math/base/special/fast/max":"0VI","@stdlib/math-base-special-fast-max":"0VJ","@stdlib/math/base/special/fast/min":"0VK","@stdlib/math-base-special-fast-min":"0VL","@stdlib/math/base/special/fast":"0VM","@stdlib/math-base-special-fast":"0VN","@stdlib/math/base/special/fast/pow-int":"0VO","@stdlib/math-base-special-fast-pow-int":"0VP","@stdlib/math/base/special/fast/uint32-log2":"0VQ","@stdlib/math-base-special-fast-uint32-log2":"0VR","@stdlib/math/base/special/fast/uint32-sqrt":"0VS","@stdlib/math-base-special-fast-uint32-sqrt":"0VT","@stdlib/math/base/special/fibonacci-index":"0VU","@stdlib/math-base-special-fibonacci-index":"0VV","@stdlib/math/base/special/fibonacci":"0VW","@stdlib/math-base-special-fibonacci":"0VX","@stdlib/math/base/special/flipsign":"0VY","@stdlib/math-base-special-flipsign":"0VZ","@stdlib/math/base/special/flipsignf":"0Va","@stdlib/math-base-special-flipsignf":"0Vb","@stdlib/math/base/special/floor":"0Vc","@stdlib/math-base-special-floor":"0Vd","@stdlib/math/base/special/floor10":"0Ve","@stdlib/math-base-special-floor10":"0Vf","@stdlib/math/base/special/floor2":"0Vg","@stdlib/math-base-special-floor2":"0Vh","@stdlib/math/base/special/floorb":"0Vi","@stdlib/math-base-special-floorb":"0Vj","@stdlib/math/base/special/floorf":"0Vk","@stdlib/math-base-special-floorf":"0Vl","@stdlib/math/base/special/floorn":"0Vm","@stdlib/math-base-special-floorn":"0Vn","@stdlib/math/base/special/floorsd":"0Vo","@stdlib/math-base-special-floorsd":"0Vp","@stdlib/math/base/special/fresnel":"0Vq","@stdlib/math-base-special-fresnel":"0Vr","@stdlib/math/base/special/fresnelc":"0Vs","@stdlib/math-base-special-fresnelc":"0Vt","@stdlib/math/base/special/fresnels":"0Vu","@stdlib/math-base-special-fresnels":"0Vv","@stdlib/math/base/special/frexp":"0Vw","@stdlib/math-base-special-frexp":"0Vx","@stdlib/math/base/special/gamma-delta-ratio":"0Vy","@stdlib/math-base-special-gamma-delta-ratio":"0Vz","@stdlib/math/base/special/gamma-lanczos-sum-expg-scaled":"0W0","@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled":"0W1","@stdlib/math/base/special/gamma-lanczos-sum":"0W2","@stdlib/math-base-special-gamma-lanczos-sum":"0W3","@stdlib/math/base/special/gamma":"0W4","@stdlib/math-base-special-gamma":"0W5","@stdlib/math/base/special/gamma1pm1":"0W6","@stdlib/math-base-special-gamma1pm1":"0W7","@stdlib/math/base/special/gammainc":"0W8","@stdlib/math-base-special-gammainc":"0W9","@stdlib/math/base/special/gammaincinv":"0WA","@stdlib/math-base-special-gammaincinv":"0WB","@stdlib/math/base/special/gammaln":"0WC","@stdlib/math-base-special-gammaln":"0WD","@stdlib/math/base/special/gcd":"0WE","@stdlib/math-base-special-gcd":"0WF","@stdlib/math/base/special/hacovercos":"0WG","@stdlib/math-base-special-hacovercos":"0WH","@stdlib/math/base/special/hacoversin":"0WI","@stdlib/math-base-special-hacoversin":"0WJ","@stdlib/math/base/special/havercos":"0WK","@stdlib/math-base-special-havercos":"0WL","@stdlib/math/base/special/haversin":"0WM","@stdlib/math-base-special-haversin":"0WN","@stdlib/math/base/special/heaviside":"0WO","@stdlib/math-base-special-heaviside":"0WP","@stdlib/math/base/special/hypot":"0WQ","@stdlib/math-base-special-hypot":"0WR","@stdlib/math/base/special/hypotf":"0WS","@stdlib/math-base-special-hypotf":"0WT","@stdlib/math/base/special/identity":"0WU","@stdlib/math-base-special-identity":"0WV","@stdlib/math/base/special/identityf":"0WW","@stdlib/math-base-special-identityf":"0WX","@stdlib/math/base/special/inv":"0WY","@stdlib/math-base-special-inv":"0WZ","@stdlib/math/base/special/invf":"0Wa","@stdlib/math-base-special-invf":"0Wb","@stdlib/math/base/special/kernel-betainc":"0Wc","@stdlib/math-base-special-kernel-betainc":"0Wd","@stdlib/math/base/special/kernel-betaincinv":"0We","@stdlib/math-base-special-kernel-betaincinv":"0Wf","@stdlib/math/base/special/kernel-cos":"0Wg","@stdlib/math-base-special-kernel-cos":"0Wh","@stdlib/math/base/special/kernel-sin":"0Wi","@stdlib/math-base-special-kernel-sin":"0Wj","@stdlib/math/base/special/kernel-tan":"0Wk","@stdlib/math-base-special-kernel-tan":"0Wl","@stdlib/math/base/special/kronecker-delta":"0Wm","@stdlib/math-base-special-kronecker-delta":"0Wn","@stdlib/math/base/special/kronecker-deltaf":"0Wo","@stdlib/math-base-special-kronecker-deltaf":"0Wp","@stdlib/math/base/special/labs":"0Wq","@stdlib/math-base-special-labs":"0Wr","@stdlib/math/base/special/lcm":"0Ws","@stdlib/math-base-special-lcm":"0Wt","@stdlib/math/base/special/ldexp":"0Wu","@stdlib/math-base-special-ldexp":"0Wv","@stdlib/math/base/special/ln":"0Ww","@stdlib/math-base-special-ln":"0Wx","@stdlib/math/base/special/log":"0Wy","@stdlib/math-base-special-log":"0Wz","@stdlib/math/base/special/log10":"0X0","@stdlib/math-base-special-log10":"0X1","@stdlib/math/base/special/log1mexp":"0X2","@stdlib/math-base-special-log1mexp":"0X3","@stdlib/math/base/special/log1p":"0X4","@stdlib/math-base-special-log1p":"0X5","@stdlib/math/base/special/log1pexp":"0X6","@stdlib/math-base-special-log1pexp":"0X7","@stdlib/math/base/special/log2":"0X8","@stdlib/math-base-special-log2":"0X9","@stdlib/math/base/special/logaddexp":"0XA","@stdlib/math-base-special-logaddexp":"0XB","@stdlib/math/base/special/logit":"0XC","@stdlib/math-base-special-logit":"0XD","@stdlib/math/base/special/lucas":"0XE","@stdlib/math-base-special-lucas":"0XF","@stdlib/math/base/special/max":"0XG","@stdlib/math-base-special-max":"0XH","@stdlib/math/base/special/maxabs":"0XI","@stdlib/math-base-special-maxabs":"0XJ","@stdlib/math/base/special/min":"0XK","@stdlib/math-base-special-min":"0XL","@stdlib/math/base/special/minabs":"0XM","@stdlib/math-base-special-minabs":"0XN","@stdlib/math/base/special/minmax":"0XO","@stdlib/math-base-special-minmax":"0XP","@stdlib/math/base/special/minmaxabs":"0XQ","@stdlib/math-base-special-minmaxabs":"0XR","@stdlib/math/base/special/modf":"0XS","@stdlib/math-base-special-modf":"0XT","@stdlib/math/base/special/negafibonacci":"0XU","@stdlib/math-base-special-negafibonacci":"0XV","@stdlib/math/base/special/negalucas":"0XW","@stdlib/math-base-special-negalucas":"0XX","@stdlib/math/base/special/nonfibonacci":"0XY","@stdlib/math-base-special-nonfibonacci":"0XZ","@stdlib/math/base/special":"0Xa","@stdlib/math-base-special":"0Xb","@stdlib/math/base/special/pdiff":"0Xc","@stdlib/math-base-special-pdiff":"0Xd","@stdlib/math/base/special/pdifff":"0Xe","@stdlib/math-base-special-pdifff":"0Xf","@stdlib/math/base/special/polygamma":"0Xg","@stdlib/math-base-special-polygamma":"0Xh","@stdlib/math/base/special/pow":"0Xi","@stdlib/math-base-special-pow":"0Xj","@stdlib/math/base/special/powm1":"0Xk","@stdlib/math-base-special-powm1":"0Xl","@stdlib/math/base/special/rad2deg":"0Xm","@stdlib/math-base-special-rad2deg":"0Xn","@stdlib/math/base/special/ramp":"0Xo","@stdlib/math-base-special-ramp":"0Xp","@stdlib/math/base/special/rampf":"0Xq","@stdlib/math-base-special-rampf":"0Xr","@stdlib/math/base/special/rempio2":"0Xs","@stdlib/math-base-special-rempio2":"0Xt","@stdlib/math/base/special/riemann-zeta":"0Xu","@stdlib/math-base-special-riemann-zeta":"0Xv","@stdlib/math/base/special/rising-factorial":"0Xw","@stdlib/math-base-special-rising-factorial":"0Xx","@stdlib/math/base/special/round":"0Xy","@stdlib/math-base-special-round":"0Xz","@stdlib/math/base/special/round10":"0Y0","@stdlib/math-base-special-round10":"0Y1","@stdlib/math/base/special/round2":"0Y2","@stdlib/math-base-special-round2":"0Y3","@stdlib/math/base/special/roundb":"0Y4","@stdlib/math-base-special-roundb":"0Y5","@stdlib/math/base/special/roundn":"0Y6","@stdlib/math-base-special-roundn":"0Y7","@stdlib/math/base/special/roundsd":"0Y8","@stdlib/math-base-special-roundsd":"0Y9","@stdlib/math/base/special/rsqrt":"0YA","@stdlib/math-base-special-rsqrt":"0YB","@stdlib/math/base/special/rsqrtf":"0YC","@stdlib/math-base-special-rsqrtf":"0YD","@stdlib/math/base/special/sici":"0YE","@stdlib/math-base-special-sici":"0YF","@stdlib/math/base/special/signum":"0YG","@stdlib/math-base-special-signum":"0YH","@stdlib/math/base/special/signumf":"0YI","@stdlib/math-base-special-signumf":"0YJ","@stdlib/math/base/special/sin":"0YK","@stdlib/math-base-special-sin":"0YL","@stdlib/math/base/special/sinc":"0YM","@stdlib/math-base-special-sinc":"0YN","@stdlib/math/base/special/sincos":"0YO","@stdlib/math-base-special-sincos":"0YP","@stdlib/math/base/special/sincospi":"0YQ","@stdlib/math-base-special-sincospi":"0YR","@stdlib/math/base/special/sinh":"0YS","@stdlib/math-base-special-sinh":"0YT","@stdlib/math/base/special/sinpi":"0YU","@stdlib/math-base-special-sinpi":"0YV","@stdlib/math/base/special/spence":"0YW","@stdlib/math-base-special-spence":"0YX","@stdlib/math/base/special/sqrt":"0YY","@stdlib/math-base-special-sqrt":"0YZ","@stdlib/math/base/special/sqrt1pm1":"0Ya","@stdlib/math-base-special-sqrt1pm1":"0Yb","@stdlib/math/base/special/sqrtf":"0Yc","@stdlib/math-base-special-sqrtf":"0Yd","@stdlib/math/base/special/tan":"0Ye","@stdlib/math-base-special-tan":"0Yf","@stdlib/math/base/special/tanh":"0Yg","@stdlib/math-base-special-tanh":"0Yh","@stdlib/math/base/special/tribonacci":"0Yi","@stdlib/math-base-special-tribonacci":"0Yj","@stdlib/math/base/special/trigamma":"0Yk","@stdlib/math-base-special-trigamma":"0Yl","@stdlib/math/base/special/trunc":"0Ym","@stdlib/math-base-special-trunc":"0Yn","@stdlib/math/base/special/trunc10":"0Yo","@stdlib/math-base-special-trunc10":"0Yp","@stdlib/math/base/special/trunc2":"0Yq","@stdlib/math-base-special-trunc2":"0Yr","@stdlib/math/base/special/truncb":"0Ys","@stdlib/math-base-special-truncb":"0Yt","@stdlib/math/base/special/truncf":"0Yu","@stdlib/math-base-special-truncf":"0Yv","@stdlib/math/base/special/truncn":"0Yw","@stdlib/math-base-special-truncn":"0Yx","@stdlib/math/base/special/truncsd":"0Yy","@stdlib/math-base-special-truncsd":"0Yz","@stdlib/math/base/special/vercos":"0Z0","@stdlib/math-base-special-vercos":"0Z1","@stdlib/math/base/special/versin":"0Z2","@stdlib/math-base-special-versin":"0Z3","@stdlib/math/base/special/wrap":"0Z4","@stdlib/math-base-special-wrap":"0Z5","@stdlib/math/base/special/xlog1py":"0Z6","@stdlib/math-base-special-xlog1py":"0Z7","@stdlib/math/base/special/xlogy":"0Z8","@stdlib/math-base-special-xlogy":"0Z9","@stdlib/math/base/tools/continued-fraction":"0ZA","@stdlib/math-base-tools-continued-fraction":"0ZB","@stdlib/math/base/tools/evalpoly-compile":"0ZC","@stdlib/math-base-tools-evalpoly-compile":"0ZD","@stdlib/math/base/tools/evalpoly":"0ZE","@stdlib/math-base-tools-evalpoly":"0ZF","@stdlib/math/base/tools/evalrational-compile":"0ZG","@stdlib/math-base-tools-evalrational-compile":"0ZH","@stdlib/math/base/tools/evalrational":"0ZI","@stdlib/math-base-tools-evalrational":"0ZJ","@stdlib/math/base/tools/fibpoly":"0ZK","@stdlib/math-base-tools-fibpoly":"0ZL","@stdlib/math/base/tools/hermitepoly":"0ZM","@stdlib/math-base-tools-hermitepoly":"0ZN","@stdlib/math/base/tools/lucaspoly":"0ZO","@stdlib/math-base-tools-lucaspoly":"0ZP","@stdlib/math/base/tools/normhermitepoly":"0ZQ","@stdlib/math-base-tools-normhermitepoly":"0ZR","@stdlib/math/base/tools":"0ZS","@stdlib/math-base-tools":"0ZT","@stdlib/math/base/tools/sum-series":"0ZU","@stdlib/math-base-tools-sum-series":"0ZV","@stdlib/math/base/utils/absolute-difference":"0ZW","@stdlib/math-base-utils-absolute-difference":"0ZX","@stdlib/math/base/utils/float64-epsilon-difference":"0ZY","@stdlib/math-base-utils-float64-epsilon-difference":"0ZZ","@stdlib/math/base/utils":"0Za","@stdlib/math-base-utils":"0Zb","@stdlib/math/base/utils/relative-difference":"0Zc","@stdlib/math-base-utils-relative-difference":"0Zd","@stdlib/math/iter/ops/add":"0Ze","@stdlib/math-iter-ops-add":"0Zf","@stdlib/math/iter/ops/divide":"0Zg","@stdlib/math-iter-ops-divide":"0Zh","@stdlib/math/iter/ops/mod":"0Zi","@stdlib/math-iter-ops-mod":"0Zj","@stdlib/math/iter/ops/multiply":"0Zk","@stdlib/math-iter-ops-multiply":"0Zl","@stdlib/math/iter/ops":"0Zm","@stdlib/math-iter-ops":"0Zn","@stdlib/math/iter/ops/subtract":"0Zo","@stdlib/math-iter-ops-subtract":"0Zp","@stdlib/math/iter":"0Zq","@stdlib/math-iter":"0Zr","@stdlib/math/iter/sequences/composites":"0Zs","@stdlib/math-iter-sequences-composites":"0Zt","@stdlib/math/iter/sequences/continued-fraction":"0Zu","@stdlib/math-iter-sequences-continued-fraction":"0Zv","@stdlib/math/iter/sequences/cubes":"0Zw","@stdlib/math-iter-sequences-cubes":"0Zx","@stdlib/math/iter/sequences/even-integers":"0Zy","@stdlib/math-iter-sequences-even-integers":"0Zz","@stdlib/math/iter/sequences/factorials":"0a0","@stdlib/math-iter-sequences-factorials":"0a1","@stdlib/math/iter/sequences/fibonacci":"0a2","@stdlib/math-iter-sequences-fibonacci":"0a3","@stdlib/math/iter/sequences/fifth-powers":"0a4","@stdlib/math-iter-sequences-fifth-powers":"0a5","@stdlib/math/iter/sequences/fourth-powers":"0a6","@stdlib/math-iter-sequences-fourth-powers":"0a7","@stdlib/math/iter/sequences/integers":"0a8","@stdlib/math-iter-sequences-integers":"0a9","@stdlib/math/iter/sequences/lucas":"0aA","@stdlib/math-iter-sequences-lucas":"0aB","@stdlib/math/iter/sequences/negafibonacci":"0aC","@stdlib/math-iter-sequences-negafibonacci":"0aD","@stdlib/math/iter/sequences/negalucas":"0aE","@stdlib/math-iter-sequences-negalucas":"0aF","@stdlib/math/iter/sequences/negative-even-integers":"0aG","@stdlib/math-iter-sequences-negative-even-integers":"0aH","@stdlib/math/iter/sequences/negative-integers":"0aI","@stdlib/math-iter-sequences-negative-integers":"0aJ","@stdlib/math/iter/sequences/negative-odd-integers":"0aK","@stdlib/math-iter-sequences-negative-odd-integers":"0aL","@stdlib/math/iter/sequences/nonfibonacci":"0aM","@stdlib/math-iter-sequences-nonfibonacci":"0aN","@stdlib/math/iter/sequences/nonnegative-even-integers":"0aO","@stdlib/math-iter-sequences-nonnegative-even-integers":"0aP","@stdlib/math/iter/sequences/nonnegative-integers":"0aQ","@stdlib/math-iter-sequences-nonnegative-integers":"0aR","@stdlib/math/iter/sequences/nonpositive-even-integers":"0aS","@stdlib/math-iter-sequences-nonpositive-even-integers":"0aT","@stdlib/math/iter/sequences/nonpositive-integers":"0aU","@stdlib/math-iter-sequences-nonpositive-integers":"0aV","@stdlib/math/iter/sequences/nonsquares":"0aW","@stdlib/math-iter-sequences-nonsquares":"0aX","@stdlib/math/iter/sequences/odd-integers":"0aY","@stdlib/math-iter-sequences-odd-integers":"0aZ","@stdlib/math/iter/sequences":"0aa","@stdlib/math-iter-sequences":"0ab","@stdlib/math/iter/sequences/positive-even-integers":"0ac","@stdlib/math-iter-sequences-positive-even-integers":"0ad","@stdlib/math/iter/sequences/positive-integers":"0ae","@stdlib/math-iter-sequences-positive-integers":"0af","@stdlib/math/iter/sequences/positive-odd-integers":"0ag","@stdlib/math-iter-sequences-positive-odd-integers":"0ah","@stdlib/math/iter/sequences/primes":"0ai","@stdlib/math-iter-sequences-primes":"0aj","@stdlib/math/iter/sequences/squared-triangular":"0ak","@stdlib/math-iter-sequences-squared-triangular":"0al","@stdlib/math/iter/sequences/squares":"0am","@stdlib/math-iter-sequences-squares":"0an","@stdlib/math/iter/sequences/triangular":"0ao","@stdlib/math-iter-sequences-triangular":"0ap","@stdlib/math/iter/special/abs":"0aq","@stdlib/math-iter-special-abs":"0ar","@stdlib/math/iter/special/abs2":"0as","@stdlib/math-iter-special-abs2":"0at","@stdlib/math/iter/special/acos":"0au","@stdlib/math-iter-special-acos":"0av","@stdlib/math/iter/special/acosh":"0aw","@stdlib/math-iter-special-acosh":"0ax","@stdlib/math/iter/special/acot":"0ay","@stdlib/math-iter-special-acot":"0az","@stdlib/math/iter/special/acoth":"0b0","@stdlib/math-iter-special-acoth":"0b1","@stdlib/math/iter/special/acovercos":"0b2","@stdlib/math-iter-special-acovercos":"0b3","@stdlib/math/iter/special/acoversin":"0b4","@stdlib/math-iter-special-acoversin":"0b5","@stdlib/math/iter/special/ahavercos":"0b6","@stdlib/math-iter-special-ahavercos":"0b7","@stdlib/math/iter/special/ahaversin":"0b8","@stdlib/math-iter-special-ahaversin":"0b9","@stdlib/math/iter/special/asin":"0bA","@stdlib/math-iter-special-asin":"0bB","@stdlib/math/iter/special/asinh":"0bC","@stdlib/math-iter-special-asinh":"0bD","@stdlib/math/iter/special/atan":"0bE","@stdlib/math-iter-special-atan":"0bF","@stdlib/math/iter/special/atan2":"0bG","@stdlib/math-iter-special-atan2":"0bH","@stdlib/math/iter/special/atanh":"0bI","@stdlib/math-iter-special-atanh":"0bJ","@stdlib/math/iter/special/avercos":"0bK","@stdlib/math-iter-special-avercos":"0bL","@stdlib/math/iter/special/aversin":"0bM","@stdlib/math-iter-special-aversin":"0bN","@stdlib/math/iter/special/besselj0":"0bO","@stdlib/math-iter-special-besselj0":"0bP","@stdlib/math/iter/special/besselj1":"0bQ","@stdlib/math-iter-special-besselj1":"0bR","@stdlib/math/iter/special/bessely0":"0bS","@stdlib/math-iter-special-bessely0":"0bT","@stdlib/math/iter/special/bessely1":"0bU","@stdlib/math-iter-special-bessely1":"0bV","@stdlib/math/iter/special/beta":"0bW","@stdlib/math-iter-special-beta":"0bX","@stdlib/math/iter/special/betaln":"0bY","@stdlib/math-iter-special-betaln":"0bZ","@stdlib/math/iter/special/binet":"0ba","@stdlib/math-iter-special-binet":"0bb","@stdlib/math/iter/special/cbrt":"0bc","@stdlib/math-iter-special-cbrt":"0bd","@stdlib/math/iter/special/ceil":"0be","@stdlib/math-iter-special-ceil":"0bf","@stdlib/math/iter/special/ceil10":"0bg","@stdlib/math-iter-special-ceil10":"0bh","@stdlib/math/iter/special/ceil2":"0bi","@stdlib/math-iter-special-ceil2":"0bj","@stdlib/math/iter/special/cos":"0bk","@stdlib/math-iter-special-cos":"0bl","@stdlib/math/iter/special/cosh":"0bm","@stdlib/math-iter-special-cosh":"0bn","@stdlib/math/iter/special/cosm1":"0bo","@stdlib/math-iter-special-cosm1":"0bp","@stdlib/math/iter/special/cospi":"0bq","@stdlib/math-iter-special-cospi":"0br","@stdlib/math/iter/special/covercos":"0bs","@stdlib/math-iter-special-covercos":"0bt","@stdlib/math/iter/special/coversin":"0bu","@stdlib/math-iter-special-coversin":"0bv","@stdlib/math/iter/special/deg2rad":"0bw","@stdlib/math-iter-special-deg2rad":"0bx","@stdlib/math/iter/special/digamma":"0by","@stdlib/math-iter-special-digamma":"0bz","@stdlib/math/iter/special/dirac-delta":"0c0","@stdlib/math-iter-special-dirac-delta":"0c1","@stdlib/math/iter/special/dirichlet-eta":"0c2","@stdlib/math-iter-special-dirichlet-eta":"0c3","@stdlib/math/iter/special/ellipe":"0c4","@stdlib/math-iter-special-ellipe":"0c5","@stdlib/math/iter/special/ellipk":"0c6","@stdlib/math-iter-special-ellipk":"0c7","@stdlib/math/iter/special/erf":"0c8","@stdlib/math-iter-special-erf":"0c9","@stdlib/math/iter/special/erfc":"0cA","@stdlib/math-iter-special-erfc":"0cB","@stdlib/math/iter/special/erfcinv":"0cC","@stdlib/math-iter-special-erfcinv":"0cD","@stdlib/math/iter/special/erfinv":"0cE","@stdlib/math-iter-special-erfinv":"0cF","@stdlib/math/iter/special/exp":"0cG","@stdlib/math-iter-special-exp":"0cH","@stdlib/math/iter/special/exp10":"0cI","@stdlib/math-iter-special-exp10":"0cJ","@stdlib/math/iter/special/exp2":"0cK","@stdlib/math-iter-special-exp2":"0cL","@stdlib/math/iter/special/expit":"0cM","@stdlib/math-iter-special-expit":"0cN","@stdlib/math/iter/special/expm1":"0cO","@stdlib/math-iter-special-expm1":"0cP","@stdlib/math/iter/special/expm1rel":"0cQ","@stdlib/math-iter-special-expm1rel":"0cR","@stdlib/math/iter/special/factorial":"0cS","@stdlib/math-iter-special-factorial":"0cT","@stdlib/math/iter/special/factorialln":"0cU","@stdlib/math-iter-special-factorialln":"0cV","@stdlib/math/iter/special/floor":"0cW","@stdlib/math-iter-special-floor":"0cX","@stdlib/math/iter/special/floor10":"0cY","@stdlib/math-iter-special-floor10":"0cZ","@stdlib/math/iter/special/floor2":"0ca","@stdlib/math-iter-special-floor2":"0cb","@stdlib/math/iter/special/fresnelc":"0cc","@stdlib/math-iter-special-fresnelc":"0cd","@stdlib/math/iter/special/fresnels":"0ce","@stdlib/math-iter-special-fresnels":"0cf","@stdlib/math/iter/special/gamma":"0cg","@stdlib/math-iter-special-gamma":"0ch","@stdlib/math/iter/special/gamma1pm1":"0ci","@stdlib/math-iter-special-gamma1pm1":"0cj","@stdlib/math/iter/special/gammaln":"0ck","@stdlib/math-iter-special-gammaln":"0cl","@stdlib/math/iter/special/hacovercos":"0cm","@stdlib/math-iter-special-hacovercos":"0cn","@stdlib/math/iter/special/hacoversin":"0co","@stdlib/math-iter-special-hacoversin":"0cp","@stdlib/math/iter/special/havercos":"0cq","@stdlib/math-iter-special-havercos":"0cr","@stdlib/math/iter/special/haversin":"0cs","@stdlib/math-iter-special-haversin":"0ct","@stdlib/math/iter/special/inv":"0cu","@stdlib/math-iter-special-inv":"0cv","@stdlib/math/iter/special/ln":"0cw","@stdlib/math-iter-special-ln":"0cx","@stdlib/math/iter/special/log":"0cy","@stdlib/math-iter-special-log":"0cz","@stdlib/math/iter/special/log10":"0d0","@stdlib/math-iter-special-log10":"0d1","@stdlib/math/iter/special/log1mexp":"0d2","@stdlib/math-iter-special-log1mexp":"0d3","@stdlib/math/iter/special/log1p":"0d4","@stdlib/math-iter-special-log1p":"0d5","@stdlib/math/iter/special/log1pexp":"0d6","@stdlib/math-iter-special-log1pexp":"0d7","@stdlib/math/iter/special/log2":"0d8","@stdlib/math-iter-special-log2":"0d9","@stdlib/math/iter/special/logit":"0dA","@stdlib/math-iter-special-logit":"0dB","@stdlib/math/iter/special":"0dC","@stdlib/math-iter-special":"0dD","@stdlib/math/iter/special/pow":"0dE","@stdlib/math-iter-special-pow":"0dF","@stdlib/math/iter/special/rad2deg":"0dG","@stdlib/math-iter-special-rad2deg":"0dH","@stdlib/math/iter/special/ramp":"0dI","@stdlib/math-iter-special-ramp":"0dJ","@stdlib/math/iter/special/riemann-zeta":"0dK","@stdlib/math-iter-special-riemann-zeta":"0dL","@stdlib/math/iter/special/round":"0dM","@stdlib/math-iter-special-round":"0dN","@stdlib/math/iter/special/round10":"0dO","@stdlib/math-iter-special-round10":"0dP","@stdlib/math/iter/special/round2":"0dQ","@stdlib/math-iter-special-round2":"0dR","@stdlib/math/iter/special/rsqrt":"0dS","@stdlib/math-iter-special-rsqrt":"0dT","@stdlib/math/iter/special/signum":"0dU","@stdlib/math-iter-special-signum":"0dV","@stdlib/math/iter/special/sin":"0dW","@stdlib/math-iter-special-sin":"0dX","@stdlib/math/iter/special/sinc":"0dY","@stdlib/math-iter-special-sinc":"0dZ","@stdlib/math/iter/special/sinh":"0da","@stdlib/math-iter-special-sinh":"0db","@stdlib/math/iter/special/sinpi":"0dc","@stdlib/math-iter-special-sinpi":"0dd","@stdlib/math/iter/special/spence":"0de","@stdlib/math-iter-special-spence":"0df","@stdlib/math/iter/special/sqrt":"0dg","@stdlib/math-iter-special-sqrt":"0dh","@stdlib/math/iter/special/sqrt1pm1":"0di","@stdlib/math-iter-special-sqrt1pm1":"0dj","@stdlib/math/iter/special/tan":"0dk","@stdlib/math-iter-special-tan":"0dl","@stdlib/math/iter/special/tanh":"0dm","@stdlib/math-iter-special-tanh":"0dn","@stdlib/math/iter/special/trigamma":"0do","@stdlib/math-iter-special-trigamma":"0dp","@stdlib/math/iter/special/trunc":"0dq","@stdlib/math-iter-special-trunc":"0dr","@stdlib/math/iter/special/trunc10":"0ds","@stdlib/math-iter-special-trunc10":"0dt","@stdlib/math/iter/special/trunc2":"0du","@stdlib/math-iter-special-trunc2":"0dv","@stdlib/math/iter/special/vercos":"0dw","@stdlib/math-iter-special-vercos":"0dx","@stdlib/math/iter/special/versin":"0dy","@stdlib/math-iter-special-versin":"0dz","@stdlib/math/iter/tools/map":"0e0","@stdlib/math-iter-tools-map":"0e1","@stdlib/math/iter/tools/map2":"0e2","@stdlib/math-iter-tools-map2":"0e3","@stdlib/math/iter/tools/map3":"0e4","@stdlib/math-iter-tools-map3":"0e5","@stdlib/math/iter/tools":"0e6","@stdlib/math-iter-tools":"0e7","@stdlib/math/iter/utils/continued-fraction":"0e8","@stdlib/math-iter-utils-continued-fraction":"0e9","@stdlib/math/iter/utils":"0eA","@stdlib/math-iter-utils":"0eB","@stdlib/math":"0eD","@stdlib/math/special/abs":"0eE","@stdlib/math-special-abs":"0eF","@stdlib/math/special":"0eG","@stdlib/math-special":"0eH","@stdlib/math/strided/ops/add":"0eI","@stdlib/math-strided-ops-add":"0eJ","@stdlib/math/strided/ops/mul":"0eK","@stdlib/math-strided-ops-mul":"0eL","@stdlib/math/strided/ops":"0eM","@stdlib/math-strided-ops":"0eN","@stdlib/math/strided/ops/sub":"0eO","@stdlib/math-strided-ops-sub":"0eP","@stdlib/math/strided":"0eQ","@stdlib/math-strided":"0eR","@stdlib/math/strided/special/abs-by":"0eS","@stdlib/math-strided-special-abs-by":"0eT","@stdlib/math/strided/special/abs":"0eU","@stdlib/math-strided-special-abs":"0eV","@stdlib/math/strided/special/abs2-by":"0eW","@stdlib/math-strided-special-abs2-by":"0eX","@stdlib/math/strided/special/abs2":"0eY","@stdlib/math-strided-special-abs2":"0eZ","@stdlib/math/strided/special/acos-by":"0ea","@stdlib/math-strided-special-acos-by":"0eb","@stdlib/math/strided/special/acosh-by":"0ec","@stdlib/math-strided-special-acosh-by":"0ed","@stdlib/math/strided/special/acot-by":"0ee","@stdlib/math-strided-special-acot-by":"0ef","@stdlib/math/strided/special/acoth-by":"0eg","@stdlib/math-strided-special-acoth-by":"0eh","@stdlib/math/strided/special/acovercos-by":"0ei","@stdlib/math-strided-special-acovercos-by":"0ej","@stdlib/math/strided/special/acoversin-by":"0ek","@stdlib/math-strided-special-acoversin-by":"0el","@stdlib/math/strided/special/ahavercos-by":"0em","@stdlib/math-strided-special-ahavercos-by":"0en","@stdlib/math/strided/special/ahaversin-by":"0eo","@stdlib/math-strided-special-ahaversin-by":"0ep","@stdlib/math/strided/special/asin-by":"0eq","@stdlib/math-strided-special-asin-by":"0er","@stdlib/math/strided/special/asinh-by":"0es","@stdlib/math-strided-special-asinh-by":"0et","@stdlib/math/strided/special/atan-by":"0eu","@stdlib/math-strided-special-atan-by":"0ev","@stdlib/math/strided/special/atanh-by":"0ew","@stdlib/math-strided-special-atanh-by":"0ex","@stdlib/math/strided/special/avercos-by":"0ey","@stdlib/math-strided-special-avercos-by":"0ez","@stdlib/math/strided/special/aversin-by":"0f0","@stdlib/math-strided-special-aversin-by":"0f1","@stdlib/math/strided/special/besselj0-by":"0f2","@stdlib/math-strided-special-besselj0-by":"0f3","@stdlib/math/strided/special/besselj1-by":"0f4","@stdlib/math-strided-special-besselj1-by":"0f5","@stdlib/math/strided/special/bessely0-by":"0f6","@stdlib/math-strided-special-bessely0-by":"0f7","@stdlib/math/strided/special/bessely1-by":"0f8","@stdlib/math-strided-special-bessely1-by":"0f9","@stdlib/math/strided/special/binet-by":"0fA","@stdlib/math-strided-special-binet-by":"0fB","@stdlib/math/strided/special/cbrt":"0fC","@stdlib/math-strided-special-cbrt":"0fD","@stdlib/math/strided/special/ceil":"0fE","@stdlib/math-strided-special-ceil":"0fF","@stdlib/math/strided/special/dabs":"0fG","@stdlib/math-strided-special-dabs":"0fH","@stdlib/math/strided/special/dabs2":"0fI","@stdlib/math-strided-special-dabs2":"0fJ","@stdlib/math/strided/special/dcbrt":"0fK","@stdlib/math-strided-special-dcbrt":"0fL","@stdlib/math/strided/special/dceil":"0fM","@stdlib/math-strided-special-dceil":"0fN","@stdlib/math/strided/special/ddeg2rad":"0fO","@stdlib/math-strided-special-ddeg2rad":"0fP","@stdlib/math/strided/special/deg2rad":"0fQ","@stdlib/math-strided-special-deg2rad":"0fR","@stdlib/math/strided/special/dfloor":"0fS","@stdlib/math-strided-special-dfloor":"0fT","@stdlib/math/strided/special/dinv":"0fU","@stdlib/math-strided-special-dinv":"0fV","@stdlib/math/strided/special/dmskabs":"0fW","@stdlib/math-strided-special-dmskabs":"0fX","@stdlib/math/strided/special/dmskabs2":"0fY","@stdlib/math-strided-special-dmskabs2":"0fZ","@stdlib/math/strided/special/dmskcbrt":"0fa","@stdlib/math-strided-special-dmskcbrt":"0fb","@stdlib/math/strided/special/dmskceil":"0fc","@stdlib/math-strided-special-dmskceil":"0fd","@stdlib/math/strided/special/dmskdeg2rad":"0fe","@stdlib/math-strided-special-dmskdeg2rad":"0ff","@stdlib/math/strided/special/dmskfloor":"0fg","@stdlib/math-strided-special-dmskfloor":"0fh","@stdlib/math/strided/special/dmskinv":"0fi","@stdlib/math-strided-special-dmskinv":"0fj","@stdlib/math/strided/special/dmskramp":"0fk","@stdlib/math-strided-special-dmskramp":"0fl","@stdlib/math/strided/special/dmskrsqrt":"0fm","@stdlib/math-strided-special-dmskrsqrt":"0fn","@stdlib/math/strided/special/dmsksqrt":"0fo","@stdlib/math-strided-special-dmsksqrt":"0fp","@stdlib/math/strided/special/dmsktrunc":"0fq","@stdlib/math-strided-special-dmsktrunc":"0fr","@stdlib/math/strided/special/dramp":"0fs","@stdlib/math-strided-special-dramp":"0ft","@stdlib/math/strided/special/drsqrt":"0fu","@stdlib/math-strided-special-drsqrt":"0fv","@stdlib/math/strided/special/dsqrt":"0fw","@stdlib/math-strided-special-dsqrt":"0fx","@stdlib/math/strided/special/dtrunc":"0fy","@stdlib/math-strided-special-dtrunc":"0fz","@stdlib/math/strided/special/floor":"0g0","@stdlib/math-strided-special-floor":"0g1","@stdlib/math/strided/special/inv":"0g2","@stdlib/math-strided-special-inv":"0g3","@stdlib/math/strided/special":"0g4","@stdlib/math-strided-special":"0g5","@stdlib/math/strided/special/ramp":"0g6","@stdlib/math-strided-special-ramp":"0g7","@stdlib/math/strided/special/rsqrt":"0g8","@stdlib/math-strided-special-rsqrt":"0g9","@stdlib/math/strided/special/sabs":"0gA","@stdlib/math-strided-special-sabs":"0gB","@stdlib/math/strided/special/sabs2":"0gC","@stdlib/math-strided-special-sabs2":"0gD","@stdlib/math/strided/special/scbrt":"0gE","@stdlib/math-strided-special-scbrt":"0gF","@stdlib/math/strided/special/sceil":"0gG","@stdlib/math-strided-special-sceil":"0gH","@stdlib/math/strided/special/sdeg2rad":"0gI","@stdlib/math-strided-special-sdeg2rad":"0gJ","@stdlib/math/strided/special/sfloor":"0gK","@stdlib/math-strided-special-sfloor":"0gL","@stdlib/math/strided/special/sinv":"0gM","@stdlib/math-strided-special-sinv":"0gN","@stdlib/math/strided/special/smskabs":"0gO","@stdlib/math-strided-special-smskabs":"0gP","@stdlib/math/strided/special/smskabs2":"0gQ","@stdlib/math-strided-special-smskabs2":"0gR","@stdlib/math/strided/special/smskcbrt":"0gS","@stdlib/math-strided-special-smskcbrt":"0gT","@stdlib/math/strided/special/smskceil":"0gU","@stdlib/math-strided-special-smskceil":"0gV","@stdlib/math/strided/special/smskdeg2rad":"0gW","@stdlib/math-strided-special-smskdeg2rad":"0gX","@stdlib/math/strided/special/smskfloor":"0gY","@stdlib/math-strided-special-smskfloor":"0gZ","@stdlib/math/strided/special/smskinv":"0ga","@stdlib/math-strided-special-smskinv":"0gb","@stdlib/math/strided/special/smskramp":"0gc","@stdlib/math-strided-special-smskramp":"0gd","@stdlib/math/strided/special/smskrsqrt":"0ge","@stdlib/math-strided-special-smskrsqrt":"0gf","@stdlib/math/strided/special/smsksqrt":"0gg","@stdlib/math-strided-special-smsksqrt":"0gh","@stdlib/math/strided/special/smsktrunc":"0gi","@stdlib/math-strided-special-smsktrunc":"0gj","@stdlib/math/strided/special/sqrt":"0gk","@stdlib/math-strided-special-sqrt":"0gl","@stdlib/math/strided/special/sramp":"0gm","@stdlib/math-strided-special-sramp":"0gn","@stdlib/math/strided/special/srsqrt":"0go","@stdlib/math-strided-special-srsqrt":"0gp","@stdlib/math/strided/special/ssqrt":"0gq","@stdlib/math-strided-special-ssqrt":"0gr","@stdlib/math/strided/special/strunc":"0gs","@stdlib/math-strided-special-strunc":"0gt","@stdlib/math/strided/special/trunc":"0gu","@stdlib/math-strided-special-trunc":"0gv","@stdlib/math/tools":"0gw","@stdlib/math-tools":"0gx","@stdlib/math/tools/unary":"0gy","@stdlib/math-tools-unary":"0gz","@stdlib/ml/incr/binary-classification":"0h0","@stdlib/ml-incr-binary-classification":"0h1","@stdlib/ml/incr/kmeans":"0h2","@stdlib/ml-incr-kmeans":"0h3","@stdlib/ml/incr":"0h4","@stdlib/ml-incr":"0h5","@stdlib/ml/incr/sgd-regression":"0h6","@stdlib/ml-incr-sgd-regression":"0h7","@stdlib/ml":"0h9","@stdlib/namespace/alias2pkg":"0hA","@stdlib/namespace-alias2pkg":"0hB","@stdlib/namespace/alias2related":"0hC","@stdlib/namespace-alias2related":"0hD","@stdlib/namespace/alias2standalone":"0hE","@stdlib/namespace-alias2standalone":"0hF","@stdlib/namespace/aliases":"0hG","@stdlib/namespace-aliases":"0hH","@stdlib/namespace":"0hJ","@stdlib/namespace/pkg2alias":"0hK","@stdlib/namespace-pkg2alias":"0hL","@stdlib/namespace/pkg2related":"0hM","@stdlib/namespace-pkg2related":"0hN","@stdlib/namespace/pkg2standalone":"0hO","@stdlib/namespace-pkg2standalone":"0hP","@stdlib/namespace/standalone2pkg":"0hQ","@stdlib/namespace-standalone2pkg":"0hR","@stdlib/ndarray/array":"0hS","@stdlib/ndarray-array":"0hT","@stdlib/ndarray/base/assert/is-allowed-data-type-cast":"0hU","@stdlib/ndarray-base-assert-is-allowed-data-type-cast":"0hV","@stdlib/ndarray/base/assert/is-buffer-length-compatible-shape":"0hW","@stdlib/ndarray-base-assert-is-buffer-length-compatible-shape":"0hX","@stdlib/ndarray/base/assert/is-buffer-length-compatible":"0hY","@stdlib/ndarray-base-assert-is-buffer-length-compatible":"0hZ","@stdlib/ndarray/base/assert/is-casting-mode":"0ha","@stdlib/ndarray-base-assert-is-casting-mode":"0hb","@stdlib/ndarray/base/assert/is-column-major-contiguous":"0hc","@stdlib/ndarray-base-assert-is-column-major-contiguous":"0hd","@stdlib/ndarray/base/assert/is-column-major":"0he","@stdlib/ndarray-base-assert-is-column-major":"0hf","@stdlib/ndarray/base/assert/is-contiguous":"0hg","@stdlib/ndarray-base-assert-is-contiguous":"0hh","@stdlib/ndarray/base/assert/is-data-type":"0hi","@stdlib/ndarray-base-assert-is-data-type":"0hj","@stdlib/ndarray/base/assert/is-index-mode":"0hk","@stdlib/ndarray-base-assert-is-index-mode":"0hl","@stdlib/ndarray/base/assert/is-order":"0hm","@stdlib/ndarray-base-assert-is-order":"0hn","@stdlib/ndarray/base/assert/is-read-only":"0ho","@stdlib/ndarray-base-assert-is-read-only":"0hp","@stdlib/ndarray/base/assert/is-row-major-contiguous":"0hq","@stdlib/ndarray-base-assert-is-row-major-contiguous":"0hr","@stdlib/ndarray/base/assert/is-row-major":"0hs","@stdlib/ndarray-base-assert-is-row-major":"0ht","@stdlib/ndarray/base/assert/is-safe-data-type-cast":"0hu","@stdlib/ndarray-base-assert-is-safe-data-type-cast":"0hv","@stdlib/ndarray/base/assert/is-same-kind-data-type-cast":"0hw","@stdlib/ndarray-base-assert-is-same-kind-data-type-cast":"0hx","@stdlib/ndarray/base/assert/is-single-segment-compatible":"0hy","@stdlib/ndarray-base-assert-is-single-segment-compatible":"0hz","@stdlib/ndarray/base/assert":"0i0","@stdlib/ndarray-base-assert":"0i1","@stdlib/ndarray/base/bind2vind":"0i2","@stdlib/ndarray-base-bind2vind":"0i3","@stdlib/ndarray/base/broadcast-array":"0i4","@stdlib/ndarray-base-broadcast-array":"0i5","@stdlib/ndarray/base/broadcast-shapes":"0i6","@stdlib/ndarray-base-broadcast-shapes":"0i7","@stdlib/ndarray/base/buffer-ctors":"0i8","@stdlib/ndarray-base-buffer-ctors":"0i9","@stdlib/ndarray/base/buffer-dtype-enum":"0iA","@stdlib/ndarray-base-buffer-dtype-enum":"0iB","@stdlib/ndarray/base/buffer-dtype":"0iC","@stdlib/ndarray-base-buffer-dtype":"0iD","@stdlib/ndarray/base/buffer":"0iE","@stdlib/ndarray-base-buffer":"0iF","@stdlib/ndarray/base/bytes-per-element":"0iG","@stdlib/ndarray-base-bytes-per-element":"0iH","@stdlib/ndarray/base/char2dtype":"0iI","@stdlib/ndarray-base-char2dtype":"0iJ","@stdlib/ndarray/base/clamp-index":"0iK","@stdlib/ndarray-base-clamp-index":"0iL","@stdlib/ndarray/base/ctor":"0iM","@stdlib/ndarray-base-ctor":"0iN","@stdlib/ndarray/base/dtype-char":"0iO","@stdlib/ndarray-base-dtype-char":"0iP","@stdlib/ndarray/base/dtype-desc":"0iQ","@stdlib/ndarray-base-dtype-desc":"0iR","@stdlib/ndarray/base/dtype-enum2str":"0iS","@stdlib/ndarray-base-dtype-enum2str":"0iT","@stdlib/ndarray/base/dtype-resolve-enum":"0iU","@stdlib/ndarray-base-dtype-resolve-enum":"0iV","@stdlib/ndarray/base/dtype-resolve-str":"0iW","@stdlib/ndarray-base-dtype-resolve-str":"0iX","@stdlib/ndarray/base/dtype-str2enum":"0iY","@stdlib/ndarray-base-dtype-str2enum":"0iZ","@stdlib/ndarray/base/dtype2c":"0ia","@stdlib/ndarray-base-dtype2c":"0ib","@stdlib/ndarray/base/dtypes2signatures":"0ic","@stdlib/ndarray-base-dtypes2signatures":"0id","@stdlib/ndarray/base/expand-dimensions":"0ie","@stdlib/ndarray-base-expand-dimensions":"0if","@stdlib/ndarray/base/from-scalar":"0ig","@stdlib/ndarray-base-from-scalar":"0ih","@stdlib/ndarray/base/function-object":"0ii","@stdlib/ndarray-base-function-object":"0ij","@stdlib/ndarray/base/ind":"0ik","@stdlib/ndarray-base-ind":"0il","@stdlib/ndarray/base/ind2sub":"0im","@stdlib/ndarray-base-ind2sub":"0in","@stdlib/ndarray/base/iteration-order":"0io","@stdlib/ndarray-base-iteration-order":"0ip","@stdlib/ndarray/base/max-view-buffer-index":"0iq","@stdlib/ndarray-base-max-view-buffer-index":"0ir","@stdlib/ndarray/base/maybe-broadcast-array":"0is","@stdlib/ndarray-base-maybe-broadcast-array":"0it","@stdlib/ndarray/base/meta-data-props":"0iu","@stdlib/ndarray-base-meta-data-props":"0iv","@stdlib/ndarray/base/min-view-buffer-index":"0iw","@stdlib/ndarray-base-min-view-buffer-index":"0ix","@stdlib/ndarray/base/minmax-view-buffer-index":"0iy","@stdlib/ndarray-base-minmax-view-buffer-index":"0iz","@stdlib/ndarray/base/napi/addon-arguments":"0j0","@stdlib/ndarray-base-napi-addon-arguments":"0j1","@stdlib/ndarray/base/napi/dtype-string-to-dtype":"0j2","@stdlib/ndarray-base-napi-dtype-string-to-dtype":"0j3","@stdlib/ndarray/base/napi":"0j4","@stdlib/ndarray-base-napi":"0j5","@stdlib/ndarray/base/napi/typedarray-type-to-dtype":"0j6","@stdlib/ndarray-base-napi-typedarray-type-to-dtype":"0j7","@stdlib/ndarray/base/napi/unary":"0j8","@stdlib/ndarray-base-napi-unary":"0j9","@stdlib/ndarray/base/ndarraylike2object":"0jA","@stdlib/ndarray-base-ndarraylike2object":"0jB","@stdlib/ndarray/base/nonsingleton-dimensions":"0jC","@stdlib/ndarray-base-nonsingleton-dimensions":"0jD","@stdlib/ndarray/base/numel":"0jE","@stdlib/ndarray-base-numel":"0jF","@stdlib/ndarray/base":"0jG","@stdlib/ndarray-base":"0jH","@stdlib/ndarray/base/prepend-singleton-dimensions":"0jI","@stdlib/ndarray-base-prepend-singleton-dimensions":"0jJ","@stdlib/ndarray/base/remove-singleton-dimensions":"0jK","@stdlib/ndarray-base-remove-singleton-dimensions":"0jL","@stdlib/ndarray/base/serialize-meta-data":"0jM","@stdlib/ndarray-base-serialize-meta-data":"0jN","@stdlib/ndarray/base/shape2strides":"0jO","@stdlib/ndarray-base-shape2strides":"0jP","@stdlib/ndarray/base/singleton-dimensions":"0jQ","@stdlib/ndarray-base-singleton-dimensions":"0jR","@stdlib/ndarray/base/strides2offset":"0jS","@stdlib/ndarray-base-strides2offset":"0jT","@stdlib/ndarray/base/strides2order":"0jU","@stdlib/ndarray-base-strides2order":"0jV","@stdlib/ndarray/base/sub2ind":"0jW","@stdlib/ndarray-base-sub2ind":"0jX","@stdlib/ndarray/base/to-array":"0jY","@stdlib/ndarray-base-to-array":"0jZ","@stdlib/ndarray/base/transpose":"0ja","@stdlib/ndarray-base-transpose":"0jb","@stdlib/ndarray/base/unary":"0jc","@stdlib/ndarray-base-unary":"0jd","@stdlib/ndarray/base/vind2bind":"0je","@stdlib/ndarray-base-vind2bind":"0jf","@stdlib/ndarray/base/wrap-index":"0jg","@stdlib/ndarray-base-wrap-index":"0jh","@stdlib/ndarray/base/zeros-like":"0ji","@stdlib/ndarray-base-zeros-like":"0jj","@stdlib/ndarray/base/zeros":"0jk","@stdlib/ndarray-base-zeros":"0jl","@stdlib/ndarray/casting-modes":"0jm","@stdlib/ndarray-casting-modes":"0jn","@stdlib/ndarray/ctor":"0jo","@stdlib/ndarray-ctor":"0jp","@stdlib/ndarray/dispatch":"0jq","@stdlib/ndarray-dispatch":"0jr","@stdlib/ndarray/dtypes":"0js","@stdlib/ndarray-dtypes":"0jt","@stdlib/ndarray/from-scalar":"0ju","@stdlib/ndarray-from-scalar":"0jv","@stdlib/ndarray/ind2sub":"0jw","@stdlib/ndarray-ind2sub":"0jx","@stdlib/ndarray/index-modes":"0jy","@stdlib/ndarray-index-modes":"0jz","@stdlib/ndarray/min-dtype":"0k0","@stdlib/ndarray-min-dtype":"0k1","@stdlib/ndarray/next-dtype":"0k2","@stdlib/ndarray-next-dtype":"0k3","@stdlib/ndarray/orders":"0k4","@stdlib/ndarray-orders":"0k5","@stdlib/ndarray":"0k7","@stdlib/ndarray/promotion-rules":"0k8","@stdlib/ndarray-promotion-rules":"0k9","@stdlib/ndarray/safe-casts":"0kA","@stdlib/ndarray-safe-casts":"0kB","@stdlib/ndarray/same-kind-casts":"0kC","@stdlib/ndarray-same-kind-casts":"0kD","@stdlib/ndarray/sub2ind":"0kE","@stdlib/ndarray-sub2ind":"0kF","@stdlib/ndarray/zeros-like":"0kG","@stdlib/ndarray-zeros-like":"0kH","@stdlib/ndarray/zeros":"0kI","@stdlib/ndarray-zeros":"0kJ","@stdlib/net/disposable-http-server":"0kK","@stdlib/net-disposable-http-server":"0kL","@stdlib/net/http-server":"0kM","@stdlib/net-http-server":"0kN","@stdlib/net":"0kP","@stdlib/net/simple-http-server":"0kQ","@stdlib/net-simple-http-server":"0kR","@stdlib/nlp/expand-contractions":"0kS","@stdlib/nlp-expand-contractions":"0kT","@stdlib/nlp/lda":"0kU","@stdlib/nlp-lda":"0kV","@stdlib/nlp/ordinalize":"0kW","@stdlib/nlp-ordinalize":"0kX","@stdlib/nlp":"0kZ","@stdlib/nlp/porter-stemmer":"0ka","@stdlib/nlp-porter-stemmer":"0kb","@stdlib/nlp/tokenize":"0kc","@stdlib/nlp-tokenize":"0kd","@stdlib/number/ctor":"0ke","@stdlib/number-ctor":"0kf","@stdlib/number/float32/base/exponent":"0kg","@stdlib/number-float32-base-exponent":"0kh","@stdlib/number/float32/base/from-binary-string":"0ki","@stdlib/number-float32-base-from-binary-string":"0kj","@stdlib/number/float32/base/from-word":"0kk","@stdlib/number-float32-base-from-word":"0kl","@stdlib/number/float32/base/normalize":"0km","@stdlib/number-float32-base-normalize":"0kn","@stdlib/number/float32/base":"0ko","@stdlib/number-float32-base":"0kp","@stdlib/number/float32/base/signbit":"0kq","@stdlib/number-float32-base-signbit":"0kr","@stdlib/number/float32/base/significand":"0ks","@stdlib/number-float32-base-significand":"0kt","@stdlib/number/float32/base/to-binary-string":"0ku","@stdlib/number-float32-base-to-binary-string":"0kv","@stdlib/number/float32/base/to-int32":"0kw","@stdlib/number-float32-base-to-int32":"0kx","@stdlib/number/float32/base/to-uint32":"0ky","@stdlib/number-float32-base-to-uint32":"0kz","@stdlib/number/float32/base/to-word":"0l0","@stdlib/number-float32-base-to-word":"0l1","@stdlib/number/float32":"0l2","@stdlib/number-float32":"0l3","@stdlib/number/float64/base/exponent":"0l4","@stdlib/number-float64-base-exponent":"0l5","@stdlib/number/float64/base/from-binary-string":"0l6","@stdlib/number-float64-base-from-binary-string":"0l7","@stdlib/number/float64/base/from-int64-bytes":"0l8","@stdlib/number-float64-base-from-int64-bytes":"0l9","@stdlib/number/float64/base/from-words":"0lA","@stdlib/number-float64-base-from-words":"0lB","@stdlib/number/float64/base/get-high-word":"0lC","@stdlib/number-float64-base-get-high-word":"0lD","@stdlib/number/float64/base/get-low-word":"0lE","@stdlib/number-float64-base-get-low-word":"0lF","@stdlib/number/float64/base/normalize":"0lG","@stdlib/number-float64-base-normalize":"0lH","@stdlib/number/float64/base":"0lI","@stdlib/number-float64-base":"0lJ","@stdlib/number/float64/base/set-high-word":"0lK","@stdlib/number-float64-base-set-high-word":"0lL","@stdlib/number/float64/base/set-low-word":"0lM","@stdlib/number-float64-base-set-low-word":"0lN","@stdlib/number/float64/base/signbit":"0lO","@stdlib/number-float64-base-signbit":"0lP","@stdlib/number/float64/base/to-binary-string":"0lQ","@stdlib/number-float64-base-to-binary-string":"0lR","@stdlib/number/float64/base/to-float32":"0lS","@stdlib/number-float64-base-to-float32":"0lT","@stdlib/number/float64/base/to-int32":"0lU","@stdlib/number-float64-base-to-int32":"0lV","@stdlib/number/float64/base/to-int64-bytes":"0lW","@stdlib/number-float64-base-to-int64-bytes":"0lX","@stdlib/number/float64/base/to-uint32":"0lY","@stdlib/number-float64-base-to-uint32":"0lZ","@stdlib/number/float64/base/to-words":"0la","@stdlib/number-float64-base-to-words":"0lb","@stdlib/number/float64":"0lc","@stdlib/number-float64":"0ld","@stdlib/number/int32/base":"0le","@stdlib/number-int32-base":"0lf","@stdlib/number/int32/base/to-uint32":"0lg","@stdlib/number-int32-base-to-uint32":"0lh","@stdlib/number/int32":"0li","@stdlib/number-int32":"0lj","@stdlib/number":"0ll","@stdlib/number/uint16/base/from-binary-string":"0lm","@stdlib/number-uint16-base-from-binary-string":"0ln","@stdlib/number/uint16/base":"0lo","@stdlib/number-uint16-base":"0lp","@stdlib/number/uint16/base/to-binary-string":"0lq","@stdlib/number-uint16-base-to-binary-string":"0lr","@stdlib/number/uint16":"0ls","@stdlib/number-uint16":"0lt","@stdlib/number/uint32/base/from-binary-string":"0lu","@stdlib/number-uint32-base-from-binary-string":"0lv","@stdlib/number/uint32/base":"0lw","@stdlib/number-uint32-base":"0lx","@stdlib/number/uint32/base/rotl":"0ly","@stdlib/number-uint32-base-rotl":"0lz","@stdlib/number/uint32/base/rotr":"0m0","@stdlib/number-uint32-base-rotr":"0m1","@stdlib/number/uint32/base/to-binary-string":"0m2","@stdlib/number-uint32-base-to-binary-string":"0m3","@stdlib/number/uint32/base/to-int32":"0m4","@stdlib/number-uint32-base-to-int32":"0m5","@stdlib/number/uint32":"0m6","@stdlib/number-uint32":"0m7","@stdlib/number/uint8/base/from-binary-string":"0m8","@stdlib/number-uint8-base-from-binary-string":"0m9","@stdlib/number/uint8/base":"0mA","@stdlib/number-uint8-base":"0mB","@stdlib/number/uint8/base/to-binary-string":"0mC","@stdlib/number-uint8-base-to-binary-string":"0mD","@stdlib/number/uint8":"0mE","@stdlib/number-uint8":"0mF","@stdlib/os/arch":"0mG","@stdlib/os-arch":"0mH","@stdlib/os/byte-order":"0mI","@stdlib/os-byte-order":"0mJ","@stdlib/os/configdir":"0mK","@stdlib/os-configdir":"0mL","@stdlib/os/float-word-order":"0mM","@stdlib/os-float-word-order":"0mN","@stdlib/os/homedir":"0mO","@stdlib/os-homedir":"0mP","@stdlib/os/num-cpus":"0mQ","@stdlib/os-num-cpus":"0mR","@stdlib/os":"0mT","@stdlib/os/platform":"0mU","@stdlib/os-platform":"0mV","@stdlib/os/tmpdir":"0mW","@stdlib/os-tmpdir":"0mX","@stdlib/plot/base/ctor":"0mY","@stdlib/plot-base-ctor":"0mZ","@stdlib/plot/components/svg/annotations":"0ma","@stdlib/plot-components-svg-annotations":"0mb","@stdlib/plot/components/svg/axis":"0mc","@stdlib/plot-components-svg-axis":"0md","@stdlib/plot/components/svg/background":"0me","@stdlib/plot-components-svg-background":"0mf","@stdlib/plot/components/svg/canvas":"0mg","@stdlib/plot-components-svg-canvas":"0mh","@stdlib/plot/components/svg/clip-path":"0mi","@stdlib/plot-components-svg-clip-path":"0mj","@stdlib/plot/components/svg/defs":"0mk","@stdlib/plot-components-svg-defs":"0ml","@stdlib/plot/components/svg/graph":"0mm","@stdlib/plot-components-svg-graph":"0mn","@stdlib/plot/components/svg/marks":"0mo","@stdlib/plot-components-svg-marks":"0mp","@stdlib/plot/components/svg/path":"0mq","@stdlib/plot-components-svg-path":"0mr","@stdlib/plot/components/svg/rug":"0ms","@stdlib/plot-components-svg-rug":"0mt","@stdlib/plot/components/svg/symbols":"0mu","@stdlib/plot-components-svg-symbols":"0mv","@stdlib/plot/components/svg/title":"0mw","@stdlib/plot-components-svg-title":"0mx","@stdlib/plot/ctor":"0my","@stdlib/plot-ctor":"0mz","@stdlib/plot":"0n1","@stdlib/plot/sparklines/base/ctor":"0n2","@stdlib/plot-sparklines-base-ctor":"0n3","@stdlib/plot/sparklines/base":"0n4","@stdlib/plot-sparklines-base":"0n5","@stdlib/plot/sparklines":"0n6","@stdlib/plot-sparklines":"0n7","@stdlib/plot/sparklines/unicode/column":"0n8","@stdlib/plot-sparklines-unicode-column":"0n9","@stdlib/plot/sparklines/unicode/line":"0nA","@stdlib/plot-sparklines-unicode-line":"0nB","@stdlib/plot/sparklines/unicode":"0nC","@stdlib/plot-sparklines-unicode":"0nD","@stdlib/plot/sparklines/unicode/tristate":"0nE","@stdlib/plot-sparklines-unicode-tristate":"0nF","@stdlib/plot/sparklines/unicode/up-down":"0nG","@stdlib/plot-sparklines-unicode-up-down":"0nH","@stdlib/plot/sparklines/unicode/win-loss":"0nI","@stdlib/plot-sparklines-unicode-win-loss":"0nJ","@stdlib/plot/unicode/stemleaf":"0nK","@stdlib/plot-unicode-stemleaf":"0nL","@stdlib/process/argv":"0nM","@stdlib/process-argv":"0nN","@stdlib/process/chdir":"0nO","@stdlib/process-chdir":"0nP","@stdlib/process/cwd":"0nQ","@stdlib/process-cwd":"0nR","@stdlib/process/env":"0nS","@stdlib/process-env":"0nT","@stdlib/process/exec-path":"0nU","@stdlib/process-exec-path":"0nV","@stdlib/process/getegid":"0nW","@stdlib/process-getegid":"0nX","@stdlib/process/geteuid":"0nY","@stdlib/process-geteuid":"0nZ","@stdlib/process/getgid":"0na","@stdlib/process-getgid":"0nb","@stdlib/process/getuid":"0nc","@stdlib/process-getuid":"0nd","@stdlib/process/node-version":"0ne","@stdlib/process-node-version":"0nf","@stdlib/process":"0nh","@stdlib/process/read-stdin":"0ni","@stdlib/process-read-stdin":"0nj","@stdlib/process/umask":"0nk","@stdlib/process-umask":"0nl","@stdlib/proxy/ctor":"0nm","@stdlib/proxy-ctor":"0nn","@stdlib/proxy":"0np","@stdlib/random/base/arcsine":"0nq","@stdlib/random-base-arcsine":"0nr","@stdlib/random/base/bernoulli":"0ns","@stdlib/random-base-bernoulli":"0nt","@stdlib/random/base/beta":"0nu","@stdlib/random-base-beta":"0nv","@stdlib/random/base/betaprime":"0nw","@stdlib/random-base-betaprime":"0nx","@stdlib/random/base/binomial":"0ny","@stdlib/random-base-binomial":"0nz","@stdlib/random/base/box-muller":"0o0","@stdlib/random-base-box-muller":"0o1","@stdlib/random/base/cauchy":"0o2","@stdlib/random-base-cauchy":"0o3","@stdlib/random/base/chi":"0o4","@stdlib/random-base-chi":"0o5","@stdlib/random/base/chisquare":"0o6","@stdlib/random-base-chisquare":"0o7","@stdlib/random/base/cosine":"0o8","@stdlib/random-base-cosine":"0o9","@stdlib/random/base/discrete-uniform":"0oA","@stdlib/random-base-discrete-uniform":"0oB","@stdlib/random/base/erlang":"0oC","@stdlib/random-base-erlang":"0oD","@stdlib/random/base/exponential":"0oE","@stdlib/random-base-exponential":"0oF","@stdlib/random/base/f":"0oG","@stdlib/random-base-f":"0oH","@stdlib/random/base/frechet":"0oI","@stdlib/random-base-frechet":"0oJ","@stdlib/random/base/gamma":"0oK","@stdlib/random-base-gamma":"0oL","@stdlib/random/base/geometric":"0oM","@stdlib/random-base-geometric":"0oN","@stdlib/random/base/gumbel":"0oO","@stdlib/random-base-gumbel":"0oP","@stdlib/random/base/hypergeometric":"0oQ","@stdlib/random-base-hypergeometric":"0oR","@stdlib/random/base/improved-ziggurat":"0oS","@stdlib/random-base-improved-ziggurat":"0oT","@stdlib/random/base/invgamma":"0oU","@stdlib/random-base-invgamma":"0oV","@stdlib/random/base/kumaraswamy":"0oW","@stdlib/random-base-kumaraswamy":"0oX","@stdlib/random/base/laplace":"0oY","@stdlib/random-base-laplace":"0oZ","@stdlib/random/base/levy":"0oa","@stdlib/random-base-levy":"0ob","@stdlib/random/base/logistic":"0oc","@stdlib/random-base-logistic":"0od","@stdlib/random/base/lognormal":"0oe","@stdlib/random-base-lognormal":"0of","@stdlib/random/base/minstd-shuffle":"0og","@stdlib/random-base-minstd-shuffle":"0oh","@stdlib/random/base/minstd":"0oi","@stdlib/random-base-minstd":"0oj","@stdlib/random/base/mt19937":"0ok","@stdlib/random-base-mt19937":"0ol","@stdlib/random/base/negative-binomial":"0om","@stdlib/random-base-negative-binomial":"0on","@stdlib/random/base/normal":"0oo","@stdlib/random-base-normal":"0op","@stdlib/random/base":"0oq","@stdlib/random-base":"0or","@stdlib/random/base/pareto-type1":"0os","@stdlib/random-base-pareto-type1":"0ot","@stdlib/random/base/poisson":"0ou","@stdlib/random-base-poisson":"0ov","@stdlib/random/base/randi":"0ow","@stdlib/random-base-randi":"0ox","@stdlib/random/base/randn":"0oy","@stdlib/random-base-randn":"0oz","@stdlib/random/base/randu":"0p0","@stdlib/random-base-randu":"0p1","@stdlib/random/base/rayleigh":"0p2","@stdlib/random-base-rayleigh":"0p3","@stdlib/random/base/reviver":"0p4","@stdlib/random-base-reviver":"0p5","@stdlib/random/base/t":"0p6","@stdlib/random-base-t":"0p7","@stdlib/random/base/triangular":"0p8","@stdlib/random-base-triangular":"0p9","@stdlib/random/base/uniform":"0pA","@stdlib/random-base-uniform":"0pB","@stdlib/random/base/weibull":"0pC","@stdlib/random-base-weibull":"0pD","@stdlib/random/iter/arcsine":"0pE","@stdlib/random-iter-arcsine":"0pF","@stdlib/random/iter/bernoulli":"0pG","@stdlib/random-iter-bernoulli":"0pH","@stdlib/random/iter/beta":"0pI","@stdlib/random-iter-beta":"0pJ","@stdlib/random/iter/betaprime":"0pK","@stdlib/random-iter-betaprime":"0pL","@stdlib/random/iter/binomial":"0pM","@stdlib/random-iter-binomial":"0pN","@stdlib/random/iter/box-muller":"0pO","@stdlib/random-iter-box-muller":"0pP","@stdlib/random/iter/cauchy":"0pQ","@stdlib/random-iter-cauchy":"0pR","@stdlib/random/iter/chi":"0pS","@stdlib/random-iter-chi":"0pT","@stdlib/random/iter/chisquare":"0pU","@stdlib/random-iter-chisquare":"0pV","@stdlib/random/iter/cosine":"0pW","@stdlib/random-iter-cosine":"0pX","@stdlib/random/iter/discrete-uniform":"0pY","@stdlib/random-iter-discrete-uniform":"0pZ","@stdlib/random/iter/erlang":"0pa","@stdlib/random-iter-erlang":"0pb","@stdlib/random/iter/exponential":"0pc","@stdlib/random-iter-exponential":"0pd","@stdlib/random/iter/f":"0pe","@stdlib/random-iter-f":"0pf","@stdlib/random/iter/frechet":"0pg","@stdlib/random-iter-frechet":"0ph","@stdlib/random/iter/gamma":"0pi","@stdlib/random-iter-gamma":"0pj","@stdlib/random/iter/geometric":"0pk","@stdlib/random-iter-geometric":"0pl","@stdlib/random/iter/gumbel":"0pm","@stdlib/random-iter-gumbel":"0pn","@stdlib/random/iter/hypergeometric":"0po","@stdlib/random-iter-hypergeometric":"0pp","@stdlib/random/iter/improved-ziggurat":"0pq","@stdlib/random-iter-improved-ziggurat":"0pr","@stdlib/random/iter/invgamma":"0ps","@stdlib/random-iter-invgamma":"0pt","@stdlib/random/iter/kumaraswamy":"0pu","@stdlib/random-iter-kumaraswamy":"0pv","@stdlib/random/iter/laplace":"0pw","@stdlib/random-iter-laplace":"0px","@stdlib/random/iter/levy":"0py","@stdlib/random-iter-levy":"0pz","@stdlib/random/iter/logistic":"0q0","@stdlib/random-iter-logistic":"0q1","@stdlib/random/iter/lognormal":"0q2","@stdlib/random-iter-lognormal":"0q3","@stdlib/random/iter/minstd-shuffle":"0q4","@stdlib/random-iter-minstd-shuffle":"0q5","@stdlib/random/iter/minstd":"0q6","@stdlib/random-iter-minstd":"0q7","@stdlib/random/iter/mt19937":"0q8","@stdlib/random-iter-mt19937":"0q9","@stdlib/random/iter/negative-binomial":"0qA","@stdlib/random-iter-negative-binomial":"0qB","@stdlib/random/iter/normal":"0qC","@stdlib/random-iter-normal":"0qD","@stdlib/random/iter":"0qE","@stdlib/random-iter":"0qF","@stdlib/random/iter/pareto-type1":"0qG","@stdlib/random-iter-pareto-type1":"0qH","@stdlib/random/iter/poisson":"0qI","@stdlib/random-iter-poisson":"0qJ","@stdlib/random/iter/randi":"0qK","@stdlib/random-iter-randi":"0qL","@stdlib/random/iter/randn":"0qM","@stdlib/random-iter-randn":"0qN","@stdlib/random/iter/randu":"0qO","@stdlib/random-iter-randu":"0qP","@stdlib/random/iter/rayleigh":"0qQ","@stdlib/random-iter-rayleigh":"0qR","@stdlib/random/iter/t":"0qS","@stdlib/random-iter-t":"0qT","@stdlib/random/iter/triangular":"0qU","@stdlib/random-iter-triangular":"0qV","@stdlib/random/iter/uniform":"0qW","@stdlib/random-iter-uniform":"0qX","@stdlib/random/iter/weibull":"0qY","@stdlib/random-iter-weibull":"0qZ","@stdlib/random":"0qb","@stdlib/random/sample":"0qc","@stdlib/random-sample":"0qd","@stdlib/random/shuffle":"0qe","@stdlib/random-shuffle":"0qf","@stdlib/random/streams/arcsine":"0qg","@stdlib/random-streams-arcsine":"0qh","@stdlib/random/streams/bernoulli":"0qi","@stdlib/random-streams-bernoulli":"0qj","@stdlib/random/streams/beta":"0qk","@stdlib/random-streams-beta":"0ql","@stdlib/random/streams/betaprime":"0qm","@stdlib/random-streams-betaprime":"0qn","@stdlib/random/streams/binomial":"0qo","@stdlib/random-streams-binomial":"0qp","@stdlib/random/streams/box-muller":"0qq","@stdlib/random-streams-box-muller":"0qr","@stdlib/random/streams/cauchy":"0qs","@stdlib/random-streams-cauchy":"0qt","@stdlib/random/streams/chi":"0qu","@stdlib/random-streams-chi":"0qv","@stdlib/random/streams/chisquare":"0qw","@stdlib/random-streams-chisquare":"0qx","@stdlib/random/streams/cosine":"0qy","@stdlib/random-streams-cosine":"0qz","@stdlib/random/streams/discrete-uniform":"0r0","@stdlib/random-streams-discrete-uniform":"0r1","@stdlib/random/streams/erlang":"0r2","@stdlib/random-streams-erlang":"0r3","@stdlib/random/streams/exponential":"0r4","@stdlib/random-streams-exponential":"0r5","@stdlib/random/streams/f":"0r6","@stdlib/random-streams-f":"0r7","@stdlib/random/streams/frechet":"0r8","@stdlib/random-streams-frechet":"0r9","@stdlib/random/streams/gamma":"0rA","@stdlib/random-streams-gamma":"0rB","@stdlib/random/streams/geometric":"0rC","@stdlib/random-streams-geometric":"0rD","@stdlib/random/streams/gumbel":"0rE","@stdlib/random-streams-gumbel":"0rF","@stdlib/random/streams/hypergeometric":"0rG","@stdlib/random-streams-hypergeometric":"0rH","@stdlib/random/streams/improved-ziggurat":"0rI","@stdlib/random-streams-improved-ziggurat":"0rJ","@stdlib/random/streams/invgamma":"0rK","@stdlib/random-streams-invgamma":"0rL","@stdlib/random/streams/kumaraswamy":"0rM","@stdlib/random-streams-kumaraswamy":"0rN","@stdlib/random/streams/laplace":"0rO","@stdlib/random-streams-laplace":"0rP","@stdlib/random/streams/levy":"0rQ","@stdlib/random-streams-levy":"0rR","@stdlib/random/streams/logistic":"0rS","@stdlib/random-streams-logistic":"0rT","@stdlib/random/streams/lognormal":"0rU","@stdlib/random-streams-lognormal":"0rV","@stdlib/random/streams/minstd-shuffle":"0rW","@stdlib/random-streams-minstd-shuffle":"0rX","@stdlib/random/streams/minstd":"0rY","@stdlib/random-streams-minstd":"0rZ","@stdlib/random/streams/mt19937":"0ra","@stdlib/random-streams-mt19937":"0rb","@stdlib/random/streams/negative-binomial":"0rc","@stdlib/random-streams-negative-binomial":"0rd","@stdlib/random/streams/normal":"0re","@stdlib/random-streams-normal":"0rf","@stdlib/random/streams":"0rg","@stdlib/random-streams":"0rh","@stdlib/random/streams/pareto-type1":"0ri","@stdlib/random-streams-pareto-type1":"0rj","@stdlib/random/streams/poisson":"0rk","@stdlib/random-streams-poisson":"0rl","@stdlib/random/streams/randi":"0rm","@stdlib/random-streams-randi":"0rn","@stdlib/random/streams/randn":"0ro","@stdlib/random-streams-randn":"0rp","@stdlib/random/streams/randu":"0rq","@stdlib/random-streams-randu":"0rr","@stdlib/random/streams/rayleigh":"0rs","@stdlib/random-streams-rayleigh":"0rt","@stdlib/random/streams/t":"0ru","@stdlib/random-streams-t":"0rv","@stdlib/random/streams/triangular":"0rw","@stdlib/random-streams-triangular":"0rx","@stdlib/random/streams/uniform":"0ry","@stdlib/random-streams-uniform":"0rz","@stdlib/random/streams/weibull":"0s0","@stdlib/random-streams-weibull":"0s1","@stdlib/regexp/basename-posix":"0s2","@stdlib/regexp-basename-posix":"0s3","@stdlib/regexp/basename-windows":"0s4","@stdlib/regexp-basename-windows":"0s5","@stdlib/regexp/basename":"0s6","@stdlib/regexp-basename":"0s7","@stdlib/regexp/color-hexadecimal":"0s8","@stdlib/regexp-color-hexadecimal":"0s9","@stdlib/regexp/decimal-number":"0sA","@stdlib/regexp-decimal-number":"0sB","@stdlib/regexp/dirname-posix":"0sC","@stdlib/regexp-dirname-posix":"0sD","@stdlib/regexp/dirname-windows":"0sE","@stdlib/regexp-dirname-windows":"0sF","@stdlib/regexp/dirname":"0sG","@stdlib/regexp-dirname":"0sH","@stdlib/regexp/eol":"0sI","@stdlib/regexp-eol":"0sJ","@stdlib/regexp/extended-length-path":"0sK","@stdlib/regexp-extended-length-path":"0sL","@stdlib/regexp/extname-posix":"0sM","@stdlib/regexp-extname-posix":"0sN","@stdlib/regexp/extname-windows":"0sO","@stdlib/regexp-extname-windows":"0sP","@stdlib/regexp/extname":"0sQ","@stdlib/regexp-extname":"0sR","@stdlib/regexp/filename-posix":"0sS","@stdlib/regexp-filename-posix":"0sT","@stdlib/regexp/filename-windows":"0sU","@stdlib/regexp-filename-windows":"0sV","@stdlib/regexp/filename":"0sW","@stdlib/regexp-filename":"0sX","@stdlib/regexp/function-name":"0sY","@stdlib/regexp-function-name":"0sZ","@stdlib/regexp/native-function":"0sa","@stdlib/regexp-native-function":"0sb","@stdlib/regexp":"0sd","@stdlib/regexp/regexp":"0se","@stdlib/regexp-regexp":"0sf","@stdlib/regexp/unc-path":"0sg","@stdlib/regexp-unc-path":"0sh","@stdlib/regexp/utf16-surrogate-pair":"0si","@stdlib/regexp-utf16-surrogate-pair":"0sj","@stdlib/regexp/utf16-unpaired-surrogate":"0sk","@stdlib/regexp-utf16-unpaired-surrogate":"0sl","@stdlib/regexp/whitespace":"0sm","@stdlib/regexp-whitespace":"0sn","@stdlib/repl/code-blocks":"0so","@stdlib/repl-code-blocks":"0sp","@stdlib/repl/help":"0sq","@stdlib/repl-help":"0sr","@stdlib/repl/info":"0ss","@stdlib/repl-info":"0st","@stdlib/repl":"0sv","@stdlib/repl/presentation":"0sw","@stdlib/repl-presentation":"0sx","@stdlib/repl/server":"0sy","@stdlib/repl-server":"0sz","@stdlib/repl/signature":"0t0","@stdlib/repl-signature":"0t1","@stdlib/repl/typed-signature":"0t2","@stdlib/repl-typed-signature":"0t3","@stdlib/simulate/iter/awgn":"0t4","@stdlib/simulate-iter-awgn":"0t5","@stdlib/simulate/iter/awln":"0t6","@stdlib/simulate-iter-awln":"0t7","@stdlib/simulate/iter/awun":"0t8","@stdlib/simulate-iter-awun":"0t9","@stdlib/simulate/iter/bartlett-hann-pulse":"0tA","@stdlib/simulate-iter-bartlett-hann-pulse":"0tB","@stdlib/simulate/iter/bartlett-pulse":"0tC","@stdlib/simulate-iter-bartlett-pulse":"0tD","@stdlib/simulate/iter/cosine-wave":"0tE","@stdlib/simulate-iter-cosine-wave":"0tF","@stdlib/simulate/iter/dirac-comb":"0tG","@stdlib/simulate-iter-dirac-comb":"0tH","@stdlib/simulate/iter/flat-top-pulse":"0tI","@stdlib/simulate-iter-flat-top-pulse":"0tJ","@stdlib/simulate/iter/hann-pulse":"0tK","@stdlib/simulate-iter-hann-pulse":"0tL","@stdlib/simulate/iter/lanczos-pulse":"0tM","@stdlib/simulate-iter-lanczos-pulse":"0tN","@stdlib/simulate/iter":"0tO","@stdlib/simulate-iter":"0tP","@stdlib/simulate/iter/periodic-sinc":"0tQ","@stdlib/simulate-iter-periodic-sinc":"0tR","@stdlib/simulate/iter/pulse":"0tS","@stdlib/simulate-iter-pulse":"0tT","@stdlib/simulate/iter/sawtooth-wave":"0tU","@stdlib/simulate-iter-sawtooth-wave":"0tV","@stdlib/simulate/iter/sine-wave":"0tW","@stdlib/simulate-iter-sine-wave":"0tX","@stdlib/simulate/iter/square-wave":"0tY","@stdlib/simulate-iter-square-wave":"0tZ","@stdlib/simulate/iter/triangle-wave":"0ta","@stdlib/simulate-iter-triangle-wave":"0tb","@stdlib/simulate":"0td","@stdlib/stats/anova1":"0te","@stdlib/stats-anova1":"0tf","@stdlib/stats/bartlett-test":"0tg","@stdlib/stats-bartlett-test":"0th","@stdlib/stats/base/cumax":"0ti","@stdlib/stats-base-cumax":"0tj","@stdlib/stats/base/cumaxabs":"0tk","@stdlib/stats-base-cumaxabs":"0tl","@stdlib/stats/base/cumin":"0tm","@stdlib/stats-base-cumin":"0tn","@stdlib/stats/base/cuminabs":"0to","@stdlib/stats-base-cuminabs":"0tp","@stdlib/stats/base/dcumax":"0tq","@stdlib/stats-base-dcumax":"0tr","@stdlib/stats/base/dcumaxabs":"0ts","@stdlib/stats-base-dcumaxabs":"0tt","@stdlib/stats/base/dcumin":"0tu","@stdlib/stats-base-dcumin":"0tv","@stdlib/stats/base/dcuminabs":"0tw","@stdlib/stats-base-dcuminabs":"0tx","@stdlib/stats/base/dists/arcsine/cdf":"0ty","@stdlib/stats-base-dists-arcsine-cdf":"0tz","@stdlib/stats/base/dists/arcsine/ctor":"0u0","@stdlib/stats-base-dists-arcsine-ctor":"0u1","@stdlib/stats/base/dists/arcsine/entropy":"0u2","@stdlib/stats-base-dists-arcsine-entropy":"0u3","@stdlib/stats/base/dists/arcsine/kurtosis":"0u4","@stdlib/stats-base-dists-arcsine-kurtosis":"0u5","@stdlib/stats/base/dists/arcsine/logcdf":"0u6","@stdlib/stats-base-dists-arcsine-logcdf":"0u7","@stdlib/stats/base/dists/arcsine/logpdf":"0u8","@stdlib/stats-base-dists-arcsine-logpdf":"0u9","@stdlib/stats/base/dists/arcsine/mean":"0uA","@stdlib/stats-base-dists-arcsine-mean":"0uB","@stdlib/stats/base/dists/arcsine/median":"0uC","@stdlib/stats-base-dists-arcsine-median":"0uD","@stdlib/stats/base/dists/arcsine/mode":"0uE","@stdlib/stats-base-dists-arcsine-mode":"0uF","@stdlib/stats/base/dists/arcsine":"0uG","@stdlib/stats-base-dists-arcsine":"0uH","@stdlib/stats/base/dists/arcsine/pdf":"0uI","@stdlib/stats-base-dists-arcsine-pdf":"0uJ","@stdlib/stats/base/dists/arcsine/quantile":"0uK","@stdlib/stats-base-dists-arcsine-quantile":"0uL","@stdlib/stats/base/dists/arcsine/skewness":"0uM","@stdlib/stats-base-dists-arcsine-skewness":"0uN","@stdlib/stats/base/dists/arcsine/stdev":"0uO","@stdlib/stats-base-dists-arcsine-stdev":"0uP","@stdlib/stats/base/dists/arcsine/variance":"0uQ","@stdlib/stats-base-dists-arcsine-variance":"0uR","@stdlib/stats/base/dists/bernoulli/cdf":"0uS","@stdlib/stats-base-dists-bernoulli-cdf":"0uT","@stdlib/stats/base/dists/bernoulli/ctor":"0uU","@stdlib/stats-base-dists-bernoulli-ctor":"0uV","@stdlib/stats/base/dists/bernoulli/entropy":"0uW","@stdlib/stats-base-dists-bernoulli-entropy":"0uX","@stdlib/stats/base/dists/bernoulli/kurtosis":"0uY","@stdlib/stats-base-dists-bernoulli-kurtosis":"0uZ","@stdlib/stats/base/dists/bernoulli/mean":"0ua","@stdlib/stats-base-dists-bernoulli-mean":"0ub","@stdlib/stats/base/dists/bernoulli/median":"0uc","@stdlib/stats-base-dists-bernoulli-median":"0ud","@stdlib/stats/base/dists/bernoulli/mgf":"0ue","@stdlib/stats-base-dists-bernoulli-mgf":"0uf","@stdlib/stats/base/dists/bernoulli/mode":"0ug","@stdlib/stats-base-dists-bernoulli-mode":"0uh","@stdlib/stats/base/dists/bernoulli":"0ui","@stdlib/stats-base-dists-bernoulli":"0uj","@stdlib/stats/base/dists/bernoulli/pmf":"0uk","@stdlib/stats-base-dists-bernoulli-pmf":"0ul","@stdlib/stats/base/dists/bernoulli/quantile":"0um","@stdlib/stats-base-dists-bernoulli-quantile":"0un","@stdlib/stats/base/dists/bernoulli/skewness":"0uo","@stdlib/stats-base-dists-bernoulli-skewness":"0up","@stdlib/stats/base/dists/bernoulli/stdev":"0uq","@stdlib/stats-base-dists-bernoulli-stdev":"0ur","@stdlib/stats/base/dists/bernoulli/variance":"0us","@stdlib/stats-base-dists-bernoulli-variance":"0ut","@stdlib/stats/base/dists/beta/cdf":"0uu","@stdlib/stats-base-dists-beta-cdf":"0uv","@stdlib/stats/base/dists/beta/ctor":"0uw","@stdlib/stats-base-dists-beta-ctor":"0ux","@stdlib/stats/base/dists/beta/entropy":"0uy","@stdlib/stats-base-dists-beta-entropy":"0uz","@stdlib/stats/base/dists/beta/kurtosis":"0v0","@stdlib/stats-base-dists-beta-kurtosis":"0v1","@stdlib/stats/base/dists/beta/logcdf":"0v2","@stdlib/stats-base-dists-beta-logcdf":"0v3","@stdlib/stats/base/dists/beta/logpdf":"0v4","@stdlib/stats-base-dists-beta-logpdf":"0v5","@stdlib/stats/base/dists/beta/mean":"0v6","@stdlib/stats-base-dists-beta-mean":"0v7","@stdlib/stats/base/dists/beta/median":"0v8","@stdlib/stats-base-dists-beta-median":"0v9","@stdlib/stats/base/dists/beta/mgf":"0vA","@stdlib/stats-base-dists-beta-mgf":"0vB","@stdlib/stats/base/dists/beta/mode":"0vC","@stdlib/stats-base-dists-beta-mode":"0vD","@stdlib/stats/base/dists/beta":"0vE","@stdlib/stats-base-dists-beta":"0vF","@stdlib/stats/base/dists/beta/pdf":"0vG","@stdlib/stats-base-dists-beta-pdf":"0vH","@stdlib/stats/base/dists/beta/quantile":"0vI","@stdlib/stats-base-dists-beta-quantile":"0vJ","@stdlib/stats/base/dists/beta/skewness":"0vK","@stdlib/stats-base-dists-beta-skewness":"0vL","@stdlib/stats/base/dists/beta/stdev":"0vM","@stdlib/stats-base-dists-beta-stdev":"0vN","@stdlib/stats/base/dists/beta/variance":"0vO","@stdlib/stats-base-dists-beta-variance":"0vP","@stdlib/stats/base/dists/betaprime/cdf":"0vQ","@stdlib/stats-base-dists-betaprime-cdf":"0vR","@stdlib/stats/base/dists/betaprime/ctor":"0vS","@stdlib/stats-base-dists-betaprime-ctor":"0vT","@stdlib/stats/base/dists/betaprime/kurtosis":"0vU","@stdlib/stats-base-dists-betaprime-kurtosis":"0vV","@stdlib/stats/base/dists/betaprime/logcdf":"0vW","@stdlib/stats-base-dists-betaprime-logcdf":"0vX","@stdlib/stats/base/dists/betaprime/logpdf":"0vY","@stdlib/stats-base-dists-betaprime-logpdf":"0vZ","@stdlib/stats/base/dists/betaprime/mean":"0va","@stdlib/stats-base-dists-betaprime-mean":"0vb","@stdlib/stats/base/dists/betaprime/mode":"0vc","@stdlib/stats-base-dists-betaprime-mode":"0vd","@stdlib/stats/base/dists/betaprime":"0ve","@stdlib/stats-base-dists-betaprime":"0vf","@stdlib/stats/base/dists/betaprime/pdf":"0vg","@stdlib/stats-base-dists-betaprime-pdf":"0vh","@stdlib/stats/base/dists/betaprime/quantile":"0vi","@stdlib/stats-base-dists-betaprime-quantile":"0vj","@stdlib/stats/base/dists/betaprime/skewness":"0vk","@stdlib/stats-base-dists-betaprime-skewness":"0vl","@stdlib/stats/base/dists/betaprime/stdev":"0vm","@stdlib/stats-base-dists-betaprime-stdev":"0vn","@stdlib/stats/base/dists/betaprime/variance":"0vo","@stdlib/stats-base-dists-betaprime-variance":"0vp","@stdlib/stats/base/dists/binomial/cdf":"0vq","@stdlib/stats-base-dists-binomial-cdf":"0vr","@stdlib/stats/base/dists/binomial/ctor":"0vs","@stdlib/stats-base-dists-binomial-ctor":"0vt","@stdlib/stats/base/dists/binomial/entropy":"0vu","@stdlib/stats-base-dists-binomial-entropy":"0vv","@stdlib/stats/base/dists/binomial/kurtosis":"0vw","@stdlib/stats-base-dists-binomial-kurtosis":"0vx","@stdlib/stats/base/dists/binomial/logpmf":"0vy","@stdlib/stats-base-dists-binomial-logpmf":"0vz","@stdlib/stats/base/dists/binomial/mean":"0w0","@stdlib/stats-base-dists-binomial-mean":"0w1","@stdlib/stats/base/dists/binomial/median":"0w2","@stdlib/stats-base-dists-binomial-median":"0w3","@stdlib/stats/base/dists/binomial/mgf":"0w4","@stdlib/stats-base-dists-binomial-mgf":"0w5","@stdlib/stats/base/dists/binomial/mode":"0w6","@stdlib/stats-base-dists-binomial-mode":"0w7","@stdlib/stats/base/dists/binomial":"0w8","@stdlib/stats-base-dists-binomial":"0w9","@stdlib/stats/base/dists/binomial/pmf":"0wA","@stdlib/stats-base-dists-binomial-pmf":"0wB","@stdlib/stats/base/dists/binomial/quantile":"0wC","@stdlib/stats-base-dists-binomial-quantile":"0wD","@stdlib/stats/base/dists/binomial/skewness":"0wE","@stdlib/stats-base-dists-binomial-skewness":"0wF","@stdlib/stats/base/dists/binomial/stdev":"0wG","@stdlib/stats-base-dists-binomial-stdev":"0wH","@stdlib/stats/base/dists/binomial/variance":"0wI","@stdlib/stats-base-dists-binomial-variance":"0wJ","@stdlib/stats/base/dists/cauchy/cdf":"0wK","@stdlib/stats-base-dists-cauchy-cdf":"0wL","@stdlib/stats/base/dists/cauchy/ctor":"0wM","@stdlib/stats-base-dists-cauchy-ctor":"0wN","@stdlib/stats/base/dists/cauchy/entropy":"0wO","@stdlib/stats-base-dists-cauchy-entropy":"0wP","@stdlib/stats/base/dists/cauchy/logcdf":"0wQ","@stdlib/stats-base-dists-cauchy-logcdf":"0wR","@stdlib/stats/base/dists/cauchy/logpdf":"0wS","@stdlib/stats-base-dists-cauchy-logpdf":"0wT","@stdlib/stats/base/dists/cauchy/median":"0wU","@stdlib/stats-base-dists-cauchy-median":"0wV","@stdlib/stats/base/dists/cauchy/mode":"0wW","@stdlib/stats-base-dists-cauchy-mode":"0wX","@stdlib/stats/base/dists/cauchy":"0wY","@stdlib/stats-base-dists-cauchy":"0wZ","@stdlib/stats/base/dists/cauchy/pdf":"0wa","@stdlib/stats-base-dists-cauchy-pdf":"0wb","@stdlib/stats/base/dists/cauchy/quantile":"0wc","@stdlib/stats-base-dists-cauchy-quantile":"0wd","@stdlib/stats/base/dists/chi/cdf":"0we","@stdlib/stats-base-dists-chi-cdf":"0wf","@stdlib/stats/base/dists/chi/ctor":"0wg","@stdlib/stats-base-dists-chi-ctor":"0wh","@stdlib/stats/base/dists/chi/entropy":"0wi","@stdlib/stats-base-dists-chi-entropy":"0wj","@stdlib/stats/base/dists/chi/kurtosis":"0wk","@stdlib/stats-base-dists-chi-kurtosis":"0wl","@stdlib/stats/base/dists/chi/logpdf":"0wm","@stdlib/stats-base-dists-chi-logpdf":"0wn","@stdlib/stats/base/dists/chi/mean":"0wo","@stdlib/stats-base-dists-chi-mean":"0wp","@stdlib/stats/base/dists/chi/mode":"0wq","@stdlib/stats-base-dists-chi-mode":"0wr","@stdlib/stats/base/dists/chi":"0ws","@stdlib/stats-base-dists-chi":"0wt","@stdlib/stats/base/dists/chi/pdf":"0wu","@stdlib/stats-base-dists-chi-pdf":"0wv","@stdlib/stats/base/dists/chi/quantile":"0ww","@stdlib/stats-base-dists-chi-quantile":"0wx","@stdlib/stats/base/dists/chi/skewness":"0wy","@stdlib/stats-base-dists-chi-skewness":"0wz","@stdlib/stats/base/dists/chi/stdev":"0x0","@stdlib/stats-base-dists-chi-stdev":"0x1","@stdlib/stats/base/dists/chi/variance":"0x2","@stdlib/stats-base-dists-chi-variance":"0x3","@stdlib/stats/base/dists/chisquare/cdf":"0x4","@stdlib/stats-base-dists-chisquare-cdf":"0x5","@stdlib/stats/base/dists/chisquare/ctor":"0x6","@stdlib/stats-base-dists-chisquare-ctor":"0x7","@stdlib/stats/base/dists/chisquare/entropy":"0x8","@stdlib/stats-base-dists-chisquare-entropy":"0x9","@stdlib/stats/base/dists/chisquare/kurtosis":"0xA","@stdlib/stats-base-dists-chisquare-kurtosis":"0xB","@stdlib/stats/base/dists/chisquare/logpdf":"0xC","@stdlib/stats-base-dists-chisquare-logpdf":"0xD","@stdlib/stats/base/dists/chisquare/mean":"0xE","@stdlib/stats-base-dists-chisquare-mean":"0xF","@stdlib/stats/base/dists/chisquare/median":"0xG","@stdlib/stats-base-dists-chisquare-median":"0xH","@stdlib/stats/base/dists/chisquare/mgf":"0xI","@stdlib/stats-base-dists-chisquare-mgf":"0xJ","@stdlib/stats/base/dists/chisquare/mode":"0xK","@stdlib/stats-base-dists-chisquare-mode":"0xL","@stdlib/stats/base/dists/chisquare":"0xM","@stdlib/stats-base-dists-chisquare":"0xN","@stdlib/stats/base/dists/chisquare/pdf":"0xO","@stdlib/stats-base-dists-chisquare-pdf":"0xP","@stdlib/stats/base/dists/chisquare/quantile":"0xQ","@stdlib/stats-base-dists-chisquare-quantile":"0xR","@stdlib/stats/base/dists/chisquare/skewness":"0xS","@stdlib/stats-base-dists-chisquare-skewness":"0xT","@stdlib/stats/base/dists/chisquare/stdev":"0xU","@stdlib/stats-base-dists-chisquare-stdev":"0xV","@stdlib/stats/base/dists/chisquare/variance":"0xW","@stdlib/stats-base-dists-chisquare-variance":"0xX","@stdlib/stats/base/dists/cosine/cdf":"0xY","@stdlib/stats-base-dists-cosine-cdf":"0xZ","@stdlib/stats/base/dists/cosine/ctor":"0xa","@stdlib/stats-base-dists-cosine-ctor":"0xb","@stdlib/stats/base/dists/cosine/kurtosis":"0xc","@stdlib/stats-base-dists-cosine-kurtosis":"0xd","@stdlib/stats/base/dists/cosine/logcdf":"0xe","@stdlib/stats-base-dists-cosine-logcdf":"0xf","@stdlib/stats/base/dists/cosine/logpdf":"0xg","@stdlib/stats-base-dists-cosine-logpdf":"0xh","@stdlib/stats/base/dists/cosine/mean":"0xi","@stdlib/stats-base-dists-cosine-mean":"0xj","@stdlib/stats/base/dists/cosine/median":"0xk","@stdlib/stats-base-dists-cosine-median":"0xl","@stdlib/stats/base/dists/cosine/mgf":"0xm","@stdlib/stats-base-dists-cosine-mgf":"0xn","@stdlib/stats/base/dists/cosine/mode":"0xo","@stdlib/stats-base-dists-cosine-mode":"0xp","@stdlib/stats/base/dists/cosine":"0xq","@stdlib/stats-base-dists-cosine":"0xr","@stdlib/stats/base/dists/cosine/pdf":"0xs","@stdlib/stats-base-dists-cosine-pdf":"0xt","@stdlib/stats/base/dists/cosine/quantile":"0xu","@stdlib/stats-base-dists-cosine-quantile":"0xv","@stdlib/stats/base/dists/cosine/skewness":"0xw","@stdlib/stats-base-dists-cosine-skewness":"0xx","@stdlib/stats/base/dists/cosine/stdev":"0xy","@stdlib/stats-base-dists-cosine-stdev":"0xz","@stdlib/stats/base/dists/cosine/variance":"0y0","@stdlib/stats-base-dists-cosine-variance":"0y1","@stdlib/stats/base/dists/degenerate/cdf":"0y2","@stdlib/stats-base-dists-degenerate-cdf":"0y3","@stdlib/stats/base/dists/degenerate/ctor":"0y4","@stdlib/stats-base-dists-degenerate-ctor":"0y5","@stdlib/stats/base/dists/degenerate/entropy":"0y6","@stdlib/stats-base-dists-degenerate-entropy":"0y7","@stdlib/stats/base/dists/degenerate/logcdf":"0y8","@stdlib/stats-base-dists-degenerate-logcdf":"0y9","@stdlib/stats/base/dists/degenerate/logpdf":"0yA","@stdlib/stats-base-dists-degenerate-logpdf":"0yB","@stdlib/stats/base/dists/degenerate/logpmf":"0yC","@stdlib/stats-base-dists-degenerate-logpmf":"0yD","@stdlib/stats/base/dists/degenerate/mean":"0yE","@stdlib/stats-base-dists-degenerate-mean":"0yF","@stdlib/stats/base/dists/degenerate/median":"0yG","@stdlib/stats-base-dists-degenerate-median":"0yH","@stdlib/stats/base/dists/degenerate/mgf":"0yI","@stdlib/stats-base-dists-degenerate-mgf":"0yJ","@stdlib/stats/base/dists/degenerate/mode":"0yK","@stdlib/stats-base-dists-degenerate-mode":"0yL","@stdlib/stats/base/dists/degenerate":"0yM","@stdlib/stats-base-dists-degenerate":"0yN","@stdlib/stats/base/dists/degenerate/pdf":"0yO","@stdlib/stats-base-dists-degenerate-pdf":"0yP","@stdlib/stats/base/dists/degenerate/pmf":"0yQ","@stdlib/stats-base-dists-degenerate-pmf":"0yR","@stdlib/stats/base/dists/degenerate/quantile":"0yS","@stdlib/stats-base-dists-degenerate-quantile":"0yT","@stdlib/stats/base/dists/degenerate/stdev":"0yU","@stdlib/stats-base-dists-degenerate-stdev":"0yV","@stdlib/stats/base/dists/degenerate/variance":"0yW","@stdlib/stats-base-dists-degenerate-variance":"0yX","@stdlib/stats/base/dists/discrete-uniform/cdf":"0yY","@stdlib/stats-base-dists-discrete-uniform-cdf":"0yZ","@stdlib/stats/base/dists/discrete-uniform/ctor":"0ya","@stdlib/stats-base-dists-discrete-uniform-ctor":"0yb","@stdlib/stats/base/dists/discrete-uniform/entropy":"0yc","@stdlib/stats-base-dists-discrete-uniform-entropy":"0yd","@stdlib/stats/base/dists/discrete-uniform/kurtosis":"0ye","@stdlib/stats-base-dists-discrete-uniform-kurtosis":"0yf","@stdlib/stats/base/dists/discrete-uniform/logcdf":"0yg","@stdlib/stats-base-dists-discrete-uniform-logcdf":"0yh","@stdlib/stats/base/dists/discrete-uniform/logpmf":"0yi","@stdlib/stats-base-dists-discrete-uniform-logpmf":"0yj","@stdlib/stats/base/dists/discrete-uniform/mean":"0yk","@stdlib/stats-base-dists-discrete-uniform-mean":"0yl","@stdlib/stats/base/dists/discrete-uniform/median":"0ym","@stdlib/stats-base-dists-discrete-uniform-median":"0yn","@stdlib/stats/base/dists/discrete-uniform/mgf":"0yo","@stdlib/stats-base-dists-discrete-uniform-mgf":"0yp","@stdlib/stats/base/dists/discrete-uniform":"0yq","@stdlib/stats-base-dists-discrete-uniform":"0yr","@stdlib/stats/base/dists/discrete-uniform/pmf":"0ys","@stdlib/stats-base-dists-discrete-uniform-pmf":"0yt","@stdlib/stats/base/dists/discrete-uniform/quantile":"0yu","@stdlib/stats-base-dists-discrete-uniform-quantile":"0yv","@stdlib/stats/base/dists/discrete-uniform/skewness":"0yw","@stdlib/stats-base-dists-discrete-uniform-skewness":"0yx","@stdlib/stats/base/dists/discrete-uniform/stdev":"0yy","@stdlib/stats-base-dists-discrete-uniform-stdev":"0yz","@stdlib/stats/base/dists/discrete-uniform/variance":"0z0","@stdlib/stats-base-dists-discrete-uniform-variance":"0z1","@stdlib/stats/base/dists/erlang/cdf":"0z2","@stdlib/stats-base-dists-erlang-cdf":"0z3","@stdlib/stats/base/dists/erlang/ctor":"0z4","@stdlib/stats-base-dists-erlang-ctor":"0z5","@stdlib/stats/base/dists/erlang/entropy":"0z6","@stdlib/stats-base-dists-erlang-entropy":"0z7","@stdlib/stats/base/dists/erlang/kurtosis":"0z8","@stdlib/stats-base-dists-erlang-kurtosis":"0z9","@stdlib/stats/base/dists/erlang/logpdf":"0zA","@stdlib/stats-base-dists-erlang-logpdf":"0zB","@stdlib/stats/base/dists/erlang/mean":"0zC","@stdlib/stats-base-dists-erlang-mean":"0zD","@stdlib/stats/base/dists/erlang/mgf":"0zE","@stdlib/stats-base-dists-erlang-mgf":"0zF","@stdlib/stats/base/dists/erlang/mode":"0zG","@stdlib/stats-base-dists-erlang-mode":"0zH","@stdlib/stats/base/dists/erlang":"0zI","@stdlib/stats-base-dists-erlang":"0zJ","@stdlib/stats/base/dists/erlang/pdf":"0zK","@stdlib/stats-base-dists-erlang-pdf":"0zL","@stdlib/stats/base/dists/erlang/quantile":"0zM","@stdlib/stats-base-dists-erlang-quantile":"0zN","@stdlib/stats/base/dists/erlang/skewness":"0zO","@stdlib/stats-base-dists-erlang-skewness":"0zP","@stdlib/stats/base/dists/erlang/stdev":"0zQ","@stdlib/stats-base-dists-erlang-stdev":"0zR","@stdlib/stats/base/dists/erlang/variance":"0zS","@stdlib/stats-base-dists-erlang-variance":"0zT","@stdlib/stats/base/dists/exponential/cdf":"0zU","@stdlib/stats-base-dists-exponential-cdf":"0zV","@stdlib/stats/base/dists/exponential/ctor":"0zW","@stdlib/stats-base-dists-exponential-ctor":"0zX","@stdlib/stats/base/dists/exponential/entropy":"0zY","@stdlib/stats-base-dists-exponential-entropy":"0zZ","@stdlib/stats/base/dists/exponential/kurtosis":"0za","@stdlib/stats-base-dists-exponential-kurtosis":"0zb","@stdlib/stats/base/dists/exponential/logcdf":"0zc","@stdlib/stats-base-dists-exponential-logcdf":"0zd","@stdlib/stats/base/dists/exponential/logpdf":"0ze","@stdlib/stats-base-dists-exponential-logpdf":"0zf","@stdlib/stats/base/dists/exponential/mean":"0zg","@stdlib/stats-base-dists-exponential-mean":"0zh","@stdlib/stats/base/dists/exponential/median":"0zi","@stdlib/stats-base-dists-exponential-median":"0zj","@stdlib/stats/base/dists/exponential/mgf":"0zk","@stdlib/stats-base-dists-exponential-mgf":"0zl","@stdlib/stats/base/dists/exponential/mode":"0zm","@stdlib/stats-base-dists-exponential-mode":"0zn","@stdlib/stats/base/dists/exponential":"0zo","@stdlib/stats-base-dists-exponential":"0zp","@stdlib/stats/base/dists/exponential/pdf":"0zq","@stdlib/stats-base-dists-exponential-pdf":"0zr","@stdlib/stats/base/dists/exponential/quantile":"0zs","@stdlib/stats-base-dists-exponential-quantile":"0zt","@stdlib/stats/base/dists/exponential/skewness":"0zu","@stdlib/stats-base-dists-exponential-skewness":"0zv","@stdlib/stats/base/dists/exponential/stdev":"0zw","@stdlib/stats-base-dists-exponential-stdev":"0zx","@stdlib/stats/base/dists/exponential/variance":"0zy","@stdlib/stats-base-dists-exponential-variance":"0zz","@stdlib/stats/base/dists/f/cdf":"100","@stdlib/stats-base-dists-f-cdf":"101","@stdlib/stats/base/dists/f/ctor":"102","@stdlib/stats-base-dists-f-ctor":"103","@stdlib/stats/base/dists/f/entropy":"104","@stdlib/stats-base-dists-f-entropy":"105","@stdlib/stats/base/dists/f/kurtosis":"106","@stdlib/stats-base-dists-f-kurtosis":"107","@stdlib/stats/base/dists/f/mean":"108","@stdlib/stats-base-dists-f-mean":"109","@stdlib/stats/base/dists/f/mode":"10A","@stdlib/stats-base-dists-f-mode":"10B","@stdlib/stats/base/dists/f":"10C","@stdlib/stats-base-dists-f":"10D","@stdlib/stats/base/dists/f/pdf":"10E","@stdlib/stats-base-dists-f-pdf":"10F","@stdlib/stats/base/dists/f/quantile":"10G","@stdlib/stats-base-dists-f-quantile":"10H","@stdlib/stats/base/dists/f/skewness":"10I","@stdlib/stats-base-dists-f-skewness":"10J","@stdlib/stats/base/dists/f/stdev":"10K","@stdlib/stats-base-dists-f-stdev":"10L","@stdlib/stats/base/dists/f/variance":"10M","@stdlib/stats-base-dists-f-variance":"10N","@stdlib/stats/base/dists/frechet/cdf":"10O","@stdlib/stats-base-dists-frechet-cdf":"10P","@stdlib/stats/base/dists/frechet/ctor":"10Q","@stdlib/stats-base-dists-frechet-ctor":"10R","@stdlib/stats/base/dists/frechet/entropy":"10S","@stdlib/stats-base-dists-frechet-entropy":"10T","@stdlib/stats/base/dists/frechet/kurtosis":"10U","@stdlib/stats-base-dists-frechet-kurtosis":"10V","@stdlib/stats/base/dists/frechet/logcdf":"10W","@stdlib/stats-base-dists-frechet-logcdf":"10X","@stdlib/stats/base/dists/frechet/logpdf":"10Y","@stdlib/stats-base-dists-frechet-logpdf":"10Z","@stdlib/stats/base/dists/frechet/mean":"10a","@stdlib/stats-base-dists-frechet-mean":"10b","@stdlib/stats/base/dists/frechet/median":"10c","@stdlib/stats-base-dists-frechet-median":"10d","@stdlib/stats/base/dists/frechet/mode":"10e","@stdlib/stats-base-dists-frechet-mode":"10f","@stdlib/stats/base/dists/frechet":"10g","@stdlib/stats-base-dists-frechet":"10h","@stdlib/stats/base/dists/frechet/pdf":"10i","@stdlib/stats-base-dists-frechet-pdf":"10j","@stdlib/stats/base/dists/frechet/quantile":"10k","@stdlib/stats-base-dists-frechet-quantile":"10l","@stdlib/stats/base/dists/frechet/skewness":"10m","@stdlib/stats-base-dists-frechet-skewness":"10n","@stdlib/stats/base/dists/frechet/stdev":"10o","@stdlib/stats-base-dists-frechet-stdev":"10p","@stdlib/stats/base/dists/frechet/variance":"10q","@stdlib/stats-base-dists-frechet-variance":"10r","@stdlib/stats/base/dists/gamma/cdf":"10s","@stdlib/stats-base-dists-gamma-cdf":"10t","@stdlib/stats/base/dists/gamma/ctor":"10u","@stdlib/stats-base-dists-gamma-ctor":"10v","@stdlib/stats/base/dists/gamma/entropy":"10w","@stdlib/stats-base-dists-gamma-entropy":"10x","@stdlib/stats/base/dists/gamma/kurtosis":"10y","@stdlib/stats-base-dists-gamma-kurtosis":"10z","@stdlib/stats/base/dists/gamma/logcdf":"110","@stdlib/stats-base-dists-gamma-logcdf":"111","@stdlib/stats/base/dists/gamma/logpdf":"112","@stdlib/stats-base-dists-gamma-logpdf":"113","@stdlib/stats/base/dists/gamma/mean":"114","@stdlib/stats-base-dists-gamma-mean":"115","@stdlib/stats/base/dists/gamma/mgf":"116","@stdlib/stats-base-dists-gamma-mgf":"117","@stdlib/stats/base/dists/gamma/mode":"118","@stdlib/stats-base-dists-gamma-mode":"119","@stdlib/stats/base/dists/gamma":"11A","@stdlib/stats-base-dists-gamma":"11B","@stdlib/stats/base/dists/gamma/pdf":"11C","@stdlib/stats-base-dists-gamma-pdf":"11D","@stdlib/stats/base/dists/gamma/quantile":"11E","@stdlib/stats-base-dists-gamma-quantile":"11F","@stdlib/stats/base/dists/gamma/skewness":"11G","@stdlib/stats-base-dists-gamma-skewness":"11H","@stdlib/stats/base/dists/gamma/stdev":"11I","@stdlib/stats-base-dists-gamma-stdev":"11J","@stdlib/stats/base/dists/gamma/variance":"11K","@stdlib/stats-base-dists-gamma-variance":"11L","@stdlib/stats/base/dists/geometric/cdf":"11M","@stdlib/stats-base-dists-geometric-cdf":"11N","@stdlib/stats/base/dists/geometric/ctor":"11O","@stdlib/stats-base-dists-geometric-ctor":"11P","@stdlib/stats/base/dists/geometric/entropy":"11Q","@stdlib/stats-base-dists-geometric-entropy":"11R","@stdlib/stats/base/dists/geometric/kurtosis":"11S","@stdlib/stats-base-dists-geometric-kurtosis":"11T","@stdlib/stats/base/dists/geometric/logcdf":"11U","@stdlib/stats-base-dists-geometric-logcdf":"11V","@stdlib/stats/base/dists/geometric/logpmf":"11W","@stdlib/stats-base-dists-geometric-logpmf":"11X","@stdlib/stats/base/dists/geometric/mean":"11Y","@stdlib/stats-base-dists-geometric-mean":"11Z","@stdlib/stats/base/dists/geometric/median":"11a","@stdlib/stats-base-dists-geometric-median":"11b","@stdlib/stats/base/dists/geometric/mgf":"11c","@stdlib/stats-base-dists-geometric-mgf":"11d","@stdlib/stats/base/dists/geometric/mode":"11e","@stdlib/stats-base-dists-geometric-mode":"11f","@stdlib/stats/base/dists/geometric":"11g","@stdlib/stats-base-dists-geometric":"11h","@stdlib/stats/base/dists/geometric/pmf":"11i","@stdlib/stats-base-dists-geometric-pmf":"11j","@stdlib/stats/base/dists/geometric/quantile":"11k","@stdlib/stats-base-dists-geometric-quantile":"11l","@stdlib/stats/base/dists/geometric/skewness":"11m","@stdlib/stats-base-dists-geometric-skewness":"11n","@stdlib/stats/base/dists/geometric/stdev":"11o","@stdlib/stats-base-dists-geometric-stdev":"11p","@stdlib/stats/base/dists/geometric/variance":"11q","@stdlib/stats-base-dists-geometric-variance":"11r","@stdlib/stats/base/dists/gumbel/cdf":"11s","@stdlib/stats-base-dists-gumbel-cdf":"11t","@stdlib/stats/base/dists/gumbel/ctor":"11u","@stdlib/stats-base-dists-gumbel-ctor":"11v","@stdlib/stats/base/dists/gumbel/entropy":"11w","@stdlib/stats-base-dists-gumbel-entropy":"11x","@stdlib/stats/base/dists/gumbel/kurtosis":"11y","@stdlib/stats-base-dists-gumbel-kurtosis":"11z","@stdlib/stats/base/dists/gumbel/logcdf":"120","@stdlib/stats-base-dists-gumbel-logcdf":"121","@stdlib/stats/base/dists/gumbel/logpdf":"122","@stdlib/stats-base-dists-gumbel-logpdf":"123","@stdlib/stats/base/dists/gumbel/mean":"124","@stdlib/stats-base-dists-gumbel-mean":"125","@stdlib/stats/base/dists/gumbel/median":"126","@stdlib/stats-base-dists-gumbel-median":"127","@stdlib/stats/base/dists/gumbel/mgf":"128","@stdlib/stats-base-dists-gumbel-mgf":"129","@stdlib/stats/base/dists/gumbel/mode":"12A","@stdlib/stats-base-dists-gumbel-mode":"12B","@stdlib/stats/base/dists/gumbel":"12C","@stdlib/stats-base-dists-gumbel":"12D","@stdlib/stats/base/dists/gumbel/pdf":"12E","@stdlib/stats-base-dists-gumbel-pdf":"12F","@stdlib/stats/base/dists/gumbel/quantile":"12G","@stdlib/stats-base-dists-gumbel-quantile":"12H","@stdlib/stats/base/dists/gumbel/skewness":"12I","@stdlib/stats-base-dists-gumbel-skewness":"12J","@stdlib/stats/base/dists/gumbel/stdev":"12K","@stdlib/stats-base-dists-gumbel-stdev":"12L","@stdlib/stats/base/dists/gumbel/variance":"12M","@stdlib/stats-base-dists-gumbel-variance":"12N","@stdlib/stats/base/dists/hypergeometric/cdf":"12O","@stdlib/stats-base-dists-hypergeometric-cdf":"12P","@stdlib/stats/base/dists/hypergeometric/ctor":"12Q","@stdlib/stats-base-dists-hypergeometric-ctor":"12R","@stdlib/stats/base/dists/hypergeometric/kurtosis":"12S","@stdlib/stats-base-dists-hypergeometric-kurtosis":"12T","@stdlib/stats/base/dists/hypergeometric/logpmf":"12U","@stdlib/stats-base-dists-hypergeometric-logpmf":"12V","@stdlib/stats/base/dists/hypergeometric/mean":"12W","@stdlib/stats-base-dists-hypergeometric-mean":"12X","@stdlib/stats/base/dists/hypergeometric/mode":"12Y","@stdlib/stats-base-dists-hypergeometric-mode":"12Z","@stdlib/stats/base/dists/hypergeometric":"12a","@stdlib/stats-base-dists-hypergeometric":"12b","@stdlib/stats/base/dists/hypergeometric/pmf":"12c","@stdlib/stats-base-dists-hypergeometric-pmf":"12d","@stdlib/stats/base/dists/hypergeometric/quantile":"12e","@stdlib/stats-base-dists-hypergeometric-quantile":"12f","@stdlib/stats/base/dists/hypergeometric/skewness":"12g","@stdlib/stats-base-dists-hypergeometric-skewness":"12h","@stdlib/stats/base/dists/hypergeometric/stdev":"12i","@stdlib/stats-base-dists-hypergeometric-stdev":"12j","@stdlib/stats/base/dists/hypergeometric/variance":"12k","@stdlib/stats-base-dists-hypergeometric-variance":"12l","@stdlib/stats/base/dists/invgamma/cdf":"12m","@stdlib/stats-base-dists-invgamma-cdf":"12n","@stdlib/stats/base/dists/invgamma/ctor":"12o","@stdlib/stats-base-dists-invgamma-ctor":"12p","@stdlib/stats/base/dists/invgamma/entropy":"12q","@stdlib/stats-base-dists-invgamma-entropy":"12r","@stdlib/stats/base/dists/invgamma/kurtosis":"12s","@stdlib/stats-base-dists-invgamma-kurtosis":"12t","@stdlib/stats/base/dists/invgamma/logpdf":"12u","@stdlib/stats-base-dists-invgamma-logpdf":"12v","@stdlib/stats/base/dists/invgamma/mean":"12w","@stdlib/stats-base-dists-invgamma-mean":"12x","@stdlib/stats/base/dists/invgamma/mode":"12y","@stdlib/stats-base-dists-invgamma-mode":"12z","@stdlib/stats/base/dists/invgamma":"130","@stdlib/stats-base-dists-invgamma":"131","@stdlib/stats/base/dists/invgamma/pdf":"132","@stdlib/stats-base-dists-invgamma-pdf":"133","@stdlib/stats/base/dists/invgamma/quantile":"134","@stdlib/stats-base-dists-invgamma-quantile":"135","@stdlib/stats/base/dists/invgamma/skewness":"136","@stdlib/stats-base-dists-invgamma-skewness":"137","@stdlib/stats/base/dists/invgamma/stdev":"138","@stdlib/stats-base-dists-invgamma-stdev":"139","@stdlib/stats/base/dists/invgamma/variance":"13A","@stdlib/stats-base-dists-invgamma-variance":"13B","@stdlib/stats/base/dists/kumaraswamy/cdf":"13C","@stdlib/stats-base-dists-kumaraswamy-cdf":"13D","@stdlib/stats/base/dists/kumaraswamy/ctor":"13E","@stdlib/stats-base-dists-kumaraswamy-ctor":"13F","@stdlib/stats/base/dists/kumaraswamy/kurtosis":"13G","@stdlib/stats-base-dists-kumaraswamy-kurtosis":"13H","@stdlib/stats/base/dists/kumaraswamy/logcdf":"13I","@stdlib/stats-base-dists-kumaraswamy-logcdf":"13J","@stdlib/stats/base/dists/kumaraswamy/logpdf":"13K","@stdlib/stats-base-dists-kumaraswamy-logpdf":"13L","@stdlib/stats/base/dists/kumaraswamy/mean":"13M","@stdlib/stats-base-dists-kumaraswamy-mean":"13N","@stdlib/stats/base/dists/kumaraswamy/median":"13O","@stdlib/stats-base-dists-kumaraswamy-median":"13P","@stdlib/stats/base/dists/kumaraswamy/mode":"13Q","@stdlib/stats-base-dists-kumaraswamy-mode":"13R","@stdlib/stats/base/dists/kumaraswamy":"13S","@stdlib/stats-base-dists-kumaraswamy":"13T","@stdlib/stats/base/dists/kumaraswamy/pdf":"13U","@stdlib/stats-base-dists-kumaraswamy-pdf":"13V","@stdlib/stats/base/dists/kumaraswamy/quantile":"13W","@stdlib/stats-base-dists-kumaraswamy-quantile":"13X","@stdlib/stats/base/dists/kumaraswamy/skewness":"13Y","@stdlib/stats-base-dists-kumaraswamy-skewness":"13Z","@stdlib/stats/base/dists/kumaraswamy/stdev":"13a","@stdlib/stats-base-dists-kumaraswamy-stdev":"13b","@stdlib/stats/base/dists/kumaraswamy/variance":"13c","@stdlib/stats-base-dists-kumaraswamy-variance":"13d","@stdlib/stats/base/dists/laplace/cdf":"13e","@stdlib/stats-base-dists-laplace-cdf":"13f","@stdlib/stats/base/dists/laplace/ctor":"13g","@stdlib/stats-base-dists-laplace-ctor":"13h","@stdlib/stats/base/dists/laplace/entropy":"13i","@stdlib/stats-base-dists-laplace-entropy":"13j","@stdlib/stats/base/dists/laplace/kurtosis":"13k","@stdlib/stats-base-dists-laplace-kurtosis":"13l","@stdlib/stats/base/dists/laplace/logcdf":"13m","@stdlib/stats-base-dists-laplace-logcdf":"13n","@stdlib/stats/base/dists/laplace/logpdf":"13o","@stdlib/stats-base-dists-laplace-logpdf":"13p","@stdlib/stats/base/dists/laplace/mean":"13q","@stdlib/stats-base-dists-laplace-mean":"13r","@stdlib/stats/base/dists/laplace/median":"13s","@stdlib/stats-base-dists-laplace-median":"13t","@stdlib/stats/base/dists/laplace/mgf":"13u","@stdlib/stats-base-dists-laplace-mgf":"13v","@stdlib/stats/base/dists/laplace/mode":"13w","@stdlib/stats-base-dists-laplace-mode":"13x","@stdlib/stats/base/dists/laplace":"13y","@stdlib/stats-base-dists-laplace":"13z","@stdlib/stats/base/dists/laplace/pdf":"140","@stdlib/stats-base-dists-laplace-pdf":"141","@stdlib/stats/base/dists/laplace/quantile":"142","@stdlib/stats-base-dists-laplace-quantile":"143","@stdlib/stats/base/dists/laplace/skewness":"144","@stdlib/stats-base-dists-laplace-skewness":"145","@stdlib/stats/base/dists/laplace/stdev":"146","@stdlib/stats-base-dists-laplace-stdev":"147","@stdlib/stats/base/dists/laplace/variance":"148","@stdlib/stats-base-dists-laplace-variance":"149","@stdlib/stats/base/dists/levy/cdf":"14A","@stdlib/stats-base-dists-levy-cdf":"14B","@stdlib/stats/base/dists/levy/ctor":"14C","@stdlib/stats-base-dists-levy-ctor":"14D","@stdlib/stats/base/dists/levy/entropy":"14E","@stdlib/stats-base-dists-levy-entropy":"14F","@stdlib/stats/base/dists/levy/logcdf":"14G","@stdlib/stats-base-dists-levy-logcdf":"14H","@stdlib/stats/base/dists/levy/logpdf":"14I","@stdlib/stats-base-dists-levy-logpdf":"14J","@stdlib/stats/base/dists/levy/mean":"14K","@stdlib/stats-base-dists-levy-mean":"14L","@stdlib/stats/base/dists/levy/median":"14M","@stdlib/stats-base-dists-levy-median":"14N","@stdlib/stats/base/dists/levy/mode":"14O","@stdlib/stats-base-dists-levy-mode":"14P","@stdlib/stats/base/dists/levy":"14Q","@stdlib/stats-base-dists-levy":"14R","@stdlib/stats/base/dists/levy/pdf":"14S","@stdlib/stats-base-dists-levy-pdf":"14T","@stdlib/stats/base/dists/levy/quantile":"14U","@stdlib/stats-base-dists-levy-quantile":"14V","@stdlib/stats/base/dists/levy/stdev":"14W","@stdlib/stats-base-dists-levy-stdev":"14X","@stdlib/stats/base/dists/levy/variance":"14Y","@stdlib/stats-base-dists-levy-variance":"14Z","@stdlib/stats/base/dists/logistic/cdf":"14a","@stdlib/stats-base-dists-logistic-cdf":"14b","@stdlib/stats/base/dists/logistic/ctor":"14c","@stdlib/stats-base-dists-logistic-ctor":"14d","@stdlib/stats/base/dists/logistic/entropy":"14e","@stdlib/stats-base-dists-logistic-entropy":"14f","@stdlib/stats/base/dists/logistic/kurtosis":"14g","@stdlib/stats-base-dists-logistic-kurtosis":"14h","@stdlib/stats/base/dists/logistic/logcdf":"14i","@stdlib/stats-base-dists-logistic-logcdf":"14j","@stdlib/stats/base/dists/logistic/logpdf":"14k","@stdlib/stats-base-dists-logistic-logpdf":"14l","@stdlib/stats/base/dists/logistic/mean":"14m","@stdlib/stats-base-dists-logistic-mean":"14n","@stdlib/stats/base/dists/logistic/median":"14o","@stdlib/stats-base-dists-logistic-median":"14p","@stdlib/stats/base/dists/logistic/mgf":"14q","@stdlib/stats-base-dists-logistic-mgf":"14r","@stdlib/stats/base/dists/logistic/mode":"14s","@stdlib/stats-base-dists-logistic-mode":"14t","@stdlib/stats/base/dists/logistic":"14u","@stdlib/stats-base-dists-logistic":"14v","@stdlib/stats/base/dists/logistic/pdf":"14w","@stdlib/stats-base-dists-logistic-pdf":"14x","@stdlib/stats/base/dists/logistic/quantile":"14y","@stdlib/stats-base-dists-logistic-quantile":"14z","@stdlib/stats/base/dists/logistic/skewness":"150","@stdlib/stats-base-dists-logistic-skewness":"151","@stdlib/stats/base/dists/logistic/stdev":"152","@stdlib/stats-base-dists-logistic-stdev":"153","@stdlib/stats/base/dists/logistic/variance":"154","@stdlib/stats-base-dists-logistic-variance":"155","@stdlib/stats/base/dists/lognormal/cdf":"156","@stdlib/stats-base-dists-lognormal-cdf":"157","@stdlib/stats/base/dists/lognormal/ctor":"158","@stdlib/stats-base-dists-lognormal-ctor":"159","@stdlib/stats/base/dists/lognormal/entropy":"15A","@stdlib/stats-base-dists-lognormal-entropy":"15B","@stdlib/stats/base/dists/lognormal/kurtosis":"15C","@stdlib/stats-base-dists-lognormal-kurtosis":"15D","@stdlib/stats/base/dists/lognormal/logpdf":"15E","@stdlib/stats-base-dists-lognormal-logpdf":"15F","@stdlib/stats/base/dists/lognormal/mean":"15G","@stdlib/stats-base-dists-lognormal-mean":"15H","@stdlib/stats/base/dists/lognormal/median":"15I","@stdlib/stats-base-dists-lognormal-median":"15J","@stdlib/stats/base/dists/lognormal/mode":"15K","@stdlib/stats-base-dists-lognormal-mode":"15L","@stdlib/stats/base/dists/lognormal":"15M","@stdlib/stats-base-dists-lognormal":"15N","@stdlib/stats/base/dists/lognormal/pdf":"15O","@stdlib/stats-base-dists-lognormal-pdf":"15P","@stdlib/stats/base/dists/lognormal/quantile":"15Q","@stdlib/stats-base-dists-lognormal-quantile":"15R","@stdlib/stats/base/dists/lognormal/skewness":"15S","@stdlib/stats-base-dists-lognormal-skewness":"15T","@stdlib/stats/base/dists/lognormal/stdev":"15U","@stdlib/stats-base-dists-lognormal-stdev":"15V","@stdlib/stats/base/dists/lognormal/variance":"15W","@stdlib/stats-base-dists-lognormal-variance":"15X","@stdlib/stats/base/dists/negative-binomial/cdf":"15Y","@stdlib/stats-base-dists-negative-binomial-cdf":"15Z","@stdlib/stats/base/dists/negative-binomial/ctor":"15a","@stdlib/stats-base-dists-negative-binomial-ctor":"15b","@stdlib/stats/base/dists/negative-binomial/kurtosis":"15c","@stdlib/stats-base-dists-negative-binomial-kurtosis":"15d","@stdlib/stats/base/dists/negative-binomial/logpmf":"15e","@stdlib/stats-base-dists-negative-binomial-logpmf":"15f","@stdlib/stats/base/dists/negative-binomial/mean":"15g","@stdlib/stats-base-dists-negative-binomial-mean":"15h","@stdlib/stats/base/dists/negative-binomial/mgf":"15i","@stdlib/stats-base-dists-negative-binomial-mgf":"15j","@stdlib/stats/base/dists/negative-binomial/mode":"15k","@stdlib/stats-base-dists-negative-binomial-mode":"15l","@stdlib/stats/base/dists/negative-binomial":"15m","@stdlib/stats-base-dists-negative-binomial":"15n","@stdlib/stats/base/dists/negative-binomial/pmf":"15o","@stdlib/stats-base-dists-negative-binomial-pmf":"15p","@stdlib/stats/base/dists/negative-binomial/quantile":"15q","@stdlib/stats-base-dists-negative-binomial-quantile":"15r","@stdlib/stats/base/dists/negative-binomial/skewness":"15s","@stdlib/stats-base-dists-negative-binomial-skewness":"15t","@stdlib/stats/base/dists/negative-binomial/stdev":"15u","@stdlib/stats-base-dists-negative-binomial-stdev":"15v","@stdlib/stats/base/dists/negative-binomial/variance":"15w","@stdlib/stats-base-dists-negative-binomial-variance":"15x","@stdlib/stats/base/dists/normal/cdf":"15y","@stdlib/stats-base-dists-normal-cdf":"15z","@stdlib/stats/base/dists/normal/ctor":"160","@stdlib/stats-base-dists-normal-ctor":"161","@stdlib/stats/base/dists/normal/entropy":"162","@stdlib/stats-base-dists-normal-entropy":"163","@stdlib/stats/base/dists/normal/kurtosis":"164","@stdlib/stats-base-dists-normal-kurtosis":"165","@stdlib/stats/base/dists/normal/logpdf":"166","@stdlib/stats-base-dists-normal-logpdf":"167","@stdlib/stats/base/dists/normal/mean":"168","@stdlib/stats-base-dists-normal-mean":"169","@stdlib/stats/base/dists/normal/median":"16A","@stdlib/stats-base-dists-normal-median":"16B","@stdlib/stats/base/dists/normal/mgf":"16C","@stdlib/stats-base-dists-normal-mgf":"16D","@stdlib/stats/base/dists/normal/mode":"16E","@stdlib/stats-base-dists-normal-mode":"16F","@stdlib/stats/base/dists/normal":"16G","@stdlib/stats-base-dists-normal":"16H","@stdlib/stats/base/dists/normal/pdf":"16I","@stdlib/stats-base-dists-normal-pdf":"16J","@stdlib/stats/base/dists/normal/quantile":"16K","@stdlib/stats-base-dists-normal-quantile":"16L","@stdlib/stats/base/dists/normal/skewness":"16M","@stdlib/stats-base-dists-normal-skewness":"16N","@stdlib/stats/base/dists/normal/stdev":"16O","@stdlib/stats-base-dists-normal-stdev":"16P","@stdlib/stats/base/dists/normal/variance":"16Q","@stdlib/stats-base-dists-normal-variance":"16R","@stdlib/stats/base/dists":"16S","@stdlib/stats-base-dists":"16T","@stdlib/stats/base/dists/pareto-type1/cdf":"16U","@stdlib/stats-base-dists-pareto-type1-cdf":"16V","@stdlib/stats/base/dists/pareto-type1/ctor":"16W","@stdlib/stats-base-dists-pareto-type1-ctor":"16X","@stdlib/stats/base/dists/pareto-type1/entropy":"16Y","@stdlib/stats-base-dists-pareto-type1-entropy":"16Z","@stdlib/stats/base/dists/pareto-type1/kurtosis":"16a","@stdlib/stats-base-dists-pareto-type1-kurtosis":"16b","@stdlib/stats/base/dists/pareto-type1/logcdf":"16c","@stdlib/stats-base-dists-pareto-type1-logcdf":"16d","@stdlib/stats/base/dists/pareto-type1/logpdf":"16e","@stdlib/stats-base-dists-pareto-type1-logpdf":"16f","@stdlib/stats/base/dists/pareto-type1/mean":"16g","@stdlib/stats-base-dists-pareto-type1-mean":"16h","@stdlib/stats/base/dists/pareto-type1/median":"16i","@stdlib/stats-base-dists-pareto-type1-median":"16j","@stdlib/stats/base/dists/pareto-type1/mode":"16k","@stdlib/stats-base-dists-pareto-type1-mode":"16l","@stdlib/stats/base/dists/pareto-type1":"16m","@stdlib/stats-base-dists-pareto-type1":"16n","@stdlib/stats/base/dists/pareto-type1/pdf":"16o","@stdlib/stats-base-dists-pareto-type1-pdf":"16p","@stdlib/stats/base/dists/pareto-type1/quantile":"16q","@stdlib/stats-base-dists-pareto-type1-quantile":"16r","@stdlib/stats/base/dists/pareto-type1/skewness":"16s","@stdlib/stats-base-dists-pareto-type1-skewness":"16t","@stdlib/stats/base/dists/pareto-type1/stdev":"16u","@stdlib/stats-base-dists-pareto-type1-stdev":"16v","@stdlib/stats/base/dists/pareto-type1/variance":"16w","@stdlib/stats-base-dists-pareto-type1-variance":"16x","@stdlib/stats/base/dists/poisson/cdf":"16y","@stdlib/stats-base-dists-poisson-cdf":"16z","@stdlib/stats/base/dists/poisson/ctor":"170","@stdlib/stats-base-dists-poisson-ctor":"171","@stdlib/stats/base/dists/poisson/entropy":"172","@stdlib/stats-base-dists-poisson-entropy":"173","@stdlib/stats/base/dists/poisson/kurtosis":"174","@stdlib/stats-base-dists-poisson-kurtosis":"175","@stdlib/stats/base/dists/poisson/logpmf":"176","@stdlib/stats-base-dists-poisson-logpmf":"177","@stdlib/stats/base/dists/poisson/mean":"178","@stdlib/stats-base-dists-poisson-mean":"179","@stdlib/stats/base/dists/poisson/median":"17A","@stdlib/stats-base-dists-poisson-median":"17B","@stdlib/stats/base/dists/poisson/mgf":"17C","@stdlib/stats-base-dists-poisson-mgf":"17D","@stdlib/stats/base/dists/poisson/mode":"17E","@stdlib/stats-base-dists-poisson-mode":"17F","@stdlib/stats/base/dists/poisson":"17G","@stdlib/stats-base-dists-poisson":"17H","@stdlib/stats/base/dists/poisson/pmf":"17I","@stdlib/stats-base-dists-poisson-pmf":"17J","@stdlib/stats/base/dists/poisson/quantile":"17K","@stdlib/stats-base-dists-poisson-quantile":"17L","@stdlib/stats/base/dists/poisson/skewness":"17M","@stdlib/stats-base-dists-poisson-skewness":"17N","@stdlib/stats/base/dists/poisson/stdev":"17O","@stdlib/stats-base-dists-poisson-stdev":"17P","@stdlib/stats/base/dists/poisson/variance":"17Q","@stdlib/stats-base-dists-poisson-variance":"17R","@stdlib/stats/base/dists/rayleigh/cdf":"17S","@stdlib/stats-base-dists-rayleigh-cdf":"17T","@stdlib/stats/base/dists/rayleigh/ctor":"17U","@stdlib/stats-base-dists-rayleigh-ctor":"17V","@stdlib/stats/base/dists/rayleigh/entropy":"17W","@stdlib/stats-base-dists-rayleigh-entropy":"17X","@stdlib/stats/base/dists/rayleigh/kurtosis":"17Y","@stdlib/stats-base-dists-rayleigh-kurtosis":"17Z","@stdlib/stats/base/dists/rayleigh/logcdf":"17a","@stdlib/stats-base-dists-rayleigh-logcdf":"17b","@stdlib/stats/base/dists/rayleigh/logpdf":"17c","@stdlib/stats-base-dists-rayleigh-logpdf":"17d","@stdlib/stats/base/dists/rayleigh/mean":"17e","@stdlib/stats-base-dists-rayleigh-mean":"17f","@stdlib/stats/base/dists/rayleigh/median":"17g","@stdlib/stats-base-dists-rayleigh-median":"17h","@stdlib/stats/base/dists/rayleigh/mgf":"17i","@stdlib/stats-base-dists-rayleigh-mgf":"17j","@stdlib/stats/base/dists/rayleigh/mode":"17k","@stdlib/stats-base-dists-rayleigh-mode":"17l","@stdlib/stats/base/dists/rayleigh":"17m","@stdlib/stats-base-dists-rayleigh":"17n","@stdlib/stats/base/dists/rayleigh/pdf":"17o","@stdlib/stats-base-dists-rayleigh-pdf":"17p","@stdlib/stats/base/dists/rayleigh/quantile":"17q","@stdlib/stats-base-dists-rayleigh-quantile":"17r","@stdlib/stats/base/dists/rayleigh/skewness":"17s","@stdlib/stats-base-dists-rayleigh-skewness":"17t","@stdlib/stats/base/dists/rayleigh/stdev":"17u","@stdlib/stats-base-dists-rayleigh-stdev":"17v","@stdlib/stats/base/dists/rayleigh/variance":"17w","@stdlib/stats-base-dists-rayleigh-variance":"17x","@stdlib/stats/base/dists/signrank/cdf":"17y","@stdlib/stats-base-dists-signrank-cdf":"17z","@stdlib/stats/base/dists/signrank":"180","@stdlib/stats-base-dists-signrank":"181","@stdlib/stats/base/dists/signrank/pdf":"182","@stdlib/stats-base-dists-signrank-pdf":"183","@stdlib/stats/base/dists/signrank/quantile":"184","@stdlib/stats-base-dists-signrank-quantile":"185","@stdlib/stats/base/dists/t/cdf":"186","@stdlib/stats-base-dists-t-cdf":"187","@stdlib/stats/base/dists/t/ctor":"188","@stdlib/stats-base-dists-t-ctor":"189","@stdlib/stats/base/dists/t/entropy":"18A","@stdlib/stats-base-dists-t-entropy":"18B","@stdlib/stats/base/dists/t/kurtosis":"18C","@stdlib/stats-base-dists-t-kurtosis":"18D","@stdlib/stats/base/dists/t/logcdf":"18E","@stdlib/stats-base-dists-t-logcdf":"18F","@stdlib/stats/base/dists/t/logpdf":"18G","@stdlib/stats-base-dists-t-logpdf":"18H","@stdlib/stats/base/dists/t/mean":"18I","@stdlib/stats-base-dists-t-mean":"18J","@stdlib/stats/base/dists/t/median":"18K","@stdlib/stats-base-dists-t-median":"18L","@stdlib/stats/base/dists/t/mode":"18M","@stdlib/stats-base-dists-t-mode":"18N","@stdlib/stats/base/dists/t":"18O","@stdlib/stats-base-dists-t":"18P","@stdlib/stats/base/dists/t/pdf":"18Q","@stdlib/stats-base-dists-t-pdf":"18R","@stdlib/stats/base/dists/t/quantile":"18S","@stdlib/stats-base-dists-t-quantile":"18T","@stdlib/stats/base/dists/t/skewness":"18U","@stdlib/stats-base-dists-t-skewness":"18V","@stdlib/stats/base/dists/t/stdev":"18W","@stdlib/stats-base-dists-t-stdev":"18X","@stdlib/stats/base/dists/t/variance":"18Y","@stdlib/stats-base-dists-t-variance":"18Z","@stdlib/stats/base/dists/triangular/cdf":"18a","@stdlib/stats-base-dists-triangular-cdf":"18b","@stdlib/stats/base/dists/triangular/ctor":"18c","@stdlib/stats-base-dists-triangular-ctor":"18d","@stdlib/stats/base/dists/triangular/entropy":"18e","@stdlib/stats-base-dists-triangular-entropy":"18f","@stdlib/stats/base/dists/triangular/kurtosis":"18g","@stdlib/stats-base-dists-triangular-kurtosis":"18h","@stdlib/stats/base/dists/triangular/logcdf":"18i","@stdlib/stats-base-dists-triangular-logcdf":"18j","@stdlib/stats/base/dists/triangular/logpdf":"18k","@stdlib/stats-base-dists-triangular-logpdf":"18l","@stdlib/stats/base/dists/triangular/mean":"18m","@stdlib/stats-base-dists-triangular-mean":"18n","@stdlib/stats/base/dists/triangular/median":"18o","@stdlib/stats-base-dists-triangular-median":"18p","@stdlib/stats/base/dists/triangular/mgf":"18q","@stdlib/stats-base-dists-triangular-mgf":"18r","@stdlib/stats/base/dists/triangular/mode":"18s","@stdlib/stats-base-dists-triangular-mode":"18t","@stdlib/stats/base/dists/triangular":"18u","@stdlib/stats-base-dists-triangular":"18v","@stdlib/stats/base/dists/triangular/pdf":"18w","@stdlib/stats-base-dists-triangular-pdf":"18x","@stdlib/stats/base/dists/triangular/quantile":"18y","@stdlib/stats-base-dists-triangular-quantile":"18z","@stdlib/stats/base/dists/triangular/skewness":"190","@stdlib/stats-base-dists-triangular-skewness":"191","@stdlib/stats/base/dists/triangular/stdev":"192","@stdlib/stats-base-dists-triangular-stdev":"193","@stdlib/stats/base/dists/triangular/variance":"194","@stdlib/stats-base-dists-triangular-variance":"195","@stdlib/stats/base/dists/truncated-normal":"196","@stdlib/stats-base-dists-truncated-normal":"197","@stdlib/stats/base/dists/truncated-normal/pdf":"198","@stdlib/stats-base-dists-truncated-normal-pdf":"199","@stdlib/stats/base/dists/uniform/cdf":"19A","@stdlib/stats-base-dists-uniform-cdf":"19B","@stdlib/stats/base/dists/uniform/ctor":"19C","@stdlib/stats-base-dists-uniform-ctor":"19D","@stdlib/stats/base/dists/uniform/entropy":"19E","@stdlib/stats-base-dists-uniform-entropy":"19F","@stdlib/stats/base/dists/uniform/kurtosis":"19G","@stdlib/stats-base-dists-uniform-kurtosis":"19H","@stdlib/stats/base/dists/uniform/logcdf":"19I","@stdlib/stats-base-dists-uniform-logcdf":"19J","@stdlib/stats/base/dists/uniform/logpdf":"19K","@stdlib/stats-base-dists-uniform-logpdf":"19L","@stdlib/stats/base/dists/uniform/mean":"19M","@stdlib/stats-base-dists-uniform-mean":"19N","@stdlib/stats/base/dists/uniform/median":"19O","@stdlib/stats-base-dists-uniform-median":"19P","@stdlib/stats/base/dists/uniform/mgf":"19Q","@stdlib/stats-base-dists-uniform-mgf":"19R","@stdlib/stats/base/dists/uniform":"19S","@stdlib/stats-base-dists-uniform":"19T","@stdlib/stats/base/dists/uniform/pdf":"19U","@stdlib/stats-base-dists-uniform-pdf":"19V","@stdlib/stats/base/dists/uniform/quantile":"19W","@stdlib/stats-base-dists-uniform-quantile":"19X","@stdlib/stats/base/dists/uniform/skewness":"19Y","@stdlib/stats-base-dists-uniform-skewness":"19Z","@stdlib/stats/base/dists/uniform/stdev":"19a","@stdlib/stats-base-dists-uniform-stdev":"19b","@stdlib/stats/base/dists/uniform/variance":"19c","@stdlib/stats-base-dists-uniform-variance":"19d","@stdlib/stats/base/dists/weibull/cdf":"19e","@stdlib/stats-base-dists-weibull-cdf":"19f","@stdlib/stats/base/dists/weibull/ctor":"19g","@stdlib/stats-base-dists-weibull-ctor":"19h","@stdlib/stats/base/dists/weibull/entropy":"19i","@stdlib/stats-base-dists-weibull-entropy":"19j","@stdlib/stats/base/dists/weibull/kurtosis":"19k","@stdlib/stats-base-dists-weibull-kurtosis":"19l","@stdlib/stats/base/dists/weibull/logcdf":"19m","@stdlib/stats-base-dists-weibull-logcdf":"19n","@stdlib/stats/base/dists/weibull/logpdf":"19o","@stdlib/stats-base-dists-weibull-logpdf":"19p","@stdlib/stats/base/dists/weibull/mean":"19q","@stdlib/stats-base-dists-weibull-mean":"19r","@stdlib/stats/base/dists/weibull/median":"19s","@stdlib/stats-base-dists-weibull-median":"19t","@stdlib/stats/base/dists/weibull/mgf":"19u","@stdlib/stats-base-dists-weibull-mgf":"19v","@stdlib/stats/base/dists/weibull/mode":"19w","@stdlib/stats-base-dists-weibull-mode":"19x","@stdlib/stats/base/dists/weibull":"19y","@stdlib/stats-base-dists-weibull":"19z","@stdlib/stats/base/dists/weibull/pdf":"1A0","@stdlib/stats-base-dists-weibull-pdf":"1A1","@stdlib/stats/base/dists/weibull/quantile":"1A2","@stdlib/stats-base-dists-weibull-quantile":"1A3","@stdlib/stats/base/dists/weibull/skewness":"1A4","@stdlib/stats-base-dists-weibull-skewness":"1A5","@stdlib/stats/base/dists/weibull/stdev":"1A6","@stdlib/stats-base-dists-weibull-stdev":"1A7","@stdlib/stats/base/dists/weibull/variance":"1A8","@stdlib/stats-base-dists-weibull-variance":"1A9","@stdlib/stats/base/dmax":"1AA","@stdlib/stats-base-dmax":"1AB","@stdlib/stats/base/dmaxabs":"1AC","@stdlib/stats-base-dmaxabs":"1AD","@stdlib/stats/base/dmaxabssorted":"1AE","@stdlib/stats-base-dmaxabssorted":"1AF","@stdlib/stats/base/dmaxsorted":"1AG","@stdlib/stats-base-dmaxsorted":"1AH","@stdlib/stats/base/dmean":"1AI","@stdlib/stats-base-dmean":"1AJ","@stdlib/stats/base/dmeankbn":"1AK","@stdlib/stats-base-dmeankbn":"1AL","@stdlib/stats/base/dmeankbn2":"1AM","@stdlib/stats-base-dmeankbn2":"1AN","@stdlib/stats/base/dmeanli":"1AO","@stdlib/stats-base-dmeanli":"1AP","@stdlib/stats/base/dmeanlipw":"1AQ","@stdlib/stats-base-dmeanlipw":"1AR","@stdlib/stats/base/dmeanors":"1AS","@stdlib/stats-base-dmeanors":"1AT","@stdlib/stats/base/dmeanpn":"1AU","@stdlib/stats-base-dmeanpn":"1AV","@stdlib/stats/base/dmeanpw":"1AW","@stdlib/stats-base-dmeanpw":"1AX","@stdlib/stats/base/dmeanstdev":"1AY","@stdlib/stats-base-dmeanstdev":"1AZ","@stdlib/stats/base/dmeanstdevpn":"1Aa","@stdlib/stats-base-dmeanstdevpn":"1Ab","@stdlib/stats/base/dmeanvar":"1Ac","@stdlib/stats-base-dmeanvar":"1Ad","@stdlib/stats/base/dmeanvarpn":"1Ae","@stdlib/stats-base-dmeanvarpn":"1Af","@stdlib/stats/base/dmeanwd":"1Ag","@stdlib/stats-base-dmeanwd":"1Ah","@stdlib/stats/base/dmediansorted":"1Ai","@stdlib/stats-base-dmediansorted":"1Aj","@stdlib/stats/base/dmidrange":"1Ak","@stdlib/stats-base-dmidrange":"1Al","@stdlib/stats/base/dmin":"1Am","@stdlib/stats-base-dmin":"1An","@stdlib/stats/base/dminabs":"1Ao","@stdlib/stats-base-dminabs":"1Ap","@stdlib/stats/base/dminsorted":"1Aq","@stdlib/stats-base-dminsorted":"1Ar","@stdlib/stats/base/dmskmax":"1As","@stdlib/stats-base-dmskmax":"1At","@stdlib/stats/base/dmskmin":"1Au","@stdlib/stats-base-dmskmin":"1Av","@stdlib/stats/base/dmskrange":"1Aw","@stdlib/stats-base-dmskrange":"1Ax","@stdlib/stats/base/dnanmax":"1Ay","@stdlib/stats-base-dnanmax":"1Az","@stdlib/stats/base/dnanmaxabs":"1B0","@stdlib/stats-base-dnanmaxabs":"1B1","@stdlib/stats/base/dnanmean":"1B2","@stdlib/stats-base-dnanmean":"1B3","@stdlib/stats/base/dnanmeanors":"1B4","@stdlib/stats-base-dnanmeanors":"1B5","@stdlib/stats/base/dnanmeanpn":"1B6","@stdlib/stats-base-dnanmeanpn":"1B7","@stdlib/stats/base/dnanmeanpw":"1B8","@stdlib/stats-base-dnanmeanpw":"1B9","@stdlib/stats/base/dnanmeanwd":"1BA","@stdlib/stats-base-dnanmeanwd":"1BB","@stdlib/stats/base/dnanmin":"1BC","@stdlib/stats-base-dnanmin":"1BD","@stdlib/stats/base/dnanminabs":"1BE","@stdlib/stats-base-dnanminabs":"1BF","@stdlib/stats/base/dnanmskmax":"1BG","@stdlib/stats-base-dnanmskmax":"1BH","@stdlib/stats/base/dnanmskmin":"1BI","@stdlib/stats-base-dnanmskmin":"1BJ","@stdlib/stats/base/dnanmskrange":"1BK","@stdlib/stats-base-dnanmskrange":"1BL","@stdlib/stats/base/dnanrange":"1BM","@stdlib/stats-base-dnanrange":"1BN","@stdlib/stats/base/dnanstdev":"1BO","@stdlib/stats-base-dnanstdev":"1BP","@stdlib/stats/base/dnanstdevch":"1BQ","@stdlib/stats-base-dnanstdevch":"1BR","@stdlib/stats/base/dnanstdevpn":"1BS","@stdlib/stats-base-dnanstdevpn":"1BT","@stdlib/stats/base/dnanstdevtk":"1BU","@stdlib/stats-base-dnanstdevtk":"1BV","@stdlib/stats/base/dnanstdevwd":"1BW","@stdlib/stats-base-dnanstdevwd":"1BX","@stdlib/stats/base/dnanstdevyc":"1BY","@stdlib/stats-base-dnanstdevyc":"1BZ","@stdlib/stats/base/dnanvariance":"1Ba","@stdlib/stats-base-dnanvariance":"1Bb","@stdlib/stats/base/dnanvariancech":"1Bc","@stdlib/stats-base-dnanvariancech":"1Bd","@stdlib/stats/base/dnanvariancepn":"1Be","@stdlib/stats-base-dnanvariancepn":"1Bf","@stdlib/stats/base/dnanvariancetk":"1Bg","@stdlib/stats-base-dnanvariancetk":"1Bh","@stdlib/stats/base/dnanvariancewd":"1Bi","@stdlib/stats-base-dnanvariancewd":"1Bj","@stdlib/stats/base/dnanvarianceyc":"1Bk","@stdlib/stats-base-dnanvarianceyc":"1Bl","@stdlib/stats/base/drange":"1Bm","@stdlib/stats-base-drange":"1Bn","@stdlib/stats/base/dsem":"1Bo","@stdlib/stats-base-dsem":"1Bp","@stdlib/stats/base/dsemch":"1Bq","@stdlib/stats-base-dsemch":"1Br","@stdlib/stats/base/dsempn":"1Bs","@stdlib/stats-base-dsempn":"1Bt","@stdlib/stats/base/dsemtk":"1Bu","@stdlib/stats-base-dsemtk":"1Bv","@stdlib/stats/base/dsemwd":"1Bw","@stdlib/stats-base-dsemwd":"1Bx","@stdlib/stats/base/dsemyc":"1By","@stdlib/stats-base-dsemyc":"1Bz","@stdlib/stats/base/dsmean":"1C0","@stdlib/stats-base-dsmean":"1C1","@stdlib/stats/base/dsmeanors":"1C2","@stdlib/stats-base-dsmeanors":"1C3","@stdlib/stats/base/dsmeanpn":"1C4","@stdlib/stats-base-dsmeanpn":"1C5","@stdlib/stats/base/dsmeanpw":"1C6","@stdlib/stats-base-dsmeanpw":"1C7","@stdlib/stats/base/dsmeanwd":"1C8","@stdlib/stats-base-dsmeanwd":"1C9","@stdlib/stats/base/dsnanmean":"1CA","@stdlib/stats-base-dsnanmean":"1CB","@stdlib/stats/base/dsnanmeanors":"1CC","@stdlib/stats-base-dsnanmeanors":"1CD","@stdlib/stats/base/dsnanmeanpn":"1CE","@stdlib/stats-base-dsnanmeanpn":"1CF","@stdlib/stats/base/dsnanmeanwd":"1CG","@stdlib/stats-base-dsnanmeanwd":"1CH","@stdlib/stats/base/dstdev":"1CI","@stdlib/stats-base-dstdev":"1CJ","@stdlib/stats/base/dstdevch":"1CK","@stdlib/stats-base-dstdevch":"1CL","@stdlib/stats/base/dstdevpn":"1CM","@stdlib/stats-base-dstdevpn":"1CN","@stdlib/stats/base/dstdevtk":"1CO","@stdlib/stats-base-dstdevtk":"1CP","@stdlib/stats/base/dstdevwd":"1CQ","@stdlib/stats-base-dstdevwd":"1CR","@stdlib/stats/base/dstdevyc":"1CS","@stdlib/stats-base-dstdevyc":"1CT","@stdlib/stats/base/dsvariance":"1CU","@stdlib/stats-base-dsvariance":"1CV","@stdlib/stats/base/dsvariancepn":"1CW","@stdlib/stats-base-dsvariancepn":"1CX","@stdlib/stats/base/dvariance":"1CY","@stdlib/stats-base-dvariance":"1CZ","@stdlib/stats/base/dvariancech":"1Ca","@stdlib/stats-base-dvariancech":"1Cb","@stdlib/stats/base/dvariancepn":"1Cc","@stdlib/stats-base-dvariancepn":"1Cd","@stdlib/stats/base/dvariancetk":"1Ce","@stdlib/stats-base-dvariancetk":"1Cf","@stdlib/stats/base/dvariancewd":"1Cg","@stdlib/stats-base-dvariancewd":"1Ch","@stdlib/stats/base/dvarianceyc":"1Ci","@stdlib/stats-base-dvarianceyc":"1Cj","@stdlib/stats/base/dvarm":"1Ck","@stdlib/stats-base-dvarm":"1Cl","@stdlib/stats/base/dvarmpn":"1Cm","@stdlib/stats-base-dvarmpn":"1Cn","@stdlib/stats/base/dvarmtk":"1Co","@stdlib/stats-base-dvarmtk":"1Cp","@stdlib/stats/base/max-by":"1Cq","@stdlib/stats-base-max-by":"1Cr","@stdlib/stats/base/max":"1Cs","@stdlib/stats-base-max":"1Ct","@stdlib/stats/base/maxabs":"1Cu","@stdlib/stats-base-maxabs":"1Cv","@stdlib/stats/base/maxsorted":"1Cw","@stdlib/stats-base-maxsorted":"1Cx","@stdlib/stats/base/mean":"1Cy","@stdlib/stats-base-mean":"1Cz","@stdlib/stats/base/meankbn":"1D0","@stdlib/stats-base-meankbn":"1D1","@stdlib/stats/base/meankbn2":"1D2","@stdlib/stats-base-meankbn2":"1D3","@stdlib/stats/base/meanors":"1D4","@stdlib/stats-base-meanors":"1D5","@stdlib/stats/base/meanpn":"1D6","@stdlib/stats-base-meanpn":"1D7","@stdlib/stats/base/meanpw":"1D8","@stdlib/stats-base-meanpw":"1D9","@stdlib/stats/base/meanwd":"1DA","@stdlib/stats-base-meanwd":"1DB","@stdlib/stats/base/mediansorted":"1DC","@stdlib/stats-base-mediansorted":"1DD","@stdlib/stats/base/min-by":"1DE","@stdlib/stats-base-min-by":"1DF","@stdlib/stats/base/min":"1DG","@stdlib/stats-base-min":"1DH","@stdlib/stats/base/minabs":"1DI","@stdlib/stats-base-minabs":"1DJ","@stdlib/stats/base/minsorted":"1DK","@stdlib/stats-base-minsorted":"1DL","@stdlib/stats/base/mskmax":"1DM","@stdlib/stats-base-mskmax":"1DN","@stdlib/stats/base/mskmin":"1DO","@stdlib/stats-base-mskmin":"1DP","@stdlib/stats/base/mskrange":"1DQ","@stdlib/stats-base-mskrange":"1DR","@stdlib/stats/base/nanmax-by":"1DS","@stdlib/stats-base-nanmax-by":"1DT","@stdlib/stats/base/nanmax":"1DU","@stdlib/stats-base-nanmax":"1DV","@stdlib/stats/base/nanmaxabs":"1DW","@stdlib/stats-base-nanmaxabs":"1DX","@stdlib/stats/base/nanmean":"1DY","@stdlib/stats-base-nanmean":"1DZ","@stdlib/stats/base/nanmeanors":"1Da","@stdlib/stats-base-nanmeanors":"1Db","@stdlib/stats/base/nanmeanpn":"1Dc","@stdlib/stats-base-nanmeanpn":"1Dd","@stdlib/stats/base/nanmeanwd":"1De","@stdlib/stats-base-nanmeanwd":"1Df","@stdlib/stats/base/nanmin-by":"1Dg","@stdlib/stats-base-nanmin-by":"1Dh","@stdlib/stats/base/nanmin":"1Di","@stdlib/stats-base-nanmin":"1Dj","@stdlib/stats/base/nanminabs":"1Dk","@stdlib/stats-base-nanminabs":"1Dl","@stdlib/stats/base/nanmskmax":"1Dm","@stdlib/stats-base-nanmskmax":"1Dn","@stdlib/stats/base/nanmskmin":"1Do","@stdlib/stats-base-nanmskmin":"1Dp","@stdlib/stats/base/nanmskrange":"1Dq","@stdlib/stats-base-nanmskrange":"1Dr","@stdlib/stats/base/nanrange-by":"1Ds","@stdlib/stats-base-nanrange-by":"1Dt","@stdlib/stats/base/nanrange":"1Du","@stdlib/stats-base-nanrange":"1Dv","@stdlib/stats/base/nanstdev":"1Dw","@stdlib/stats-base-nanstdev":"1Dx","@stdlib/stats/base/nanstdevch":"1Dy","@stdlib/stats-base-nanstdevch":"1Dz","@stdlib/stats/base/nanstdevpn":"1E0","@stdlib/stats-base-nanstdevpn":"1E1","@stdlib/stats/base/nanstdevtk":"1E2","@stdlib/stats-base-nanstdevtk":"1E3","@stdlib/stats/base/nanstdevwd":"1E4","@stdlib/stats-base-nanstdevwd":"1E5","@stdlib/stats/base/nanstdevyc":"1E6","@stdlib/stats-base-nanstdevyc":"1E7","@stdlib/stats/base/nanvariance":"1E8","@stdlib/stats-base-nanvariance":"1E9","@stdlib/stats/base/nanvariancech":"1EA","@stdlib/stats-base-nanvariancech":"1EB","@stdlib/stats/base/nanvariancepn":"1EC","@stdlib/stats-base-nanvariancepn":"1ED","@stdlib/stats/base/nanvariancetk":"1EE","@stdlib/stats-base-nanvariancetk":"1EF","@stdlib/stats/base/nanvariancewd":"1EG","@stdlib/stats-base-nanvariancewd":"1EH","@stdlib/stats/base/nanvarianceyc":"1EI","@stdlib/stats-base-nanvarianceyc":"1EJ","@stdlib/stats/base":"1EK","@stdlib/stats-base":"1EL","@stdlib/stats/base/range-by":"1EM","@stdlib/stats-base-range-by":"1EN","@stdlib/stats/base/range":"1EO","@stdlib/stats-base-range":"1EP","@stdlib/stats/base/scumax":"1EQ","@stdlib/stats-base-scumax":"1ER","@stdlib/stats/base/scumaxabs":"1ES","@stdlib/stats-base-scumaxabs":"1ET","@stdlib/stats/base/scumin":"1EU","@stdlib/stats-base-scumin":"1EV","@stdlib/stats/base/scuminabs":"1EW","@stdlib/stats-base-scuminabs":"1EX","@stdlib/stats/base/sdsmean":"1EY","@stdlib/stats-base-sdsmean":"1EZ","@stdlib/stats/base/sdsmeanors":"1Ea","@stdlib/stats-base-sdsmeanors":"1Eb","@stdlib/stats/base/sdsnanmean":"1Ec","@stdlib/stats-base-sdsnanmean":"1Ed","@stdlib/stats/base/sdsnanmeanors":"1Ee","@stdlib/stats-base-sdsnanmeanors":"1Ef","@stdlib/stats/base/smax":"1Eg","@stdlib/stats-base-smax":"1Eh","@stdlib/stats/base/smaxabs":"1Ei","@stdlib/stats-base-smaxabs":"1Ej","@stdlib/stats/base/smaxabssorted":"1Ek","@stdlib/stats-base-smaxabssorted":"1El","@stdlib/stats/base/smaxsorted":"1Em","@stdlib/stats-base-smaxsorted":"1En","@stdlib/stats/base/smean":"1Eo","@stdlib/stats-base-smean":"1Ep","@stdlib/stats/base/smeankbn":"1Eq","@stdlib/stats-base-smeankbn":"1Er","@stdlib/stats/base/smeankbn2":"1Es","@stdlib/stats-base-smeankbn2":"1Et","@stdlib/stats/base/smeanli":"1Eu","@stdlib/stats-base-smeanli":"1Ev","@stdlib/stats/base/smeanlipw":"1Ew","@stdlib/stats-base-smeanlipw":"1Ex","@stdlib/stats/base/smeanors":"1Ey","@stdlib/stats-base-smeanors":"1Ez","@stdlib/stats/base/smeanpn":"1F0","@stdlib/stats-base-smeanpn":"1F1","@stdlib/stats/base/smeanpw":"1F2","@stdlib/stats-base-smeanpw":"1F3","@stdlib/stats/base/smeanwd":"1F4","@stdlib/stats-base-smeanwd":"1F5","@stdlib/stats/base/smediansorted":"1F6","@stdlib/stats-base-smediansorted":"1F7","@stdlib/stats/base/smidrange":"1F8","@stdlib/stats-base-smidrange":"1F9","@stdlib/stats/base/smin":"1FA","@stdlib/stats-base-smin":"1FB","@stdlib/stats/base/sminabs":"1FC","@stdlib/stats-base-sminabs":"1FD","@stdlib/stats/base/sminsorted":"1FE","@stdlib/stats-base-sminsorted":"1FF","@stdlib/stats/base/smskmax":"1FG","@stdlib/stats-base-smskmax":"1FH","@stdlib/stats/base/smskmin":"1FI","@stdlib/stats-base-smskmin":"1FJ","@stdlib/stats/base/smskrange":"1FK","@stdlib/stats-base-smskrange":"1FL","@stdlib/stats/base/snanmax":"1FM","@stdlib/stats-base-snanmax":"1FN","@stdlib/stats/base/snanmaxabs":"1FO","@stdlib/stats-base-snanmaxabs":"1FP","@stdlib/stats/base/snanmean":"1FQ","@stdlib/stats-base-snanmean":"1FR","@stdlib/stats/base/snanmeanors":"1FS","@stdlib/stats-base-snanmeanors":"1FT","@stdlib/stats/base/snanmeanpn":"1FU","@stdlib/stats-base-snanmeanpn":"1FV","@stdlib/stats/base/snanmeanwd":"1FW","@stdlib/stats-base-snanmeanwd":"1FX","@stdlib/stats/base/snanmin":"1FY","@stdlib/stats-base-snanmin":"1FZ","@stdlib/stats/base/snanminabs":"1Fa","@stdlib/stats-base-snanminabs":"1Fb","@stdlib/stats/base/snanmskmax":"1Fc","@stdlib/stats-base-snanmskmax":"1Fd","@stdlib/stats/base/snanmskmin":"1Fe","@stdlib/stats-base-snanmskmin":"1Ff","@stdlib/stats/base/snanmskrange":"1Fg","@stdlib/stats-base-snanmskrange":"1Fh","@stdlib/stats/base/snanrange":"1Fi","@stdlib/stats-base-snanrange":"1Fj","@stdlib/stats/base/snanstdev":"1Fk","@stdlib/stats-base-snanstdev":"1Fl","@stdlib/stats/base/snanstdevch":"1Fm","@stdlib/stats-base-snanstdevch":"1Fn","@stdlib/stats/base/snanstdevpn":"1Fo","@stdlib/stats-base-snanstdevpn":"1Fp","@stdlib/stats/base/snanstdevtk":"1Fq","@stdlib/stats-base-snanstdevtk":"1Fr","@stdlib/stats/base/snanstdevwd":"1Fs","@stdlib/stats-base-snanstdevwd":"1Ft","@stdlib/stats/base/snanstdevyc":"1Fu","@stdlib/stats-base-snanstdevyc":"1Fv","@stdlib/stats/base/snanvariance":"1Fw","@stdlib/stats-base-snanvariance":"1Fx","@stdlib/stats/base/snanvariancech":"1Fy","@stdlib/stats-base-snanvariancech":"1Fz","@stdlib/stats/base/snanvariancepn":"1G0","@stdlib/stats-base-snanvariancepn":"1G1","@stdlib/stats/base/snanvariancetk":"1G2","@stdlib/stats-base-snanvariancetk":"1G3","@stdlib/stats/base/snanvariancewd":"1G4","@stdlib/stats-base-snanvariancewd":"1G5","@stdlib/stats/base/snanvarianceyc":"1G6","@stdlib/stats-base-snanvarianceyc":"1G7","@stdlib/stats/base/srange":"1G8","@stdlib/stats-base-srange":"1G9","@stdlib/stats/base/sstdev":"1GA","@stdlib/stats-base-sstdev":"1GB","@stdlib/stats/base/sstdevch":"1GC","@stdlib/stats-base-sstdevch":"1GD","@stdlib/stats/base/sstdevpn":"1GE","@stdlib/stats-base-sstdevpn":"1GF","@stdlib/stats/base/sstdevtk":"1GG","@stdlib/stats-base-sstdevtk":"1GH","@stdlib/stats/base/sstdevwd":"1GI","@stdlib/stats-base-sstdevwd":"1GJ","@stdlib/stats/base/sstdevyc":"1GK","@stdlib/stats-base-sstdevyc":"1GL","@stdlib/stats/base/stdev":"1GM","@stdlib/stats-base-stdev":"1GN","@stdlib/stats/base/stdevch":"1GO","@stdlib/stats-base-stdevch":"1GP","@stdlib/stats/base/stdevpn":"1GQ","@stdlib/stats-base-stdevpn":"1GR","@stdlib/stats/base/stdevtk":"1GS","@stdlib/stats-base-stdevtk":"1GT","@stdlib/stats/base/stdevwd":"1GU","@stdlib/stats-base-stdevwd":"1GV","@stdlib/stats/base/stdevyc":"1GW","@stdlib/stats-base-stdevyc":"1GX","@stdlib/stats/base/svariance":"1GY","@stdlib/stats-base-svariance":"1GZ","@stdlib/stats/base/svariancech":"1Ga","@stdlib/stats-base-svariancech":"1Gb","@stdlib/stats/base/svariancepn":"1Gc","@stdlib/stats-base-svariancepn":"1Gd","@stdlib/stats/base/svariancetk":"1Ge","@stdlib/stats-base-svariancetk":"1Gf","@stdlib/stats/base/svariancewd":"1Gg","@stdlib/stats-base-svariancewd":"1Gh","@stdlib/stats/base/svarianceyc":"1Gi","@stdlib/stats-base-svarianceyc":"1Gj","@stdlib/stats/base/variance":"1Gk","@stdlib/stats-base-variance":"1Gl","@stdlib/stats/base/variancech":"1Gm","@stdlib/stats-base-variancech":"1Gn","@stdlib/stats/base/variancepn":"1Go","@stdlib/stats-base-variancepn":"1Gp","@stdlib/stats/base/variancetk":"1Gq","@stdlib/stats-base-variancetk":"1Gr","@stdlib/stats/base/variancewd":"1Gs","@stdlib/stats-base-variancewd":"1Gt","@stdlib/stats/base/varianceyc":"1Gu","@stdlib/stats-base-varianceyc":"1Gv","@stdlib/stats/binomial-test":"1Gw","@stdlib/stats-binomial-test":"1Gx","@stdlib/stats/chi2gof":"1Gy","@stdlib/stats-chi2gof":"1Gz","@stdlib/stats/chi2test":"1H0","@stdlib/stats-chi2test":"1H1","@stdlib/stats/fligner-test":"1H2","@stdlib/stats-fligner-test":"1H3","@stdlib/stats/incr/apcorr":"1H4","@stdlib/stats-incr-apcorr":"1H5","@stdlib/stats/incr/count":"1H6","@stdlib/stats-incr-count":"1H7","@stdlib/stats/incr/covariance":"1H8","@stdlib/stats-incr-covariance":"1H9","@stdlib/stats/incr/covmat":"1HA","@stdlib/stats-incr-covmat":"1HB","@stdlib/stats/incr/cv":"1HC","@stdlib/stats-incr-cv":"1HD","@stdlib/stats/incr/ewmean":"1HE","@stdlib/stats-incr-ewmean":"1HF","@stdlib/stats/incr/ewstdev":"1HG","@stdlib/stats-incr-ewstdev":"1HH","@stdlib/stats/incr/ewvariance":"1HI","@stdlib/stats-incr-ewvariance":"1HJ","@stdlib/stats/incr/gmean":"1HK","@stdlib/stats-incr-gmean":"1HL","@stdlib/stats/incr/grubbs":"1HM","@stdlib/stats-incr-grubbs":"1HN","@stdlib/stats/incr/hmean":"1HO","@stdlib/stats-incr-hmean":"1HP","@stdlib/stats/incr/kurtosis":"1HQ","@stdlib/stats-incr-kurtosis":"1HR","@stdlib/stats/incr/maape":"1HS","@stdlib/stats-incr-maape":"1HT","@stdlib/stats/incr/mae":"1HU","@stdlib/stats-incr-mae":"1HV","@stdlib/stats/incr/mapcorr":"1HW","@stdlib/stats-incr-mapcorr":"1HX","@stdlib/stats/incr/mape":"1HY","@stdlib/stats-incr-mape":"1HZ","@stdlib/stats/incr/max":"1Ha","@stdlib/stats-incr-max":"1Hb","@stdlib/stats/incr/maxabs":"1Hc","@stdlib/stats-incr-maxabs":"1Hd","@stdlib/stats/incr/mcovariance":"1He","@stdlib/stats-incr-mcovariance":"1Hf","@stdlib/stats/incr/mcv":"1Hg","@stdlib/stats-incr-mcv":"1Hh","@stdlib/stats/incr/mda":"1Hi","@stdlib/stats-incr-mda":"1Hj","@stdlib/stats/incr/me":"1Hk","@stdlib/stats-incr-me":"1Hl","@stdlib/stats/incr/mean":"1Hm","@stdlib/stats-incr-mean":"1Hn","@stdlib/stats/incr/meanabs":"1Ho","@stdlib/stats-incr-meanabs":"1Hp","@stdlib/stats/incr/meanabs2":"1Hq","@stdlib/stats-incr-meanabs2":"1Hr","@stdlib/stats/incr/meanstdev":"1Hs","@stdlib/stats-incr-meanstdev":"1Ht","@stdlib/stats/incr/meanvar":"1Hu","@stdlib/stats-incr-meanvar":"1Hv","@stdlib/stats/incr/mgmean":"1Hw","@stdlib/stats-incr-mgmean":"1Hx","@stdlib/stats/incr/mgrubbs":"1Hy","@stdlib/stats-incr-mgrubbs":"1Hz","@stdlib/stats/incr/mhmean":"1I0","@stdlib/stats-incr-mhmean":"1I1","@stdlib/stats/incr/midrange":"1I2","@stdlib/stats-incr-midrange":"1I3","@stdlib/stats/incr/min":"1I4","@stdlib/stats-incr-min":"1I5","@stdlib/stats/incr/minabs":"1I6","@stdlib/stats-incr-minabs":"1I7","@stdlib/stats/incr/minmax":"1I8","@stdlib/stats-incr-minmax":"1I9","@stdlib/stats/incr/minmaxabs":"1IA","@stdlib/stats-incr-minmaxabs":"1IB","@stdlib/stats/incr/mmaape":"1IC","@stdlib/stats-incr-mmaape":"1ID","@stdlib/stats/incr/mmae":"1IE","@stdlib/stats-incr-mmae":"1IF","@stdlib/stats/incr/mmape":"1IG","@stdlib/stats-incr-mmape":"1IH","@stdlib/stats/incr/mmax":"1II","@stdlib/stats-incr-mmax":"1IJ","@stdlib/stats/incr/mmaxabs":"1IK","@stdlib/stats-incr-mmaxabs":"1IL","@stdlib/stats/incr/mmda":"1IM","@stdlib/stats-incr-mmda":"1IN","@stdlib/stats/incr/mme":"1IO","@stdlib/stats-incr-mme":"1IP","@stdlib/stats/incr/mmean":"1IQ","@stdlib/stats-incr-mmean":"1IR","@stdlib/stats/incr/mmeanabs":"1IS","@stdlib/stats-incr-mmeanabs":"1IT","@stdlib/stats/incr/mmeanabs2":"1IU","@stdlib/stats-incr-mmeanabs2":"1IV","@stdlib/stats/incr/mmeanstdev":"1IW","@stdlib/stats-incr-mmeanstdev":"1IX","@stdlib/stats/incr/mmeanvar":"1IY","@stdlib/stats-incr-mmeanvar":"1IZ","@stdlib/stats/incr/mmidrange":"1Ia","@stdlib/stats-incr-mmidrange":"1Ib","@stdlib/stats/incr/mmin":"1Ic","@stdlib/stats-incr-mmin":"1Id","@stdlib/stats/incr/mminabs":"1Ie","@stdlib/stats-incr-mminabs":"1If","@stdlib/stats/incr/mminmax":"1Ig","@stdlib/stats-incr-mminmax":"1Ih","@stdlib/stats/incr/mminmaxabs":"1Ii","@stdlib/stats-incr-mminmaxabs":"1Ij","@stdlib/stats/incr/mmpe":"1Ik","@stdlib/stats-incr-mmpe":"1Il","@stdlib/stats/incr/mmse":"1Im","@stdlib/stats-incr-mmse":"1In","@stdlib/stats/incr/mpcorr":"1Io","@stdlib/stats-incr-mpcorr":"1Ip","@stdlib/stats/incr/mpcorr2":"1Iq","@stdlib/stats-incr-mpcorr2":"1Ir","@stdlib/stats/incr/mpcorrdist":"1Is","@stdlib/stats-incr-mpcorrdist":"1It","@stdlib/stats/incr/mpe":"1Iu","@stdlib/stats-incr-mpe":"1Iv","@stdlib/stats/incr/mprod":"1Iw","@stdlib/stats-incr-mprod":"1Ix","@stdlib/stats/incr/mrange":"1Iy","@stdlib/stats-incr-mrange":"1Iz","@stdlib/stats/incr/mrmse":"1J0","@stdlib/stats-incr-mrmse":"1J1","@stdlib/stats/incr/mrss":"1J2","@stdlib/stats-incr-mrss":"1J3","@stdlib/stats/incr/mse":"1J4","@stdlib/stats-incr-mse":"1J5","@stdlib/stats/incr/mstdev":"1J6","@stdlib/stats-incr-mstdev":"1J7","@stdlib/stats/incr/msum":"1J8","@stdlib/stats-incr-msum":"1J9","@stdlib/stats/incr/msumabs":"1JA","@stdlib/stats-incr-msumabs":"1JB","@stdlib/stats/incr/msumabs2":"1JC","@stdlib/stats-incr-msumabs2":"1JD","@stdlib/stats/incr/msummary":"1JE","@stdlib/stats-incr-msummary":"1JF","@stdlib/stats/incr/msumprod":"1JG","@stdlib/stats-incr-msumprod":"1JH","@stdlib/stats/incr/mvariance":"1JI","@stdlib/stats-incr-mvariance":"1JJ","@stdlib/stats/incr/mvmr":"1JK","@stdlib/stats-incr-mvmr":"1JL","@stdlib/stats/incr/nancount":"1JM","@stdlib/stats-incr-nancount":"1JN","@stdlib/stats/incr/nansum":"1JO","@stdlib/stats-incr-nansum":"1JP","@stdlib/stats/incr/nansumabs":"1JQ","@stdlib/stats-incr-nansumabs":"1JR","@stdlib/stats/incr/nansumabs2":"1JS","@stdlib/stats-incr-nansumabs2":"1JT","@stdlib/stats/incr":"1JU","@stdlib/stats-incr":"1JV","@stdlib/stats/incr/pcorr":"1JW","@stdlib/stats-incr-pcorr":"1JX","@stdlib/stats/incr/pcorr2":"1JY","@stdlib/stats-incr-pcorr2":"1JZ","@stdlib/stats/incr/pcorrdist":"1Ja","@stdlib/stats-incr-pcorrdist":"1Jb","@stdlib/stats/incr/pcorrdistmat":"1Jc","@stdlib/stats-incr-pcorrdistmat":"1Jd","@stdlib/stats/incr/pcorrmat":"1Je","@stdlib/stats-incr-pcorrmat":"1Jf","@stdlib/stats/incr/prod":"1Jg","@stdlib/stats-incr-prod":"1Jh","@stdlib/stats/incr/range":"1Ji","@stdlib/stats-incr-range":"1Jj","@stdlib/stats/incr/rmse":"1Jk","@stdlib/stats-incr-rmse":"1Jl","@stdlib/stats/incr/rss":"1Jm","@stdlib/stats-incr-rss":"1Jn","@stdlib/stats/incr/skewness":"1Jo","@stdlib/stats-incr-skewness":"1Jp","@stdlib/stats/incr/stdev":"1Jq","@stdlib/stats-incr-stdev":"1Jr","@stdlib/stats/incr/sum":"1Js","@stdlib/stats-incr-sum":"1Jt","@stdlib/stats/incr/sumabs":"1Ju","@stdlib/stats-incr-sumabs":"1Jv","@stdlib/stats/incr/sumabs2":"1Jw","@stdlib/stats-incr-sumabs2":"1Jx","@stdlib/stats/incr/summary":"1Jy","@stdlib/stats-incr-summary":"1Jz","@stdlib/stats/incr/sumprod":"1K0","@stdlib/stats-incr-sumprod":"1K1","@stdlib/stats/incr/variance":"1K2","@stdlib/stats-incr-variance":"1K3","@stdlib/stats/incr/vmr":"1K4","@stdlib/stats-incr-vmr":"1K5","@stdlib/stats/incr/wmean":"1K6","@stdlib/stats-incr-wmean":"1K7","@stdlib/stats/iter/cugmean":"1K8","@stdlib/stats-iter-cugmean":"1K9","@stdlib/stats/iter/cuhmean":"1KA","@stdlib/stats-iter-cuhmean":"1KB","@stdlib/stats/iter/cumax":"1KC","@stdlib/stats-iter-cumax":"1KD","@stdlib/stats/iter/cumaxabs":"1KE","@stdlib/stats-iter-cumaxabs":"1KF","@stdlib/stats/iter/cumean":"1KG","@stdlib/stats-iter-cumean":"1KH","@stdlib/stats/iter/cumeanabs":"1KI","@stdlib/stats-iter-cumeanabs":"1KJ","@stdlib/stats/iter/cumeanabs2":"1KK","@stdlib/stats-iter-cumeanabs2":"1KL","@stdlib/stats/iter/cumidrange":"1KM","@stdlib/stats-iter-cumidrange":"1KN","@stdlib/stats/iter/cumin":"1KO","@stdlib/stats-iter-cumin":"1KP","@stdlib/stats/iter/cuminabs":"1KQ","@stdlib/stats-iter-cuminabs":"1KR","@stdlib/stats/iter/cuprod":"1KS","@stdlib/stats-iter-cuprod":"1KT","@stdlib/stats/iter/curange":"1KU","@stdlib/stats-iter-curange":"1KV","@stdlib/stats/iter/cusum":"1KW","@stdlib/stats-iter-cusum":"1KX","@stdlib/stats/iter/cusumabs":"1KY","@stdlib/stats-iter-cusumabs":"1KZ","@stdlib/stats/iter/cusumabs2":"1Ka","@stdlib/stats-iter-cusumabs2":"1Kb","@stdlib/stats/iter/max":"1Kc","@stdlib/stats-iter-max":"1Kd","@stdlib/stats/iter/maxabs":"1Ke","@stdlib/stats-iter-maxabs":"1Kf","@stdlib/stats/iter/mean":"1Kg","@stdlib/stats-iter-mean":"1Kh","@stdlib/stats/iter/meanabs":"1Ki","@stdlib/stats-iter-meanabs":"1Kj","@stdlib/stats/iter/meanabs2":"1Kk","@stdlib/stats-iter-meanabs2":"1Kl","@stdlib/stats/iter/midrange":"1Km","@stdlib/stats-iter-midrange":"1Kn","@stdlib/stats/iter/min":"1Ko","@stdlib/stats-iter-min":"1Kp","@stdlib/stats/iter/minabs":"1Kq","@stdlib/stats-iter-minabs":"1Kr","@stdlib/stats/iter/mmax":"1Ks","@stdlib/stats-iter-mmax":"1Kt","@stdlib/stats/iter/mmaxabs":"1Ku","@stdlib/stats-iter-mmaxabs":"1Kv","@stdlib/stats/iter/mmean":"1Kw","@stdlib/stats-iter-mmean":"1Kx","@stdlib/stats/iter/mmeanabs":"1Ky","@stdlib/stats-iter-mmeanabs":"1Kz","@stdlib/stats/iter/mmeanabs2":"1L0","@stdlib/stats-iter-mmeanabs2":"1L1","@stdlib/stats/iter/mmidrange":"1L2","@stdlib/stats-iter-mmidrange":"1L3","@stdlib/stats/iter/mmin":"1L4","@stdlib/stats-iter-mmin":"1L5","@stdlib/stats/iter/mminabs":"1L6","@stdlib/stats-iter-mminabs":"1L7","@stdlib/stats/iter/mprod":"1L8","@stdlib/stats-iter-mprod":"1L9","@stdlib/stats/iter/mrange":"1LA","@stdlib/stats-iter-mrange":"1LB","@stdlib/stats/iter/msum":"1LC","@stdlib/stats-iter-msum":"1LD","@stdlib/stats/iter/msumabs":"1LE","@stdlib/stats-iter-msumabs":"1LF","@stdlib/stats/iter/msumabs2":"1LG","@stdlib/stats-iter-msumabs2":"1LH","@stdlib/stats/iter":"1LI","@stdlib/stats-iter":"1LJ","@stdlib/stats/iter/prod":"1LK","@stdlib/stats-iter-prod":"1LL","@stdlib/stats/iter/range":"1LM","@stdlib/stats-iter-range":"1LN","@stdlib/stats/iter/stdev":"1LO","@stdlib/stats-iter-stdev":"1LP","@stdlib/stats/iter/sum":"1LQ","@stdlib/stats-iter-sum":"1LR","@stdlib/stats/iter/sumabs":"1LS","@stdlib/stats-iter-sumabs":"1LT","@stdlib/stats/iter/sumabs2":"1LU","@stdlib/stats-iter-sumabs2":"1LV","@stdlib/stats/iter/variance":"1LW","@stdlib/stats-iter-variance":"1LX","@stdlib/stats/kde2d":"1LY","@stdlib/stats-kde2d":"1LZ","@stdlib/stats/kruskal-test":"1La","@stdlib/stats-kruskal-test":"1Lb","@stdlib/stats/kstest":"1Lc","@stdlib/stats-kstest":"1Ld","@stdlib/stats/levene-test":"1Le","@stdlib/stats-levene-test":"1Lf","@stdlib/stats/lowess":"1Lg","@stdlib/stats-lowess":"1Lh","@stdlib/stats":"1Lj","@stdlib/stats/padjust":"1Lk","@stdlib/stats-padjust":"1Ll","@stdlib/stats/pcorrtest":"1Lm","@stdlib/stats-pcorrtest":"1Ln","@stdlib/stats/ranks":"1Lo","@stdlib/stats-ranks":"1Lp","@stdlib/stats/ttest":"1Lq","@stdlib/stats-ttest":"1Lr","@stdlib/stats/ttest2":"1Ls","@stdlib/stats-ttest2":"1Lt","@stdlib/stats/vartest":"1Lu","@stdlib/stats-vartest":"1Lv","@stdlib/stats/wilcoxon":"1Lw","@stdlib/stats-wilcoxon":"1Lx","@stdlib/stats/ztest":"1Ly","@stdlib/stats-ztest":"1Lz","@stdlib/stats/ztest2":"1M0","@stdlib/stats-ztest2":"1M1","@stdlib/streams/node/debug-sink":"1M2","@stdlib/streams-node-debug-sink":"1M3","@stdlib/streams/node/debug":"1M4","@stdlib/streams-node-debug":"1M5","@stdlib/streams/node/empty":"1M6","@stdlib/streams-node-empty":"1M7","@stdlib/streams/node/from-array":"1M8","@stdlib/streams-node-from-array":"1M9","@stdlib/streams/node/from-circular-array":"1MA","@stdlib/streams-node-from-circular-array":"1MB","@stdlib/streams/node/from-constant":"1MC","@stdlib/streams-node-from-constant":"1MD","@stdlib/streams/node/from-iterator":"1ME","@stdlib/streams-node-from-iterator":"1MF","@stdlib/streams/node/from-strided-array":"1MG","@stdlib/streams-node-from-strided-array":"1MH","@stdlib/streams/node/inspect-sink":"1MI","@stdlib/streams-node-inspect-sink":"1MJ","@stdlib/streams/node/inspect":"1MK","@stdlib/streams-node-inspect":"1ML","@stdlib/streams/node/join":"1MM","@stdlib/streams-node-join":"1MN","@stdlib/streams/node":"1MO","@stdlib/streams-node":"1MP","@stdlib/streams/node/split":"1MQ","@stdlib/streams-node-split":"1MR","@stdlib/streams/node/stderr":"1MS","@stdlib/streams-node-stderr":"1MT","@stdlib/streams/node/stdin":"1MU","@stdlib/streams-node-stdin":"1MV","@stdlib/streams/node/stdout":"1MW","@stdlib/streams-node-stdout":"1MX","@stdlib/streams/node/transform":"1MY","@stdlib/streams-node-transform":"1MZ","@stdlib/streams":"1Mb","@stdlib/strided/base/binary-addon-dispatch":"1Mc","@stdlib/strided-base-binary-addon-dispatch":"1Md","@stdlib/strided/base/binary-dtype-signatures":"1Me","@stdlib/strided-base-binary-dtype-signatures":"1Mf","@stdlib/strided/base/binary-signature-callbacks":"1Mg","@stdlib/strided-base-binary-signature-callbacks":"1Mh","@stdlib/strided/base/binary":"1Mi","@stdlib/strided-base-binary":"1Mj","@stdlib/strided/base/cmap":"1Mk","@stdlib/strided-base-cmap":"1Ml","@stdlib/strided/base/dmap":"1Mm","@stdlib/strided-base-dmap":"1Mn","@stdlib/strided/base/dmap2":"1Mo","@stdlib/strided-base-dmap2":"1Mp","@stdlib/strided/base/dmskmap":"1Mq","@stdlib/strided-base-dmskmap":"1Mr","@stdlib/strided/base/dmskmap2":"1Ms","@stdlib/strided-base-dmskmap2":"1Mt","@stdlib/strided/base/dtype-enum2str":"1Mu","@stdlib/strided-base-dtype-enum2str":"1Mv","@stdlib/strided/base/dtype-resolve-enum":"1Mw","@stdlib/strided-base-dtype-resolve-enum":"1Mx","@stdlib/strided/base/dtype-resolve-str":"1My","@stdlib/strided-base-dtype-resolve-str":"1Mz","@stdlib/strided/base/dtype-str2enum":"1N0","@stdlib/strided-base-dtype-str2enum":"1N1","@stdlib/strided/base/function-object":"1N2","@stdlib/strided-base-function-object":"1N3","@stdlib/strided/base/map-by":"1N4","@stdlib/strided-base-map-by":"1N5","@stdlib/strided/base/map-by2":"1N6","@stdlib/strided-base-map-by2":"1N7","@stdlib/strided/base/max-view-buffer-index":"1N8","@stdlib/strided-base-max-view-buffer-index":"1N9","@stdlib/strided/base/meta-data-props":"1NA","@stdlib/strided-base-meta-data-props":"1NB","@stdlib/strided/base/min-view-buffer-index":"1NC","@stdlib/strided-base-min-view-buffer-index":"1ND","@stdlib/strided/base/mskunary":"1NE","@stdlib/strided-base-mskunary":"1NF","@stdlib/strided/base/nullary":"1NG","@stdlib/strided-base-nullary":"1NH","@stdlib/strided/base/offset-view":"1NI","@stdlib/strided-base-offset-view":"1NJ","@stdlib/strided/base":"1NK","@stdlib/strided-base":"1NL","@stdlib/strided/base/quaternary":"1NM","@stdlib/strided-base-quaternary":"1NN","@stdlib/strided/base/quinary":"1NO","@stdlib/strided-base-quinary":"1NP","@stdlib/strided/base/reinterpret-complex128":"1NQ","@stdlib/strided-base-reinterpret-complex128":"1NR","@stdlib/strided/base/reinterpret-complex64":"1NS","@stdlib/strided-base-reinterpret-complex64":"1NT","@stdlib/strided/base/smap":"1NU","@stdlib/strided-base-smap":"1NV","@stdlib/strided/base/smap2":"1NW","@stdlib/strided-base-smap2":"1NX","@stdlib/strided/base/smskmap":"1NY","@stdlib/strided-base-smskmap":"1NZ","@stdlib/strided/base/smskmap2":"1Na","@stdlib/strided-base-smskmap2":"1Nb","@stdlib/strided/base/ternary":"1Nc","@stdlib/strided-base-ternary":"1Nd","@stdlib/strided/base/unary-addon-dispatch":"1Ne","@stdlib/strided-base-unary-addon-dispatch":"1Nf","@stdlib/strided/base/unary":"1Ng","@stdlib/strided-base-unary":"1Nh","@stdlib/strided/base/zmap":"1Ni","@stdlib/strided-base-zmap":"1Nj","@stdlib/strided/common":"1Nk","@stdlib/strided-common":"1Nl","@stdlib/strided/dispatch":"1Nm","@stdlib/strided-dispatch":"1Nn","@stdlib/strided/dtypes":"1No","@stdlib/strided-dtypes":"1Np","@stdlib/strided/napi/addon-arguments":"1Nq","@stdlib/strided-napi-addon-arguments":"1Nr","@stdlib/strided/napi/binary":"1Ns","@stdlib/strided-napi-binary":"1Nt","@stdlib/strided/napi/cmap":"1Nu","@stdlib/strided-napi-cmap":"1Nv","@stdlib/strided/napi/dmap":"1Nw","@stdlib/strided-napi-dmap":"1Nx","@stdlib/strided/napi/dmap2":"1Ny","@stdlib/strided-napi-dmap2":"1Nz","@stdlib/strided/napi/dmskmap":"1O0","@stdlib/strided-napi-dmskmap":"1O1","@stdlib/strided/napi/dmskmap2":"1O2","@stdlib/strided-napi-dmskmap2":"1O3","@stdlib/strided/napi/mskunary":"1O4","@stdlib/strided-napi-mskunary":"1O5","@stdlib/strided/napi":"1O6","@stdlib/strided-napi":"1O7","@stdlib/strided/napi/smap":"1O8","@stdlib/strided-napi-smap":"1O9","@stdlib/strided/napi/smap2":"1OA","@stdlib/strided-napi-smap2":"1OB","@stdlib/strided/napi/smskmap":"1OC","@stdlib/strided-napi-smskmap":"1OD","@stdlib/strided/napi/smskmap2":"1OE","@stdlib/strided-napi-smskmap2":"1OF","@stdlib/strided/napi/unary":"1OG","@stdlib/strided-napi-unary":"1OH","@stdlib/strided/napi/zmap":"1OI","@stdlib/strided-napi-zmap":"1OJ","@stdlib/strided":"1OL","@stdlib/string/acronym":"1OM","@stdlib/string-acronym":"1ON","@stdlib/string/base/format-interpolate":"1OO","@stdlib/string-base-format-interpolate":"1OP","@stdlib/string/base/format-tokenize":"1OQ","@stdlib/string-base-format-tokenize":"1OR","@stdlib/string/base":"1OS","@stdlib/string-base":"1OT","@stdlib/string/camelcase":"1OU","@stdlib/string-camelcase":"1OV","@stdlib/string/capitalize":"1OW","@stdlib/string-capitalize":"1OX","@stdlib/string/code-point-at":"1OY","@stdlib/string-code-point-at":"1OZ","@stdlib/string/constantcase":"1Oa","@stdlib/string-constantcase":"1Ob","@stdlib/string/ends-with":"1Oc","@stdlib/string-ends-with":"1Od","@stdlib/string/format":"1Oe","@stdlib/string-format":"1Of","@stdlib/string/from-code-point":"1Og","@stdlib/string-from-code-point":"1Oh","@stdlib/string/kebabcase":"1Oi","@stdlib/string-kebabcase":"1Oj","@stdlib/string/left-pad":"1Ok","@stdlib/string-left-pad":"1Ol","@stdlib/string/left-trim-n":"1Om","@stdlib/string-left-trim-n":"1On","@stdlib/string/left-trim":"1Oo","@stdlib/string-left-trim":"1Op","@stdlib/string/lowercase":"1Oq","@stdlib/string-lowercase":"1Or","@stdlib/string/next-grapheme-cluster-break":"1Os","@stdlib/string-next-grapheme-cluster-break":"1Ot","@stdlib/string/num-grapheme-clusters":"1Ou","@stdlib/string-num-grapheme-clusters":"1Ov","@stdlib/string":"1Ox","@stdlib/string/pad":"1Oy","@stdlib/string-pad":"1Oz","@stdlib/string/pascalcase":"1P0","@stdlib/string-pascalcase":"1P1","@stdlib/string/percent-encode":"1P2","@stdlib/string-percent-encode":"1P3","@stdlib/string/prev-grapheme-cluster-break":"1P4","@stdlib/string-prev-grapheme-cluster-break":"1P5","@stdlib/string/remove-first":"1P6","@stdlib/string-remove-first":"1P7","@stdlib/string/remove-last":"1P8","@stdlib/string-remove-last":"1P9","@stdlib/string/remove-punctuation":"1PA","@stdlib/string-remove-punctuation":"1PB","@stdlib/string/remove-utf8-bom":"1PC","@stdlib/string-remove-utf8-bom":"1PD","@stdlib/string/remove-words":"1PE","@stdlib/string-remove-words":"1PF","@stdlib/string/repeat":"1PG","@stdlib/string-repeat":"1PH","@stdlib/string/replace":"1PI","@stdlib/string-replace":"1PJ","@stdlib/string/reverse":"1PK","@stdlib/string-reverse":"1PL","@stdlib/string/right-pad":"1PM","@stdlib/string-right-pad":"1PN","@stdlib/string/right-trim-n":"1PO","@stdlib/string-right-trim-n":"1PP","@stdlib/string/right-trim":"1PQ","@stdlib/string-right-trim":"1PR","@stdlib/string/snakecase":"1PS","@stdlib/string-snakecase":"1PT","@stdlib/string/split-grapheme-clusters":"1PU","@stdlib/string-split-grapheme-clusters":"1PV","@stdlib/string/startcase":"1PW","@stdlib/string-startcase":"1PX","@stdlib/string/starts-with":"1PY","@stdlib/string-starts-with":"1PZ","@stdlib/string/substring-after-last":"1Pa","@stdlib/string-substring-after-last":"1Pb","@stdlib/string/substring-after":"1Pc","@stdlib/string-substring-after":"1Pd","@stdlib/string/substring-before-last":"1Pe","@stdlib/string-substring-before-last":"1Pf","@stdlib/string/substring-before":"1Pg","@stdlib/string-substring-before":"1Ph","@stdlib/string/tools/grapheme-cluster-break":"1Pi","@stdlib/string-tools-grapheme-cluster-break":"1Pj","@stdlib/string/tools":"1Pk","@stdlib/string-tools":"1Pl","@stdlib/string/trim":"1Pm","@stdlib/string-trim":"1Pn","@stdlib/string/truncate-middle":"1Po","@stdlib/string-truncate-middle":"1Pp","@stdlib/string/truncate":"1Pq","@stdlib/string-truncate":"1Pr","@stdlib/string/uncapitalize":"1Ps","@stdlib/string-uncapitalize":"1Pt","@stdlib/string/uppercase":"1Pu","@stdlib/string-uppercase":"1Pv","@stdlib/string/utf16-to-utf8-array":"1Pw","@stdlib/string-utf16-to-utf8-array":"1Px","@stdlib/symbol/async-iterator":"1Py","@stdlib/symbol-async-iterator":"1Pz","@stdlib/symbol/ctor":"1Q0","@stdlib/symbol-ctor":"1Q1","@stdlib/symbol/iterator":"1Q2","@stdlib/symbol-iterator":"1Q3","@stdlib/symbol":"1Q5","@stdlib/time/day-of-quarter":"1Q6","@stdlib/time-day-of-quarter":"1Q7","@stdlib/time/day-of-year":"1Q8","@stdlib/time-day-of-year":"1Q9","@stdlib/time/days-in-month":"1QA","@stdlib/time-days-in-month":"1QB","@stdlib/time/days-in-year":"1QC","@stdlib/time-days-in-year":"1QD","@stdlib/time/hours-in-month":"1QE","@stdlib/time-hours-in-month":"1QF","@stdlib/time/hours-in-year":"1QG","@stdlib/time-hours-in-year":"1QH","@stdlib/time/iso-weeks-in-year":"1QI","@stdlib/time-iso-weeks-in-year":"1QJ","@stdlib/time/minutes-in-month":"1QK","@stdlib/time-minutes-in-month":"1QL","@stdlib/time/minutes-in-year":"1QM","@stdlib/time-minutes-in-year":"1QN","@stdlib/time/now":"1QO","@stdlib/time-now":"1QP","@stdlib/time":"1QR","@stdlib/time/quarter-of-year":"1QS","@stdlib/time-quarter-of-year":"1QT","@stdlib/time/seconds-in-month":"1QU","@stdlib/time-seconds-in-month":"1QV","@stdlib/time/seconds-in-year":"1QW","@stdlib/time-seconds-in-year":"1QX","@stdlib/time/tic":"1QY","@stdlib/time-tic":"1QZ","@stdlib/time/toc":"1Qa","@stdlib/time-toc":"1Qb","@stdlib/types":"1Qd","@stdlib/utils/any-by-right":"1Qe","@stdlib/utils-any-by-right":"1Qf","@stdlib/utils/any-by":"1Qg","@stdlib/utils-any-by":"1Qh","@stdlib/utils/any":"1Qi","@stdlib/utils-any":"1Qj","@stdlib/utils/append":"1Qk","@stdlib/utils-append":"1Ql","@stdlib/utils/argument-function":"1Qm","@stdlib/utils-argument-function":"1Qn","@stdlib/utils/async/any-by-right":"1Qo","@stdlib/utils-async-any-by-right":"1Qp","@stdlib/utils/async/any-by":"1Qq","@stdlib/utils-async-any-by":"1Qr","@stdlib/utils/async/bifurcate-by":"1Qs","@stdlib/utils-async-bifurcate-by":"1Qt","@stdlib/utils/async/compose":"1Qu","@stdlib/utils-async-compose":"1Qv","@stdlib/utils/async/count-by":"1Qw","@stdlib/utils-async-count-by":"1Qx","@stdlib/utils/async/do-until":"1Qy","@stdlib/utils-async-do-until":"1Qz","@stdlib/utils/async/do-while":"1R0","@stdlib/utils-async-do-while":"1R1","@stdlib/utils/async/every-by-right":"1R2","@stdlib/utils-async-every-by-right":"1R3","@stdlib/utils/async/every-by":"1R4","@stdlib/utils-async-every-by":"1R5","@stdlib/utils/async/for-each-right":"1R6","@stdlib/utils-async-for-each-right":"1R7","@stdlib/utils/async/for-each":"1R8","@stdlib/utils-async-for-each":"1R9","@stdlib/utils/async/function-sequence":"1RA","@stdlib/utils-async-function-sequence":"1RB","@stdlib/utils/async/group-by":"1RC","@stdlib/utils-async-group-by":"1RD","@stdlib/utils/async/if-else":"1RE","@stdlib/utils-async-if-else":"1RF","@stdlib/utils/async/if-then":"1RG","@stdlib/utils-async-if-then":"1RH","@stdlib/utils/async/inmap-right":"1RI","@stdlib/utils-async-inmap-right":"1RJ","@stdlib/utils/async/inmap":"1RK","@stdlib/utils-async-inmap":"1RL","@stdlib/utils/async/map-function":"1RM","@stdlib/utils-async-map-function":"1RN","@stdlib/utils/async/map-keys":"1RO","@stdlib/utils-async-map-keys":"1RP","@stdlib/utils/async/map-values":"1RQ","@stdlib/utils-async-map-values":"1RR","@stdlib/utils/async/none-by-right":"1RS","@stdlib/utils-async-none-by-right":"1RT","@stdlib/utils/async/none-by":"1RU","@stdlib/utils-async-none-by":"1RV","@stdlib/utils/async":"1RW","@stdlib/utils-async":"1RX","@stdlib/utils/async/reduce-right":"1RY","@stdlib/utils-async-reduce-right":"1RZ","@stdlib/utils/async/reduce":"1Ra","@stdlib/utils-async-reduce":"1Rb","@stdlib/utils/async/series-waterfall":"1Rc","@stdlib/utils-async-series-waterfall":"1Rd","@stdlib/utils/async/some-by-right":"1Re","@stdlib/utils-async-some-by-right":"1Rf","@stdlib/utils/async/some-by":"1Rg","@stdlib/utils-async-some-by":"1Rh","@stdlib/utils/async/tabulate-by":"1Ri","@stdlib/utils-async-tabulate-by":"1Rj","@stdlib/utils/async/try-catch":"1Rk","@stdlib/utils-async-try-catch":"1Rl","@stdlib/utils/async/try-then":"1Rm","@stdlib/utils-async-try-then":"1Rn","@stdlib/utils/async/until":"1Ro","@stdlib/utils-async-until":"1Rp","@stdlib/utils/async/while":"1Rq","@stdlib/utils-async-while":"1Rr","@stdlib/utils/bifurcate-by":"1Rs","@stdlib/utils-bifurcate-by":"1Rt","@stdlib/utils/bifurcate-in":"1Ru","@stdlib/utils-bifurcate-in":"1Rv","@stdlib/utils/bifurcate-own":"1Rw","@stdlib/utils-bifurcate-own":"1Rx","@stdlib/utils/bifurcate":"1Ry","@stdlib/utils-bifurcate":"1Rz","@stdlib/utils/capitalize-keys":"1S0","@stdlib/utils-capitalize-keys":"1S1","@stdlib/utils/circular-buffer":"1S2","@stdlib/utils-circular-buffer":"1S3","@stdlib/utils/common-keys-in":"1S4","@stdlib/utils-common-keys-in":"1S5","@stdlib/utils/common-keys":"1S6","@stdlib/utils-common-keys":"1S7","@stdlib/utils/compact-adjacency-matrix":"1S8","@stdlib/utils-compact-adjacency-matrix":"1S9","@stdlib/utils/compose":"1SA","@stdlib/utils-compose":"1SB","@stdlib/utils/constant-function":"1SC","@stdlib/utils-constant-function":"1SD","@stdlib/utils/constructor-name":"1SE","@stdlib/utils-constructor-name":"1SF","@stdlib/utils/convert-path":"1SG","@stdlib/utils-convert-path":"1SH","@stdlib/utils/copy":"1SI","@stdlib/utils-copy":"1SJ","@stdlib/utils/count-by":"1SK","@stdlib/utils-count-by":"1SL","@stdlib/utils/curry-right":"1SM","@stdlib/utils-curry-right":"1SN","@stdlib/utils/curry":"1SO","@stdlib/utils-curry":"1SP","@stdlib/utils/deep-get":"1SQ","@stdlib/utils-deep-get":"1SR","@stdlib/utils/deep-pluck":"1SS","@stdlib/utils-deep-pluck":"1ST","@stdlib/utils/deep-set":"1SU","@stdlib/utils-deep-set":"1SV","@stdlib/utils/define-configurable-read-only-accessor":"1SW","@stdlib/utils-define-configurable-read-only-accessor":"1SX","@stdlib/utils/define-configurable-read-only-property":"1SY","@stdlib/utils-define-configurable-read-only-property":"1SZ","@stdlib/utils/define-configurable-read-write-accessor":"1Sa","@stdlib/utils-define-configurable-read-write-accessor":"1Sb","@stdlib/utils/define-configurable-write-only-accessor":"1Sc","@stdlib/utils-define-configurable-write-only-accessor":"1Sd","@stdlib/utils/define-memoized-configurable-read-only-property":"1Se","@stdlib/utils-define-memoized-configurable-read-only-property":"1Sf","@stdlib/utils/define-memoized-property":"1Sg","@stdlib/utils-define-memoized-property":"1Sh","@stdlib/utils/define-memoized-read-only-property":"1Si","@stdlib/utils-define-memoized-read-only-property":"1Sj","@stdlib/utils/define-nonenumerable-property":"1Sk","@stdlib/utils-define-nonenumerable-property":"1Sl","@stdlib/utils/define-nonenumerable-read-only-accessor":"1Sm","@stdlib/utils-define-nonenumerable-read-only-accessor":"1Sn","@stdlib/utils/define-nonenumerable-read-only-property":"1So","@stdlib/utils-define-nonenumerable-read-only-property":"1Sp","@stdlib/utils/define-nonenumerable-read-write-accessor":"1Sq","@stdlib/utils-define-nonenumerable-read-write-accessor":"1Sr","@stdlib/utils/define-nonenumerable-write-only-accessor":"1Ss","@stdlib/utils-define-nonenumerable-write-only-accessor":"1St","@stdlib/utils/define-properties":"1Su","@stdlib/utils-define-properties":"1Sv","@stdlib/utils/define-property":"1Sw","@stdlib/utils-define-property":"1Sx","@stdlib/utils/define-read-only-accessor":"1Sy","@stdlib/utils-define-read-only-accessor":"1Sz","@stdlib/utils/define-read-only-property":"1T0","@stdlib/utils-define-read-only-property":"1T1","@stdlib/utils/define-read-write-accessor":"1T2","@stdlib/utils-define-read-write-accessor":"1T3","@stdlib/utils/define-write-only-accessor":"1T4","@stdlib/utils-define-write-only-accessor":"1T5","@stdlib/utils/dirname":"1T6","@stdlib/utils-dirname":"1T7","@stdlib/utils/do-until-each-right":"1T8","@stdlib/utils-do-until-each-right":"1T9","@stdlib/utils/do-until-each":"1TA","@stdlib/utils-do-until-each":"1TB","@stdlib/utils/do-until":"1TC","@stdlib/utils-do-until":"1TD","@stdlib/utils/do-while-each-right":"1TE","@stdlib/utils-do-while-each-right":"1TF","@stdlib/utils/do-while-each":"1TG","@stdlib/utils-do-while-each":"1TH","@stdlib/utils/do-while":"1TI","@stdlib/utils-do-while":"1TJ","@stdlib/utils/doubly-linked-list":"1TK","@stdlib/utils-doubly-linked-list":"1TL","@stdlib/utils/entries-in":"1TM","@stdlib/utils-entries-in":"1TN","@stdlib/utils/entries":"1TO","@stdlib/utils-entries":"1TP","@stdlib/utils/enumerable-properties-in":"1TQ","@stdlib/utils-enumerable-properties-in":"1TR","@stdlib/utils/enumerable-properties":"1TS","@stdlib/utils-enumerable-properties":"1TT","@stdlib/utils/enumerable-property-symbols-in":"1TU","@stdlib/utils-enumerable-property-symbols-in":"1TV","@stdlib/utils/enumerable-property-symbols":"1TW","@stdlib/utils-enumerable-property-symbols":"1TX","@stdlib/utils/escape-regexp-string":"1TY","@stdlib/utils-escape-regexp-string":"1TZ","@stdlib/utils/eval":"1Ta","@stdlib/utils-eval":"1Tb","@stdlib/utils/every-by-right":"1Tc","@stdlib/utils-every-by-right":"1Td","@stdlib/utils/every-by":"1Te","@stdlib/utils-every-by":"1Tf","@stdlib/utils/every":"1Tg","@stdlib/utils-every":"1Th","@stdlib/utils/extname":"1Ti","@stdlib/utils-extname":"1Tj","@stdlib/utils/fifo":"1Tk","@stdlib/utils-fifo":"1Tl","@stdlib/utils/filter-arguments":"1Tm","@stdlib/utils-filter-arguments":"1Tn","@stdlib/utils/find":"1To","@stdlib/utils-find":"1Tp","@stdlib/utils/flatten-array":"1Tq","@stdlib/utils-flatten-array":"1Tr","@stdlib/utils/flatten-object":"1Ts","@stdlib/utils-flatten-object":"1Tt","@stdlib/utils/for-each-right":"1Tu","@stdlib/utils-for-each-right":"1Tv","@stdlib/utils/for-each":"1Tw","@stdlib/utils-for-each":"1Tx","@stdlib/utils/for-in":"1Ty","@stdlib/utils-for-in":"1Tz","@stdlib/utils/for-own":"1U0","@stdlib/utils-for-own":"1U1","@stdlib/utils/from-entries":"1U2","@stdlib/utils-from-entries":"1U3","@stdlib/utils/function-name":"1U4","@stdlib/utils-function-name":"1U5","@stdlib/utils/function-sequence":"1U6","@stdlib/utils-function-sequence":"1U7","@stdlib/utils/get-prototype-of":"1U8","@stdlib/utils-get-prototype-of":"1U9","@stdlib/utils/global":"1UA","@stdlib/utils-global":"1UB","@stdlib/utils/group-by":"1UC","@stdlib/utils-group-by":"1UD","@stdlib/utils/group-in":"1UE","@stdlib/utils-group-in":"1UF","@stdlib/utils/group-own":"1UG","@stdlib/utils-group-own":"1UH","@stdlib/utils/group":"1UI","@stdlib/utils-group":"1UJ","@stdlib/utils/identity-function":"1UK","@stdlib/utils-identity-function":"1UL","@stdlib/utils/if-else":"1UM","@stdlib/utils-if-else":"1UN","@stdlib/utils/if-then":"1UO","@stdlib/utils-if-then":"1UP","@stdlib/utils/index-of":"1UQ","@stdlib/utils-index-of":"1UR","@stdlib/utils/inherit":"1US","@stdlib/utils-inherit":"1UT","@stdlib/utils/inherited-enumerable-properties":"1UU","@stdlib/utils-inherited-enumerable-properties":"1UV","@stdlib/utils/inherited-enumerable-property-symbols":"1UW","@stdlib/utils-inherited-enumerable-property-symbols":"1UX","@stdlib/utils/inherited-keys":"1UY","@stdlib/utils-inherited-keys":"1UZ","@stdlib/utils/inherited-nonenumerable-properties":"1Ua","@stdlib/utils-inherited-nonenumerable-properties":"1Ub","@stdlib/utils/inherited-nonenumerable-property-names":"1Uc","@stdlib/utils-inherited-nonenumerable-property-names":"1Ud","@stdlib/utils/inherited-nonenumerable-property-symbols":"1Ue","@stdlib/utils-inherited-nonenumerable-property-symbols":"1Uf","@stdlib/utils/inherited-properties":"1Ug","@stdlib/utils-inherited-properties":"1Uh","@stdlib/utils/inherited-property-descriptor":"1Ui","@stdlib/utils-inherited-property-descriptor":"1Uj","@stdlib/utils/inherited-property-descriptors":"1Uk","@stdlib/utils-inherited-property-descriptors":"1Ul","@stdlib/utils/inherited-property-names":"1Um","@stdlib/utils-inherited-property-names":"1Un","@stdlib/utils/inherited-property-symbols":"1Uo","@stdlib/utils-inherited-property-symbols":"1Up","@stdlib/utils/inherited-writable-properties":"1Uq","@stdlib/utils-inherited-writable-properties":"1Ur","@stdlib/utils/inherited-writable-property-names":"1Us","@stdlib/utils-inherited-writable-property-names":"1Ut","@stdlib/utils/inherited-writable-property-symbols":"1Uu","@stdlib/utils-inherited-writable-property-symbols":"1Uv","@stdlib/utils/inmap-right":"1Uw","@stdlib/utils-inmap-right":"1Ux","@stdlib/utils/inmap":"1Uy","@stdlib/utils-inmap":"1Uz","@stdlib/utils/key-by-right":"1V0","@stdlib/utils-key-by-right":"1V1","@stdlib/utils/key-by":"1V2","@stdlib/utils-key-by":"1V3","@stdlib/utils/keys-in":"1V4","@stdlib/utils-keys-in":"1V5","@stdlib/utils/keys":"1V6","@stdlib/utils-keys":"1V7","@stdlib/utils/library-manifest":"1V8","@stdlib/utils-library-manifest":"1V9","@stdlib/utils/linked-list":"1VA","@stdlib/utils-linked-list":"1VB","@stdlib/utils/lowercase-keys":"1VC","@stdlib/utils-lowercase-keys":"1VD","@stdlib/utils/map-arguments":"1VE","@stdlib/utils-map-arguments":"1VF","@stdlib/utils/map-function":"1VG","@stdlib/utils-map-function":"1VH","@stdlib/utils/map-keys":"1VI","@stdlib/utils-map-keys":"1VJ","@stdlib/utils/map-reduce-right":"1VK","@stdlib/utils-map-reduce-right":"1VL","@stdlib/utils/map-reduce":"1VM","@stdlib/utils-map-reduce":"1VN","@stdlib/utils/map-right":"1VO","@stdlib/utils-map-right":"1VP","@stdlib/utils/map-values":"1VQ","@stdlib/utils-map-values":"1VR","@stdlib/utils/map":"1VS","@stdlib/utils-map":"1VT","@stdlib/utils/map2-right":"1VU","@stdlib/utils-map2-right":"1VV","@stdlib/utils/map2":"1VW","@stdlib/utils-map2":"1VX","@stdlib/utils/map2d":"1VY","@stdlib/utils-map2d":"1VZ","@stdlib/utils/map3d":"1Va","@stdlib/utils-map3d":"1Vb","@stdlib/utils/map4d":"1Vc","@stdlib/utils-map4d":"1Vd","@stdlib/utils/map5d":"1Ve","@stdlib/utils-map5d":"1Vf","@stdlib/utils/mask-arguments":"1Vg","@stdlib/utils-mask-arguments":"1Vh","@stdlib/utils/memoize":"1Vi","@stdlib/utils-memoize":"1Vj","@stdlib/utils/merge":"1Vk","@stdlib/utils-merge":"1Vl","@stdlib/utils/move-property":"1Vm","@stdlib/utils-move-property":"1Vn","@stdlib/utils/named-typed-tuple":"1Vo","@stdlib/utils-named-typed-tuple":"1Vp","@stdlib/utils/nary-function":"1Vq","@stdlib/utils-nary-function":"1Vr","@stdlib/utils/native-class":"1Vs","@stdlib/utils-native-class":"1Vt","@stdlib/utils/next-tick":"1Vu","@stdlib/utils-next-tick":"1Vv","@stdlib/utils/none-by-right":"1Vw","@stdlib/utils-none-by-right":"1Vx","@stdlib/utils/none-by":"1Vy","@stdlib/utils-none-by":"1Vz","@stdlib/utils/none":"1W0","@stdlib/utils-none":"1W1","@stdlib/utils/nonenumerable-properties-in":"1W2","@stdlib/utils-nonenumerable-properties-in":"1W3","@stdlib/utils/nonenumerable-properties":"1W4","@stdlib/utils-nonenumerable-properties":"1W5","@stdlib/utils/nonenumerable-property-names-in":"1W6","@stdlib/utils-nonenumerable-property-names-in":"1W7","@stdlib/utils/nonenumerable-property-names":"1W8","@stdlib/utils-nonenumerable-property-names":"1W9","@stdlib/utils/nonenumerable-property-symbols-in":"1WA","@stdlib/utils-nonenumerable-property-symbols-in":"1WB","@stdlib/utils/nonenumerable-property-symbols":"1WC","@stdlib/utils-nonenumerable-property-symbols":"1WD","@stdlib/utils/nonindex-keys":"1WE","@stdlib/utils-nonindex-keys":"1WF","@stdlib/utils/noop":"1WG","@stdlib/utils-noop":"1WH","@stdlib/utils/object-inverse-by":"1WI","@stdlib/utils-object-inverse-by":"1WJ","@stdlib/utils/object-inverse":"1WK","@stdlib/utils-object-inverse":"1WL","@stdlib/utils/omit-by":"1WM","@stdlib/utils-omit-by":"1WN","@stdlib/utils/omit":"1WO","@stdlib/utils-omit":"1WP","@stdlib/utils/open-url":"1WQ","@stdlib/utils-open-url":"1WR","@stdlib/utils":"1WT","@stdlib/utils/papply-right":"1WU","@stdlib/utils-papply-right":"1WV","@stdlib/utils/papply":"1WW","@stdlib/utils-papply":"1WX","@stdlib/utils/parallel":"1WY","@stdlib/utils-parallel":"1WZ","@stdlib/utils/parse-json":"1Wa","@stdlib/utils-parse-json":"1Wb","@stdlib/utils/pick-arguments":"1Wc","@stdlib/utils-pick-arguments":"1Wd","@stdlib/utils/pick-by":"1We","@stdlib/utils-pick-by":"1Wf","@stdlib/utils/pick":"1Wg","@stdlib/utils-pick":"1Wh","@stdlib/utils/pluck":"1Wi","@stdlib/utils-pluck":"1Wj","@stdlib/utils/pop":"1Wk","@stdlib/utils-pop":"1Wl","@stdlib/utils/prepend":"1Wm","@stdlib/utils-prepend":"1Wn","@stdlib/utils/properties-in":"1Wo","@stdlib/utils-properties-in":"1Wp","@stdlib/utils/properties":"1Wq","@stdlib/utils-properties":"1Wr","@stdlib/utils/property-descriptor-in":"1Ws","@stdlib/utils-property-descriptor-in":"1Wt","@stdlib/utils/property-descriptor":"1Wu","@stdlib/utils-property-descriptor":"1Wv","@stdlib/utils/property-descriptors-in":"1Ww","@stdlib/utils-property-descriptors-in":"1Wx","@stdlib/utils/property-descriptors":"1Wy","@stdlib/utils-property-descriptors":"1Wz","@stdlib/utils/property-names-in":"1X0","@stdlib/utils-property-names-in":"1X1","@stdlib/utils/property-names":"1X2","@stdlib/utils-property-names":"1X3","@stdlib/utils/property-symbols-in":"1X4","@stdlib/utils-property-symbols-in":"1X5","@stdlib/utils/property-symbols":"1X6","@stdlib/utils-property-symbols":"1X7","@stdlib/utils/push":"1X8","@stdlib/utils-push":"1X9","@stdlib/utils/real-max":"1XA","@stdlib/utils-real-max":"1XB","@stdlib/utils/real-min":"1XC","@stdlib/utils-real-min":"1XD","@stdlib/utils/reduce-right":"1XE","@stdlib/utils-reduce-right":"1XF","@stdlib/utils/reduce":"1XG","@stdlib/utils-reduce":"1XH","@stdlib/utils/reduce2d":"1XI","@stdlib/utils-reduce2d":"1XJ","@stdlib/utils/regexp-from-string":"1XK","@stdlib/utils-regexp-from-string":"1XL","@stdlib/utils/reject-arguments":"1XM","@stdlib/utils-reject-arguments":"1XN","@stdlib/utils/reorder-arguments":"1XO","@stdlib/utils-reorder-arguments":"1XP","@stdlib/utils/reverse-arguments":"1XQ","@stdlib/utils-reverse-arguments":"1XR","@stdlib/utils/safe-int-max":"1XS","@stdlib/utils-safe-int-max":"1XT","@stdlib/utils/safe-int-min":"1XU","@stdlib/utils-safe-int-min":"1XV","@stdlib/utils/shift":"1XW","@stdlib/utils-shift":"1XX","@stdlib/utils/size-of":"1XY","@stdlib/utils-size-of":"1XZ","@stdlib/utils/some-by-right":"1Xa","@stdlib/utils-some-by-right":"1Xb","@stdlib/utils/some-by":"1Xc","@stdlib/utils-some-by":"1Xd","@stdlib/utils/some":"1Xe","@stdlib/utils-some":"1Xf","@stdlib/utils/stack":"1Xg","@stdlib/utils-stack":"1Xh","@stdlib/utils/tabulate-by":"1Xi","@stdlib/utils-tabulate-by":"1Xj","@stdlib/utils/tabulate":"1Xk","@stdlib/utils-tabulate":"1Xl","@stdlib/utils/timeit":"1Xm","@stdlib/utils-timeit":"1Xn","@stdlib/utils/try-catch":"1Xo","@stdlib/utils-try-catch":"1Xp","@stdlib/utils/try-function":"1Xq","@stdlib/utils-try-function":"1Xr","@stdlib/utils/try-require":"1Xs","@stdlib/utils-try-require":"1Xt","@stdlib/utils/try-then":"1Xu","@stdlib/utils-try-then":"1Xv","@stdlib/utils/type-max":"1Xw","@stdlib/utils-type-max":"1Xx","@stdlib/utils/type-min":"1Xy","@stdlib/utils-type-min":"1Xz","@stdlib/utils/type-of":"1Y0","@stdlib/utils-type-of":"1Y1","@stdlib/utils/uncapitalize-keys":"1Y2","@stdlib/utils-uncapitalize-keys":"1Y3","@stdlib/utils/uncurry-right":"1Y4","@stdlib/utils-uncurry-right":"1Y5","@stdlib/utils/uncurry":"1Y6","@stdlib/utils-uncurry":"1Y7","@stdlib/utils/unshift":"1Y8","@stdlib/utils-unshift":"1Y9","@stdlib/utils/until-each-right":"1YA","@stdlib/utils-until-each-right":"1YB","@stdlib/utils/until-each":"1YC","@stdlib/utils-until-each":"1YD","@stdlib/utils/until":"1YE","@stdlib/utils-until":"1YF","@stdlib/utils/unzip":"1YG","@stdlib/utils-unzip":"1YH","@stdlib/utils/uppercase-keys":"1YI","@stdlib/utils-uppercase-keys":"1YJ","@stdlib/utils/values-in":"1YK","@stdlib/utils-values-in":"1YL","@stdlib/utils/values":"1YM","@stdlib/utils-values":"1YN","@stdlib/utils/while-each-right":"1YO","@stdlib/utils-while-each-right":"1YP","@stdlib/utils/while-each":"1YQ","@stdlib/utils-while-each":"1YR","@stdlib/utils/while":"1YS","@stdlib/utils-while":"1YT","@stdlib/utils/writable-properties-in":"1YU","@stdlib/utils-writable-properties-in":"1YV","@stdlib/utils/writable-properties":"1YW","@stdlib/utils-writable-properties":"1YX","@stdlib/utils/writable-property-names-in":"1YY","@stdlib/utils-writable-property-names-in":"1YZ","@stdlib/utils/writable-property-names":"1Ya","@stdlib/utils-writable-property-names":"1Yb","@stdlib/utils/writable-property-symbols-in":"1Yc","@stdlib/utils-writable-property-symbols-in":"1Yd","@stdlib/utils/writable-property-symbols":"1Ye","@stdlib/utils-writable-property-symbols":"1Yf","@stdlib/utils/zip":"1Yg","@stdlib/utils-zip":"1Yh","@stdlib/array/base/accessor-getter":"1Yi","@stdlib/array-base-accessor-getter":"1Yj","@stdlib/array/base/accessor-setter":"1Yk","@stdlib/array-base-accessor-setter":"1Yl","@stdlib/array/base/accessor":"1Ym","@stdlib/array-base-accessor":"1Yn","@stdlib/array/base/accessors":"1Yo","@stdlib/array-base-accessors":"1Yp","@stdlib/array/base/assert/contains":"1Yq","@stdlib/array-base-assert-contains":"1Yr","@stdlib/array/base/assert/is-accessor-array":"1Ys","@stdlib/array-base-assert-is-accessor-array":"1Yt","@stdlib/array/base/assert":"1Yu","@stdlib/array-base-assert":"1Yv","@stdlib/array/base/cartesian-power":"1Yw","@stdlib/array-base-cartesian-power":"1Yx","@stdlib/array/base/cartesian-product":"1Yy","@stdlib/array-base-cartesian-product":"1Yz","@stdlib/array/base/cartesian-square":"1Z0","@stdlib/array-base-cartesian-square":"1Z1","@stdlib/array/base/copy-indexed":"1Z2","@stdlib/array-base-copy-indexed":"1Z3","@stdlib/array/base/filled2d":"1Z4","@stdlib/array-base-filled2d":"1Z5","@stdlib/array/base/flatten":"1Z6","@stdlib/array-base-flatten":"1Z7","@stdlib/array/base/flatten2d-by":"1Z8","@stdlib/array-base-flatten2d-by":"1Z9","@stdlib/array/base/flatten2d":"1ZA","@stdlib/array-base-flatten2d":"1ZB","@stdlib/array/base/flatten3d-by":"1ZC","@stdlib/array-base-flatten3d-by":"1ZD","@stdlib/array/base/flatten3d":"1ZE","@stdlib/array-base-flatten3d":"1ZF","@stdlib/array/base/flatten4d-by":"1ZG","@stdlib/array-base-flatten4d-by":"1ZH","@stdlib/array/base/flatten4d":"1ZI","@stdlib/array-base-flatten4d":"1ZJ","@stdlib/array/base/flatten5d-by":"1ZK","@stdlib/array-base-flatten5d-by":"1ZL","@stdlib/array/base/flatten5d":"1ZM","@stdlib/array-base-flatten5d":"1ZN","@stdlib/array/base/getter":"1ZO","@stdlib/array-base-getter":"1ZP","@stdlib/array/base/last":"1ZQ","@stdlib/array-base-last":"1ZR","@stdlib/array/base/n-cartesian-product":"1ZS","@stdlib/array-base-n-cartesian-product":"1ZT","@stdlib/array/base/ones2d":"1ZU","@stdlib/array-base-ones2d":"1ZV","@stdlib/array/base/setter":"1ZW","@stdlib/array-base-setter":"1ZX","@stdlib/array/base/take":"1ZY","@stdlib/array-base-take":"1ZZ","@stdlib/array/base/to-accessor-array":"1Za","@stdlib/array-base-to-accessor-array":"1Zb","@stdlib/array/base/zero-to":"1Zc","@stdlib/array-base-zero-to":"1Zd","@stdlib/array/base/zeros2d":"1Ze","@stdlib/array-base-zeros2d":"1Zf","@stdlib/array/empty-like":"1Zg","@stdlib/array-empty-like":"1Zh","@stdlib/array/empty":"1Zi","@stdlib/array-empty":"1Zj","@stdlib/array/nans-like":"1Zk","@stdlib/array-nans-like":"1Zl","@stdlib/array/nans":"1Zm","@stdlib/array-nans":"1Zn","@stdlib/assert/is-accessor-array":"1Zo","@stdlib/assert-is-accessor-array":"1Zp","@stdlib/assert/is-camelcase":"1Zq","@stdlib/assert-is-camelcase":"1Zr","@stdlib/assert/is-constantcase":"1Zs","@stdlib/assert-is-constantcase":"1Zt","@stdlib/assert/is-current-year":"1Zu","@stdlib/assert-is-current-year":"1Zv","@stdlib/assert/is-domain-name":"1Zw","@stdlib/assert-is-domain-name":"1Zx","@stdlib/assert/is-duration-string":"1Zy","@stdlib/assert-is-duration-string":"1Zz","@stdlib/assert/is-kebabcase":"1a0","@stdlib/assert-is-kebabcase":"1a1","@stdlib/assert/is-pascalcase":"1a2","@stdlib/assert-is-pascalcase":"1a3","@stdlib/assert/is-semver":"1a4","@stdlib/assert-is-semver":"1a5","@stdlib/assert/is-snakecase":"1a6","@stdlib/assert-is-snakecase":"1a7","@stdlib/assert/is-startcase":"1a8","@stdlib/assert-is-startcase":"1a9","@stdlib/assert/napi/equal-typedarray-types":"1aA","@stdlib/assert-napi-equal-typedarray-types":"1aB","@stdlib/assert/napi/equal-types":"1aC","@stdlib/assert-napi-equal-types":"1aD","@stdlib/assert/napi/is-type":"1aE","@stdlib/assert-napi-is-type":"1aF","@stdlib/assert/napi/is-typedarray":"1aG","@stdlib/assert-napi-is-typedarray":"1aH","@stdlib/assert/napi":"1aI","@stdlib/assert-napi":"1aJ","@stdlib/assert/napi/status-ok":"1aK","@stdlib/assert-napi-status-ok":"1aL","@stdlib/blas/base/drotg":"1aM","@stdlib/blas-base-drotg":"1aN","@stdlib/blas/base/srotg":"1aO","@stdlib/blas-base-srotg":"1aP","@stdlib/boolean/ctor":"1aQ","@stdlib/boolean-ctor":"1aR","@stdlib/boolean":"1aT","@stdlib/complex/base/cast-return":"1aU","@stdlib/complex-base-cast-return":"1aV","@stdlib/complex/base":"1aW","@stdlib/complex-base":"1aX","@stdlib/console/log-each":"1aY","@stdlib/console-log-each":"1aZ","@stdlib/console/log":"1aa","@stdlib/console-log":"1ab","@stdlib/console":"1ad","@stdlib/constants/float32/abs-mask":"1ae","@stdlib/constants-float32-abs-mask":"1af","@stdlib/constants/float32/exponent-mask":"1ag","@stdlib/constants-float32-exponent-mask":"1ah","@stdlib/constants/float32/sign-mask":"1ai","@stdlib/constants-float32-sign-mask":"1aj","@stdlib/constants/float32/significand-mask":"1ak","@stdlib/constants-float32-significand-mask":"1al","@stdlib/constants/float64/high-word-abs-mask":"1am","@stdlib/constants-float64-high-word-abs-mask":"1an","@stdlib/constants/float64/high-word-sign-mask":"1ao","@stdlib/constants-float64-high-word-sign-mask":"1ap","@stdlib/function/ctor":"1aq","@stdlib/function-ctor":"1ar","@stdlib/function":"1at","@stdlib/function/to-string":"1au","@stdlib/function-to-string":"1av","@stdlib/math/base/assert/is-negative-finite":"1aw","@stdlib/math-base-assert-is-negative-finite":"1ax","@stdlib/math/base/assert/is-nonnegative-finite":"1ay","@stdlib/math-base-assert-is-nonnegative-finite":"1az","@stdlib/math/base/assert/is-nonpositive-finite":"1b0","@stdlib/math-base-assert-is-nonpositive-finite":"1b1","@stdlib/math/base/assert/is-positive-finite":"1b2","@stdlib/math-base-assert-is-positive-finite":"1b3","@stdlib/math/base/ops/cnegf":"1b4","@stdlib/math-base-ops-cnegf":"1b5","@stdlib/math/base/special/asec":"1b6","@stdlib/math-base-special-asec":"1b7","@stdlib/math/base/special/ellipj":"1b8","@stdlib/math-base-special-ellipj":"1b9","@stdlib/math/base/special/erfcx":"1bA","@stdlib/math-base-special-erfcx":"1bB","@stdlib/math/base/special/gammasgn":"1bC","@stdlib/math-base-special-gammasgn":"1bD","@stdlib/math/base/special/maxabsn":"1bE","@stdlib/math-base-special-maxabsn":"1bF","@stdlib/math/base/special/maxn":"1bG","@stdlib/math-base-special-maxn":"1bH","@stdlib/math/base/special/minabsn":"1bI","@stdlib/math-base-special-minabsn":"1bJ","@stdlib/math/base/special/minmaxabsn":"1bK","@stdlib/math-base-special-minmaxabsn":"1bL","@stdlib/math/base/special/minmaxn":"1bM","@stdlib/math-base-special-minmaxn":"1bN","@stdlib/math/base/special/minn":"1bO","@stdlib/math-base-special-minn":"1bP","@stdlib/math/base/special/rcbrt":"1bQ","@stdlib/math-base-special-rcbrt":"1bR","@stdlib/math/base/special/sqrtpi":"1bS","@stdlib/math-base-special-sqrtpi":"1bT","@stdlib/math/base/tools/evalpoly-compile-c":"1bU","@stdlib/math-base-tools-evalpoly-compile-c":"1bV","@stdlib/math/base/tools/evalrational-compile-c":"1bW","@stdlib/math-base-tools-evalrational-compile-c":"1bX","@stdlib/math/strided/ops/add-by":"1bY","@stdlib/math-strided-ops-add-by":"1bZ","@stdlib/math/strided/ops/mul-by":"1ba","@stdlib/math-strided-ops-mul-by":"1bb","@stdlib/math/strided/ops/sub-by":"1bc","@stdlib/math-strided-ops-sub-by":"1bd","@stdlib/math/strided/special/cbrt-by":"1be","@stdlib/math-strided-special-cbrt-by":"1bf","@stdlib/math/strided/special/cos-by":"1bg","@stdlib/math-strided-special-cos-by":"1bh","@stdlib/math/strided/special/dcbrt-by":"1bi","@stdlib/math-strided-special-dcbrt-by":"1bj","@stdlib/math/strided/special/sin-by":"1bk","@stdlib/math-strided-special-sin-by":"1bl","@stdlib/math/strided/special/sqrt-by":"1bm","@stdlib/math-strided-special-sqrt-by":"1bn","@stdlib/napi/argv-complex128array":"1bo","@stdlib/napi-argv-complex128array":"1bp","@stdlib/napi/argv-complex64array":"1bq","@stdlib/napi-argv-complex64array":"1br","@stdlib/napi/argv-double":"1bs","@stdlib/napi-argv-double":"1bt","@stdlib/napi/argv-float":"1bu","@stdlib/napi-argv-float":"1bv","@stdlib/napi/argv-float32array":"1bw","@stdlib/napi-argv-float32array":"1bx","@stdlib/napi/argv-float64array":"1by","@stdlib/napi-argv-float64array":"1bz","@stdlib/napi/argv-int16array":"1c0","@stdlib/napi-argv-int16array":"1c1","@stdlib/napi/argv-int32":"1c2","@stdlib/napi-argv-int32":"1c3","@stdlib/napi/argv-int32array":"1c4","@stdlib/napi-argv-int32array":"1c5","@stdlib/napi/argv-int64":"1c6","@stdlib/napi-argv-int64":"1c7","@stdlib/napi/argv-int8array":"1c8","@stdlib/napi-argv-int8array":"1c9","@stdlib/napi/argv-strided-complex128array":"1cA","@stdlib/napi-argv-strided-complex128array":"1cB","@stdlib/napi/argv-strided-complex64array":"1cC","@stdlib/napi-argv-strided-complex64array":"1cD","@stdlib/napi/argv-strided-float32array":"1cE","@stdlib/napi-argv-strided-float32array":"1cF","@stdlib/napi/argv-strided-float64array":"1cG","@stdlib/napi-argv-strided-float64array":"1cH","@stdlib/napi/argv-strided-int16array":"1cI","@stdlib/napi-argv-strided-int16array":"1cJ","@stdlib/napi/argv-strided-int32array":"1cK","@stdlib/napi-argv-strided-int32array":"1cL","@stdlib/napi/argv-strided-int8array":"1cM","@stdlib/napi-argv-strided-int8array":"1cN","@stdlib/napi/argv-strided-uint16array":"1cO","@stdlib/napi-argv-strided-uint16array":"1cP","@stdlib/napi/argv-strided-uint32array":"1cQ","@stdlib/napi-argv-strided-uint32array":"1cR","@stdlib/napi/argv-strided-uint8array":"1cS","@stdlib/napi-argv-strided-uint8array":"1cT","@stdlib/napi/argv-uint16array":"1cU","@stdlib/napi-argv-uint16array":"1cV","@stdlib/napi/argv-uint32":"1cW","@stdlib/napi-argv-uint32":"1cX","@stdlib/napi/argv-uint32array":"1cY","@stdlib/napi-argv-uint32array":"1cZ","@stdlib/napi/argv-uint8array":"1ca","@stdlib/napi-argv-uint8array":"1cb","@stdlib/napi/argv":"1cc","@stdlib/napi-argv":"1cd","@stdlib/napi/export":"1ce","@stdlib/napi-export":"1cf","@stdlib/napi":"1ch","@stdlib/ndarray/base/assert/is-complex-floating-point-data-type":"1ci","@stdlib/ndarray-base-assert-is-complex-floating-point-data-type":"1cj","@stdlib/ndarray/base/assert/is-floating-point-data-type":"1ck","@stdlib/ndarray-base-assert-is-floating-point-data-type":"1cl","@stdlib/ndarray/base/assert/is-integer-data-type":"1cm","@stdlib/ndarray-base-assert-is-integer-data-type":"1cn","@stdlib/ndarray/base/assert/is-numeric-data-type":"1co","@stdlib/ndarray-base-assert-is-numeric-data-type":"1cp","@stdlib/ndarray/base/assert/is-real-data-type":"1cq","@stdlib/ndarray-base-assert-is-real-data-type":"1cr","@stdlib/ndarray/base/assert/is-real-floating-point-data-type":"1cs","@stdlib/ndarray-base-assert-is-real-floating-point-data-type":"1ct","@stdlib/ndarray/base/assert/is-signed-integer-data-type":"1cu","@stdlib/ndarray-base-assert-is-signed-integer-data-type":"1cv","@stdlib/ndarray/base/assert/is-unsigned-integer-data-type":"1cw","@stdlib/ndarray-base-assert-is-unsigned-integer-data-type":"1cx","@stdlib/ndarray/base/binary-loop-interchange-order":"1cy","@stdlib/ndarray-base-binary-loop-interchange-order":"1cz","@stdlib/ndarray/base/binary-tiling-block-size":"1d0","@stdlib/ndarray-base-binary-tiling-block-size":"1d1","@stdlib/ndarray/base/broadcast-scalar":"1d2","@stdlib/ndarray-base-broadcast-scalar":"1d3","@stdlib/ndarray/base/empty-like":"1d4","@stdlib/ndarray-base-empty-like":"1d5","@stdlib/ndarray/base/empty":"1d6","@stdlib/ndarray-base-empty":"1d7","@stdlib/ndarray/base/nullary-loop-interchange-order":"1d8","@stdlib/ndarray-base-nullary-loop-interchange-order":"1d9","@stdlib/ndarray/base/nullary-tiling-block-size":"1dA","@stdlib/ndarray-base-nullary-tiling-block-size":"1dB","@stdlib/ndarray/base/nullary":"1dC","@stdlib/ndarray-base-nullary":"1dD","@stdlib/ndarray/base/output-policy-enum2str":"1dE","@stdlib/ndarray-base-output-policy-enum2str":"1dF","@stdlib/ndarray/base/output-policy-resolve-enum":"1dG","@stdlib/ndarray-base-output-policy-resolve-enum":"1dH","@stdlib/ndarray/base/output-policy-resolve-str":"1dI","@stdlib/ndarray-base-output-policy-resolve-str":"1dJ","@stdlib/ndarray/base/output-policy-str2enum":"1dK","@stdlib/ndarray-base-output-policy-str2enum":"1dL","@stdlib/ndarray/base/unary-by":"1dM","@stdlib/ndarray-base-unary-by":"1dN","@stdlib/ndarray/base/unary-loop-interchange-order":"1dO","@stdlib/ndarray-base-unary-loop-interchange-order":"1dP","@stdlib/ndarray/base/unary-output-dtype":"1dQ","@stdlib/ndarray-base-unary-output-dtype":"1dR","@stdlib/ndarray/base/unary-tiling-block-size":"1dS","@stdlib/ndarray-base-unary-tiling-block-size":"1dT","@stdlib/ndarray/defaults":"1dU","@stdlib/ndarray-defaults":"1dV","@stdlib/ndarray/dispatch-by":"1dW","@stdlib/ndarray-dispatch-by":"1dX","@stdlib/ndarray/empty-like":"1dY","@stdlib/ndarray-empty-like":"1dZ","@stdlib/ndarray/empty":"1da","@stdlib/ndarray-empty":"1db","@stdlib/ndarray/output-dtype-policies":"1dc","@stdlib/ndarray-output-dtype-policies":"1dd","@stdlib/ndarray/to-array":"1de","@stdlib/ndarray-to-array":"1df","@stdlib/nlp/expand-acronyms":"1dg","@stdlib/nlp-expand-acronyms":"1dh","@stdlib/nlp/sentencize":"1di","@stdlib/nlp-sentencize":"1dj","@stdlib/number/float64/reviver":"1dk","@stdlib/number-float64-reviver":"1dl","@stdlib/number/float64/to-json":"1dm","@stdlib/number-float64-to-json":"1dn","@stdlib/object/assign":"1do","@stdlib/object-assign":"1dp","@stdlib/object/ctor":"1dq","@stdlib/object-ctor":"1dr","@stdlib/object":"1dt","@stdlib/random/array/arcsine":"1du","@stdlib/random-array-arcsine":"1dv","@stdlib/random/array/beta":"1dw","@stdlib/random-array-beta":"1dx","@stdlib/random/array/betaprime":"1dy","@stdlib/random-array-betaprime":"1dz","@stdlib/random/array/cosine":"1e0","@stdlib/random-array-cosine":"1e1","@stdlib/random/array/discrete-uniform":"1e2","@stdlib/random-array-discrete-uniform":"1e3","@stdlib/random/array/exponential":"1e4","@stdlib/random-array-exponential":"1e5","@stdlib/random/array/gamma":"1e6","@stdlib/random-array-gamma":"1e7","@stdlib/random/array/geometric":"1e8","@stdlib/random-array-geometric":"1e9","@stdlib/random/array/invgamma":"1eA","@stdlib/random-array-invgamma":"1eB","@stdlib/random/array/lognormal":"1eC","@stdlib/random-array-lognormal":"1eD","@stdlib/random/array/minstd-shuffle":"1eE","@stdlib/random-array-minstd-shuffle":"1eF","@stdlib/random/array/minstd":"1eG","@stdlib/random-array-minstd":"1eH","@stdlib/random/array/mt19937":"1eI","@stdlib/random-array-mt19937":"1eJ","@stdlib/random/array/normal":"1eK","@stdlib/random-array-normal":"1eL","@stdlib/random/array":"1eM","@stdlib/random-array":"1eN","@stdlib/random/array/randu":"1eO","@stdlib/random-array-randu":"1eP","@stdlib/random/array/uniform":"1eQ","@stdlib/random-array-uniform":"1eR","@stdlib/random/exponential":"1eS","@stdlib/random-exponential":"1eT","@stdlib/random/strided/arcsine":"1eU","@stdlib/random-strided-arcsine":"1eV","@stdlib/random/strided/beta":"1eW","@stdlib/random-strided-beta":"1eX","@stdlib/random/strided/betaprime":"1eY","@stdlib/random-strided-betaprime":"1eZ","@stdlib/random/strided/cosine":"1ea","@stdlib/random-strided-cosine":"1eb","@stdlib/random/strided/discrete-uniform":"1ec","@stdlib/random-strided-discrete-uniform":"1ed","@stdlib/random/strided/exponential":"1ee","@stdlib/random-strided-exponential":"1ef","@stdlib/random/strided/gamma":"1eg","@stdlib/random-strided-gamma":"1eh","@stdlib/random/strided/invgamma":"1ei","@stdlib/random-strided-invgamma":"1ej","@stdlib/random/strided/lognormal":"1ek","@stdlib/random-strided-lognormal":"1el","@stdlib/random/strided/minstd-shuffle":"1em","@stdlib/random-strided-minstd-shuffle":"1en","@stdlib/random/strided/minstd":"1eo","@stdlib/random-strided-minstd":"1ep","@stdlib/random/strided/mt19937":"1eq","@stdlib/random-strided-mt19937":"1er","@stdlib/random/strided/normal":"1es","@stdlib/random-strided-normal":"1et","@stdlib/random/strided":"1eu","@stdlib/random-strided":"1ev","@stdlib/random/strided/randu":"1ew","@stdlib/random-strided-randu":"1ex","@stdlib/random/strided/uniform":"1ey","@stdlib/random-strided-uniform":"1ez","@stdlib/random/strided/weibull":"1f0","@stdlib/random-strided-weibull":"1f1","@stdlib/regexp/duration-string":"1f2","@stdlib/regexp-duration-string":"1f3","@stdlib/regexp/reviver":"1f4","@stdlib/regexp-reviver":"1f5","@stdlib/regexp/semver":"1f6","@stdlib/regexp-semver":"1f7","@stdlib/regexp/to-json":"1f8","@stdlib/regexp-to-json":"1f9","@stdlib/stats/base/dists/lognormal/logcdf":"1fA","@stdlib/stats-base-dists-lognormal-logcdf":"1fB","@stdlib/stats/base/dists/normal/logcdf":"1fC","@stdlib/stats-base-dists-normal-logcdf":"1fD","@stdlib/stats/base/dists/studentized-range/cdf":"1fE","@stdlib/stats-base-dists-studentized-range-cdf":"1fF","@stdlib/stats/base/dists/studentized-range":"1fG","@stdlib/stats-base-dists-studentized-range":"1fH","@stdlib/stats/base/dists/studentized-range/quantile":"1fI","@stdlib/stats-base-dists-studentized-range-quantile":"1fJ","@stdlib/strided/base/mskunary-addon-dispatch":"1fK","@stdlib/strided-base-mskunary-addon-dispatch":"1fL","@stdlib/strided/base/mskunary-dtype-signatures":"1fM","@stdlib/strided-base-mskunary-dtype-signatures":"1fN","@stdlib/strided/base/mskunary-signature-callbacks":"1fO","@stdlib/strided-base-mskunary-signature-callbacks":"1fP","@stdlib/strided/base/nullary-addon-dispatch":"1fQ","@stdlib/strided-base-nullary-addon-dispatch":"1fR","@stdlib/strided/base/unary-by":"1fS","@stdlib/strided-base-unary-by":"1fT","@stdlib/strided/base/unary-dtype-signatures":"1fU","@stdlib/strided-base-unary-dtype-signatures":"1fV","@stdlib/strided/base/unary-signature-callbacks":"1fW","@stdlib/strided-base-unary-signature-callbacks":"1fX","@stdlib/strided/dispatch-by":"1fY","@stdlib/strided-dispatch-by":"1fZ","@stdlib/strided/napi/nullary":"1fa","@stdlib/strided-napi-nullary":"1fb","@stdlib/string/base/camelcase":"1fc","@stdlib/string-base-camelcase":"1fd","@stdlib/string/base/capitalize":"1fe","@stdlib/string-base-capitalize":"1ff","@stdlib/string/base/code-point-at":"1fg","@stdlib/string-base-code-point-at":"1fh","@stdlib/string/base/constantcase":"1fi","@stdlib/string-base-constantcase":"1fj","@stdlib/string/base/distances/levenshtein":"1fk","@stdlib/string-base-distances-levenshtein":"1fl","@stdlib/string/base/distances":"1fm","@stdlib/string-base-distances":"1fn","@stdlib/string/base/dotcase":"1fo","@stdlib/string-base-dotcase":"1fp","@stdlib/string/base/ends-with":"1fq","@stdlib/string-base-ends-with":"1fr","@stdlib/string/base/first-code-point":"1fs","@stdlib/string-base-first-code-point":"1ft","@stdlib/string/base/first-grapheme-cluster":"1fu","@stdlib/string-base-first-grapheme-cluster":"1fv","@stdlib/string/base/first":"1fw","@stdlib/string-base-first":"1fx","@stdlib/string/base/for-each-code-point":"1fy","@stdlib/string-base-for-each-code-point":"1fz","@stdlib/string/base/for-each-grapheme-cluster":"1g0","@stdlib/string-base-for-each-grapheme-cluster":"1g1","@stdlib/string/base/for-each":"1g2","@stdlib/string-base-for-each":"1g3","@stdlib/string/base/headercase":"1g4","@stdlib/string-base-headercase":"1g5","@stdlib/string/base/invcase":"1g6","@stdlib/string-base-invcase":"1g7","@stdlib/string/base/kebabcase":"1g8","@stdlib/string-base-kebabcase":"1g9","@stdlib/string/base/left-pad":"1gA","@stdlib/string-base-left-pad":"1gB","@stdlib/string/base/left-trim":"1gC","@stdlib/string-base-left-trim":"1gD","@stdlib/string/base/lowercase":"1gE","@stdlib/string-base-lowercase":"1gF","@stdlib/string/base/pascalcase":"1gG","@stdlib/string-base-pascalcase":"1gH","@stdlib/string/base/percent-encode":"1gI","@stdlib/string-base-percent-encode":"1gJ","@stdlib/string/base/remove-first-code-point":"1gK","@stdlib/string-base-remove-first-code-point":"1gL","@stdlib/string/base/remove-first-grapheme-cluster":"1gM","@stdlib/string-base-remove-first-grapheme-cluster":"1gN","@stdlib/string/base/remove-first":"1gO","@stdlib/string-base-remove-first":"1gP","@stdlib/string/base/repeat":"1gQ","@stdlib/string-base-repeat":"1gR","@stdlib/string/base/replace-before":"1gS","@stdlib/string-base-replace-before":"1gT","@stdlib/string/base/replace":"1gU","@stdlib/string-base-replace":"1gV","@stdlib/string/base/right-pad":"1gW","@stdlib/string-base-right-pad":"1gX","@stdlib/string/base/right-trim":"1gY","@stdlib/string-base-right-trim":"1gZ","@stdlib/string/base/snakecase":"1ga","@stdlib/string-base-snakecase":"1gb","@stdlib/string/base/startcase":"1gc","@stdlib/string-base-startcase":"1gd","@stdlib/string/base/starts-with":"1ge","@stdlib/string-base-starts-with":"1gf","@stdlib/string/base/trim":"1gg","@stdlib/string-base-trim":"1gh","@stdlib/string/base/uncapitalize":"1gi","@stdlib/string-base-uncapitalize":"1gj","@stdlib/string/base/uppercase":"1gk","@stdlib/string-base-uppercase":"1gl","@stdlib/string/dotcase":"1gm","@stdlib/string-dotcase":"1gn","@stdlib/string/first":"1go","@stdlib/string-first":"1gp","@stdlib/string/for-each":"1gq","@stdlib/string-for-each":"1gr","@stdlib/string/headercase":"1gs","@stdlib/string-headercase":"1gt","@stdlib/string/num2words":"1gu","@stdlib/string-num2words":"1gv","@stdlib/string/replace-before":"1gw","@stdlib/string-replace-before":"1gx","@stdlib/string/to-grapheme-cluster-iterator-right":"1gy","@stdlib/string-to-grapheme-cluster-iterator-right":"1gz","@stdlib/string/to-grapheme-cluster-iterator":"1h0","@stdlib/string-to-grapheme-cluster-iterator":"1h1","@stdlib/time/base":"1h2","@stdlib/time-base":"1h3","@stdlib/time/base/parse-duration":"1h4","@stdlib/time-base-parse-duration":"1h5","@stdlib/time/current-year":"1h6","@stdlib/time-current-year":"1h7","@stdlib/time/duration2ms":"1h8","@stdlib/time-duration2ms":"1h9","@stdlib/time/ms2duration":"1hA","@stdlib/time-ms2duration":"1hB","@stdlib/utils/decorate-after":"1hC","@stdlib/utils-decorate-after":"1hD","@stdlib/utils/dsv/base":"1hE","@stdlib/utils-dsv-base":"1hF","@stdlib/utils/dsv/base/parse":"1hG","@stdlib/utils-dsv-base-parse":"1hH","@stdlib/utils/dsv":"1hI","@stdlib/utils-dsv":"1hJ","@stdlib/utils/thunk":"1hK","@stdlib/utils-thunk":"1hL","@stdlib/array/base/broadcast-array":"1hM","@stdlib/array-base-broadcast-array":"1hN","@stdlib/array/base/filled2d-by":"1hO","@stdlib/array-base-filled2d-by":"1hP","@stdlib/array/base/filled3d-by":"1hQ","@stdlib/array-base-filled3d-by":"1hR","@stdlib/array/base/filled3d":"1hS","@stdlib/array-base-filled3d":"1hT","@stdlib/array/base/filled4d-by":"1hU","@stdlib/array-base-filled4d-by":"1hV","@stdlib/array/base/filled4d":"1hW","@stdlib/array-base-filled4d":"1hX","@stdlib/array/base/filled5d-by":"1hY","@stdlib/array-base-filled5d-by":"1hZ","@stdlib/array/base/filled5d":"1ha","@stdlib/array-base-filled5d":"1hb","@stdlib/array/base/fillednd":"1hc","@stdlib/array-base-fillednd":"1hd","@stdlib/array/base/flatten-by":"1he","@stdlib/array-base-flatten-by":"1hf","@stdlib/array/base/one-to":"1hg","@stdlib/array-base-one-to":"1hh","@stdlib/array/base/ones3d":"1hi","@stdlib/array-base-ones3d":"1hj","@stdlib/array/base/ones4d":"1hk","@stdlib/array-base-ones4d":"1hl","@stdlib/array/base/ones5d":"1hm","@stdlib/array-base-ones5d":"1hn","@stdlib/array/base/onesnd":"1ho","@stdlib/array-base-onesnd":"1hp","@stdlib/array/base/unary2d":"1hq","@stdlib/array-base-unary2d":"1hr","@stdlib/array/base/zeros3d":"1hs","@stdlib/array-base-zeros3d":"1ht","@stdlib/array/base/zeros4d":"1hu","@stdlib/array-base-zeros4d":"1hv","@stdlib/array/base/zeros5d":"1hw","@stdlib/array-base-zeros5d":"1hx","@stdlib/array/base/zerosnd":"1hy","@stdlib/array-base-zerosnd":"1hz","@stdlib/array/base/binary2d":"1i0","@stdlib/array-base-binary2d":"1i1","@stdlib/array/base/binary3d":"1i2","@stdlib/array-base-binary3d":"1i3","@stdlib/array/base/binary4d":"1i4","@stdlib/array-base-binary4d":"1i5","@stdlib/array/base/binary5d":"1i6","@stdlib/array-base-binary5d":"1i7","@stdlib/array/base/binarynd":"1i8","@stdlib/array-base-binarynd":"1i9","@stdlib/array/base/broadcasted-binary2d":"1iA","@stdlib/array-base-broadcasted-binary2d":"1iB","@stdlib/array/base/broadcasted-binary3d":"1iC","@stdlib/array-base-broadcasted-binary3d":"1iD","@stdlib/array/base/broadcasted-binary4d":"1iE","@stdlib/array-base-broadcasted-binary4d":"1iF","@stdlib/array/base/broadcasted-binary5d":"1iG","@stdlib/array-base-broadcasted-binary5d":"1iH","@stdlib/array/base/broadcasted-unary2d":"1iI","@stdlib/array-base-broadcasted-unary2d":"1iJ","@stdlib/array/base/broadcasted-unary3d":"1iK","@stdlib/array-base-broadcasted-unary3d":"1iL","@stdlib/array/base/broadcasted-unary4d":"1iM","@stdlib/array-base-broadcasted-unary4d":"1iN","@stdlib/array/base/broadcasted-unary5d":"1iO","@stdlib/array-base-broadcasted-unary5d":"1iP","@stdlib/array/base/fillednd-by":"1iQ","@stdlib/array-base-fillednd-by":"1iR","@stdlib/array/base/unary3d":"1iS","@stdlib/array-base-unary3d":"1iT","@stdlib/array/base/unary4d":"1iU","@stdlib/array-base-unary4d":"1iV","@stdlib/array/base/unary5d":"1iW","@stdlib/array-base-unary5d":"1iX","@stdlib/array/base/unarynd":"1iY","@stdlib/array-base-unarynd":"1iZ","@stdlib/array/base/mskbinary2d":"1ia","@stdlib/array-base-mskbinary2d":"1ib","@stdlib/array/base/mskunary2d":"1ic","@stdlib/array-base-mskunary2d":"1id","@stdlib/array/base/mskunary3d":"1ie","@stdlib/array-base-mskunary3d":"1if","@stdlib/array/base/unary2d-by":"1ig","@stdlib/array-base-unary2d-by":"1ih","@stdlib/assert/is-multi-slice":"1ii","@stdlib/assert-is-multi-slice":"1ij","@stdlib/assert/is-slice":"1ik","@stdlib/assert-is-slice":"1il","@stdlib/math/base/special/log1pmx":"1im","@stdlib/math-base-special-log1pmx":"1in","@stdlib/slice/base":"1io","@stdlib/slice-base":"1ip","@stdlib/slice/base/seq2slice":"1iq","@stdlib/slice-base-seq2slice":"1ir","@stdlib/slice/base/slice2seq":"1is","@stdlib/slice-base-slice2seq":"1it","@stdlib/slice/base/str2multislice":"1iu","@stdlib/slice-base-str2multislice":"1iv","@stdlib/slice/base/str2slice":"1iw","@stdlib/slice-base-str2slice":"1ix","@stdlib/slice/ctor":"1iy","@stdlib/slice-ctor":"1iz","@stdlib/slice/multi":"1j0","@stdlib/slice-multi":"1j1","@stdlib/slice":"1j3","@stdlib/slice/seq2slice":"1j4","@stdlib/slice-seq2slice":"1j5","@stdlib/ndarray/fancy":"1j6","@stdlib/ndarray-fancy":"1j7","@stdlib/slice/base/length":"1j8","@stdlib/slice-base-length":"1j9","@stdlib/slice/base/normalize-multi-slice":"1jA","@stdlib/slice-base-normalize-multi-slice":"1jB","@stdlib/slice/base/normalize-slice":"1jC","@stdlib/slice-base-normalize-slice":"1jD","@stdlib/slice/base/seq2multislice":"1jE","@stdlib/slice-base-seq2multislice":"1jF","@stdlib/slice/base/shape":"1jG","@stdlib/slice-base-shape":"1jH","@stdlib/string/base/remove-last-code-point":"1jI","@stdlib/string-base-remove-last-code-point":"1jJ","@stdlib/string/base/remove-last-grapheme-cluster":"1jK","@stdlib/string-base-remove-last-grapheme-cluster":"1jL","@stdlib/string/base/remove-last":"1jM","@stdlib/string-base-remove-last":"1jN","@stdlib/ndarray/base/slice-assign":"1jO","@stdlib/ndarray-base-slice-assign":"1jP","@stdlib/ndarray/base/slice":"1jQ","@stdlib/ndarray-base-slice":"1jR","@stdlib/ndarray/slice-assign":"1jS","@stdlib/ndarray-slice-assign":"1jT","@stdlib/ndarray/slice":"1jU","@stdlib/ndarray-slice":"1jV","@stdlib/slice/base/nonreduced-dimensions":"1jW","@stdlib/slice-base-nonreduced-dimensions":"1jX","@stdlib/slice/base/reduced-dimensions":"1jY","@stdlib/slice-base-reduced-dimensions":"1jZ","@stdlib/slice/base/sargs2multislice":"1ja","@stdlib/slice-base-sargs2multislice":"1jb","@stdlib/ndarray/base/ndims":"1jc","@stdlib/ndarray-base-ndims":"1jd","@stdlib/ndarray/base/next-cartesian-index":"1je","@stdlib/ndarray-base-next-cartesian-index":"1jf","@stdlib/ndarray/base/offset":"1jg","@stdlib/ndarray-base-offset":"1jh","@stdlib/ndarray/base/shape":"1ji","@stdlib/ndarray-base-shape":"1jj","@stdlib/ndarray/base/strides":"1jk","@stdlib/ndarray-base-strides":"1jl","@stdlib/ndarray/broadcast-array":"1jm","@stdlib/ndarray-broadcast-array":"1jn","@stdlib/ndarray/iter/columns":"1jo","@stdlib/ndarray-iter-columns":"1jp","@stdlib/ndarray/iter/entries":"1jq","@stdlib/ndarray-iter-entries":"1jr","@stdlib/ndarray/iter/indices":"1js","@stdlib/ndarray-iter-indices":"1jt","@stdlib/ndarray/iter":"1ju","@stdlib/ndarray-iter":"1jv","@stdlib/ndarray/iter/rows":"1jw","@stdlib/ndarray-iter-rows":"1jx","@stdlib/ndarray/iter/to-array-each":"1jy","@stdlib/ndarray-iter-to-array-each":"1jz","@stdlib/ndarray/iter/values":"1k0","@stdlib/ndarray-iter-values":"1k1","@stdlib/ndarray/maybe-broadcast-array":"1k2","@stdlib/ndarray-maybe-broadcast-array":"1k3","@stdlib/ndarray/ndims":"1k4","@stdlib/ndarray-ndims":"1k5","@stdlib/ndarray/numel":"1k6","@stdlib/ndarray-numel":"1k7","@stdlib/ndarray/offset":"1k8","@stdlib/ndarray-offset":"1k9","@stdlib/ndarray/shape":"1kA","@stdlib/ndarray-shape":"1kB","@stdlib/ndarray/strides":"1kC","@stdlib/ndarray-strides":"1kD","@stdlib/ndarray/base/assert/is-mostly-safe-data-type-cast":"1kE","@stdlib/ndarray-base-assert-is-mostly-safe-data-type-cast":"1kF","@stdlib/ndarray/base/assign":"1kG","@stdlib/ndarray-base-assign":"1kH","@stdlib/ndarray/base/data-buffer":"1kI","@stdlib/ndarray-base-data-buffer":"1kJ","@stdlib/ndarray/base/dtype":"1kK","@stdlib/ndarray-base-dtype":"1kL","@stdlib/ndarray/base/order":"1kM","@stdlib/ndarray-base-order":"1kN","@stdlib/ndarray/base/reverse":"1kO","@stdlib/ndarray-base-reverse":"1kP","@stdlib/ndarray/base/slice-dimension":"1kQ","@stdlib/ndarray-base-slice-dimension":"1kR","@stdlib/ndarray/data-buffer":"1kS","@stdlib/ndarray-data-buffer":"1kT","@stdlib/ndarray/dtype":"1kU","@stdlib/ndarray-dtype":"1kV","@stdlib/ndarray/mostly-safe-casts":"1kW","@stdlib/ndarray-mostly-safe-casts":"1kX","@stdlib/ndarray/order":"1kY","@stdlib/ndarray-order":"1kZ","@stdlib/ndarray/slice-dimension":"1ka","@stdlib/ndarray-slice-dimension":"1kb","@stdlib/slice/base/args2multislice":"1kc","@stdlib/slice-base-args2multislice":"1kd","@stdlib/array/base/broadcasted-quaternary2d":"1ke","@stdlib/array-base-broadcasted-quaternary2d":"1kf","@stdlib/array/base/broadcasted-quinary2d":"1kg","@stdlib/array-base-broadcasted-quinary2d":"1kh","@stdlib/array/base/broadcasted-ternary2d":"1ki","@stdlib/array-base-broadcasted-ternary2d":"1kj","@stdlib/array/base/quaternary2d":"1kk","@stdlib/array-base-quaternary2d":"1kl","@stdlib/array/base/quinary2d":"1km","@stdlib/array-base-quinary2d":"1kn","@stdlib/array/base/strided2array2d":"1ko","@stdlib/array-base-strided2array2d":"1kp","@stdlib/array/base/strided2array3d":"1kq","@stdlib/array-base-strided2array3d":"1kr","@stdlib/array/base/strided2array4d":"1ks","@stdlib/array-base-strided2array4d":"1kt","@stdlib/array/base/strided2array5d":"1ku","@stdlib/array-base-strided2array5d":"1kv","@stdlib/array/base/ternary2d":"1kw","@stdlib/array-base-ternary2d":"1kx","@stdlib/array/base/ternary3d":"1ky","@stdlib/array-base-ternary3d":"1kz","@stdlib/array/base/ternary4d":"1l0","@stdlib/array-base-ternary4d":"1l1","@stdlib/array/base/ternary5d":"1l2","@stdlib/array-base-ternary5d":"1l3","@stdlib/ndarray/base/fliplr":"1l4","@stdlib/ndarray-base-fliplr":"1l5","@stdlib/ndarray/base/flipud":"1l6","@stdlib/ndarray-base-flipud":"1l7","@stdlib/ndarray/base/normalize-index":"1l8","@stdlib/ndarray-base-normalize-index":"1l9","@stdlib/ndarray/base/reverse-dimension":"1lA","@stdlib/ndarray-base-reverse-dimension":"1lB","@stdlib/ndarray/base/slice-dimension-from":"1lC","@stdlib/ndarray-base-slice-dimension-from":"1lD","@stdlib/ndarray/base/slice-dimension-to":"1lE","@stdlib/ndarray-base-slice-dimension-to":"1lF","@stdlib/ndarray/base/slice-from":"1lG","@stdlib/ndarray-base-slice-from":"1lH","@stdlib/ndarray/base/slice-to":"1lI","@stdlib/ndarray-base-slice-to":"1lJ","@stdlib/ndarray/iter/column-entries":"1lK","@stdlib/ndarray-iter-column-entries":"1lL","@stdlib/ndarray/iter/matrices":"1lM","@stdlib/ndarray-iter-matrices":"1lN","@stdlib/ndarray/iter/matrix-entries":"1lO","@stdlib/ndarray-iter-matrix-entries":"1lP","@stdlib/ndarray/iter/row-entries":"1lQ","@stdlib/ndarray-iter-row-entries":"1lR","@stdlib/ndarray/slice-dimension-from":"1lS","@stdlib/ndarray-slice-dimension-from":"1lT","@stdlib/ndarray/slice-dimension-to":"1lU","@stdlib/ndarray-slice-dimension-to":"1lV","@stdlib/string/base/reverse-code-points":"1lW","@stdlib/string-base-reverse-code-points":"1lX","@stdlib/string/base/reverse-grapheme-clusters":"1lY","@stdlib/string-base-reverse-grapheme-clusters":"1lZ","@stdlib/string/base/reverse":"1la","@stdlib/string-base-reverse":"1lb","@stdlib/string/base/truncate-middle":"1lc","@stdlib/string-base-truncate-middle":"1ld","@stdlib/string/next-code-point-index":"1le","@stdlib/string-next-code-point-index":"1lf","@stdlib/array/base/fliplr2d":"1lg","@stdlib/array-base-fliplr2d":"1lh","@stdlib/array/base/flipud2d":"1li","@stdlib/array-base-flipud2d":"1lj","@stdlib/array/base/from-strided":"1lk","@stdlib/array-base-from-strided":"1ll","@stdlib/array/base/map2d":"1lm","@stdlib/array-base-map2d":"1ln","@stdlib/array/base/map3d":"1lo","@stdlib/array-base-map3d":"1lp","@stdlib/array/base/quaternary3d":"1lq","@stdlib/array-base-quaternary3d":"1lr","@stdlib/array/base/quaternary4d":"1ls","@stdlib/array-base-quaternary4d":"1lt","@stdlib/array/base/quaternary5d":"1lu","@stdlib/array-base-quaternary5d":"1lv","@stdlib/array/base/resolve-getter":"1lw","@stdlib/array-base-resolve-getter":"1lx","@stdlib/array/base/take-indexed":"1ly","@stdlib/array-base-take-indexed":"1lz","@stdlib/array/base/take2d":"1m0","@stdlib/array-base-take2d":"1m1","@stdlib/math/base/napi/quaternary":"1m2","@stdlib/math-base-napi-quaternary":"1m3","@stdlib/math/base/napi/quinary":"1m4","@stdlib/math-base-napi-quinary":"1m5","@stdlib/math/base/ops/add3":"1m6","@stdlib/math-base-ops-add3":"1m7","@stdlib/math/base/ops/add4":"1m8","@stdlib/math-base-ops-add4":"1m9","@stdlib/math/base/ops/add5":"1mA","@stdlib/math-base-ops-add5":"1mB","@stdlib/math/base/ops/div":"1mC","@stdlib/math-base-ops-div":"1mD","@stdlib/math/base/ops/divf":"1mE","@stdlib/math-base-ops-divf":"1mF","@stdlib/math/base/special/factorial2":"1mG","@stdlib/math-base-special-factorial2":"1mH","@stdlib/array/base/fliplr3d":"1mI","@stdlib/array-base-fliplr3d":"1mJ","@stdlib/array/base/fliplr4d":"1mK","@stdlib/array-base-fliplr4d":"1mL","@stdlib/array/base/fliplr5d":"1mM","@stdlib/array-base-fliplr5d":"1mN","@stdlib/array/base/map4d":"1mO","@stdlib/array-base-map4d":"1mP","@stdlib/array/base/map5d":"1mQ","@stdlib/array-base-map5d":"1mR","@stdlib/array/base/take3d":"1mS","@stdlib/array-base-take3d":"1mT","@stdlib/assert/is-complex128matrix-like":"1mU","@stdlib/assert-is-complex128matrix-like":"1mV","@stdlib/assert/is-complex128ndarray-like":"1mW","@stdlib/assert-is-complex128ndarray-like":"1mX","@stdlib/assert/is-complex128vector-like":"1mY","@stdlib/assert-is-complex128vector-like":"1mZ","@stdlib/assert/is-complex64matrix-like":"1ma","@stdlib/assert-is-complex64matrix-like":"1mb","@stdlib/assert/is-complex64ndarray-like":"1mc","@stdlib/assert-is-complex64ndarray-like":"1md","@stdlib/assert/is-complex64vector-like":"1me","@stdlib/assert-is-complex64vector-like":"1mf","@stdlib/ndarray/base/stride":"1mg","@stdlib/ndarray-base-stride":"1mh","@stdlib/ndarray/slice-to":"1mi","@stdlib/ndarray-slice-to":"1mj","@stdlib/ndarray/stride":"1mk","@stdlib/ndarray-stride":"1ml","@stdlib/array/base/first":"1mm","@stdlib/array-base-first":"1mn","@stdlib/array/base/index-of":"1mo","@stdlib/array-base-index-of":"1mp","@stdlib/array/base/last-index-of":"1mq","@stdlib/array-base-last-index-of":"1mr","@stdlib/array/base/slice":"1ms","@stdlib/array-base-slice":"1mt","@stdlib/iter/while-each":"1mu","@stdlib/iter-while-each":"1mv","@stdlib/ndarray/slice-from":"1mw","@stdlib/ndarray-slice-from":"1mx","@stdlib/string/base/altcase":"1my","@stdlib/string-base-altcase":"1mz","@stdlib/string/base/distances/hamming":"1n0","@stdlib/string-base-distances-hamming":"1n1","@stdlib/array/base/bifurcate-entries":"1n2","@stdlib/array-base-bifurcate-entries":"1n3","@stdlib/array/base/bifurcate-indices":"1n4","@stdlib/array-base-bifurcate-indices":"1n5","@stdlib/array/base/bifurcate-values":"1n6","@stdlib/array-base-bifurcate-values":"1n7","@stdlib/array/base/dedupe":"1n8","@stdlib/array-base-dedupe":"1n9","@stdlib/array/base/flipud3d":"1nA","@stdlib/array-base-flipud3d":"1nB","@stdlib/array/base/flipud4d":"1nC","@stdlib/array-base-flipud4d":"1nD","@stdlib/array/base/flipud5d":"1nE","@stdlib/array-base-flipud5d":"1nF","@stdlib/array/base/group-entries":"1nG","@stdlib/array-base-group-entries":"1nH","@stdlib/array/base/group-indices":"1nI","@stdlib/array-base-group-indices":"1nJ","@stdlib/array/base/group-values":"1nK","@stdlib/array-base-group-values":"1nL","@stdlib/array/base/quinary3d":"1nM","@stdlib/array-base-quinary3d":"1nN","@stdlib/array/base/quinary4d":"1nO","@stdlib/array-base-quinary4d":"1nP","@stdlib/array/base/quinary5d":"1nQ","@stdlib/array-base-quinary5d":"1nR","@stdlib/array/base/to-deduped":"1nS","@stdlib/array-base-to-deduped":"1nT","@stdlib/ndarray/base/broadcast-arrays":"1nU","@stdlib/ndarray-base-broadcast-arrays":"1nV","@stdlib/ndarray/base/flags":"1nW","@stdlib/ndarray-base-flags":"1nX","@stdlib/ndarray/base/maybe-broadcast-arrays":"1nY","@stdlib/ndarray-base-maybe-broadcast-arrays":"1nZ","@stdlib/ndarray/broadcast-arrays":"1na","@stdlib/ndarray-broadcast-arrays":"1nb","@stdlib/ndarray/maybe-broadcast-arrays":"1nc","@stdlib/ndarray-maybe-broadcast-arrays":"1nd","@stdlib/array/base/bifurcate-entries-by":"1ne","@stdlib/array-base-bifurcate-entries-by":"1nf","@stdlib/array/base/bifurcate-indices-by":"1ng","@stdlib/array-base-bifurcate-indices-by":"1nh","@stdlib/array/base/bifurcate-values-by":"1ni","@stdlib/array-base-bifurcate-values-by":"1nj","@stdlib/array/base/group-entries-by":"1nk","@stdlib/array-base-group-entries-by":"1nl","@stdlib/array/base/group-indices-by":"1nm","@stdlib/array-base-group-indices-by":"1nn","@stdlib/array/base/group-values-by":"1no","@stdlib/array-base-group-values-by":"1np","@stdlib/array/defaults":"1nq","@stdlib/array-defaults":"1nr","@stdlib/ndarray/base/flag":"1ns","@stdlib/ndarray-base-flag":"1nt","@stdlib/ndarray/base/numel-dimension":"1nu","@stdlib/ndarray-base-numel-dimension":"1nv","@stdlib/ndarray/flag":"1nw","@stdlib/ndarray-flag":"1nx","@stdlib/ndarray/flags":"1ny","@stdlib/ndarray-flags":"1nz","@stdlib/ndarray/numel-dimension":"1o0","@stdlib/ndarray-numel-dimension":"1o1","@stdlib/random/array/bernoulli":"1o2","@stdlib/random-array-bernoulli":"1o3","@stdlib/random/array/chi":"1o4","@stdlib/random-array-chi":"1o5","@stdlib/random/array/chisquare":"1o6","@stdlib/random-array-chisquare":"1o7","@stdlib/random/array/poisson":"1o8","@stdlib/random-array-poisson":"1o9","@stdlib/random/array/rayleigh":"1oA","@stdlib/random-array-rayleigh":"1oB","@stdlib/random/array/t":"1oC","@stdlib/random-array-t":"1oD","@stdlib/random/array/tools/nullary":"1oE","@stdlib/random-array-tools-nullary":"1oF","@stdlib/random/array/tools/unary-factory":"1oG","@stdlib/random-array-tools-unary-factory":"1oH","@stdlib/random/array/tools/unary":"1oI","@stdlib/random-array-tools-unary":"1oJ","@stdlib/array/base/any-by-right":"1oK","@stdlib/array-base-any-by-right":"1oL","@stdlib/array/base/any-by":"1oM","@stdlib/array-base-any-by":"1oN","@stdlib/array/base/any":"1oO","@stdlib/array-base-any":"1oP","@stdlib/array/base/assert/has-same-values":"1oQ","@stdlib/array-base-assert-has-same-values":"1oR","@stdlib/array/base/assert/is-complex128array":"1oS","@stdlib/array-base-assert-is-complex128array":"1oT","@stdlib/array/base/assert/is-complex64array":"1oU","@stdlib/array-base-assert-is-complex64array":"1oV","@stdlib/array/base/at":"1oW","@stdlib/array-base-at":"1oX","@stdlib/array/base/at2d":"1oY","@stdlib/array-base-at2d":"1oZ","@stdlib/array/base/at3d":"1oa","@stdlib/array-base-at3d":"1ob","@stdlib/array/base/at4d":"1oc","@stdlib/array-base-at4d":"1od","@stdlib/array/base/at5d":"1oe","@stdlib/array-base-at5d":"1of","@stdlib/array/base/atnd":"1og","@stdlib/array-base-atnd":"1oh","@stdlib/array/base/every-by-right":"1oi","@stdlib/array-base-every-by-right":"1oj","@stdlib/array/base/every-by":"1ok","@stdlib/array-base-every-by":"1ol","@stdlib/array/base/every":"1om","@stdlib/array-base-every":"1on","@stdlib/array/base/filter":"1oo","@stdlib/array-base-filter":"1op","@stdlib/array/base/mskfilter":"1oq","@stdlib/array-base-mskfilter":"1or","@stdlib/array/base/none-by-right":"1os","@stdlib/array-base-none-by-right":"1ot","@stdlib/array/base/none-by":"1ou","@stdlib/array-base-none-by":"1ov","@stdlib/array/base/none":"1ow","@stdlib/array-base-none":"1ox","@stdlib/array/base/resolve-setter":"1oy","@stdlib/array-base-resolve-setter":"1oz","@stdlib/array/base/reverse":"1p0","@stdlib/array-base-reverse":"1p1","@stdlib/array/base/to-reversed":"1p2","@stdlib/array-base-to-reversed":"1p3","@stdlib/array/cartesian-power":"1p4","@stdlib/array-cartesian-power":"1p5","@stdlib/array/cartesian-product":"1p6","@stdlib/array-cartesian-product":"1p7","@stdlib/array/cartesian-square":"1p8","@stdlib/array-cartesian-square":"1p9","@stdlib/array/one-to-like":"1pA","@stdlib/array-one-to-like":"1pB","@stdlib/array/one-to":"1pC","@stdlib/array-one-to":"1pD","@stdlib/array/slice":"1pE","@stdlib/array-slice":"1pF","@stdlib/array/zero-to-like":"1pG","@stdlib/array-zero-to-like":"1pH","@stdlib/array/zero-to":"1pI","@stdlib/array-zero-to":"1pJ","@stdlib/assert/is-same-array":"1pK","@stdlib/assert-is-same-array":"1pL","@stdlib/assert/is-same-complex128":"1pM","@stdlib/assert-is-same-complex128":"1pN","@stdlib/assert/is-same-complex128array":"1pO","@stdlib/assert-is-same-complex128array":"1pP","@stdlib/assert/is-same-complex64":"1pQ","@stdlib/assert-is-same-complex64":"1pR","@stdlib/assert/is-same-complex64array":"1pS","@stdlib/assert-is-same-complex64array":"1pT","@stdlib/assert/is-same-float32array":"1pU","@stdlib/assert-is-same-float32array":"1pV","@stdlib/assert/is-same-float64array":"1pW","@stdlib/assert-is-same-float64array":"1pX","@stdlib/complex/float64/base/assert/is-equal":"1pY","@stdlib/complex-base-assert-is-equal":"1pZ","@stdlib/complex/base/assert/is-equalf":"1pa","@stdlib/complex-base-assert-is-equalf":"1pb","@stdlib/complex/base/assert/is-not-equal":"1pc","@stdlib/complex-base-assert-is-not-equal":"1pd","@stdlib/complex/base/assert/is-not-equalf":"1pe","@stdlib/complex-base-assert-is-not-equalf":"1pf","@stdlib/complex/base/assert/is-same-value-zero":"1pg","@stdlib/complex-base-assert-is-same-value-zero":"1ph","@stdlib/complex/base/assert/is-same-value-zerof":"1pi","@stdlib/complex-base-assert-is-same-value-zerof":"1pj","@stdlib/complex/base/assert/is-same-value":"1pk","@stdlib/complex-base-assert-is-same-value":"1pl","@stdlib/complex/base/assert/is-same-valuef":"1pm","@stdlib/complex-base-assert-is-same-valuef":"1pn","@stdlib/complex/base/assert":"1po","@stdlib/complex-base-assert":"1pp","@stdlib/constants/complex128/nan":"1pq","@stdlib/constants-complex128-nan":"1pr","@stdlib/constants/complex128/zero":"1ps","@stdlib/constants-complex128-zero":"1pt","@stdlib/constants/complex64/nan":"1pu","@stdlib/constants-complex64-nan":"1pv","@stdlib/constants/complex64/zero":"1pw","@stdlib/constants-complex64-zero":"1px","@stdlib/constants/float32/nan":"1py","@stdlib/constants-float32-nan":"1pz","@stdlib/constants/float64/nan":"1q0","@stdlib/constants-float64-nan":"1q1","@stdlib/ndarray/at":"1q2","@stdlib/ndarray-at":"1q3","@stdlib/number/float32/base/assert/is-same-value-zero":"1q4","@stdlib/number-float32-base-assert-is-same-value-zero":"1q5","@stdlib/number/float32/base/assert/is-same-value":"1q6","@stdlib/number-float32-base-assert-is-same-value":"1q7","@stdlib/number/float32/base/assert":"1q8","@stdlib/number-float32-base-assert":"1q9","@stdlib/number/float64/base/assert/is-same-value-zero":"1qA","@stdlib/number-float64-base-assert-is-same-value-zero":"1qB","@stdlib/number/float64/base/assert/is-same-value":"1qC","@stdlib/number-float64-base-assert-is-same-value":"1qD","@stdlib/number/float64/base/assert":"1qE","@stdlib/number-float64-base-assert":"1qF","@stdlib/random/array/binomial":"1qG","@stdlib/random-array-binomial":"1qH","@stdlib/random/array/cauchy":"1qI","@stdlib/random-array-cauchy":"1qJ","@stdlib/random/array/erlang":"1qK","@stdlib/random-array-erlang":"1qL","@stdlib/random/array/f":"1qM","@stdlib/random-array-f":"1qN","@stdlib/random/array/frechet":"1qO","@stdlib/random-array-frechet":"1qP","@stdlib/random/array/gumbel":"1qQ","@stdlib/random-array-gumbel":"1qR","@stdlib/random/array/hypergeometric":"1qS","@stdlib/random-array-hypergeometric":"1qT","@stdlib/random/array/kumaraswamy":"1qU","@stdlib/random-array-kumaraswamy":"1qV","@stdlib/random/array/laplace":"1qW","@stdlib/random-array-laplace":"1qX","@stdlib/random/array/levy":"1qY","@stdlib/random-array-levy":"1qZ","@stdlib/random/array/logistic":"1qa","@stdlib/random-array-logistic":"1qb","@stdlib/random/array/negative-binomial":"1qc","@stdlib/random-array-negative-binomial":"1qd","@stdlib/random/array/pareto-type1":"1qe","@stdlib/random-array-pareto-type1":"1qf","@stdlib/random/array/tools/binary-factory":"1qg","@stdlib/random-array-tools-binary-factory":"1qh","@stdlib/random/array/tools/binary":"1qi","@stdlib/random-array-tools-binary":"1qj","@stdlib/random/array/tools/ternary-factory":"1qk","@stdlib/random-array-tools-ternary-factory":"1ql","@stdlib/random/array/tools/ternary":"1qm","@stdlib/random-array-tools-ternary":"1qn","@stdlib/random/array/triangular":"1qo","@stdlib/random-array-triangular":"1qp","@stdlib/random/array/weibull":"1qq","@stdlib/random-array-weibull":"1qr","@stdlib/array/base/assert/is-complex-floating-point-data-type":"1qs","@stdlib/array-base-assert-is-complex-floating-point-data-type":"1qt","@stdlib/array/base/assert/is-data-type":"1qu","@stdlib/array-base-assert-is-data-type":"1qv","@stdlib/array/base/assert/is-floating-point-data-type":"1qw","@stdlib/array-base-assert-is-floating-point-data-type":"1qx","@stdlib/array/base/assert/is-integer-data-type":"1qy","@stdlib/array-base-assert-is-integer-data-type":"1qz","@stdlib/array/base/assert/is-mostly-safe-data-type-cast":"1r0","@stdlib/array-base-assert-is-mostly-safe-data-type-cast":"1r1","@stdlib/array/base/assert/is-numeric-data-type":"1r2","@stdlib/array-base-assert-is-numeric-data-type":"1r3","@stdlib/array/base/assert/is-real-data-type":"1r4","@stdlib/array-base-assert-is-real-data-type":"1r5","@stdlib/array/base/assert/is-real-floating-point-data-type":"1r6","@stdlib/array-base-assert-is-real-floating-point-data-type":"1r7","@stdlib/array/base/assert/is-safe-data-type-cast":"1r8","@stdlib/array-base-assert-is-safe-data-type-cast":"1r9","@stdlib/array/base/assert/is-same-kind-data-type-cast":"1rA","@stdlib/array-base-assert-is-same-kind-data-type-cast":"1rB","@stdlib/array/base/assert/is-signed-integer-data-type":"1rC","@stdlib/array-base-assert-is-signed-integer-data-type":"1rD","@stdlib/array/base/assert/is-unsigned-integer-data-type":"1rE","@stdlib/array-base-assert-is-unsigned-integer-data-type":"1rF","@stdlib/array/base/fancy-slice-assign":"1rG","@stdlib/array-base-fancy-slice-assign":"1rH","@stdlib/array/base/fancy-slice":"1rI","@stdlib/array-base-fancy-slice":"1rJ","@stdlib/array/base/min-signed-integer-dtype":"1rK","@stdlib/array-base-min-signed-integer-dtype":"1rL","@stdlib/array/base/min-unsigned-integer-dtype":"1rM","@stdlib/array-base-min-unsigned-integer-dtype":"1rN","@stdlib/array/base/mskreject":"1rO","@stdlib/array-base-mskreject":"1rP","@stdlib/array/base/reject":"1rQ","@stdlib/array-base-reject":"1rR","@stdlib/array/from-scalar":"1rS","@stdlib/array-from-scalar":"1rT","@stdlib/array/mostly-safe-casts":"1rU","@stdlib/array-mostly-safe-casts":"1rV","@stdlib/array/to-fancy":"1rW","@stdlib/array-to-fancy":"1rX","@stdlib/random/array/tools":"1rY","@stdlib/random-array-tools":"1rZ","@stdlib/random/strided/bernoulli":"1ra","@stdlib/random-strided-bernoulli":"1rb","@stdlib/random/strided/chi":"1rc","@stdlib/random-strided-chi":"1rd","@stdlib/random/strided/chisquare":"1re","@stdlib/random-strided-chisquare":"1rf","@stdlib/random/strided/geometric":"1rg","@stdlib/random-strided-geometric":"1rh","@stdlib/random/strided/poisson":"1ri","@stdlib/random-strided-poisson":"1rj","@stdlib/random/strided/rayleigh":"1rk","@stdlib/random-strided-rayleigh":"1rl","@stdlib/random/strided/t":"1rm","@stdlib/random-strided-t":"1rn","@stdlib/random/strided/tools/binary-factory":"1ro","@stdlib/random-strided-tools-binary-factory":"1rp","@stdlib/random/strided/tools":"1rq","@stdlib/random-strided-tools":"1rr","@stdlib/random/strided/tools/ternary-factory":"1rs","@stdlib/random-strided-tools-ternary-factory":"1rt","@stdlib/random/strided/tools/unary-factory":"1ru","@stdlib/random-strided-tools-unary-factory":"1rv","@stdlib/slice/base/int2slice":"1rw","@stdlib/slice-base-int2slice":"1rx","@stdlib/array/index":"1ry","@stdlib/array-index":"1rz","@stdlib/array/take":"1s0","@stdlib/array-take":"1s1","@stdlib/strided/base/reinterpret-complex":"1s2","@stdlib/strided-base-reinterpret-complex":"1s3","@stdlib/array/base/assert/is-complex-typed-array":"1s4","@stdlib/array-base-assert-is-complex-typed-array":"1s5","@stdlib/array/base/count-falsy":"1s6","@stdlib/array-base-count-falsy":"1s7","@stdlib/array/base/count-same-value":"1s8","@stdlib/array-base-count-same-value":"1s9","@stdlib/array/base/count-truthy":"1sA","@stdlib/array-base-count-truthy":"1sB","@stdlib/array/mskfilter":"1sC","@stdlib/array-mskfilter":"1sD","@stdlib/array/mskreject":"1sE","@stdlib/array-mskreject":"1sF","@stdlib/assert/is-negative-finite":"1sG","@stdlib/assert-is-negative-finite":"1sH","@stdlib/assert/is-nonnegative-finite":"1sI","@stdlib/assert-is-nonnegative-finite":"1sJ","@stdlib/assert/is-positive-finite":"1sK","@stdlib/assert-is-positive-finite":"1sL","@stdlib/random/base/shared":"1sM","@stdlib/random-base-shared":"1sN","@stdlib/array/base/count-if":"1sO","@stdlib/array-base-count-if":"1sP","@stdlib/array/base/count-same-value-zero":"1sQ","@stdlib/array-base-count-same-value-zero":"1sR","@stdlib/array/base/with":"1sS","@stdlib/array-base-with":"1sT","@stdlib/assert/is-nonpositive-finite":"1sU","@stdlib/assert-is-nonpositive-finite":"1sV","@stdlib/assert/is-ragged-nested-array":"1sW","@stdlib/assert-is-ragged-nested-array":"1sX","@stdlib/assert/is-well-formed-string":"1sY","@stdlib/assert-is-well-formed-string":"1sZ","@stdlib/complex/base/parse":"1sa","@stdlib/complex-base-parse":"1sb","@stdlib/complex/float32/parse":"1sc","@stdlib/complex-parse-float32":"1sd","@stdlib/complex/float64/parse":"1se","@stdlib/complex-parse-float64":"1sf","@stdlib/iter/until-each":"1sg","@stdlib/iter-until-each":"1sh","@stdlib/math/base/special/csc":"1si","@stdlib/math-base-special-csc":"1sj","@stdlib/math/iter/sequences/tribonacci":"1sk","@stdlib/math-iter-sequences-tribonacci":"1sl","@stdlib/string/base/for-each-right":"1sm","@stdlib/string-base-for-each-right":"1sn","@stdlib/string/base/replace-after-last":"1so","@stdlib/string-base-replace-after-last":"1sp","@stdlib/string/base/replace-after":"1sq","@stdlib/string-base-replace-after":"1sr","@stdlib/string/base/replace-before-last":"1ss","@stdlib/string-base-replace-before-last":"1st","@stdlib/utils/every-in-by":"1su","@stdlib/utils-every-in-by":"1sv","@stdlib/utils/none-own-by":"1sw","@stdlib/utils-none-own-by":"1sx","@stdlib/utils/some-in-by":"1sy","@stdlib/utils-some-in-by":"1sz","@stdlib/array/base/join":"1t0","@stdlib/array-base-join":"1t1","@stdlib/array/base/take-map":"1t2","@stdlib/array-base-take-map":"1t3","@stdlib/assert/is-same-date-object":"1t4","@stdlib/assert-is-same-date-object":"1t5","@stdlib/blas/base/zcopy":"1t6","@stdlib/blas-base-zcopy":"1t7","@stdlib/blas/base/zswap":"1t8","@stdlib/blas-base-zswap":"1t9","@stdlib/constants/float32/fourth-pi":"1tA","@stdlib/constants-float32-fourth-pi":"1tB","@stdlib/constants/float32/half-pi":"1tC","@stdlib/constants-float32-half-pi":"1tD","@stdlib/constants/float32/pi":"1tE","@stdlib/constants-float32-pi":"1tF","@stdlib/constants/float32/two-pi":"1tG","@stdlib/constants-float32-two-pi":"1tH","@stdlib/iter/do-until-each":"1tI","@stdlib/iter-do-until-each":"1tJ","@stdlib/iter/do-while-each":"1tK","@stdlib/iter-do-while-each":"1tL","@stdlib/math/base/special/acosd":"1tM","@stdlib/math-base-special-acosd":"1tN","@stdlib/math/base/special/acosf":"1tO","@stdlib/math-base-special-acosf":"1tP","@stdlib/math/base/special/acotd":"1tQ","@stdlib/math-base-special-acotd":"1tR","@stdlib/math/base/special/acotf":"1tS","@stdlib/math-base-special-acotf":"1tT","@stdlib/math/base/special/acscd":"1tU","@stdlib/math-base-special-acscd":"1tV","@stdlib/math/base/special/acscf":"1tW","@stdlib/math-base-special-acscf":"1tX","@stdlib/math/base/special/asecd":"1tY","@stdlib/math-base-special-asecd":"1tZ","@stdlib/math/base/special/asecf":"1ta","@stdlib/math-base-special-asecf":"1tb","@stdlib/math/base/special/asind":"1tc","@stdlib/math-base-special-asind":"1td","@stdlib/math/base/special/asinf":"1te","@stdlib/math-base-special-asinf":"1tf","@stdlib/math/base/special/atand":"1tg","@stdlib/math-base-special-atand":"1th","@stdlib/math/base/special/atanf":"1ti","@stdlib/math-base-special-atanf":"1tj","@stdlib/math/base/special/cosd":"1tk","@stdlib/math-base-special-cosd":"1tl","@stdlib/math/base/special/cotd":"1tm","@stdlib/math-base-special-cotd":"1tn","@stdlib/math/base/special/cscd":"1to","@stdlib/math-base-special-cscd":"1tp","@stdlib/math/base/special/rad2degf":"1tq","@stdlib/math-base-special-rad2degf":"1tr","@stdlib/math/base/special/secd":"1ts","@stdlib/math-base-special-secd":"1tt","@stdlib/math/base/special/tand":"1tu","@stdlib/math-base-special-tand":"1tv","@stdlib/math/base/tools/evalpolyf":"1tw","@stdlib/math-base-tools-evalpolyf":"1tx","@stdlib/math/base/tools/evalrationalf":"1ty","@stdlib/math-base-tools-evalrationalf":"1tz","@stdlib/string/base/last-code-point":"1u0","@stdlib/string-base-last-code-point":"1u1","@stdlib/string/base/last-grapheme-cluster":"1u2","@stdlib/string-base-last-grapheme-cluster":"1u3","@stdlib/string/base/last":"1u4","@stdlib/string-base-last":"1u5","@stdlib/string/base/stickycase":"1u6","@stdlib/string-base-stickycase":"1u7","@stdlib/string/to-well-formed":"1u8","@stdlib/string-to-well-formed":"1u9","@stdlib/utils/any-in-by":"1uA","@stdlib/utils-any-in-by":"1uB","@stdlib/utils/any-own-by":"1uC","@stdlib/utils-any-own-by":"1uD","@stdlib/utils/every-own-by":"1uE","@stdlib/utils-every-own-by":"1uF","@stdlib/utils/none-in-by":"1uG","@stdlib/utils-none-in-by":"1uH","@stdlib/utils/parse-ndjson":"1uI","@stdlib/utils-parse-ndjson":"1uJ","@stdlib/utils/some-own-by":"1uK","@stdlib/utils-some-own-by":"1uL","@stdlib/array/base/mskfilter-map":"1uM","@stdlib/array-base-mskfilter-map":"1uN","@stdlib/array/base/mskreject-map":"1uO","@stdlib/array-base-mskreject-map":"1uP","@stdlib/array/bool":"1uQ","@stdlib/array-bool":"1uR","@stdlib/assert/napi/has-property":"1uS","@stdlib/assert-napi-has-property":"1uT","@stdlib/blas/base/dger":"1uU","@stdlib/blas-base-dger":"1uV","@stdlib/blas/base/drot":"1uW","@stdlib/blas-base-drot":"1uX","@stdlib/blas/base/idamax":"1uY","@stdlib/blas-base-idamax":"1uZ","@stdlib/blas/base/isamax":"1ua","@stdlib/blas-base-isamax":"1ub","@stdlib/blas/base/shared":"1uc","@stdlib/blas-base-shared":"1ud","@stdlib/blas/base/srot":"1ue","@stdlib/blas-base-srot":"1uf","@stdlib/blas/base/xerbla":"1ug","@stdlib/blas-base-xerbla":"1uh","@stdlib/complex/float32/base/assert/is-equal":"1ui","@stdlib/complex-float32-base-assert-is-equal":"1uj","@stdlib/complex/float32/base/assert/is-not-equal":"1uk","@stdlib/complex-float32-base-assert-is-not-equal":"1ul","@stdlib/complex/float32/base/assert/is-same-value-zero":"1um","@stdlib/complex-float32-base-assert-is-same-value-zero":"1un","@stdlib/complex/float32/base/assert/is-same-value":"1uo","@stdlib/complex-float32-base-assert-is-same-value":"1up","@stdlib/complex/float32":"1uq","@stdlib/complex/float64/base/assert/is-not-equal":"1us","@stdlib/complex-float64-base-assert-is-not-equal":"1ut","@stdlib/complex/float64/base/assert/is-same-value-zero":"1uu","@stdlib/complex-float64-base-assert-is-same-value-zero":"1uv","@stdlib/complex/float64/base/assert/is-same-value":"1uw","@stdlib/complex-float64-base-assert-is-same-value":"1ux","@stdlib/complex/float64":"1uy","@stdlib/constants/float32/phi":"1v0","@stdlib/constants-float32-phi":"1v1","@stdlib/fs/append-file":"1v2","@stdlib/fs-append-file":"1v3","@stdlib/math/base/special/acscdf":"1v4","@stdlib/math-base-special-acscdf":"1v5","@stdlib/math/base/special/asecdf":"1v6","@stdlib/math-base-special-asecdf":"1v7","@stdlib/math/base/special/asindf":"1v8","@stdlib/math-base-special-asindf":"1v9","@stdlib/math/base/special/kernel-log1p":"1vA","@stdlib/math-base-special-kernel-log1p":"1vB","@stdlib/math/base/special/rcbrtf":"1vC","@stdlib/math-base-special-rcbrtf":"1vD","@stdlib/math/base/tools/normhermitepolyf":"1vE","@stdlib/math-base-tools-normhermitepolyf":"1vF","@stdlib/napi/argv-complex128":"1vG","@stdlib/napi-argv-complex128":"1vH","@stdlib/napi/argv-complex64":"1vI","@stdlib/napi-argv-complex64":"1vJ","@stdlib/napi/create-complex-like":"1vK","@stdlib/napi-create-complex-like":"1vL","@stdlib/napi/create-double":"1vM","@stdlib/napi-create-double":"1vN","@stdlib/napi/create-int32":"1vO","@stdlib/napi-create-int32":"1vP","@stdlib/napi/create-uint32":"1vQ","@stdlib/napi-create-uint32":"1vR","@stdlib/string/base/for-each-code-point-right":"1vS","@stdlib/string-base-for-each-code-point-right":"1vT","@stdlib/string/last":"1vU","@stdlib/string-last":"1vV","@stdlib/assert/is-booleanarray":"1vW","@stdlib/assert-is-booleanarray":"1vX","@stdlib/blas/base/assert/is-layout":"1vY","@stdlib/blas-base-assert-is-layout":"1vZ","@stdlib/blas/base/assert/is-matrix-triangle":"1va","@stdlib/blas-base-assert-is-matrix-triangle":"1vb","@stdlib/blas/base/assert/is-transpose-operation":"1vc","@stdlib/blas-base-assert-is-transpose-operation":"1vd","@stdlib/blas/base/assert":"1ve","@stdlib/blas-base-assert":"1vf","@stdlib/blas/base/cscal":"1vg","@stdlib/blas-base-cscal":"1vh","@stdlib/blas/base/dcabs1":"1vi","@stdlib/blas-base-dcabs1":"1vj","@stdlib/blas/base/diagonal-types":"1vk","@stdlib/blas-base-diagonal-types":"1vl","@stdlib/blas/base/layout-enum2str":"1vm","@stdlib/blas-base-layout-enum2str":"1vn","@stdlib/blas/base/layout-resolve-enum":"1vo","@stdlib/blas-base-layout-resolve-enum":"1vp","@stdlib/blas/base/layout-resolve-str":"1vq","@stdlib/blas-base-layout-resolve-str":"1vr","@stdlib/blas/base/layout-str2enum":"1vs","@stdlib/blas-base-layout-str2enum":"1vt","@stdlib/blas/base/layouts":"1vu","@stdlib/blas-base-layouts":"1vv","@stdlib/blas/base/matrix-triangles":"1vw","@stdlib/blas-base-matrix-triangles":"1vx","@stdlib/blas/base/operation-sides":"1vy","@stdlib/blas-base-operation-sides":"1vz","@stdlib/blas/base/scabs1":"1w0","@stdlib/blas-base-scabs1":"1w1","@stdlib/blas/base/transpose-operations":"1w2","@stdlib/blas-base-transpose-operations":"1w3","@stdlib/strided/base/reinterpret-boolean":"1w4","@stdlib/strided-base-reinterpret-boolean":"1w5","@stdlib/array/base/assert/is-boolean-data-type":"1w6","@stdlib/array-base-assert-is-boolean-data-type":"1w7","@stdlib/array/base/assert/is-booleanarray":"1w8","@stdlib/array-base-assert-is-booleanarray":"1w9","@stdlib/array/base/cuany":"1wA","@stdlib/array-base-cuany":"1wB","@stdlib/array/base/cuevery":"1wC","@stdlib/array-base-cuevery":"1wD","@stdlib/array/base/mskput":"1wE","@stdlib/array-base-mskput":"1wF","@stdlib/array/base/place":"1wG","@stdlib/array-base-place":"1wH","@stdlib/array/base/put":"1wI","@stdlib/array-base-put":"1wJ","@stdlib/array/base/where":"1wK","@stdlib/array-base-where":"1wL","@stdlib/array/mskput":"1wM","@stdlib/array-mskput":"1wN","@stdlib/array/place":"1wO","@stdlib/array-place":"1wP","@stdlib/array/put":"1wQ","@stdlib/array-put":"1wR","@stdlib/assert/is-same-booleanarray":"1wS","@stdlib/assert-is-same-booleanarray":"1wT","@stdlib/blas/base/assert/is-diagonal-type":"1wU","@stdlib/blas-base-assert-is-diagonal-type":"1wV","@stdlib/blas/base/assert/is-operation-side":"1wW","@stdlib/blas-base-assert-is-operation-side":"1wX","@stdlib/blas/base/scnrm2":"1wY","@stdlib/blas-base-scnrm2":"1wZ","@stdlib/blas/base/srotm":"1wa","@stdlib/blas-base-srotm":"1wb","@stdlib/blas/base/sspmv":"1wc","@stdlib/blas-base-sspmv":"1wd","@stdlib/blas/base/ssymv":"1we","@stdlib/blas-base-ssymv":"1wf","@stdlib/blas/base/transpose-operation-enum2str":"1wg","@stdlib/blas-base-transpose-operation-enum2str":"1wh","@stdlib/blas/base/transpose-operation-resolve-enum":"1wi","@stdlib/blas-base-transpose-operation-resolve-enum":"1wj","@stdlib/blas/base/transpose-operation-resolve-str":"1wk","@stdlib/blas-base-transpose-operation-resolve-str":"1wl","@stdlib/blas/base/transpose-operation-str2enum":"1wm","@stdlib/blas-base-transpose-operation-str2enum":"1wn","@stdlib/blas/base/zscal":"1wo","@stdlib/blas-base-zscal":"1wp","@stdlib/math/base/special/lnf":"1wq","@stdlib/math-base-special-lnf":"1wr","@stdlib/math/base/special/nanmax":"1ws","@stdlib/math-base-special-nanmax":"1wt","@stdlib/math/base/special/nanmin":"1wu","@stdlib/math-base-special-nanmin":"1wv","@stdlib/array/base/cunone":"1ww","@stdlib/array-base-cunone":"1wx","@stdlib/blas/base/diagonal-type-enum2str":"1wy","@stdlib/blas-base-diagonal-type-enum2str":"1wz","@stdlib/blas/base/diagonal-type-resolve-enum":"1x0","@stdlib/blas-base-diagonal-type-resolve-enum":"1x1","@stdlib/blas/base/diagonal-type-resolve-str":"1x2","@stdlib/blas-base-diagonal-type-resolve-str":"1x3","@stdlib/blas/base/diagonal-type-str2enum":"1x4","@stdlib/blas-base-diagonal-type-str2enum":"1x5","@stdlib/blas/base/drotm":"1x6","@stdlib/blas-base-drotm":"1x7","@stdlib/blas/base/dspmv":"1x8","@stdlib/blas-base-dspmv":"1x9","@stdlib/blas/base/dsymv":"1xA","@stdlib/blas-base-dsymv":"1xB","@stdlib/blas/base/matrix-triangle-enum2str":"1xC","@stdlib/blas-base-matrix-triangle-enum2str":"1xD","@stdlib/blas/base/matrix-triangle-resolve-enum":"1xE","@stdlib/blas-base-matrix-triangle-resolve-enum":"1xF","@stdlib/blas/base/matrix-triangle-resolve-str":"1xG","@stdlib/blas-base-matrix-triangle-resolve-str":"1xH","@stdlib/blas/base/matrix-triangle-str2enum":"1xI","@stdlib/blas-base-matrix-triangle-str2enum":"1xJ","@stdlib/blas/base/operation-side-enum2str":"1xK","@stdlib/blas-base-operation-side-enum2str":"1xL","@stdlib/blas/base/operation-side-resolve-enum":"1xM","@stdlib/blas-base-operation-side-resolve-enum":"1xN","@stdlib/blas/base/operation-side-resolve-str":"1xO","@stdlib/blas-base-operation-side-resolve-str":"1xP","@stdlib/blas/base/operation-side-str2enum":"1xQ","@stdlib/blas-base-operation-side-str2enum":"1xR","@stdlib/iter/cuany":"1xS","@stdlib/iter-cuany":"1xT","@stdlib/strided/base/stride2offset":"1xU","@stdlib/strided-base-stride2offset":"1xV","@stdlib/utils/async/parallel":"1xW","@stdlib/utils-async-parallel":"1xX","@stdlib/blas/base/csrot":"1xY","@stdlib/blas-base-csrot":"1xZ","@stdlib/blas/base/dznrm2":"1xa","@stdlib/blas-base-dznrm2":"1xb","@stdlib/blas/base/zaxpy":"1xc","@stdlib/blas-base-zaxpy":"1xd","@stdlib/blas/base/zdrot":"1xe","@stdlib/blas-base-zdrot":"1xf","@stdlib/lapack/base/dlaswp":"1xg","@stdlib/lapack-base-dlaswp":"1xh","@stdlib/lapack/base":"1xi","@stdlib/lapack-base":"1xj","@stdlib/lapack":"1xl","@stdlib/ndarray/base/assert/is-boolean-data-type":"1xm","@stdlib/ndarray-base-assert-is-boolean-data-type":"1xn","@stdlib/blas/base/caxpy":"1xo","@stdlib/blas-base-caxpy":"1xp","@stdlib/blas/base/scasum":"1xq","@stdlib/blas-base-scasum":"1xr","@stdlib/complex/float32/base/add":"1xs","@stdlib/complex-float32-base-add":"1xt","@stdlib/complex/float32/base/assert":"1xu","@stdlib/complex-float32-base-assert":"1xv","@stdlib/complex/float32/base/mul":"1xw","@stdlib/complex-float32-base-mul":"1xx","@stdlib/complex/float32/base":"1xy","@stdlib/complex-float32-base":"1xz","@stdlib/complex/float32/conj":"1y0","@stdlib/complex-float32-conj":"1y1","@stdlib/complex/float32/imag":"1y2","@stdlib/complex-float32-imag":"1y3","@stdlib/complex/float32/real":"1y4","@stdlib/complex-float32-real":"1y5","@stdlib/complex/float32/reim":"1y6","@stdlib/complex-float32-reim":"1y7","@stdlib/complex/float64/base/add":"1y8","@stdlib/complex-float64-base-add":"1y9","@stdlib/complex/float64/base/assert":"1yA","@stdlib/complex-float64-base-assert":"1yB","@stdlib/complex/float64/base/mul":"1yC","@stdlib/complex-float64-base-mul":"1yD","@stdlib/complex/float64/base":"1yE","@stdlib/complex-float64-base":"1yF","@stdlib/complex/float64/conj":"1yG","@stdlib/complex-float64-conj":"1yH","@stdlib/complex/float64/imag":"1yI","@stdlib/complex-float64-imag":"1yJ","@stdlib/complex/float64/real":"1yK","@stdlib/complex-float64-real":"1yL","@stdlib/complex/float64/reim":"1yM","@stdlib/complex-float64-reim":"1yN","@stdlib/constants/float64/max-safe-nth-factorial":"1yO","@stdlib/constants-float64-max-safe-nth-factorial":"1yP","@stdlib/math/base/special/fmod":"1yQ","@stdlib/math-base-special-fmod":"1yR","@stdlib/fs/resolve-parent-paths":"1yS","@stdlib/fs-resolve-parent-paths":"1yT","@stdlib/iter/cusome":"1yU","@stdlib/iter-cusome":"1yV","@stdlib/ndarray/base/for-each":"1yW","@stdlib/ndarray-base-for-each":"1yX","@stdlib/blas/base/dgemv":"1yY","@stdlib/blas-base-dgemv":"1yZ","@stdlib/blas/base/dsyr":"1ya","@stdlib/blas-base-dsyr":"1yb","@stdlib/blas/base/dsyr2":"1yc","@stdlib/blas-base-dsyr2":"1yd","@stdlib/blas/base/dtrmv":"1ye","@stdlib/blas-base-dtrmv":"1yf","@stdlib/blas/base/sgemv":"1yg","@stdlib/blas-base-sgemv":"1yh","@stdlib/blas/base/ssyr":"1yi","@stdlib/blas-base-ssyr":"1yj","@stdlib/blas/base/ssyr2":"1yk","@stdlib/blas-base-ssyr2":"1yl","@stdlib/blas/base/strmv":"1ym","@stdlib/blas-base-strmv":"1yn","@stdlib/lapack/base/dlacpy":"1yo","@stdlib/lapack-base-dlacpy":"1yp","@stdlib/lapack/base/dlassq":"1yq","@stdlib/lapack-base-dlassq":"1yr","@stdlib/lapack/base/dpttrf":"1ys","@stdlib/lapack-base-dpttrf":"1yt","@stdlib/lapack/base/slacpy":"1yu","@stdlib/lapack-base-slacpy":"1yv","@stdlib/lapack/base/spttrf":"1yw","@stdlib/lapack-base-spttrf":"1yx","@stdlib/array/base/remove-at":"1yy","@stdlib/array-base-remove-at":"1yz","@stdlib/array/base/without":"1z0","@stdlib/array-base-without":"1z1","@stdlib/blas/base/dgemm":"1z2","@stdlib/blas-base-dgemm":"1z3","@stdlib/blas/base/dtrsv":"1z4","@stdlib/blas-base-dtrsv":"1z5","@stdlib/blas/base/sgemm":"1z6","@stdlib/blas-base-sgemm":"1z7","@stdlib/blas/base/sspr":"1z8","@stdlib/blas-base-sspr":"1z9","@stdlib/blas/base/strsv":"1zA","@stdlib/blas-base-strsv":"1zB","@stdlib/constants/float32/max-base2-exponent-subnormal":"1zC","@stdlib/constants-float32-max-base2-exponent-subnormal":"1zD","@stdlib/constants/float32/max-base2-exponent":"1zE","@stdlib/constants-float32-max-base2-exponent":"1zF","@stdlib/constants/float32/min-base2-exponent-subnormal":"1zG","@stdlib/constants-float32-min-base2-exponent-subnormal":"1zH","@stdlib/iter/cunone-by":"1zI","@stdlib/iter-cunone-by":"1zJ","@stdlib/lapack/base/dge-trans":"1zK","@stdlib/lapack-base-dge-trans":"1zL","@stdlib/lapack/base/sge-trans":"1zM","@stdlib/lapack-base-sge-trans":"1zN","@stdlib/lapack/base/slaswp":"1zO","@stdlib/lapack-base-slaswp":"1zP","@stdlib/math/base/assert/is-integerf":"1zQ","@stdlib/math-base-assert-is-integerf":"1zR","@stdlib/math/base/special/roundf":"1zS","@stdlib/math-base-special-roundf":"1zT","@stdlib/ndarray/base/map":"1zU","@stdlib/ndarray-base-map":"1zV","@stdlib/ndarray/base/ndarraylike2ndarray":"1zW","@stdlib/ndarray-base-ndarraylike2ndarray":"1zX","@stdlib/ndarray/iter/interleave-subarrays":"1zY","@stdlib/ndarray-iter-interleave-subarrays":"1zZ","@stdlib/ndarray/iter/select-dimension":"1za","@stdlib/ndarray-iter-select-dimension":"1zb","@stdlib/ndarray/iter/stacks":"1zc","@stdlib/ndarray-iter-stacks":"1zd","@stdlib/ndarray/iter/subarrays":"1ze","@stdlib/ndarray-iter-subarrays":"1zf","@stdlib/ndarray/ndarraylike2ndarray":"1zg","@stdlib/ndarray-ndarraylike2ndarray":"1zh","@stdlib/array/base/assert/has-equal-values-indexed":"1zi","@stdlib/array-base-assert-has-equal-values-indexed":"1zj","@stdlib/array/base/assert/has-equal-values":"1zk","@stdlib/array-base-assert-has-equal-values":"1zl","@stdlib/assert/has-atob-support":"1zm","@stdlib/assert-has-atob-support":"1zn","@stdlib/assert/has-btoa-support":"1zo","@stdlib/assert-has-btoa-support":"1zp","@stdlib/assert/is-equal-array":"1zq","@stdlib/assert-is-equal-array":"1zr","@stdlib/assert/is-same-accessor-array":"1zs","@stdlib/assert-is-same-accessor-array":"1zt","@stdlib/assert/is-same-array-like-object":"1zu","@stdlib/assert-is-same-array-like-object":"1zv","@stdlib/assert/is-same-array-like":"1zw","@stdlib/assert-is-same-array-like":"1zx","@stdlib/assert/is-wasm-memory":"1zy","@stdlib/assert-is-wasm-memory":"1zz","@stdlib/blas/base/daxpy-wasm":"200","@stdlib/blas-base-daxpy-wasm":"201","@stdlib/blas/base/dspr":"202","@stdlib/blas-base-dspr":"203","@stdlib/blas/ext/base/cfill":"204","@stdlib/blas-ext-base-cfill":"205","@stdlib/constants/float32/max-safe-nth-factorial":"206","@stdlib/constants-float32-max-safe-nth-factorial":"207","@stdlib/constants/float32/max-safe-nth-fibonacci":"208","@stdlib/constants-float32-max-safe-nth-fibonacci":"209","@stdlib/constants/float64/num-high-word-significand-bits":"20A","@stdlib/constants-float64-num-high-word-significand-bits":"20B","@stdlib/lapack/base/dlamch":"20C","@stdlib/lapack-base-dlamch":"20D","@stdlib/math/base/assert/is-nonnegative-integerf":"20E","@stdlib/math-base-assert-is-nonnegative-integerf":"20F","@stdlib/math/base/special/acotdf":"20G","@stdlib/math-base-special-acotdf":"20H","@stdlib/math/base/special/acovercosf":"20I","@stdlib/math-base-special-acovercosf":"20J","@stdlib/math/base/special/acoversinf":"20K","@stdlib/math-base-special-acoversinf":"20L","@stdlib/math/base/special/atandf":"20M","@stdlib/math-base-special-atandf":"20N","@stdlib/math/base/special/avercosf":"20O","@stdlib/math-base-special-avercosf":"20P","@stdlib/math/base/special/aversinf":"20Q","@stdlib/math-base-special-aversinf":"20R","@stdlib/math/base/special/ldexpf":"20S","@stdlib/math-base-special-ldexpf":"20T","@stdlib/math/base/special/logf":"20U","@stdlib/math-base-special-logf":"20V","@stdlib/math/base/special/maxabsf":"20W","@stdlib/math-base-special-maxabsf":"20X","@stdlib/math/base/special/maxf":"20Y","@stdlib/math-base-special-maxf":"20Z","@stdlib/math/base/special/minabsf":"20a","@stdlib/math-base-special-minabsf":"20b","@stdlib/math/base/special/minf":"20c","@stdlib/math-base-special-minf":"20d","@stdlib/math/base/special/xlogyf":"20e","@stdlib/math-base-special-xlogyf":"20f","@stdlib/napi/argv-strided-complex128array2d":"20g","@stdlib/napi-argv-strided-complex128array2d":"20h","@stdlib/napi/argv-strided-complex64array2d":"20i","@stdlib/napi-argv-strided-complex64array2d":"20j","@stdlib/napi/argv-strided-float32array2d":"20k","@stdlib/napi-argv-strided-float32array2d":"20l","@stdlib/napi/argv-strided-float64array2d":"20m","@stdlib/napi-argv-strided-float64array2d":"20n","@stdlib/napi/argv-strided-int16array2d":"20o","@stdlib/napi-argv-strided-int16array2d":"20p","@stdlib/napi/argv-strided-int32array2d":"20q","@stdlib/napi-argv-strided-int32array2d":"20r","@stdlib/napi/argv-strided-int8array2d":"20s","@stdlib/napi-argv-strided-int8array2d":"20t","@stdlib/napi/argv-strided-uint16array2d":"20u","@stdlib/napi-argv-strided-uint16array2d":"20v","@stdlib/napi/argv-strided-uint32array2d":"20w","@stdlib/napi-argv-strided-uint32array2d":"20x","@stdlib/napi/argv-strided-uint8array2d":"20y","@stdlib/napi-argv-strided-uint8array2d":"20z","@stdlib/ndarray/base/assert/has-equal-shape":"210","@stdlib/ndarray-base-assert-has-equal-shape":"211","@stdlib/ndarray/base/fill":"212","@stdlib/ndarray-base-fill":"213","@stdlib/ndarray/base/to-reversed":"214","@stdlib/ndarray-base-to-reversed":"215","@stdlib/strided/base/read-dataview":"216","@stdlib/strided-base-read-dataview":"217","@stdlib/strided/base/strided2object":"218","@stdlib/strided-base-strided2object":"219","@stdlib/strided/base/write-dataview":"21A","@stdlib/strided-base-write-dataview":"21B","@stdlib/string/base/atob":"21C","@stdlib/string-base-atob":"21D","@stdlib/wasm/base/array2dtype":"21E","@stdlib/wasm-base-array2dtype":"21F","@stdlib/wasm/base/arrays2ptrs":"21G","@stdlib/wasm-base-arrays2ptrs":"21H","@stdlib/wasm/base/dtype2wasm":"21I","@stdlib/wasm-base-dtype2wasm":"21J","@stdlib/wasm/base":"21K","@stdlib/wasm-base":"21L","@stdlib/wasm/base/strided2object":"21M","@stdlib/wasm-base-strided2object":"21N","@stdlib/wasm/memory":"21O","@stdlib/wasm-memory":"21P","@stdlib/wasm/module-wrapper":"21Q","@stdlib/wasm-module-wrapper":"21R","@stdlib/wasm":"21T","@stdlib/array/base/cunone-by-right":"21U","@stdlib/array-base-cunone-by-right":"21V","@stdlib/array/base/cunone-by":"21W","@stdlib/array-base-cunone-by":"21X","@stdlib/array/base/cusome-by-right":"21Y","@stdlib/array-base-cusome-by-right":"21Z","@stdlib/array/fixed-endian-float64":"21a","@stdlib/array-fixed-endian-float64":"21b","@stdlib/assert/is-ndarray-like-with-data-type":"21c","@stdlib/assert-is-ndarray-like-with-data-type":"21d","@stdlib/blas/ext/base/zfill":"21e","@stdlib/blas-ext-base-zfill":"21f","@stdlib/blas/tools":"21g","@stdlib/blas-tools":"21h","@stdlib/blas/tools/swap-factory":"21i","@stdlib/blas-tools-swap-factory":"21j","@stdlib/constants/float32/max-safe-fibonacci":"21k","@stdlib/constants-float32-max-safe-fibonacci":"21l","@stdlib/string/base/base64-to-uint8array":"21m","@stdlib/string-base-base64-to-uint8array":"21n","@stdlib/array/base/assert/is-byte-order":"21o","@stdlib/array-base-assert-is-byte-order":"21p","@stdlib/array/base/cuany-by-right":"21q","@stdlib/array-base-cuany-by-right":"21r","@stdlib/array/base/cuany-by":"21s","@stdlib/array-base-cuany-by":"21t","@stdlib/array/base/cuevery-by":"21u","@stdlib/array-base-cuevery-by":"21v","@stdlib/array/base/cusome-by":"21w","@stdlib/array-base-cusome-by":"21x","@stdlib/array/base/cusome":"21y","@stdlib/array-base-cusome":"21z","@stdlib/array/base/nulls":"220","@stdlib/array-base-nulls":"221","@stdlib/array/byte-orders":"222","@stdlib/array-byte-orders":"223","@stdlib/array/fixed-endian-factory":"224","@stdlib/array-fixed-endian-factory":"225","@stdlib/array/fixed-endian-float32":"226","@stdlib/array-fixed-endian-float32":"227","@stdlib/array/little-endian-factory":"228","@stdlib/array-little-endian-factory":"229","@stdlib/array/little-endian-float32":"22A","@stdlib/array-little-endian-float32":"22B","@stdlib/array/little-endian-float64":"22C","@stdlib/array-little-endian-float64":"22D","@stdlib/array/base/cuevery-by-right":"22E","@stdlib/array-base-cuevery-by-right":"22F","@stdlib/array/base/mskbinary3d":"22G","@stdlib/array-base-mskbinary3d":"22H","@stdlib/assert/is-same-typed-array-like":"22I","@stdlib/assert-is-same-typed-array-like":"22J","@stdlib/blas/base/ccopy-wasm":"22K","@stdlib/blas-base-ccopy-wasm":"22L","@stdlib/blas/base/cscal-wasm":"22M","@stdlib/blas-base-cscal-wasm":"22N","@stdlib/blas/base/csrot-wasm":"22O","@stdlib/blas-base-csrot-wasm":"22P","@stdlib/blas/base/cswap-wasm":"22Q","@stdlib/blas-base-cswap-wasm":"22R","@stdlib/blas/base/dasum-wasm":"22S","@stdlib/blas-base-dasum-wasm":"22T","@stdlib/blas/base/dcopy-wasm":"22U","@stdlib/blas-base-dcopy-wasm":"22V","@stdlib/blas/base/ddot-wasm":"22W","@stdlib/blas-base-ddot-wasm":"22X","@stdlib/blas/base/dnrm2-wasm":"22Y","@stdlib/blas-base-dnrm2-wasm":"22Z","@stdlib/blas/base/drot-wasm":"22a","@stdlib/blas-base-drot-wasm":"22b","@stdlib/blas/base/drotm-wasm":"22c","@stdlib/blas-base-drotm-wasm":"22d","@stdlib/blas/base/dscal-wasm":"22e","@stdlib/blas-base-dscal-wasm":"22f","@stdlib/blas/base/dswap-wasm":"22g","@stdlib/blas-base-dswap-wasm":"22h","@stdlib/blas/base/idamax-wasm":"22i","@stdlib/blas-base-idamax-wasm":"22j","@stdlib/blas/base/sasum-wasm":"22k","@stdlib/blas-base-sasum-wasm":"22l","@stdlib/blas/base/saxpy-wasm":"22m","@stdlib/blas-base-saxpy-wasm":"22n","@stdlib/blas/base/scopy-wasm":"22o","@stdlib/blas-base-scopy-wasm":"22p","@stdlib/blas/base/sdot-wasm":"22q","@stdlib/blas-base-sdot-wasm":"22r","@stdlib/blas/base/snrm2-wasm":"22s","@stdlib/blas-base-snrm2-wasm":"22t","@stdlib/blas/base/srot-wasm":"22u","@stdlib/blas-base-srot-wasm":"22v","@stdlib/blas/ext/base/dapxsumkbn-wasm":"22w","@stdlib/blas-ext-base-dapxsumkbn-wasm":"22x","@stdlib/constants/float32/e":"22y","@stdlib/constants-float32-e":"22z","@stdlib/constants/float32/half-ln-two":"230","@stdlib/constants-float32-half-ln-two":"231","@stdlib/constants/float32/ln-two":"232","@stdlib/constants-float32-ln-two":"233","@stdlib/constants/float32/max-base10-exponent-subnormal":"234","@stdlib/constants-float32-max-base10-exponent-subnormal":"235","@stdlib/constants/float32/max-base10-exponent":"236","@stdlib/constants-float32-max-base10-exponent":"237","@stdlib/constants/float32/min-base10-exponent-subnormal":"238","@stdlib/constants-float32-min-base10-exponent-subnormal":"239","@stdlib/constants/float32/min-base10-exponent":"23A","@stdlib/constants-float32-min-base10-exponent":"23B","@stdlib/constants/float32/min-base2-exponent":"23C","@stdlib/constants-float32-min-base2-exponent":"23D","@stdlib/constants/float64/max-safe-nth-double-factorial":"23E","@stdlib/constants-float64-max-safe-nth-double-factorial":"23F","@stdlib/fs/read-ndjson":"23G","@stdlib/fs-read-ndjson":"23H","@stdlib/iter/cuany-by":"23I","@stdlib/iter-cuany-by":"23J","@stdlib/iter/cuevery-by":"23K","@stdlib/iter-cuevery-by":"23L","@stdlib/iter/cuevery":"23M","@stdlib/iter-cuevery":"23N","@stdlib/iter/cunone":"23O","@stdlib/iter-cunone":"23P","@stdlib/iter/cusome-by":"23Q","@stdlib/iter-cusome-by":"23R","@stdlib/math/base/assert/is-evenf":"23S","@stdlib/math-base-assert-is-evenf":"23T","@stdlib/math/base/special/acosdf":"23U","@stdlib/math-base-special-acosdf":"23V","@stdlib/math/base/special/ahavercosf":"23W","@stdlib/math-base-special-ahavercosf":"23X","@stdlib/math/base/special/ahaversinf":"23Y","@stdlib/math-base-special-ahaversinf":"23Z","@stdlib/math/base/special/cfloorf":"23a","@stdlib/math-base-special-cfloorf":"23b","@stdlib/math/base/special/croundf":"23c","@stdlib/math-base-special-croundf":"23d","@stdlib/math/base/special/fmodf":"23e","@stdlib/math-base-special-fmodf":"23f","@stdlib/math/base/special/gcdf":"23g","@stdlib/math-base-special-gcdf":"23h","@stdlib/math/base/special/nanmaxf":"23i","@stdlib/math-base-special-nanmaxf":"23j","@stdlib/math/base/special/nanminf":"23k","@stdlib/math-base-special-nanminf":"23l","@stdlib/math/base/special/sec":"23m","@stdlib/math-base-special-sec":"23n","@stdlib/array/base/broadcasted-quaternary3d":"23o","@stdlib/array-base-broadcasted-quaternary3d":"23p","@stdlib/array/base/broadcasted-quaternary4d":"23q","@stdlib/array-base-broadcasted-quaternary4d":"23r","@stdlib/array/base/broadcasted-quaternary5d":"23s","@stdlib/array-base-broadcasted-quaternary5d":"23t","@stdlib/array/base/broadcasted-quinary4d":"23u","@stdlib/array-base-broadcasted-quinary4d":"23v","@stdlib/array/base/broadcasted-ternary3d":"23w","@stdlib/array-base-broadcasted-ternary3d":"23x","@stdlib/array/base/broadcasted-ternary4d":"23y","@stdlib/array-base-broadcasted-ternary4d":"23z","@stdlib/array/base/broadcasted-ternary5d":"240","@stdlib/array-base-broadcasted-ternary5d":"241","@stdlib/array/base/mskbinary4d":"242","@stdlib/array-base-mskbinary4d":"243","@stdlib/array/base/mskbinary5d":"244","@stdlib/array-base-mskbinary5d":"245","@stdlib/array/base/mskunary4d":"246","@stdlib/array-base-mskunary4d":"247","@stdlib/array/base/mskunary5d":"248","@stdlib/array-base-mskunary5d":"249","@stdlib/array/base/unary3d-by":"24A","@stdlib/array-base-unary3d-by":"24B","@stdlib/array/base/unary4d-by":"24C","@stdlib/array-base-unary4d-by":"24D","@stdlib/array/base/unary5d-by":"24E","@stdlib/array-base-unary5d-by":"24F","@stdlib/constants/float32/ln-half":"24G","@stdlib/constants-float32-ln-half":"24H","@stdlib/constants/float32/ln-pi":"24I","@stdlib/constants-float32-ln-pi":"24J","@stdlib/constants/float32/ln-ten":"24K","@stdlib/constants-float32-ln-ten":"24L","@stdlib/constants/float32/max-safe-nth-lucas":"24M","@stdlib/constants-float32-max-safe-nth-lucas":"24N","@stdlib/constants/float32/sqrt-half-pi":"24O","@stdlib/constants-float32-sqrt-half-pi":"24P","@stdlib/constants/float32/sqrt-half":"24Q","@stdlib/constants-float32-sqrt-half":"24R","@stdlib/constants/float32/sqrt-phi":"24S","@stdlib/constants-float32-sqrt-phi":"24T","@stdlib/constants/float32/sqrt-pi":"24U","@stdlib/constants-float32-sqrt-pi":"24V","@stdlib/constants/float32/sqrt-three":"24W","@stdlib/constants-float32-sqrt-three":"24X","@stdlib/constants/float32/sqrt-two-pi":"24Y","@stdlib/constants-float32-sqrt-two-pi":"24Z","@stdlib/constants/float32/sqrt-two":"24a","@stdlib/constants-float32-sqrt-two":"24b","@stdlib/constants/float64/max-safe-nth-tribonacci":"24c","@stdlib/constants-float64-max-safe-nth-tribonacci":"24d","@stdlib/math/base/assert/is-oddf":"24e","@stdlib/math-base-assert-is-oddf":"24f","@stdlib/math/base/special/lcmf":"24g","@stdlib/math-base-special-lcmf":"24h","@stdlib/math/base/special/negalucasf":"24i","@stdlib/math-base-special-negalucasf":"24j","@stdlib/math/base/special/nonfibonaccif":"24k","@stdlib/math-base-special-nonfibonaccif":"24l","@stdlib/math/base/special/sqrtpif":"24m","@stdlib/math-base-special-sqrtpif":"24n","@stdlib/ndarray/base/from-scalar-like":"24o","@stdlib/ndarray-base-from-scalar-like":"24p","@stdlib/ndarray/base/min-signed-integer-dtype":"24q","@stdlib/ndarray-base-min-signed-integer-dtype":"24r","@stdlib/ndarray/base/min-unsigned-integer-dtype":"24s","@stdlib/ndarray-base-min-unsigned-integer-dtype":"24t","@stdlib/ndarray/filter-map":"24u","@stdlib/ndarray-filter-map":"24v","@stdlib/ndarray/filter":"24w","@stdlib/ndarray-filter":"24x","@stdlib/ndarray/for-each":"24y","@stdlib/ndarray-for-each":"24z","@stdlib/ndarray/index":"250","@stdlib/ndarray-index":"251","@stdlib/ndarray/map":"252","@stdlib/ndarray-map":"253","@stdlib/ndarray/reject":"254","@stdlib/ndarray-reject":"255","@stdlib/ndarray/to-fancy":"256","@stdlib/ndarray-to-fancy":"257","@stdlib/ndarray/to-json":"258","@stdlib/ndarray-to-json":"259","@stdlib/stats/base/dists/planck/cdf":"25A","@stdlib/stats-base-dists-planck-cdf":"25B","@stdlib/stats/base/dists/planck/entropy":"25C","@stdlib/stats-base-dists-planck-entropy":"25D","@stdlib/stats/base/dists/planck/kurtosis":"25E","@stdlib/stats-base-dists-planck-kurtosis":"25F","@stdlib/stats/base/dists/planck/logcdf":"25G","@stdlib/stats-base-dists-planck-logcdf":"25H","@stdlib/stats/base/dists/planck/logpmf":"25I","@stdlib/stats-base-dists-planck-logpmf":"25J","@stdlib/stats/base/dists/planck/mean":"25K","@stdlib/stats-base-dists-planck-mean":"25L","@stdlib/stats/base/dists/planck/median":"25M","@stdlib/stats-base-dists-planck-median":"25N","@stdlib/stats/base/dists/planck/mode":"25O","@stdlib/stats-base-dists-planck-mode":"25P","@stdlib/stats/base/dists/planck/pmf":"25Q","@stdlib/stats-base-dists-planck-pmf":"25R","@stdlib/stats/base/dists/planck/quantile":"25S","@stdlib/stats-base-dists-planck-quantile":"25T","@stdlib/stats/base/dists/planck/skewness":"25U","@stdlib/stats-base-dists-planck-skewness":"25V","@stdlib/stats/base/dists/planck/stdev":"25W","@stdlib/stats-base-dists-planck-stdev":"25X","@stdlib/stats/base/dists/planck/variance":"25Y","@stdlib/stats-base-dists-planck-variance":"25Z","@stdlib/array/base/assert/is-sorted-ascending":"25a","@stdlib/array-base-assert-is-sorted-ascending":"25b","@stdlib/array/base/fill":"25c","@stdlib/array-base-fill":"25d","@stdlib/array/base/indices-complement":"25e","@stdlib/array-base-indices-complement":"25f","@stdlib/array/base/mskfilter2":"25g","@stdlib/array-base-mskfilter2":"25h","@stdlib/array/base/mskfiltern":"25i","@stdlib/array-base-mskfiltern":"25j","@stdlib/array/base/scatter-filled":"25k","@stdlib/array-base-scatter-filled":"25l","@stdlib/array/base/scattered":"25m","@stdlib/array-base-scattered":"25n","@stdlib/array/base/take-indexed2":"25o","@stdlib/array-base-take-indexed2":"25p","@stdlib/math/base/assert/is-probabilityf":"25q","@stdlib/math-base-assert-is-probabilityf":"25r","@stdlib/math/base/special/dirac-deltaf":"25s","@stdlib/math-base-special-dirac-deltaf":"25t","@stdlib/ndarray/base/assert/is-column-major-string":"25u","@stdlib/ndarray-base-assert-is-column-major-string":"25v","@stdlib/ndarray/base/assert/is-row-major-string":"25w","@stdlib/ndarray-base-assert-is-row-major-string":"25x","@stdlib/ndarray/base/normalize-indices":"25y","@stdlib/ndarray-base-normalize-indices":"25z","@stdlib/ndarray/base/spread-dimensions":"260","@stdlib/ndarray-base-spread-dimensions":"261","@stdlib/ndarray/base/to-normalized-indices":"262","@stdlib/ndarray-base-to-normalized-indices":"263","@stdlib/ndarray/base/to-unique-normalized-indices":"264","@stdlib/ndarray-base-to-unique-normalized-indices":"265","@stdlib/blas/base/zdscal":"266","@stdlib/blas-base-zdscal":"267","@stdlib/lapack/base/zlacgv":"268","@stdlib/lapack-base-zlacgv":"269","@stdlib/lapack/base/zlacpy":"26A","@stdlib/lapack-base-zlacpy":"26B","@stdlib/lapack/base/zrot":"26C","@stdlib/lapack-base-zrot":"26D","@stdlib/math/base/special/heavisidef":"26E","@stdlib/math-base-special-heavisidef":"26F","@stdlib/ndarray/base/unary-accumulate":"26G","@stdlib/ndarray-base-unary-accumulate":"26H","@stdlib/stats/strided/dmax":"26I","@stdlib/stats-strided-dmax":"26J","@stdlib/array/base/for-each":"26K","@stdlib/array-base-for-each":"26L","@stdlib/blas/base/wasm/ccopy":"26M","@stdlib/blas-base-wasm-ccopy":"26N","@stdlib/blas/base/wasm/cscal":"26O","@stdlib/blas-base-wasm-cscal":"26P","@stdlib/blas/base/wasm/csrot":"26Q","@stdlib/blas-base-wasm-csrot":"26R","@stdlib/blas/base/wasm/cswap":"26S","@stdlib/blas-base-wasm-cswap":"26T","@stdlib/blas/base/wasm/dasum":"26U","@stdlib/blas-base-wasm-dasum":"26V","@stdlib/blas/base/wasm/daxpy":"26W","@stdlib/blas-base-wasm-daxpy":"26X","@stdlib/blas/base/wasm/dcopy":"26Y","@stdlib/blas-base-wasm-dcopy":"26Z","@stdlib/blas/base/wasm/ddot":"26a","@stdlib/blas-base-wasm-ddot":"26b","@stdlib/blas/base/wasm/dnrm2":"26c","@stdlib/blas-base-wasm-dnrm2":"26d","@stdlib/blas/base/wasm/drot":"26e","@stdlib/blas-base-wasm-drot":"26f","@stdlib/blas/base/wasm/drotm":"26g","@stdlib/blas-base-wasm-drotm":"26h","@stdlib/blas/base/wasm/dscal":"26i","@stdlib/blas-base-wasm-dscal":"26j","@stdlib/blas/base/wasm/dswap":"26k","@stdlib/blas-base-wasm-dswap":"26l","@stdlib/blas/base/wasm/idamax":"26m","@stdlib/blas-base-wasm-idamax":"26n","@stdlib/blas/base/wasm/isamax":"26o","@stdlib/blas-base-wasm-isamax":"26p","@stdlib/blas/base/wasm":"26q","@stdlib/blas-base-wasm":"26r","@stdlib/blas/base/wasm/sasum":"26s","@stdlib/blas-base-wasm-sasum":"26t","@stdlib/blas/base/wasm/saxpy":"26u","@stdlib/blas-base-wasm-saxpy":"26v","@stdlib/blas/base/wasm/scopy":"26w","@stdlib/blas-base-wasm-scopy":"26x","@stdlib/blas/base/wasm/sdot":"26y","@stdlib/blas-base-wasm-sdot":"26z","@stdlib/blas/base/wasm/snrm2":"270","@stdlib/blas-base-wasm-snrm2":"271","@stdlib/blas/base/wasm/srot":"272","@stdlib/blas-base-wasm-srot":"273","@stdlib/blas/base/wasm/sscal":"274","@stdlib/blas-base-wasm-sscal":"275","@stdlib/blas/base/wasm/zcopy":"276","@stdlib/blas-base-wasm-zcopy":"277","@stdlib/blas/base/wasm/zdrot":"278","@stdlib/blas-base-wasm-zdrot":"279","@stdlib/blas/base/wasm/zswap":"27A","@stdlib/blas-base-wasm-zswap":"27B","@stdlib/blas/ext/base/wasm/dapxsumkbn":"27C","@stdlib/blas-ext-base-wasm-dapxsumkbn":"27D","@stdlib/blas/ext/base/wasm":"27E","@stdlib/blas-ext-base-wasm":"27F","@stdlib/complex/float64/base/mul-add":"27G","@stdlib/complex-float64-base-mul-add":"27H","@stdlib/complex/float64/base/scale":"27I","@stdlib/complex-float64-base-scale":"27J","@stdlib/dstructs/circular-buffer":"27K","@stdlib/dstructs-circular-buffer":"27L","@stdlib/dstructs/compact-adjacency-matrix":"27M","@stdlib/dstructs-compact-adjacency-matrix":"27N","@stdlib/dstructs/doubly-linked-list":"27O","@stdlib/dstructs-doubly-linked-list":"27P","@stdlib/dstructs/fifo":"27Q","@stdlib/dstructs-fifo":"27R","@stdlib/dstructs/linked-list":"27S","@stdlib/dstructs-linked-list":"27T","@stdlib/dstructs/named-typed-tuple":"27U","@stdlib/dstructs-named-typed-tuple":"27V","@stdlib/dstructs":"27X","@stdlib/dstructs/stack":"27Y","@stdlib/dstructs-stack":"27Z","@stdlib/function/thunk":"27a","@stdlib/function-thunk":"27b","@stdlib/lapack/base/clacgv":"27c","@stdlib/lapack-base-clacgv":"27d","@stdlib/lapack/base/clacpy":"27e","@stdlib/lapack-base-clacpy":"27f","@stdlib/lapack/base/claset":"27g","@stdlib/lapack-base-claset":"27h","@stdlib/lapack/base/crot":"27i","@stdlib/lapack-base-crot":"27j","@stdlib/lapack/base/zlaset":"27k","@stdlib/lapack-base-zlaset":"27l","@stdlib/math/array":"27m","@stdlib/math-array":"27n","@stdlib/math/array/special/abs":"27o","@stdlib/math-array-special-abs":"27p","@stdlib/math/array/special":"27q","@stdlib/math-array-special":"27r","@stdlib/math/array/tools":"27s","@stdlib/math-array-tools":"27t","@stdlib/math/array/tools/unary-factory":"27u","@stdlib/math-array-tools-unary-factory":"27v","@stdlib/math/array/tools/unary":"27w","@stdlib/math-array-tools-unary":"27x","@stdlib/math/base/special/hyp2f1":"27y","@stdlib/math-base-special-hyp2f1":"27z","@stdlib/napi/argv-bool":"280","@stdlib/napi-argv-bool":"281","@stdlib/ndarray/base/assert/is-output-data-type-policy":"282","@stdlib/ndarray-base-assert-is-output-data-type-policy":"283","@stdlib/number/float32/base/add":"284","@stdlib/number-float32-base-add":"285","@stdlib/number/float32/base/div":"286","@stdlib/number-float32-base-div":"287","@stdlib/number/float32/base/mul":"288","@stdlib/number-float32-base-mul":"289","@stdlib/number/float32/base/sub":"28A","@stdlib/number-float32-base-sub":"28B","@stdlib/number/float64/base/add":"28C","@stdlib/number-float64-base-add":"28D","@stdlib/number/float64/base/add3":"28E","@stdlib/number-float64-base-add3":"28F","@stdlib/number/float64/base/add4":"28G","@stdlib/number-float64-base-add4":"28H","@stdlib/number/float64/base/add5":"28I","@stdlib/number-float64-base-add5":"28J","@stdlib/number/float64/base/div":"28K","@stdlib/number-float64-base-div":"28L","@stdlib/number/float64/base/mul":"28M","@stdlib/number-float64-base-mul":"28N","@stdlib/number/float64/base/sub":"28O","@stdlib/number-float64-base-sub":"28P","@stdlib/number/uint32/base/mul":"28Q","@stdlib/number-uint32-base-mul":"28R","@stdlib/stats/base/dists/bradford/cdf":"28S","@stdlib/stats-base-dists-bradford-cdf":"28T","@stdlib/stats/base/dists/bradford/entropy":"28U","@stdlib/stats-base-dists-bradford-entropy":"28V","@stdlib/stats/base/dists/bradford/mean":"28W","@stdlib/stats-base-dists-bradford-mean":"28X","@stdlib/stats/base/dists/bradford/median":"28Y","@stdlib/stats-base-dists-bradford-median":"28Z","@stdlib/stats/base/dists/bradford/mode":"28a","@stdlib/stats-base-dists-bradford-mode":"28b","@stdlib/stats/base/dists/bradford/stdev":"28c","@stdlib/stats-base-dists-bradford-stdev":"28d","@stdlib/stats/base/dists/bradford/variance":"28e","@stdlib/stats-base-dists-bradford-variance":"28f","@stdlib/stats/base/dists/planck/mgf":"28g","@stdlib/stats-base-dists-planck-mgf":"28h","@stdlib/stats/strided/dcumax":"28i","@stdlib/stats-strided-dcumax":"28j","@stdlib/stats/strided/dcumaxabs":"28k","@stdlib/stats-strided-dcumaxabs":"28l","@stdlib/stats/strided/dcuminabs":"28m","@stdlib/stats-strided-dcuminabs":"28n","@stdlib/stats/strided/dmaxabs":"28o","@stdlib/stats-strided-dmaxabs":"28p","@stdlib/stats/strided/dmaxabssorted":"28q","@stdlib/stats-strided-dmaxabssorted":"28r","@stdlib/stats/strided/dmaxsorted":"28s","@stdlib/stats-strided-dmaxsorted":"28t","@stdlib/stats/strided/dmeankbn":"28u","@stdlib/stats-strided-dmeankbn":"28v","@stdlib/stats/strided/dmeankbn2":"28w","@stdlib/stats-strided-dmeankbn2":"28x","@stdlib/stats/strided/dmeanli":"28y","@stdlib/stats-strided-dmeanli":"28z","@stdlib/stats/strided/dmeanlipw":"290","@stdlib/stats-strided-dmeanlipw":"291","@stdlib/stats/strided/dmeanors":"292","@stdlib/stats-strided-dmeanors":"293","@stdlib/stats/strided/dmeanpw":"294","@stdlib/stats-strided-dmeanpw":"295","@stdlib/stats/strided/dmeanwd":"296","@stdlib/stats-strided-dmeanwd":"297","@stdlib/stats/strided/dmediansorted":"298","@stdlib/stats-strided-dmediansorted":"299","@stdlib/stats/strided/dmidrange":"29A","@stdlib/stats-strided-dmidrange":"29B","@stdlib/stats/strided/dmin":"29C","@stdlib/stats-strided-dmin":"29D","@stdlib/stats/strided/dminabs":"29E","@stdlib/stats-strided-dminabs":"29F","@stdlib/stats/strided/dminsorted":"29G","@stdlib/stats-strided-dminsorted":"29H","@stdlib/stats/strided/dnanmax":"29I","@stdlib/stats-strided-dnanmax":"29J","@stdlib/stats/strided/dnanmaxabs":"29K","@stdlib/stats-strided-dnanmaxabs":"29L","@stdlib/stats/strided/dnanmean":"29M","@stdlib/stats-strided-dnanmean":"29N","@stdlib/array/base/banded/filled2d-by":"29O","@stdlib/array-base-banded-filled2d-by":"29P","@stdlib/array/base/banded/to-compact":"29Q","@stdlib/array-base-banded-to-compact":"29R","@stdlib/array/base/fill-by":"29S","@stdlib/array-base-fill-by":"29T","@stdlib/array/base/map":"29U","@stdlib/array-base-map":"29V","@stdlib/array/base/symmetric-banded/filled2d-by":"29W","@stdlib/array-base-symmetric-banded-filled2d-by":"29X","@stdlib/array/base/symmetric-banded/to-compact":"29Y","@stdlib/array-base-symmetric-banded-to-compact":"29Z","@stdlib/array/base/symmetric/filled2d-by":"29a","@stdlib/array-base-symmetric-filled2d-by":"29b","@stdlib/blas/base/wasm/srotm":"29c","@stdlib/blas-base-wasm-srotm":"29d","@stdlib/blas/ext/base/wasm/dapxsum":"29e","@stdlib/blas-ext-base-wasm-dapxsum":"29f","@stdlib/blas/ext/base/wasm/dapxsumors":"29g","@stdlib/blas-ext-base-wasm-dapxsumors":"29h","@stdlib/blas/ext/base/wasm/dapxsumpw":"29i","@stdlib/blas-ext-base-wasm-dapxsumpw":"29j","@stdlib/blas/ext/base/wasm/dasumpw":"29k","@stdlib/blas-ext-base-wasm-dasumpw":"29l","@stdlib/blas/ext/base/wasm/dnansumpw":"29m","@stdlib/blas-ext-base-wasm-dnansumpw":"29n","@stdlib/complex/float32/base/identity":"29o","@stdlib/complex-float32-base-identity":"29p","@stdlib/complex/float32/base/neg":"29q","@stdlib/complex-float32-base-neg":"29r","@stdlib/complex/float32/base/sub":"29s","@stdlib/complex-float32-base-sub":"29t","@stdlib/complex/float64/base/div":"29u","@stdlib/complex-float64-base-div":"29v","@stdlib/complex/float64/base/identity":"29w","@stdlib/complex-float64-base-identity":"29x","@stdlib/complex/float64/base/neg":"29y","@stdlib/complex-float64-base-neg":"29z","@stdlib/complex/float64/base/sub":"2A0","@stdlib/complex-float64-base-sub":"2A1","@stdlib/console/log-each-map":"2A2","@stdlib/console-log-each-map":"2A3","@stdlib/constants/float32/apery":"2A4","@stdlib/constants-float32-apery":"2A5","@stdlib/constants/float32/gamma-lanczos-g":"2A6","@stdlib/constants-float32-gamma-lanczos-g":"2A7","@stdlib/constants/float32/ln-sqrt-two-pi":"2A8","@stdlib/constants-float32-ln-sqrt-two-pi":"2A9","@stdlib/constants/float32/ln-two-pi":"2AA","@stdlib/constants-float32-ln-two-pi":"2AB","@stdlib/constants/float32/log10-e":"2AC","@stdlib/constants-float32-log10-e":"2AD","@stdlib/constants/float32/log2-e":"2AE","@stdlib/constants-float32-log2-e":"2AF","@stdlib/constants/float32/max-safe-nth-double-factorial":"2AG","@stdlib/constants-float32-max-safe-nth-double-factorial":"2AH","@stdlib/constants/float32/max-safe-nth-tribonacci":"2AI","@stdlib/constants-float32-max-safe-nth-tribonacci":"2AJ","@stdlib/constants/float32/num-significand-bits":"2AK","@stdlib/constants-float32-num-significand-bits":"2AL","@stdlib/constants/float32/pi-squared":"2AM","@stdlib/constants-float32-pi-squared":"2AN","@stdlib/math/base/special/sincosd":"2AO","@stdlib/math-base-special-sincosd":"2AP","@stdlib/math/base/special/sind":"2AQ","@stdlib/math-base-special-sind":"2AR","@stdlib/ndarray/base/assert/is-scalar-mostly-safe-compatible":"2AS","@stdlib/ndarray-base-assert-is-scalar-mostly-safe-compatible":"2AT","@stdlib/ndarray/base/every":"2AU","@stdlib/ndarray-base-every":"2AV","@stdlib/ndarray/base/fill-by":"2AW","@stdlib/ndarray-base-fill-by":"2AX","@stdlib/ndarray/base/unary-reduce-subarray":"2AY","@stdlib/ndarray-base-unary-reduce-subarray":"2AZ","@stdlib/ndarray/fill-by":"2Aa","@stdlib/ndarray-fill-by":"2Ab","@stdlib/ndarray/fill":"2Ac","@stdlib/ndarray-fill":"2Ad","@stdlib/number/float32/base/identity":"2Ae","@stdlib/number-float32-base-identity":"2Af","@stdlib/number/float64/base/identity":"2Ag","@stdlib/number-float64-base-identity":"2Ah","@stdlib/number/int32/base/mul":"2Ai","@stdlib/number-int32-base-mul":"2Aj","@stdlib/number/int32/base/muldw":"2Ak","@stdlib/number-int32-base-muldw":"2Al","@stdlib/number/uint32/base/muldw":"2Am","@stdlib/number-uint32-base-muldw":"2An","@stdlib/stats/base/dists/bradford/pdf":"2Ao","@stdlib/stats-base-dists-bradford-pdf":"2Ap","@stdlib/stats/base/dists/bradford/quantile":"2Aq","@stdlib/stats-base-dists-bradford-quantile":"2Ar","@stdlib/stats/incr/nanmean":"2As","@stdlib/stats-incr-nanmean":"2At","@stdlib/stats/incr/nanmeanabs":"2Au","@stdlib/stats-incr-nanmeanabs":"2Av","@stdlib/stats/incr/nanskewness":"2Aw","@stdlib/stats-incr-nanskewness":"2Ax","@stdlib/stats/strided/dnanmeanors":"2Ay","@stdlib/stats-strided-dnanmeanors":"2Az","@stdlib/stats/strided/dnanmeanpn":"2B0","@stdlib/stats-strided-dnanmeanpn":"2B1","@stdlib/stats/strided/dnanmeanpw":"2B2","@stdlib/stats-strided-dnanmeanpw":"2B3","@stdlib/stats/strided/dnanmeanwd":"2B4","@stdlib/stats-strided-dnanmeanwd":"2B5","@stdlib/stats/strided/dnanmin":"2B6","@stdlib/stats-strided-dnanmin":"2B7","@stdlib/stats/strided/dnanminabs":"2B8","@stdlib/stats-strided-dnanminabs":"2B9","@stdlib/stats/strided/dnanrange":"2BA","@stdlib/stats-strided-dnanrange":"2BB","@stdlib/stats/strided/dnanstdevch":"2BC","@stdlib/stats-strided-dnanstdevch":"2BD","@stdlib/stats/strided/dnanstdevpn":"2BE","@stdlib/stats-strided-dnanstdevpn":"2BF","@stdlib/stats/strided/dnanstdevtk":"2BG","@stdlib/stats-strided-dnanstdevtk":"2BH","@stdlib/stats/strided/dnanstdevwd":"2BI","@stdlib/stats-strided-dnanstdevwd":"2BJ","@stdlib/stats/strided/dnanstdevyc":"2BK","@stdlib/stats-strided-dnanstdevyc":"2BL","@stdlib/stats/strided/dnanvariance":"2BM","@stdlib/stats-strided-dnanvariance":"2BN","@stdlib/stats/strided/dnanvariancech":"2BO","@stdlib/stats-strided-dnanvariancech":"2BP","@stdlib/stats/strided/dnanvariancepn":"2BQ","@stdlib/stats-strided-dnanvariancepn":"2BR","@stdlib/stats/strided/dnanvariancetk":"2BS","@stdlib/stats-strided-dnanvariancetk":"2BT","@stdlib/stats/strided/dnanvariancewd":"2BU","@stdlib/stats-strided-dnanvariancewd":"2BV","@stdlib/stats/strided/dnanvarianceyc":"2BW","@stdlib/stats-strided-dnanvarianceyc":"2BX","@stdlib/stats/strided/drange":"2BY","@stdlib/stats-strided-drange":"2BZ","@stdlib/stats/strided/dsemch":"2Ba","@stdlib/stats-strided-dsemch":"2Bb","@stdlib/stats/strided/dsemtk":"2Bc","@stdlib/stats-strided-dsemtk":"2Bd","@stdlib/stats/strided/dsemwd":"2Be","@stdlib/stats-strided-dsemwd":"2Bf","@stdlib/stats/strided/dsemyc":"2Bg","@stdlib/stats-strided-dsemyc":"2Bh","@stdlib/stats/strided/dsmean":"2Bi","@stdlib/stats-strided-dsmean":"2Bj","@stdlib/stats/strided/dsmeanpn":"2Bk","@stdlib/stats-strided-dsmeanpn":"2Bl","@stdlib/stats/strided/dsmeanpw":"2Bm","@stdlib/stats-strided-dsmeanpw":"2Bn","@stdlib/stats/strided/dsmeanwd":"2Bo","@stdlib/stats-strided-dsmeanwd":"2Bp","@stdlib/stats/strided/dsnanmean":"2Bq","@stdlib/stats-strided-dsnanmean":"2Br","@stdlib/stats/strided/dsnanmeanors":"2Bs","@stdlib/stats-strided-dsnanmeanors":"2Bt","@stdlib/stats/strided/dsnanmeanpn":"2Bu","@stdlib/stats-strided-dsnanmeanpn":"2Bv","@stdlib/stats/strided/dsnanmeanwd":"2Bw","@stdlib/stats-strided-dsnanmeanwd":"2Bx","@stdlib/stats/strided/dstdevch":"2By","@stdlib/stats-strided-dstdevch":"2Bz","@stdlib/stats/strided/dstdevpn":"2C0","@stdlib/stats-strided-dstdevpn":"2C1","@stdlib/stats/strided/dstdevtk":"2C2","@stdlib/stats-strided-dstdevtk":"2C3","@stdlib/stats/strided/dstdevwd":"2C4","@stdlib/stats-strided-dstdevwd":"2C5","@stdlib/stats/strided/dstdevyc":"2C6","@stdlib/stats-strided-dstdevyc":"2C7","@stdlib/stats/strided/dsvariance":"2C8","@stdlib/stats-strided-dsvariance":"2C9","@stdlib/stats/strided/dsvariancepn":"2CA","@stdlib/stats-strided-dsvariancepn":"2CB","@stdlib/stats/strided/dvariance":"2CC","@stdlib/stats-strided-dvariance":"2CD","@stdlib/stats/strided/dvariancech":"2CE","@stdlib/stats-strided-dvariancech":"2CF","@stdlib/stats/strided/dvariancepn":"2CG","@stdlib/stats-strided-dvariancepn":"2CH","@stdlib/stats/strided/dvariancetk":"2CI","@stdlib/stats-strided-dvariancetk":"2CJ","@stdlib/stats/strided/dvariancewd":"2CK","@stdlib/stats-strided-dvariancewd":"2CL","@stdlib/stats/strided/dvarianceyc":"2CM","@stdlib/stats-strided-dvarianceyc":"2CN","@stdlib/stats/strided/dvarmtk":"2CO","@stdlib/stats-strided-dvarmtk":"2CP","@stdlib/stats/strided/scumax":"2CQ","@stdlib/stats-strided-scumax":"2CR","@stdlib/stats/strided/scumaxabs":"2CS","@stdlib/stats-strided-scumaxabs":"2CT","@stdlib/stats/strided/scumin":"2CU","@stdlib/stats-strided-scumin":"2CV","@stdlib/stats/strided/scuminabs":"2CW","@stdlib/stats-strided-scuminabs":"2CX","@stdlib/stats/strided/sdsmean":"2CY","@stdlib/stats-strided-sdsmean":"2CZ","@stdlib/stats/strided/sdsmeanors":"2Ca","@stdlib/stats-strided-sdsmeanors":"2Cb","@stdlib/stats/strided/smax":"2Cc","@stdlib/stats-strided-smax":"2Cd","@stdlib/stats/strided/smaxabs":"2Ce","@stdlib/stats-strided-smaxabs":"2Cf","@stdlib/stats/strided/smaxabssorted":"2Cg","@stdlib/stats-strided-smaxabssorted":"2Ch","@stdlib/stats/strided/smaxsorted":"2Ci","@stdlib/stats-strided-smaxsorted":"2Cj","@stdlib/stats/strided/smeanli":"2Ck","@stdlib/stats-strided-smeanli":"2Cl","@stdlib/stats/strided/smeanpw":"2Cm","@stdlib/stats-strided-smeanpw":"2Cn","@stdlib/stats/strided/smeanwd":"2Co","@stdlib/stats-strided-smeanwd":"2Cp","@stdlib/stats/strided/smediansorted":"2Cq","@stdlib/stats-strided-smediansorted":"2Cr","@stdlib/stats/strided/smin":"2Cs","@stdlib/stats-strided-smin":"2Ct","@stdlib/stats/strided/sminabs":"2Cu","@stdlib/stats-strided-sminabs":"2Cv","@stdlib/stats/strided/sminsorted":"2Cw","@stdlib/stats-strided-sminsorted":"2Cx","@stdlib/stats/strided/smskmax":"2Cy","@stdlib/stats-strided-smskmax":"2Cz","@stdlib/stats/strided/smskmin":"2D0","@stdlib/stats-strided-smskmin":"2D1","@stdlib/stats/strided/smskrange":"2D2","@stdlib/stats-strided-smskrange":"2D3","@stdlib/stats/strided/snanmax":"2D4","@stdlib/stats-strided-snanmax":"2D5","@stdlib/stats/strided/snanmaxabs":"2D6","@stdlib/stats-strided-snanmaxabs":"2D7","@stdlib/stats/strided/snanmeanors":"2D8","@stdlib/stats-strided-snanmeanors":"2D9","@stdlib/stats/strided/snanmeanpn":"2DA","@stdlib/stats-strided-snanmeanpn":"2DB","@stdlib/stats/strided/snanmeanwd":"2DC","@stdlib/stats-strided-snanmeanwd":"2DD","@stdlib/stats/strided/snanmin":"2DE","@stdlib/stats-strided-snanmin":"2DF","@stdlib/stats/strided/snanminabs":"2DG","@stdlib/stats-strided-snanminabs":"2DH","@stdlib/stats/strided/snanrange":"2DI","@stdlib/stats-strided-snanrange":"2DJ","@stdlib/stats/strided/srange":"2DK","@stdlib/stats-strided-srange":"2DL","@stdlib/stats/strided/sstdevch":"2DM","@stdlib/stats-strided-sstdevch":"2DN","@stdlib/stats/strided/sstdevpn":"2DO","@stdlib/stats-strided-sstdevpn":"2DP","@stdlib/stats/strided/sstdevtk":"2DQ","@stdlib/stats-strided-sstdevtk":"2DR","@stdlib/string/base/slice-grapheme-clusters":"2DS","@stdlib/string-base-slice-grapheme-clusters":"2DT","@stdlib/string/base/slice":"2DU","@stdlib/string-base-slice":"2DV","@stdlib/string/num-code-points":"2DW","@stdlib/string-num-code-points":"2DX","@stdlib/array/base/index-of-same-value":"2DY","@stdlib/array-base-index-of-same-value":"2DZ","@stdlib/array/base/last-index-of-same-value":"2Da","@stdlib/array-base-last-index-of-same-value":"2Db","@stdlib/array/base/linspace2d":"2Dc","@stdlib/array-base-linspace2d":"2Dd","@stdlib/array/base/reshape":"2De","@stdlib/array-base-reshape":"2Df","@stdlib/constants/float32/catalan":"2Dg","@stdlib/constants-float32-catalan":"2Dh","@stdlib/constants/float32/eulergamma":"2Di","@stdlib/constants-float32-eulergamma":"2Dj","@stdlib/constants/float32/fourth-root-eps":"2Dk","@stdlib/constants-float32-fourth-root-eps":"2Dl","@stdlib/constants/float32/max-ln":"2Dm","@stdlib/constants-float32-max-ln":"2Dn","@stdlib/constants/float32/max-safe-lucas":"2Do","@stdlib/constants-float32-max-safe-lucas":"2Dp","@stdlib/constants/float32/min-ln":"2Dq","@stdlib/constants-float32-min-ln":"2Dr","@stdlib/math/base/special/atan2d":"2Ds","@stdlib/math-base-special-atan2d":"2Dt","@stdlib/math/base/special/csignumf":"2Du","@stdlib/math-base-special-csignumf":"2Dv","@stdlib/math/base/special/fibonaccif":"2Dw","@stdlib/math-base-special-fibonaccif":"2Dx","@stdlib/ndarray/base/includes":"2Dy","@stdlib/ndarray-base-includes":"2Dz","@stdlib/ndarray/every":"2E0","@stdlib/ndarray-every":"2E1","@stdlib/ndarray/includes":"2E2","@stdlib/ndarray-includes":"2E3","@stdlib/stats/incr/nanstdev":"2E4","@stdlib/stats-incr-nanstdev":"2E5","@stdlib/stats/strided/dcumin":"2E6","@stdlib/stats-strided-dcumin":"2E7","@stdlib/stats/strided/dmskmax":"2E8","@stdlib/stats-strided-dmskmax":"2E9","@stdlib/stats/strided/dmskmin":"2EA","@stdlib/stats-strided-dmskmin":"2EB","@stdlib/stats/strided/dmskrange":"2EC","@stdlib/stats-strided-dmskrange":"2ED","@stdlib/stats/strided/dsmeanors":"2EE","@stdlib/stats-strided-dsmeanors":"2EF","@stdlib/stats/strided/smidrange":"2EG","@stdlib/stats-strided-smidrange":"2EH","@stdlib/stats/strided/sstdevyc":"2EI","@stdlib/stats-strided-sstdevyc":"2EJ","@stdlib/stats/strided/svariancech":"2EK","@stdlib/stats-strided-svariancech":"2EL","@stdlib/stats/strided/svariancepn":"2EM","@stdlib/stats-strided-svariancepn":"2EN","@stdlib/stats/strided/svariancetk":"2EO","@stdlib/stats-strided-svariancetk":"2EP","@stdlib/stats/strided/svarianceyc":"2EQ","@stdlib/stats-strided-svarianceyc":"2ER","@stdlib/string/base/slice-code-points":"2ES","@stdlib/string-base-slice-code-points":"2ET","@stdlib/array/base/count-ifs":"2EU","@stdlib/array-base-count-ifs":"2EV","@stdlib/math/base/special/fibonacci-indexf":"2EW","@stdlib/math-base-special-fibonacci-indexf":"2EX","@stdlib/stats/array/max":"2EY","@stdlib/stats-array-max":"2EZ","@stdlib/stats/array/mskmax":"2Ea","@stdlib/stats-array-mskmax":"2Eb","@stdlib/stats/array/nanmax":"2Ec","@stdlib/stats-array-nanmax":"2Ed","@stdlib/stats/array/varianceyc":"2Ee","@stdlib/stats-array-varianceyc":"2Ef","@stdlib/array/base/banded":"2Eg","@stdlib/array-base-banded":"2Eh","@stdlib/array/base/symmetric-banded":"2Ei","@stdlib/array-base-symmetric-banded":"2Ej","@stdlib/array/base/symmetric":"2Ek","@stdlib/array-base-symmetric":"2El","@stdlib/blas/base/wasm/sswap":"2Em","@stdlib/blas-base-wasm-sswap":"2En","@stdlib/math/base/special/lucasf":"2Eo","@stdlib/math-base-special-lucasf":"2Ep","@stdlib/ndarray/base/every-by":"2Eq","@stdlib/ndarray-base-every-by":"2Er","@stdlib/ndarray/base/unary-reduce-strided1d":"2Es","@stdlib/ndarray-base-unary-reduce-strided1d":"2Et","@stdlib/object/every-in-by":"2Eu","@stdlib/object-every-in-by":"2Ev","@stdlib/stats/array/min":"2Ew","@stdlib/stats-array-min":"2Ex","@stdlib/stats/base/ndarray/dmax":"2Ey","@stdlib/stats-base-ndarray-dmax":"2Ez","@stdlib/stats/base/ndarray/max":"2F0","@stdlib/stats-base-ndarray-max":"2F1","@stdlib/stats/base/ndarray":"2F2","@stdlib/stats-base-ndarray":"2F3","@stdlib/stats/base/ndarray/smax":"2F4","@stdlib/stats-base-ndarray-smax":"2F5","@stdlib/stats/max":"2F6","@stdlib/stats-max":"2F7","@stdlib/stats/tools/reduce/unary-strided-dispatch-factory":"2F8","@stdlib/stats-tools-reduce-unary-strided-dispatch-factory":"2F9","@stdlib/stats/tools/reduce/unary-strided-dispatch":"2FA","@stdlib/stats-tools-reduce-unary-strided-dispatch":"2FB","@stdlib/blas/base/wasm/dsdot":"2FC","@stdlib/blas-base-wasm-dsdot":"2FD","@stdlib/blas/ext/base/ndarray/dcusum":"2FE","@stdlib/blas-ext-base-ndarray-dcusum":"2FF","@stdlib/blas/ext/base/ndarray/dsum":"2FG","@stdlib/blas-ext-base-ndarray-dsum":"2FH","@stdlib/blas/ext/base/ndarray/gcusum":"2FI","@stdlib/blas-ext-base-ndarray-gcusum":"2FJ","@stdlib/blas/ext/base/ndarray/gsum":"2FK","@stdlib/blas-ext-base-ndarray-gsum":"2FL","@stdlib/blas/ext/base/ndarray":"2FM","@stdlib/blas-ext-base-ndarray":"2FN","@stdlib/blas/ext/base/ndarray/scusum":"2FO","@stdlib/blas-ext-base-ndarray-scusum":"2FP","@stdlib/blas/ext/base/ndarray/ssum":"2FQ","@stdlib/blas-ext-base-ndarray-ssum":"2FR","@stdlib/blas/ext/cusum":"2FS","@stdlib/blas-ext-cusum":"2FT","@stdlib/blas/ext/sum":"2FU","@stdlib/blas-ext-sum":"2FV","@stdlib/constants/float32/max-nth-double-factorial":"2FW","@stdlib/constants-float32-max-nth-double-factorial":"2FX","@stdlib/constants/float32/max-nth-factorial":"2FY","@stdlib/constants-float32-max-nth-factorial":"2FZ","@stdlib/constants/float64/max-nth-double-factorial":"2Fa","@stdlib/constants-float64-max-nth-double-factorial":"2Fb","@stdlib/constants/float64/max-nth-factorial":"2Fc","@stdlib/constants-float64-max-nth-factorial":"2Fd","@stdlib/ndarray/base/assert/is-boolean-index-data-type":"2Fe","@stdlib/ndarray-base-assert-is-boolean-index-data-type":"2Ff","@stdlib/ndarray/base/assert/is-index-data-type":"2Fg","@stdlib/ndarray-base-assert-is-index-data-type":"2Fh","@stdlib/ndarray/base/assert/is-input-casting-policy":"2Fi","@stdlib/ndarray-base-assert-is-input-casting-policy":"2Fj","@stdlib/ndarray/base/assert/is-integer-index-data-type":"2Fk","@stdlib/ndarray-base-assert-is-integer-index-data-type":"2Fl","@stdlib/ndarray/base/assert/is-mask-index-data-type":"2Fm","@stdlib/ndarray-base-assert-is-mask-index-data-type":"2Fn","@stdlib/ndarray/base/unary-input-casting-dtype":"2Fo","@stdlib/ndarray-base-unary-input-casting-dtype":"2Fp","@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-factory":"2Fq","@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-factory":"2Fr","@stdlib/ndarray/base/unary-reduce-strided1d-dispatch":"2Fs","@stdlib/ndarray-base-unary-reduce-strided1d-dispatch":"2Ft","@stdlib/ndarray/base/unary-strided1d-dispatch-factory":"2Fu","@stdlib/ndarray-base-unary-strided1d-dispatch-factory":"2Fv","@stdlib/ndarray/base/unary-strided1d-dispatch":"2Fw","@stdlib/ndarray-base-unary-strided1d-dispatch":"2Fx","@stdlib/ndarray/base/unary-strided1d":"2Fy","@stdlib/ndarray-base-unary-strided1d":"2Fz","@stdlib/ndarray/input-casting-policies":"2G0","@stdlib/ndarray-input-casting-policies":"2G1","@stdlib/stats/base/ndarray/cumax":"2G2","@stdlib/stats-base-ndarray-cumax":"2G3","@stdlib/stats/base/ndarray/dcumax":"2G4","@stdlib/stats-base-ndarray-dcumax":"2G5","@stdlib/stats/base/ndarray/scumax":"2G6","@stdlib/stats-base-ndarray-scumax":"2G7","@stdlib/stats/cumax":"2G8","@stdlib/stats-cumax":"2G9","@stdlib/blas/base/wasm/sdsdot":"2GA","@stdlib/blas-base-wasm-sdsdot":"2GB","@stdlib/blas/ext/base/wasm/dnanasumors":"2GC","@stdlib/blas-ext-base-wasm-dnanasumors":"2GD","@stdlib/blas/ext/base/wasm/sapxsumkbn":"2GE","@stdlib/blas-ext-base-wasm-sapxsumkbn":"2GF","@stdlib/lapack/base/zlaswp":"2GG","@stdlib/lapack-base-zlaswp":"2GH","@stdlib/math/base/special/logitf":"2GI","@stdlib/math-base-special-logitf":"2GJ","@stdlib/random/tools":"2GK","@stdlib/random-tools":"2GL","@stdlib/random/tools/unary-factory":"2GM","@stdlib/random-tools-unary-factory":"2GN","@stdlib/random/tools/unary":"2GO","@stdlib/random-tools-unary":"2GP","@stdlib/stats/array/maxabs":"2GQ","@stdlib/stats-array-maxabs":"2GR","@stdlib/stats/array/maxsorted":"2GS","@stdlib/stats-array-maxsorted":"2GT","@stdlib/stats/incr/nanmaxabs":"2GU","@stdlib/stats-incr-nanmaxabs":"2GV","@stdlib/stats/incr/nanmstdev":"2GW","@stdlib/stats-incr-nanmstdev":"2GX","@stdlib/stats/strided/wasm/dmeanors":"2GY","@stdlib/stats-strided-wasm-dmeanors":"2GZ","@stdlib/array/base/assert/any-has-own-property":"2Ga","@stdlib/array-base-assert-any-has-own-property":"2Gb","@stdlib/array/base/assert/any-has-property":"2Gc","@stdlib/array-base-assert-any-has-property":"2Gd","@stdlib/array/base/assert/any-is-entry-in":"2Ge","@stdlib/array-base-assert-any-is-entry-in":"2Gf","@stdlib/array/base/assert/any-is-entry":"2Gg","@stdlib/array-base-assert-any-is-entry":"2Gh","@stdlib/ndarray/base/binary-output-dtype":"2Gi","@stdlib/ndarray-base-binary-output-dtype":"2Gj","@stdlib/ndarray/base/binary":"2Gk","@stdlib/ndarray-base-binary":"2Gl","@stdlib/ndarray/base/output-dtype":"2Gm","@stdlib/ndarray-base-output-dtype":"2Gn","@stdlib/ndarray/base/promote-dtypes":"2Go","@stdlib/ndarray-base-promote-dtypes":"2Gp","@stdlib/stats/array/minabs":"2Gq","@stdlib/stats-array-minabs":"2Gr","@stdlib/stats/array/minsorted":"2Gs","@stdlib/stats-array-minsorted":"2Gt","@stdlib/stats/array/mskmin":"2Gu","@stdlib/stats-array-mskmin":"2Gv","@stdlib/blas/ext/base/dnancusumkbn":"2Gw","@stdlib/blas-ext-base-dnancusumkbn":"2Gx","@stdlib/blas/ext/base/wasm/dapx":"2Gy","@stdlib/blas-ext-base-wasm-dapx":"2Gz","@stdlib/lapack/base/claswp":"2H0","@stdlib/lapack-base-claswp":"2H1","@stdlib/math/base/special/bernoullif":"2H2","@stdlib/math-base-special-bernoullif":"2H3","@stdlib/math/base/special/gammasgnf":"2H4","@stdlib/math-base-special-gammasgnf":"2H5","@stdlib/ndarray/base/loop-interchange-order":"2H6","@stdlib/ndarray-base-loop-interchange-order":"2H7","@stdlib/ndarray/vector/ctor":"2H8","@stdlib/ndarray-vector-ctor":"2H9","@stdlib/ndarray/vector/float32":"2HA","@stdlib/ndarray-vector-float32":"2HB","@stdlib/ndarray/vector/float64":"2HC","@stdlib/ndarray-vector-float64":"2HD","@stdlib/random/tools/binary-factory":"2HE","@stdlib/random-tools-binary-factory":"2HF","@stdlib/random/tools/binary":"2HG","@stdlib/random-tools-binary":"2HH","@stdlib/random/uniform":"2HI","@stdlib/random-uniform":"2HJ","@stdlib/stats/array/mean":"2HK","@stdlib/stats-array-mean":"2HL","@stdlib/stats/array/mskrange":"2HM","@stdlib/stats-array-mskrange":"2HN","@stdlib/stats/array/nanmin":"2HO","@stdlib/stats-array-nanmin":"2HP","@stdlib/array/base/any-has-own-property":"2HQ","@stdlib/array-base-any-has-own-property":"2HR","@stdlib/array/base/any-has-property":"2HS","@stdlib/array-base-any-has-property":"2HT","@stdlib/array/base/any-is-entry-in":"2HU","@stdlib/array-base-any-is-entry-in":"2HV","@stdlib/array/base/any-is-entry":"2HW","@stdlib/array-base-any-is-entry":"2HX","@stdlib/assert/is-equal-booleanarray":"2HY","@stdlib/assert-is-equal-booleanarray":"2HZ","@stdlib/assert/is-equal-date-object":"2Ha","@stdlib/assert-is-equal-date-object":"2Hb","@stdlib/assert/is-equal-int16array":"2Hc","@stdlib/assert-is-equal-int16array":"2Hd","@stdlib/assert/is-equal-int32array":"2He","@stdlib/assert-is-equal-int32array":"2Hf","@stdlib/assert/is-equal-int8array":"2Hg","@stdlib/assert-is-equal-int8array":"2Hh","@stdlib/assert/is-equal-uint16array":"2Hi","@stdlib/assert-is-equal-uint16array":"2Hj","@stdlib/assert/is-equal-uint32array":"2Hk","@stdlib/assert-is-equal-uint32array":"2Hl","@stdlib/assert/is-equal-uint8array":"2Hm","@stdlib/assert-is-equal-uint8array":"2Hn","@stdlib/assert/is-equal-uint8clampedarray":"2Ho","@stdlib/assert-is-equal-uint8clampedarray":"2Hp","@stdlib/blas/base/csscal":"2Hq","@stdlib/blas-base-csscal":"2Hr","@stdlib/blas/ext/base/csum":"2Hs","@stdlib/blas-ext-base-csum":"2Ht","@stdlib/blas/ext/base/csumkbn":"2Hu","@stdlib/blas-ext-base-csumkbn":"2Hv","@stdlib/blas/ext/base/gnannsumpw":"2Hw","@stdlib/blas-ext-base-gnannsumpw":"2Hx","@stdlib/blas/ext/base/ndarray/csum":"2Hy","@stdlib/blas-ext-base-ndarray-csum":"2Hz","@stdlib/blas/ext/base/ndarray/zsum":"2I0","@stdlib/blas-ext-base-ndarray-zsum":"2I1","@stdlib/blas/ext/base/zsum":"2I2","@stdlib/blas-ext-base-zsum":"2I3","@stdlib/blas/ext/base/zsumkbn":"2I4","@stdlib/blas-ext-base-zsumkbn":"2I5","@stdlib/complex/float32/base/scale":"2I6","@stdlib/complex-float32-base-scale":"2I7","@stdlib/lapack/base/dgttrf":"2I8","@stdlib/lapack-base-dgttrf":"2I9","@stdlib/lapack/base/dlapy2":"2IA","@stdlib/lapack-base-dlapy2":"2IB","@stdlib/lapack/base/dlapy3":"2IC","@stdlib/lapack-base-dlapy3":"2ID","@stdlib/lapack/base/iladlc":"2IE","@stdlib/lapack-base-iladlc":"2IF","@stdlib/lapack/base/iladlr":"2IG","@stdlib/lapack-base-iladlr":"2IH","@stdlib/math/base/special/atan2f":"2II","@stdlib/math-base-special-atan2f":"2IJ","@stdlib/math/base/special/binomcoeff":"2IK","@stdlib/math-base-special-binomcoeff":"2IL","@stdlib/math/base/special/cinvf":"2IM","@stdlib/math-base-special-cinvf":"2IN","@stdlib/math/base/special/factorial2f":"2IO","@stdlib/math-base-special-factorial2f":"2IP","@stdlib/math/base/special/kernel-cosf":"2IQ","@stdlib/math-base-special-kernel-cosf":"2IR","@stdlib/math/base/special/kernel-sinf":"2IS","@stdlib/math-base-special-kernel-sinf":"2IT","@stdlib/math/base/special/negafibonaccif":"2IU","@stdlib/math-base-special-negafibonaccif":"2IV","@stdlib/math/base/special/rempio2f":"2IW","@stdlib/math-base-special-rempio2f":"2IX","@stdlib/math/base/special/spencef":"2IY","@stdlib/math-base-special-spencef":"2IZ","@stdlib/math/base/special/tribonaccif":"2Ia","@stdlib/math-base-special-tribonaccif":"2Ib","@stdlib/math/base/special/wrapf":"2Ic","@stdlib/math-base-special-wrapf":"2Id","@stdlib/ndarray/base/count-falsy":"2Ie","@stdlib/ndarray-base-count-falsy":"2If","@stdlib/ndarray/base/count-if":"2Ig","@stdlib/ndarray-base-count-if":"2Ih","@stdlib/ndarray/base/count-truthy":"2Ii","@stdlib/ndarray-base-count-truthy":"2Ij","@stdlib/ndarray/base/some-by":"2Ik","@stdlib/ndarray-base-some-by":"2Il","@stdlib/ndarray/base/unary-reduce-strided1d-by":"2Im","@stdlib/ndarray-base-unary-reduce-strided1d-by":"2In","@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-by-factory":"2Io","@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-by-factory":"2Ip","@stdlib/ndarray/base/unary-reduce-strided1d-dispatch-by":"2Iq","@stdlib/ndarray-base-unary-reduce-strided1d-dispatch-by":"2Ir","@stdlib/ndarray/base/unary-reduce-subarray-by":"2Is","@stdlib/ndarray-base-unary-reduce-subarray-by":"2It","@stdlib/ndarray/count-falsy":"2Iu","@stdlib/ndarray-count-falsy":"2Iv","@stdlib/ndarray/count-if":"2Iw","@stdlib/ndarray-count-if":"2Ix","@stdlib/ndarray/count-truthy":"2Iy","@stdlib/ndarray-count-truthy":"2Iz","@stdlib/ndarray/some-by":"2J0","@stdlib/ndarray-some-by":"2J1","@stdlib/ndarray/vector/bool":"2J2","@stdlib/ndarray-vector-bool":"2J3","@stdlib/ndarray/vector/complex128":"2J4","@stdlib/ndarray-vector-complex128":"2J5","@stdlib/ndarray/vector/complex64":"2J6","@stdlib/ndarray-vector-complex64":"2J7","@stdlib/ndarray/vector/int16":"2J8","@stdlib/ndarray-vector-int16":"2J9","@stdlib/ndarray/vector/int32":"2JA","@stdlib/ndarray-vector-int32":"2JB","@stdlib/ndarray/vector/int8":"2JC","@stdlib/ndarray-vector-int8":"2JD","@stdlib/ndarray/vector":"2JE","@stdlib/ndarray-vector":"2JF","@stdlib/ndarray/vector/uint16":"2JG","@stdlib/ndarray-vector-uint16":"2JH","@stdlib/ndarray/vector/uint32":"2JI","@stdlib/ndarray-vector-uint32":"2JJ","@stdlib/ndarray/vector/uint8":"2JK","@stdlib/ndarray-vector-uint8":"2JL","@stdlib/ndarray/vector/uint8c":"2JM","@stdlib/ndarray-vector-uint8c":"2JN","@stdlib/stats/array/max-by":"2JO","@stdlib/stats-array-max-by":"2JP","@stdlib/stats/array/mediansorted":"2JQ","@stdlib/stats-array-mediansorted":"2JR","@stdlib/stats/array/min-by":"2JS","@stdlib/stats-array-min-by":"2JT","@stdlib/stats/array/nanmax-by":"2JU","@stdlib/stats-array-nanmax-by":"2JV","@stdlib/stats/array/nanmaxabs":"2JW","@stdlib/stats-array-nanmaxabs":"2JX","@stdlib/stats/array/nanmin-by":"2JY","@stdlib/stats-array-nanmin-by":"2JZ","@stdlib/stats/array/nanminabs":"2Ja","@stdlib/stats-array-nanminabs":"2Jb","@stdlib/stats/array/nanrange":"2Jc","@stdlib/stats-array-nanrange":"2Jd","@stdlib/stats/array":"2Je","@stdlib/stats-array":"2Jf","@stdlib/stats/array/range":"2Jg","@stdlib/stats-array-range":"2Jh","@stdlib/stats/base/ndarray/max-by":"2Ji","@stdlib/stats-base-ndarray-max-by":"2Jj","@stdlib/stats/max-by":"2Jk","@stdlib/stats-max-by":"2Jl","@stdlib/stats/strided/dmean":"2Jm","@stdlib/stats-strided-dmean":"2Jn","@stdlib/stats/strided/dmeanpn":"2Jo","@stdlib/stats-strided-dmeanpn":"2Jp","@stdlib/stats/strided/dnanmskmax":"2Jq","@stdlib/stats-strided-dnanmskmax":"2Jr","@stdlib/stats/strided/dnanmskmin":"2Js","@stdlib/stats-strided-dnanmskmin":"2Jt","@stdlib/stats/strided/dnanmskrange":"2Ju","@stdlib/stats-strided-dnanmskrange":"2Jv","@stdlib/stats/strided/dnanstdev":"2Jw","@stdlib/stats-strided-dnanstdev":"2Jx","@stdlib/stats/strided/dsem":"2Jy","@stdlib/stats-strided-dsem":"2Jz","@stdlib/stats/strided/dsempn":"2K0","@stdlib/stats-strided-dsempn":"2K1","@stdlib/stats/strided/dstdev":"2K2","@stdlib/stats-strided-dstdev":"2K3","@stdlib/stats/strided":"2K4","@stdlib/stats-strided":"2K5","@stdlib/stats/strided/snanmskmax":"2K6","@stdlib/stats-strided-snanmskmax":"2K7","@stdlib/stats/strided/snanmskmin":"2K8","@stdlib/stats-strided-snanmskmin":"2K9","@stdlib/stats/strided/snanmskrange":"2KA","@stdlib/stats-strided-snanmskrange":"2KB","@stdlib/stats/strided/wasm/dmeanwd":"2KC","@stdlib/stats-strided-wasm-dmeanwd":"2KD","@stdlib/array/struct-factory":"2KE","@stdlib/array-struct-factory":"2KF","@stdlib/assert/napi/is-dataview":"2KG","@stdlib/assert-napi-is-dataview":"2KH","@stdlib/dstructs/struct":"2KI","@stdlib/dstructs-struct":"2KJ","@stdlib/math/base/special/cosf":"2KK","@stdlib/math-base-special-cosf":"2KL","@stdlib/math/base/special/cosm1f":"2KM","@stdlib/math-base-special-cosm1f":"2KN","@stdlib/math/base/special/covercosf":"2KO","@stdlib/math-base-special-covercosf":"2KP","@stdlib/math/base/special/coversinf":"2KQ","@stdlib/math-base-special-coversinf":"2KR","@stdlib/math/base/special/cphasef":"2KS","@stdlib/math-base-special-cphasef":"2KT","@stdlib/math/base/special/cscf":"2KU","@stdlib/math-base-special-cscf":"2KV","@stdlib/math/base/special/frexpf":"2KW","@stdlib/math-base-special-frexpf":"2KX","@stdlib/math/base/special/gamma-lanczos-sum-expg-scaledf":"2KY","@stdlib/math-base-special-gamma-lanczos-sum-expg-scaledf":"2KZ","@stdlib/math/base/special/hacovercosf":"2Ka","@stdlib/math-base-special-hacovercosf":"2Kb","@stdlib/math/base/special/hacoversinf":"2Kc","@stdlib/math-base-special-hacoversinf":"2Kd","@stdlib/math/base/special/havercosf":"2Ke","@stdlib/math-base-special-havercosf":"2Kf","@stdlib/math/base/special/haversinf":"2Kg","@stdlib/math-base-special-haversinf":"2Kh","@stdlib/math/base/special/kernel-tanf":"2Ki","@stdlib/math-base-special-kernel-tanf":"2Kj","@stdlib/math/base/special/minmaxabsf":"2Kk","@stdlib/math-base-special-minmaxabsf":"2Kl","@stdlib/math/base/special/minmaxf":"2Km","@stdlib/math-base-special-minmaxf":"2Kn","@stdlib/math/base/special/modff":"2Ko","@stdlib/math-base-special-modff":"2Kp","@stdlib/math/base/special/secf":"2Kq","@stdlib/math-base-special-secf":"2Kr","@stdlib/math/base/special/sinf":"2Ks","@stdlib/math-base-special-sinf":"2Kt","@stdlib/math/base/special/tanf":"2Ku","@stdlib/math-base-special-tanf":"2Kv","@stdlib/math/base/special/vercosf":"2Kw","@stdlib/math-base-special-vercosf":"2Kx","@stdlib/math/base/special/versinf":"2Ky","@stdlib/math-base-special-versinf":"2Kz","@stdlib/napi/argv-dataview-cast":"2L0","@stdlib/napi-argv-dataview-cast":"2L1","@stdlib/napi/argv-dataview":"2L2","@stdlib/napi-argv-dataview":"2L3","@stdlib/ndarray/base/assert/is-struct-data-type":"2L4","@stdlib/ndarray-base-assert-is-struct-data-type":"2L5","@stdlib/number/float64/base/ulp-difference":"2L6","@stdlib/number-float64-base-ulp-difference":"2L7","@stdlib/number/uint16/base/add":"2L8","@stdlib/number-uint16-base-add":"2L9","@stdlib/number/uint16/base/mul":"2LA","@stdlib/number-uint16-base-mul":"2LB","@stdlib/number/uint16/base/sub":"2LC","@stdlib/number-uint16-base-sub":"2LD","@stdlib/number/uint32/base/add":"2LE","@stdlib/number-uint32-base-add":"2LF","@stdlib/number/uint32/base/sub":"2LG","@stdlib/number-uint32-base-sub":"2LH","@stdlib/number/uint8/base/add":"2LI","@stdlib/number-uint8-base-add":"2LJ","@stdlib/number/uint8/base/mul":"2LK","@stdlib/number-uint8-base-mul":"2LL","@stdlib/number/uint8/base/sub":"2LM","@stdlib/number-uint8-base-sub":"2LN","@stdlib/stats/array/meankbn":"2LO","@stdlib/stats-array-meankbn":"2LP","@stdlib/stats/array/meankbn2":"2LQ","@stdlib/stats-array-meankbn2":"2LR","@stdlib/stats/array/meanors":"2LS","@stdlib/stats-array-meanors":"2LT","@stdlib/stats/array/meanpn":"2LU","@stdlib/stats-array-meanpn":"2LV","@stdlib/stats/array/meanpw":"2LW","@stdlib/stats-array-meanpw":"2LX","@stdlib/stats/array/meanwd":"2LY","@stdlib/stats-array-meanwd":"2LZ","@stdlib/stats/array/nanmean":"2La","@stdlib/stats-array-nanmean":"2Lb","@stdlib/stats/array/nanmskmax":"2Lc","@stdlib/stats-array-nanmskmax":"2Ld","@stdlib/stats/base/ztest/alternative-enum2str":"2Le","@stdlib/stats-base-ztest-alternative-enum2str":"2Lf","@stdlib/stats/base/ztest/alternative-resolve-enum":"2Lg","@stdlib/stats-base-ztest-alternative-resolve-enum":"2Lh","@stdlib/stats/base/ztest/alternative-resolve-str":"2Li","@stdlib/stats-base-ztest-alternative-resolve-str":"2Lj","@stdlib/stats/base/ztest/alternative-str2enum":"2Lk","@stdlib/stats-base-ztest-alternative-str2enum":"2Ll","@stdlib/stats/base/ztest/alternatives":"2Lm","@stdlib/stats-base-ztest-alternatives":"2Ln","@stdlib/stats/base/ztest/one-sample/results/factory":"2Lo","@stdlib/stats-base-ztest-one-sample-results-factory":"2Lp","@stdlib/stats/base/ztest/one-sample/results/float32":"2Lq","@stdlib/stats-base-ztest-one-sample-results-float32":"2Lr","@stdlib/stats/base/ztest/one-sample/results/float64":"2Ls","@stdlib/stats-base-ztest-one-sample-results-float64":"2Lt","@stdlib/stats/base/ztest/one-sample/results/struct-factory":"2Lu","@stdlib/stats-base-ztest-one-sample-results-struct-factory":"2Lv","@stdlib/stats/base/ztest/one-sample/results/to-json":"2Lw","@stdlib/stats-base-ztest-one-sample-results-to-json":"2Lx","@stdlib/stats/base/ztest/one-sample/results/to-string":"2Ly","@stdlib/stats-base-ztest-one-sample-results-to-string":"2Lz","@stdlib/stats/strided/dvarm":"2M0","@stdlib/stats-strided-dvarm":"2M1","@stdlib/stats/strided/dvarmpn":"2M2","@stdlib/stats-strided-dvarmpn":"2M3","@stdlib/stats/strided/dztest":"2M4","@stdlib/stats-strided-dztest":"2M5","@stdlib/stats/strided/max-by":"2M6","@stdlib/stats-strided-max-by":"2M7","@stdlib/stats/strided/max":"2M8","@stdlib/stats-strided-max":"2M9","@stdlib/stats/strided/maxabs":"2MA","@stdlib/stats-strided-maxabs":"2MB","@stdlib/stats/strided/maxsorted":"2MC","@stdlib/stats-strided-maxsorted":"2MD","@stdlib/stats/strided/mean":"2ME","@stdlib/stats-strided-mean":"2MF","@stdlib/stats/strided/meankbn":"2MG","@stdlib/stats-strided-meankbn":"2MH","@stdlib/stats/strided/meankbn2":"2MI","@stdlib/stats-strided-meankbn2":"2MJ","@stdlib/stats/strided/meanors":"2MK","@stdlib/stats-strided-meanors":"2ML","@stdlib/stats/strided/meanpn":"2MM","@stdlib/stats-strided-meanpn":"2MN","@stdlib/stats/strided/meanpw":"2MO","@stdlib/stats-strided-meanpw":"2MP","@stdlib/stats/strided/meanwd":"2MQ","@stdlib/stats-strided-meanwd":"2MR","@stdlib/stats/strided/mediansorted":"2MS","@stdlib/stats-strided-mediansorted":"2MT","@stdlib/stats/strided/min-by":"2MU","@stdlib/stats-strided-min-by":"2MV","@stdlib/stats/strided/min":"2MW","@stdlib/stats-strided-min":"2MX","@stdlib/stats/strided/minabs":"2MY","@stdlib/stats-strided-minabs":"2MZ","@stdlib/stats/strided/minsorted":"2Ma","@stdlib/stats-strided-minsorted":"2Mb","@stdlib/stats/strided/mskmax":"2Mc","@stdlib/stats-strided-mskmax":"2Md","@stdlib/stats/strided/mskmin":"2Me","@stdlib/stats-strided-mskmin":"2Mf","@stdlib/stats/strided/mskrange":"2Mg","@stdlib/stats-strided-mskrange":"2Mh","@stdlib/stats/strided/nanmax-by":"2Mi","@stdlib/stats-strided-nanmax-by":"2Mj","@stdlib/stats/strided/nanmax":"2Mk","@stdlib/stats-strided-nanmax":"2Ml","@stdlib/stats/strided/nanmaxabs":"2Mm","@stdlib/stats-strided-nanmaxabs":"2Mn","@stdlib/stats/strided/nanmin-by":"2Mo","@stdlib/stats-strided-nanmin-by":"2Mp","@stdlib/stats/strided/nanmin":"2Mq","@stdlib/stats-strided-nanmin":"2Mr","@stdlib/stats/strided/nanminabs":"2Ms","@stdlib/stats-strided-nanminabs":"2Mt","@stdlib/stats/strided/smean":"2Mu","@stdlib/stats-strided-smean":"2Mv","@stdlib/stats/strided/smeanpn":"2Mw","@stdlib/stats-strided-smeanpn":"2Mx","@stdlib/stats/strided/sstdev":"2My","@stdlib/stats-strided-sstdev":"2Mz","@stdlib/stats/strided/svariance":"2N0","@stdlib/stats-strided-svariance":"2N1","@stdlib/stats/strided/svariancewd":"2N2","@stdlib/stats-strided-svariancewd":"2N3","@stdlib/stats/strided/sztest":"2N4","@stdlib/stats-strided-sztest":"2N5","@stdlib/stats/strided/ztest":"2N6","@stdlib/stats-strided-ztest":"2N7","@stdlib/array/base/assert/has-almost-equal-values":"2N8","@stdlib/array-base-assert-has-almost-equal-values":"2N9","@stdlib/assert/has-float16array-support":"2NA","@stdlib/assert-has-float16array-support":"2NB","@stdlib/assert/is-almost-equal-float64array":"2NC","@stdlib/assert-is-almost-equal-float64array":"2ND","@stdlib/assert/is-almost-equal":"2NE","@stdlib/assert-is-almost-equal":"2NF","@stdlib/assert/is-float16array":"2NG","@stdlib/assert-is-float16array":"2NH","@stdlib/assert/is-struct-constructor-like":"2NI","@stdlib/assert-is-struct-constructor-like":"2NJ","@stdlib/assert/is-struct":"2NK","@stdlib/assert-is-struct":"2NL","@stdlib/blas/base/assert/is-matrix-orientation":"2NM","@stdlib/blas-base-assert-is-matrix-orientation":"2NN","@stdlib/blas/base/gger":"2NO","@stdlib/blas-base-gger":"2NP","@stdlib/blas/base/igamax":"2NQ","@stdlib/blas-base-igamax":"2NR","@stdlib/blas/base/matrix-orientation-enum2str":"2NS","@stdlib/blas-base-matrix-orientation-enum2str":"2NT","@stdlib/blas/base/matrix-orientation-resolve-enum":"2NU","@stdlib/blas-base-matrix-orientation-resolve-enum":"2NV","@stdlib/blas/base/matrix-orientation-resolve-str":"2NW","@stdlib/blas-base-matrix-orientation-resolve-str":"2NX","@stdlib/blas/base/matrix-orientation-str2enum":"2NY","@stdlib/blas-base-matrix-orientation-str2enum":"2NZ","@stdlib/blas/base/matrix-orientations":"2Na","@stdlib/blas-base-matrix-orientations":"2Nb","@stdlib/blas/base/sger":"2Nc","@stdlib/blas-base-sger":"2Nd","@stdlib/blas/base/wasm/dznrm2":"2Ne","@stdlib/blas-base-wasm-dznrm2":"2Nf","@stdlib/blas/base/wasm/scasum":"2Ng","@stdlib/blas-base-wasm-scasum":"2Nh","@stdlib/blas/base/wasm/scnrm2":"2Ni","@stdlib/blas-base-wasm-scnrm2":"2Nj","@stdlib/blas/ext/base/dindex-of":"2Nk","@stdlib/blas-ext-base-dindex-of":"2Nl","@stdlib/blas/ext/base/dlast-index-of":"2Nm","@stdlib/blas-ext-base-dlast-index-of":"2Nn","@stdlib/blas/ext/base/gindex-of":"2No","@stdlib/blas-ext-base-gindex-of":"2Np","@stdlib/blas/ext/base/glast-index-of":"2Nq","@stdlib/blas-ext-base-glast-index-of":"2Nr","@stdlib/blas/ext/base/ndarray/dindex-of":"2Ns","@stdlib/blas-ext-base-ndarray-dindex-of":"2Nt","@stdlib/blas/ext/base/ndarray/dlast-index-of":"2Nu","@stdlib/blas-ext-base-ndarray-dlast-index-of":"2Nv","@stdlib/blas/ext/base/ndarray/gindex-of":"2Nw","@stdlib/blas-ext-base-ndarray-gindex-of":"2Nx","@stdlib/blas/ext/base/ndarray/glast-index-of":"2Ny","@stdlib/blas-ext-base-ndarray-glast-index-of":"2Nz","@stdlib/blas/ext/base/ndarray/sindex-of":"2O0","@stdlib/blas-ext-base-ndarray-sindex-of":"2O1","@stdlib/blas/ext/base/ndarray/slast-index-of":"2O2","@stdlib/blas-ext-base-ndarray-slast-index-of":"2O3","@stdlib/blas/ext/base/sindex-of":"2O4","@stdlib/blas-ext-base-sindex-of":"2O5","@stdlib/blas/ext/base/slast-index-of":"2O6","@stdlib/blas-ext-base-slast-index-of":"2O7","@stdlib/blas/ext/base/wasm/dnansumkbn2":"2O8","@stdlib/blas-ext-base-wasm-dnansumkbn2":"2O9","@stdlib/complex/float32/base/assert/is-almost-equal":"2OA","@stdlib/complex-float32-base-assert-is-almost-equal":"2OB","@stdlib/complex/float64/base/assert/is-almost-equal":"2OC","@stdlib/complex-float64-base-assert-is-almost-equal":"2OD","@stdlib/lapack/base/dlaset":"2OE","@stdlib/lapack-base-dlaset":"2OF","@stdlib/lapack/base/shared":"2OG","@stdlib/lapack-base-shared":"2OH","@stdlib/lapack/base/xerbla":"2OI","@stdlib/lapack-base-xerbla":"2OJ","@stdlib/math/base/special/kernel-log1pf":"2OK","@stdlib/math-base-special-kernel-log1pf":"2OL","@stdlib/math/base/special/round-nearest-even":"2OM","@stdlib/math-base-special-round-nearest-even":"2ON","@stdlib/math/base/special/sech":"2OO","@stdlib/math-base-special-sech":"2OP","@stdlib/ndarray/base/assert/is-data-type-string":"2OQ","@stdlib/ndarray-base-assert-is-data-type-string":"2OR","@stdlib/ndarray/base/ndarraylike2scalar":"2OS","@stdlib/ndarray-base-ndarraylike2scalar":"2OT","@stdlib/ndarray/base/unary-reduce-strided1d-assign-struct":"2OU","@stdlib/ndarray-base-unary-reduce-strided1d-assign-struct":"2OV","@stdlib/number/float32/base/assert/is-almost-equal":"2OW","@stdlib/number-float32-base-assert-is-almost-equal":"2OX","@stdlib/number/float32/base/ulp-difference":"2OY","@stdlib/number-float32-base-ulp-difference":"2OZ","@stdlib/number/float64/base/assert/is-almost-equal":"2Oa","@stdlib/number-float64-base-assert-is-almost-equal":"2Ob","@stdlib/object/every-own-by":"2Oc","@stdlib/object-every-own-by":"2Od","@stdlib/object/none-in-by":"2Oe","@stdlib/object-none-in-by":"2Of","@stdlib/object/some-in-by":"2Og","@stdlib/object-some-in-by":"2Oh","@stdlib/stats/array/nanmeanors":"2Oi","@stdlib/stats-array-nanmeanors":"2Oj","@stdlib/stats/array/nanmeanpn":"2Ok","@stdlib/stats-array-nanmeanpn":"2Ol","@stdlib/stats/array/nanmeanwd":"2Om","@stdlib/stats-array-nanmeanwd":"2On","@stdlib/stats/array/nanmskmin":"2Oo","@stdlib/stats-array-nanmskmin":"2Op","@stdlib/stats/array/nanmskrange":"2Oq","@stdlib/stats-array-nanmskrange":"2Or","@stdlib/stats/array/nanrange-by":"2Os","@stdlib/stats-array-nanrange-by":"2Ot","@stdlib/stats/array/nanstdev":"2Ou","@stdlib/stats-array-nanstdev":"2Ov","@stdlib/stats/array/nanstdevch":"2Ow","@stdlib/stats-array-nanstdevch":"2Ox","@stdlib/stats/array/nanvariance":"2Oy","@stdlib/stats-array-nanvariance":"2Oz","@stdlib/stats/array/nanvariancech":"2P0","@stdlib/stats-array-nanvariancech":"2P1","@stdlib/stats/array/nanvariancepn":"2P2","@stdlib/stats-array-nanvariancepn":"2P3","@stdlib/stats/array/nanvariancetk":"2P4","@stdlib/stats-array-nanvariancetk":"2P5","@stdlib/stats/array/nanvariancewd":"2P6","@stdlib/stats-array-nanvariancewd":"2P7","@stdlib/stats/array/nanvarianceyc":"2P8","@stdlib/stats-array-nanvarianceyc":"2P9","@stdlib/stats/array/range-by":"2PA","@stdlib/stats-array-range-by":"2PB","@stdlib/stats/array/stdev":"2PC","@stdlib/stats-array-stdev":"2PD","@stdlib/stats/array/stdevch":"2PE","@stdlib/stats-array-stdevch":"2PF","@stdlib/stats/array/stdevpn":"2PG","@stdlib/stats-array-stdevpn":"2PH","@stdlib/stats/array/stdevtk":"2PI","@stdlib/stats-array-stdevtk":"2PJ","@stdlib/stats/array/stdevwd":"2PK","@stdlib/stats-array-stdevwd":"2PL","@stdlib/stats/array/stdevyc":"2PM","@stdlib/stats-array-stdevyc":"2PN","@stdlib/stats/array/variance":"2PO","@stdlib/stats-array-variance":"2PP","@stdlib/stats/array/variancech":"2PQ","@stdlib/stats-array-variancech":"2PR","@stdlib/stats/array/variancepn":"2PS","@stdlib/stats-array-variancepn":"2PT","@stdlib/stats/array/variancetk":"2PU","@stdlib/stats-array-variancetk":"2PV","@stdlib/stats/array/variancewd":"2PW","@stdlib/stats-array-variancewd":"2PX","@stdlib/stats/base/dists/bradford/skewness":"2PY","@stdlib/stats-base-dists-bradford-skewness":"2PZ","@stdlib/stats/base/ndarray/cumin":"2Pa","@stdlib/stats-base-ndarray-cumin":"2Pb","@stdlib/stats/base/ndarray/dcumin":"2Pc","@stdlib/stats-base-ndarray-dcumin":"2Pd","@stdlib/stats/base/ndarray/dmin":"2Pe","@stdlib/stats-base-ndarray-dmin":"2Pf","@stdlib/stats/base/ndarray/drange":"2Pg","@stdlib/stats-base-ndarray-drange":"2Ph","@stdlib/stats/base/ndarray/dztest":"2Pi","@stdlib/stats-base-ndarray-dztest":"2Pj","@stdlib/stats/base/ndarray/min-by":"2Pk","@stdlib/stats-base-ndarray-min-by":"2Pl","@stdlib/stats/base/ndarray/min":"2Pm","@stdlib/stats-base-ndarray-min":"2Pn","@stdlib/stats/base/ndarray/range":"2Po","@stdlib/stats-base-ndarray-range":"2Pp","@stdlib/stats/base/ndarray/scumin":"2Pq","@stdlib/stats-base-ndarray-scumin":"2Pr","@stdlib/stats/base/ndarray/smin":"2Ps","@stdlib/stats-base-ndarray-smin":"2Pt","@stdlib/stats/base/ndarray/srange":"2Pu","@stdlib/stats-base-ndarray-srange":"2Pv","@stdlib/stats/base/ndarray/sztest":"2Pw","@stdlib/stats-base-ndarray-sztest":"2Px","@stdlib/stats/base/ndarray/ztest":"2Py","@stdlib/stats-base-ndarray-ztest":"2Pz","@stdlib/stats/base/ztest/two-sample/results/factory":"2Q0","@stdlib/stats-base-ztest-two-sample-results-factory":"2Q1","@stdlib/stats/base/ztest/two-sample/results/float32":"2Q2","@stdlib/stats-base-ztest-two-sample-results-float32":"2Q3","@stdlib/stats/base/ztest/two-sample/results/float64":"2Q4","@stdlib/stats-base-ztest-two-sample-results-float64":"2Q5","@stdlib/stats/base/ztest/two-sample/results/struct-factory":"2Q6","@stdlib/stats-base-ztest-two-sample-results-struct-factory":"2Q7","@stdlib/stats/base/ztest/two-sample/results/to-json":"2Q8","@stdlib/stats-base-ztest-two-sample-results-to-json":"2Q9","@stdlib/stats/base/ztest/two-sample/results/to-string":"2QA","@stdlib/stats-base-ztest-two-sample-results-to-string":"2QB","@stdlib/stats/incr/nanmsum":"2QC","@stdlib/stats-incr-nanmsum":"2QD","@stdlib/stats/strided/covarmtk":"2QE","@stdlib/stats-strided-covarmtk":"2QF","@stdlib/stats/strided/dcovarmtk":"2QG","@stdlib/stats-strided-dcovarmtk":"2QH","@stdlib/stats/strided/dcovmatmtk":"2QI","@stdlib/stats-strided-dcovmatmtk":"2QJ","@stdlib/stats/strided/dmeanstdev":"2QK","@stdlib/stats-strided-dmeanstdev":"2QL","@stdlib/stats/strided/dmeanstdevpn":"2QM","@stdlib/stats-strided-dmeanstdevpn":"2QN","@stdlib/stats/strided/dmeanvar":"2QO","@stdlib/stats-strided-dmeanvar":"2QP","@stdlib/stats/strided/dmeanvarpn":"2QQ","@stdlib/stats-strided-dmeanvarpn":"2QR","@stdlib/stats/strided/nanmean":"2QS","@stdlib/stats-strided-nanmean":"2QT","@stdlib/stats/strided/nanmeanors":"2QU","@stdlib/stats-strided-nanmeanors":"2QV","@stdlib/stats/strided/nanmeanpn":"2QW","@stdlib/stats-strided-nanmeanpn":"2QX","@stdlib/stats/strided/nanmeanwd":"2QY","@stdlib/stats-strided-nanmeanwd":"2QZ","@stdlib/stats/strided/nanmskmax":"2Qa","@stdlib/stats-strided-nanmskmax":"2Qb","@stdlib/stats/strided/nanmskmin":"2Qc","@stdlib/stats-strided-nanmskmin":"2Qd","@stdlib/stats/strided/nanmskrange":"2Qe","@stdlib/stats-strided-nanmskrange":"2Qf","@stdlib/stats/strided/nanrange-by":"2Qg","@stdlib/stats-strided-nanrange-by":"2Qh","@stdlib/stats/strided/nanrange":"2Qi","@stdlib/stats-strided-nanrange":"2Qj","@stdlib/stats/strided/nanvariance":"2Qk","@stdlib/stats-strided-nanvariance":"2Ql","@stdlib/stats/strided/nanvariancech":"2Qm","@stdlib/stats-strided-nanvariancech":"2Qn","@stdlib/stats/strided/nanvariancepn":"2Qo","@stdlib/stats-strided-nanvariancepn":"2Qp","@stdlib/stats/strided/nanvariancetk":"2Qq","@stdlib/stats-strided-nanvariancetk":"2Qr","@stdlib/stats/strided/nanvariancewd":"2Qs","@stdlib/stats-strided-nanvariancewd":"2Qt","@stdlib/stats/strided/nanvarianceyc":"2Qu","@stdlib/stats-strided-nanvarianceyc":"2Qv","@stdlib/stats/strided/range-by":"2Qw","@stdlib/stats-strided-range-by":"2Qx","@stdlib/stats/strided/range":"2Qy","@stdlib/stats-strided-range":"2Qz","@stdlib/stats/strided/scovarmtk":"2R0","@stdlib/stats-strided-scovarmtk":"2R1","@stdlib/stats/strided/smeankbn":"2R2","@stdlib/stats-strided-smeankbn":"2R3","@stdlib/stats/strided/smeankbn2":"2R4","@stdlib/stats-strided-smeankbn2":"2R5","@stdlib/stats/strided/smeanlipw":"2R6","@stdlib/stats-strided-smeanlipw":"2R7","@stdlib/stats/strided/smeanors":"2R8","@stdlib/stats-strided-smeanors":"2R9","@stdlib/stats/strided/stdev":"2RA","@stdlib/stats-strided-stdev":"2RB","@stdlib/stats/strided/stdevch":"2RC","@stdlib/stats-strided-stdevch":"2RD","@stdlib/stats/strided/stdevpn":"2RE","@stdlib/stats-strided-stdevpn":"2RF","@stdlib/stats/strided/stdevtk":"2RG","@stdlib/stats-strided-stdevtk":"2RH","@stdlib/stats/strided/stdevwd":"2RI","@stdlib/stats-strided-stdevwd":"2RJ","@stdlib/stats/strided/stdevyc":"2RK","@stdlib/stats-strided-stdevyc":"2RL","@stdlib/stats/strided/sztest2":"2RM","@stdlib/stats-strided-sztest2":"2RN","@stdlib/stats/strided/variance":"2RO","@stdlib/stats-strided-variance":"2RP","@stdlib/stats/strided/variancech":"2RQ","@stdlib/stats-strided-variancech":"2RR","@stdlib/stats/strided/variancepn":"2RS","@stdlib/stats-strided-variancepn":"2RT","@stdlib/stats/strided/variancetk":"2RU","@stdlib/stats-strided-variancetk":"2RV","@stdlib/stats/strided/variancewd":"2RW","@stdlib/stats-strided-variancewd":"2RX","@stdlib/stats/strided/varianceyc":"2RY","@stdlib/stats-strided-varianceyc":"2RZ","@stdlib/stats/strided/ztest2":"2Ra","@stdlib/stats-strided-ztest2":"2Rb","@stdlib/wasm/types":"2Rc","@stdlib/wasm-types":"2Rd","@stdlib/array/base/zip2object":"2Re","@stdlib/array-base-zip2object":"2Rf","@stdlib/assert/is-almost-equal-array":"2Rg","@stdlib/assert-is-almost-equal-array":"2Rh","@stdlib/assert/is-almost-equal-complex128array":"2Ri","@stdlib/assert-is-almost-equal-complex128array":"2Rj","@stdlib/assert/is-almost-equal-complex64array":"2Rk","@stdlib/assert-is-almost-equal-complex64array":"2Rl","@stdlib/assert/is-almost-equal-float32array":"2Rm","@stdlib/assert-is-almost-equal-float32array":"2Rn","@stdlib/blas/ext/index-of":"2Ro","@stdlib/blas-ext-index-of":"2Rp","@stdlib/math/base/special/cospif":"2Rq","@stdlib/math-base-special-cospif":"2Rr","@stdlib/math/base/special/cpolarf":"2Rs","@stdlib/math-base-special-cpolarf":"2Rt","@stdlib/math/base/special/kernel-sincos":"2Ru","@stdlib/math-base-special-kernel-sincos":"2Rv","@stdlib/math/base/special/sinpif":"2Rw","@stdlib/math-base-special-sinpif":"2Rx","@stdlib/object/assign-in":"2Ry","@stdlib/object-assign-in":"2Rz","@stdlib/stats/array/nanstdevpn":"2S0","@stdlib/stats-array-nanstdevpn":"2S1","@stdlib/stats/array/nanstdevtk":"2S2","@stdlib/stats-array-nanstdevtk":"2S3","@stdlib/stats/array/nanstdevwd":"2S4","@stdlib/stats-array-nanstdevwd":"2S5","@stdlib/stats/array/nanstdevyc":"2S6","@stdlib/stats-array-nanstdevyc":"2S7","@stdlib/stats/base/ndarray/dztest2":"2S8","@stdlib/stats-base-ndarray-dztest2":"2S9","@stdlib/stats/base/ndarray/sztest2":"2SA","@stdlib/stats-base-ndarray-sztest2":"2SB","@stdlib/stats/base/ndarray/ztest2":"2SC","@stdlib/stats-base-ndarray-ztest2":"2SD","@stdlib/stats/strided/dztest2":"2SE","@stdlib/stats-strided-dztest2":"2SF","@stdlib/stats/strided/nanstdev":"2SG","@stdlib/stats-strided-nanstdev":"2SH","@stdlib/stats/strided/nanstdevch":"2SI","@stdlib/stats-strided-nanstdevch":"2SJ","@stdlib/stats/strided/nanstdevpn":"2SK","@stdlib/stats-strided-nanstdevpn":"2SL","@stdlib/stats/strided/nanstdevtk":"2SM","@stdlib/stats-strided-nanstdevtk":"2SN","@stdlib/stats/strided/nanstdevwd":"2SO","@stdlib/stats-strided-nanstdevwd":"2SP","@stdlib/stats/strided/nanstdevyc":"2SQ","@stdlib/stats-strided-nanstdevyc":"2SR","@stdlib/array/base/entries2objects":"2SS","@stdlib/array-base-entries2objects":"2ST","@stdlib/array/base/entries2views":"2SU","@stdlib/array-base-entries2views":"2SV","@stdlib/array/base/group-values-on-key":"2SW","@stdlib/array-base-group-values-on-key":"2SX","@stdlib/array/base/nested2objects":"2SY","@stdlib/array-base-nested2objects":"2SZ","@stdlib/array/base/nested2views":"2Sa","@stdlib/array-base-nested2views":"2Sb","@stdlib/array/base/rekey-views":"2Sc","@stdlib/array-base-rekey-views":"2Sd","@stdlib/array/base/rekey":"2Se","@stdlib/array-base-rekey":"2Sf","@stdlib/array/base/zip":"2Sg","@stdlib/array-base-zip":"2Sh","@stdlib/array/base/zip2objects":"2Si","@stdlib/array-base-zip2objects":"2Sj","@stdlib/array/base/zip2views":"2Sk","@stdlib/array-base-zip2views":"2Sl","@stdlib/blas/base/ggemm":"2Sm","@stdlib/blas-base-ggemm":"2Sn","@stdlib/blas/base/ggemv":"2So","@stdlib/blas-base-ggemv":"2Sp","@stdlib/blas/base/gsyr":"2Sq","@stdlib/blas-base-gsyr":"2Sr","@stdlib/blas/base/ndarray/ddot":"2Ss","@stdlib/blas-base-ndarray-ddot":"2St","@stdlib/blas/base/ndarray/gdot":"2Su","@stdlib/blas-base-ndarray-gdot":"2Sv","@stdlib/blas/base/ndarray/sdot":"2Sw","@stdlib/blas-base-ndarray-sdot":"2Sx","@stdlib/blas/ext/base/gfind-index":"2Sy","@stdlib/blas-ext-base-gfind-index":"2Sz","@stdlib/blas/ext/base/gfind-last-index":"2T0","@stdlib/blas-ext-base-gfind-last-index":"2T1","@stdlib/blas/ext/base/ndarray/dsorthp":"2T2","@stdlib/blas-ext-base-ndarray-dsorthp":"2T3","@stdlib/blas/ext/base/ndarray/gfind-index":"2T4","@stdlib/blas-ext-base-ndarray-gfind-index":"2T5","@stdlib/blas/ext/base/ndarray/gfind-last-index":"2T6","@stdlib/blas-ext-base-ndarray-gfind-last-index":"2T7","@stdlib/blas/ext/base/ndarray/gsorthp":"2T8","@stdlib/blas-ext-base-ndarray-gsorthp":"2T9","@stdlib/blas/ext/base/ndarray/ssorthp":"2TA","@stdlib/blas-ext-base-ndarray-ssorthp":"2TB","@stdlib/blas/ext/find-index":"2TC","@stdlib/blas-ext-find-index":"2TD","@stdlib/blas/ext/find-last-index":"2TE","@stdlib/blas-ext-find-last-index":"2TF","@stdlib/lapack/base/dladiv":"2TG","@stdlib/lapack-base-dladiv":"2TH","@stdlib/math/base/assert/is-negative-integerf":"2TI","@stdlib/math-base-assert-is-negative-integerf":"2TJ","@stdlib/math/base/special/absgammalnf":"2TK","@stdlib/math-base-special-absgammalnf":"2TL","@stdlib/math/base/special/cosdf":"2TM","@stdlib/math-base-special-cosdf":"2TN","@stdlib/math/base/special/cotdf":"2TO","@stdlib/math-base-special-cotdf":"2TP","@stdlib/math/base/special/cotf":"2TQ","@stdlib/math-base-special-cotf":"2TR","@stdlib/math/base/special/cscdf":"2TS","@stdlib/math-base-special-cscdf":"2TT","@stdlib/math/base/special/factoriallnf":"2TU","@stdlib/math-base-special-factoriallnf":"2TV","@stdlib/math/base/special/kernel-sincosf":"2TW","@stdlib/math-base-special-kernel-sincosf":"2TX","@stdlib/math/base/special/secdf":"2TY","@stdlib/math-base-special-secdf":"2TZ","@stdlib/math/base/special/sincf":"2Ta","@stdlib/math-base-special-sincf":"2Tb","@stdlib/math/base/special/sincosf":"2Tc","@stdlib/math-base-special-sincosf":"2Td","@stdlib/math/base/special/sindf":"2Te","@stdlib/math-base-special-sindf":"2Tf","@stdlib/math/base/special/tandf":"2Tg","@stdlib/math-base-special-tandf":"2Th","@stdlib/math/base/special/trigammaf":"2Ti","@stdlib/math-base-special-trigammaf":"2Tj","@stdlib/ndarray/base/binary-reduce-strided1d":"2Tk","@stdlib/ndarray-base-binary-reduce-strided1d":"2Tl","@stdlib/ndarray/base/from-array":"2Tm","@stdlib/ndarray-base-from-array":"2Tn","@stdlib/ndarray/base/zip2views1d":"2To","@stdlib/ndarray-base-zip2views1d":"2Tp","@stdlib/net/http2-secure-server":"2Tq","@stdlib/net-http2-secure-server":"2Tr","@stdlib/number/int16/base/identity":"2Ts","@stdlib/number-int16-base-identity":"2Tt","@stdlib/number/int32/base/identity":"2Tu","@stdlib/number-int32-base-identity":"2Tv","@stdlib/number/int8/base/identity":"2Tw","@stdlib/number-int8-base-identity":"2Tx","@stdlib/number/uint16/base/identity":"2Ty","@stdlib/number-uint16-base-identity":"2Tz","@stdlib/number/uint32/base/identity":"2U0","@stdlib/number-uint32-base-identity":"2U1","@stdlib/number/uint8/base/identity":"2U2","@stdlib/number-uint8-base-identity":"2U3","@stdlib/stats/base/dists/bradford":"2U4","@stdlib/stats-base-dists-bradford":"2U5","@stdlib/stats/base/dists/planck":"2U6","@stdlib/stats-base-dists-planck":"2U7","@stdlib/stats/base/ndarray/covarmtk":"2U8","@stdlib/stats-base-ndarray-covarmtk":"2U9","@stdlib/stats/base/ndarray/dcovarmtk":"2UA","@stdlib/stats-base-ndarray-dcovarmtk":"2UB","@stdlib/stats/base/ndarray/dmaxabs":"2UC","@stdlib/stats-base-ndarray-dmaxabs":"2UD","@stdlib/stats/base/ndarray/dmean":"2UE","@stdlib/stats-base-ndarray-dmean":"2UF","@stdlib/stats/base/ndarray/dminabs":"2UG","@stdlib/stats-base-ndarray-dminabs":"2UH","@stdlib/stats/base/ndarray/dnanmax":"2UI","@stdlib/stats-base-ndarray-dnanmax":"2UJ","@stdlib/stats/base/ndarray/dnanmin":"2UK","@stdlib/stats-base-ndarray-dnanmin":"2UL","@stdlib/stats/base/ndarray/maxabs":"2UM","@stdlib/stats-base-ndarray-maxabs":"2UN","@stdlib/stats/base/ndarray/mean":"2UO","@stdlib/stats-base-ndarray-mean":"2UP","@stdlib/stats/base/ndarray/minabs":"2UQ","@stdlib/stats-base-ndarray-minabs":"2UR","@stdlib/stats/base/ndarray/nanmax":"2US","@stdlib/stats-base-ndarray-nanmax":"2UT","@stdlib/stats/base/ndarray/nanmin":"2UU","@stdlib/stats-base-ndarray-nanmin":"2UV","@stdlib/stats/base/ndarray/scovarmtk":"2UW","@stdlib/stats-base-ndarray-scovarmtk":"2UX","@stdlib/stats/base/ndarray/smaxabs":"2UY","@stdlib/stats-base-ndarray-smaxabs":"2UZ","@stdlib/stats/base/ndarray/smean":"2Ua","@stdlib/stats-base-ndarray-smean":"2Ub","@stdlib/stats/base/ndarray/sminabs":"2Uc","@stdlib/stats-base-ndarray-sminabs":"2Ud","@stdlib/stats/base/ndarray/snanmax":"2Ue","@stdlib/stats-base-ndarray-snanmax":"2Uf","@stdlib/stats/base/ndarray/snanmin":"2Ug","@stdlib/stats-base-ndarray-snanmin":"2Uh","@stdlib/stats/cumin":"2Ui","@stdlib/stats-cumin":"2Uj","@stdlib/stats/maxabs":"2Uk","@stdlib/stats-maxabs":"2Ul","@stdlib/stats/mean":"2Um","@stdlib/stats-mean":"2Un","@stdlib/stats/min-by":"2Uo","@stdlib/stats-min-by":"2Up","@stdlib/stats/min":"2Uq","@stdlib/stats-min":"2Ur","@stdlib/stats/minabs":"2Us","@stdlib/stats-minabs":"2Ut","@stdlib/stats/nanmax":"2Uu","@stdlib/stats-nanmax":"2Uv","@stdlib/stats/nanmin":"2Uw","@stdlib/stats-nanmin":"2Ux","@stdlib/stats/range":"2Uy","@stdlib/stats-range":"2Uz","@stdlib/lapack/base/dlarf1f":"2V0","@stdlib/lapack-base-dlarf1f":"2V1","@stdlib/math/base/special/fast/absf":"2V2","@stdlib/math-base-special-fast-absf":"2V3","@stdlib/ndarray/base/any":"2V4","@stdlib/ndarray-base-any":"2V5","@stdlib/ndarray/base/nullary-strided1d":"2V6","@stdlib/ndarray-base-nullary-strided1d":"2V7","@stdlib/ndarray/with":"2V8","@stdlib/ndarray-with":"2V9","@stdlib/stats/base/ndarray/dnanmean":"2VA","@stdlib/stats-base-ndarray-dnanmean":"2VB","@stdlib/stats/base/ndarray/nanmean":"2VC","@stdlib/stats-base-ndarray-nanmean":"2VD","@stdlib/stats/base/ndarray/snanmean":"2VE","@stdlib/stats-base-ndarray-snanmean":"2VF","@stdlib/stats/nanmean":"2VG","@stdlib/stats-nanmean":"2VH","@stdlib/blas/base/wasm/zscal":"2VI","@stdlib/blas-base-wasm-zscal":"2VJ","@stdlib/blas/ext/last-index-of":"2VK","@stdlib/blas-ext-last-index-of":"2VL","@stdlib/complex/float32/base/mul-add":"2VM","@stdlib/complex-float32-base-mul-add":"2VN","@stdlib/math/base/special/fast/hypotf":"2VO","@stdlib/math-base-special-fast-hypotf":"2VP","@stdlib/ndarray/base/any-by":"2VQ","@stdlib/ndarray-base-any-by":"2VR","@stdlib/ndarray/base/binary-input-casting-dtype":"2VS","@stdlib/ndarray-base-binary-input-casting-dtype":"2VT","@stdlib/ndarray/base/binary-reduce-strided1d-dispatch-factory":"2VU","@stdlib/ndarray-base-binary-reduce-strided1d-dispatch-factory":"2VV","@stdlib/ndarray/base/binary-reduce-strided1d-dispatch":"2VW","@stdlib/ndarray-base-binary-reduce-strided1d-dispatch":"2VX","@stdlib/ndarray/base/broadcast-array-except-dimensions":"2VY","@stdlib/ndarray-base-broadcast-array-except-dimensions":"2VZ","@stdlib/ndarray/base/find":"2Va","@stdlib/ndarray-base-find":"2Vb","@stdlib/ndarray/base/flatten-shape":"2Vc","@stdlib/ndarray-base-flatten-shape":"2Vd","@stdlib/ndarray/base/nullary-strided1d-dispatch":"2Ve","@stdlib/ndarray-base-nullary-strided1d-dispatch":"2Vf","@stdlib/ndarray/base/unary-addon-dispatch":"2Vg","@stdlib/ndarray-base-unary-addon-dispatch":"2Vh","@stdlib/ndarray/fill-slice":"2Vi","@stdlib/ndarray-fill-slice":"2Vj","@stdlib/ndarray/flatten":"2Vk","@stdlib/ndarray-flatten":"2Vl","@stdlib/stats/base/ndarray/dmaxsorted":"2Vm","@stdlib/stats-base-ndarray-dmaxsorted":"2Vn","@stdlib/stats/base/ndarray/maxsorted":"2Vo","@stdlib/stats-base-ndarray-maxsorted":"2Vp","@stdlib/stats/base/ndarray/smaxsorted":"2Vq","@stdlib/stats-base-ndarray-smaxsorted":"2Vr","@stdlib/stats/strided/sdsnanmeanors":"2Vs","@stdlib/stats-strided-sdsnanmeanors":"2Vt","@stdlib/stats/strided/snanmean":"2Vu","@stdlib/stats-strided-snanmean":"2Vv","@stdlib/stats/strided/sstdevwd":"2Vw","@stdlib/stats-strided-sstdevwd":"2Vx","@stdlib/array/base/insert-at":"2Vy","@stdlib/array-base-insert-at":"2Vz","@stdlib/array/base/to-inserted-at":"2W0","@stdlib/array-base-to-inserted-at":"2W1","@stdlib/blas/ext/base/gindex-of-row":"2W2","@stdlib/blas-ext-base-gindex-of-row":"2W3","@stdlib/math/base/special/fast/maxf":"2W4","@stdlib/math-base-special-fast-maxf":"2W5","@stdlib/ndarray/base/assert/is-data-type-object":"2W6","@stdlib/ndarray-base-assert-is-data-type-object":"2W7","@stdlib/ndarray/base/assert/is-equal-data-type":"2W8","@stdlib/ndarray-base-assert-is-equal-data-type":"2W9","@stdlib/ndarray/base/dtype-alignment":"2WA","@stdlib/ndarray-base-dtype-alignment":"2WB","@stdlib/ndarray/base/dtypes2enums":"2WC","@stdlib/ndarray-base-dtypes2enums":"2WD","@stdlib/ndarray/base/nullary-strided1d-dispatch-factory":"2WE","@stdlib/ndarray-base-nullary-strided1d-dispatch-factory":"2WF","@stdlib/ndarray/dtype-ctor":"2WG","@stdlib/ndarray-dtype-ctor":"2WH","@stdlib/ndarray/flatten-by":"2WI","@stdlib/ndarray-flatten-by":"2WJ","@stdlib/stats/strided/wasm/dnanvariancewd":"2WK","@stdlib/stats-strided-wasm-dnanvariancewd":"2WL","@stdlib/blas/ext/sorthp":"2WM","@stdlib/blas-ext-sorthp":"2WN","@stdlib/math/base/special/fast/minf":"2WO","@stdlib/math-base-special-fast-minf":"2WP","@stdlib/ndarray/any-by":"2WQ","@stdlib/ndarray-any-by":"2WR","@stdlib/ndarray/any":"2WS","@stdlib/ndarray-any":"2WT","@stdlib/ndarray/base/dtype-enums":"2WU","@stdlib/ndarray-base-dtype-enums":"2WV","@stdlib/ndarray/base/dtype-objects":"2WW","@stdlib/ndarray-base-dtype-objects":"2WX","@stdlib/ndarray/base/dtype-strings":"2WY","@stdlib/ndarray-base-dtype-strings":"2WZ","@stdlib/ndarray/base/pop":"2Wa","@stdlib/ndarray-base-pop":"2Wb","@stdlib/ndarray/base/shift":"2Wc","@stdlib/ndarray-base-shift":"2Wd","@stdlib/stats/incr/nangmean":"2We","@stdlib/stats-incr-nangmean":"2Wf","@stdlib/stats/incr/nanhmean":"2Wg","@stdlib/stats-incr-nanhmean":"2Wh","@stdlib/stats/incr/nanmin":"2Wi","@stdlib/stats-incr-nanmin":"2Wj","@stdlib/assert/has-is-concat-spreadable-symbol-support":"2Wk","@stdlib/assert-has-is-concat-spreadable-symbol-support":"2Wl","@stdlib/blas/ext/to-sortedhp":"2Wm","@stdlib/blas-ext-to-sortedhp":"2Wn","@stdlib/ndarray/base/assert/is-complex-floating-point-data-type-char":"2Wo","@stdlib/ndarray-base-assert-is-complex-floating-point-data-type-char":"2Wp","@stdlib/ndarray/base/copy":"2Wq","@stdlib/ndarray-base-copy":"2Wr","@stdlib/ndarray/base/dtype-chars":"2Ws","@stdlib/ndarray-base-dtype-chars":"2Wt","@stdlib/ndarray/base/flatten-shape-from":"2Wu","@stdlib/ndarray-base-flatten-shape-from":"2Wv","@stdlib/ndarray/base/some":"2Ww","@stdlib/ndarray-base-some":"2Wx","@stdlib/ndarray/concat":"2Wy","@stdlib/ndarray-concat":"2Wz","@stdlib/ndarray/find":"2X0","@stdlib/ndarray-find":"2X1","@stdlib/ndarray/flatten-from":"2X2","@stdlib/ndarray-flatten-from":"2X3","@stdlib/ndarray/pop":"2X4","@stdlib/ndarray-pop":"2X5","@stdlib/ndarray/reverse-dimension":"2X6","@stdlib/ndarray-reverse-dimension":"2X7","@stdlib/ndarray/reverse":"2X8","@stdlib/ndarray-reverse":"2X9","@stdlib/ndarray/shift":"2XA","@stdlib/ndarray-shift":"2XB","@stdlib/ndarray/to-reversed":"2XC","@stdlib/ndarray-to-reversed":"2XD","@stdlib/stats/base/ndarray/meankbn":"2XE","@stdlib/stats-base-ndarray-meankbn":"2XF","@stdlib/stats/base/ndarray/meankbn2":"2XG","@stdlib/stats-base-ndarray-meankbn2":"2XH","@stdlib/stats/base/ndarray/meanors":"2XI","@stdlib/stats-base-ndarray-meanors":"2XJ","@stdlib/stats/base/ndarray/meanpn":"2XK","@stdlib/stats-base-ndarray-meanpn":"2XL","@stdlib/stats/base/ndarray/meanpw":"2XM","@stdlib/stats-base-ndarray-meanpw":"2XN","@stdlib/stats/base/ndarray/meanwd":"2XO","@stdlib/stats-base-ndarray-meanwd":"2XP","@stdlib/stats/base/ndarray/mediansorted":"2XQ","@stdlib/stats-base-ndarray-mediansorted":"2XR","@stdlib/stats/base/ndarray/minsorted":"2XS","@stdlib/stats-base-ndarray-minsorted":"2XT","@stdlib/stats/base/ndarray/mskmax":"2XU","@stdlib/stats-base-ndarray-mskmax":"2XV","@stdlib/symbol/is-concat-spreadable":"2XW","@stdlib/symbol-is-concat-spreadable":"2XX","@stdlib/assert/has-has-instance-symbol-support":"2XY","@stdlib/assert-has-has-instance-symbol-support":"2XZ","@stdlib/assert/has-match-symbol-support":"2Xa","@stdlib/assert-has-match-symbol-support":"2Xb","@stdlib/assert/has-replace-symbol-support":"2Xc","@stdlib/assert-has-replace-symbol-support":"2Xd","@stdlib/assert/has-search-symbol-support":"2Xe","@stdlib/assert-has-search-symbol-support":"2Xf","@stdlib/assert/has-split-symbol-support":"2Xg","@stdlib/assert-has-split-symbol-support":"2Xh","@stdlib/assert/has-to-primitive-symbol-support":"2Xi","@stdlib/assert-has-to-primitive-symbol-support":"2Xj","@stdlib/blas/ext/base/dlinspace":"2Xk","@stdlib/blas-ext-base-dlinspace":"2Xl","@stdlib/blas/ext/base/glinspace":"2Xm","@stdlib/blas-ext-base-glinspace":"2Xn","@stdlib/blas/ext/base/ndarray/dlinspace":"2Xo","@stdlib/blas-ext-base-ndarray-dlinspace":"2Xp","@stdlib/blas/ext/base/ndarray/glinspace":"2Xq","@stdlib/blas-ext-base-ndarray-glinspace":"2Xr","@stdlib/blas/ext/base/ndarray/slinspace":"2Xs","@stdlib/blas-ext-base-ndarray-slinspace":"2Xt","@stdlib/blas/ext/base/slinspace":"2Xu","@stdlib/blas-ext-base-slinspace":"2Xv","@stdlib/ndarray/base/complement-shape":"2Xw","@stdlib/ndarray-base-complement-shape":"2Xx","@stdlib/ndarray/copy":"2Xy","@stdlib/ndarray-copy":"2Xz","@stdlib/stats/base/ndarray/dmeankbn":"2Y0","@stdlib/stats-base-ndarray-dmeankbn":"2Y1","@stdlib/stats/base/ndarray/dmeankbn2":"2Y2","@stdlib/stats-base-ndarray-dmeankbn2":"2Y3","@stdlib/stats/base/ndarray/dmeanli":"2Y4","@stdlib/stats-base-ndarray-dmeanli":"2Y5","@stdlib/stats/base/ndarray/dmeanlipw":"2Y6","@stdlib/stats-base-ndarray-dmeanlipw":"2Y7","@stdlib/stats/base/ndarray/dminsorted":"2Y8","@stdlib/stats-base-ndarray-dminsorted":"2Y9","@stdlib/stats/base/ndarray/mskmin":"2YA","@stdlib/stats-base-ndarray-mskmin":"2YB","@stdlib/stats/base/ndarray/range-by":"2YC","@stdlib/stats-base-ndarray-range-by":"2YD","@stdlib/stats/base/ndarray/smaxabssorted":"2YE","@stdlib/stats-base-ndarray-smaxabssorted":"2YF","@stdlib/stats/base/ndarray/sminsorted":"2YG","@stdlib/stats-base-ndarray-sminsorted":"2YH","@stdlib/stats/base/ndarray/snanmaxabs":"2YI","@stdlib/stats-base-ndarray-snanmaxabs":"2YJ","@stdlib/stats/base/ndarray/snanminabs":"2YK","@stdlib/stats-base-ndarray-snanminabs":"2YL","@stdlib/symbol/has-instance":"2YM","@stdlib/symbol-has-instance":"2YN","@stdlib/symbol/to-primitive":"2YO","@stdlib/symbol-to-primitive":"2YP","@stdlib/blas/ext/base/drrss":"2YQ","@stdlib/blas-ext-base-drrss":"2YR","@stdlib/blas/ext/linspace":"2YS","@stdlib/blas-ext-linspace":"2YT","@stdlib/ndarray/some":"2YU","@stdlib/ndarray-some":"2YV","@stdlib/number/float64/base/to-float16":"2YW","@stdlib/number-float64-base-to-float16":"2YX","@stdlib/number/int16/base":"2YY","@stdlib/number-int16-base":"2YZ","@stdlib/number/int8/base":"2Ya","@stdlib/number-int8-base":"2Yb","@stdlib/stats/base/ndarray/dnanmaxabs":"2Yc","@stdlib/stats-base-ndarray-dnanmaxabs":"2Yd","@stdlib/stats/base/ndarray/dnanminabs":"2Ye","@stdlib/stats-base-ndarray-dnanminabs":"2Yf","@stdlib/stats/base/ndarray/nanmaxabs":"2Yg","@stdlib/stats-base-ndarray-nanmaxabs":"2Yh","@stdlib/stats/base/ndarray/nanminabs":"2Yi","@stdlib/stats-base-ndarray-nanminabs":"2Yj","@stdlib/stats/base/ndarray/scumaxabs":"2Yk","@stdlib/stats-base-ndarray-scumaxabs":"2Yl","@stdlib/stats/base/ndarray/scuminabs":"2Ym","@stdlib/stats-base-ndarray-scuminabs":"2Yn","@stdlib/stats/incr/nanmcv":"2Yo","@stdlib/stats-incr-nanmcv":"2Yp","@stdlib/stats/strided/wasm/dmeanpw":"2Yq","@stdlib/stats-strided-wasm-dmeanpw":"2Yr","@stdlib/string/base/concat":"2Ys","@stdlib/string-base-concat":"2Yt","@stdlib/symbol/replace":"2Yu","@stdlib/symbol-replace":"2Yv","@stdlib/blas/ext/base/gjoin":"2Yw","@stdlib/blas-ext-base-gjoin":"2Yx","@stdlib/blas/ext/base/ndarray/csumkbn":"2Yy","@stdlib/blas-ext-base-ndarray-csumkbn":"2Yz","@stdlib/blas/ext/base/ndarray/dcusumkbn":"2Z0","@stdlib/blas-ext-base-ndarray-dcusumkbn":"2Z1","@stdlib/blas/ext/base/ndarray/dcusumkbn2":"2Z2","@stdlib/blas-ext-base-ndarray-dcusumkbn2":"2Z3","@stdlib/blas/ext/base/ndarray/dsumkbn":"2Z4","@stdlib/blas-ext-base-ndarray-dsumkbn":"2Z5","@stdlib/blas/ext/base/ndarray/dsumkbn2":"2Z6","@stdlib/blas-ext-base-ndarray-dsumkbn2":"2Z7","@stdlib/blas/ext/base/ndarray/gjoin":"2Z8","@stdlib/blas-ext-base-ndarray-gjoin":"2Z9","@stdlib/blas/ext/base/ndarray/gsumkbn":"2ZA","@stdlib/blas-ext-base-ndarray-gsumkbn":"2ZB","@stdlib/blas/ext/base/ndarray/gsumkbn2":"2ZC","@stdlib/blas-ext-base-ndarray-gsumkbn2":"2ZD","@stdlib/blas/ext/base/ndarray/scusumkbn":"2ZE","@stdlib/blas-ext-base-ndarray-scusumkbn":"2ZF","@stdlib/blas/ext/base/ndarray/scusumkbn2":"2ZG","@stdlib/blas-ext-base-ndarray-scusumkbn2":"2ZH","@stdlib/blas/ext/base/ndarray/ssumkbn":"2ZI","@stdlib/blas-ext-base-ndarray-ssumkbn":"2ZJ","@stdlib/blas/ext/base/ndarray/ssumkbn2":"2ZK","@stdlib/blas-ext-base-ndarray-ssumkbn2":"2ZL","@stdlib/blas/ext/base/ndarray/zsumkbn":"2ZM","@stdlib/blas-ext-base-ndarray-zsumkbn":"2ZN","@stdlib/constants/float16/apery":"2ZO","@stdlib/constants-float16-apery":"2ZP","@stdlib/constants/float16/catalan":"2ZQ","@stdlib/constants-float16-catalan":"2ZR","@stdlib/constants/float16/e":"2ZS","@stdlib/constants-float16-e":"2ZT","@stdlib/constants/float16/eulergamma":"2ZU","@stdlib/constants-float16-eulergamma":"2ZV","@stdlib/constants/float16/exponent-mask":"2ZW","@stdlib/constants-float16-exponent-mask":"2ZX","@stdlib/constants/float16/fourth-pi":"2ZY","@stdlib/constants-float16-fourth-pi":"2ZZ","@stdlib/constants/float16/half-pi":"2Za","@stdlib/constants-float16-half-pi":"2Zb","@stdlib/constants/float16/max-base2-exponent":"2Zc","@stdlib/constants-float16-max-base2-exponent":"2Zd","@stdlib/constants/float16/max-ln":"2Ze","@stdlib/constants-float16-max-ln":"2Zf","@stdlib/constants/float16/min-base2-exponent":"2Zg","@stdlib/constants-float16-min-base2-exponent":"2Zh","@stdlib/constants/float16/min-ln":"2Zi","@stdlib/constants-float16-min-ln":"2Zj","@stdlib/constants/float16/num-exponent-bits":"2Zk","@stdlib/constants-float16-num-exponent-bits":"2Zl","@stdlib/constants/float16/num-significand-bits":"2Zm","@stdlib/constants-float16-num-significand-bits":"2Zn","@stdlib/constants/float16/phi":"2Zo","@stdlib/constants-float16-phi":"2Zp","@stdlib/constants/float16/pi-squared":"2Zq","@stdlib/constants-float16-pi-squared":"2Zr","@stdlib/constants/float16/pi":"2Zs","@stdlib/constants-float16-pi":"2Zt","@stdlib/constants/float16/sign-mask":"2Zu","@stdlib/constants-float16-sign-mask":"2Zv","@stdlib/constants/float16/significand-mask":"2Zw","@stdlib/constants-float16-significand-mask":"2Zx","@stdlib/constants/float16/sqrt-two":"2Zy","@stdlib/constants-float16-sqrt-two":"2Zz","@stdlib/constants/float16/two-pi":"2a0","@stdlib/constants-float16-two-pi":"2a1","@stdlib/constants/float32/glaisher-kinkelin":"2a2","@stdlib/constants-float32-glaisher-kinkelin":"2a3","@stdlib/math/base/special/log1pf":"2a4","@stdlib/math-base-special-log1pf":"2a5","@stdlib/math/base/special/powf":"2a6","@stdlib/math-base-special-powf":"2a7","@stdlib/ndarray/base/to-flippedlr":"2a8","@stdlib/ndarray-base-to-flippedlr":"2a9","@stdlib/ndarray/base/to-flippedud":"2aA","@stdlib/ndarray-base-to-flippedud":"2aB","@stdlib/ndarray/concat1d":"2aC","@stdlib/ndarray-concat1d":"2aD","@stdlib/ndarray/fliplr":"2aE","@stdlib/ndarray-fliplr":"2aF","@stdlib/ndarray/flipud":"2aG","@stdlib/ndarray-flipud":"2aH","@stdlib/number/float16/base/exponent":"2aI","@stdlib/number-float16-base-exponent":"2aJ","@stdlib/number/float16/base/from-word":"2aK","@stdlib/number-float16-base-from-word":"2aL","@stdlib/number/float16/base/to-binary-string":"2aM","@stdlib/number-float16-base-to-binary-string":"2aN","@stdlib/number/float16/base/to-word":"2aO","@stdlib/number-float16-base-to-word":"2aP","@stdlib/object/any-in-by":"2aQ","@stdlib/object-any-in-by":"2aR","@stdlib/object/any-own-by":"2aS","@stdlib/object-any-own-by":"2aT","@stdlib/object/move-property":"2aU","@stdlib/object-move-property":"2aV","@stdlib/object/none-own-by":"2aW","@stdlib/object-none-own-by":"2aX","@stdlib/object/some-own-by":"2aY","@stdlib/object-some-own-by":"2aZ","@stdlib/stats/base/ndarray/dcumaxabs":"2aa","@stdlib/stats-base-ndarray-dcumaxabs":"2ab","@stdlib/stats/base/ndarray/dcuminabs":"2ac","@stdlib/stats-base-ndarray-dcuminabs":"2ad","@stdlib/stats/base/ndarray/dmaxabssorted":"2ae","@stdlib/stats-base-ndarray-dmaxabssorted":"2af","@stdlib/stats/base/ndarray/dmeanors":"2ag","@stdlib/stats-base-ndarray-dmeanors":"2ah","@stdlib/stats/base/ndarray/dmeanpn":"2ai","@stdlib/stats-base-ndarray-dmeanpn":"2aj","@stdlib/stats/base/ndarray/dmeanpw":"2ak","@stdlib/stats-base-ndarray-dmeanpw":"2al","@stdlib/stats/base/ndarray/dmeanwd":"2am","@stdlib/stats-base-ndarray-dmeanwd":"2an","@stdlib/stats/base/ndarray/dmediansorted":"2ao","@stdlib/stats-base-ndarray-dmediansorted":"2ap","@stdlib/stats/base/ndarray/dmidrange":"2aq","@stdlib/stats-base-ndarray-dmidrange":"2ar","@stdlib/stats/base/ndarray/dmskmax":"2as","@stdlib/stats-base-ndarray-dmskmax":"2at","@stdlib/stats/base/ndarray/dmskmin":"2au","@stdlib/stats-base-ndarray-dmskmin":"2av","@stdlib/stats/base/ndarray/dmskrange":"2aw","@stdlib/stats-base-ndarray-dmskrange":"2ax","@stdlib/stats/base/ndarray/dnanmeanors":"2ay","@stdlib/stats-base-ndarray-dnanmeanors":"2az","@stdlib/stats/base/ndarray/dnanmeanpn":"2b0","@stdlib/stats-base-ndarray-dnanmeanpn":"2b1","@stdlib/stats/base/ndarray/dnanmeanpw":"2b2","@stdlib/stats-base-ndarray-dnanmeanpw":"2b3","@stdlib/stats/base/ndarray/dnanmeanwd":"2b4","@stdlib/stats-base-ndarray-dnanmeanwd":"2b5","@stdlib/stats/base/ndarray/dnanmskmax":"2b6","@stdlib/stats-base-ndarray-dnanmskmax":"2b7","@stdlib/stats/base/ndarray/dnanmskmin":"2b8","@stdlib/stats-base-ndarray-dnanmskmin":"2b9","@stdlib/stats/base/ndarray/dnanmskrange":"2bA","@stdlib/stats-base-ndarray-dnanmskrange":"2bB","@stdlib/stats/base/ndarray/mskrange":"2bC","@stdlib/stats-base-ndarray-mskrange":"2bD","@stdlib/stats/base/ndarray/nanmax-by":"2bE","@stdlib/stats-base-ndarray-nanmax-by":"2bF","@stdlib/stats/base/ndarray/nanmeanors":"2bG","@stdlib/stats-base-ndarray-nanmeanors":"2bH","@stdlib/stats/base/ndarray/nanmeanpn":"2bI","@stdlib/stats-base-ndarray-nanmeanpn":"2bJ","@stdlib/stats/base/ndarray/nanmeanwd":"2bK","@stdlib/stats-base-ndarray-nanmeanwd":"2bL","@stdlib/stats/base/ndarray/nanmin-by":"2bM","@stdlib/stats-base-ndarray-nanmin-by":"2bN","@stdlib/stats/base/ndarray/nanmskmax":"2bO","@stdlib/stats-base-ndarray-nanmskmax":"2bP","@stdlib/stats/base/ndarray/nanmskmin":"2bQ","@stdlib/stats-base-ndarray-nanmskmin":"2bR","@stdlib/stats/base/ndarray/nanmskrange":"2bS","@stdlib/stats-base-ndarray-nanmskrange":"2bT","@stdlib/stats/base/ndarray/nanrange-by":"2bU","@stdlib/stats-base-ndarray-nanrange-by":"2bV","@stdlib/stats/base/ndarray/nanrange":"2bW","@stdlib/stats-base-ndarray-nanrange":"2bX","@stdlib/stats/base/ndarray/sdsmean":"2bY","@stdlib/stats-base-ndarray-sdsmean":"2bZ","@stdlib/stats/base/ndarray/sdsmeanors":"2ba","@stdlib/stats-base-ndarray-sdsmeanors":"2bb","@stdlib/stats/base/ndarray/sdsnanmeanors":"2bc","@stdlib/stats-base-ndarray-sdsnanmeanors":"2bd","@stdlib/stats/base/ndarray/smeankbn":"2be","@stdlib/stats-base-ndarray-smeankbn":"2bf","@stdlib/stats/base/ndarray/smeankbn2":"2bg","@stdlib/stats-base-ndarray-smeankbn2":"2bh","@stdlib/stats/base/ndarray/smeanli":"2bi","@stdlib/stats-base-ndarray-smeanli":"2bj","@stdlib/stats/base/ndarray/smeanlipw":"2bk","@stdlib/stats-base-ndarray-smeanlipw":"2bl","@stdlib/stats/base/ndarray/smeanors":"2bm","@stdlib/stats-base-ndarray-smeanors":"2bn","@stdlib/stats/base/ndarray/smeanpn":"2bo","@stdlib/stats-base-ndarray-smeanpn":"2bp","@stdlib/stats/base/ndarray/smeanpw":"2bq","@stdlib/stats-base-ndarray-smeanpw":"2br","@stdlib/stats/base/ndarray/smeanwd":"2bs","@stdlib/stats-base-ndarray-smeanwd":"2bt","@stdlib/stats/base/ndarray/smediansorted":"2bu","@stdlib/stats-base-ndarray-smediansorted":"2bv","@stdlib/stats/base/ndarray/smidrange":"2bw","@stdlib/stats-base-ndarray-smidrange":"2bx","@stdlib/stats/base/ndarray/smskmax":"2by","@stdlib/stats-base-ndarray-smskmax":"2bz","@stdlib/stats/base/ndarray/smskmin":"2c0","@stdlib/stats-base-ndarray-smskmin":"2c1","@stdlib/stats/base/ndarray/smskrange":"2c2","@stdlib/stats-base-ndarray-smskrange":"2c3","@stdlib/stats/base/ndarray/snanmeanors":"2c4","@stdlib/stats-base-ndarray-snanmeanors":"2c5","@stdlib/stats/base/ndarray/snanmeanpn":"2c6","@stdlib/stats-base-ndarray-snanmeanpn":"2c7","@stdlib/stats/base/ndarray/snanmeanwd":"2c8","@stdlib/stats-base-ndarray-snanmeanwd":"2c9","@stdlib/stats/base/ndarray/snanmskmax":"2cA","@stdlib/stats-base-ndarray-snanmskmax":"2cB","@stdlib/stats/base/ndarray/snanmskmin":"2cC","@stdlib/stats-base-ndarray-snanmskmin":"2cD","@stdlib/stats/base/ndarray/snanmskrange":"2cE","@stdlib/stats-base-ndarray-snanmskrange":"2cF","@stdlib/stats/maxsorted":"2cG","@stdlib/stats-maxsorted":"2cH","@stdlib/stats/meankbn":"2cI","@stdlib/stats-meankbn":"2cJ","@stdlib/stats/meankbn2":"2cK","@stdlib/stats-meankbn2":"2cL","@stdlib/stats/meanors":"2cM","@stdlib/stats-meanors":"2cN","@stdlib/stats/meanpn":"2cO","@stdlib/stats-meanpn":"2cP","@stdlib/stats/meanpw":"2cQ","@stdlib/stats-meanpw":"2cR","@stdlib/stats/meanwd":"2cS","@stdlib/stats-meanwd":"2cT","@stdlib/stats/mediansorted":"2cU","@stdlib/stats-mediansorted":"2cV","@stdlib/stats/minsorted":"2cW","@stdlib/stats-minsorted":"2cX","@stdlib/stats/nanmax-by":"2cY","@stdlib/stats-nanmax-by":"2cZ","@stdlib/stats/nanmaxabs":"2ca","@stdlib/stats-nanmaxabs":"2cb","@stdlib/stats/nanmeanors":"2cc","@stdlib/stats-nanmeanors":"2cd","@stdlib/stats/nanmeanpn":"2ce","@stdlib/stats-nanmeanpn":"2cf","@stdlib/stats/nanmeanwd":"2cg","@stdlib/stats-nanmeanwd":"2ch","@stdlib/stats/nanmin-by":"2ci","@stdlib/stats-nanmin-by":"2cj","@stdlib/stats/nanminabs":"2ck","@stdlib/stats-nanminabs":"2cl","@stdlib/stats/range-by":"2cm","@stdlib/stats-range-by":"2cn","@stdlib/array/base/assert/has-almost-same-values":"2co","@stdlib/array-base-assert-has-almost-same-values":"2cp","@stdlib/array/base/falses":"2cq","@stdlib/array-base-falses":"2cr","@stdlib/array/base/to-filled":"2cs","@stdlib/array-base-to-filled":"2ct","@stdlib/array/base/trues":"2cu","@stdlib/array-base-trues":"2cv","@stdlib/array/float16":"2cw","@stdlib/array-float16":"2cx","@stdlib/array/nulls":"2cy","@stdlib/array-nulls":"2cz","@stdlib/assert/is-almost-same-array":"2d0","@stdlib/assert-is-almost-same-array":"2d1","@stdlib/assert/is-almost-same-complex128array":"2d2","@stdlib/assert-is-almost-same-complex128array":"2d3","@stdlib/assert/is-almost-same-complex64array":"2d4","@stdlib/assert-is-almost-same-complex64array":"2d5","@stdlib/assert/is-almost-same-float32array":"2d6","@stdlib/assert-is-almost-same-float32array":"2d7","@stdlib/assert/is-almost-same-float64array":"2d8","@stdlib/assert-is-almost-same-float64array":"2d9","@stdlib/assert/is-almost-same-value":"2dA","@stdlib/assert-is-almost-same-value":"2dB","@stdlib/assert/is-ndarray-descriptor":"2dC","@stdlib/assert-is-ndarray-descriptor":"2dD","@stdlib/blas/base/cgemv":"2dE","@stdlib/blas-base-cgemv":"2dF","@stdlib/blas/base/dzasum":"2dG","@stdlib/blas-base-dzasum":"2dH","@stdlib/blas/base/ndarray/caxpy":"2dI","@stdlib/blas-base-ndarray-caxpy":"2dJ","@stdlib/blas/base/ndarray/ccopy":"2dK","@stdlib/blas-base-ndarray-ccopy":"2dL","@stdlib/blas/base/ndarray/cscal":"2dM","@stdlib/blas-base-ndarray-cscal":"2dN","@stdlib/blas/base/ndarray/csscal":"2dO","@stdlib/blas-base-ndarray-csscal":"2dP","@stdlib/blas/base/ndarray/cswap":"2dQ","@stdlib/blas-base-ndarray-cswap":"2dR","@stdlib/blas/base/ndarray/dasum":"2dS","@stdlib/blas-base-ndarray-dasum":"2dT","@stdlib/blas/base/ndarray/daxpy":"2dU","@stdlib/blas-base-ndarray-daxpy":"2dV","@stdlib/blas/base/ndarray/dcopy":"2dW","@stdlib/blas-base-ndarray-dcopy":"2dX","@stdlib/blas/base/ndarray/dnrm2":"2dY","@stdlib/blas-base-ndarray-dnrm2":"2dZ","@stdlib/blas/base/ndarray/dscal":"2da","@stdlib/blas-base-ndarray-dscal":"2db","@stdlib/blas/base/ndarray/dsdot":"2dc","@stdlib/blas-base-ndarray-dsdot":"2dd","@stdlib/blas/base/ndarray/dswap":"2de","@stdlib/blas-base-ndarray-dswap":"2df","@stdlib/blas/base/ndarray/dzasum":"2dg","@stdlib/blas-base-ndarray-dzasum":"2dh","@stdlib/blas/base/ndarray/dznrm2":"2di","@stdlib/blas-base-ndarray-dznrm2":"2dj","@stdlib/blas/base/ndarray/gasum":"2dk","@stdlib/blas-base-ndarray-gasum":"2dl","@stdlib/blas/base/ndarray/gaxpy":"2dm","@stdlib/blas-base-ndarray-gaxpy":"2dn","@stdlib/blas/base/ndarray/gcopy":"2do","@stdlib/blas-base-ndarray-gcopy":"2dp","@stdlib/blas/base/ndarray/gnrm2":"2dq","@stdlib/blas-base-ndarray-gnrm2":"2dr","@stdlib/blas/base/ndarray/gscal":"2ds","@stdlib/blas-base-ndarray-gscal":"2dt","@stdlib/blas/base/ndarray/gswap":"2du","@stdlib/blas-base-ndarray-gswap":"2dv","@stdlib/blas/base/ndarray/idamax":"2dw","@stdlib/blas-base-ndarray-idamax":"2dx","@stdlib/blas/base/ndarray":"2dy","@stdlib/blas-base-ndarray":"2dz","@stdlib/blas/base/ndarray/sasum":"2e0","@stdlib/blas-base-ndarray-sasum":"2e1","@stdlib/blas/base/ndarray/saxpy":"2e2","@stdlib/blas-base-ndarray-saxpy":"2e3","@stdlib/blas/base/ndarray/scasum":"2e4","@stdlib/blas-base-ndarray-scasum":"2e5","@stdlib/blas/base/ndarray/scnrm2":"2e6","@stdlib/blas-base-ndarray-scnrm2":"2e7","@stdlib/blas/base/ndarray/scopy":"2e8","@stdlib/blas-base-ndarray-scopy":"2e9","@stdlib/blas/base/ndarray/sdsdot":"2eA","@stdlib/blas-base-ndarray-sdsdot":"2eB","@stdlib/blas/base/ndarray/snrm2":"2eC","@stdlib/blas-base-ndarray-snrm2":"2eD","@stdlib/blas/base/ndarray/sscal":"2eE","@stdlib/blas-base-ndarray-sscal":"2eF","@stdlib/blas/base/ndarray/sswap":"2eG","@stdlib/blas-base-ndarray-sswap":"2eH","@stdlib/blas/base/ndarray/zaxpy":"2eI","@stdlib/blas-base-ndarray-zaxpy":"2eJ","@stdlib/blas/base/ndarray/zcopy":"2eK","@stdlib/blas-base-ndarray-zcopy":"2eL","@stdlib/blas/base/ndarray/zdscal":"2eM","@stdlib/blas-base-ndarray-zdscal":"2eN","@stdlib/blas/base/ndarray/zscal":"2eO","@stdlib/blas-base-ndarray-zscal":"2eP","@stdlib/blas/base/ndarray/zswap":"2eQ","@stdlib/blas-base-ndarray-zswap":"2eR","@stdlib/blas/ext/base/capx":"2eS","@stdlib/blas-ext-base-capx":"2eT","@stdlib/blas/ext/base/caxpb":"2eU","@stdlib/blas-ext-base-caxpb":"2eV","@stdlib/blas/ext/base/cindex-of-column":"2eW","@stdlib/blas-ext-base-cindex-of-column":"2eX","@stdlib/blas/ext/base/cindex-of-row":"2eY","@stdlib/blas-ext-base-cindex-of-row":"2eZ","@stdlib/blas/ext/base/cindex-of":"2ea","@stdlib/blas-ext-base-cindex-of":"2eb","@stdlib/blas/ext/base/clast-index-of-row":"2ec","@stdlib/blas-ext-base-clast-index-of-row":"2ed","@stdlib/blas/ext/base/cone-to":"2ee","@stdlib/blas-ext-base-cone-to":"2ef","@stdlib/blas/ext/base/cunitspace":"2eg","@stdlib/blas-ext-base-cunitspace":"2eh","@stdlib/blas/ext/base/cwhere":"2ei","@stdlib/blas-ext-base-cwhere":"2ej","@stdlib/blas/ext/base/cxsa":"2ek","@stdlib/blas-ext-base-cxsa":"2el","@stdlib/blas/ext/base/czero-to":"2em","@stdlib/blas-ext-base-czero-to":"2en","@stdlib/blas/ext/base/daxpb":"2eo","@stdlib/blas-ext-base-daxpb":"2ep","@stdlib/blas/ext/base/dcartesian-power":"2eq","@stdlib/blas-ext-base-dcartesian-power":"2er","@stdlib/blas/ext/base/dcartesian-product":"2es","@stdlib/blas-ext-base-dcartesian-product":"2et","@stdlib/blas/ext/base/dcartesian-square":"2eu","@stdlib/blas-ext-base-dcartesian-square":"2ev","@stdlib/blas/ext/base/dcircshift":"2ew","@stdlib/blas-ext-base-dcircshift":"2ex","@stdlib/blas/ext/base/ddiff":"2ey","@stdlib/blas-ext-base-ddiff":"2ez","@stdlib/blas/ext/base/dediff":"2f0","@stdlib/blas-ext-base-dediff":"2f1","@stdlib/blas/ext/base/dindex-of-column":"2f2","@stdlib/blas-ext-base-dindex-of-column":"2f3","@stdlib/blas/ext/base/dindex-of-row":"2f4","@stdlib/blas-ext-base-dindex-of-row":"2f5","@stdlib/blas/ext/base/dlast-index-of-row":"2f6","@stdlib/blas-ext-base-dlast-index-of-row":"2f7","@stdlib/blas/ext/base/dmskrev":"2f8","@stdlib/blas-ext-base-dmskrev":"2f9","@stdlib/blas/ext/base/dnancount":"2fA","@stdlib/blas-ext-base-dnancount":"2fB","@stdlib/blas/ext/base/done-to":"2fC","@stdlib/blas-ext-base-done-to":"2fD","@stdlib/blas/ext/base/drss":"2fE","@stdlib/blas-ext-base-drss":"2fF","@stdlib/blas/ext/base/drssbl":"2fG","@stdlib/blas-ext-base-drssbl":"2fH","@stdlib/blas/ext/base/drsskbn":"2fI","@stdlib/blas-ext-base-drsskbn":"2fJ","@stdlib/blas/ext/base/dsort":"2fK","@stdlib/blas-ext-base-dsort":"2fL","@stdlib/blas/ext/base/dunitspace":"2fM","@stdlib/blas-ext-base-dunitspace":"2fN","@stdlib/blas/ext/base/dvander":"2fO","@stdlib/blas-ext-base-dvander":"2fP","@stdlib/blas/ext/base/dwhere":"2fQ","@stdlib/blas-ext-base-dwhere":"2fR","@stdlib/blas/ext/base/dxsa":"2fS","@stdlib/blas-ext-base-dxsa":"2fT","@stdlib/blas/ext/base/dzero-to":"2fU","@stdlib/blas-ext-base-dzero-to":"2fV","@stdlib/blas/ext/base/gaxpb":"2fW","@stdlib/blas-ext-base-gaxpb":"2fX","@stdlib/blas/ext/base/gaxpby":"2fY","@stdlib/blas-ext-base-gaxpby":"2fZ","@stdlib/blas/ext/base/gcartesian-power":"2fa","@stdlib/blas-ext-base-gcartesian-power":"2fb","@stdlib/blas/ext/base/gcartesian-square":"2fc","@stdlib/blas-ext-base-gcartesian-square":"2fd","@stdlib/blas/ext/base/gcircshift":"2fe","@stdlib/blas-ext-base-gcircshift":"2ff","@stdlib/blas/ext/base/gconjoin":"2fg","@stdlib/blas-ext-base-gconjoin":"2fh","@stdlib/blas/ext/base/gcuevery":"2fi","@stdlib/blas-ext-base-gcuevery":"2fj","@stdlib/blas/ext/base/gcunone":"2fk","@stdlib/blas-ext-base-gcunone":"2fl","@stdlib/blas/ext/base/gdiff":"2fm","@stdlib/blas-ext-base-gdiff":"2fn","@stdlib/blas/ext/base/gindex-of-column":"2fo","@stdlib/blas-ext-base-gindex-of-column":"2fp","@stdlib/blas/ext/base/gjoin-between":"2fq","@stdlib/blas-ext-base-gjoin-between":"2fr","@stdlib/blas/ext/base/glast-index-of-row":"2fs","@stdlib/blas-ext-base-glast-index-of-row":"2ft","@stdlib/blas/ext/base/gmskrev":"2fu","@stdlib/blas-ext-base-gmskrev":"2fv","@stdlib/blas/ext/base/gnancount":"2fw","@stdlib/blas-ext-base-gnancount":"2fx","@stdlib/blas/ext/base/gone-to":"2fy","@stdlib/blas-ext-base-gone-to":"2fz","@stdlib/blas/ext/base/greplicate":"2g0","@stdlib/blas-ext-base-greplicate":"2g1","@stdlib/blas/ext/base/gsort":"2g2","@stdlib/blas-ext-base-gsort":"2g3","@stdlib/blas/ext/base/gunitspace":"2g4","@stdlib/blas-ext-base-gunitspace":"2g5","@stdlib/blas/ext/base/gvander":"2g6","@stdlib/blas-ext-base-gvander":"2g7","@stdlib/blas/ext/base/gwhere":"2g8","@stdlib/blas-ext-base-gwhere":"2g9","@stdlib/blas/ext/base/gxsa":"2gA","@stdlib/blas-ext-base-gxsa":"2gB","@stdlib/blas/ext/base/gzero-to":"2gC","@stdlib/blas-ext-base-gzero-to":"2gD","@stdlib/blas/ext/base/ndarray/caxpb":"2gE","@stdlib/blas-ext-base-ndarray-caxpb":"2gF","@stdlib/blas/ext/base/ndarray/cindex-of":"2gG","@stdlib/blas-ext-base-ndarray-cindex-of":"2gH","@stdlib/blas/ext/base/ndarray/cone-to":"2gI","@stdlib/blas-ext-base-ndarray-cone-to":"2gJ","@stdlib/blas/ext/base/ndarray/cunitspace":"2gK","@stdlib/blas-ext-base-ndarray-cunitspace":"2gL","@stdlib/blas/ext/base/ndarray/cxsa":"2gM","@stdlib/blas-ext-base-ndarray-cxsa":"2gN","@stdlib/blas/ext/base/ndarray/czero-to":"2gO","@stdlib/blas-ext-base-ndarray-czero-to":"2gP","@stdlib/blas/ext/base/ndarray/daxpb":"2gQ","@stdlib/blas-ext-base-ndarray-daxpb":"2gR","@stdlib/blas/ext/base/ndarray/dcircshift":"2gS","@stdlib/blas-ext-base-ndarray-dcircshift":"2gT","@stdlib/blas/ext/base/ndarray/dcusumors":"2gU","@stdlib/blas-ext-base-ndarray-dcusumors":"2gV","@stdlib/blas/ext/base/ndarray/dcusumpw":"2gW","@stdlib/blas-ext-base-ndarray-dcusumpw":"2gX","@stdlib/blas/ext/base/ndarray/dnansum":"2gY","@stdlib/blas-ext-base-ndarray-dnansum":"2gZ","@stdlib/blas/ext/base/ndarray/dnansumkbn":"2ga","@stdlib/blas-ext-base-ndarray-dnansumkbn":"2gb","@stdlib/blas/ext/base/ndarray/dnansumkbn2":"2gc","@stdlib/blas-ext-base-ndarray-dnansumkbn2":"2gd","@stdlib/blas/ext/base/ndarray/dnansumors":"2ge","@stdlib/blas-ext-base-ndarray-dnansumors":"2gf","@stdlib/blas/ext/base/ndarray/dnansumpw":"2gg","@stdlib/blas-ext-base-ndarray-dnansumpw":"2gh","@stdlib/blas/ext/base/ndarray/done-to":"2gi","@stdlib/blas-ext-base-ndarray-done-to":"2gj","@stdlib/blas/ext/base/ndarray/dsort":"2gk","@stdlib/blas-ext-base-ndarray-dsort":"2gl","@stdlib/blas/ext/base/ndarray/dsortins":"2gm","@stdlib/blas-ext-base-ndarray-dsortins":"2gn","@stdlib/blas/ext/base/ndarray/dsortsh":"2go","@stdlib/blas-ext-base-ndarray-dsortsh":"2gp","@stdlib/blas/ext/base/ndarray/dsumors":"2gq","@stdlib/blas-ext-base-ndarray-dsumors":"2gr","@stdlib/blas/ext/base/ndarray/dsumpw":"2gs","@stdlib/blas-ext-base-ndarray-dsumpw":"2gt","@stdlib/blas/ext/base/ndarray/dunitspace":"2gu","@stdlib/blas-ext-base-ndarray-dunitspace":"2gv","@stdlib/blas/ext/base/ndarray/dxsa":"2gw","@stdlib/blas-ext-base-ndarray-dxsa":"2gx","@stdlib/blas/ext/base/ndarray/dzero-to":"2gy","@stdlib/blas-ext-base-ndarray-dzero-to":"2gz","@stdlib/blas/ext/base/ndarray/gaxpb":"2h0","@stdlib/blas-ext-base-ndarray-gaxpb":"2h1","@stdlib/blas/ext/base/ndarray/gcircshift":"2h2","@stdlib/blas-ext-base-ndarray-gcircshift":"2h3","@stdlib/blas/ext/base/ndarray/gcusumkbn":"2h4","@stdlib/blas-ext-base-ndarray-gcusumkbn":"2h5","@stdlib/blas/ext/base/ndarray/gcusumkbn2":"2h6","@stdlib/blas-ext-base-ndarray-gcusumkbn2":"2h7","@stdlib/blas/ext/base/ndarray/gcusumors":"2h8","@stdlib/blas-ext-base-ndarray-gcusumors":"2h9","@stdlib/blas/ext/base/ndarray/gcusumpw":"2hA","@stdlib/blas-ext-base-ndarray-gcusumpw":"2hB","@stdlib/blas/ext/base/ndarray/gjoin-between":"2hC","@stdlib/blas-ext-base-ndarray-gjoin-between":"2hD","@stdlib/blas/ext/base/ndarray/gnansum":"2hE","@stdlib/blas-ext-base-ndarray-gnansum":"2hF","@stdlib/blas/ext/base/ndarray/gnansumkbn":"2hG","@stdlib/blas-ext-base-ndarray-gnansumkbn":"2hH","@stdlib/blas/ext/base/ndarray/gnansumkbn2":"2hI","@stdlib/blas-ext-base-ndarray-gnansumkbn2":"2hJ","@stdlib/blas/ext/base/ndarray/gnansumors":"2hK","@stdlib/blas-ext-base-ndarray-gnansumors":"2hL","@stdlib/blas/ext/base/ndarray/gnansumpw":"2hM","@stdlib/blas-ext-base-ndarray-gnansumpw":"2hN","@stdlib/blas/ext/base/ndarray/gone-to":"2hO","@stdlib/blas-ext-base-ndarray-gone-to":"2hP","@stdlib/blas/ext/base/ndarray/gsort":"2hQ","@stdlib/blas-ext-base-ndarray-gsort":"2hR","@stdlib/blas/ext/base/ndarray/gsumors":"2hS","@stdlib/blas-ext-base-ndarray-gsumors":"2hT","@stdlib/blas/ext/base/ndarray/gsumpw":"2hU","@stdlib/blas-ext-base-ndarray-gsumpw":"2hV","@stdlib/blas/ext/base/ndarray/gunitspace":"2hW","@stdlib/blas-ext-base-ndarray-gunitspace":"2hX","@stdlib/blas/ext/base/ndarray/gzero-to":"2hY","@stdlib/blas-ext-base-ndarray-gzero-to":"2hZ","@stdlib/blas/ext/base/ndarray/saxpb":"2ha","@stdlib/blas-ext-base-ndarray-saxpb":"2hb","@stdlib/blas/ext/base/ndarray/scircshift":"2hc","@stdlib/blas-ext-base-ndarray-scircshift":"2hd","@stdlib/blas/ext/base/ndarray/scusumors":"2he","@stdlib/blas-ext-base-ndarray-scusumors":"2hf","@stdlib/blas/ext/base/ndarray/snansum":"2hg","@stdlib/blas-ext-base-ndarray-snansum":"2hh","@stdlib/blas/ext/base/ndarray/snansumkbn":"2hi","@stdlib/blas-ext-base-ndarray-snansumkbn":"2hj","@stdlib/blas/ext/base/ndarray/snansumkbn2":"2hk","@stdlib/blas-ext-base-ndarray-snansumkbn2":"2hl","@stdlib/blas/ext/base/ndarray/snansumors":"2hm","@stdlib/blas-ext-base-ndarray-snansumors":"2hn","@stdlib/blas/ext/base/ndarray/snansumpw":"2ho","@stdlib/blas-ext-base-ndarray-snansumpw":"2hp","@stdlib/blas/ext/base/ndarray/sone-to":"2hq","@stdlib/blas-ext-base-ndarray-sone-to":"2hr","@stdlib/blas/ext/base/ndarray/ssort":"2hs","@stdlib/blas-ext-base-ndarray-ssort":"2ht","@stdlib/blas/ext/base/ndarray/ssumors":"2hu","@stdlib/blas-ext-base-ndarray-ssumors":"2hv","@stdlib/blas/ext/base/ndarray/ssumpw":"2hw","@stdlib/blas-ext-base-ndarray-ssumpw":"2hx","@stdlib/blas/ext/base/ndarray/sunitspace":"2hy","@stdlib/blas-ext-base-ndarray-sunitspace":"2hz","@stdlib/blas/ext/base/ndarray/sxsa":"2i0","@stdlib/blas-ext-base-ndarray-sxsa":"2i1","@stdlib/blas/ext/base/ndarray/szero-to":"2i2","@stdlib/blas-ext-base-ndarray-szero-to":"2i3","@stdlib/blas/ext/base/ndarray/zaxpb":"2i4","@stdlib/blas-ext-base-ndarray-zaxpb":"2i5","@stdlib/blas/ext/base/ndarray/zindex-of":"2i6","@stdlib/blas-ext-base-ndarray-zindex-of":"2i7","@stdlib/blas/ext/base/ndarray/zone-to":"2i8","@stdlib/blas-ext-base-ndarray-zone-to":"2i9","@stdlib/blas/ext/base/ndarray/zunitspace":"2iA","@stdlib/blas-ext-base-ndarray-zunitspace":"2iB","@stdlib/blas/ext/base/ndarray/zzero-to":"2iC","@stdlib/blas-ext-base-ndarray-zzero-to":"2iD","@stdlib/blas/ext/base/saxpb":"2iE","@stdlib/blas-ext-base-saxpb":"2iF","@stdlib/blas/ext/base/scartesian-power":"2iG","@stdlib/blas-ext-base-scartesian-power":"2iH","@stdlib/blas/ext/base/scartesian-square":"2iI","@stdlib/blas-ext-base-scartesian-square":"2iJ","@stdlib/blas/ext/base/scircshift":"2iK","@stdlib/blas-ext-base-scircshift":"2iL","@stdlib/blas/ext/base/sdiff":"2iM","@stdlib/blas-ext-base-sdiff":"2iN","@stdlib/blas/ext/base/sediff":"2iO","@stdlib/blas-ext-base-sediff":"2iP","@stdlib/blas/ext/base/sindex-of-column":"2iQ","@stdlib/blas-ext-base-sindex-of-column":"2iR","@stdlib/blas/ext/base/sindex-of-row":"2iS","@stdlib/blas-ext-base-sindex-of-row":"2iT","@stdlib/blas/ext/base/slast-index-of-row":"2iU","@stdlib/blas-ext-base-slast-index-of-row":"2iV","@stdlib/blas/ext/base/snancount":"2iW","@stdlib/blas-ext-base-snancount":"2iX","@stdlib/blas/ext/base/sone-to":"2iY","@stdlib/blas-ext-base-sone-to":"2iZ","@stdlib/blas/ext/base/ssort":"2ia","@stdlib/blas-ext-base-ssort":"2ib","@stdlib/blas/ext/base/sunitspace":"2ic","@stdlib/blas-ext-base-sunitspace":"2id","@stdlib/blas/ext/base/svander":"2ie","@stdlib/blas-ext-base-svander":"2if","@stdlib/blas/ext/base/swhere":"2ig","@stdlib/blas-ext-base-swhere":"2ih","@stdlib/blas/ext/base/sxsa":"2ii","@stdlib/blas-ext-base-sxsa":"2ij","@stdlib/blas/ext/base/szero-to":"2ik","@stdlib/blas-ext-base-szero-to":"2il","@stdlib/blas/ext/base/zapx":"2im","@stdlib/blas-ext-base-zapx":"2in","@stdlib/blas/ext/base/zaxpb":"2io","@stdlib/blas-ext-base-zaxpb":"2ip","@stdlib/blas/ext/base/zdiff":"2iq","@stdlib/blas-ext-base-zdiff":"2ir","@stdlib/blas/ext/base/zindex-of-column":"2is","@stdlib/blas-ext-base-zindex-of-column":"2it","@stdlib/blas/ext/base/zindex-of-row":"2iu","@stdlib/blas-ext-base-zindex-of-row":"2iv","@stdlib/blas/ext/base/zindex-of":"2iw","@stdlib/blas-ext-base-zindex-of":"2ix","@stdlib/blas/ext/base/zlast-index-of-row":"2iy","@stdlib/blas-ext-base-zlast-index-of-row":"2iz","@stdlib/blas/ext/base/znancount":"2j0","@stdlib/blas-ext-base-znancount":"2j1","@stdlib/blas/ext/base/zone-to":"2j2","@stdlib/blas-ext-base-zone-to":"2j3","@stdlib/blas/ext/base/zunitspace":"2j4","@stdlib/blas-ext-base-zunitspace":"2j5","@stdlib/blas/ext/base/zwhere":"2j6","@stdlib/blas-ext-base-zwhere":"2j7","@stdlib/blas/ext/base/zxsa":"2j8","@stdlib/blas-ext-base-zxsa":"2j9","@stdlib/blas/ext/base/zzero-to":"2jA","@stdlib/blas-ext-base-zzero-to":"2jB","@stdlib/blas/ext/circshift":"2jC","@stdlib/blas-ext-circshift":"2jD","@stdlib/blas/ext/join":"2jE","@stdlib/blas-ext-join":"2jF","@stdlib/blas/ext/one-to":"2jG","@stdlib/blas-ext-one-to":"2jH","@stdlib/blas/ext/sort":"2jI","@stdlib/blas-ext-sort":"2jJ","@stdlib/blas/ext/to-sorted":"2jK","@stdlib/blas-ext-to-sorted":"2jL","@stdlib/blas/ext/unitspace":"2jM","@stdlib/blas-ext-unitspace":"2jN","@stdlib/blas/ext/zero-to":"2jO","@stdlib/blas-ext-zero-to":"2jP","@stdlib/complex/base/assert/is-almost-equal":"2jQ","@stdlib/complex-base-assert-is-almost-equal":"2jR","@stdlib/complex/base/assert/is-almost-same-value":"2jS","@stdlib/complex-base-assert-is-almost-same-value":"2jT","@stdlib/complex/float32/base/add3":"2jU","@stdlib/complex-float32-base-add3":"2jV","@stdlib/complex/float32/base/assert/is-almost-same-value":"2jW","@stdlib/complex-float32-base-assert-is-almost-same-value":"2jX","@stdlib/complex/float64/base/add3":"2jY","@stdlib/complex-float64-base-add3":"2jZ","@stdlib/complex/float64/base/assert/is-almost-same-value":"2ja","@stdlib/complex-float64-base-assert-is-almost-same-value":"2jb","@stdlib/constants/float16/abs-mask":"2jc","@stdlib/constants-float16-abs-mask":"2jd","@stdlib/constants/float16/half-ln-two":"2je","@stdlib/constants-float16-half-ln-two":"2jf","@stdlib/constants/float16/ln-half":"2jg","@stdlib/constants-float16-ln-half":"2jh","@stdlib/constants/float16/ln-pi":"2ji","@stdlib/constants-float16-ln-pi":"2jj","@stdlib/constants/float16/ln-sqrt-two-pi":"2jk","@stdlib/constants-float16-ln-sqrt-two-pi":"2jl","@stdlib/constants/float16/ln-ten":"2jm","@stdlib/constants-float16-ln-ten":"2jn","@stdlib/constants/float16/ln-two-pi":"2jo","@stdlib/constants-float16-ln-two-pi":"2jp","@stdlib/constants/float16/ln-two":"2jq","@stdlib/constants-float16-ln-two":"2jr","@stdlib/constants/float16/log10-e":"2js","@stdlib/constants-float16-log10-e":"2jt","@stdlib/constants/float16/log2-e":"2ju","@stdlib/constants-float16-log2-e":"2jv","@stdlib/constants/float16/max-base10-exponent-subnormal":"2jw","@stdlib/constants-float16-max-base10-exponent-subnormal":"2jx","@stdlib/constants/float16/max-base10-exponent":"2jy","@stdlib/constants-float16-max-base10-exponent":"2jz","@stdlib/constants/float16/max-base2-exponent-subnormal":"2k0","@stdlib/constants-float16-max-base2-exponent-subnormal":"2k1","@stdlib/constants/float16/min-base10-exponent-subnormal":"2k2","@stdlib/constants-float16-min-base10-exponent-subnormal":"2k3","@stdlib/constants/float16/min-base10-exponent":"2k4","@stdlib/constants-float16-min-base10-exponent":"2k5","@stdlib/constants/float16/min-base2-exponent-subnormal":"2k6","@stdlib/constants-float16-min-base2-exponent-subnormal":"2k7","@stdlib/constants/float16/nan":"2k8","@stdlib/constants-float16-nan":"2k9","@stdlib/constants/float16/sqrt-half":"2kA","@stdlib/constants-float16-sqrt-half":"2kB","@stdlib/constants/float16/sqrt-three":"2kC","@stdlib/constants-float16-sqrt-three":"2kD","@stdlib/constants/float16/sqrt-two-pi":"2kE","@stdlib/constants-float16-sqrt-two-pi":"2kF","@stdlib/constants/float32/num-exponent-bits":"2kG","@stdlib/constants-float32-num-exponent-bits":"2kH","@stdlib/fft/base/fftpack/decompose":"2kI","@stdlib/fft-base-fftpack-decompose":"2kJ","@stdlib/math/base/special/acoshf":"2kK","@stdlib/math-base-special-acoshf":"2kL","@stdlib/math/base/special/acothf":"2kM","@stdlib/math-base-special-acothf":"2kN","@stdlib/math/base/special/asinhf":"2kO","@stdlib/math-base-special-asinhf":"2kP","@stdlib/math/base/special/atanhf":"2kQ","@stdlib/math-base-special-atanhf":"2kR","@stdlib/math/base/special/coshf":"2kS","@stdlib/math-base-special-coshf":"2kT","@stdlib/math/base/special/fast/atanhf":"2kU","@stdlib/math-base-special-fast-atanhf":"2kV","@stdlib/math/base/special/floor2f":"2kW","@stdlib/math-base-special-floor2f":"2kX","@stdlib/math/base/special/floornf":"2kY","@stdlib/math-base-special-floornf":"2kZ","@stdlib/math/base/special/roundnf":"2ka","@stdlib/math-base-special-roundnf":"2kb","@stdlib/math/base/special/sincosdf":"2kc","@stdlib/math-base-special-sincosdf":"2kd","@stdlib/math/base/tools/chebyshev-series":"2ke","@stdlib/math-base-tools-chebyshev-series":"2kf","@stdlib/math/base/tools/chebyshev-seriesf":"2kg","@stdlib/math-base-tools-chebyshev-seriesf":"2kh","@stdlib/ml/base/kmeans/algorithm-enum2str":"2ki","@stdlib/ml-base-kmeans-algorithm-enum2str":"2kj","@stdlib/ml/base/kmeans/algorithm-resolve-enum":"2kk","@stdlib/ml-base-kmeans-algorithm-resolve-enum":"2kl","@stdlib/ml/base/kmeans/algorithm-resolve-str":"2km","@stdlib/ml-base-kmeans-algorithm-resolve-str":"2kn","@stdlib/ml/base/kmeans/algorithm-str2enum":"2ko","@stdlib/ml-base-kmeans-algorithm-str2enum":"2kp","@stdlib/ml/base/kmeans/algorithms":"2kq","@stdlib/ml-base-kmeans-algorithms":"2kr","@stdlib/ml/base/kmeans/metric-enum2str":"2ks","@stdlib/ml-base-kmeans-metric-enum2str":"2kt","@stdlib/ml/base/kmeans/metric-resolve-enum":"2ku","@stdlib/ml-base-kmeans-metric-resolve-enum":"2kv","@stdlib/ml/base/kmeans/metric-resolve-str":"2kw","@stdlib/ml-base-kmeans-metric-resolve-str":"2kx","@stdlib/ml/base/kmeans/metric-str2enum":"2ky","@stdlib/ml-base-kmeans-metric-str2enum":"2kz","@stdlib/ml/base/kmeans/metrics":"2l0","@stdlib/ml-base-kmeans-metrics":"2l1","@stdlib/napi/argv-booleanarray":"2l2","@stdlib/napi-argv-booleanarray":"2l3","@stdlib/napi/argv-strided-booleanarray":"2l4","@stdlib/napi-argv-strided-booleanarray":"2l5","@stdlib/napi/argv-strided-booleanarray2d":"2l6","@stdlib/napi-argv-strided-booleanarray2d":"2l7","@stdlib/napi/argv-uint64":"2l8","@stdlib/napi-argv-uint64":"2l9","@stdlib/napi/create-int64":"2lA","@stdlib/napi-create-int64":"2lB","@stdlib/napi/create-uint64":"2lC","@stdlib/napi-create-uint64":"2lD","@stdlib/ndarray/base/append-singleton-dimensions":"2lE","@stdlib/ndarray-base-append-singleton-dimensions":"2lF","@stdlib/ndarray/base/assign-scalar":"2lG","@stdlib/ndarray-base-assign-scalar":"2lH","@stdlib/ndarray/base/atleast1d":"2lI","@stdlib/ndarray-base-atleast1d":"2lJ","@stdlib/ndarray/base/atleast2d":"2lK","@stdlib/ndarray-base-atleast2d":"2lL","@stdlib/ndarray/base/atleast3d":"2lM","@stdlib/ndarray-base-atleast3d":"2lN","@stdlib/ndarray/base/atleastnd":"2lO","@stdlib/ndarray-base-atleastnd":"2lP","@stdlib/ndarray/base/broadcast-scalar-like":"2lQ","@stdlib/ndarray-base-broadcast-scalar-like":"2lR","@stdlib/ndarray/base/consensus-order":"2lS","@stdlib/ndarray-base-consensus-order":"2lT","@stdlib/ndarray/base/descriptor":"2lU","@stdlib/ndarray-base-descriptor":"2lV","@stdlib/ndarray/base/diagonal":"2lW","@stdlib/ndarray-base-diagonal":"2lX","@stdlib/ndarray/base/dtypes2strings":"2lY","@stdlib/ndarray-base-dtypes2strings":"2lZ","@stdlib/ndarray/base/falses-like":"2la","@stdlib/ndarray-base-falses-like":"2lb","@stdlib/ndarray/base/falses":"2lc","@stdlib/ndarray-base-falses":"2ld","@stdlib/ndarray/base/fill-diagonal":"2le","@stdlib/ndarray-base-fill-diagonal":"2lf","@stdlib/ndarray/base/full-by":"2lg","@stdlib/ndarray-base-full-by":"2lh","@stdlib/ndarray/base/full":"2li","@stdlib/ndarray-base-full":"2lj","@stdlib/ndarray/base/maybe-broadcast-array-except-dimensions":"2lk","@stdlib/ndarray-base-maybe-broadcast-array-except-dimensions":"2ll","@stdlib/ndarray/base/nans-like":"2lm","@stdlib/ndarray-base-nans-like":"2ln","@stdlib/ndarray/base/nans":"2lo","@stdlib/ndarray-base-nans":"2lp","@stdlib/ndarray/base/ndarraylike2descriptor":"2lq","@stdlib/ndarray-base-ndarraylike2descriptor":"2lr","@stdlib/ndarray/base/nulls-like":"2ls","@stdlib/ndarray-base-nulls-like":"2lt","@stdlib/ndarray/base/nulls":"2lu","@stdlib/ndarray-base-nulls":"2lv","@stdlib/ndarray/base/ones-like":"2lw","@stdlib/ndarray-base-ones-like":"2lx","@stdlib/ndarray/base/ones":"2ly","@stdlib/ndarray-base-ones":"2lz","@stdlib/ndarray/base/output-order":"2m0","@stdlib/ndarray-base-output-order":"2m1","@stdlib/ndarray/base/quaternary-loop-interchange-order":"2m2","@stdlib/ndarray-base-quaternary-loop-interchange-order":"2m3","@stdlib/ndarray/base/quaternary-tiling-block-size":"2m4","@stdlib/ndarray-base-quaternary-tiling-block-size":"2m5","@stdlib/ndarray/base/quinary-loop-interchange-order":"2m6","@stdlib/ndarray-base-quinary-loop-interchange-order":"2m7","@stdlib/ndarray/base/quinary-tiling-block-size":"2m8","@stdlib/ndarray-base-quinary-tiling-block-size":"2m9","@stdlib/ndarray/base/reinterpret-boolean":"2mA","@stdlib/ndarray-base-reinterpret-boolean":"2mB","@stdlib/ndarray/base/reinterpret-complex":"2mC","@stdlib/ndarray-base-reinterpret-complex":"2mD","@stdlib/ndarray/base/reinterpret-complex128":"2mE","@stdlib/ndarray-base-reinterpret-complex128":"2mF","@stdlib/ndarray/base/reinterpret-complex64":"2mG","@stdlib/ndarray-base-reinterpret-complex64":"2mH","@stdlib/ndarray/base/reverse-dimensions":"2mI","@stdlib/ndarray-base-reverse-dimensions":"2mJ","@stdlib/ndarray/base/rot180":"2mK","@stdlib/ndarray-base-rot180":"2mL","@stdlib/ndarray/base/rot90":"2mM","@stdlib/ndarray-base-rot90":"2mN","@stdlib/ndarray/base/rotl90":"2mO","@stdlib/ndarray-base-rotl90":"2mP","@stdlib/ndarray/base/rotr90":"2mQ","@stdlib/ndarray-base-rotr90":"2mR","@stdlib/ndarray/base/ternary-loop-interchange-order":"2mS","@stdlib/ndarray-base-ternary-loop-interchange-order":"2mT","@stdlib/ndarray/base/ternary-output-dtype":"2mU","@stdlib/ndarray-base-ternary-output-dtype":"2mV","@stdlib/ndarray/base/ternary-tiling-block-size":"2mW","@stdlib/ndarray-base-ternary-tiling-block-size":"2mX","@stdlib/ndarray/base/ternary":"2mY","@stdlib/ndarray-base-ternary":"2mZ","@stdlib/ndarray/base/tile":"2ma","@stdlib/ndarray-base-tile":"2mb","@stdlib/ndarray/base/tiling-block-size":"2mc","@stdlib/ndarray-base-tiling-block-size":"2md","@stdlib/ndarray/base/to-reversed-dimension":"2me","@stdlib/ndarray-base-to-reversed-dimension":"2mf","@stdlib/ndarray/base/to-reversed-dimensions":"2mg","@stdlib/ndarray-base-to-reversed-dimensions":"2mh","@stdlib/ndarray/base/to-rot180":"2mi","@stdlib/ndarray-base-to-rot180":"2mj","@stdlib/ndarray/base/to-rot90":"2mk","@stdlib/ndarray-base-to-rot90":"2ml","@stdlib/ndarray/base/to-rotl90":"2mm","@stdlib/ndarray-base-to-rotl90":"2mn","@stdlib/ndarray/base/to-rotr90":"2mo","@stdlib/ndarray-base-to-rotr90":"2mp","@stdlib/ndarray/base/to-transposed":"2mq","@stdlib/ndarray-base-to-transposed":"2mr","@stdlib/ndarray/base/to-unflattened":"2ms","@stdlib/ndarray-base-to-unflattened":"2mt","@stdlib/ndarray/base/trues-like":"2mu","@stdlib/ndarray-base-trues-like":"2mv","@stdlib/ndarray/base/trues":"2mw","@stdlib/ndarray-base-trues":"2mx","@stdlib/ndarray/base/unflatten-shape":"2my","@stdlib/ndarray-base-unflatten-shape":"2mz","@stdlib/ndarray/base/unflatten":"2n0","@stdlib/ndarray-base-unflatten":"2n1","@stdlib/ndarray/broadcast-scalar-like":"2n2","@stdlib/ndarray-broadcast-scalar-like":"2n3","@stdlib/ndarray/broadcast-scalar":"2n4","@stdlib/ndarray-broadcast-scalar":"2n5","@stdlib/ndarray/colcat":"2n6","@stdlib/ndarray-colcat":"2n7","@stdlib/ndarray/diagonal":"2n8","@stdlib/ndarray-diagonal":"2n9","@stdlib/ndarray/every-by":"2nA","@stdlib/ndarray-every-by":"2nB","@stdlib/ndarray/falses-like":"2nC","@stdlib/ndarray-falses-like":"2nD","@stdlib/ndarray/falses":"2nE","@stdlib/ndarray-falses":"2nF","@stdlib/ndarray/find-last":"2nG","@stdlib/ndarray-find-last":"2nH","@stdlib/ndarray/first":"2nI","@stdlib/ndarray-first":"2nJ","@stdlib/ndarray/flatten-from-by":"2nK","@stdlib/ndarray-flatten-from-by":"2nL","@stdlib/ndarray/from-scalar-like":"2nM","@stdlib/ndarray-from-scalar-like":"2nN","@stdlib/ndarray/hconcat":"2nO","@stdlib/ndarray-hconcat":"2nP","@stdlib/ndarray/last":"2nQ","@stdlib/ndarray-last":"2nR","@stdlib/ndarray/nans-like":"2nS","@stdlib/ndarray-nans-like":"2nT","@stdlib/ndarray/nans":"2nU","@stdlib/ndarray-nans":"2nV","@stdlib/ndarray/ndarraylike2scalar":"2nW","@stdlib/ndarray-ndarraylike2scalar":"2nX","@stdlib/ndarray/ones-like":"2nY","@stdlib/ndarray-ones-like":"2nZ","@stdlib/ndarray/ones":"2na","@stdlib/ndarray-ones":"2nb","@stdlib/ndarray/prepend-singleton-dimensions":"2nc","@stdlib/ndarray-prepend-singleton-dimensions":"2nd","@stdlib/ndarray/push":"2ne","@stdlib/ndarray-push":"2nf","@stdlib/ndarray/remove-singleton-dimensions":"2ng","@stdlib/ndarray-remove-singleton-dimensions":"2nh","@stdlib/ndarray/reverse-dimensions":"2ni","@stdlib/ndarray-reverse-dimensions":"2nj","@stdlib/ndarray/rot180":"2nk","@stdlib/ndarray-rot180":"2nl","@stdlib/ndarray/rot90":"2nm","@stdlib/ndarray-rot90":"2nn","@stdlib/ndarray/rotl90":"2no","@stdlib/ndarray-rotl90":"2np","@stdlib/ndarray/rotr90":"2nq","@stdlib/ndarray-rotr90":"2nr","@stdlib/ndarray/rowcat":"2ns","@stdlib/ndarray-rowcat":"2nt","@stdlib/ndarray/spread-dimensions":"2nu","@stdlib/ndarray-spread-dimensions":"2nv","@stdlib/ndarray/to-flippedlr":"2nw","@stdlib/ndarray-to-flippedlr":"2nx","@stdlib/ndarray/to-flippedud":"2ny","@stdlib/ndarray-to-flippedud":"2nz","@stdlib/ndarray/to-locale-string":"2o0","@stdlib/ndarray-to-locale-string":"2o1","@stdlib/ndarray/to-reversed-dimension":"2o2","@stdlib/ndarray-to-reversed-dimension":"2o3","@stdlib/ndarray/to-reversed-dimensions":"2o4","@stdlib/ndarray-to-reversed-dimensions":"2o5","@stdlib/ndarray/to-rot180":"2o6","@stdlib/ndarray-to-rot180":"2o7","@stdlib/ndarray/to-rot90":"2o8","@stdlib/ndarray-to-rot90":"2o9","@stdlib/ndarray/to-rotl90":"2oA","@stdlib/ndarray-to-rotl90":"2oB","@stdlib/ndarray/to-rotr90":"2oC","@stdlib/ndarray-to-rotr90":"2oD","@stdlib/ndarray/to-string":"2oE","@stdlib/ndarray-to-string":"2oF","@stdlib/ndarray/to-transposed":"2oG","@stdlib/ndarray-to-transposed":"2oH","@stdlib/ndarray/to-unflattened":"2oI","@stdlib/ndarray-to-unflattened":"2oJ","@stdlib/ndarray/transpose":"2oK","@stdlib/ndarray-transpose":"2oL","@stdlib/ndarray/trues-like":"2oM","@stdlib/ndarray-trues-like":"2oN","@stdlib/ndarray/trues":"2oO","@stdlib/ndarray-trues":"2oP","@stdlib/ndarray/unflatten":"2oQ","@stdlib/ndarray-unflatten":"2oR","@stdlib/ndarray/unshift":"2oS","@stdlib/ndarray-unshift":"2oT","@stdlib/ndarray/vconcat":"2oU","@stdlib/ndarray-vconcat":"2oV","@stdlib/number/float16/base/assert/is-almost-equal":"2oW","@stdlib/number-float16-base-assert-is-almost-equal":"2oX","@stdlib/number/float16/base/assert/is-nan":"2oY","@stdlib/number-float16-base-assert-is-nan":"2oZ","@stdlib/number/float16/base/assert/is-negative-zero":"2oa","@stdlib/number-float16-base-assert-is-negative-zero":"2ob","@stdlib/number/float16/base/assert/is-positive-zero":"2oc","@stdlib/number-float16-base-assert-is-positive-zero":"2od","@stdlib/number/float16/base/from-binary-string":"2oe","@stdlib/number-float16-base-from-binary-string":"2of","@stdlib/number/float16/base/mul":"2og","@stdlib/number-float16-base-mul":"2oh","@stdlib/number/float16/base/signbit":"2oi","@stdlib/number-float16-base-signbit":"2oj","@stdlib/number/float16/base/significand":"2ok","@stdlib/number-float16-base-significand":"2ol","@stdlib/number/float16/base/sub":"2om","@stdlib/number-float16-base-sub":"2on","@stdlib/number/float16/base/to-float32":"2oo","@stdlib/number-float16-base-to-float32":"2op","@stdlib/number/float16/base/to-float64":"2oq","@stdlib/number-float16-base-to-float64":"2or","@stdlib/number/float16/base/ulp-difference":"2os","@stdlib/number-float16-base-ulp-difference":"2ot","@stdlib/number/float16/ctor":"2ou","@stdlib/number-float16-ctor":"2ov","@stdlib/number/float32/base/assert/is-almost-same-value":"2ow","@stdlib/number-float32-base-assert-is-almost-same-value":"2ox","@stdlib/number/float32/base/to-float16":"2oy","@stdlib/number-float32-base-to-float16":"2oz","@stdlib/number/float64/base/assert/is-almost-same-value":"2p0","@stdlib/number-float64-base-assert-is-almost-same-value":"2p1","@stdlib/number/float64/base/sub3":"2p2","@stdlib/number-float64-base-sub3":"2p3","@stdlib/number/uint64/ctor":"2p4","@stdlib/number-uint64-ctor":"2p5","@stdlib/object/bifurcate-in":"2p6","@stdlib/object-bifurcate-in":"2p7","@stdlib/object/bifurcate-own":"2p8","@stdlib/object-bifurcate-own":"2p9","@stdlib/object/capitalize-keys":"2pA","@stdlib/object-capitalize-keys":"2pB","@stdlib/object/common-keys-in":"2pC","@stdlib/object-common-keys-in":"2pD","@stdlib/object/common-keys":"2pE","@stdlib/object-common-keys":"2pF","@stdlib/object/deep-get":"2pG","@stdlib/object-deep-get":"2pH","@stdlib/object/deep-set":"2pI","@stdlib/object-deep-set":"2pJ","@stdlib/object/for-in":"2pK","@stdlib/object-for-in":"2pL","@stdlib/object/for-own":"2pM","@stdlib/object-for-own":"2pN","@stdlib/object/inverse-by":"2pO","@stdlib/object-inverse-by":"2pP","@stdlib/object/inverse":"2pQ","@stdlib/object-inverse":"2pR","@stdlib/object/lowercase-keys":"2pS","@stdlib/object-lowercase-keys":"2pT","@stdlib/object/uncapitalize-keys":"2pU","@stdlib/object-uncapitalize-keys":"2pV","@stdlib/object/uppercase-keys":"2pW","@stdlib/object-uppercase-keys":"2pX","@stdlib/random/arcsine":"2pY","@stdlib/random-arcsine":"2pZ","@stdlib/random/bernoulli":"2pa","@stdlib/random-bernoulli":"2pb","@stdlib/random/beta":"2pc","@stdlib/random-beta":"2pd","@stdlib/random/betaprime":"2pe","@stdlib/random-betaprime":"2pf","@stdlib/random/binomial":"2pg","@stdlib/random-binomial":"2ph","@stdlib/random/cauchy":"2pi","@stdlib/random-cauchy":"2pj","@stdlib/random/chi":"2pk","@stdlib/random-chi":"2pl","@stdlib/random/chisquare":"2pm","@stdlib/random-chisquare":"2pn","@stdlib/random/cosine":"2po","@stdlib/random-cosine":"2pp","@stdlib/random/discrete-uniform":"2pq","@stdlib/random-discrete-uniform":"2pr","@stdlib/random/erlang":"2ps","@stdlib/random-erlang":"2pt","@stdlib/random/f":"2pu","@stdlib/random-f":"2pv","@stdlib/random/frechet":"2pw","@stdlib/random-frechet":"2px","@stdlib/random/gamma":"2py","@stdlib/random-gamma":"2pz","@stdlib/random/geometric":"2q0","@stdlib/random-geometric":"2q1","@stdlib/random/gumbel":"2q2","@stdlib/random-gumbel":"2q3","@stdlib/random/hypergeometric":"2q4","@stdlib/random-hypergeometric":"2q5","@stdlib/random/invgamma":"2q6","@stdlib/random-invgamma":"2q7","@stdlib/random/kumaraswamy":"2q8","@stdlib/random-kumaraswamy":"2q9","@stdlib/random/laplace":"2qA","@stdlib/random-laplace":"2qB","@stdlib/random/levy":"2qC","@stdlib/random-levy":"2qD","@stdlib/random/logistic":"2qE","@stdlib/random-logistic":"2qF","@stdlib/random/lognormal":"2qG","@stdlib/random-lognormal":"2qH","@stdlib/random/negative-binomial":"2qI","@stdlib/random-negative-binomial":"2qJ","@stdlib/random/normal":"2qK","@stdlib/random-normal":"2qL","@stdlib/random/pareto-type1":"2qM","@stdlib/random-pareto-type1":"2qN","@stdlib/random/poisson":"2qO","@stdlib/random-poisson":"2qP","@stdlib/random/rayleigh":"2qQ","@stdlib/random-rayleigh":"2qR","@stdlib/random/t":"2qS","@stdlib/random-t":"2qT","@stdlib/random/tools/ternary-factory":"2qU","@stdlib/random-tools-ternary-factory":"2qV","@stdlib/random/tools/ternary":"2qW","@stdlib/random-tools-ternary":"2qX","@stdlib/random/triangular":"2qY","@stdlib/random-triangular":"2qZ","@stdlib/random/weibull":"2qa","@stdlib/random-weibull":"2qb","@stdlib/stats/array/midrange-by":"2qc","@stdlib/stats-array-midrange-by":"2qd","@stdlib/stats/array/midrange":"2qe","@stdlib/stats-array-midrange":"2qf","@stdlib/stats/array/mskmaxabs":"2qg","@stdlib/stats-array-mskmaxabs":"2qh","@stdlib/stats/array/mskmidrange":"2qi","@stdlib/stats-array-mskmidrange":"2qj","@stdlib/stats/array/mskminabs":"2qk","@stdlib/stats-array-mskminabs":"2ql","@stdlib/stats/array/nanmidrange-by":"2qm","@stdlib/stats-array-nanmidrange-by":"2qn","@stdlib/stats/array/nanmidrange":"2qo","@stdlib/stats-array-nanmidrange":"2qp","@stdlib/stats/array/nanmskmidrange":"2qq","@stdlib/stats-array-nanmskmidrange":"2qr","@stdlib/stats/array/rangeabs":"2qs","@stdlib/stats-array-rangeabs":"2qt","@stdlib/stats/base/dists/halfnormal/entropy":"2qu","@stdlib/stats-base-dists-halfnormal-entropy":"2qv","@stdlib/stats/base/dists/halfnormal/kurtosis":"2qw","@stdlib/stats-base-dists-halfnormal-kurtosis":"2qx","@stdlib/stats/base/dists/halfnormal/logpdf":"2qy","@stdlib/stats-base-dists-halfnormal-logpdf":"2qz","@stdlib/stats/base/dists/halfnormal/mean":"2r0","@stdlib/stats-base-dists-halfnormal-mean":"2r1","@stdlib/stats/base/dists/halfnormal/mode":"2r2","@stdlib/stats-base-dists-halfnormal-mode":"2r3","@stdlib/stats/base/dists/halfnormal/stdev":"2r4","@stdlib/stats-base-dists-halfnormal-stdev":"2r5","@stdlib/stats/base/dists/wald/kurtosis":"2r6","@stdlib/stats-base-dists-wald-kurtosis":"2r7","@stdlib/stats/base/dists/wald/mean":"2r8","@stdlib/stats-base-dists-wald-mean":"2r9","@stdlib/stats/base/dists/wald/mode":"2rA","@stdlib/stats-base-dists-wald-mode":"2rB","@stdlib/stats/base/dists/wald/pdf":"2rC","@stdlib/stats-base-dists-wald-pdf":"2rD","@stdlib/stats/base/dists/wald/skewness":"2rE","@stdlib/stats-base-dists-wald-skewness":"2rF","@stdlib/stats/base/dists/wald/variance":"2rG","@stdlib/stats-base-dists-wald-variance":"2rH","@stdlib/stats/base/ndarray/dmeanstdev":"2rI","@stdlib/stats-base-ndarray-dmeanstdev":"2rJ","@stdlib/stats/base/ndarray/dmskmaxabs":"2rK","@stdlib/stats-base-ndarray-dmskmaxabs":"2rL","@stdlib/stats/base/ndarray/dnanmidrange":"2rM","@stdlib/stats-base-ndarray-dnanmidrange":"2rN","@stdlib/stats/base/ndarray/dnanmskmaxabs":"2rO","@stdlib/stats-base-ndarray-dnanmskmaxabs":"2rP","@stdlib/stats/base/ndarray/dnanmskminabs":"2rQ","@stdlib/stats-base-ndarray-dnanmskminabs":"2rR","@stdlib/stats/base/ndarray/dnanrange":"2rS","@stdlib/stats-base-ndarray-dnanrange":"2rT","@stdlib/stats/base/ndarray/dnanrangeabs":"2rU","@stdlib/stats-base-ndarray-dnanrangeabs":"2rV","@stdlib/stats/base/ndarray/dnanstdev":"2rW","@stdlib/stats-base-ndarray-dnanstdev":"2rX","@stdlib/stats/base/ndarray/dnanstdevch":"2rY","@stdlib/stats-base-ndarray-dnanstdevch":"2rZ","@stdlib/stats/base/ndarray/dnanstdevpn":"2ra","@stdlib/stats-base-ndarray-dnanstdevpn":"2rb","@stdlib/stats/base/ndarray/drangeabs":"2rc","@stdlib/stats-base-ndarray-drangeabs":"2rd","@stdlib/stats/base/ndarray/dstdev":"2re","@stdlib/stats-base-ndarray-dstdev":"2rf","@stdlib/stats/base/ndarray/dstdevch":"2rg","@stdlib/stats-base-ndarray-dstdevch":"2rh","@stdlib/stats/base/ndarray/dstdevpn":"2ri","@stdlib/stats-base-ndarray-dstdevpn":"2rj","@stdlib/stats/base/ndarray/dstdevtk":"2rk","@stdlib/stats-base-ndarray-dstdevtk":"2rl","@stdlib/stats/base/ndarray/dstdevwd":"2rm","@stdlib/stats-base-ndarray-dstdevwd":"2rn","@stdlib/stats/base/ndarray/dstdevyc":"2ro","@stdlib/stats-base-ndarray-dstdevyc":"2rp","@stdlib/stats/base/ndarray/dvariance":"2rq","@stdlib/stats-base-ndarray-dvariance":"2rr","@stdlib/stats/base/ndarray/midrange-by":"2rs","@stdlib/stats-base-ndarray-midrange-by":"2rt","@stdlib/stats/base/ndarray/midrange":"2ru","@stdlib/stats-base-ndarray-midrange":"2rv","@stdlib/stats/base/ndarray/midrangeabs":"2rw","@stdlib/stats-base-ndarray-midrangeabs":"2rx","@stdlib/stats/base/ndarray/mskmaxabs":"2ry","@stdlib/stats-base-ndarray-mskmaxabs":"2rz","@stdlib/stats/base/ndarray/mskmidrange":"2s0","@stdlib/stats-base-ndarray-mskmidrange":"2s1","@stdlib/stats/base/ndarray/nanmidrange-by":"2s2","@stdlib/stats-base-ndarray-nanmidrange-by":"2s3","@stdlib/stats/base/ndarray/nanmidrange":"2s4","@stdlib/stats-base-ndarray-nanmidrange":"2s5","@stdlib/stats/base/ndarray/nanmskmidrange":"2s6","@stdlib/stats-base-ndarray-nanmskmidrange":"2s7","@stdlib/stats/base/ndarray/rangeabs":"2s8","@stdlib/stats-base-ndarray-rangeabs":"2s9","@stdlib/stats/base/ndarray/smskmaxabs":"2sA","@stdlib/stats-base-ndarray-smskmaxabs":"2sB","@stdlib/stats/base/ndarray/smskmidrange":"2sC","@stdlib/stats-base-ndarray-smskmidrange":"2sD","@stdlib/stats/base/ndarray/snanmidrange":"2sE","@stdlib/stats-base-ndarray-snanmidrange":"2sF","@stdlib/stats/base/ndarray/snanmskmaxabs":"2sG","@stdlib/stats-base-ndarray-snanmskmaxabs":"2sH","@stdlib/stats/base/ndarray/snanmskmidrange":"2sI","@stdlib/stats-base-ndarray-snanmskmidrange":"2sJ","@stdlib/stats/base/ndarray/snanmskminabs":"2sK","@stdlib/stats-base-ndarray-snanmskminabs":"2sL","@stdlib/stats/base/ndarray/snanrange":"2sM","@stdlib/stats-base-ndarray-snanrange":"2sN","@stdlib/stats/base/ndarray/srangeabs":"2sO","@stdlib/stats-base-ndarray-srangeabs":"2sP","@stdlib/stats/base/ndarray/sstdev":"2sQ","@stdlib/stats-base-ndarray-sstdev":"2sR","@stdlib/stats/base/ndarray/sstdevch":"2sS","@stdlib/stats-base-ndarray-sstdevch":"2sT","@stdlib/stats/base/ndarray/sstdevpn":"2sU","@stdlib/stats-base-ndarray-sstdevpn":"2sV","@stdlib/stats/base/ndarray/sstdevtk":"2sW","@stdlib/stats-base-ndarray-sstdevtk":"2sX","@stdlib/stats/base/ndarray/sstdevwd":"2sY","@stdlib/stats-base-ndarray-sstdevwd":"2sZ","@stdlib/stats/base/ndarray/sstdevyc":"2sa","@stdlib/stats-base-ndarray-sstdevyc":"2sb","@stdlib/stats/base/ndarray/stdev":"2sc","@stdlib/stats-base-ndarray-stdev":"2sd","@stdlib/stats/base/ndarray/stdevch":"2se","@stdlib/stats-base-ndarray-stdevch":"2sf","@stdlib/stats/base/ndarray/stdevpn":"2sg","@stdlib/stats-base-ndarray-stdevpn":"2sh","@stdlib/stats/base/ndarray/stdevtk":"2si","@stdlib/stats-base-ndarray-stdevtk":"2sj","@stdlib/stats/base/ndarray/stdevwd":"2sk","@stdlib/stats-base-ndarray-stdevwd":"2sl","@stdlib/stats/base/ndarray/stdevyc":"2sm","@stdlib/stats-base-ndarray-stdevyc":"2sn","@stdlib/stats/base/ndarray/svariance":"2so","@stdlib/stats-base-ndarray-svariance":"2sp","@stdlib/stats/base/ndarray/svariancech":"2sq","@stdlib/stats-base-ndarray-svariancech":"2sr","@stdlib/stats/base/ndarray/svariancepn":"2ss","@stdlib/stats-base-ndarray-svariancepn":"2st","@stdlib/stats/base/ndarray/svariancetk":"2su","@stdlib/stats-base-ndarray-svariancetk":"2sv","@stdlib/stats/base/ndarray/svariancewd":"2sw","@stdlib/stats-base-ndarray-svariancewd":"2sx","@stdlib/stats/base/ndarray/svarianceyc":"2sy","@stdlib/stats-base-ndarray-svarianceyc":"2sz","@stdlib/stats/base/ndarray/variance":"2t0","@stdlib/stats-base-ndarray-variance":"2t1","@stdlib/stats/base/ndarray/variancech":"2t2","@stdlib/stats-base-ndarray-variancech":"2t3","@stdlib/stats/base/ndarray/variancepn":"2t4","@stdlib/stats-base-ndarray-variancepn":"2t5","@stdlib/stats/base/ndarray/variancetk":"2t6","@stdlib/stats-base-ndarray-variancetk":"2t7","@stdlib/stats/base/ndarray/variancewd":"2t8","@stdlib/stats-base-ndarray-variancewd":"2t9","@stdlib/stats/base/ndarray/varianceyc":"2tA","@stdlib/stats-base-ndarray-varianceyc":"2tB","@stdlib/stats/incr/nanmmape":"2tC","@stdlib/stats-incr-nanmmape":"2tD","@stdlib/stats/incr/nanmmse":"2tE","@stdlib/stats-incr-nanmmse":"2tF","@stdlib/stats/incr/nanvariance":"2tG","@stdlib/stats-incr-nanvariance":"2tH","@stdlib/stats/midrange-by":"2tI","@stdlib/stats-midrange-by":"2tJ","@stdlib/stats/midrange":"2tK","@stdlib/stats-midrange":"2tL","@stdlib/stats/nanmidrange-by":"2tM","@stdlib/stats-nanmidrange-by":"2tN","@stdlib/stats/nanmidrange":"2tO","@stdlib/stats-nanmidrange":"2tP","@stdlib/stats/nanrange-by":"2tQ","@stdlib/stats-nanrange-by":"2tR","@stdlib/stats/nanrange":"2tS","@stdlib/stats-nanrange":"2tT","@stdlib/stats/rangeabs":"2tU","@stdlib/stats-rangeabs":"2tV","@stdlib/stats/strided/distances/dchebyshev":"2tW","@stdlib/stats-strided-distances-dchebyshev":"2tX","@stdlib/stats/strided/distances/dcityblock":"2tY","@stdlib/stats-strided-distances-dcityblock":"2tZ","@stdlib/stats/strided/distances/dcorrelation":"2ta","@stdlib/stats-strided-distances-dcorrelation":"2tb","@stdlib/stats/strided/distances/dcosine-distance":"2tc","@stdlib/stats-strided-distances-dcosine-distance":"2td","@stdlib/stats/strided/distances/dcosine-similarity":"2te","@stdlib/stats-strided-distances-dcosine-similarity":"2tf","@stdlib/stats/strided/distances/deuclidean":"2tg","@stdlib/stats-strided-distances-deuclidean":"2th","@stdlib/stats/strided/distances/dminkowski":"2ti","@stdlib/stats-strided-distances-dminkowski":"2tj","@stdlib/stats/strided/distances/dsquared-euclidean":"2tk","@stdlib/stats-strided-distances-dsquared-euclidean":"2tl","@stdlib/stats/strided/distances":"2tm","@stdlib/stats-strided-distances":"2tn","@stdlib/stats/strided/dmidrangeabs":"2to","@stdlib/stats-strided-dmidrangeabs":"2tp","@stdlib/stats/strided/dmskmaxabs":"2tq","@stdlib/stats-strided-dmskmaxabs":"2tr","@stdlib/stats/strided/dmskmidrange":"2ts","@stdlib/stats-strided-dmskmidrange":"2tt","@stdlib/stats/strided/dnanmidrange":"2tu","@stdlib/stats-strided-dnanmidrange":"2tv","@stdlib/stats/strided/dnanmskmaxabs":"2tw","@stdlib/stats-strided-dnanmskmaxabs":"2tx","@stdlib/stats/strided/dnanmskmidrange":"2ty","@stdlib/stats-strided-dnanmskmidrange":"2tz","@stdlib/stats/strided/dnanmskminabs":"2u0","@stdlib/stats-strided-dnanmskminabs":"2u1","@stdlib/stats/strided/dnanrangeabs":"2u2","@stdlib/stats-strided-dnanrangeabs":"2u3","@stdlib/stats/strided/dpcorr":"2u4","@stdlib/stats-strided-dpcorr":"2u5","@stdlib/stats/strided/dpcorrwd":"2u6","@stdlib/stats-strided-dpcorrwd":"2u7","@stdlib/stats/strided/drangeabs":"2u8","@stdlib/stats-strided-drangeabs":"2u9","@stdlib/stats/strided/midrange-by":"2uA","@stdlib/stats-strided-midrange-by":"2uB","@stdlib/stats/strided/midrange":"2uC","@stdlib/stats-strided-midrange":"2uD","@stdlib/stats/strided/midrangeabs":"2uE","@stdlib/stats-strided-midrangeabs":"2uF","@stdlib/stats/strided/mskmaxabs":"2uG","@stdlib/stats-strided-mskmaxabs":"2uH","@stdlib/stats/strided/mskmidrange":"2uI","@stdlib/stats-strided-mskmidrange":"2uJ","@stdlib/stats/strided/mskminabs":"2uK","@stdlib/stats-strided-mskminabs":"2uL","@stdlib/stats/strided/nanmidrange-by":"2uM","@stdlib/stats-strided-nanmidrange-by":"2uN","@stdlib/stats/strided/nanmidrange":"2uO","@stdlib/stats-strided-nanmidrange":"2uP","@stdlib/stats/strided/nanmskmidrange":"2uQ","@stdlib/stats-strided-nanmskmidrange":"2uR","@stdlib/stats/strided/nanrangeabs":"2uS","@stdlib/stats-strided-nanrangeabs":"2uT","@stdlib/stats/strided/rangeabs":"2uU","@stdlib/stats-strided-rangeabs":"2uV","@stdlib/stats/strided/smskmaxabs":"2uW","@stdlib/stats-strided-smskmaxabs":"2uX","@stdlib/stats/strided/smskmidrange":"2uY","@stdlib/stats-strided-smskmidrange":"2uZ","@stdlib/stats/strided/snanmidrange":"2ua","@stdlib/stats-strided-snanmidrange":"2ub","@stdlib/stats/strided/snanmskmaxabs":"2uc","@stdlib/stats-strided-snanmskmaxabs":"2ud","@stdlib/stats/strided/snanmskmidrange":"2ue","@stdlib/stats-strided-snanmskmidrange":"2uf","@stdlib/stats/strided/snanmskminabs":"2ug","@stdlib/stats-strided-snanmskminabs":"2uh","@stdlib/stats/strided/srangeabs":"2ui","@stdlib/stats-strided-srangeabs":"2uj","@stdlib/strided/base/reinterpret-float16":"2uk","@stdlib/strided-base-reinterpret-float16":"2ul","@stdlib/array/falses":"2um","@stdlib/array-falses":"2un","@stdlib/array/trues":"2uo","@stdlib/array-trues":"2up","@stdlib/assert/is-uint64":"2uq","@stdlib/assert-is-uint64":"2ur","@stdlib/blas/base/ndarray/igamax":"2us","@stdlib/blas-base-ndarray-igamax":"2ut","@stdlib/blas/base/ndarray/isamax":"2uu","@stdlib/blas-base-ndarray-isamax":"2uv","@stdlib/blas/ext/base/caxpby":"2uw","@stdlib/blas-ext-base-caxpby":"2ux","@stdlib/blas/ext/base/cdiff":"2uy","@stdlib/blas-ext-base-cdiff":"2uz","@stdlib/blas/ext/base/cwxsa":"2v0","@stdlib/blas-ext-base-cwxsa":"2v1","@stdlib/blas/ext/base/cxpy":"2v2","@stdlib/blas-ext-base-cxpy":"2v3","@stdlib/blas/ext/base/daxpby":"2v4","@stdlib/blas-ext-base-daxpby":"2v5","@stdlib/blas/ext/base/dcuany":"2v6","@stdlib/blas-ext-base-dcuany":"2v7","@stdlib/blas/ext/base/dcuevery":"2v8","@stdlib/blas-ext-base-dcuevery":"2v9","@stdlib/blas/ext/base/dcunone":"2vA","@stdlib/blas-ext-base-dcunone":"2vB","@stdlib/blas/ext/base/dcusome":"2vC","@stdlib/blas-ext-base-dcusome":"2vD","@stdlib/blas/ext/base/dindex-of-falsy":"2vE","@stdlib/blas-ext-base-dindex-of-falsy":"2vF","@stdlib/blas/ext/base/dindex-of-truthy":"2vG","@stdlib/blas-ext-base-dindex-of-truthy":"2vH","@stdlib/blas/ext/base/dminheap-sift-down":"2vI","@stdlib/blas-ext-base-dminheap-sift-down":"2vJ","@stdlib/blas/ext/base/dnone":"2vK","@stdlib/blas-ext-base-dnone":"2vL","@stdlib/blas/ext/base/dones":"2vM","@stdlib/blas-ext-base-dones":"2vN","@stdlib/blas/ext/base/dsome":"2vO","@stdlib/blas-ext-base-dsome":"2vP","@stdlib/blas/ext/base/dwapx":"2vQ","@stdlib/blas-ext-base-dwapx":"2vR","@stdlib/blas/ext/base/dwxsa":"2vS","@stdlib/blas-ext-base-dwxsa":"2vT","@stdlib/blas/ext/base/dxpy":"2vU","@stdlib/blas-ext-base-dxpy":"2vV","@stdlib/blas/ext/base/dzeros":"2vW","@stdlib/blas-ext-base-dzeros":"2vX","@stdlib/blas/ext/base/gany":"2vY","@stdlib/blas-ext-base-gany":"2vZ","@stdlib/blas/ext/base/gcartesian-product":"2va","@stdlib/blas-ext-base-gcartesian-product":"2vb","@stdlib/blas/ext/base/gcuany":"2vc","@stdlib/blas-ext-base-gcuany":"2vd","@stdlib/blas/ext/base/gcusome":"2ve","@stdlib/blas-ext-base-gcusome":"2vf","@stdlib/blas/ext/base/gediff":"2vg","@stdlib/blas-ext-base-gediff":"2vh","@stdlib/blas/ext/base/gevery":"2vi","@stdlib/blas-ext-base-gevery":"2vj","@stdlib/blas/ext/base/gindex-of-falsy":"2vk","@stdlib/blas-ext-base-gindex-of-falsy":"2vl","@stdlib/blas/ext/base/gindex-of-truthy":"2vm","@stdlib/blas-ext-base-gindex-of-truthy":"2vn","@stdlib/blas/ext/base/glast-index-of-truthy":"2vo","@stdlib/blas-ext-base-glast-index-of-truthy":"2vp","@stdlib/blas/ext/base/gminheap-sift-down":"2vq","@stdlib/blas-ext-base-gminheap-sift-down":"2vr","@stdlib/blas/ext/base/gminheapify":"2vs","@stdlib/blas-ext-base-gminheapify":"2vt","@stdlib/blas/ext/base/gnone":"2vu","@stdlib/blas-ext-base-gnone":"2vv","@stdlib/blas/ext/base/gsome":"2vw","@stdlib/blas-ext-base-gsome":"2vx","@stdlib/blas/ext/base/gwapx":"2vy","@stdlib/blas-ext-base-gwapx":"2vz","@stdlib/blas/ext/base/gwxsa":"2w0","@stdlib/blas-ext-base-gwxsa":"2w1","@stdlib/blas/ext/base/gxpy":"2w2","@stdlib/blas-ext-base-gxpy":"2w3","@stdlib/blas/ext/base/ndarray/caxpby":"2w4","@stdlib/blas-ext-base-ndarray-caxpby":"2w5","@stdlib/blas/ext/base/ndarray/daxpby":"2w6","@stdlib/blas-ext-base-ndarray-daxpby":"2w7","@stdlib/blas/ext/base/ndarray/ddiff":"2w8","@stdlib/blas-ext-base-ndarray-ddiff":"2w9","@stdlib/blas/ext/base/ndarray/dindex-of-falsy":"2wA","@stdlib/blas-ext-base-ndarray-dindex-of-falsy":"2wB","@stdlib/blas/ext/base/ndarray/gaxpby":"2wC","@stdlib/blas-ext-base-ndarray-gaxpby":"2wD","@stdlib/blas/ext/base/ndarray/gindex-of-falsy":"2wE","@stdlib/blas-ext-base-ndarray-gindex-of-falsy":"2wF","@stdlib/blas/ext/base/ndarray/gindex-of-truthy":"2wG","@stdlib/blas-ext-base-ndarray-gindex-of-truthy":"2wH","@stdlib/blas/ext/base/ndarray/gxsa":"2wI","@stdlib/blas-ext-base-ndarray-gxsa":"2wJ","@stdlib/blas/ext/base/ndarray/saxpby":"2wK","@stdlib/blas-ext-base-ndarray-saxpby":"2wL","@stdlib/blas/ext/base/ndarray/scunone":"2wM","@stdlib/blas-ext-base-ndarray-scunone":"2wN","@stdlib/blas/ext/base/ndarray/zaxpby":"2wO","@stdlib/blas-ext-base-ndarray-zaxpby":"2wP","@stdlib/blas/ext/base/ndarray/zxsa":"2wQ","@stdlib/blas-ext-base-ndarray-zxsa":"2wR","@stdlib/blas/ext/base/saxpby":"2wS","@stdlib/blas-ext-base-saxpby":"2wT","@stdlib/blas/ext/base/scartesian-product":"2wU","@stdlib/blas-ext-base-scartesian-product":"2wV","@stdlib/blas/ext/base/scuany":"2wW","@stdlib/blas-ext-base-scuany":"2wX","@stdlib/blas/ext/base/scuevery":"2wY","@stdlib/blas-ext-base-scuevery":"2wZ","@stdlib/blas/ext/base/scunone":"2wa","@stdlib/blas-ext-base-scunone":"2wb","@stdlib/blas/ext/base/scusome":"2wc","@stdlib/blas-ext-base-scusome":"2wd","@stdlib/blas/ext/base/sindex-of-falsy":"2we","@stdlib/blas-ext-base-sindex-of-falsy":"2wf","@stdlib/blas/ext/base/sindex-of-truthy":"2wg","@stdlib/blas-ext-base-sindex-of-truthy":"2wh","@stdlib/blas/ext/base/sminheap-sift-down":"2wi","@stdlib/blas-ext-base-sminheap-sift-down":"2wj","@stdlib/blas/ext/base/smskrev":"2wk","@stdlib/blas-ext-base-smskrev":"2wl","@stdlib/blas/ext/base/sones":"2wm","@stdlib/blas-ext-base-sones":"2wn","@stdlib/blas/ext/base/swapx":"2wo","@stdlib/blas-ext-base-swapx":"2wp","@stdlib/blas/ext/base/swxsa":"2wq","@stdlib/blas-ext-base-swxsa":"2wr","@stdlib/blas/ext/base/sxpy":"2ws","@stdlib/blas-ext-base-sxpy":"2wt","@stdlib/blas/ext/base/szeros":"2wu","@stdlib/blas-ext-base-szeros":"2wv","@stdlib/blas/ext/base/zaxpby":"2ww","@stdlib/blas-ext-base-zaxpby":"2wx","@stdlib/blas/ext/base/zwxsa":"2wy","@stdlib/blas-ext-base-zwxsa":"2wz","@stdlib/blas/ext/base/zxpy":"2x0","@stdlib/blas-ext-base-zxpy":"2x1","@stdlib/fft/base/fftpack/cffti":"2x2","@stdlib/fft-base-fftpack-cffti":"2x3","@stdlib/fft/base/fftpack/cosqi":"2x4","@stdlib/fft-base-fftpack-cosqi":"2x5","@stdlib/fft/base/fftpack":"2x6","@stdlib/fft-base-fftpack":"2x7","@stdlib/fft/base/fftpack/rffti":"2x8","@stdlib/fft-base-fftpack-rffti":"2x9","@stdlib/fft/base":"2xA","@stdlib/fft-base":"2xB","@stdlib/fft":"2xD","@stdlib/lapack/base/dlaisnan":"2xE","@stdlib/lapack-base-dlaisnan":"2xF","@stdlib/ml/base/kmeans/results/struct-factory":"2xG","@stdlib/ml-base-kmeans-results-struct-factory":"2xH","@stdlib/napi/create-boolean":"2xI","@stdlib/napi-create-boolean":"2xJ","@stdlib/ndarray/base/assign-diagonal":"2xK","@stdlib/ndarray-base-assign-diagonal":"2xL","@stdlib/number/uint64/base/add":"2xM","@stdlib/number-uint64-base-add":"2xN","@stdlib/number/uint64/base/assert/is-equal":"2xO","@stdlib/number-uint64-base-assert-is-equal":"2xP","@stdlib/number/uint64/base/to-words":"2xQ","@stdlib/number-uint64-base-to-words":"2xR","@stdlib/stats/base/dists/anglit/mean":"2xS","@stdlib/stats-base-dists-anglit-mean":"2xT","@stdlib/stats/base/dists/anglit/median":"2xU","@stdlib/stats-base-dists-anglit-median":"2xV","@stdlib/stats/incr/nanmse":"2xW","@stdlib/stats-incr-nanmse":"2xX","@stdlib/stats/incr/nanmsumabs":"2xY","@stdlib/stats-incr-nanmsumabs":"2xZ","@stdlib/stats/incr/nanrmse":"2xa","@stdlib/stats-incr-nanrmse":"2xb","@stdlib/stats/strided/dmaxabs-sorted":"2xc","@stdlib/stats-strided-dmaxabs-sorted":"2xd","@stdlib/blas/ext/base/cwapx":"2xe","@stdlib/blas-ext-base-cwapx":"2xf","@stdlib/blas/ext/base/cxsy":"2xg","@stdlib/blas-ext-base-cxsy":"2xh","@stdlib/blas/ext/base/dany":"2xi","@stdlib/blas-ext-base-dany":"2xj","@stdlib/blas/ext/base/dlast-index-of-falsy":"2xk","@stdlib/blas-ext-base-dlast-index-of-falsy":"2xl","@stdlib/blas/ext/base/dlast-index-of-truthy":"2xm","@stdlib/blas-ext-base-dlast-index-of-truthy":"2xn","@stdlib/blas/ext/base/dlogspace":"2xo","@stdlib/blas-ext-base-dlogspace":"2xp","@stdlib/blas/ext/base/dxmy":"2xq","@stdlib/blas-ext-base-dxmy":"2xr","@stdlib/blas/ext/base/dxsy":"2xs","@stdlib/blas-ext-base-dxsy":"2xt","@stdlib/blas/ext/base/glast-index-of-falsy":"2xu","@stdlib/blas-ext-base-glast-index-of-falsy":"2xv","@stdlib/blas/ext/base/glogspace":"2xw","@stdlib/blas-ext-base-glogspace":"2xx","@stdlib/blas/ext/base/gwax":"2xy","@stdlib/blas-ext-base-gwax":"2xz","@stdlib/blas/ext/base/gwaxpb":"2y0","@stdlib/blas-ext-base-gwaxpb":"2y1","@stdlib/blas/ext/base/gwxpy":"2y2","@stdlib/blas-ext-base-gwxpy":"2y3","@stdlib/blas/ext/base/gwxsy":"2y4","@stdlib/blas-ext-base-gwxsy":"2y5","@stdlib/blas/ext/base/gxmy":"2y6","@stdlib/blas-ext-base-gxmy":"2y7","@stdlib/blas/ext/base/gxsy":"2y8","@stdlib/blas-ext-base-gxsy":"2y9","@stdlib/blas/ext/base/ndarray/cxpy":"2yA","@stdlib/blas-ext-base-ndarray-cxpy":"2yB","@stdlib/blas/ext/base/ndarray/cxsy":"2yC","@stdlib/blas-ext-base-ndarray-cxsy":"2yD","@stdlib/blas/ext/base/ndarray/dxpy":"2yE","@stdlib/blas-ext-base-ndarray-dxpy":"2yF","@stdlib/blas/ext/base/ndarray/dxsy":"2yG","@stdlib/blas-ext-base-ndarray-dxsy":"2yH","@stdlib/blas/ext/base/ndarray/gxpy":"2yI","@stdlib/blas-ext-base-ndarray-gxpy":"2yJ","@stdlib/blas/ext/base/ndarray/gxsy":"2yK","@stdlib/blas-ext-base-ndarray-gxsy":"2yL","@stdlib/blas/ext/base/ndarray/sxpy":"2yM","@stdlib/blas-ext-base-ndarray-sxpy":"2yN","@stdlib/blas/ext/base/ndarray/sxsy":"2yO","@stdlib/blas-ext-base-ndarray-sxsy":"2yP","@stdlib/blas/ext/base/ndarray/zxpy":"2yQ","@stdlib/blas-ext-base-ndarray-zxpy":"2yR","@stdlib/blas/ext/base/ndarray/zxsy":"2yS","@stdlib/blas-ext-base-ndarray-zxsy":"2yT","@stdlib/blas/ext/base/slast-index-of-falsy":"2yU","@stdlib/blas-ext-base-slast-index-of-falsy":"2yV","@stdlib/blas/ext/base/slast-index-of-truthy":"2yW","@stdlib/blas-ext-base-slast-index-of-truthy":"2yX","@stdlib/blas/ext/base/slogspace":"2yY","@stdlib/blas-ext-base-slogspace":"2yZ","@stdlib/blas/ext/base/snone":"2ya","@stdlib/blas-ext-base-snone":"2yb","@stdlib/blas/ext/base/ssome":"2yc","@stdlib/blas-ext-base-ssome":"2yd","@stdlib/blas/ext/base/sxmy":"2ye","@stdlib/blas-ext-base-sxmy":"2yf","@stdlib/blas/ext/base/sxsy":"2yg","@stdlib/blas-ext-base-sxsy":"2yh","@stdlib/blas/ext/base/zwapx":"2yi","@stdlib/blas-ext-base-zwapx":"2yj","@stdlib/blas/ext/base/zxsy":"2yk","@stdlib/blas-ext-base-zxsy":"2yl","@stdlib/fft/base/fftpack/sinqi":"2ym","@stdlib/fft-base-fftpack-sinqi":"2yn","@stdlib/lapack/base/disnan":"2yo","@stdlib/lapack-base-disnan":"2yp","@stdlib/lapack/base/dlarf":"2yq","@stdlib/lapack-base-dlarf":"2yr","@stdlib/ml/strided/dkmeans-distance":"2ys","@stdlib/ml-strided-dkmeans-distance":"2yt","@stdlib/ndarray/base/assert/is-binary-data-type":"2yu","@stdlib/ndarray-base-assert-is-binary-data-type":"2yv","@stdlib/ndarray/base/assert/is-generic-data-type":"2yw","@stdlib/ndarray-base-assert-is-generic-data-type":"2yx","@stdlib/ndarray/matrix/complex128":"2yy","@stdlib/ndarray-matrix-complex128":"2yz","@stdlib/ndarray/matrix/complex64":"2z0","@stdlib/ndarray-matrix-complex64":"2z1","@stdlib/ndarray/matrix/ctor":"2z2","@stdlib/ndarray-matrix-ctor":"2z3","@stdlib/ndarray/matrix/float32":"2z4","@stdlib/ndarray-matrix-float32":"2z5","@stdlib/ndarray/matrix/float64":"2z6","@stdlib/ndarray-matrix-float64":"2z7","@stdlib/ndarray/matrix/int32":"2z8","@stdlib/ndarray-matrix-int32":"2z9","@stdlib/ndarray/matrix":"2zA","@stdlib/ndarray-matrix":"2zB","@stdlib/stats/strided/dmax-sorted":"2zC","@stdlib/stats-strided-dmax-sorted":"2zD","@stdlib/blas/ext/base/sany":"2zE","@stdlib/blas-ext-base-sany":"2zF","@stdlib/number/int64/ctor":"2zG","@stdlib/number-int64-ctor":"2zH","@stdlib/number/uint64/base/number2words":"2zI","@stdlib/number-uint64-base-number2words":"2zJ","@stdlib/stats/base/dists/anglit/quantile":"2zK","@stdlib/stats-base-dists-anglit-quantile":"2zL","@stdlib/stats/base/dists/log-logistic/mean":"2zM","@stdlib/stats-base-dists-log-logistic-mean":"2zN","@stdlib/stats/base/dists/log-logistic/median":"2zO","@stdlib/stats-base-dists-log-logistic-median":"2zP","@stdlib/stats/base/dists/log-logistic/mode":"2zQ","@stdlib/stats-base-dists-log-logistic-mode":"2zR","@stdlib/stats/base/dists/log-logistic/pdf":"2zS","@stdlib/stats-base-dists-log-logistic-pdf":"2zT","@stdlib/stats/base/dists/tukey-lambda/mode":"2zU","@stdlib/stats-base-dists-tukey-lambda-mode":"2zV","@stdlib/assert/is-int64":"2zW","@stdlib/assert-is-int64":"2zX","@stdlib/blas/base/ndarray/cgemv":"2zY","@stdlib/blas-base-ndarray-cgemv":"2zZ","@stdlib/blas/base/ndarray/dgemv":"2za","@stdlib/blas-base-ndarray-dgemv":"2zb","@stdlib/blas/base/ndarray/dger":"2zc","@stdlib/blas-base-ndarray-dger":"2zd","@stdlib/blas/base/ndarray/dspr":"2ze","@stdlib/blas-base-ndarray-dspr":"2zf","@stdlib/blas/base/ndarray/dsyr2":"2zg","@stdlib/blas-base-ndarray-dsyr2":"2zh","@stdlib/blas/base/ndarray/ggemm":"2zi","@stdlib/blas-base-ndarray-ggemm":"2zj","@stdlib/blas/base/ndarray/ggemv":"2zk","@stdlib/blas-base-ndarray-ggemv":"2zl","@stdlib/blas/base/ndarray/gger":"2zm","@stdlib/blas-base-ndarray-gger":"2zn","@stdlib/blas/base/ndarray/gsyr":"2zo","@stdlib/blas-base-ndarray-gsyr":"2zp","@stdlib/blas/base/ndarray/sgemv":"2zq","@stdlib/blas-base-ndarray-sgemv":"2zr","@stdlib/blas/base/ndarray/sger":"2zs","@stdlib/blas-base-ndarray-sger":"2zt","@stdlib/blas/base/ndarray/sspr":"2zu","@stdlib/blas-base-ndarray-sspr":"2zv","@stdlib/blas/ext/base/creplicate":"2zw","@stdlib/blas-ext-base-creplicate":"2zx","@stdlib/blas/ext/base/cwax":"2zy","@stdlib/blas-ext-base-cwax":"2zz","@stdlib/blas/ext/base/cxmy":"300","@stdlib/blas-ext-base-cxmy":"301","@stdlib/blas/ext/base/dfill-equal":"302","@stdlib/blas-ext-base-dfill-equal":"303","@stdlib/blas/ext/base/dfill-nan":"304","@stdlib/blas-ext-base-dfill-nan":"305","@stdlib/blas/ext/base/dfill-not-equal":"306","@stdlib/blas-ext-base-dfill-not-equal":"307","@stdlib/blas/ext/base/dfirst-index-equal":"308","@stdlib/blas-ext-base-dfirst-index-equal":"309","@stdlib/blas/ext/base/dindex-of-not-equal":"30A","@stdlib/blas-ext-base-dindex-of-not-equal":"30B","@stdlib/blas/ext/base/dreplicate":"30C","@stdlib/blas-ext-base-dreplicate":"30D","@stdlib/blas/ext/base/dwax":"30E","@stdlib/blas-ext-base-dwax":"30F","@stdlib/blas/ext/base/dxdy":"30G","@stdlib/blas-ext-base-dxdy":"30H","@stdlib/blas/ext/base/gfill-equal":"30I","@stdlib/blas-ext-base-gfill-equal":"30J","@stdlib/blas/ext/base/gfill-less-than":"30K","@stdlib/blas-ext-base-gfill-less-than":"30L","@stdlib/blas/ext/base/gfill-nan":"30M","@stdlib/blas-ext-base-gfill-nan":"30N","@stdlib/blas/ext/base/gfill-not-equal":"30O","@stdlib/blas-ext-base-gfill-not-equal":"30P","@stdlib/blas/ext/base/gfirst-index-equal":"30Q","@stdlib/blas-ext-base-gfirst-index-equal":"30R","@stdlib/blas/ext/base/gfirst-index-greater-than":"30S","@stdlib/blas-ext-base-gfirst-index-greater-than":"30T","@stdlib/blas/ext/base/gfirst-index-less-than":"30U","@stdlib/blas-ext-base-gfirst-index-less-than":"30V","@stdlib/blas/ext/base/gfirst-index-not-equal":"30W","@stdlib/blas-ext-base-gfirst-index-not-equal":"30X","@stdlib/blas/ext/base/gindex-of-not-equal":"30Y","@stdlib/blas-ext-base-gindex-of-not-equal":"30Z","@stdlib/blas/ext/base/gindex-of-same-value":"30a","@stdlib/blas-ext-base-gindex-of-same-value":"30b","@stdlib/blas/ext/base/glast-index-equal":"30c","@stdlib/blas-ext-base-glast-index-equal":"30d","@stdlib/blas/ext/base/gxdy":"30e","@stdlib/blas-ext-base-gxdy":"30f","@stdlib/blas/ext/base/ndarray/cxmy":"30g","@stdlib/blas-ext-base-ndarray-cxmy":"30h","@stdlib/blas/ext/base/ndarray/dany":"30i","@stdlib/blas-ext-base-ndarray-dany":"30j","@stdlib/blas/ext/base/ndarray/dfill-not-equal":"30k","@stdlib/blas-ext-base-ndarray-dfill-not-equal":"30l","@stdlib/blas/ext/base/ndarray/dxmy":"30m","@stdlib/blas-ext-base-ndarray-dxmy":"30n","@stdlib/blas/ext/base/ndarray/gany":"30o","@stdlib/blas-ext-base-ndarray-gany":"30p","@stdlib/blas/ext/base/ndarray/gfill-not-equal":"30q","@stdlib/blas-ext-base-ndarray-gfill-not-equal":"30r","@stdlib/blas/ext/base/ndarray/gxmy":"30s","@stdlib/blas-ext-base-ndarray-gxmy":"30t","@stdlib/blas/ext/base/ndarray/sany":"30u","@stdlib/blas-ext-base-ndarray-sany":"30v","@stdlib/blas/ext/base/ndarray/sfill-not-equal":"30w","@stdlib/blas-ext-base-ndarray-sfill-not-equal":"30x","@stdlib/blas/ext/base/ndarray/sxmy":"30y","@stdlib/blas-ext-base-ndarray-sxmy":"30z","@stdlib/blas/ext/base/ndarray/zxmy":"310","@stdlib/blas-ext-base-ndarray-zxmy":"311","@stdlib/blas/ext/base/sfill-equal":"312","@stdlib/blas-ext-base-sfill-equal":"313","@stdlib/blas/ext/base/sfill-nan":"314","@stdlib/blas-ext-base-sfill-nan":"315","@stdlib/blas/ext/base/sfill-not-equal":"316","@stdlib/blas-ext-base-sfill-not-equal":"317","@stdlib/blas/ext/base/sfirst-index-equal":"318","@stdlib/blas-ext-base-sfirst-index-equal":"319","@stdlib/blas/ext/base/sreplicate":"31A","@stdlib/blas-ext-base-sreplicate":"31B","@stdlib/blas/ext/base/swax":"31C","@stdlib/blas-ext-base-swax":"31D","@stdlib/blas/ext/base/sxdy":"31E","@stdlib/blas-ext-base-sxdy":"31F","@stdlib/blas/ext/base/zindex-of-truthy":"31G","@stdlib/blas-ext-base-zindex-of-truthy":"31H","@stdlib/blas/ext/base/zreplicate":"31I","@stdlib/blas-ext-base-zreplicate":"31J","@stdlib/blas/ext/base/zwax":"31K","@stdlib/blas-ext-base-zwax":"31L","@stdlib/blas/ext/base/zxmy":"31M","@stdlib/blas-ext-base-zxmy":"31N","@stdlib/blas/nrm2":"31O","@stdlib/blas-nrm2":"31P","@stdlib/fft/base/fftpack/costi":"31Q","@stdlib/fft-base-fftpack-costi":"31R","@stdlib/fft/base/fftpack/sinti":"31S","@stdlib/fft-base-fftpack-sinti":"31T","@stdlib/ml/base/loss/float64/epsilon-insensitive-gradient":"31U","@stdlib/ml-base-loss-float64-epsilon-insensitive-gradient":"31V","@stdlib/ml/base/loss/float64/squared-epsilon-insensitive-gradient":"31W","@stdlib/ml-base-loss-float64-squared-epsilon-insensitive-gradient":"31X","@stdlib/ml/base/loss/float64/squared-error-gradient":"31Y","@stdlib/ml-base-loss-float64-squared-error-gradient":"31Z","@stdlib/ml/base/sgd-classification/learning-rate-enum2str":"31a","@stdlib/ml-base-sgd-classification-learning-rate-enum2str":"31b","@stdlib/ml/base/sgd-classification/learning-rate-resolve-enum":"31c","@stdlib/ml-base-sgd-classification-learning-rate-resolve-enum":"31d","@stdlib/ml/base/sgd-classification/learning-rate-resolve-str":"31e","@stdlib/ml-base-sgd-classification-learning-rate-resolve-str":"31f","@stdlib/ml/base/sgd-classification/learning-rate-str2enum":"31g","@stdlib/ml-base-sgd-classification-learning-rate-str2enum":"31h","@stdlib/ml/base/sgd-classification/learning-rates":"31i","@stdlib/ml-base-sgd-classification-learning-rates":"31j","@stdlib/ml/base/sgd-classification/loss-function-enum2str":"31k","@stdlib/ml-base-sgd-classification-loss-function-enum2str":"31l","@stdlib/ml/base/sgd-classification/loss-function-resolve-enum":"31m","@stdlib/ml-base-sgd-classification-loss-function-resolve-enum":"31n","@stdlib/ml/base/sgd-classification/loss-function-resolve-str":"31o","@stdlib/ml-base-sgd-classification-loss-function-resolve-str":"31p","@stdlib/ml/base/sgd-classification/loss-function-str2enum":"31q","@stdlib/ml-base-sgd-classification-loss-function-str2enum":"31r","@stdlib/ml/base/sgd-classification/loss-functions":"31s","@stdlib/ml-base-sgd-classification-loss-functions":"31t","@stdlib/number/uint64/base/bigint2words":"31u","@stdlib/number-uint64-base-bigint2words":"31v","@stdlib/number/uint64/base/get-high-word":"31w","@stdlib/number-uint64-base-get-high-word":"31x","@stdlib/number/uint64/base/get-low-word":"31y","@stdlib/number-uint64-base-get-low-word":"31z","@stdlib/number/uint64/base/set-high-word":"320","@stdlib/number-uint64-base-set-high-word":"321","@stdlib/number/uint64/base/string2words":"322","@stdlib/number-uint64-base-string2words":"323","@stdlib/stats/base/dists/anglit/cdf":"324","@stdlib/stats-base-dists-anglit-cdf":"325","@stdlib/stats/base/dists/anglit/entropy":"326","@stdlib/stats-base-dists-anglit-entropy":"327","@stdlib/stats/base/dists/anglit/mode":"328","@stdlib/stats-base-dists-anglit-mode":"329","@stdlib/stats/base/dists/anglit/stdev":"32A","@stdlib/stats-base-dists-anglit-stdev":"32B","@stdlib/stats/base/dists/anglit/variance":"32C","@stdlib/stats-base-dists-anglit-variance":"32D","@stdlib/stats/base/dists/log-logistic/cdf":"32E","@stdlib/stats-base-dists-log-logistic-cdf":"32F","@stdlib/stats/base/dists/log-logistic/quantile":"32G","@stdlib/stats-base-dists-log-logistic-quantile":"32H","@stdlib/stats/incr/mskewness":"32I","@stdlib/stats-incr-mskewness":"32J","@stdlib/stats/incr/nancovariance":"32K","@stdlib/stats-incr-nancovariance":"32L","@stdlib/stats/incr/nancv":"32M","@stdlib/stats-incr-nancv":"32N","@stdlib/stats/incr/nanewstdev":"32O","@stdlib/stats-incr-nanewstdev":"32P","@stdlib/stats/incr/nanewvariance":"32Q","@stdlib/stats-incr-nanewvariance":"32R","@stdlib/stats/incr/nankurtosis":"32S","@stdlib/stats-incr-nankurtosis":"32T","@stdlib/stats/incr/nanmae":"32U","@stdlib/stats-incr-nanmae":"32V","@stdlib/stats/incr/nanmapcorr":"32W","@stdlib/stats-incr-nanmapcorr":"32X","@stdlib/stats/incr/nanmape":"32Y","@stdlib/stats-incr-nanmape":"32Z","@stdlib/stats/incr/nanmax":"32a","@stdlib/stats-incr-nanmax":"32b","@stdlib/stats/incr/nanmda":"32c","@stdlib/stats-incr-nanmda":"32d","@stdlib/stats/incr/nanme":"32e","@stdlib/stats-incr-nanme":"32f","@stdlib/stats/incr/nanmeanvar":"32g","@stdlib/stats-incr-nanmeanvar":"32h","@stdlib/stats/incr/nanmgmean":"32i","@stdlib/stats-incr-nanmgmean":"32j","@stdlib/stats/incr/nanmhmean":"32k","@stdlib/stats-incr-nanmhmean":"32l","@stdlib/stats/incr/nanmidrange":"32m","@stdlib/stats-incr-nanmidrange":"32n","@stdlib/stats/incr/nanmmaxabs":"32o","@stdlib/stats-incr-nanmmaxabs":"32p","@stdlib/stats/incr/nanmmean":"32q","@stdlib/stats-incr-nanmmean":"32r","@stdlib/stats/incr/nanmmin":"32s","@stdlib/stats-incr-nanmmin":"32t","@stdlib/stats/incr/nanmpcorr":"32u","@stdlib/stats-incr-nanmpcorr":"32v","@stdlib/stats/incr/nanmrange":"32w","@stdlib/stats-incr-nanmrange":"32x","@stdlib/stats/incr/nanmrss":"32y","@stdlib/stats-incr-nanmrss":"32z","@stdlib/stats/incr/nanmsumprod":"330","@stdlib/stats-incr-nanmsumprod":"331","@stdlib/stats/incr/nanmvmr":"332","@stdlib/stats-incr-nanmvmr":"333","@stdlib/stats/incr/nanpcorr":"334","@stdlib/stats-incr-nanpcorr":"335","@stdlib/stats/incr/nanpcorr2":"336","@stdlib/stats-incr-nanpcorr2":"337","@stdlib/stats/incr/nanpcorrdist":"338","@stdlib/stats-incr-nanpcorrdist":"339","@stdlib/stats/incr/nanprod":"33A","@stdlib/stats-incr-nanprod":"33B","@stdlib/stats/incr/nanrange":"33C","@stdlib/stats-incr-nanrange":"33D","@stdlib/stats/strided/dmedian-sorted":"33E","@stdlib/stats-strided-dmedian-sorted":"33F"} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/README.md b/lib/node_modules/@stdlib/fft/base/fftpack/README.md index 1b72212f23bb..7161ddc48a11 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/README.md +++ b/lib/node_modules/@stdlib/fft/base/fftpack/README.md @@ -45,9 +45,11 @@ var o = ns; - [`cffti( N, workspace, strideW, offsetW )`][@stdlib/fft/base/fftpack/cffti]: initialize a workspace array for performing a complex-valued Fourier transform. - [`cosqi( N, workspace, strideW, offsetW )`][@stdlib/fft/base/fftpack/cosqi]: initialize a workspace array for performing a quarter-wave cosine transform. +- [`costi( N, workspace, strideW, offsetW )`][@stdlib/fft/base/fftpack/costi]: initialize a workspace array for performing a cosine transform. - [`decompose( N, M, initial, si, oi, out, so, oo )`][@stdlib/fft/base/fftpack/decompose]: factorize a sequence length into a product of integers. - [`rffti( N, workspace, strideW, offsetW )`][@stdlib/fft/base/fftpack/rffti]: initialize a workspace array for performing a real-valued Fourier transform. - [`sinqi( N, workspace, strideW, offsetW )`][@stdlib/fft/base/fftpack/sinqi]: initialize a workspace array for performing a quarter-wave sine transform. +- [`sinti( N, workspace, strideW, offsetW )`][@stdlib/fft/base/fftpack/sinti]: initialize a workspace array for performing a sine transform. @@ -94,12 +96,16 @@ console.log( objectKeys( ns ) ); [@stdlib/fft/base/fftpack/cosqi]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/fft/base/fftpack/cosqi +[@stdlib/fft/base/fftpack/costi]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/fft/base/fftpack/costi + [@stdlib/fft/base/fftpack/decompose]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/fft/base/fftpack/decompose [@stdlib/fft/base/fftpack/rffti]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/fft/base/fftpack/rffti [@stdlib/fft/base/fftpack/sinqi]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/fft/base/fftpack/sinqi +[@stdlib/fft/base/fftpack/sinti]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/fft/base/fftpack/sinti + diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/README.md b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/README.md index 333fbb3a6b0c..68495efc0e52 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/README.md +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/README.md @@ -60,7 +60,7 @@ var cosineTable = workspace.slice( 0, N ); // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] var twiddleFactors = workspace.slice( 2*N, 3*N ); -// returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +// returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/benchmark/benchmark.js b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/benchmark/benchmark.js index 63182a9da54c..d8ee9c302270 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/benchmark/benchmark.js @@ -53,12 +53,12 @@ function createBenchmark( N ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { cosqi( N, workspace, 1, 0 ); - if ( isnan( workspace[ ( 2*N ) + 1 ] ) ) { + if ( isnan( workspace[ 2*N ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( workspace[ ( 2*N ) + 1 ] ) ) { + if ( isnan( workspace[ 2*N ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/docs/repl.txt b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/docs/repl.txt index 4f4b51a8647b..e3c7577722a8 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/docs/repl.txt +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/docs/repl.txt @@ -52,7 +52,7 @@ > var cosineTable = workspace.slice( 0, N ) [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] > var twiddleFactors = workspace.slice( 2*N, 3*N ) - [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] + [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] > var factors = workspace.slice( 3*N, ( 3*N ) + 4 ) [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/docs/types/index.d.ts b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/docs/types/index.d.ts index f7eed0a72f1c..212032236dca 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/docs/types/index.d.ts @@ -51,7 +51,7 @@ import { Collection } from '@stdlib/types/array'; * // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] * * var twiddleFactors = workspace.slice( 2*N, 3*N ); -* // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/lib/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/lib/index.js index 41eb9cce42e6..a0b5ef720735 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/lib/index.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/lib/index.js @@ -40,7 +40,7 @@ * // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] * * var twiddleFactors = workspace.slice( 2*N, 3*N ); -* // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/lib/main.js b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/lib/main.js index 6e36d16e3983..24d6b4da6a29 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/lib/main.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/lib/main.js @@ -153,7 +153,7 @@ var rffti = require( '@stdlib/fft/base/fftpack/rffti' ); * // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] * * var twiddleFactors = workspace.slice( 2*N, 3*N ); -* // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/large.json b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/large.json index 763e523a5bdf..59059ed184c3 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/large.json +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/large.json @@ -1 +1 @@ -{"lengths":[234,459,394,151,546,873,299,953,879,438],"offsets":[0,234,693,1087,1238,1784,2657,2956,3909,4788],"cosines":[0.99997746921036201,0.99990987785672103,0.99979722898485013,0.99963952767088537,0.99943678102109723,0.99918899817156959,0.99889619028778931,0.99855837056414176,0.9981755542233175,0.99774775851562514,0.99727500271821501,0.99675730813421004,0.99619469809174555,0.99558719794291872,0.99493483506264557,0.99423763884742788,0.99349564071402818,0.99270887409805397,0.99187737445245172,0.99100117924590847,0.99008032796116408,0.98911486209323163,0.98810482514752795,0.98705026263791285,0.98595122208463859,0.98480775301220802,0.98361990694714363,0.98238773741566476,0.98111129994127666,0.97979065204226767,0.9784258532291179,0.97701696500181712,0.97556405084709386,0.97406717623555461,0.9725264086187333,0.97094181742605201,0.96931347406169244,0.96764145190137818,0.96592582628906831,0.96416667453356242,0.96236407590501671,0.96051811163137235,0.95862886489469457,0.95669642082742523,0.9547208665085456,0.95270229095965342,0.95064078514095085,0.94853644194714548,0.94638935620326525,0.94419962466038454,0.94196734599126486,0.93969262078590843,0.93737555154702534,0.93501624268541483,0.93261480051526024,0.93017133324933832,0.92768595099414286,0.92515876574492351,0.92258989138063874,0.91997944365882423,0.91732754021037699,0.91463430053425454,0.91189984599209006,0.90912429980272369,0.90630778703664994,0.90345043461038232,0.90055237128073351,0.89761372763901404,0.89463463610514737,0.89161523092170281,0.88855564814784638,0.88545602565320991,0.88231650311167797,0.87913722199509459,0.87591832556688787,0.87265995887561432,0.86936226874842282,0.8660254037844386,0.8626495143480668,0.85923475256221682,0.85578127230144752,0.85228922918503347,0.84875878056995258,0.84519008554379482,0.84158330491759392,0.83793860121858121,0.8342561386828613,0.83053608324801165,0.8267786025456052,0.82298386589365635,0.8191520442889918,0.81528331039954438,0.81137783855657297,0.80743580474680676,0.8034573866045146,0.79944276340350118,0.79539211604902793,0.7913056270696619,0.78718348060905019,0.78302586241762218,0.77883295984421974,0.77460496182765459,0.7703420588881944,0.76604444311897801,0.76171230817735913,0.75734584927617976,0.75294526317497401,0.74851074817110108,0.74404250409081063,0.73954073228023731,0.73500563559632848,0.73043741839770315,0.7258362865354423,0.72120244734381456,0.71653610963093173,0.71183748366934052,0.70710678118654757,0.70234421535547742,0.69755000078486806,0.69272435350959938,0.68786749098095856,0.68297963205684165,0.67806099699189093,0.67311180742757015,0.66813228638217748,0.66312265824079519,0.65808314874517893,0.65301398498358509,0.64791539538053877,0.64278760968653936,0.63763085896770832,0.63244537559537728,0.62723139323561594,0.62198914683870399,0.61671887262854308,0.61142080809201205,0.60609519196826633,0.60074226423797894,0.59536226611252707,0.58995544002312295,0.58452202960988886,0.57906227971087887,0.57357643635104605,0.56806474673115581,0.56252745921664682,0.55696482332643937,0.55137708972169164,0.54576451019450456,0.54012733765657528,0.53446582612780102,0.52878023072483238,0.52307080764957758,0.51733781417765679,0.51158150864680996,0.50580215044525501,0.49999999999999989,0.49417531876510695,0.48832836920991107,0.48245941480719334,0.47656872002130779,0.47065655029626458,0.46472317204376862,0.45876885263121403,0.45279386036963726,0.44679846450162575,0.44078293518918571,0.4347475435015683,0.42869256140305423,0.42261826174069944,0.41652491823203974,0.41041280545275671,0.40428219882430511,0.39813337460150111,0.39196660986007509,0.38578218248418533,0.37958037115389626,0.37336145533262105,0.36712571525452758,0.36087343191191196,0.35460488704253557,0.3483203631169301,0.34202014332566882,0.33570451156660486,0.32937375243207967,0.32302815119609779,0.31666799380147242,0.31029356684694043,0.30390515757424691,0.29750305385520298,0.29108754417871291,0.28465891763777462,0.27821746391645275,0.27176347327682443,0.26529723654590076,0.25881904510252074,0.25232919086422173,0.24582796627408493,0.23931566428755782,0.23279257835925224,0.22625900242972208,0.21971523091221701,0.21316155867941602,0.20659828105014028,0.20002569377604446,0.19344409302829133,0.18685377538420472,0.18025503781390564,0.17364817766693041,0.16703349265883091,0.16041128085776024,0.15378184067104042,0.14714547083171597,0.14050247038509278,0.13385313867526163,0.12719777533161075,0.12053668025532301,0.11387015360586229,0.1071984957874479,0.10052200743551712,0.093840989403179295,0.087155742747658138,0.080466568716725792,0.073773768735128392,0.067077644391002403,0.060378497422286063,0.053676629703121551,0.046972343230252414,0.040265940109415241,0.033557722541725489,0.026847992810061103,0.0201370532654403,0.013425206313397397,0.0067127544003561255,6.123233995736766e-17,0.9999941442306326,0.99997657699111053,0.99994729848717312,0.99990630906171674,0.9998536091947906,0.99978919950359135,0.99971308074245546,0.99962525380285072,0.9995257197133659,0.99941447963969821,0.99929153488464006,0.99915688688806381,0.99901053722690469,0.99885248761514234,0.99868273990378098,0.99850129608082749,0.99830815827126818,0.9981033287370441,0.99788680987702416,0.99765860422697739,0.99741871445954311,0.99716714338419976,0.99690389394723145,0.99662896923169442,0.99634237245738,0.9960441069807775,0.99573417629503447,0.99541258402991628,0.99507933395176318,0.99473442996344619,0.99437787610432193,0.99400967655018468,0.99362983561321772,0.99323835774194302,0.9928352475211687,0.99242050967193574,0.99199414905146266,0.99155617065308821,0.99110657960621351,0.99064538117624135,0.9901725807645152,0.9896881839082553,0.98919219628049426,0.9886846236900102,0.98816547208125938,0.98763474753430591,0.98709245626475095,0.9865386046236595,0.98597319909748671,0.98539624630800127,0.98480775301220802,0.98420772610226914,0.98359617260542287,0.98297309968390179,0.98233851463484845,0.98169242489023034,0.98103483801675251,0.98036576171576906,0.97968520382319302,0.97899317230940452,0.97828967527915744,0.97757472097148446,0.97684831775960068,0.97611047415080554,0.97536119878638283,0.97460050044150026,0.97382838802510574,0.97304487057982381,0.97224995728184949,0.97144365744084049,0.97062598049980875,0.96979693603500949,0.96895653375582891,0.96810478350467088,0.96724169525684156,0.96636727912043241,0.96548154533620167,0.96458450427745512,0.96367616644992371,0.96275654249164122,0.96182564317281904,0.96088347939572083,0.95993006219453403,0.95896540273524122,0.9579895123154889,0.95700240236445555,0.95600408444271767,0.95499457024211432,0.95397387158560987,0.9529420004271566,0.95189896885155323,0.95084478907430448,0.94977947344147784,0.94870303442955839,0.94761548464530354,0.94651683682559451,0.94540710383728788,0.94428629867706448,0.94315443447127745,0.94201152447579828,0.94085758207586156,0.93969262078590843,0.9385166542494281,0.93732969623879836,0.93613176065512393,0.93492286152807369,0.93370301301571657,0.93247222940435581,0.93123052510836124,0.9299779146700009,0.92871441275927036,0.92744003417372123,0.92615479383828769,0.92485870680511173,0.92355178825336681,0.92223405348908016,0.92090551794495357,0.91956619718018251,0.918216106880274,0.91685526285686281,0.91548368104752653,0.91410137751559861,0.91270836844998038,0.91130467016495142,0.90989029909997876,0.90846527181952375,0.90702960501284857,0.90558331549382065,0.90412642020071587,0.90265893619601967,0.90118088066622803,0.89969227092164528,0.89819312439618237,0.89668345864715171,0.89516329135506234,0.89363264032341228,0.89209152347848031,0.8905399588691163,0.88897796466652901,0.88740555916407426,0.88582276077703981,0.88422958804243046,0.88262605961875029,0.88101219428578448,0.87938801094437957,0.87775352861622158,0.87610876644361357,0.87445374368925155,0.87278847973599838,0.87111299408665765,0.86942730636374421,0.86773143630925531,0.8660254037844386,0.86430922876956029,0.86258293136367026,0.86084653178436765,0.85910005036756343,0.8573435075672422,0.85557692395522322,0.85380032022091856,0.85201371717109198,0.85021713572961422,0.84841059693721821,0.84659412195125328,0.84476773204543654,0.84293144860960401,0.84108529314946023,0.83922928728632662,0.83736345275688751,0.83548781141293638,0.83360238522111951,0.83170719626267864,0.82980226673319268,0.82788761894231777,0.82596327531352554,0.824029258383841,0.82208559080357824,0.82013229533607557,0.81816939485742834,0.81619691235622172,0.81421487093326073,0.81222329380130043,0.81022220428477343,0.80821162581951722,0.8061915819524994,0.80416209634154168,0.80212319275504373,0.80007489507170382,0.79801722728023949,0.79595021347910688,0.7938738778762181,0.79178824478865806,0.78969333864239954,0.78758918397201672,0.78547580542039885,0.7833532277384605,0.78122147578485246,0.77908057452567037,0.77693054903416225,0.7747714244904349,0.77260322618115884,0.77042597949927294,0.76823970994368573,0.76604444311897801,0.76384020473510217,0.76162702060708121,0.75940491665470711,0.75717391890223618,0.75493405347808507,0.75268534661452446,0.75042782464737179,0.7481615140156832,0.74588644126144332,0.74360263302925489,0.74131011606602637,0.73900891722065909,0.73669906344373248,0.73438058178718835,0.73205349940401465,0.72971784354792679,0.72737364157304873,0.72502092093359261,0.72265970918353761,0.72029003397630631,0.71791192306444196,0.71552540429928235,0.71313050563063463,0.7107272551064473,0.70831568087248176,0.70589581117198341,0.70346767434534974,0.70103129882979931,0.69858671315903831,0.69613394596292655,0.6936730259671422,0.69120398199284472,0.68872684295633868,0.6862416378687336,0.6837483958356052,0.68124714605665404,0.67873791782536408,0.67622074052865866,0.67369564364655721,0.67116265675182984,0.66862180950965044,0.66607313167725013,0.663516653103568,0.66095240372890185,0.65838041358455768,0.65580071279249741,0.65321333156498707,0.65061830020424216,0.64801564910207266,0.64540540873952801,0.64278760968653936,0.64016228260156149,0.63752945823121443,0.63488916740992285,0.63224144105955471,0.62958631018905986,0.62692380589410646,0.62425395935671646,0.62157680184490116,0.61889236471229447,0.61620067939778578,0.61350177742515188,0.61079569040268777,0.60808245002283656,0.6053620880618179,0.60263463637925641,0.59990012691780792,0.59715859170278618,0.59441006284178677,0.59165457252431208,0.58889215302139375,0.58612283668521459,0.58334665594873036,0.58056364332528909,0.577773831408251,0.57497725287060664,0.57217394046459347,0.56936392702131344,0.56654724545034818,0.56372392873937249,0.5608940099537697,0.55805752223624339,0.55521449880642904,0.5523649729605058,0.54950897807080601,0.54664654758542441,0.54377771502782657,0.54090251399645617,0.53802097816434113,0.53513314127870037,0.5322390371605471,0.52933869970429426,0.52643216287735584,0.52351946071975053,0.52060062734370272,0.51767569693324234,0.51474470374380532,0.51180768210183203,0.5088646664043649,0.50591569111864643,0.50296079078171485,0.49999999999999989,0.4970333534489178,0.49406088587246411,0.49108263208280822,0.48809862695988471,0.48510890545098512,0.4821135025703488,0.47911245339875269,0.47610579308310014,0.47309355683601007,0.47007577993540389,0.46705249772409274,0.46402374560936355,0.46098955906256356,0.45794997361868628,0.45490502487595436,0.45185474849540297,0.44879918020046206,0.44573835577653831,0.44267231107059513,0.439601081990734,0.4365247045057733,0.4334432146448271,0.43035664849688327,0.42726504221038097,0.42416843199278664,0.42106685411017092,0.41796034488678335,0.41484894070462708,0.41173267800303281,0.4086115932782316,0.40548572308292818,0.40235510402587249,0.39921977277143084,0.39607976603915673,0.39293512060336078,0.38978587329267939,0.3866320609896447,0.38347372063025159,0.38031088920352557,0.37714360375108941,0.37397190136672948,0.37079581919596083,0.36761539443559293,0.36443066433329363,0.36124166618715287,0.35804843734524611,0.35485101520519624,0.3516494372137367,0.34844374086627222,0.34523396370643966,0.3420201433256686,0.33880231736274113,0.33558052350335021,0.33235479947965962,0.32912518306986127,0.32589171209773282,0.32265442443219494,0.31941335798686721,0.31616855071962502,0.31292004063215434,0.30966786576950689,0.30641206421965456,0.30315267411304359,0.29988973362214694,0.29662328096101875,0.29335335438484605,0.29007999218950042,0.28680323271109015,0.28352311432551086,0.28023967544799577,0.27695295453266666,0.27366299007208278,0.27036982059679043,0.26707348467487169,0.26377402091149188,0.26047146794844894,0.25716586446371986,0.25385724917100783,0.25054566081928897,0.24723113819235887,0.24391372010837717,0.24059344541941446,0.23727035301099639,0.23394448180164842,0.23061587074244005,0.22728455881652881,0.22395058503870299,0.2206139884549258,0.21727480814187738,0.21393308320649734,0.21058885278552686,0.20724215604504967,0.20389303218003446,0.20054152041387516,0.19718765999793156,0.19383149021106991,0.19047305035920281,0.18711237977482831,0.18374951781657031,0.18038450386871691,0.17701737734075929,0.17364817766693041,0.17027694430574239,0.16690371673952545,0.16352853447396495,0.16015143703763873,0.1567724639815542,0.15339165487868545,0.15000904932350875,0.14662468693154032,0.14323860733887142,0.13985085020170437,0.13646145519588809,0.1330704620164537,0.12967791037714871,0.12628384000997331,0.12288829066471406,0.11949130210847862,0.1160929141252303,0.11269316651532114,0.10929209909502721,0.10588975169608131,0.1024861641652068,0.0990813763636509,0.095675428166718035,0.092268359463302016,0.088860210155420144,0.085451020157745056,0.082040829397137457,0.078629677812178542,0.075217605352702457,0.071804651979327519,0.068390857662989593,0.06497626238447303,0.061560906133942724,0.058144828910475899,0.054728070721592838,0.051310671582789638,0.047892671517068691,0.044474110554470161,0.041055028731603181,0.037635466091177169,0.034215462681532006,0.030795058556170325,0.027374293773287522,0.023953208395302857,0.020531842488390468,0.017110236122009258,0.013688429368434946,0.010266462302289866,0.0068443750000738617,0.0034222075396949303,6.123233995736766e-17,0.99999205275247982,0.99996821113623668,0.99992847553022102,0.99987284656601028,0.99980132512779873,0.9997139123523836,0.99961060962914672,0.99949141860003266,0.99935634115952277,0.99920537945460464,0.99903853588473845,0.99885581310181848,0.99865721401013108,0.99844274176630843,0.99821239977927878,0.99796619171021139,0.99770412147245946,0.99742619323149684,0.99713241140485287,0.99682278066204111,0.99649730592448593,0.99615599236544394,0.99579884540992181,0.99542587073458999,0.99503707426769272,0.99463246218895351,0.9942120409294769,0.99377581717164676,0.99332379784901914,0.99285599014621317,0.99237240149879591,0.99187303959316475,0.99135791236642512,0.9908270280062641,0.99028039495082043,0.98971802188855063,0.98913991775809051,0.98854609174811336,0.98793655329718366,0.98731131209360723,0.98667037807527747,0.9860137614295168,0.98534147259291538,0.98465352225116465,0.98394992133888792,0.98323068103946654,0.98249581278486176,0.98174532825543337,0.98097923937975418,0.98019755833441979,0.97940029754385582,0.97858746968012,0.97775908766270081,0.97691516465831196,0.97605571408068348,0.97518074959034839,0.9742902850944255,0.97338433474639818,0.97246291294588982,0.97152603433843465,0.97057371381524504,0.96960596651297482,0.96862280781347865,0.96762425334356772,0.96661031897476102,0.96558102082303332,0.96453637524855906,0.963476398855452,0.96240110849150184,0.96131052124790595,0.96020465445899772,0.95908352570197131,0.95794715279660236,0.95679555380496428,0.95562874703114153,0.95444675102093868,0.95324958456158537,0.95203726668143784,0.9508098166496769,0.94956725397600072,0.9483095984103157,0.94703686994242198,0.94574908880169584,0.94444627545676829,0.94312845061519945,0.94179563522314991,0.9404478504650472,0.93908511776324954,0.93770745877770501,0.93631489540560764,0.93490744978104889,0.93348514427466633,0.93204800149328781,0.93059604427957221,0.92912929571164604,0.92764777910273732,0.92615151800080442,0.92464053618816189,0.9231148576811028,0.92157450672951657,0.92001950781650377,0.9184498856579868,0.91686566520231738,0.91526687162987974,0.91365353035269026,0.9120256670139939,0.91038330748785656,0.90872647787875338,0.90705520452115451,0.90536951397910592,0.9036694330458076,0.90195498874318769,0.90022620832147238,0.89848311925875368,0.89672574926055204,0.8949541262593762,0.89316827841427915,0.89136823411041044,0.88955402195856559,0.88772567079473041,0.88588320967962364,0.88402666789823425,0.88215607495935622,0.88027146059511996,0.87837285476051907,0.87646028763293449,0.87453378961165495,0.87259339131739377,0.87063912359180207,0.86867101749697839,0.86668910431497537,0.86469341554730217,0.86268398291442416,0.8606608383552582,0.85862401402666544,0.85657354230294025,0.85450945577529513,0.85243178725134316,0.8503405697545765,0.84823583652384116,0.84611762101280907,0.84398595688944633,0.84184087803547747,0.83968241854584791,0.83751061272818117,0.83532549510223408,0.83312710039934812,0.83091546356189672,0.82869061974273062,0.82645260430461909,0.82420145281968737,0.82193720106885138,0.81965988504124954,0.81736954093366998,0.81506620514997596,0.81274991430052645,0.81042070520159515,0.80807861487478416,0.80572368054643695,0.80335593964704533,0.80097542981065517,0.79858218887426846,0.79617625487724131,0.79375766606067966,0.79132646086683156,0.78888267793847588,0.78642635611830825,0.7839575344483235,0.7814762521691957,0.77898254871965367,0.77647646373585422,0.77395803705075306,0.77142730869347043,0.76888431888865572,0.76632910805584775,0.76376171680883254,0.76118218595499743,0.75859055649468277,0.75598686962053019,0.7533711667168278,0.75074348935885249,0.7481038793122089,0.74545237853216584,0.74278902916298928,0.74011387353727265,0.73742695417526383,0.73472831378418901,0.73201799525757483,0.72929604167456552,0.72656249629923875,0.72381740257991811,0.72106080414848184,0.71829274481967031,0.71551326859038855,0.71272241963900784,0.709920242324663,0.70710678118654768,0.70428208094320544,0.70144618649182067,0.69859914290750358,0.69574099544257428,0.6928717895258435,0.68999157076189055,0.68710038493033809,0.68419827798512511,0.68128529605377608,0.67836148543666774,0.67542689260629352,0.67248156420652461,0.66952554705186862,0.66655888812672559,0.66358163458464114,0.66059383374755676,0.65759553310505825,0.65458678031362028,0.65156762319584893,0.64853810973972215,0.64549828809782672,0.64244820658659241,0.63938791368552483,0.63631745803643425,0.63323688844266279,0.63014625386830858,0.62704560343744742,0.62393498643335255,0.62081445229771004,0.61768405062983456,0.61454383118587974,0.61139384387804807,0.60823413877379706,0.60506476609504389,0.60188577621736694,0.59869721966920497,0.59549914713105445,0.59229160943466308,0.58907465756222299,0.58584834264555996,0.58261271596532027,0.57936782895015626,0.5761137331759083,0.5728504803647857,0.56957812238454408,0.56629671124766112,0.56300629911050981,0.55970693827252949,0.5563986811753947,0.55308158040218147,0.54975568867653168,0.54642105886181469,0.54307774396028763,0.53972579711225266,0.53636527159521241,0.53299622082302267,0.52961869834504482,0.52623275784529255,0.52283845314158073,0.51943583818466854,0.51602496705740231,0.5126058939738567,0.50917867327847144,0.50574335944518922,0.5023000070765884,0.49884867090301643,0.49538940578171869,0.49192226669596789,0.48844730875418885,0.48496458718908309,0.48147415735675164,0.47797607473581383,0.47447039492652687,0.4709571736499007,0.46743646674681394,0.46390833017712457,0.46037282001878216,0.45682999246693523,0.45327990383303851,0.44972261054395857,0.44615816914107559,0.44258663627938616,0.4390080687266012,0.43542252336224541,0.43183005717675133,0.42823072727055533,0.4246245908531886,0.42101170524236825,0.41739212786308721,0.41376591624669978,0.41013312803000879,0.40649382095434827,0.40284805286466679,0.39919588170860687,0.39553736553558511,0.3918725624958686,0.38820153083965075,0.38452432891612653,0.38084101517256325,0.37715164815337326,0.37345628649918206,0.36975498894589748,0.3660478143237747,0.36233482155648278,0.35861606966016668,0.35489161774250977,0.35116152500179498,0.34742585072596238,0.34368465429166878,0.33993799516334183,0.33618593289223692,0.33242852711548881,0.32866583755516532,0.32489792401731687,0.32112484639102634,0.31734666464745764,0.31356343883890136,0.3097752290978219,0.30598209563589962,0.30218409874307606,0.29838129878659347,0.2945737562100374,0.29076153153237416,0.28694468534698991,0.2831232783207277,0.27929737119292214,0.27546702477443563,0.2716322999466898,0.26779325766069989,0.26394995893610396,0.26010246486019506,0.25625083658694825,0.25239513533605035,0.24853542239192566,0.24467175910276218,0.24080420687953732,0.23693282719504027,0.23305768158289669,0.22917883163658884,0.2252963390084784,0.22141026540882472,0.21752067260480584,0.21362762241953503,0.20973117673107899,0.20583139747147478,0.20192834662574405,0.19802208623090961,0.19411267837500745,0.1902001851961018,0.18628466888129561,0.18236619166574403,0.17844481583166347,0.17452060370734246,0.17059361766615161,0.16666392012555059,0.16273157354609796,0.15879664043045646,0.15485918332240142,0.15091926480582488,0.14697694750374257,0.14303229407729715,0.13908536722476264,0.13513622968054881,0.13118494421420235,0.12723157362941087,0.12327618076300317,0.11931882848395194,0.11535957969237293,0.11139849731852684,0.10743564432181761,0.10347108368979233,0.099504878437140731,0.095537091604692106,0.091567786258414996,0.087597025488413124,0.083624872407924308,0.07965139015231551,0.075676641878081194,0.071700690761837882,0.067723599999320622,0.06374543280437929,0.059766252407972176,0.055786122057162796,0.051805105014112833,0.047823264555078376,0.043840663969402414,0.039857366558510639,0.035873435634903778,0.031888934521151914,0.027903926548888677,0.02391847505780308,0.019932643394634523,0.015946494912164169,0.01196009296820974,0.0079735009246167249,0.0039867821462530291,2.8327694488239898e-16,0.99994589318780713,0.99978357860632294,0.9995130738201965,0.99913440810173104,0.99864762242771654,0.99805276947499499,0.99734991361476044,0.99653913090559287,0.99562050908522792,0.99459414756106224,0.99346015739939608,0.99221866131341507,0.99086979364991024,0.9894137003747403,0.98785053905703601,0.98618047885214899,0.98440370048334702,0.98252039622225706,0.98053076986805909,0.97843503672543197,0.97623342358125498,0.97392616868006587,0.97151352169827976,0.96899574371717101,0.96637310719462044,0.96364589593563144,0.96081440506161897,0.9578789409784727,0.95483982134340062,0.95169737503055307,0.94845194209543526,0.94510387373810767,0.94165353226518189,0.93810129105061413,0.93444753449530105,0.93069265798548195,0.92683706784995301,0.9228811813160972,0.91882542646473375,0.914670242183795,0.9104160781208317,0.90606339463435603,0.90161266274402385,0.89706436407966406,0.89241899082915999,0.88767704568518779,0.88283904179081796,0.87790550268398682,0.8728769622408421,0.86775396461797061,0.86253706419351284,0.85722682550717166,0.85182382319912175,0.84632864194782542,0.84074187640676257,0.83506413114008093,0.82929602055717411,0.82343816884619425,0.81749120990650603,0.81145578728009038,0.80533255408190452,0.79912217292920573,0.79282531586984717,0.78644266430955378,0.77997490893818389,0.77342274965498792,0.76678689549286938,0.76006806454165832,0.75326698387040336,0.74638438944869367,0.73942102606701687,0.73237764725616239,0.72525501520567937,0.71805390068139696,0.71077508294201763,0.70341934965479014,0.6959874968102735,0.6884803286361999,0.68089865751044631,0.67324330387312425,0.66551509613779669,0.65771487060183265,0.64984347135590848,0.64190175019266549,0.63389056651453479,0.62581078724073758,0.61766328671347348,0.60944894660330406,0.60116865581374468,0.59282331038507274,0.58441381339736365,0.57594107487276591,0.56740601167702343,0.55880954742025934,0.5501526123570275,0.54143614328564726,0.53266108344682872,0.52382838242160112,0.51493899602855575,0.50599388622041253,0.49699402097992446,0.48794037421512815,0.47883392565395388,0.46967566073820582,0.46046657051692375,0.45120765153913739,0.4418999057460275,0.43254434036250111,0.42314196778819657,0.413693805487928,0.40420087588158171,0.39466420623347642,0.38508482854119935,0.37546377942392983,0.36580210001026336,0.35610083582554691,0.34636103667873896,0.33658375654880607,0.32677005347066768,0.31692098942070279,0.30703763020182856,0.29712104532816741,0.28717230790931003,0.27719249453419059,0.2671826851545851,0.25714396296824593,0.24707741430168512,0.23698412849261888,0.22686519777208655,0.21672171714625635,0.20655478427793067,0.1963654993677641,0.18615496503520662,0.17592428619918529,0.16567456995853691,0.15540692547220475,0.14512246383921287,0.13482229797842893,0.12450754250813274,0.1141793136253984,0.10383872898530679,0.093486907580000084,0.083124969617591526,0.072754036400943717,0.062375230206328264,0.051989674161980304,0.041598492126560638,0.031202808567538987,0.020803748439511226,0.010402437062464019,-1.6081226496766366e-16,0.99999586167901344,0.99998344675030515,0.99996275531662915,0.99993378754924089,0.99989654368789627,0.99985102404084947,0.99979722898485013,0.99973515896514076,0.99966481449545286,0.99958619615800215,0.99949930460348457,0.99940414055107041,0.99930070478839861,0.99918899817156959,0.99906902162513944,0.99894077614211074,0.99880426278392553,0.99865948268045612,0.99850643702999553,0.99834512709924783,0.9981755542233175,0.99799771980569851,0.99781162531826273,0.99761727230124764,0.99741466236324339,0.99720379718118013,0.99698467850031336,0.99675730813421004,0.99652168796473306,0.99627781994202647,0.99602570608449847,0.99576534847880516,0.99549674927983323,0.99521991071068217,0.99493483506264557,0.99464152469519274,0.99433998203594831,0.99403020958067301,0.9937122098932426,0.99338598560562652,0.99305153941786661,0.99270887409805397,0.99235799248230694,0.99199889747474701,0.99163159204747497,0.99125607924054626,0.99087236216194607,0.99048044398756319,0.99008032796116408,0.98967201739436572,0.98925551566660874,0.98883082622512852,0.9883979525849278,0.98795689832874645,0.98750766710703286,0.98705026263791285,0.98658468870715954,0.98611094916816167,0.98562904794189177,0.9851389890168738,0.98464077644914993,0.98413441436224736,0.98361990694714363,0.98309725846223239,0.98256647323328827,0.98202755565343036,0.98148051018308646,0.98092534134995635,0.98036205374897345,0.97979065204226767,0.97921114095912642,0.97862352529595531,0.97802780991623883,0.97742399975049987,0.97681209979625916,0.97619211511799342,0.97556405084709386,0.97492791218182362,0.97428370438727463,0.97363143279532427,0.97297110280459076,0.9723027198803893,0.97162628955468577,0.97094181742605201,0.97024930915961871,0.96954877048702881,0.96884020720639019,0.96812362518222728,0.96739903034543306,0.9666664286932195,0.96592582628906831,0.96517722926268024,0.96442064380992509,0.96365607619278959,0.96288353273932614,0.96210301984360058,0.96131454396563842,0.96051811163137235,0.95971372943258759,0.95890140402686763,0.95808114213753903,0.95725295055361581,0.95641683612974315,0.95557280578614079,0.9547208665085456,0.9538610253481542,0.95299328942156381,0.95211766591071412,0.9512341620628274,0.95034278519034876,0.94944354267088538,0.94853644194714548,0.94762149052687727,0.94669869598280598,0.94576806595257157,0.94482960813866557,0.94388333030836757,0.94292924029368019,0.94196734599126486,0.94099765536237645,0.94002017643279712,0.93903491729276989,0.93804188609693195,0.93704109106424704,0.93603254047793727,0.93501624268541483,0.93399220609821265,0.93296043919191485,0.93192095050608681,0.93087374864420425,0.92981884227358202,0.92875624012530233,0.92768595099414286,0.92660798373850362,0.92552234728033345,0.92442905060505676,0.92332810276149868,0.92221951286181036,0.92110329008139336,0.91997944365882423,0.91884798289577729,0.91770891715694813,0.91656225586997619,0.91540800852536641,0.91424618467641061,0.91307679393910901,0.91189984599209006,0.91071535057653052,0.90952331749607485,0.90832375661675402,0.90711667786690398,0.90590209123708343,0.90468000677999105,0.90345043461038232,0.90221338490498582,0.90096886790241915,0.89971689390310394,0.89845747326918068,0.89719061642442322,0.89591633385415193,0.89463463610514737,0.89334553378556314,0.89204903756483744,0.89074515817360533,0.88943390640360986,0.88811529310761228,0.88678932919930276,0.88545602565320991,0.88411539350460977,0.88276744384943473,0.88141218784418141,0.88004963670581859,0.87867980171169413,0.87730269419944207,0.87591832556688787,0.87452670727195536,0.87312785083257083,0.87172176782656818,0.87030846989159316,0.86888796872500662,0.86746027608378817,0.86602540378443871,0.86458336370288247,0.86313416777436902,0.86167782799337411,0.86021435641350075,0.85874376514737916,0.85726606636656688,0.85578127230144752,0.85428939524113012,0.85279044753334687,0.85128444158435124,0.84977138985881528,0.84825130487972666,0.84672419922828424,0.84519008554379482,0.84364897652356807,0.84210088492281177,0.84054582355452567,0.83898380528939598,0.8374148430556887,0.83583894983914253,0.83425613868286141,0.83266642268720648,0.83106981500968791,0.82946632886485583,0.82785597752419104,0.82623877431599491,0.82461473262527951,0.82298386589365646,0.82134618761922573,0.81970171135646408,0.81805045071611282,0.81639241936506501,0.81472763102625256,0.81305609947853252,0.81137783855657308,0.80969286215073888,0.80800118420697664,0.80630281872669873,0.80459777976666835,0.80288608143888252,0.80116773791045537,0.79944276340350118,0.7977111721950163,0.7959729786167612,0.7942281970551418,0.79247684195109047,0.79071892779994635,0.78895446915133538,0.78718348060905019,0.78540597683092883,0.78362197252873378,0.7818314824680298,0.78003452146806218,0.77823110440163368,0.77642124619498165,0.7746049618276547,0.772782266332388,0.77095317479497971,0.76911770235416554,0.76727586420149385,0.76542767558119962,0.76357315179007823,0.76171230817735924,0.75984516014457892,0.75797172314545302,0.75609201268574899,0.7542060443231573,0.75231383366716265,0.75041539637891541,0.74851074817110119,0.74659990480781124,0.74468288210441225,0.74275969592741442,0.7408303621943414,0.73889489687359777,0.73695331598433678,0.73500563559632859,0.73305187182982634,0.73109204085543333,0.7291261588939687,0.72715424221633362,0.72517630714337655,0.72319237004575776,0.72120244734381456,0.71920655550742452,0.7172047110558698,0.71519693055770028,0.7131832306305963,0.71116362794123111,0.70913813920513324,0.70710678118654757,0.70506957069829723,0.70302652460164428,0.70097765980614946,0.69892299326953333,0.69686254199753517,0.69479632304377237,0.69272435350959949,0.69064665054396657,0.68856323134327713,0.68647411315124607,0.68437931325875667,0.6822788490037176,0.68017273777091947,0.67806099699189093,0.67594364414475439,0.67382069675408129,0.67169217239074708,0.66955808867178579,0.66741846326024445,0.66527331386503641,0.6631226582407953,0.66096651418772756,0.65880489955146582,0.65663783222292027,0.65446533013813146,0.65228741127812118,0.65010409366874433,0.64791539538053877,0.64572133452857694,0.64352192927231477,0.64131719781544216,0.63910715840573196,0.6368918293348893,0.63467122893839956,0.63244537559537728,0.63021428772841359,0.62797798380342418,0.62573648232949586,0.62348980185873359,0.62123796098610762,0.61898097834929833,0.61671887262854319,0.6144516625464812,0.61217936686799845,0.60990200440007292,0.60761959399161825,0.60533215453332823,0.60303970495752035,0.60074226423797905,0.59843985138979838,0.59613248546922548,0.59382018557350169,0.59150297084070558,0.58918086044959372,0.58685387361944252,0.58452202960988886,0.5821853477207708,0.57984384729196758,0.57749754770324002,0.5751464683740698,0.57279062876349873,0.5704300483699678,0.56806474673115581,0.56569474342381765,0.56332005806362206,0.5609407103049896,0.55855671984092981,0.55616810640287828,0.55377488976053313,0.55137708972169175,0.54897472613208653,0.54656781887522088,0.54415638787220433,0.54174045308158802,0.5393200344991993,0.5368951521579759,0.53446582612780125,0.53203207651533657,0.52959392346385659,0.52715138715308085,0.52470448779900813,0.52225324565374809,0.51979768100535462,0.51733781417765679,0.51487366553009206,0.51240525545753624,0.50993260439013599,0.5074557327931386,0.50497466116672385,0.50248941004583303,0.50000000000000011,0.49750645163318041,0.49500878558358147,0.49250702252349071,0.49000118315910507,0.48749128823036025,0.48497735851075752,0.48245941480719351,0.47993747795978642,0.47741156884170499,0.47488170835899418,0.47234791745040394,0.46981021708721404,0.46726862827306215,0.46472317204376862,0.46217386946716366,0.45962074164291161,0.45706380970233773,0.45450309480825191,0.45193861815477487,0.44937040096716135,0.44679846450162591,0.4442228300451655,0.44164351891538467,0.43906055246031783,0.43647395205825401,0.43388373911755818,0.43128993507649593,0.42869256140305423,0.42609163959476548,0.42348719117852784,0.42087923771042884,0.41826780077556519,0.41565290198786586,0.41303456298991148,0.41041280545275693,0.40778765107575021,0.40515912158635475,0.40252723873996754,0.39989202431974108,0.39725350013640143,0.39461168802806834,0.39196660986007525,0.38931828752478675,0.38666674294141906,0.3840119980558569,0.38135407484047368,0.37869299529394779,0.37602878144108232,0.37336145533262105,0.37069103904506767,0.36801755468050129,0.36534102436639521,0.36266147025543211,0.35997891452532249,0.35729337937861927,0.35460488704253579,0.35191345976876015,0.34921911983327264,0.34652188953615992,0.34382179120143191,0.34111884717683533,0.33841307983367058,0.33570451156660486,0.33299316479348834,0.33027906195516715,0.32756222551529912,0.32484267796016636,0.32212044179849075,0.319395539561246,0.31666799380147265,0.31393782709409007,0.31120506203571102,0.30846972124445304,0.30573182735975302,0.3029914030421782,0.3002484709732392,0.2975030538552032,0.29475517441090432,0.29200485538355736,0.28925211953656776,0.28649698965334497,0.28373948853711228,0.28097963901071954,0.27821746391645275,0.27545298611584668,0.27268622848949386,0.26991721393685708,0.26714596537607793,0.26437250574378901,0.26159685799492233,0.25881904510252096,0.25603909005754721,0.25325701586869415,0.25047284556219335,0.24768660218162608,0.24489830878773081,0.24210798845821407,0.23931566428755782,0.23652135938682994,0.23372509688349119,0.23092689992120563,0.22812679165964725,0.22532479527431004,0.22252093395631445,0.21971523091221723,0.21690770936381745,0.21409839254796631,0.2112873037163728,0.20847446613541321,0.20565990308593662,0.20284363786307422,0.20002569377604468,0.19720609414796211,0.19438486231564361,0.19156202162941449,0.18873759545291693,0.18591160716291472,0.18308408014910157,0.18025503781390587,0.17742450357229853,0.17459250085159764,0.17175905309127626,0.16892418374276658,0.16608791626926764,0.16325027414554949,0.16041128085776046,0.15757095990323108,0.15472933479028145,0.1518864290380248,0.14904226617617464,0.14619686974484827,0.14335026329437367,0.14050247038509278,0.1376535145871684,0.13480341948038724,0.13195220865396651,0.12909990570635696,0.12624653424504934,0.12339211788637719,0.12053668025532323,0.11768024498532194,0.11482283571806583,0.11196447610330791,0.1091051897986678,0.10624500046943411,0.10338393178837031,0.10052200743551712,0.097659251097998181,0.094795686469822532,0.091931337251689171,0.089066227150791474,0.086200379880619543,0.083333819160765613,0.080466568716726014,0.077598652279706568,0.074730093586424393,0.071860916378913189,0.06899114440432505,0.066120801414735572,0.063249911166945602,0.060378497422286286,0.057506583946420706,0.054634194509148928,0.051761352884209494,0.048888082849084406,0.046014408184800612,0.043140352675734885,0.040265940109415241,0.037391194276325826,0.034516138969708218,0.031640797985366287,0.028765195121467465,0.025889354178347559,0.02301329895831198,0.020137053265440522,0.017260640905388574,0.014384085685191849,0.011507411413067572,0.0086306418982192157,0.0057538009506376475,0.0028769123809058474,6.123233995736766e-17,0.99999838124488472,0.99999352498477945,0.9999854312354064,0.99997410002296927,0.99995953138415294,0.99994172536612347,0.99992068202652806,0.99989640143349467,0.9998688836656322,0.99983812881202938,0.99980413697225556,0.99976690825635972,0.99972644278487,0.99968274068879404,0.99963580210961756,0.99958562719930488,0.99953221612029763,0.99947556904551493,0.99941568615835208,0.99935256765268055,0.99928621373284732,0.99921662461367367,0.99914380052045526,0.99906774168896073,0.99898844836543133,0.99890592080658014,0.99882015927959078,0.99873116406211715,0.99863893544228211,0.99854347371867702,0.9984447792003599,0.99834285220685537,0.99823769306815313,0.99812930212470685,0.99801767972743349,0.99790282623771165,0.99778474202738066,0.99766342747873937,0.99753888298454474,0.9974111089480111,0.99728010578280801,0.99714587391305964,0.99700841377334293,0.99686772580868666,0.99672381047456937,0.99657666823691859,0.99642629957210871,0.99627270496695997,0.99611588491873626,0.99595583993514425,0.99579257053433112,0.99562607724488328,0.99545636060582443,0.99528342116661395,0.99510725948714507,0.99492787613774303,0.99474527169916305,0.99455944676258923,0.99437040192963144,0.99417813781232423,0.99398265503312488,0.99378395422491073,0.99358203603097772,0.99337690110503796,0.99316855011121807,0.99295698372405639,0.99274220262850132,0.99252420751990877,0.99230299910404018,0.99207857809706013,0.99185094522553385,0.99162010122642508,0.99138604684709375,0.99114878284529317,0.99090830998916801,0.9906646290572515,0.99041774083846346,0.99016764613210662,0.98991434574786552,0.98965784050580252,0.989398131236356,0.98913521878033739,0.98886910398892858,0.98859978772367874,0.98832727085650207,0.98805155426967484,0.98777263885583222,0.98749052551796568,0.98720521516942017,0.9869167087338907,0.9866250071454199,0.98633011134839466,0.98603202229754316,0.98573074095793167,0.98542626830496161,0.98511860532436646,0.98480775301220802,0.98449371237487404,0.98417648442907424,0.9838560702018373,0.98353247073050754,0.9832056870627417,0.98287572025650505,0.98254257138006862,0.98220624151200531,0.98186673174118644,0.98152404316677844,0.98117817689823905,0.9808291340553138,0.98047691576803264,0.98012152317670564,0.9797629574319201,0.9794012196945362,0.97903631113568368,0.97866823293675753,0.97829698628941497,0.97792257239557068,0.97754499246739335,0.97716424772730204,0.97678033940796161,0.97639326875227928,0.9760030370134003,0.97560964545470374,0.97521309534979883,0.97481338798252071,0.97441052464692601,0.97400450664728888,0.97359533529809683,0.97318301192404622,0.97276753786003811,0.97234891445117422,0.97192714305275196,0.97150222503026062,0.97107416175937655,0.97064295462595918,0.97020860502604578,0.96977111436584784,0.9693304840617456,0.96888671554028449,0.96843981023816927,0.9679897696022608,0.96753659508956991,0.967080288167254,0.96662085031261125,0.96615828301307638,0.9656925877662158,0.96522376607972271,0.96475181947141209,0.96427674946921582,0.96379855761117794,0.9633172454454495,0.96283281453028358,0.96234526643403018,0.96185460273513135,0.96136082502211573,0.96086393489359367,0.96036393395825215,0.95986082383484927,0.95935460615220913,0.95884528254921686,0.95833285467481266,0.95781732418798715,0.95729869275777535,0.95677696206325202,0.95625213379352547,0.95572420964773275,0.95519319133503355,0.95465908057460525,0.95412187909563673,0.95358158863732323,0.95303821094886088,0.95249174778944035,0.95194220092824167,0.95138957214442854,0.95083386322714225,0.95027507597549599,0.94971321219856941,0.94914827371540211,0.94858026235498827,0.94800917995627043,0.94743502836813376,0.94685780944939979,0.94627752506882079,0.94569417710507331,0.9451077674467524,0.94451829799236531,0.94392577065032535,0.94333018733894602,0.94273154998643416,0.94212986053088454,0.94152512092027285,0.94091733311244963,0.94030649907513442,0.93969262078590843,0.93907570023220888,0.93845573941132254,0.93783274033037878,0.93720670500634362,0.93657763546601269,0.9359455337460052,0.93531040189275683,0.93467224196251353,0.93403105602132441,0.93338684614503575,0.93273961441928355,0.93208936293948708,0.93143609381084225,0.93077980914831449,0.93012051107663218,0.92945820173027938,0.92879288325348952,0.92812455780023806,0.92745322753423531,0.92677889462891994,0.92610156126745169,0.92542122964270424,0.92473790195725802,0.92405158042339364,0.9233622672630839,0.92266996470798734,0.92197467499944052,0.92127640038845093,0.92057514313568989,0.91987090551148476,0.9191636897958122,0.91845349827829026,0.91774033325817128,0.91702419704433424,0.91630509195527754,0.91558302031911121,0.9148579844735496,0.91412998676590362,0.91339902955307328,0.91266511520154014,0.91192824608735934,0.91118842459615224,0.91044565312309844,0.90969993407292815,0.90895126985991448,0.90819966290786547,0.90744511565011632,0.9066876305295215,0.90592720999844678,0.90516385651876152,0.90439757256183029,0.90362836060850538,0.90285622314911818,0.90208116268347183,0.90130318172083224,0.90052228277992108,0.89973846838890637,0.89895174108539533,0.89816210341642566,0.89736955793845741,0.89657410721736464,0.89577575382842722,0.89497450035632231,0.89417034939511642,0.89336330354825644,0.89255336542856134,0.89174053765821437,0.89092482286875363,0.89010622370106418,0.88928474280536896,0.88846038284122109,0.88763314647749414,0.88680303639237434,0.88597005527335171,0.88513420581721114,0.88429549073002356,0.88345391272713791,0.88260947453317151,0.88176217888200159,0.88091202851675654,0.8800590261898068,0.87920317466275621,0.8783444767064329,0.87748293510088016,0.87661855263534771,0.87575133210828282,0.8748812763273206,0.87400838810927572,0.87313267028013275,0.87225412567503691,0.87137275713828544,0.87048856752331805,0.86960155969270758,0.86871173651815103,0.86781910088045999,0.86692365566955154,0.86602540378443871,0.86512434813322092,0.86422049163307546,0.86331383721024668,0.86240438780003759,0.86149214634680016,0.86057711580392515,0.85965929913383365,0.8587386993079662,0.85781531930677424,0.85688916211971011,0.85596023074521699,0.85502852819071984,0.85409405747261502,0.85315682161626127,0.85221682365596929,0.85127406663499183,0.85032855360551463,0.8493802876286457,0.84842927177440586,0.84747550912171854,0.84651900275840031,0.84555975578115017,0.84459777129554003,0.84363305241600461,0.84266560226583098,0.84169542397714903,0.84072252069092079,0.83974689555693072,0.83876855173377507,0.83778749238885208,0.83680372069835129,0.83581723984724365,0.8348280530292711,0.83383616344693612,0.8328415743114912,0.83184428884292894,0.83084431026997119,0.82984164183005882,0.82883628676934129,0.82782824834266577,0.82681752981356693,0.82580413445425649,0.82478806554561224,0.8237693263771676,0.82274792024710119,0.82172385046222562,0.82069712033797748,0.81966773319840602,0.8186356923761624,0.81760100121248969,0.81656366305721095,0.81552368126871899,0.81448105921396563,0.81343580026845042,0.81238790781620973,0.81133738524980625,0.81028423597031751,0.80922846338732513,0.80817007091890358,0.80710906199160926,0.80604544004046952,0.80497920850897131,0.80391037084904993,0.80283893052107858,0.80176489099385595,0.80068825574459623,0.79960902825891689,0.79852721203082799,0.79744281056272082,0.79635582736535604,0.79526626595785288,0.79417412986767755,0.79307942263063191,0.79198214779084175,0.79088230890074562,0.78977990952108312,0.78867495322088355,0.78756744357745445,0.78645738417636923,0.78534477861145691,0.78422963048478911,0.78311194340666945,0.78199172099562131,0.78086896687837604,0.77974368468986177,0.77861587807319099,0.77748555067964942,0.77635270616868302,0.77521734820788801,0.77407948047299702,0.77293910664786869,0.77179623042447498,0.77065085550288914,0.7695029855912745,0.76835262440587138,0.76719977567098607,0.76604444311897801,0.7648866304902483,0.76372634153322694,0.76256358000436153,0.76139834966810427,0.7602306542969004,0.75906049767117545,0.7578878835793238,0.75671281581769523,0.75553529819058385,0.75435533451021486,0.7531729285967329,0.75198808427818919,0.75080080539052918,0.74961109577758056,0.7484189592910403,0.74722439979046273,0.74602742114324605,0.74482802722462105,0.74362622191763794,0.74242200911315348,0.74121539270981907,0.74000637661406765,0.73879496474010109,0.73758116100987792,0.73636496935310014,0.73514639370720036,0.73392543801733012,0.73270210623634557,0.73147640232479616,0.73024833025091074,0.72901789399058503,0.72778509752736942,0.72654994485245483,0.72531243996466055,0.72407258687042153,0.72283038958377477,0.72158585212634663,0.72033897852734008,0.71908977282352082,0.71783823905920541,0.71658438128624702,0.71532820356402316,0.71406970995942187,0.71280890454682932,0.71154579140811569,0.71028037463262272,0.70901265831715032,0.70774264656594299,0.70647034349067661,0.70519575321044559,0.70391887985174906,0.70263972754847726,0.70135830044189917,0.70007460268064792,0.69878863842070837,0.69750041182540279,0.6962099270653781,0.69491718831859173,0.69362219977029893,0.69232496561303791,0.69102549004661795,0.68972377727810419,0.68841983152180519,0.68711365699925875,0.68580525793921798,0.68449463857763848,0.68318180315766375,0.68186675592961199,0.6805495011509618,0.67923004308633927,0.67790838600750314,0.67658453419333198,0.67525849192980936,0.67393026351001084,0.67259985323408944,0.67126726540926207,0.66993250434979545,0.66859557437699213,0.66725647981917657,0.6659152250116811,0.66457181429683188,0.66322625202393493,0.66187854254926171,0.66052869023603566,0.65917669945441726,0.65782257458149063,0.65646632000124872,0.65510794010457973,0.6537474392892525,0.65238482195990222,0.65102009252801663,0.64965325541192109,0.64828431503676476,0.64691327583450609,0.64554014224389855,0.64416491871047621,0.64278760968653936,0.64140821963113992,0.6400267530100674,0.63864321429583415,0.63725760796766084,0.63586993851146223,0.63448021041983227,0.63308842819202993,0.63169459633396441,0.6302987193581806,0.62890080178384444,0.62750084813672857,0.62609886294919692,0.62469485076019116,0.62328881611521514,0.62188076356632016,0.62047069767209084,0.61905862299763004,0.61764454411454395,0.61622846560092726,0.6148103920413488,0.61339032802683624,0.61196827815486121,0.61054424702932497,0.60911823926054265,0.60769025946522892,0.60626031226648314,0.60482840229377399,0.60339453418292455,0.60195871257609768,0.60052094212178031,0.59908122747476911,0.59763957329615514,0.59619598425330822,0.59475046501986273,0.59330302027570214,0.59185365470694351,0.59040237300592269,0.58894917987117901,0.58749408000744019,0.5860370781256069,0.58457817894273767,0.58311738718203354,0.58165470757282256,0.58019014485054521,0.57872370375673809,0.57725538903901941,0.57578520545107303,0.57431315775263325,0.57283925070946984,0.57136348909337153,0.56988587768213195,0.568406421259533,0.56692512461532996,0.56544199254523608,0.56395702985090645,0.56247024133992307,0.56098163182577887,0.55949120612786252,0.55799896907144231,0.55650492548765096,0.55500908021346995,0.55351143809171366,0.55201200397101369,0.55051078270580345,0.54900777915630217,0.54750299818849912,0.54599644467413821,0.54448812349070164,0.54297803952139478,0.54146619765513004,0.53995260278651069,0.53843725981581592,0.53692017364898381,0.53540134919759652,0.53388079137886357,0.53235850511560678,0.53083449533624305,0.52930876697477014,0.5277813249707487,0.52625217426928828,0.52472131982102987,0.52318876658213009,0.52165451951424602,0.52011858358451801,0.51858096376555474,0.5170416650354156,0.51550069237759644,0.51395805078101175,0.51241374523997929,0.51086778075420458,0.50932016232876298,0.50777089497408523,0.50621998370594012,0.50466743354541888,0.50311324951891834,0.50155743665812547,0.50000000000000011,0.49844094458675925,0.49688027546586111,0.49531799768998752,0.49375411631702915,0.4921886364100676,0.49062156303736049,0.48905290127232343,0.48748265619351538,0.48591083288462061,0.484337436434433,0.48276247193684002,0.48118594449080498,0.47960785920035204,0.47802822117454796,0.47644703552748752,0.47486430737827501,0.47328004185100936,0.47169424407476623,0.47010691918358199,0.46851807231643755,0.46692770861724059,0.46533583323481015,0.46374245132285874,0.46214756803997697,0.46055118854961541,0.45895331802006939,0.45735396162446085,0.45575312454072231,0.45415081195158064,0.45254702904453881,0.45094178101186078,0.44933507305055309,0.44772691036234957,0.44611729815369305,0.44450624163571989,0.44289374602424181,0.4412798165397297,0.43966445840729718,0.43804767685668228,0.43642947712223223,0.43480986444288483,0.43318884406215313,0.43156642122810696,0.42994260119335664,0.42831738921503654,0.4266907905547867,0.42506281047873734,0.42343345425749013,0.42180272716610301,0.4201706344840711,0.41853718149531172,0.41690237348814524,0.41526621575527922,0.4136287135937915,0.41198987230511158,0.41034969719500536,0.40870819357355609,0.40706536675514904,0.40542122205845227,0.40377576480640165,0.40212900032618154,0.40048093394920858,0.39883157101111505,0.39718091685172979,0.39552897681506305,0.39387575624928711,0.39222126050672096,0.39056549494381099,0.38890846492111558,0.38725017580328625,0.38559063295905072,0.38392984176119627,0.3822678075865511,0.38060453581596826,0.37894003183430663,0.37727430103041537,0.37560734879711449,0.37393918053117942,0.37226980163332168,0.37059921750817243,0.36892743356426522,0.36725445521401728,0.36558028787371349,0.36390493696348741,0.36222840790730515,0.36055070613294621,0.35887183707198766,0.35719180615978519,0.35551061883545571,0.35382828054186083,0.35214479672558757,0.35046017283693248,0.34877441432988221,0.34708752666209752,0.34539951529489432,0.34371038569322648,0.34202014332566882,0.34032879366439783,0.33863634218517574,0.33694279436733116,0.33524815569374289,0.33355243165082049,0.33185562772848842,0.33015774942016646,0.32845880222275281,0.32675879163660682,0.32505772316552972,0.32335560231674859,0.32165243460089654,0.31994822553199698,0.31824298062744377,0.31653670540798512,0.31482940539770438,0.31312108612400252,0.31141175311758112,0.30970141191242284,0.30799006804577522,0.30627772705813117,0.3045643944932126,0.30285007589795065,0.30113477682246992,0.29941850282006838,0.29770125944720055,0.29598305226345972,0.29426388683155891,0.29254376871731419,0.29082270348962508,0.28910069672045835,0.28737775398482807,0.28565388086077942,0.28392908292936903,0.28220336577464772,0.28047673498364273,0.27874919614633858,0.27702075485566036,0.27529141670745394,0.27356118730046974,0.27183007223634276,0.27009807711957606,0.26836520755752147,0.26663146916036162,0.26489686754109276,0.26316140831550494,0.2614250971021656,0.2596879395223996,0.25794994120027287,0.2562111077625725,0.25447144483878931,0.25273095806110024,0.25098965306434867,0.24924753548602771,0.24750461096626045,0.24576088514778321,0.24401636367592586,0.24227105219859482,0.24052495636625373,0.23877808183190544,0.23703043425107456,0.23528201928178763,0.23353284258455639,0.23178290982235786,0.23003222666061771,0.22828079876719015,0.22652863181234134,0.22477573146872948,0.2230221034113872,0.22126775331770365,0.2195126868674048,0.2177569097425367,0.21600042762744526,0.21424324620875979,0.21248537117537264,0.21072680821842266,0.2089675630312752,0.20720764130950434,0.20544704875087508,0.20368579105532339,0.20192387392493957,0.20016130306394786,0.19839808417868993,0.19663422297760449,0.19486972517121071,0.19310459647208802,0.19133884259485845,0.18957246925616869,0.18780548217467002,0.18603788707100166,0.18426968966777038,0.18250089568953384,0.18073151086278019,0.17896154091591132,0.17719099157922286,0.17541986858488612,0.17364817766693041,0.17187592456122278,0.17010311500545117,0.16832975473910425,0.16655584950345445,0.16478140504153768,0.16300642709813651,0.16123092141975992,0.15945489375462552,0.15767834985264148,0.15590129546538642,0.15412373634609255,0.15234567824962525,0.15056712693246621,0.14878808815269334,0.14700856766996268,0.14522857124549038,0.14344810464203267,0.14166717362386885,0.13988578395678086,0.13810394140803639,0.13632165174636848,0.13453892074195861,0.13275575416641644,0.13097215779276172,0.12918813739540647,0.12740369875013449,0.1256188476340846,0.1238335898257301,0.12204793110486187,0.12026187725256783,0.11847543405121605,0.11668860728443445,0.11490140273709273,0.11311382619528436,0.11132588344630624,0.10953758027864174,0.10774892248194022,0.10595991584700006,0.10417056616574806,0.1023808792312226,0.1005908608375532,0.098800516779942504,0.097009852854648165,0.095218874858962507,0.093427588591195571,0.091635999850654515,0.089844114437626674,0.088051938153358947,0.086259476800040841,0.08446673618078411,0.082673722099604621,0.080880440361404238,0.079086896771950507,0.07729309713785959,0.075499047266575706,0.07370475296635412,0.071910220046240522,0.070115454316054066,0.06832046158636694,0.066525247668486234,0.064729818374435824,0.062934179516935973,0.061138336909386304,0.059342296365845183,0.057546063701012694,0.055749644730210234,0.053953045269362378,0.052156271134978713,0.050359328144133436,0.0485622221144483,0.046764958864072025,0.044967544211663213,0.043169983976369744,0.041372283977811716,0.039574450036061047,0.037776487971623286,0.035978403605419464,0.034180202758765668,0.032381891253355971,0.030583474911241831,0.028784959554815002,0.0269863510067869,0.025187655090171551,0.023388877628265158,0.021590024444627938,0.01979110136306592,0.01799211420761054,0.016193068802501567,0.014393970972166456,0.012594826541203285,0.010795641334360111,0.0089964211765178916,0.0071971718926700755,0.0053978993079044028,0.0035986092473847182,0.0017993075363305572,6.123233995736766e-17,0.99998620040365649,0.99994480199548375,0.99987580591804448,0.99977921407557446,0.99965502913393089,0.99950325452051769,0.99932389442419178,0.99911695379514687,0.99888243834477741,0.99862035454552045,0.99833070963067716,0.99801351159421348,0.99766876919053915,0.99729649193426617,0.9968966900999463,0.99646937472178732,0.99601455759334867,0.99553225126721601,0.99502246905465452,0.99448522502524173,0.99392053400647906,0.99332841158338292,0.99270887409805397,0.99206193864922676,0.9913876230917974,0.99068594603633076,0.98995692684854719,0.98920058564878777,0.98841694331145902,0.98760602146445664,0.98676784248856908,0.98590242951685936,0.98500980643402691,0.98408999787574802,0.98314302922799657,0.98216892662634259,0.98116771695523142,0.98013942784724173,0.97908408768232291,0.97800172558701126,0.97689237143362706,0.97575605583944913,0.97459281016587074,0.97340266651753315,0.97218565774144039,0.97094181742605201,0.96967117990035678,0.96837378023292442,0.96704965423093836,0.96569883843920734,0.96432137013915664,0.96291728734779936,0.96148662881668689,0.96002943403083973,0.95854574320765762,0.95703559729580945,0.95549903797410329,0.95393610765033576,0.95234684946012227,0.95073130726570554,0.94908952565474614,0.947421549939091,0.94572742615352323,0.94400720105449176,0.94226092211882051,0.94048863754239831,0.93869039623884865,0.93686624783817973,0.93501624268541483,0.93314043183920259,0.93123886707040804,0.92931160086068365,0.92735868640102082,0.92538017759028213,0.92337612903371336,0.92134659604143687,0.91929163462692476,0.91721130150545305,0.91510565409253641,0.91297475050234356,0.91081864954609315,0.90863741073043114,0.90643109425578772,0.90419976101471655,0.90194347259021357,0.89966229125401787,0.89735627996489253,0.89502550236688772,0.89267002278758323,0.89028990623631399,0.88788521840237522,0.88545602565320991,0.88300239503257671,0.88052439425869999,0.87802209172240053,0.87549555648520816,0.87294485827745583,0.8703700674963547,0.86777125520405185,0.86514849312566844,0.86250185364732035,0.85983140981412065,0.85713723532816311,0.85441940454648857,0.85167799247903242,0.84891307478655464,0.84612472777855141,0.84331302841114886,0.8404780542849799,0.83761988364304152,0.83473859536853601,0.83183426898269364,0.82890698464257806,0.82595682313887364,0.82298386589365635,0.81998819495814601,0.81696989301044209,0.81392904335324134,0.8108657299115396,0.80778003723031477,0.80467205047219381,0.80154185541510192,0.79838953844989591,0.79521518657797885,0.79201888740889992,0.78880072915793553,0.78556080064365552,0.78229919128547132,0.77901599110116793,0.7757112907044198,0.77238518130229017,0.76903775469271318,0.76566910326196091,0.7622793199820932,0.75886849840839199,0.75543673267677913,0.7519841175012183,0.74851074817110108,0.74501672054861678,0.74150213106610707,0.73796707672340434,0.73441165508515438,0.73083596427812414,0.72724010298849318,0.7236241704591303,0.71998826648685388,0.71633249141967836,0.71265694615404418,0.7089617321320334,0.70524695133856974,0.70151270629860429,0.69775910007428532,0.69398623626211431,0.69019421899008659,0.68638315291481755,0.68255314321865412,0.67870429560677181,0.67483671630425768,0.67095051205317802,0.66704579010963272,0.66312265824079519,0.65918122472193785,0.65522159833344362,0.65124388835780445,0.64724820457660415,0.64323465726748952,0.63920335720112609,0.63515441563814101,0.63108794432605275,0.62700405549618676,0.62290286186057742,0.61878447660885838,0.61464901340513778,0.61049658638486126,0.60632731015166241,0.60214129977419928,0.59793867078297902,0.5937195391671688,0.589484021371395,0.58523223429252946,0.58096429527646309,0.57668032211486708,0.5723804330419423,0.56806474673115581,0.56373338229196557,0.55938645926653341,0.55502409762642535,0.55064641776930101,0.54625354051559027,0.54184558710515895,0.53742267919396258,0.53298493885068865,0.52853248855338819,0.52406545118609482,0.51958395003543356,0.51508810878721822,0.5105780515230377,0.50605390271683148,0.50151578723145418,0.4969638303152295,0.49239815759849348,0.48781889509012721,0.48322616917407901,0.47862010660587656,0.47400083450912783,0.46936848037201373,0.46472317204376862,0.4600650377311522,0.45539420599491087,0.45071080574622979,0.44601496624317477,0.44130681708712516,0.43658648821919671,0.43185410991665535,0.42710981278932175,0.42235372777596647,0.41758598614069625,0.41280671946933112,0.40801605966577309,0.40321413894836478,0.39840108984624156,0.39357704519567294,0.3887421381363968,0.38389650210794468,0.37904027084595898,0.37417357837850213,0.36929655902235725,0.36440934737932129,0.35951207833249005,0.35460488704253557,0.34968790894397594,0.344761279741437,0.33982513540590753,0.33487961217098627,0.32992484652912157,0.32496097522784528,0.31998813526599795,0.31500646388994791,0.31001609858980328,0.3050171770956176,0.30000983737358844,0.29499421762224964,0.28997045626865708,0.2849386919645685,0.27989906358261635,0.27485171021247556,0.26979677115702422,0.2647343859284994,0.25966469424464667,0.25458783602486329,0.24950395138633769,0.24441318064018164,0.23931566428755782,0.23421154301580235,0.22910095769454167,0.2239840493718048,0.21886095927013052,0.21373182878266969,0.20859679946928295,0.20345601305263375,0.198309611414277,0.19315773659074315,0.18800053076961817,0.18283813628561943,0.17767069561666657,0.17249835137995059,0.16732124632799669,0.16213952334472476,0.15695332544150584,0.15176279575321522,0.14656807753428189,0.14136931415473494,0.13616664909624659,0.1309602259481723,0.12575018840358773,0.12053668025532301,0.11531984539199407,0.1100998277940315,0.10487677152970708,0.09965082075115661,0.094422119690402803,0.08919081265537375,0.083957044025920302,0.078720958249831371,0.073482699838847199,0.068242413364671003,0.063000243454978941,0.057756334789428439,0.052510832095665184,0.047263880145328778,0.042015623750057102,0.036766207757489677,0.031515777047269995,0.026264476527047123,0.021012451128475537,0.015759845803216429,0.010506805518936284,0.0052534752553060962,6.123233995736766e-17,0.99999864161192986,0.99999456645140972,0.99998777452951104,0.99997826586468574,0.99996604048276705,0.99995109841696828,0.99993343970788384,0.99991306440348848,0.99988997255913725,0.99986416423756563,0.99983563950888898,0.99980439845060265,0.99977044114758162,0.99973376769208022,0.99969437818373208,0.9996522727295496,0.99960745144392393,0.99955991444862446,0.99950966187279855,0.9994566938529712,0.99940101053304464,0.99934261206429809,0.99928149860538706,0.99921767032234299,0.99915112738857326,0.99908186998486004,0.99900989829936016,0.99893521252760453,0.99885781287249786,0.9987776995443175,0.99869487276071345,0.99860933274670771,0.99852107973469317,0.99843011396443349,0.99833643568306241,0.99824004514508291,0.9981409426123663,0.99803912835415221,0.99793460264704692,0.99782736577502362,0.99771741802942071,0.9976047597089418,0.99748939111965407,0.99737131257498834,0.99725052439573758,0.99712702691005617,0.99700082045345917,0.99687190536882109,0.99674028200637566,0.99660595072371394,0.9964689118857839,0.9963291658648894,0.99618671304068929,0.99604155380019566,0.99589368853777394,0.9957431176551409,0.99558984156136388,0.99543386067285977,0.99527517541339361,0.99511378621407776,0.9949496935133707,0.9947828977570754,0.99461339939833859,0.99444119889764948,0.99426629672283817,0.99408869334907479,0.99390838925886793,0.99372538494206331,0.99353968089584299,0.99335127762472297,0.99316017564055303,0.99296637546251432,0.99276987761711855,0.99257068263820636,0.99236879106694598,0.99216420345183165,0.9919569203486821,0.99174694232063898,0.99153426993816574,0.99131890377904552,0.9911008444283802,0.99088009247858788,0.99065664852940238,0.9904305131878709,0.99020168706835254,0.98997017079251659,0.98973596498934102,0.98949907029511042,0.98925948735341473,0.98901721681514732,0.98877225933850277,0.98852461558897575,0.98827428623935898,0.98802127196974121,0.9877655734675056,0.98750719142732779,0.98724612655117383,0.98698237954829859,0.98671595113524369,0.98644684203583533,0.98617505298118291,0.98590058470967623,0.98562343796698437,0.98534361350605271,0.9850611120871019,0.98477593447762501,0.98448808145238575,0.98419755379341622,0.98390435229001527,0.9836084777387456,0.98330993094343211,0.98300871271515966,0.98270482387227076,0.98239826524036333,0.98208903765228861,0.98177714194814869,0.98146257897529432,0.98114534958832278,0.98082545464907522,0.98050289502663468,0.98017767159732339,0.97984978524470057,0.97951923685955999,0.97918602733992777,0.97885015759105942,0.97851162852543805,0.97817044106277118,0.97782659612998879,0.97748009466124064,0.97713093759789371,0.97677912588852944,0.97642466048894161,0.97606754236213322,0.97570777247831453,0.97534535181489945,0.97498028135650405,0.97461256209494285,0.97424219502922693,0.97386918116556054,0.97349352151733903,0.97311521710514548,0.97273426895674819,0.97235067810709819,0.97196444559832573,0.97157557247973825,0.97118405980781697,0.97078990864621406,0.97039312006574996,0.96999369514441058,0.96959163496734391,0.96918694062685751,0.96877961322241524,0.96836965386063445,0.96795706365528311,0.96754184372727625,0.96712399520467363,0.96670351922267606,0.96628041692362265,0.9658546894569876,0.96542633797937727,0.96499536365452654,0.96456176765329638,0.96412555115366994,0.96368671534074979,0.96324526140675459,0.96280119055101587,0.96235450397997491,0.96190520290717885,0.96145328855327827,0.9609987621460232,0.9605416249202603,0.960081878117929,0.95961952298805842,0.95915456078676398,0.9586869927772439,0.95821682022977572,0.95774404442171313,0.957268666637482,0.95679068816857749,0.95631011031356006,0.95582693437805211,0.9553411616747346,0.95485279352334307,0.95436183125066454,0.9538682761905336,0.95337212968382889,0.95287339307846941,0.95237206772941074,0.95186815499864186,0.95136165625518054,0.95085257287507075,0.95034090624137801,0.94982665774418595,0.94930982878059267,0.94879042075470665,0.94826843507764347,0.94774387316752118,0.94721673644945703,0.94668702635556357,0.94615474432494462,0.9456198918036911,0.94508247024487768,0.94454248110855843,0.94399992586176307,0.94345480597849252,0.94290712293971557,0.94235687823336445,0.94180407335433092,0.94124870980446196,0.94069078909255599,0.94013031273435888,0.93956728225255925,0.939001699176785,0.93843356504359854,0.93786288139649332,0.93728964978588902,0.93671387176912757,0.93613554891046902,0.93555468278108689,0.93497127495906474,0.93438532702939081,0.9337968405839544,0.93320581722154172,0.9326122585478307,0.93201616617538741,0.93141754172366154,0.93081638681898149,0.93021270309455073,0.92960649219044267,0.92899775575359678,0.9283864954378136,0.92777271290375063,0.92715640981891745,0.92653758785767182,0.92591624870121425,0.92529239403758434,0.92466602556165545,0.92403714497513045,0.92340575398653713,0.92277185431122366,0.92213544767135325,0.92149653579590052,0.92085512042064599,0.92021120328817141,0.91956478614785575,0.91891587075586956,0.91826445887517072,0.91761055227549937,0.91695415273337355,0.91629526203208378,0.9156338819616886,0.91497001431900959,0.91430366090762649,0.91363482353787251,0.9129635040268288,0.91228970419832045,0.91161342588291061,0.91093467091789604,0.91025344114730211,0.9095697384218776,0.90888356459908981,0.90819492154311932,0.90750381112485523,0.90681023522188975,0.90611419571851337,0.90541569450570969,0.90471473348115006,0.90401131454918859,0.90330543962085719,0.90259711061385994,0.9018863294525683,0.90117309806801549,0.9004574183978914,0.89973929238653771,0.89901872198494193,0.89829570915073242,0.8975702558481734,0.89684236404815898,0.89611203572820819,0.89537927287245966,0.89464407747166608,0.89390645152318871,0.8931663970309921,0.89242391600563875,0.89167901046428322,0.89093168243066723,0.89018193393511369,0.88942976701452148,0.88867518371235976,0.88791818607866235,0.88715877617002237,0.88639695604958668,0.88563272778704982,0.88486609345864908,0.8840970551471582,0.88332561494188211,0.88255177493865122,0.8817755372398155,0.88099690395423902,0.88021587719729422,0.87943245909085588,0.87864665176329559,0.87785845734947598,0.87706787799074493,0.87627491583492945,0.87547957303633017,0.87468185175571544,0.87388175416031555,0.87307928242381649,0.87227443872635424,0.87146722525450904,0.87065764420129921,0.86984569776617515,0.86903138815501357,0.86821471758011148,0.86739568826017999,0.86657430242033828,0.86575056229210801,0.86492447011340656,0.86409602812854147,0.86326523858820425,0.862432103749464,0.86159662587576158,0.86075880723690334,0.8599186501090551,0.85907615677473548,0.85823132952281045,0.85738417064848649,0.85653468245330455,0.85568286724513398,0.85482872733816595,0.85397226505290735,0.8531134827161746,0.85225238266108694,0.85138896722706048,0.85052323875980174,0.84965519961130109,0.84878485213982668,0.84791219870991752,0.84703724169237793,0.84615998346427013,0.84528042640890821,0.84439857291585196,0.84351442538089982,0.84262798620608292,0.84173925779965775,0.84084824257610058,0.8399549429561004,0.83905936136655224,0.83816150024055069,0.83726136201738355,0.83635894914252484,0.83545426406762835,0.83454730925052079,0.83363808715519561,0.83272660025180545,0.83181285101665636,0.83089684193220026,0.82997857548702891,0.82905805417586675,0.82813528049956409,0.82721025696509032,0.8262829860855273,0.82535347038006257,0.82442171237398221,0.82348771459866399,0.82255147959157082,0.82161300989624375,0.82067230806229485,0.81972937664540024,0.81878421820729363,0.81783683531575901,0.81688723054462342,0.8159354064737504,0.81498136568903312,0.81402511078238671,0.8130666443517417,0.81210596900103682,0.81114308734021179,0.81017800198520074,0.80921071555792445,0.80824123068628362,0.80726955000415146,0.80629567615136721,0.80531961177372791,0.8043413595229818,0.80336092205682152,0.80237830203887617,0.80139350213870431,0.80040652503178678,0.79941737339951935,0.79842604992920585,0.79743255731405005,0.79643689825314878,0.79543907545148518,0.79443909161992032,0.79343694947518639,0.7924326517398792,0.79142620114245088,0.79041760041720255,0.78940685230427643,0.78839395954964886,0.78737892490512285,0.7863617511283203,0.78534244098267458,0.7843209972374231,0.78329742266759994,0.78227172005402812,0.78124389218331203,0.78021394184782977,0.77918187184572596,0.77814768498090381,0.77711138406301739,0.77607297190746427,0.7750324513353779,0.77398982517361981,0.77294509625477181,0.77189826741712841,0.77084934150468931,0.76979832136715143,0.76874520985990125,0.76769000984400682,0.76663272418621053,0.76557335575892071,0.76451190744020425,0.76344838211377863,0.76238278266900406,0.76131511200087587,0.76024537301001605,0.75917356860266594,0.7580997016906782,0.75702377519150899,0.75594579202820977,0.75486575512941922,0.75378366742935599,0.75269953186781002,0.75161335139013519,0.75052512894724033,0.74943486749558252,0.74834256999715798,0.74724823941949448,0.74615187873564304,0.74505349092417039,0.74395307896915053,0.74285064586015603,0.741746194592251,0.74063972816598223,0.73953124958737149,0.73842076186790684,0.73730826802453475,0.736193771079652,0.73507727406109735,0.73395878000214321,0.73283829194148742,0.73171581292324539,0.73059134599694142,0.72946489421750027,0.72833646064523916,0.72720604834585967,0.72607366039043897,0.72493929985542149,0.72380296982261105,0.72266467337916174,0.72152441361757047,0.72038219363566758,0.7192380165366089,0.71809188542886782,0.71694380342622577,0.71579377364776464,0.71464179921785786,0.71348788326616197,0.7123320289276085,0.71117423934239477,0.7100145176559759,0.70885286701905625,0.70768929058758046,0.70652379152272515,0.70535637299089049,0.7041870381636911,0.70301579021794824,0.70184263233568023,0.70066756770409433,0.69949059951557813,0.69831173096769084,0.69713096526315432,0.69594830560984466,0.69476375522078326,0.69357731731412875,0.69238899511316698,0.6911987918463034,0.69000671074705378,0.68881275505403594,0.68761692801095986,0.6864192328666201,0.68521967287488605,0.68401825129469407,0.68281497139003733,0.68160983642995798,0.68040284968853793,0.67919401444489014,0.67798333398314925,0.67677081159246288,0.6755564505669831,0.67434025420585719,0.67312222581321801,0.67190236869817621,0.67068068617481036,0.66945718156215861,0.66823185818420916,0.66700471936989092,0.66577576845306563,0.66454500877251788,0.66331244367194619,0.66207807649995376,0.66084191061004005,0.65960394936059108,0.65836419611487051,0.65712265424101002,0.65587932711200136,0.65463421810568589,0.65338733060474596,0.65213866799669584,0.65088823367387216,0.64963603103342538,0.64838206347730964,0.64712633441227374,0.64586884724985283,0.64460960540635803,0.64334861230286733,0.64208587136521678,0.64082138602399086,0.63955515971451316,0.63828719587683713,0.63701749795573659,0.63574606940069656,0.63447291366590397,0.6331980342102379,0.63192143449726013,0.63064311799520667,0.62936308817697717,0.6280813485201262,0.62679790250685319,0.62551275362399383,0.62422590536301004,0.62293736121998033,0.62164712469559058,0.62035519929512484,0.61906158852845516,0.6177662959100324,0.61646932495887652,0.61517067919856727,0.61387036215723456,0.61256837736754877,0.61126472836671086,0.60995941869644354,0.60865245190298101,0.60734383153705929,0.60603356115390705,0.60472164431323561,0.60340808457922934,0.60209288552053608,0.60077605071025708,0.59945758372593771,0.59813748814955792,0.59681576756752164,0.59549242557064774,0.59416746575416024,0.59284089171767851,0.5915127070652072,0.59018291540512646,0.58885152035018273,0.58751852551747841,0.58618393452846196,0.58484775100891817,0.5835099785889587,0.58217062090301186,0.58082968158981252,0.57948716429239255,0.57814307265807097,0.57679741033844401,0.57545018098937484,0.57410138827098378,0.57275103584763898,0.57139912738794574,0.57004566656473665,0.5686906570550615,0.56733410254017813,0.56597600670554138,0.56461637324079361,0.56325520583975452,0.56189250820041126,0.5605282840249084,0.55916253701953744,0.55779527089472725,0.55642648936503392,0.55505619614913049,0.55368439496979671,0.5523110895539094,0.55093628363243197,0.54955998094040437,0.54818218521693274,0.54680290020517974,0.54542212965235404,0.54403987730970016,0.54265614693248809,0.54127094228000361,0.53988426711553772,0.53849612520637635,0.53710652032379047,0.5357154562430253,0.53432293674329034,0.53292896560774983,0.53153354662351104,0.53013668358161481,0.52873838027702569,0.52733864050862056,0.52593746807917896,0.52453486679537276,0.52313084046775549,0.52172539291075271,0.52031852794265077,0.51891024938558639,0.51750056106553777,0.51608946681231216,0.51467697045953686,0.51326307584464825,0.51184778680888132,0.51043110719725981,0.5090130408585849,0.50759359164542539,0.50617276341410722,0.50475056002470253,0.50332698534101949,0.50190204323059195,0.50047573756466834,0.4990480722182023,0.49761905106984072,0.49618867800191407,0.49475695690042609,0.49332389165504231,0.49188948615908018,0.4904537443094984,0.48901667000688592,0.48757826715545238,0.48613853966301601,0.484697491440994,0.48325512640439217,0.48181144847179319,0.48036646156534685,0.47892016961075912,0.47747257653728126,0.47602368627769998,0.47457350276832555,0.47312202994898178,0.47166927176299578,0.47021523215718608,0.46875991508185283,0.46730332449076672,0.46584546434115814,0.46438633859370715,0.46292595121253155,0.46146430616517675,0.46000140742260553,0.45853725895918612,0.45707186475268208,0.45560522878424148,0.45413735503838565,0.45266824750299944,0.45119791016931893,0.44972634703192127,0.44825356208871447,0.44677955934092539,0.4453043427930895,0.44382791645303993,0.44235028433189627,0.44087145044405468,0.43939141880717558,0.43791019344217336,0.43642777837320618,0.43494417762766369,0.43345939523615712,0.4319734352325077,0.43048630165373597,0.42899799854005138,0.42750852993484006,0.42601789988465466,0.42452611243920368,0.42303317165133941,0.42153908157704789,0.42004384627543728,0.41854746980872704,0.41704995624223734,0.41555130964437725,0.41405153408663381,0.41255063364356187,0.41104861239277179,0.40954547441491901,0.40804122379369295,0.4065358646158056,0.40502940097098128,0.40352183695194427,0.40201317665440828,0.40050342417706603,0.39899258362157691,0.39748065909255637,0.39596765469756501,0.39445357454709673,0.39293842275456892,0.39142220343630951,0.38990492071154681,0.38838657870239868,0.38686718153386035,0.38534673333379371,0.3838252382329162,0.38230270036478914,0.38077912386580759,0.37925451287518758,0.3777288715349556,0.3762022039899382,0.37467451438774901,0.37314580687877869,0.37161608561618342,0.37008535475587317,0.36855361845650142,0.36702088087945262,0.36548714618883138,0.36395241855145199,0.3624167021368257,0.36088000111715013,0.35934231966729802,0.3578036619648054,0.35626403218986119,0.3547234345252947,0.35318187315656469,0.35163935227174864,0.35009587606153031,0.34855144871918908,0.34700607444058834,0.34545975742416374,0.34391250187091293,0.34236431198438266,0.34081519197065807,0.33926514603835189,0.33771417839859169,0.33616229326500935,0.33460949485372937,0.33305578738335728,0.33150117507496879,0.32994566215209731,0.32838925284072312,0.3268319513692623,0.32527376196855406,0.32371468887185023,0.32215473631480335,0.32059390853545516,0.31903220977422575,0.31746964427390079,0.31590621627962079,0.31434193003887001,0.31277678980146384,0.31121079981953781,0.30964396434753622,0.30807628764220008,0.30650777396255652,0.30493842756990575,0.30336825272781048,0.30179725370208471,0.30022543476078084,0.29865280017417911,0.29707935421477555,0.29550510115727052,0.29393004527855748,0.29235419085771053,0.29077754217597307,0.28920010351674713,0.28762187916558013,0.28604287341015439,0.28446309054027508,0.2828825348478583,0.28130121062692059,0.27971912217356554,0.27813627378597322,0.27655266976438864,0.27496831441110936,0.27338321203047411,0.27179736692885126,0.27021078341462668,0.26862346579819307,0.2670354183919369,0.26544664551022712,0.26385715146940453,0.26226694058776834,0.2606760171855656,0.25908438558497898,0.25749205011011506,0.25589901508699325,0.25430528484353299,0.25271086370954221,0.25111575601670671,0.24951996609857682,0.24792349829055652,0.24632635692989138,0.2447285463556568,0.24313007090874683,0.2415309349318612,0.2399311427694942,0.2383306987679234,0.23672960727519665,0.23512787264112117,0.23352549921725135,0.23192249135687687,0.23031885341501168,0.22871458974838085,0.22710970471540945,0.22550420267621124,0.22389808799257566,0.22229136502795671,0.22068403814746107,0.21907611171783584,0.21746759010745756,0.21585847768631916,0.2142487788260187,0.21263849789974804,0.21102763928227977,0.20941620734995611,0.20780420648067696,0.20619164105388754,0.20457851545056757,0.202964834053218,0.20135060124584972,0.19973582141397236,0.198120498944581,0.1965046382261452,0.1948882436485968,0.19327131960331778,0.19165387048312929,0.19003590068227827,0.18841741459642622,0.18679841662263799,0.18517891115936844,0.18355890260645133,0.1819383953650873,0.18031739383783146,0.1786959024285826,0.17707392554256965,0.17545146758634048,0.17382853296775061,0.17220512609594985,0.17058125138137126,0.16895691323571893,0.16733211607195575,0.16570686430429232,0.16408116234817369,0.16245501462026785,0.16082842553845467,0.15920139952181225,0.15757394099060612,0.15594605436627676,0.15431774407142751,0.15268901452981334,0.1510598701663276,0.14943031540699062,0.14780035467893829,0.14616999241040884,0.1445392330307316,0.14290808097031468,0.14127654066063292,0.13964461653421653,0.13801231302463779,0.13637963456649974,0.13474658559542468,0.13311317054804087,0.13147939386197136,0.12984525997582166,0.1282107733291675,0.12657593836254363,0.1249407595174305,0.12330524123624272,0.12166938796231778,0.12003320413990262,0.1183966942141424,0.11675986263106825,0.11512271383758492,0.11348525228145964,0.11184748241130869,0.11020940867658595,0.10857103552757148,0.10693236741535816,0.10529340879184042,0.10365416410970194,0.10201463782240333,0.10037483438417094,0.098734758249983401,0.097094413875560198,0.095453805717350251,0.09381293823251842,0.092171815878934332,0.090530443115160064,0.08888882440043773,0.087246964194678353,0.085604866958448336,0.083962537152958039,0.082319979240050342,0.080677197682187174,0.079034196942438267,0.077390981484468838,0.075747555772527217,0.074103924271433599,0.072460091446566607,0.070816061763851829,0.069171839689750325,0.067527429691245158,0.065882836235830189,0.064238063791497685,0.062593116826725928,0.060947999810468063,0.059302717212138506,0.057657273501601547,0.056011673149159849,0.054365920625540951,0.052720020401886045,0.051073976949737601,0.049427794741026959,0.047781478248063114,0.046135031943519221,0.044488460300421084,0.0428417677921357,0.041194958892357775,0.039548038075098421,0.037901009814672829,0.036253878585687856,0.034606648863030769,0.032959325121855752,0.031311911837572419,0.029664413485834318,0.028016834542525442,0.026369179483748954,0.024721452785814804,0.023073658925227346,0.021425802378674072,0.019777887623012108,0.01812991913525672,0.016481901392569824,0.014833838872246475,0.013185736051703607,0.011537597408467642,0.0098894274201620971,0.0082412305644963182,0.0065930113192519749,0.0049447741622715641,0.0032965235714469115,0.0016482640247056739,6.123233995736766e-17,0.99999840326850142,0.99999361307910462,0.99998562944710712,0.99997445239800409,0.9999600819674892,0.99994251820145386,0.9999217611559873,0.99989781089737628,0.99987066750210518,0.99984033105685544,0.99980680165850533,0.99977007941412976,0.99973016444099982,0.99968705686658244,0.99964075682854026,0.99959126447473057,0.99953857996320539,0.99948270346221091,0.99942363515018651,0.99936137521576462,0.99929592385777022,0.99922728128521965,0.99915544771732046,0.99908042338347047,0.99900220852325727,0.99892080338645683,0.99883620823303376,0.9987484233331394,0.99865744896711151,0.99856328542547346,0.99846593300893305,0.99836539202838148,0.99826166280489281,0.9981547456697224,0.99804464096430623,0.9979313490402596,0.99781487025937599,0.99769520499362607,0.9975723536251565,0.99744631654628857,0.99731709415951708,0.99718468687750883,0.99704909512310169,0.99691031932930285,0.99676835993928758,0.99662321740639814,0.99647489219414165,0.99632338477618931,0.99616869563637445,0.996010825268691,0.99584977417729226,0.99568554287648892,0.99551813189074745,0.99534754175468876,0.99517377301308607,0.9949968262208635,0.99481670194309391,0.99463340075499773,0.99444692324194051,0.99425726999943109,0.99406444163312024,0.99386843875879816,0.99366926200239281,0.99346691199996773,0.99326138939772024,0.99305269485197911,0.99284082902920268,0.99262579260597661,0.99240758626901171,0.99218621071514201,0.9919616666513219,0.99173395479462467,0.99150307587223985,0.99126903062147043,0.99103181978973154,0.99079144413454701,0.99054790442354768,0.99030120143446854,0.99005133595514661,0.98979830878351793,0.98954212072761538,0.98928277260556607,0.98902026524558873,0.98875459948599076,0.98848577617516598,0.98821379617159166,0.98793866034382605,0.98766036957050496,0.98737892474033984,0.98709432675211439,0.98680657651468162,0.98651567494696135,0.98622162297793692,0.9859244215466525,0.98562407160220977,0.98532057410376517,0.98501393002052684,0.98470414033175113,0.98439120602674013,0.98407512810483788,0.98375590757542752,0.98343354545792805,0.98310804278179087,0.98277940058649682,0.9824476199215525,0.98211270184648725,0.98177464743084963,0.98143345775420376,0.98108913390612629,0.98074167698620274,0.98039108810402387,0.98003736837918232,0.97968051894126895,0.97932054092986931,0.97895743549455971,0.97859120379490405,0.97822184700044956,0.97784936629072372,0.97747376285522969,0.97709503789344321,0.97671319261480838,0.97632822823873411,0.97594014599458989,0.97554894712170181,0.97515463286934911,0.97475720449675984,0.97435666327310666,0.97395301047750316,0.97354624739899975,0.97313637533657915,0.97272339559915266,0.97230730950555577,0.97188811838454414,0.97146582357478883,0.97104042642487298,0.97061192829328657,0.97018033054842234,0.96974563456857199,0.96930784174192086,0.96886695346654417,0.96842297115040243,0.96797589621133651,0.96752573007706399,0.9670724741851735,0.96661612998312108,0.96615669892822509,0.96569418248766148,0.96522858213845952,0.96475989936749662,0.96428813567149385,0.96381329255701109,0.96333537154044235,0.96285437414801067,0.96237030191576356,0.96188315638956745,0.96139293912510382,0.9608996516878634,0.96040329565314109,0.95990387260603183,0.95940138414142451,0.95889583186399729,0.95838721738821298,0.95787554233831285,0.95736080834831228,0.95684301706199526,0.95632217013290921,0.95579826922435929,0.95527131600940385,0.95474131217084834,0.95420825940124054,0.95367215940286476,0.9531330138877363,0.95259082457759658,0.95204559320390714,0.95149732150784405,0.95094601124029288,0.9503916641618424,0.94983428204277942,0.94927386666308344,0.94871041981241988,0.94814394329013563,0.94757443890525239,0.94700190847646137,0.94642635383211737,0.9458477768102328,0.94526617925847201,0.94468156303414519,0.94409393000420272,0.94350328204522871,0.9429096210434359,0.94231294889465844,0.94171326750434692,0.94111057878756155,0.94050488466896665,0.93989618708282374,0.93928448797298625,0.93866978929289246,0.93805209300555992,0.93743140108357892,0.93680771550910613,0.93618103827385835,0.93555137137910616,0.93491871683566741,0.93428307666390109,0.93364445289370046,0.93300284756448693,0.9323582627252035,0.93171070043430781,0.93106016275976611,0.93040665177904658,0.92975016957911205,0.92909071825641443,0.92842829991688691,0.92776291667593802,0.92709457065844458,0.92642326399874475,0.92574899884063166,0.92507177733734602,0.92439160165156964,0.92370847395541844,0.92302239643043538,0.92233337126758375,0.92164140066723999,0.92094648683918634,0.92024863200260454,0.91954783838606824,0.91884410822753582,0.91813744377434359,0.91742784728319826,0.91671532102017006,0.91599986726068516,0.91528148828951872,0.9145601864007874,0.91383596389794197,0.9131088230937604,0.91237876631033976,0.91164579587908945,0.91090991414072342,0.91017112344525286,0.9094294261519783,0.90868482462948286,0.90793732125562376,0.90718691841752541,0.90643361851157156,0.90567742394339745,0.90491833712788261,0.90415636048914272,0.90339149646052186,0.90262374748458496,0.90185311601311013,0.90107960450708036,0.90030321543667602,0.89952395128126683,0.89874181452940416,0.89795680767881281,0.89716893323638292,0.89637819371816252,0.895584591649349,0.894788129564281,0.89398881000643104,0.89318663552839628,0.89238160869189143,0.89157373206773982,0.89076300823586541,0.88994943978528507,0.88913302931409932,0.88831377942948475,0.88749169274768569,0.88666677189400556,0.88583901950279842,0.885008438217461,0.88417503069042391,0.88333879958314332,0.88249974756609217,0.88165787731875211,0.88081319152960458,0.87996569289612248,0.87911538412476131,0.87826226793095052,0.87740634703908538,0.87654762418251742,0.87568610210354614,0.87482178355341078,0.87395467129228044,0.87308476808924607,0.87221207672231127,0.87133659997838386,0.87045834065326622,0.86957730155164714,0.86869348548709213,0.86780689528203547,0.86691753376776992,0.86602540378443871,0.86513050818102577,0.8642328498153472,0.86333243155404171,0.86242925627256184,0.86152332685516431,0.86061464619490113,0.85970321719361054,0.85878904276190715,0.85787212581917338,0.8569524692935494,0.85603007612192439,0.85510494924992664,0.85417709163191491,0.85324650623096776,0.85231319601887556,0.85137716397612984,0.85043841309191426,0.84949694636409501,0.84855276679921132,0.84760587741246562,0.8466562812277143,0.84570398127745738,0.84474898060282966,0.84379128225359046,0.842830889288114,0.84186780477337964,0.84090203178496215,0.83993357340702202,0.83896243273229487,0.83798861286208293,0.83701211690624355,0.83603294798318062,0.83505110921983394,0.83406660375166908,0.83307943472266788,0.83208960528531828,0.83109711860060365,0.83010197783799389,0.8291041861754338,0.82810374679933441,0.82710066290456163,0.82609493769442699,0.82508657438067656,0.82407557618348137,0.82306194633142671,0.82204568806150191,0.82102680461909039,0.82000529925795851,0.81898117524024594,0.81795443583645489,0.81692508432543953,0.81589312399439573,0.814858558138851,0.81382139006265264,0.81278162307795898,0.81173926050522704,0.81069430567320333,0.80964676191891238,0.80859663258764636,0.80754392103295458,0.80648863061663234,0.80543076470871044,0.80437032668744468,0.8033073199393046,0.80224174785896285,0.80117361384928454,0.80010292132131589,0.79902967369427425,0.79795387439553578,0.79687552686062602,0.79579463453320776,0.79471120086507085,0.79362522931612034,0.79253672335436653,0.79144568645591262,0.79035212210494477,0.78925603379372,0.78815742502255626,0.78705629929981946,0.78595266014191423,0.7848465110732713,0.78373785562633669,0.78262669734156065,0.78151303976738595,0.78039688646023697,0.77927824098450782,0.77815710691255169,0.77703348782466841,0.77590738730909437,0.77477880896198947,0.77364775638742733,0.77251423319738211,0.77137824301171842,0.77023978945817873,0.76909887617237249,0.76795550679776392,0.76680968498566093,0.76566141439520297,0.76451069869334976,0.76335754155486923,0.76220194666232621,0.76104391770607005,0.75988345838422333,0.75872057240267021,0.75755526347504376,0.75638753532271519,0.75521739167478086,0.75404483626805141,0.75286987284703899,0.75169250516394603,0.75051273697865251,0.74933057205870446,0.74814601417930193,0.74695906712328652,0.74576973468112984,0.74457802065092094,0.74338392883835458,0.74218746305671879,0.74098862712688263,0.73978742487728444,0.73858386014391908,0.73737793677032604,0.73616965860757688,0.73495902951426328,0.73374605335648435,0.73253073400783486,0.73131307534939194,0.7300930812697034,0.72887075566477533,0.72764610243805927,0.72641912550043997,0.72518982877022298,0.72395821617312184,0.72272429164224572,0.72148805911808722,0.72024952254850882,0.71900868588873146,0.71776555310132095,0.71652012815617605,0.71527241503051497,0.71402241770886365,0.71277014018304219,0.71151558645215252,0.71025876052256554,0.70899966640790835,0.70773830812905147,0.70647468971409588,0.70520881519836021,0.70394068862436776,0.702670314041834,0.70139769550765318,0.7001228370858853,0.6988457428477437,0.69756641687158161,0.69628486324287908,0.69500108605423039,0.69371508940533011,0.69242687740296138,0.69113645416098124,0.68984382380030884,0.68854899044891127,0.68725195824179075,0.6859527313209719,0.68465131383548772,0.68334770994136695,0.68204192380161999,0.68073395958622696,0.67942382147212299,0.67811151364318578,0.6767970402902217,0.67548040561095279,0.67416161381000317,0.67284066909888585,0.67151757569598858,0.6701923378265614,0.66886495972270232,0.66753544562334433,0.66620379977424127,0.66487002642795512,0.66353412984384152,0.66219611428803682,0.66085598403344437,0.65951374335972035,0.65816939655326079,0.65682294790718732,0.65547440172133409,0.65412376230223324,0.65277103396310188,0.6514162210238279,0.65005932781095632,0.64870035865767539,0.64733931790380272,0.64597620989577176,0.64461103898661731,0.64324380953596227,0.64187452591000338,0.64050319248149701,0.63912981362974597,0.63775439374058451,0.63637693720636546,0.63499744842594519,0.63361593180466991,0.63223239175436208,0.63084683269330533,0.62945925904623168,0.62806967524430579,0.62667808572511252,0.62528449493264115,0.62388890731727265,0.62249132733576407,0.62109175945123563,0.61969020813315545,0.61828667785732594,0.61688117310586899,0.615473698367212,0.61406425813607346,0.61265285691344873,0.61123949920659526,0.60982418952901862,0.60840693240045796,0.60698773234687142,0.60556659390042178,0.60414352159946216,0.60271851998852144,0.60129159361828921,0.59986274704560238,0.5984319848334293,0.59699931155085639,0.59556473177307256,0.5941282500813555,0.59268987106305604,0.59124959931158461,0.58980743942639557,0.58836339601297338,0.58691747368281699,0.58546967705342601,0.58402001074828525,0.58256847939685075,0.58111508763453379,0.57965984010268734,0.57820274144859052,0.57674379632543404,0.57528300939230514,0.57382038531417268,0.5723559287618728,0.57088964441209311,0.56942153694735853,0.56795161105601577,0.56647987143221901,0.56500632277591412,0.56353096979282424,0.56205381719443448,0.56057486969797721,0.55909413202641622,0.55761160890843275,0.55612730507840924,0.55464122527641546,0.55315337424819178,0.55166375674513579,0.55017237752428572,0.54867924134830581,0.54718435298547152,0.54568771720965303,0.54418933880030185,0.54268922254243357,0.54118737322661414,0.53968379564894375,0.53817849461104172,0.53667147492003131,0.53516274138852393,0.53365229883460463,0.53214015208181553,0.5306263059591414,0.52911076530099377,0.52759353494719585,0.52607461974296643,0.52455402453890509,0.52303175419097625,0.52150781356049414,0.51998220751410662,0.51845494092378031,0.51692601866678434,0.5153954456256753,0.51386322668828177,0.51232936674768836,0.51079387070221971,0.50925674345542571,0.50771798991606543,0.50617761499809144,0.50463562362063386,0.50309202070798498,0.501546811189584,0.50000000000000011,0.49845159207891759,0.49690159237111964,0.49535000582647337,0.49379683739991287,0.49224209205142394,0.49068577474602837,0.4891278904537677,0.48756844414968814,0.48600744081382358,0.48444488543118042,0.48288078299172121,0.48131513849034963,0.47974795692689332,0.47817924330608852,0.47660900263756401,0.47503723993582564,0.47346396022023918,0.47188916851501528,0.47031286984919274,0.46873506925662339,0.46715577177595485,0.46557498245061524,0.46399270632879652,0.46240894846343933,0.46082371391221566,0.45923700773751336,0.4576488350064199,0.45605920079070589,0.45446811016680982,0.45287556821582053,0.4512815800234618,0.44968615068007572,0.44808928528060726,0.44649098892458683,0.44489126671611468,0.44329012376384425,0.44168756518096675,0.44008359608519354,0.4384782215987405,0.43687144684831153,0.43526327696508266,0.43365371708468475,0.4320427723471878,0.43043044789708385,0.42881674888327187,0.42720168045903978,0.42558524778204876,0.42396745601431679,0.42234831032220183,0.42072781587638608,0.41910597785185844,0.41748280142789862,0.41585829178806022,0.41423245412015514,0.41260529361623555,0.41097681547257836,0.40934702488966807,0.40771592707218091,0.40608352722896729,0.40444983057303563,0.40281484232153569,0.40117856769574217,0.39954101192103753,0.39790218022689539,0.39626207784686412,0.39462071001854993,0.39297808198360051,0.39133419898768756,0.3896890662804906,0.38804268911567985,0.38639507275090029,0.38474622244775353,0.38309614347178211,0.38144484109245191,0.37979232058313639,0.37813858722109844,0.37648364628747444,0.37482750306725671,0.37317016284927779,0.3715116309261921,0.3698519125944601,0.3681910131543305,0.36652893790982471,0.36486569216871828,0.36320128124252499,0.36153571044647947,0.35986898509952026,0.3582011105242735,0.35653209204703468,0.35486193499775259,0.35319064471001177,0.35151822652101633,0.34984468577157163,0.34817002780606815,0.34649425797246386,0.34481738162226827,0.34313940411052363,0.34146033079578908,0.33978016704012287,0.33809891820906623,0.33641658967162497,0.33473318680025288,0.33304871497083455,0.33136317956266897,0.32967658595845079,0.32798893954425429,0.32630024570951582,0.3246105098470165,0.32291973735286572,0.32122793362648261,0.31953510407057978,0.31784125409114555,0.31614638909742765,0.31445051450191441,0.31275363572031867,0.31105575817155978,0.30935688727774735,0.30765702846416243,0.30595618715924128,0.30425436879455742,0.30255157880480532,0.30084782262778154,0.29914310570436842,0.29743743347851631,0.29573081139722623,0.294023244910533,0.29231473947148684,0.29060530053613659,0.28889493356351209,0.28718364401560742,0.28547143735736213,0.28375831905664489,0.28204429458423536,0.28032936941380771,0.27861354902191182,0.27689683888795658,0.27517924449419212,0.27346077132569296,0.27174142487033937,0.27002121061880063,0.26830013406451708,0.26657820070368354,0.26485541603523011,0.26313178556080596,0.26140731478476126,0.25968200921412937,0.25795587435861023,0.25622891573055134,0.25450113884493131,0.25277254921934139,0.25104315237396907,0.24931295383157889,0.24758195911749595,0.24585017375958756,0.24411760328824664,0.24238425323637261,0.24065012913935477,0.23891523653505403,0.23717958096378616,0.23544316796830281,0.23370600309377457,0.23196809188777301,0.23022943990025369,0.22849005268353717,0.22674993579229216,0.2250090947835176,0.22326753521652457,0.22152526265291958,0.21978228265658534,0.21803860079366399,0.21629422263253881,0.21454915374381739,0.21280339970031237,0.21105696607702473,0.2093098584511254,0.20756208240193838,0.20581364351092157,0.20406454736164989,0.20231479953979692,0.20056440563311809,0.19881337123143128,0.19706170192660008,0.19530940331251562,0.19355648098507847,0.19180294054218161,0.19004878758369137,0.18829402771143033,0.18653866652915896,0.18478270964255872,0.18302616265921268,0.18126903118858867,0.17951132084202079,0.17775303723269245,0.17599418597561706,0.17423477268762103,0.17247480298732537,0.17071428249512863,0.16895321683318765,0.16719161162540044,0.16542947249738785,0.16366680507647641,0.16190361499167907,0.16013990787367816,0.15837568935480706,0.1566109650690321,0.15484574065193549,0.15308002174069582,0.15131381397407109,0.14954712299238027,0.14777995443748604,0.14601231395277556,0.14424420718314335,0.14247563977497271,0.14070661737611867,0.13893714563588858,0.13716723020502494,0.13539687673568701,0.13362609088143348,0.1318548782972033,0.13008324463929824,0.12831119556536463,0.1265387367343761,0.12476587380661408,0.12299261244365074,0.12121895830833064,0.1194449170647524,0.11767049437825151,0.11589569591538096,0.11412052734389398,0.11234499433272548,0.11056910255197486,0.10879285767288661,0.10701626536783303,0.10523933131029567,0.10346206117484813,0.10168446063713661,0.099906535373862668,0.098128291062764592,0.09634973338260025,0.094570868013127557,0.092791700635087251,0.091012236930184523,0.089232482581070638,0.087452443271325689,0.085672124685439152,0.083891532508792527,0.082110672427640835,0.080329550129095303,0.078548171301103836,0.076766541632433821,0.07498466681265345,0.073202552532114482,0.071420204481932703,0.069637628353970651,0.067854829840819003,0.066071814635779311,0.064288588432844421,0.062505156926681224,0.060721525812612025,0.058937700786597227,0.057153687545215826,0.055369491785648088,0.053585119205657165,0.051800575503570631,0.050015866378263218,0.048230997529137246,0.046445974656105345,0.044660803459571796,0.042875489640415182,0.041090038899968921,0.039304456940003875,0.03751874946270975,0.035732922170677729,0.03394698076688097,0.032160930954657274,0.030374778437690389,0.028588528919992737,0.026802188105885832,0.025015761699982968,0.023229255407170548,0.02144267493259075,0.019656025981621996,0.017869314259861595,0.016082545473107321,0.014295725327338955,0.012508859528700959,0.01072195378348292,0.0089350137981022166,0.0071480452790853464,0.0053610539330505979,0.003574045466688487,0.0017870255867444282,6.123233995736766e-17,0.99999356925821048,0.99997427711555087,0.99994212382014658,0.99989710978553692,0.99983923559066901,0.99976850197989087,0.99968490986294167,0.99958846031494009,0.99947915457637038,0.99935699405306655,0.99922198031619403,0.99907411510222999,0.99891340031294029,0.9987398380153556,0.99855343044174449,0.99835417998958509,0.99814208922153369,0.99791716086539217,0.997679397814073,0.9974288031255617,0.9971653800228778,0.99688913189403305,0.99660006229198839,0.99629817493460782,0.99598347370461038,0.99565596264952094,0.99531564598161759,0.99496252807787744,0.99459661347992068,0.99421790689395195,0.99382641319069964,0.99342213740535379,0.9930050847375006,0.99257526055105616,0.99213267037419717,0.99167731989928998,0.99120921498281722,0.99072836164530265,0.9902347660712334,0.98972843460898097,0.98920937377071916,0.98867759023234036,0.98813309083336986,0.98757588257687778,0.98700597262938883,0.98642336832079047,0.98582807714423848,0.98522010675606064,0.98459946497565798,0.98396615978540469,0.98332019933054493,0.98266159191908853,0.98199034602170399,0.98130647027160933,0.98060997346446133,0.9799008645582421,0.97917915267314426,0.97844484709145352,0.97769795725742881,0.9769384927771817,0.97616646341855196,0.97538187911098251,0.97458474994539168,0.97377508617404307,0.97295289821041397,0.97211819662906129,0.97127099216548585,0.97041129571599394,0.96953911833755724,0.96865447124767079,0.96775736582420868,0.9668478136052775,0.96592582628906831,0.96499141573370562,0.96404459395709574,0.96308537313677112,0.96211376560973472,0.96112978387230075,0.96013344057993422,0.95912474854708807,0.95810372074703809,0.95707037031171682,0.95602471053154392,0.95496675485525517,0.95389651688973043,0.95281401039981772,0.95171924930815632,0.95061224769499808,0.94949301979802603,0.94836158001217152,0.94721794288942873,0.94606212313866767,0.94489413562544522,0.94371399537181333,0.94252171755612679,0.94131731751284708,0.94010081073234542,0.93887221286070399,0.93763153969951396,0.93637880720567301,0.93511403149117933,0.93383722882292519,0.93254841562248703,0.9312476084659147,0.92993482408351813,0.92861007935965201,0.92727339133249886,0.9259247771938498,0.92456425428888356,0.92319184011594291,0.9218075523263104,0.92041140872398064,0.9190034272654316,0.9175836260593937,0.91615202336661694,0.91470863759963561,0.91325348732253231,0.91178659125069839,0.91030796825059335,0.90881763733950294,0.90731561768529356,0.90580192860616626,0.90427658957040835,0.90273962019614273,0.90119104025107599,0.89963086965224337,0.89805912846575353,0.89647583690652999,0.89488101533805109,0.89327468427208823,0.89165686436844205,0.89002757643467667,0.88838684142585211,0.88673468044425474,0.88507111473912581,0.88339616570638846,0.88170985488837206,0.88001220397353563,0.87830323479618844,0.87658296933620938,0.87485142971876462,0.87310863821402251,0.87135461723686725,0.86958938934661101,0.86781297724670314,0.8660254037844386,0.86422669195066437,0.8624168648794831,0.86059594584795585,0.85876395827580299,0.85692092572510248,0.8550668718999872,0.85320182064633998,0.85132579595148705,0.84943882194388898,0.84754092289283112,0.84563212320811099,0.84371244743972418,0.84178192027754928,0.83984056655102968,0.83788841122885427,0.83592547941863693,0.83395179636659267,0.83196738745721366,0.82997227821294273,0.8279664942938445,0.8259500614972759,0.82392300575755417,0.82188535314562361,0.81983712986871971,0.81777836227003253,0.8157090768283678,0.8136293001578061,0.81153905900736101,0.80943838026063486,0.80732729093547262,0.80520581818361514,0.80307398929034945,0.8009318316741576,0.79877937288636491,0.79661664061078452,0.79444366266336208,0.79226046699181796,0.79006708167528727,0.78786353492395922,0.78564985507871432,0.78342607061075942,0.78119221012126205,0.77894830234098211,0.77669437612990266,0.77443046047685871,0.77215658449916424,0.76987277744223781,0.76757906867922632,0.76527548771062748,0.76296206416390999,0.76063882779313285,0.75830580847856255,0.75596303622628847,0.75361054116783777,0.75124835355978681,0.74887650378337267,0.74649502234410259,0.7441039398713607,0.74170328711801503,0.7392930949600216,0.73687339439602728,0.73444421654697112,0.73200559265568421,0.72955755408648759,0.72710013232478898,0.72463335897667824,0.72215726576852035,0.71967188454654707,0.7171772472764486,0.71467338604296093,0.71216033304945436,0.70963812061751863,0.70710678118654757,0.70456634731332157,0.70201685167158934,0.69945832705164712,0.69689080635991729,0.6943143226185251,0.69172890896487393,0.68913459865121884,0.68653142504423958,0.68391942162461061,0.68129862198657098,0.67866905983749226,0.67603076899744485,0.67338378339876315,0.67072813708560886,0.66806386421353336,0.66539099904903876,0.66270957596913604,0.66001962946090442,0.65732119412104661,0.65461430465544457,0.65189899587871247,0.64917530271374979,0.64644326019129139,0.64370290344945713,0.64095426773330044,0.63819738839435447,0.63543230089017744,0.6326590407838969,0.62987764374375232,0.6270881455426357,0.62429058205763277,0.6214849892695602,0.61867140326250336,0.61584986022335275,0.61302039644133777,0.61018304830756021,0.60733785231452686,0.6044848450556789,0.60162406322492246,0.59875554361615624,0.5958793231227979,0.59299543873731009,0.59010392755072449,0.5872048267521649,0.58429817362836833,0.58138400556320657,0.57846236003720419,0.57553327462705695,0.57259678700514893,0.56965293493906755,0.56670175629111752,0.56374328901783499,0.56077757116949789,0.55780464088963755,0.55482453641454832,0.55183729607279464,0.54884295828471918,0.54584156156194841,0.54283314450689679,0.53981774581227104,0.5367954042605716,0.53376615872359512,0.53073004816193325,0.52768711162447202,0.52463738824788986,0.52158091725615374,0.51851773796001499,0.51544788975650424,0.51237141212842352,0.50928834464383943,0.50619872695557355,0.50310259880069341,0.49999999999999989,0.49689097045751712,0.49377555015997721,0.49065377917630726,0.4875256976571134,0.48439134583416477,0.48125076401987565,0.47810399260678793,0.47495107206705023,0.4717920429518983,0.46862694589113324,0.46545582159259891,0.46227871084165822,0.45909565450066925,0.45590669350845875,0.45271186887979614,0.4495112217048659,0.44630479314873894,0.4430926244508438,0.43987475692443534,0.43665123195606387,0.43342209100504281,0.43018737560291553,0.42694712735292079,0.42370138792945872,0.42045019907755338,0.41719360261231681,0.41393164041841096,0.41066435444950905,0.40739178672775567,0.40411397934322729,0.40083097445338955,0.39754281428255589,0.39424954112134436,0.39095119732613365,0.38764782531851816,0.38433946758476306,0.38102616667525691,0.37770796520396482,0.37438490584788064,0.37105703134647766,0.36772438450115891,0.36438700817470754,0.36104494529073405,0.35769823883312546,0.35434693184549187,0.35099106743061309,0.3476306887498839,0.34426583902276003,0.34089656152620079,0.3375228995941133,0.33414489661679514,0.33076259604037611,0.32737604136625936,0.32398527615056261,0.32059034400355679,0.317191288589106,0.31378815362410561,0.3103809828779201,0.30696982017181984,0.30355470937841844,0.30013569442110699,0.29671281927349025,0.29328612795882075,0.28985566454943257,0.28642147316617428,0.28298359797784239,0.27954208320061197,0.27609697309746883,0.27264831197764,0.26919614419602361,0.26574051415261929,0.26228146629195592,0.25881904510252074,0.25535329511618704,0.25188426090764138,0.24841198709381002,0.24493651833328603,0.24145789932575357,0.23797617481141395,0.23449138957040977,0.23100358842224919,0.22751281622522923,0.2240191178758596,0.220522538308284,0.21702312249370315,0.21352091543979607,0.21001596219014129,0.20650830782363727,0.20299799745392344,0.19948507622879877,0.19596958932964195,0.19245158197082998,0.18893109939915673,0.18540818689325075,0.18188288976299385,0.17835525334893698,0.17482532302171794,0.17129314418147762,0.16775876225727623,0.1642222227065086,0.16068357101432057,0.1571428526930225,0.15360011328150494,0.1500553983446527,0.14650875347275871,0.14296022428093752,0.13940985640853951,0.13585769551856253,0.13230378729706557,0.12874817745258083,0.12519091171552596,0.12163203583761562,0.11807159559127386,0.11450963676904427,0.11094620518300173,0.10738134666416309,0.10381510706189762,0.1002475322433372,0.096678668092787218,0.093108560511135113,0.089537255415260933,0.085964798737446516,0.082391236424784547,0.078816614438588464,0.075240978753800022,0.071664375358398869,0.068086850252810846,0.064508449449316357,0.060929218971458331,0.057349204853451248,0.053768453139587676,0.050187009883646973,0.046604921148302773,0.043022233004530529,0.039438991531014739,0.035855242813557217,0.032271032944483032,0.028686408022048551,0.025101414149848351,0.021516097436222254,0.017930503993662077,0.014344679938219442,0.010758671388911336,0.0071725244671278282,0.0035862852960386674,6.123233995736766e-17],"twiddles":[0.99963952767088537,0.026847992810061089,0.99855837056414176,0.053676629703121592,0.99675730813421004,0.080466568716725875,0.99423763884742788,0.10719849578744782,0.99100117924590847,0.13385313867526161,0.98705026263791285,0.16041128085776024,0.98238773741566476,0.18685377538420478,0.97701696500181712,0.21316155867941614,0.97094181742605201,0.23931566428755777,0.96416667453356242,0.26529723654590076,0.95669642082742523,0.29108754417871296,0.94853644194714548,0.31666799380147248,0.93969262078590843,0.34202014332566871,0.93017133324933832,0.36712571525452753,0.91997944365882423,0.39196660986007509,0.90912429980272369,0.4165249182320398,0.89761372763901404,0.44078293518918576,0.88545602565320991,0.46472317204376856,0.87265995887561432,0.48832836920991102,0.85923475256221682,0.51158150864680996,0.84519008554379482,0.53446582612780102,0.83053608324801165,0.55696482332643937,0.81528331039954438,0.57906227971087887,0.79944276340350118,0.60074226423797883,0.78302586241762218,0.6219891468387041,0.76604444311897801,0.64278760968653925,0.74851074817110108,0.66312265824079519,0.73043741839770315,0.68297963205684165,0.71183748366934052,0.70234421535547742,0.69272435350959938,0.72120244734381456,0.67311180742757015,0.73954073228023731,0.65301398498358509,0.75734584927617976,0.63244537559537728,0.77460496182765459,0.61142080809201205,0.7913056270696619,0.58995544002312295,0.80743580474680676,0.56806474673115581,0.82298386589365635,0.54576451019450456,0.83793860121858121,0.52307080764957758,0.85228922918503347,0.49999999999999989,0.86602540378443871,0.47656872002130779,0.8791372219950947,0.45279386036963726,0.89161523092170281,0.42869256140305423,0.90345043461038221,0.40428219882430511,0.91463430053425454,0.37958037115389626,0.92515876574492362,0.35460488704253557,0.93501624268541483,0.32937375243207967,0.94419962466038454,0.30390515757424691,0.95270229095965342,0.27821746391645275,0.96051811163137224,0.25232919086422173,0.96764145190137818,0.22625900242972208,0.97406717623555461,0.20002569377604446,0.97979065204226767,0.17364817766693041,0.98480775301220802,0.14714547083171597,0.98911486209323163,0.12053668025532301,0.99270887409805397,0.093840989403179295,0.99558719794291872,0.067077644391002403,0.99774775851562514,0.040265940109415241,0.99918899817156959,0.013425206313397397,0.99990987785672103,0,0.99855837056414176,0.053676629703121592,0.99423763884742788,0.10719849578744782,0.98705026263791285,0.16041128085776024,0.97701696500181712,0.21316155867941614,0.96416667453356242,0.26529723654590076,0.94853644194714548,0.31666799380147248,0.93017133324933832,0.36712571525452753,0.90912429980272369,0.4165249182320398,0.88545602565320991,0.46472317204376856,0.85923475256221682,0.51158150864680996,0.83053608324801165,0.55696482332643937,0.79944276340350118,0.60074226423797883,0.76604444311897801,0.64278760968653925,0.73043741839770315,0.68297963205684165,0.69272435350959938,0.72120244734381456,0.65301398498358509,0.75734584927617976,0.61142080809201205,0.7913056270696619,0.56806474673115581,0.82298386589365635,0.52307080764957758,0.85228922918503347,0,0.99423763884742788,0.10719849578744782,0.97701696500181712,0.21316155867941614,0.94853644194714548,0.31666799380147248,0.90912429980272369,0.4165249182320398,0.85923475256221682,0.51158150864680996,0.79944276340350118,0.60074226423797883,0.73043741839770315,0.68297963205684165,0.65301398498358509,0.75734584927617976,0.56806474673115581,0.82298386589365635,0.47656872002130779,0.8791372219950947,0.37958037115389626,0.92515876574492362,0.27821746391645275,0.96051811163137224,0.17364817766693041,0.98480775301220802,0.067077644391002403,0.99774775851562514,-0.040265940109415123,0.99918899817156959,-0.14714547083171609,0.98911486209323163,-0.25232919086422184,0.96764145190137818,-0.35460488704253568,0.93501624268541483,-0.45279386036963715,0.89161523092170292,0,0.98705026263791285,0.16041128085776024,0.94853644194714548,0.31666799380147248,0.88545602565320991,0.46472317204376851,0.79944276340350118,0.60074226423797883,0.69272435350959949,0.72120244734381445,0.56806474673115581,0.82298386589365635,0,0.94853644194714548,0.31666799380147248,0.79944276340350118,0.60074226423797883,0.56806474673115581,0.82298386589365635,0.27821746391645275,0.96051811163137224,-0.040265940109414901,0.9991889981715697,-0.35460488704253545,0.93501624268541483,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99990630906171674,0.013688429368434948,0.99962525380285072,0.027374293773287591,0.99915688688806381,0.041055028731603313,0.99850129608082749,0.05472807072159281,0.99765860422697739,0.068390857662989621,0.99662896923169442,0.082040829397137569,0.99541258402991628,0.09567542816671798,0.99400967655018468,0.10929209909502721,0.99242050967193574,0.12288829066471413,0.99064538117624135,0.13646145519588823,0.9886846236900102,0.1500090493235087,0.9865386046236595,0.16352853447396501,0.98420772610226914,0.1770173773407594,0.98169242489023034,0.19047305035920276,0.97899317230940452,0.20389303218003449,0.97611047415080554,0.21727480814187747,0.97304487057982381,0.23061587074244017,0.96979693603500949,0.24391372010837717,0.96636727912043241,0.25716586446371992,0.96275654249164122,0.27036982059679054,0.95896540273524122,0.28352311432551081,0.95499457024211432,0.29662328096101875,0.95084478907430448,0.309667865769507,0.94651683682559451,0.32265442443219489,0.94201152447579828,0.33558052350335021,0.93732969623879836,0.34844374086627228,0.93247222940435581,0.36124166618715292,0.92744003417372123,0.37397190136672942,0.92223405348908016,0.38663206098964475,0.91685526285686281,0.39921977277143095,0.91130467016495142,0.41173267800303276,0.90558331549382065,0.42416843199278664,0.89969227092164528,0.43652470450577335,0.89363264032341228,0.44879918020046217,0.88740555916407426,0.46098955906256345,0.88101219428578448,0.47309355683601012,0.87445374368925155,0.48510890545098517,0.86773143630925531,0.49703335344891775,0.86084653178436765,0.5088646664043649,0.85380032022091856,0.52060062734370272,0.84659412195125328,0.53223903716054732,0.83922928728632662,0.54377771502782657,0.83170719626267864,0.55521449880642904,0.824029258383841,0.56654724545034807,0.81619691235622172,0.57777383140825112,0.80821162581951722,0.58889215302139386,0.80007489507170382,0.59990012691780792,0.79178824478865806,0.61079569040268789,0.7833532277384605,0.62157680184490127,0.7747714244904349,0.63224144105955471,0.76604444311897801,0.64278760968653925,0.75717391890223618,0.65321333156498718,0.7481615140156832,0.66351665310356811,0.73900891722065909,0.67369564364655721,0.72971784354792679,0.6837483958356052,0.72029003397630631,0.69367302596714209,0.7107272551064473,0.70346767434534974,0.70103129882979931,0.71313050563063474,0.69120398199284472,0.72265970918353761,0.68124714605665404,0.73205349940401476,0.67116265675182984,0.74131011606602637,0.66095240372890185,0.7504278246473719,0.65061830020424216,0.75940491665470711,0.64016228260156149,0.76823970994368584,0.62958631018905986,0.77693054903416237,0.61889236471229447,0.78547580542039885,0.60808245002283656,0.7938738778762181,0.59715859170278618,0.80212319275504373,0.58612283668521459,0.81022220428477343,0.57497725287060664,0.81816939485742834,0.56372392873937249,0.82596327531352554,0.5523649729605058,0.83360238522111951,0.54090251399645617,0.84108529314946034,0.52933869970429426,0.84841059693721821,0.51767569693324234,0.85557692395522322,0.50591569111864643,0.86258293136367037,0,0.99962525380285072,0.027374293773287591,0.99850129608082749,0.05472807072159281,0.99662896923169442,0.082040829397137569,0.99400967655018468,0.10929209909502721,0.99064538117624135,0.13646145519588823,0.9865386046236595,0.16352853447396501,0.98169242489023034,0.19047305035920276,0.97611047415080554,0.21727480814187747,0.96979693603500949,0.24391372010837717,0.96275654249164122,0.27036982059679054,0.95499457024211432,0.29662328096101875,0.94651683682559451,0.32265442443219489,0.93732969623879836,0.34844374086627228,0.92744003417372123,0.37397190136672942,0.91685526285686281,0.39921977277143095,0.90558331549382065,0.42416843199278664,0.89363264032341228,0.44879918020046217,0.88101219428578448,0.47309355683601012,0.86773143630925531,0.49703335344891775,0.85380032022091856,0.52060062734370272,0.83922928728632662,0.54377771502782657,0.824029258383841,0.56654724545034807,0.80821162581951722,0.58889215302139386,0.79178824478865806,0.61079569040268789,0.7747714244904349,0.63224144105955471,0.75717391890223618,0.65321333156498718,0.73900891722065909,0.67369564364655721,0.72029003397630631,0.69367302596714209,0.70103129882979931,0.71313050563063474,0.68124714605665404,0.73205349940401476,0.66095240372890185,0.7504278246473719,0.64016228260156149,0.76823970994368584,0.61889236471229447,0.78547580542039885,0.59715859170278618,0.80212319275504373,0.57497725287060664,0.81816939485742834,0.5523649729605058,0.83360238522111951,0.52933869970429426,0.84841059693721821,0.50591569111864643,0.86258293136367037,0.4821135025703488,0.87610876644361357,0.45794997361868628,0.88897796466652901,0.4334432146448271,0.90118088066622803,0.4086115932782316,0.91270836844998038,0.38347372063025159,0.92355178825336681,0.35804843734524611,0.93370301301571657,0.33235479947965962,0.94315443447127745,0.30641206421965456,0.95189896885155323,0.28023967544799577,0.95993006219453403,0.25385724917100783,0.96724169525684156,0.22728455881652881,0.97382838802510574,0.20054152041387516,0.97968520382319302,0.17364817766693041,0.98480775301220802,0.14662468693154032,0.98919219628049426,0.11949130210847862,0.9928352475211687,0.092268359463302016,0.99573417629503447,0.06497626238447303,0.99788680987702416,0.037635466091177169,0.99929153488464006,0.010266462302289866,0.99994729848717312,-0.017110236122009358,0.9998536091947906,-0.044474110554470266,0.99901053722690469,-0.071804651979327616,0.99741871445954311,-0.099081376363650997,0.99507933395176318,-0.12628384000997342,0.99199414905146266,-0.15339165487868531,0.98816547208125938,-0.18038450386871699,0.98359617260542287,-0.20724215604504978,0.97828967527915744,-0.23394448180164854,0.97224995728184949,-0.26047146794844905,0.96548154533620167,-0.28680323271109021,0.9579895123154889,-0.31292004063215439,0.94977947344147784,-0.33880231736274102,0.94085758207586156,-0.36443066433329374,0.93123052510836124,-0.3897858732926795,0.92090551794495357,-0.41484894070462713,0.90989029909997876,-0.43960108199073389,0.89819312439618237,-0.4640237456093636,0.88582276077703981,-0.48809862695988476,0.87278847973599838,0,0.99915688688806381,0.041055028731603313,0.99662896923169442,0.082040829397137569,0.99242050967193574,0.12288829066471413,0.9865386046236595,0.16352853447396501,0.97899317230940452,0.20389303218003449,0.96979693603500949,0.24391372010837717,0.95896540273524122,0.28352311432551081,0.94651683682559451,0.32265442443219489,0.93247222940435581,0.36124166618715298,0.91685526285686281,0.39921977277143095,0.89969227092164528,0.43652470450577335,0.88101219428578448,0.47309355683601012,0.86084653178436765,0.5088646664043649,0.83922928728632662,0.54377771502782657,0.81619691235622172,0.57777383140825112,0.79178824478865806,0.61079569040268789,0.76604444311897801,0.64278760968653936,0.73900891722065909,0.67369564364655732,0.7107272551064473,0.70346767434534974,0.68124714605665404,0.73205349940401476,0.65061830020424205,0.75940491665470722,0.61889236471229447,0.78547580542039885,0.58612283668521459,0.81022220428477343,0.5523649729605058,0.83360238522111951,0.51767569693324234,0.85557692395522322,0,0.99662896923169442,0.082040829397137569,0.9865386046236595,0.16352853447396501,0.96979693603500949,0.24391372010837717,0.94651683682559451,0.32265442443219489,0.91685526285686281,0.39921977277143095,0.88101219428578448,0.47309355683601012,0.83922928728632662,0.54377771502782657,0.79178824478865806,0.61079569040268789,0.73900891722065909,0.67369564364655732,0.68124714605665404,0.73205349940401476,0.61889236471229447,0.78547580542039885,0.5523649729605058,0.83360238522111951,0.4821135025703488,0.87610876644361357,0.4086115932782316,0.91270836844998038,0.33235479947965962,0.94315443447127745,0.25385724917100783,0.96724169525684156,0.17364817766693022,0.98480775301220813,0.092268359463301794,0.99573417629503458,0.010266462302289866,0.99994729848717312,-0.071804651979327616,0.99741871445954311,-0.15339165487868553,0.98816547208125938,-0.23394448180164854,0.97224995728184949,-0.31292004063215439,0.94977947344147784,-0.3897858732926795,0.92090551794495357,-0.4640237456093636,0.88582276077703981,0,0.99242050967193574,0.12288829066471413,0.96979693603500949,0.24391372010837717,0.93247222940435581,0.36124166618715298,0.88101219428578448,0.47309355683601012,0.81619691235622172,0.57777383140825112,0.73900891722065909,0.67369564364655732,0.65061830020424205,0.75940491665470722,0.5523649729605058,0.83360238522111951,0,0.96979693603500949,0.24391372010837717,0.88101219428578448,0.47309355683601012,0.73900891722065909,0.67369564364655732,0.5523649729605058,0.83360238522111951,0.33235479947965962,0.94315443447127745,0.092268359463301794,0.99573417629503458,-0.15339165487868553,0.98816547208125938,-0.3897858732926795,0.92090551794495357,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99987284656601028,0.015946494912164058,0.99949141860003266,0.031888934521151754,0.99885581310181848,0.047823264555078175,0.99796619171021139,0.06374543280437904,0.99682278066204111,0.079651390152315413,0.99542587073458999,0.095537091604691968,0.99377581717164676,0.11139849731852666,0.99187303959316475,0.12723157362941065,0.98971802188855063,0.14303229407729687,0.98731131209360723,0.15879664043045635,0.98465352225116465,0.17452060370734232,0.98174532825543337,0.19020018519610157,0.97858746968012,0.20583139747147453,0.97518074959034839,0.22141026540882466,0.97152603433843465,0.23693282719504016,0.96762425334356772,0.25239513533605018,0.963476398855452,0.26779325766069967,0.95908352570197131,0.28312327832072742,0.95444675102093868,0.29838129878659336,0.94956725397600072,0.3135634388389012,0.94444627545676829,0.32866583755516515,0.93908511776324954,0.34368465429166856,0.93348514427466633,0.35861606966016646,0.92764777910273732,0.37345628649918194,0.92157450672951657,0.38820153083965059,0.91526687162987974,0.40284805286466663,0.90872647787875338,0.41739212786308699,0.90195498874318769,0.43183005717675127,0.8949541262593762,0.44615816914107548,0.88772567079473041,0.46037282001878199,0.88027146059511996,0.47447039492652665,0.87259339131739377,0.48844730875418857,0.86469341554730217,0.50230000707658828,0.85657354230294025,0.5160249670574022,0.84823583652384116,0.5296186983450446,0.83968241854584791,0.54307774396028752,0.83091546356189672,0.55639868117539459,0.82193720106885138,0.56957812238454397,0.81274991430052645,0.58261271596532016,0.80335593964704533,0.59549914713105423,0.79375766606067966,0.60823413877379695,0.7839575344483235,0.62081445229770993,0.77395803705075306,0.63323688844266268,0.76376171680883254,0.64549828809782661,0.7533711667168278,0.65759553310505814,0.74278902916298928,0.66952554705186851,0.73201799525757483,0.68128529605377586,0.72106080414848184,0.69287178952584338,0.709920242324663,0.70428208094320532,0.69859914290750358,0.71551326859038844,0.68710038493033809,0.72656249629923864,0.67542689260629352,0.73742695417526372,0.66358163458464114,0.74810387931220879,0.65156762319584893,0.75859055649468266,0.63938791368552483,0.7688843188886556,0.62704560343744742,0.77898254871965356,0.61454383118587974,0.78888267793847577,0.60188577621736694,0.79858218887426835,0.58907465756222299,0.80807861487478405,0.5761137331759083,0.81736954093366987,0.56300629911050981,0.82645260430461898,0.54975568867653168,0.83532549510223408,0.53636527159521241,0.84398595688944611,0.52283845314158073,0.85243178725134316,0.50917867327847144,0.86066083835525808,0.49538940578171869,0.86867101749697839,0.48147415735675164,0.87646028763293427,0.46743646674681394,0.88402666789823414,0.45327990383303851,0.89136823411041044,0.4390080687266012,0.89848311925875368,0.4246245908531886,0.90536951397910581,0.41013312803000879,0.9120256670139939,0.39553736553558511,0.9184498856579868,0.38084101517256325,0.92464053618816189,0.3660478143237747,0.9305960442795721,0.35116152500179498,0.93631489540560753,0.33618593289223692,0.94179563522314991,0.32112484639102634,0.94703686994242187,0.30598209563589962,0.95203726668143784,0.29076153153237416,0.95679555380496417,0.27546702477443563,0.96131052124790584,0.26010246486019506,0.96558102082303321,0.24467175910276218,0.9696059665129747,0.22917883163658884,0.97338433474639818,0.21362762241953503,0.97691516465831185,0.19802208623090961,0.98019755833441979,0.18236619166574403,0.98323068103946654,0.16666392012555059,0.9860137614295168,0.15091926480582488,0.98854609174811336,0.13513622968054881,0.9908270280062641,0.11931882848395194,0.99285599014621317,0.10347108368979233,0.99463246218895351,0.087597025488413124,0.99615599236544394,0.071700690761837882,0.99742619323149684,0.055786122057162796,0.99844274176630843,0.039857366558510639,0.99920537945460464,0.02391847505780308,0.9997139123523836,0.0079735009246167249,0.99996821113623668,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99993378754924089,0.011507411413067499,0.99973515896514076,0.023013298958311893,0.99940414055107041,0.034516138969708128,0.99894077614211074,0.046014408184800501,0.99834512709924783,0.057506583946420581,0.99761727230124764,0.068991144404324925,0.99675730813421004,0.080466568716725875,0.99576534847880516,0.091931337251689005,0.99464152469519274,0.10338393178837015,0.99338598560562652,0.11482283571806565,0.99199889747474701,0.12624653424504914,0.99048044398756319,0.13765351458716821,0.98883082622512852,0.14904226617617441,0.98705026263791285,0.16041128085776024,0.9851389890168738,0.17175905309127601,0.98309725846223239,0.18308408014910132,0.98092534134995635,0.19438486231564336,0.97862352529595531,0.20565990308593657,0.97619211511799342,0.2169077093638174,0.97363143279532427,0.22812679165964717,0.97094181742605201,0.23931566428755774,0.96812362518222728,0.25047284556219324,0.96517722926268024,0.26159685799492222,0.96210301984360058,0.27268622848949375,0.95890140402686763,0.28373948853711217,0.95557280578614079,0.29475517441090415,0.95211766591071412,0.30573182735975285,0.94853644194714548,0.31666799380147248,0.94482960813866557,0.32756222551529895,0.94099765536237645,0.33841307983367042,0.93704109106424704,0.34921911983327242,0.93296043919191485,0.35997891452532227,0.92875624012530233,0.37069103904506751,0.92442905060505676,0.38135407484047346,0.91997944365882423,0.39196660986007503,0.91540800852536641,0.40252723873996749,0.91071535057653052,0.41303456298991142,0.90590209123708343,0.42348719117852779,0.90096886790241915,0.43388373911755806,0.89591633385415193,0.44422283004516538,0.89074515817360533,0.4545030948082518,0.88545602565320991,0.46472317204376851,0.88004963670581859,0.47488170835899407,0.87452670727195536,0.48497735851075735,0.86888796872500662,0.49500878558358136,0.86313416777436902,0.50497466116672374,0.85726606636656688,0.51487366553009195,0.85128444158435124,0.52470448779900802,0.84519008554379482,0.53446582612780102,0.83898380528939598,0.54415638787220433,0.83266642268720648,0.55377488976053302,0.82623877431599491,0.56332005806362195,0.81970171135646408,0.57279062876349862,0.81305609947853252,0.58218534772077069,0.80630281872669873,0.59150297084070547,0.79944276340350118,0.60074226423797883,0.79247684195109047,0.60990200440007281,0.78540597683092883,0.61898097834929822,0.77823110440163368,0.62797798380342407,0.77095317479497971,0.63689182933488908,0.76357315179007823,0.64572133452857683,0.75609201268574899,0.65446533013813124,0.74851074817110119,0.66312265824079519,0.7408303621943414,0.67169217239074697,0.73305187182982634,0.68017273777091936,0.72517630714337655,0.68856323134327702,0.7172047110558698,0.69686254199753506,0.70913813920513324,0.70506957069829723,0.70097765980614946,0.71318323063059619,0.69272435350959949,0.72120244734381445,0.68437931325875667,0.72912615889396848,0.67594364414475439,0.73695331598433667,0.66741846326024445,0.74468288210441203,0.65880489955146582,0.75231383366716253,0.65010409366874433,0.75984516014457881,0.64131719781544216,0.76727586420149374,0.63244537559537728,0.77460496182765459,0.62348980185873359,0.78183148246802969,0.6144516625464812,0.78895446915133527,0.60533215453332823,0.79597297861676108,0.59613248546922548,0.8028860814388824,0.58685387361944252,0.80969286215073888,0.57749754770324002,0.8163924193650649,0.56806474673115581,0.82298386589365635,0.55855671984092981,0.82946632886485572,0.54897472613208653,0.83583894983914242,0.5393200344991993,0.84210088492281165,0.52959392346385659,0.84825130487972655,0.51979768100535462,0.85428939524113001,0.50993260439013599,0.86021435641350064,0.50000000000000011,0.8660254037844386,0.49000118315910507,0.87172176782656807,0.47993747795978642,0.87730269419944196,0.46981021708721404,0.88276744384943473,0.45962074164291161,0.88811529310761217,0.44937040096716135,0.89334553378556314,0.43906055246031783,0.89845747326918068,0.42869256140305423,0.90345043461038221,0.41826780077556519,0.90832375661675391,0.40778765107575021,0.91307679393910901,0.39725350013640143,0.91770891715694802,0.38666674294141906,0.92221951286181025,0.37602878144108232,0.9266079837385035,0.36534102436639521,0.93087374864420414,0.35460488704253579,0.93501624268541472,0.34382179120143191,0.93903491729276978,0.33299316479348834,0.94292924029368008,0.32212044179849075,0.94669869598280587,0.31120506203571102,0.95034278519034876,0.3002484709732392,0.95386102534815409,0.28925211953656776,0.9572529505536157,0.27821746391645275,0.96051811163137224,0.26714596537607793,0.96365607619278948,0.25603909005754721,0.9666664286932195,0.24489830878773081,0.96954877048702881,0.23372509688349119,0.97230271988038919,0.22252093395631445,0.97492791218182362,0.2112873037163728,0.97742399975049987,0.20002569377604468,0.97979065204226767,0.18873759545291693,0.98202755565343025,0.17742450357229853,0.98413441436224725,0.16608791626926764,0.98611094916816167,0.15472933479028145,0.98795689832874645,0.14335026329437367,0.98967201739436572,0.13195220865396651,0.99125607924054626,0.12053668025532323,0.99270887409805397,0.1091051897986678,0.99403020958067301,0.097659251097998181,0.99521991071068217,0.086200379880619543,0.99627781994202647,0.074730093586424393,0.99720379718118013,0.063249911166945602,0.99799771980569851,0.051761352884209494,0.99865948268045612,0.040265940109415241,0.99918899817156959,0.028765195121467465,0.99958619615800215,0.017260640905388574,0.99985102404084936,0.0057538009506376475,0.99998344675030515,0,0.99973515896514076,0.023013298958311893,0.99894077614211074,0.046014408184800501,0.99761727230124764,0.068991144404324925,0.99576534847880516,0.091931337251689005,0.99338598560562652,0.11482283571806565,0.99048044398756319,0.13765351458716821,0.98705026263791285,0.16041128085776024,0.98309725846223239,0.18308408014910132,0.97862352529595531,0.20565990308593657,0.97363143279532427,0.22812679165964717,0.96812362518222728,0.25047284556219324,0.96210301984360058,0.27268622848949375,0.95557280578614079,0.29475517441090415,0.94853644194714548,0.31666799380147248,0.94099765536237645,0.33841307983367042,0.93296043919191485,0.35997891452532227,0.92442905060505676,0.38135407484047346,0.91540800852536641,0.40252723873996749,0.90590209123708343,0.42348719117852779,0.89591633385415193,0.44422283004516538,0.88545602565320991,0.46472317204376851,0.87452670727195536,0.48497735851075735,0.86313416777436902,0.50497466116672374,0.85128444158435124,0.52470448779900802,0.83898380528939598,0.54415638787220433,0.82623877431599491,0.56332005806362195,0.81305609947853252,0.58218534772077069,0.79944276340350118,0.60074226423797883,0.78540597683092883,0.61898097834929822,0.77095317479497971,0.63689182933488908,0.75609201268574899,0.65446533013813124,0.7408303621943414,0.67169217239074697,0.72517630714337655,0.68856323134327702,0.70913813920513324,0.70506957069829723,0.69272435350959949,0.72120244734381445,0.67594364414475439,0.73695331598433667,0.65880489955146582,0.75231383366716253,0.64131719781544216,0.76727586420149374,0.62348980185873359,0.78183148246802969,0.60533215453332823,0.79597297861676108,0.58685387361944252,0.80969286215073888,0.56806474673115581,0.82298386589365635,0.54897472613208653,0.83583894983914242,0.52959392346385659,0.84825130487972655,0.50993260439013599,0.86021435641350064,0,0.99894077614211074,0.046014408184800501,0.99576534847880516,0.091931337251689005,0.99048044398756319,0.13765351458716821,0.98309725846223239,0.18308408014910132,0.97363143279532427,0.22812679165964717,0.96210301984360058,0.27268622848949375,0.94853644194714548,0.31666799380147248,0.93296043919191485,0.35997891452532227,0.91540800852536641,0.40252723873996749,0.89591633385415193,0.44422283004516538,0.87452670727195536,0.48497735851075735,0.85128444158435124,0.52470448779900802,0.82623877431599491,0.56332005806362195,0.79944276340350118,0.60074226423797883,0.77095317479497971,0.63689182933488908,0.7408303621943414,0.67169217239074697,0.70913813920513324,0.70506957069829723,0.67594364414475439,0.73695331598433667,0.64131719781544216,0.76727586420149374,0.60533215453332823,0.79597297861676108,0.56806474673115581,0.82298386589365635,0.52959392346385659,0.84825130487972655,0.49000118315910507,0.87172176782656807,0.44937040096716135,0.89334553378556314,0.40778765107575021,0.91307679393910901,0.36534102436639521,0.93087374864420414,0.32212044179849075,0.94669869598280587,0.27821746391645275,0.96051811163137224,0.23372509688349119,0.97230271988038919,0.18873759545291693,0.98202755565343025,0.14335026329437367,0.98967201739436572,0.097659251097998181,0.99521991071068217,0.051761352884209494,0.99865948268045612,0.0057538009506376475,0.99998344675030515,-0.040265940109414901,0.9991889981715697,-0.086200379880619196,0.99627781994202647,-0.13195220865396615,0.99125607924054626,-0.17742450357229819,0.98413441436224736,-0.22252093395631412,0.97492791218182362,-0.2671459653760776,0.96365607619278959,-0.31120506203571069,0.95034278519034876,-0.35460488704253545,0.93501624268541483,-0.39725350013640109,0.91770891715694813,-0.4390605524603175,0.8984574732691808,-0.47993747795978614,0.87730269419944207,0,0.99761727230124764,0.068991144404324925,0.99048044398756319,0.13765351458716821,0.97862352529595531,0.20565990308593657,0.96210301984360058,0.27268622848949375,0.94099765536237645,0.33841307983367042,0.91540800852536641,0.40252723873996749,0,0.99048044398756319,0.13765351458716821,0.96210301984360058,0.27268622848949375,0.91540800852536641,0.40252723873996749,0.85128444158435124,0.52470448779900802,0.7709531747949796,0.63689182933488919,0.67594364414475439,0.73695331598433667,0,0.97862352529595531,0.20565990308593657,0.91540800852536641,0.40252723873996749,0.81305609947853252,0.58218534772077069,0.67594364414475439,0.73695331598433667,0.50993260439013599,0.86021435641350064,0.32212044179849075,0.94669869598280587,0,0.96210301984360058,0.27268622848949375,0.85128444158435124,0.52470448779900802,0.67594364414475439,0.73695331598433667,0.44937040096716135,0.89334553378556314,0.18873759545291671,0.98202755565343036,-0.086200379880619196,0.99627781994202647,0,0.94099765536237645,0.33841307983367042,0.77095317479497971,0.63689182933488908,0.50993260439013599,0.86021435641350064,0.18873759545291693,0.98202755565343025,-0.15472933479028089,0.98795689832874656,-0.47993747795978614,0.87730269419944207,0,0.91540800852536641,0.40252723873996749,0.67594364414475439,0.73695331598433667,0.32212044179849075,0.94669869598280587,-0.086200379880619196,0.99627781994202647,-0.47993747795978614,0.87730269419944207,-0.79247684195109025,0.60990200440007303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99997410002296927,0.0071971718926699636,0.99989640143349467,0.014393970972166515,0.99976690825635972,0.021590024444627945,0.99958562719930488,0.028784959554814957,0.99935256765268055,0.035978403605419373,0.99906774168896073,0.04316998397636982,0.99873116406211715,0.050359328144133457,0.99834285220685537,0.057546063701012666,0.99790282623771165,0.064729818374435741,0.9974111089480111,0.071910220046240619,0.99686772580868666,0.079086896771950549,0.99627270496695997,0.086259476800040841,0.99562607724488328,0.093427588591195515,0.99492787613774303,0.10059086083755309,0.99417813781232423,0.10774892248194029,0.99337690110503796,0.11490140273709275,0.99252420751990877,0.12204793110486181,0.99162010122642508,0.12918813739540638,0.9906646290572515,0.13632165174636857,0.98965784050580252,0.1434481046420327,0.98859978772367874,0.15056712693246618,0.98749052551796568,0.1576783498526414,0.98633011134839466,0.16478140504153779,0.98511860532436646,0.17187592456122283,0.9838560702018373,0.17896154091591132,0.98254257138006862,0.18603788707100161,0.98117817689823905,0.19310459647208791,0.9797629574319201,0.20016130306394792,0.97829698628941497,0.20720764130950436,0.97678033940796161,0.21424324620875976,0.97521309534979883,0.22126775331770357,0.97359533529809683,0.22828079876719023,0.97192714305275196,0.23528201928178766,0.97020860502604578,0.24227105219859479,0.96843981023816927,0.24924753548602765,0.96662085031261125,0.25621110776257239,0.96475181947141209,0.263161408315505,0.96283281453028358,0.27009807711957606,0.96086393489359367,0.2770207548556603,0.95884528254921686,0.28392908292936891,0.95677696206325202,0.29082270348962513,0.95465908057460525,0.29770125944720049,0.95249174778944035,0.30456439449321249,0.95027507597549599,0.31141175311758101,0.94800917995627043,0.31824298062744388,0.94569417710507331,0.32505772316552978,0.94333018733894602,0.33185562772848842,0.94091733311244963,0.33863634218517569,0.93845573941132254,0.34539951529489421,0.9359455337460052,0.35214479672558763,0.93338684614503575,0.35887183707198766,0.93077980914831449,0.36558028787371344,0.92812455780023806,0.37226980163332163,0.92542122964270424,0.37894003183430669,0.92266996470798734,0.38559063295905072,0.91987090551148476,0.3922212605067209,0.91702419704433424,0.39883157101111494,0.91412998676590362,0.40542122205845238,0.91118842459615224,0.41198987230511164,0.90819966290786547,0.41853718149531166,0.90516385651876152,0.42506281047873729,0.90208116268347183,0.43156642122810684,0.89895174108539533,0.43804767685668233,0.89577575382842722,0.44450624163571989,0.89255336542856134,0.45094178101186072,0.88928474280536896,0.45735396162446074,0.88597005527335171,0.4637424513228588,0.88260947453317151,0.47010691918358194,0.87920317466275621,0.47644703552748746,0.87575133210828282,0.48276247193683997,0.87225412567503691,0.48905290127232348,0.86871173651815103,0.49531799768998758,0.86512434813322092,0.50155743665812536,0.86149214634680016,0.50777089497408523,0.85781531930677424,0.51395805078101164,0.85409405747261502,0.52011858358451812,0.85032855360551463,0.52625217426928839,0.84651900275840031,0.53235850511560667,0.84266560226583098,0.53843725981581592,0.83876855173377507,0.54448812349070164,0.8348280530292711,0.55051078270580356,0.83084431026997119,0.55650492548765085,0.82681752981356693,0.56247024133992307,0.82274792024710119,0.56840642125953289,0.8186356923761624,0.57431315775263336,0.81448105921396563,0.58019014485054521,0.81028423597031751,0.5860370781256069,0.80604544004046952,0.5918536547069434,0.80176489099385595,0.59763957329615502,0.79744281056272082,0.60339453418292466,0.79307942263063191,0.60911823926054254,0.78867495322088355,0.6148103920413488,0.78422963048478911,0.62047069767209084,0.77974368468986177,0.62609886294919703,0.77521734820788801,0.63169459633396441,0.77065085550288914,0.63725760796766096,0.76604444311897801,0.64278760968653925,0.76139834966810427,0.64828431503676476,0.75671281581769523,0.6537474392892525,0.75198808427818919,0.65917669945441726,0.74722439979046273,0.66457181429683188,0.74242200911315348,0.66993250434979545,0.73758116100987792,0.67525849192980947,0.73270210623634557,0.6805495011509618,0.72778509752736942,0.68580525793921809,0.72283038958377477,0.69102549004661795,0.71783823905920541,0.6962099270653781,0.71280890454682932,0.70135830044189917,0.70774264656594299,0.70647034349067672,0.70263972754847726,0.71154579140811569,0.69750041182540279,0.71658438128624702,0.69232496561303791,0.72158585212634663,0.68711365699925875,0.72654994485245472,0.68186675592961199,0.73147640232479605,0.67658453419333198,0.73636496935310003,0.67126726540926207,0.74121539270981907,0.6659152250116811,0.74602742114324605,0.66052869023603566,0.75080080539052918,0.65510794010457973,0.75553529819058374,0.64965325541192109,0.7602306542969004,0.64416491871047621,0.76488663049024819,0.63864321429583415,0.7695029855912745,0.63308842819202993,0.77407948047299702,0.62750084813672857,0.7786158780731911,0.62188076356632016,0.78311194340666945,0.61622846560092726,0.78756744357745434,0.61054424702932497,0.79198214779084175,0.60482840229377399,0.79635582736535604,0.59908122747476911,0.80068825574459623,0.59330302027570214,0.8049792085089712,0.58749408000744019,0.80922846338732513,0.58165470757282256,0.8134358002684503,0.57578520545107303,0.8176010012124898,0.56988587768213195,0.82172385046222562,0.56395702985090645,0.82580413445425649,0.55799896907144231,0.82984164183005882,0.55201200397101369,0.83383616344693612,0.54599644467413821,0.83778749238885197,0.53995260278651069,0.84169542397714903,0.53388079137886357,0.84555975578115017,0.5277813249707487,0.8493802876286457,0.52165451951424602,0.85315682161626127,0.51550069237759644,0.85688916211971,0.50932016232876298,0.86057711580392526,0.50311324951891834,0.86422049163307546,0,0.99989640143349467,0.014393970972166515,0.99958562719930488,0.028784959554814957,0.99906774168896073,0.04316998397636982,0.99834285220685537,0.057546063701012666,0.9974111089480111,0.071910220046240619,0.99627270496695997,0.086259476800040841,0.99492787613774303,0.10059086083755309,0.99337690110503796,0.11490140273709275,0.99162010122642508,0.12918813739540638,0.98965784050580252,0.1434481046420327,0.98749052551796568,0.1576783498526414,0.98511860532436646,0.17187592456122283,0.98254257138006862,0.18603788707100161,0.9797629574319201,0.20016130306394792,0.97678033940796161,0.21424324620875976,0.97359533529809683,0.22828079876719023,0.97020860502604578,0.24227105219859479,0.96662085031261125,0.25621110776257239,0.96283281453028358,0.27009807711957606,0.95884528254921686,0.28392908292936891,0.95465908057460525,0.29770125944720049,0.95027507597549599,0.31141175311758101,0.94569417710507331,0.32505772316552978,0.94091733311244963,0.33863634218517569,0.9359455337460052,0.35214479672558763,0.93077980914831449,0.36558028787371344,0.92542122964270424,0.37894003183430669,0.91987090551148476,0.3922212605067209,0.91412998676590362,0.40542122205845238,0.90819966290786547,0.41853718149531166,0.90208116268347183,0.43156642122810684,0.89577575382842722,0.44450624163571989,0.88928474280536896,0.45735396162446074,0.88260947453317151,0.47010691918358194,0.87575133210828282,0.48276247193683997,0.86871173651815103,0.49531799768998758,0.86149214634680016,0.50777089497408523,0.85409405747261502,0.52011858358451812,0.84651900275840031,0.53235850511560667,0.83876855173377507,0.54448812349070164,0.83084431026997119,0.55650492548765085,0.82274792024710119,0.56840642125953289,0.81448105921396563,0.58019014485054521,0.80604544004046952,0.5918536547069434,0.79744281056272082,0.60339453418292466,0.78867495322088355,0.6148103920413488,0.77974368468986177,0.62609886294919703,0.77065085550288914,0.63725760796766096,0.76139834966810427,0.64828431503676476,0.75198808427818919,0.65917669945441726,0.74242200911315348,0.66993250434979545,0.73270210623634557,0.6805495011509618,0.72283038958377477,0.69102549004661795,0.71280890454682932,0.70135830044189917,0.70263972754847726,0.71154579140811569,0.69232496561303791,0.72158585212634663,0.68186675592961199,0.73147640232479605,0.67126726540926207,0.74121539270981907,0.66052869023603566,0.75080080539052918,0.64965325541192109,0.7602306542969004,0.63864321429583415,0.7695029855912745,0.62750084813672857,0.7786158780731911,0.61622846560092726,0.78756744357745434,0.60482840229377399,0.79635582736535604,0.59330302027570214,0.8049792085089712,0.58165470757282256,0.8134358002684503,0.56988587768213195,0.82172385046222562,0.55799896907144231,0.82984164183005882,0.54599644467413821,0.83778749238885197,0.53388079137886357,0.84555975578115017,0.52165451951424602,0.85315682161626127,0.50932016232876298,0.86057711580392526,0.49688027546586111,0.86781910088045999,0.484337436434433,0.8748812763273206,0.47169424407476623,0.88176217888200148,0.45895331802006939,0.88846038284122109,0.44611729815369305,0.89497450035632242,0.43318884406215313,0.90130318172083224,0.4201706344840711,0.90744511565011643,0.40706536675514904,0.91339902955307328,0.39387575624928711,0.9191636897958122,0.38060453581596826,0.92473790195725802,0.36725445521401728,0.93012051107663218,0.35382828054186083,0.93531040189275683,0.34032879366439783,0.94030649907513442,0.32675879163660682,0.9451077674467524,0.31312108612400252,0.94971321219856941,0.29941850282006838,0.95412187909563662,0.28565388086077942,0.95833285467481266,0.27183007223634276,0.96234526643403029,0.25794994120027287,0.96615828301307638,0.24401636367592586,0.96977111436584784,0.23003222666061771,0.97318301192404622,0.21600042762744526,0.97639326875227939,0.20192387392493957,0.9794012196945362,0.18780548217467002,0.98220624151200531,0.17364817766693041,0.98480775301220802,0.15945489375462552,0.98720521516942017,0.14522857124549038,0.989398131236356,0.13097215779276172,0.99138604684709375,0.11668860728443445,0.99316855011121807,0.1023808792312226,0.99474527169916305,0.088051938153358947,0.99611588491873626,0.07370475296635412,0.99728010578280801,0.059342296365845183,0.99823769306815313,0.044967544211663213,0.99898844836543133,0.030583474911241831,0.99953221612029763,0.016193068802501567,0.9998688836656322,0.0017993075363305572,0.99999838124488472,-0.012594826541203162,0.99992068202652806,-0.026986351006787,0.99963580210961756,-0.041372283977811591,0.99914380052045526,-0.055749644730210109,0.9984447792003599,-0.070115454316053941,0.99753888298454474,-0.084466736180783986,0.99642629957210871,-0.098800516779942602,0.99510725948714507,-0.11311382619528425,0.99358203603097772,-0.12740369875013458,0.99185094522553385,-0.14166717362386874,0.98991434574786552,-0.15590129546538653,0.98777263885583222,-0.17010311500545106,0.98542626830496172,-0.18426968966777049,0.98287572025650505,-0.19839808417868982,0.98012152317670564,-0.21248537117537272,0.97716424772730204,-0.22652863181234123,0.97400450664728899,-0.24052495636625359,0.97064295462595918,-0.2544714448387892,0.967080288167254,-0.26836520755752136,0.9633172454454495,-0.28220336577464777,0.95935460615220913,-0.29598305226345961,0.95519319133503366,-0.3097014119124229,0.95083386322714225,-0.32335560231674843,0.94627752506882079,-0.33694279436733127,0.94152512092027285,-0.35046017283693237,0.9365776354660128,-0.36390493696348752,0.93143609381084225,-0.3772743010304152,0.92610156126745169,-0.3905654949438111,0.92057514313568989,-0.40377576480640154,0.9148579844735496,-0.41690237348814513,0.90895126985991448,-0.4299426011933567,0.90285622314911818,-0.44289374602424192,0.89657410721736452,-0.4557531245407222,0.89010622370106418,-0.46851807231643744,0.88345391272713791,-0.4811859444908051,0.87661855263534771,-0.49375411631702926,0.86960155969270747,0,0.99976690825635972,0.021590024444627945,0.99906774168896073,0.04316998397636982,0.99790282623771165,0.064729818374435741,0.99627270496695997,0.086259476800040841,0.99417813781232423,0.10774892248194029,0.99162010122642508,0.12918813739540638,0.98859978772367874,0.15056712693246621,0.98511860532436646,0.17187592456122283,0.98117817689823905,0.19310459647208791,0.97678033940796161,0.21424324620875976,0.97192714305275196,0.23528201928178769,0.96662085031261125,0.25621110776257239,0.96086393489359367,0.2770207548556603,0.95465908057460525,0.29770125944720055,0.94800917995627043,0.31824298062744388,0.94091733311244963,0.33863634218517569,0.93338684614503575,0.35887183707198766,0.92542122964270424,0.37894003183430669,0.91702419704433424,0.39883157101111499,0.90819966290786547,0.41853718149531166,0.89895174108539533,0.43804767685668233,0.88928474280536896,0.45735396162446079,0.87920317466275621,0.47644703552748752,0.86871173651815103,0.49531799768998758,0.85781531930677424,0.51395805078101164,0.84651900275840031,0.53235850511560667,0.8348280530292711,0.55051078270580356,0.82274792024710119,0.568406421259533,0.81028423597031751,0.5860370781256069,0.79744281056272082,0.60339453418292466,0.78422963048478911,0.62047069767209084,0.77065085550288914,0.63725760796766096,0.75671281581769523,0.6537474392892525,0.74242200911315348,0.66993250434979545,0.72778509752736942,0.68580525793921809,0.71280890454682932,0.70135830044189917,0.69750041182540279,0.71658438128624702,0.68186675592961188,0.73147640232479616,0.6659152250116811,0.74602742114324605,0.64965325541192109,0.7602306542969004,0.63308842819202993,0.77407948047299702,0.61622846560092726,0.78756744357745434,0.59908122747476911,0.80068825574459623,0.58165470757282245,0.81343580026845042,0.56395702985090645,0.82580413445425649,0.5459964446741381,0.83778749238885208,0.5277813249707487,0.8493802876286457,0.50932016232876298,0.86057711580392526,0,0.99906774168896073,0.04316998397636982,0.99627270496695997,0.086259476800040841,0.99162010122642508,0.12918813739540638,0.98511860532436646,0.17187592456122283,0.97678033940796161,0.21424324620875976,0.96662085031261125,0.25621110776257239,0.95465908057460525,0.29770125944720055,0.94091733311244963,0.33863634218517569,0.92542122964270424,0.37894003183430669,0.90819966290786547,0.41853718149531166,0.88928474280536896,0.45735396162446079,0.86871173651815103,0.49531799768998758,0.84651900275840031,0.53235850511560667,0.82274792024710119,0.568406421259533,0.79744281056272082,0.60339453418292466,0.77065085550288914,0.63725760796766096,0.74242200911315348,0.66993250434979545,0.71280890454682932,0.70135830044189917,0.68186675592961188,0.73147640232479616,0.64965325541192109,0.7602306542969004,0.61622846560092726,0.78756744357745434,0.58165470757282245,0.81343580026845042,0.5459964446741381,0.83778749238885208,0.50932016232876298,0.86057711580392526,0.47169424407476601,0.88176217888200159,0.43318884406215313,0.90130318172083224,0.39387575624928711,0.9191636897958122,0.35382828054186061,0.93531040189275683,0.31312108612400252,0.94971321219856941,0.27183007223634276,0.96234526643403029,0.23003222666061771,0.97318301192404622,0.18780548217467002,0.98220624151200531,0.14522857124549016,0.989398131236356,0.1023808792312226,0.99474527169916305,0.059342296365845183,0.99823769306815313,0.016193068802501567,0.9998688836656322,-0.026986351006787,0.99963580210961756,-0.070115454316054163,0.99753888298454474,-0.11311382619528425,0.99358203603097772,-0.15590129546538653,0.98777263885583222,-0.19839808417869004,0.98012152317670553,-0.24052495636625359,0.97064295462595918,-0.28220336577464777,0.95935460615220913,-0.32335560231674865,0.94627752506882079,-0.36390493696348752,0.93143609381084225,-0.4037757648064017,0.91485798447354949,-0.44289374602424192,0.89657410721736452,-0.4811859444908051,0.87661855263534771,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99977921407557446,0.021012451128475416,0.99911695379514687,0.042015623750057143,0.99801351159421348,0.063000243454978927,0.99646937472178732,0.083957044025920233,0.99448522502524173,0.10487677152970695,0.99206193864922676,0.12575018840358776,0.98920058564878777,0.14656807753428186,0.98590242951685936,0.16732124632799661,0.98216892662634259,0.18800053076961823,0.97800172558701126,0.20859679946928297,0.97340266651753315,0.22910095769454164,0,0.99911695379514687,0.042015623750057143,0.99646937472178732,0.083957044025920233,0.99206193864922676,0.12575018840358776,0.98590242951685936,0.16732124632799661,0.97800172558701126,0.20859679946928297,0.96837378023292442,0.24950395138633757,0.95703559729580945,0.28997045626865708,0.94400720105449176,0.32992484652912146,0.92931160086068365,0.36929655902235725,0.91297475050234356,0.40801605966577298,0.89502550236688772,0.44601496624317477,0,0.99801351159421348,0.063000243454978927,0.99206193864922676,0.12575018840358776,0.98216892662634259,0.1880005307696182,0.96837378023292442,0.24950395138633757,0.95073130726570554,0.31001609858980322,0.92931160086068365,0.3692965590223572,0.90419976101471655,0.42710981278932175,0.87549555648520816,0.48322616917407901,0.84331302841114897,0.53742267919396247,0.80778003723031477,0.58948402137139488,0.76903775469271318,0.63920335720112598,0,0.99646937472178732,0.083957044025920233,0.98590242951685936,0.16732124632799661,0.96837378023292442,0.24950395138633757,0.94400720105449176,0.32992484652912146,0.91297475050234356,0.40801605966577298,0.87549555648520816,0.48322616917407901,0.83183426898269364,0.55502409762642535,0.78229919128547132,0.62290286186057742,0.72724010298849318,0.68638315291481755,0.66704579010963272,0.7450167205486169,0.60214129977419928,0.79838953844989591,0,0.99448522502524173,0.10487677152970695,0.97800172558701126,0.20859679946928297,0.95073130726570554,0.31001609858980322,0.91297475050234356,0.40801605966577298,0.86514849312566844,0.50151578723145418,0.80778003723031477,0.58948402137139488,0.74150213106610707,0.67095051205317802,0.66704579010963272,0.7450167205486169,0.58523223429252946,0.8108657299115396,0.4969638303152295,0.86777125520405185,0.40321413894836461,0.91510565409253641,0,0.99206193864922676,0.12575018840358776,0.96837378023292442,0.24950395138633757,0.92931160086068365,0.3692965590223572,0.87549555648520816,0.48322616917407901,0.80778003723031477,0.58948402137139488,0.72724010298849329,0.68638315291481744,0.63515441563814112,0.77238518130229006,0.53298493885068865,0.8461247277785513,0.42235372777596664,0.90643109425578772,0.3050171770956176,0.95234684946012216,0.18283813628561943,0.98314302922799657,0,0.98920058564878777,0.14656807753428186,0.95703559729580945,0.28997045626865708,0.90419976101471655,0.42710981278932181,0.83183426898269364,0.55502409762642535,0.74150213106610707,0.67095051205317802,0.63515441563814101,0.77238518130229017,0.51508810878721822,0.85713723532816311,0.38389650210794468,0.92337612903371336,0.24441318064018164,0.96967117990035667,0.09965082075115661,0.99502246905465452,-0.047263880145328653,0.99888243834477741,0,0.98590242951685936,0.16732124632799661,0.94400720105449176,0.32992484652912146,0.87549555648520816,0.48322616917407901,0.78229919128547132,0.62290286186057742,0.66704579010963272,0.7450167205486169,0.53298493885068865,0.8461247277785513,0.38389650210794468,0.92337612903371336,0.2239840493718048,0.97459281016587074,0.057756334789428439,0.99833070963067716,-0.1100998277940316,0.99392053400647906,-0.27485171021247562,0.96148662881668678,0,0.98216892662634259,0.18800053076961823,0.92931160086068365,0.36929655902235725,0.84331302841114886,0.53742267919396258,0.72724010298849318,0.68638315291481755,0.58523223429252946,0.8108657299115396,0.42235372777596647,0.90643109425578783,0.24441318064018164,0.96967117990035667,0.057756334789428439,0.99833070963067716,-0.13096022594817239,0.9913876230917974,-0.3150064638899478,0.94908952565474614,-0.48781889509012732,0.87294485827745583,0,0.97800172558701126,0.20859679946928297,0.91297475050234356,0.40801605966577298,0.80778003723031477,0.58948402137139488,0.66704579010963272,0.7450167205486169,0.4969638303152295,0.86777125520405185,0.3050171770956176,0.95234684946012216,0.099650820751156388,0.99502246905465452,-0.1100998277940316,0.99392053400647906,-0.3150064638899478,0.94908952565474614,-0.50605390271683159,0.86250185364732035,-0.6748367163042579,0.73796707672340411,0,0.97340266651753315,0.22910095769454164,0.89502550236688772,0.44601496624317477,0.76903775469271307,0.63920335720112609,0.60214129977419928,0.79838953844989591,0.40321413894836461,0.91510565409253641,0.18283813628561921,0.98314302922799657,-0.047263880145328875,0.99888243834477741,-0.27485171021247562,0.96148662881668678,-0.48781889509012732,0.87294485827745583,-0.6748367163042579,0.73796707672340411,-0.82595682313887364,0.56373338229196557,0,0.96837378023292442,0.24950395138633757,0.87549555648520816,0.48322616917407901,0.72724010298849329,0.68638315291481744,0.53298493885068865,0.8461247277785513,0.3050171770956176,0.95234684946012216,0.057756334789428661,0.99833070963067716,-0.19315773659074303,0.98116771695523142,-0.43185410991665524,0.90194347259021368,-0.6432346572674893,0.76566910326196103,-0.81392904335324123,0.58096429527646309,-0.93314043183920248,0.35951207833249027,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99997445239800409,0.0071480452790852744,0.99989781089737628,0.01429572532733887,0.99977007941412976,0.021442674932590656,0.99959126447473057,0.028588528919992629,0.99936137521576462,0.035732922170677611,0.99908042338347047,0.042875489640415057,0.9987484233331394,0.05001586637826308,0.99836539202838148,0.057153687545215673,0.9979313490402596,0.064288588432844268,0.99744631654628857,0.071420204481932523,0.99691031932930285,0.078548171301103642,0.99632338477618931,0.085672124685438958,0.99568554287648892,0.092791700635087043,0.9949968262208635,0.099906535373862446,0.99425726999943109,0.10701626536783281,0.99346691199996773,0.11412052734389373,0.99262579260597661,0.12121895830833039,0.99173395479462467,0.12831119556536461,0.99079144413454701,0.13539687673568696,0.98979830878351793,0.14247563977497266,0.98875459948599076,0.14954712299238018,0.98766036957050496,0.15661096506903202,0.98651567494696135,0.16366680507647632,0.98532057410376517,0.17071428249512852,0.98407512810483788,0.17775303723269234,0.98277940058649682,0.18478270964255855,0.98143345775420376,0.19180294054218147,0.98003736837918232,0.19881337123143114,0.97859120379490405,0.20581364351092141,0.97709503789344321,0.2128033997003122,0.97554894712170181,0.21978228265658514,0.97395301047750316,0.22674993579229197,0.97230730950555577,0.23370600309377437,0.97061192829328657,0.24065012913935455,0.96886695346654417,0.24758195911749573,0.9670724741851735,0.25450113884493109,0.96522858213845952,0.26140731478476098,0.96333537154044235,0.26830013406451703,0.96139293912510382,0.27517924449419207,0.95940138414142451,0.2820442945842353,0.95736080834831228,0.28889493356351204,0.95527131600940385,0.29573081139722612,0.9531330138877363,0.30255157880480521,0.95094601124029288,0.30935688727774724,0.94871041981241988,0.31614638909742754,0.94642635383211737,0.32291973735286561,0.94409393000420272,0.32967658595845062,0.94171326750434692,0.3364165896716248,0.93928448797298625,0.34313940411052346,0.93680771550910613,0.34984468577157146,0.93428307666390109,0.35653209204703451,0.93171070043430781,0.36320128124252476,0.92909071825641443,0.36985191259445988,0.92642326399874475,0.37648364628747422,0.92370847395541844,0.38309614347178189,0.92094648683918634,0.38968906628049038,0.91813744377434359,0.3962620778468639,0.91528148828951872,0.40281484232153564,0.91237876631033976,0.40934702488966801,0.9094294261519783,0.41585829178806016,0.90643361851157156,0.42234831032220177,0.90339149646052186,0.42881674888327181,0.90030321543667602,0.43526327696508255,0.89716893323638292,0.44168756518096663,0.89398881000643104,0.44808928528060715,0.89076300823586541,0.45446811016680977,0.88749169274768569,0.46082371391221549,0.88417503069042391,0.46715577177595469,0.88081319152960458,0.47346396022023907,0.87740634703908538,0.47974795692689315,0.87395467129228044,0.48600744081382347,0.87045834065326622,0.49224209205142377,0.86691753376776992,0.49845159207891743,0.86333243155404171,0.50463562362063363,0.85970321719361054,0.51079387070221949,0.85603007612192439,0.51692601866678412,0.85231319601887556,0.52303175419097614,0.84855276679921132,0.52911076530099366,0.84474898060282966,0.53516274138852393,0.84090203178496215,0.54118737322661403,0.83701211690624355,0.5471843529854713,0.83307943472266788,0.55315337424819178,0.8291041861754338,0.55909413202641611,0.82508657438067656,0.565006322775914,0.82102680461909039,0.570889644412093,0.81692508432543953,0.57674379632543393,0.81278162307795898,0.58256847939685052,0.80859663258764636,0.58836339601297327,0.80437032668744468,0.59412825008135528,0.80010292132131589,0.59986274704560216,0.79579463453320776,0.60556659390042167,0.79144568645591262,0.61123949920659526,0.78705629929981946,0.61688117310586887,0.78262669734156065,0.62249132733576396,0.77815710691255169,0.62806967524430568,0.77364775638742733,0.6336159318046698,0.76909887617237249,0.63912981362974586,0.76451069869334976,0.6446110389866172,0.75988345838422333,0.65005932781095621,0.75521739167478086,0.65547440172133398,0.75051273697865251,0.66085598403344425,0.74576973468112984,0.66620379977424116,0.74098862712688263,0.67151757569598858,0.73616965860757688,0.67679704029022147,0.73131307534939194,0.68204192380161988,0.72641912550043997,0.68725195824179064,0.72148805911808722,0.69242687740296127,0.71652012815617605,0.6975664168715815,0.71151558645215252,0.70267031404183389,0.70647468971409588,0.70773830812905136,0.70139769550765318,0.71277014018304208,0.69628486324287908,0.71776555310132095,0.69113645416098124,0.72272429164224572,0.6859527313209719,0.72764610243805916,0.68073395958622696,0.73253073400783464,0.67548040561095279,0.73737793677032593,0.6701923378265614,0.74218746305671868,0.66487002642795512,0.74695906712328641,0.65951374335972035,0.75169250516394603,0.65412376230223324,0.75638753532271508,0.64870035865767539,0.76104391770606994,0.64324380953596227,0.76566141439520286,0.63775439374058451,0.77023978945817873,0.63223239175436208,0.77477880896198936,0.62667808572511252,0.77927824098450771,0.62109175945123563,0.78373785562633658,0.615473698367212,0.78815742502255615,0.60982418952901862,0.79253672335436642,0.60414352159946216,0.7968755268606259,0.5984319848334293,0.80117361384928443,0.59268987106305604,0.80543076470871044,0.58691747368281699,0.80964676191891227,0.58111508763453379,0.81382139006265253,0.57528300939230514,0.81795443583645477,0.56942153694735853,0.82204568806150191,0.56353096979282424,0.82609493769442688,0.55761160890843275,0.83010197783799378,0.55166375674513579,0.83406660375166897,0.54568771720965303,0.83798861286208282,0.53968379564894375,0.84186780477337964,0.53365229883460463,0.84570398127745727,0.52759353494719585,0.84949694636409501,0.52150781356049414,0.85324650623096776,0.5153954456256753,0.85695246929354929,0.50925674345542571,0.86061464619490113,0.50309202070798498,0.86423284981534709,0,0.99989781089737628,0.01429572532733887,0.99959126447473057,0.028588528919992629,0.99908042338347047,0.042875489640415057,0.99836539202838148,0.057153687545215673,0.99744631654628857,0.071420204481932523,0.99632338477618931,0.085672124685438958,0.9949968262208635,0.099906535373862446,0.99346691199996773,0.11412052734389373,0.99173395479462467,0.12831119556536461,0.98979830878351793,0.14247563977497266,0.98766036957050496,0.15661096506903202,0.98532057410376517,0.17071428249512852,0.98277940058649682,0.18478270964255855,0.98003736837918232,0.19881337123143114,0.97709503789344321,0.2128033997003122,0.97395301047750316,0.22674993579229197,0.97061192829328657,0.24065012913935455,0.9670724741851735,0.25450113884493109,0.96333537154044235,0.26830013406451703,0.95940138414142451,0.2820442945842353,0.95527131600940385,0.29573081139722612,0.95094601124029288,0.30935688727774724,0.94642635383211737,0.32291973735286561,0.94171326750434692,0.3364165896716248,0.93680771550910613,0.34984468577157146,0.93171070043430781,0.36320128124252476,0.92642326399874475,0.37648364628747422,0.92094648683918634,0.38968906628049038,0.91528148828951872,0.40281484232153564,0.9094294261519783,0.41585829178806016,0.90339149646052186,0.42881674888327181,0.89716893323638292,0.44168756518096663,0.89076300823586541,0.45446811016680977,0.88417503069042391,0.46715577177595469,0.87740634703908538,0.47974795692689315,0.87045834065326622,0.49224209205142377,0.86333243155404171,0.50463562362063363,0.85603007612192439,0.51692601866678412,0.84855276679921132,0.52911076530099366,0.84090203178496215,0.54118737322661403,0.83307943472266788,0.55315337424819178,0.82508657438067656,0.565006322775914,0.81692508432543953,0.57674379632543393,0.80859663258764636,0.58836339601297327,0.80010292132131589,0.59986274704560216,0.79144568645591262,0.61123949920659526,0.78262669734156065,0.62249132733576396,0.77364775638742733,0.6336159318046698,0.76451069869334976,0.6446110389866172,0.75521739167478086,0.65547440172133398,0.74576973468112984,0.66620379977424116,0.73616965860757688,0.67679704029022147,0.72641912550043997,0.68725195824179064,0.71652012815617605,0.6975664168715815,0.70647468971409588,0.70773830812905136,0.69628486324287908,0.71776555310132095,0.6859527313209719,0.72764610243805916,0.67548040561095279,0.73737793677032593,0.66487002642795512,0.74695906712328641,0.65412376230223324,0.75638753532271508,0.64324380953596227,0.76566141439520286,0.63223239175436208,0.77477880896198936,0.62109175945123563,0.78373785562633658,0.60982418952901862,0.79253672335436642,0.5984319848334293,0.80117361384928443,0.58691747368281699,0.80964676191891227,0.57528300939230514,0.81795443583645477,0.56353096979282424,0.82609493769442688,0.55166375674513579,0.83406660375166897,0.53968379564894375,0.84186780477337964,0.52759353494719585,0.84949694636409501,0.5153954456256753,0.85695246929354929,0.50309202070798498,0.86423284981534709,0.49068577474602837,0.87133659997838375,0.47817924330608852,0.87826226793095041,0.46557498245061524,0.88500843821746089,0.45287556821582053,0.89157373206773971,0.44008359608519354,0.8979568076788127,0.42720168045903978,0.90415636048914261,0.41423245412015514,0.91017112344525275,0.40117856769574217,0.91599986726068516,0.38804268911567985,0.92164140066723987,0.37482750306725671,0.92709457065844458,0.36153571044647947,0.93235826272520339,0.34817002780606815,0.93743140108357892,0.33473318680025288,0.94231294889465833,0.32122793362648261,0.94700190847646137,0.30765702846416243,0.95149732150784405,0.294023244910533,0.95579826922435929,0.28032936941380771,0.95990387260603183,0.26657820070368354,0.96381329255701109,0.25277254921934139,0.96752573007706399,0.23891523653505403,0.97104042642487298,0.2250090947835176,0.97435666327310655,0.21105696607702473,0.97747376285522958,0.19706170192660008,0.98039108810402387,0.18302616265921268,0.98310804278179076,0.16895321683318765,0.98562407160220977,0.15484574065193549,0.98793866034382594,0.14070661737611867,0.99005133595514661,0.1265387367343761,0.9919616666513219,0.11234499433272548,0.99366926200239281,0.098128291062764592,0.99517377301308607,0.083891532508792527,0.99647489219414165,0.069637628353970651,0.9975723536251565,0.055369491785648088,0.99846593300893294,0.041090038899968921,0.99915544771732046,0.026802188105885832,0.99964075682854026,0.012508859528700959,0.9999217611559873,-0.0017870255867440839,0.99999840326850142,-0.016082545473106977,0.99987066750210518,-0.030374778437690264,0.99953857996320539,-0.044660803459571671,0.99900220852325727,-0.05893770078659688,0.99826166280489281,-0.073202552532114135,0.99731709415951708,-0.087452443271325356,0.99616869563637445,-0.10168446063713628,0.99481670194309402,-0.11589569591538063,0.99326138939772024,-0.13008324463929788,0.99150307587223985,-0.14424420718314301,0.98954212072761538,-0.1583756893548067,0.98737892474033984,-0.17247480298732526,0.98501393002052684,-0.18653866652915885,0.9824476199215525,-0.20056440563311773,0.97968051894126906,-0.21454915374381706,0.97671319261480849,-0.22849005268353684,0.97354624739899986,-0.24238425323637228,0.97018033054842245,-0.25622891573055101,0.96661612998312119,-0.2700212106188003,0.96285437414801078,-0.28375831905664456,0.95889583186399741,-0.29743743347851598,0.95474131217084834,-0.31105575817155967,0.9503916641618424,-0.32461050984701617,0.94584777681023291,-0.33809891820906596,0.94111057878756166,-0.351518226521016,0.93618103827385846,-0.36486569216871795,0.93106016275976622,-0.37813858722109811,0.92574899884063178,-0.39133419898768723,0.92024863200260465,-0.40444983057303535,0.9145601864007874,-0.41748280142789829,0.90868482462948286,-0.43043044789708373,0.90262374748458507,-0.44329012376384413,0.89637819371816252,-0.45605920079070578,0.88994943978528507,-0.46873506925662328,0.88333879958314332,-0.48131513849034957,0.8765476241825173,-0.49379683739991276,0.86957730155164703,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99989710978553692,0.014344679938219532,0.99958846031494009,0.028686408022048568,0.99907411510222999,0.043022233004530473,0.99835417998958509,0.057349204853451345,0.9974288031255617,0.071664375358398896,0.99629817493460782,0.085964798737446474,0.99496252807787744,0.10024753224333731,0.99342213740535379,0.11450963676904431,0.99167731989928998,0.1287481774525808,0.98972843460898097,0.1429602242809376,0.98757588257687778,0.15714285269302256,0.98522010675606064,0.17129314418147759,0.98266159191908853,0.18540818689325089,0.9799008645582421,0.19948507622879882,0.9769384927771817,0.21352091543979607,0.97377508617404307,0.22751281622522937,0.97041129571599394,0.24145789932575362,0.9668478136052775,0.25535329511618704,0.96308537313677112,0.26919614419602372,0.95912474854708807,0.28298359797784245,0.95496675485525517,0.29671281927349025,0.95061224769499808,0.31038098287792004,0.94606212313866767,0.32398527615056272,0.94131731751284708,0.3375228995941133,0.93637880720567301,0.35099106743061304,0.9312476084659147,0.36438700817470759,0.9259247771938498,0.37770796520396482,0.92041140872398064,0.39095119732613359,0.91470863759963561,0.4041139793432274,0.90881763733950294,0.41719360261231686,0.90273962019614273,0.43018737560291548,0.89647583690652999,0.44309262445084391,0.89002757643467667,0.4559066935084588,0.88339616570638846,0.46862694589113318,0.87658296933620938,0.48125076401987582,0.86958938934661101,0.49377555015997726,0.8624168648794831,0.50619872695557355,0.8550668718999872,0.5185177379600151,0.84754092289283112,0.53073004816193337,0.83984056655102968,0.54283314450689679,0.83196738745721366,0.55482453641454832,0.82392300575755417,0.56670175629111763,0.8157090768283678,0.57846236003720408,0.80732729093547262,0.59010392755072461,0.79877937288636491,0.60162406322492257,0.79006708167528727,0.61302039644133788,0.78119221012126205,0.62429058205763288,0.77215658449916424,0.63543230089017744,0.76296206416390999,0.64644326019129139,0.75361054116783777,0.65732119412104673,0.7441039398713607,0.66806386421353348,0.73444421654697112,0.67866905983749237,0.72463335897667824,0.68913459865121884,0.71467338604296093,0.69945832705164701,0.70456634731332157,0.70963812061751874,0.6943143226185251,0.71967188454654718,0.68391942162461061,0.72955755408648748,0.67338378339876315,0.7392930949600216,0.66270957596913604,0.74887650378337278,0.65189899587871247,0.75830580847856255,0.64095426773330044,0.76757906867922643,0.62987764374375232,0.77669437612990266,0.61867140326250336,0.78564985507871443,0.60733785231452686,0.79444366266336219,0.5958793231227979,0.80307398929034945,0.58429817362836833,0.81153905900736112,0.57259678700514893,0.81983712986871982,0.56077757116949789,0.8279664942938445,0.54884295828471918,0.83592547941863693,0.5367954042605716,0.84371244743972429,0.52463738824788986,0.85132579595148705,0.51237141212842352,0.85876395827580299,0.49999999999999989,0.86602540378443871,0.4875256976571134,0.87310863821402251,0.47495107206705023,0.88001220397353563,0.46227871084165822,0.88673468044425474,0.4495112217048659,0.89327468427208823,0.43665123195606387,0.89963086965224337,0.42370138792945872,0.90580192860616626,0.41066435444950905,0.91178659125069828,0.39754281428255589,0.9175836260593937,0.38433946758476306,0.92319184011594302,0.37105703134647766,0.92861007935965201,0.35769823883312546,0.93383722882292519,0.34426583902276003,0.93887221286070399,0.33076259604037611,0.94371399537181333,0.317191288589106,0.94836158001217152,0.30355470937841844,0.95281401039981772,0.28985566454943257,0.95707037031171682,0.27609697309746883,0.96112978387230075,0.26228146629195592,0.96499141573370573,0.24841198709381002,0.96865447124767079,0.23449138957040977,0.97211819662906129,0.220522538308284,0.97538187911098262,0.20650830782363727,0.97844484709145352,0.19245158197082998,0.98130647027160933,0.17835525334893698,0.98396615978540469,0.1642222227065086,0.98642336832079047,0.1500553983446527,0.98867759023234036,0.13585769551856253,0.99072836164530265,0.12163203583761562,0.99257526055105616,0.10738134666416309,0.99421790689395195,0.093108560511135113,0.99565596264952094,0.078816614438588464,0.99688913189403305,0.064508449449316357,0.99791716086539217,0.050187009883646973,0.9987398380153556,0.035855242813557217,0.99935699405306655,0.021516097436222254,0.99976850197989087,0.0071725244671278282,0.99997427711555087,0,0.99958846031494009,0.028686408022048568,0.99835417998958509,0.057349204853451345,0.99629817493460782,0.085964798737446474,0.99342213740535379,0.11450963676904431,0.98972843460898097,0.1429602242809376,0.98522010675606064,0.17129314418147759,0.9799008645582421,0.19948507622879882,0.97377508617404307,0.22751281622522937,0.9668478136052775,0.25535329511618704,0.95912474854708807,0.28298359797784245,0.95061224769499808,0.31038098287792004,0.94131731751284708,0.3375228995941133,0.9312476084659147,0.36438700817470759,0.92041140872398064,0.39095119732613359,0.90881763733950294,0.41719360261231686,0.89647583690652999,0.44309262445084391,0.88339616570638846,0.46862694589113318,0.86958938934661101,0.49377555015997726,0.8550668718999872,0.5185177379600151,0.83984056655102968,0.54283314450689679,0.82392300575755417,0.56670175629111763,0.80732729093547262,0.59010392755072461,0.79006708167528727,0.61302039644133788,0.77215658449916424,0.63543230089017744,0.75361054116783777,0.65732119412104673,0.73444421654697112,0.67866905983749237,0.71467338604296093,0.69945832705164701,0.6943143226185251,0.71967188454654718,0.67338378339876315,0.7392930949600216,0.65189899587871247,0.75830580847856255,0.62987764374375232,0.77669437612990266,0.60733785231452686,0.79444366266336219,0.58429817362836833,0.81153905900736112,0.56077757116949789,0.8279664942938445,0.5367954042605716,0.84371244743972429,0.51237141212842352,0.85876395827580299,0,0.99835417998958509,0.057349204853451345,0.99342213740535379,0.11450963676904431,0.98522010675606064,0.17129314418147759,0.97377508617404307,0.22751281622522937,0.95912474854708807,0.28298359797784245,0.94131731751284708,0.3375228995941133,0.92041140872398064,0.39095119732613359,0.89647583690652999,0.44309262445084391,0.86958938934661101,0.49377555015997726,0.83984056655102968,0.54283314450689679,0.80732729093547262,0.59010392755072461,0.77215658449916424,0.63543230089017744,0.73444421654697112,0.67866905983749237,0.6943143226185251,0.71967188454654718,0.65189899587871247,0.75830580847856255,0.60733785231452686,0.79444366266336219,0.56077757116949789,0.8279664942938445,0.51237141212842352,0.85876395827580299,0.46227871084165822,0.88673468044425474,0.41066435444950905,0.91178659125069828,0.35769823883312546,0.93383722882292519,0.30355470937841844,0.95281401039981772,0.24841198709381002,0.96865447124767079,0.19245158197082998,0.98130647027160933,0.13585769551856253,0.99072836164530265,0.078816614438588464,0.99688913189403305,0.021516097436222254,0.99976850197989087,-0.035855242813557314,0.99935699405306655,-0.09310856051113521,0.99565596264952094,-0.15005539834465281,0.98867759023234036,-0.20650830782363735,0.97844484709145352,-0.26228146629195598,0.96499141573370562,-0.31719128858910611,0.94836158001217152,-0.37105703134647755,0.92861007935965201,-0.42370138792945899,0.90580192860616615,-0.47495107206705034,0.88001220397353552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} +{"lengths":[443,995,298,775,633,782,785,699,495,175],"offsets":[0,443,1438,1736,2511,3144,3926,4711,5410,5905],"cosines":[0.99999371360232381,0.99997485448833301,0.99994342289513916,0.99989941921792547,0.99984284400994106,0.99977369798249438,0.99969198200494447,0.99959769710468938,0.99949084446715397,0.99937142543577462,0.99923944151198241,0.99909489435518395,0.99893778578274139,0.99876811776994834,0.99858589245000628,0.99839111211399678,0.99818377921085311,0.99796389634732929,0.99773146628796783,0.99748649195506423,0.99722897642863051,0.9969589229463568,0.99667633490357022,0.9963812158531925,0.99607356950569492,0.99575339972905208,0.99542071054869308,0.99507550614745099,0.99471779086550993,0.99434756920035117,0.99396484580669564,0.99356962549644645,0.99316191323862768,0.99274171415932211,0.9923090335416066,0.99186387682548616,0.99140624960782509,0.99093615764227672,0.99045360683921113,0.98995860326564078,0.98945115314514431,0.98893126285778832,0.98839893894004682,0.9878541880847197,0.98729701714084772,0.98672743311362743,0.98614544316432207,0.98555105461017223,0.98494427492430348,0.98432511173563275,0.98369357282877201,0.98304966614393074,0.98239339977681583,0.98172478197853019,0.9810438211554684,0.98035052586921156,0.97964490483641942,0.97892696692872094,0.97819672117260237,0.97745417674929413,0.97669934299465544,0.97593222939905666,0.97515284560725979,0.97436120141829796,0.97355730678535146,0.97274117181562292,0.97191280677021052,0.97107222206397825,0.97021942826542573,0.96935443609655469,0.96847725643273486,0.96758790030256658,0.96668637888774234,0.96577270352290656,0.96484688569551247,0.96390893704567826,0.96295886936604036,0.9619966946016052,0.96102242484959921,0.96003607235931665,0.95903764953196557,0.95802716892051165,0.95700464322952095,0.95597008531499983,0.95492350818423311,0.95386492499562081,0.95279434905851279,0.95171179383304128,0.95061727292995157,0.94951080011043099,0.94839238928593572,0.94726205451801626,0.94611981001814038,0.94496567014751442,0.94379964941690275,0.94262176248644536,0.94143202416547367,0.94023044941232403,0.93901705333414986,0.93779185118673181,0.93655485837428576,0.93530609044926916,0.93404556311218567,0.93277329221138727,0.93148929374287592,0.93019358385010154,0.92888617882375935,0.92756709510158519,0.9262363492681488,0.92489395805464514,0.92353993833868442,0.92217430714407922,0.92079708164063112,0.91940827914391454,0.91800791711505914,0.91659601316053008,0.91517258503190679,0.91373765062565981,0.91229122798292595,0.91083333528928079,0.90936399087451114,0.90788321321238341,0.90639102092041213,0.90488743275962569,0.90337246763433032,0.90184614459187251,0.90030848282239939,0.89875950165861784,0.89719922057555113,0.89562765919029375,0.89404483726176553,0.89245077469046263,0.89084549151820758,0.88922900792789705,0.88760134424324866,0.88596252092854455,0.8843125585883751,0.88265147796737908,0.88097929994998303,0.87929604556013918,0.8776017359610605,0.87589639245495465,0.87418003648275666,0.87245268962385891,0.87071437359583992,0.86896511025419143,0.86720492159204343,0.86543382973988781,0.86365185696529978,0.8618590256726586,0.86005535840286518,0.8582408778330588,0.85641560677633244,0.85457956818144554,0.8527327851325357,0.85087528084882813,0.84900707868434422,0.84712820212760731,0.84523867480134784,0.84333852046220625,0.84142776300043431,0.83950642643959428,0.83757453493625778,0.83563211277970117,0.83367918439160082,0.83171577432572552,0.82974190726762853,0.82775760803433607,0.82576290157403653,0.82375781296576611,0.82174236741909323,0.8197165902738025,0.81768050699957551,0.8156341431956704,0.8135775245906004,0.81151067704181068,0.80943362653535222,0.80734639918555606,0.80524902123470465,0.80314151905270148,0.80102391913674031,0.7988962481109716,0.79675853272616759,0.79461079985938654,0.79245307651363406,0.79028538981752428,0.78810776702493845,0.78592023551468226,0.7837228227901416,0.78151555647893722,0.77929846433257655,0.7770715742261054,0.7748349141577574,0.77258851224860203,0.77033239674219045,0.76806659600420146,0.76579113852208403,0.76350605290469931,0.76121136788196109,0.75890711230447483,0.75659331514317396,0.75427000548895695,0.7519372125523206,0.749594965662993,0.74724329426956504,0.74488222793911996,0.74251179635686126,0.74013202932574029,0.73774295676608104,0.73534460871520368,0.73293701532704758,0.73052020687179176,0.72809421373547401,0.72565906641960987,0.72321479554080814,0.72076143183038621,0.71829900613398412,0.71582754941117621,0.7133470927350819,0.71085766729197553,0.70835930438089367,0.70585203541324193,0.70333589191239987,0.70081090551332503,0.69827710796215436,0.69573453111580608,0.69318320694157864,0.69062316751674868,0.68805444502816793,0.68547707177185857,0.68289108015260724,0.68029650268355712,0.67769337198579993,0.67508172078796524,0.67246158192580885,0.66983298834180072,0.66719597308471001,0.66455056930918965,0.66189681027536018,0.65923472934839089,0.65656435999808027,0.65388573579843579,0.65119889042725143,0.64850385766568397,0.64580067139782882,0.64308936561029406,0.64036997439177201,0.63764253193261222,0.6349070725243906,0.63216363055947833,0.62941224053060996,0.62665293703044911,0.62388575475115404,0.62111072848394122,0.61832789311864822,0.6155372836432943,0.61273893514364142,0.60993288280275271,0.60711916190054971,0.60429780781336973,0.6014688560135204,0.59863234206883353,0.59578830164221852,0.59293677049121374,0.59007778446753667,0.5872113795166336,0.58433759167722732,0.58145645708086413,0.5785680119514599,0.57567229260484398,0.57276933544830322,0.56985917698012367,0.56694185378913242,0.56401740255423671,0.56108586004396366,0.55814726311599727,0.55520164871671507,0.55224905388072443,0.54928951573039586,0.54632307147539683,0.54334975841222377,0.54036961392373373,0.53738267547867291,0.53438898063120777,0.53138856702045045,0.52838147236998745,0.52536773448740426,0.5223473912638108,0.51932048067336412,0.51628704077279186,0.51324710970091281,0.51020072567815822,0.50714792700609113,0.50408875206692438,0.5010232393230386,0.49795142731649822,0.49487335466856663,0.49178906007922146,0.48869858232666746,0.48560196026684888,0.48249923283296114,0.47939043903496159,0.47627561795907802,0.47315480876731858,0.47002805069697851,0.46689538306014722,0.4637568452432137,0.46061247670637201,0.45746231698312373,0.45430640567978264,0.45114478247497569,0.44797748711914442,0.44480455943404518,0.44162603931224859,0.43844196671663732,0.4352523816799046,0.43205732430405047,0.4288568347598774,0.42565095328648545,0.42243972019076631,0.41922317584689672,0.41600136069583005,0.41277431524478914,0.40954208006675591,0.40630469579996187,0.40306220314737684,0.39981464287619761,0.39656205581733445,0.39330448286489905,0.39004196497568938,0.38677454316867527,0.38350225852448244,0.38022515218487624,0.37694326535224365,0.37365663928907633,0.37036531531745115,0.36706933481851095,0.36376873923194397,0.36046357005546326,0.35715386884428407,0.35383967721060267,0.35052103682307212,0.34719798940627894,0.3438705767402182,0.34053884065976869,0.33720282305416577,0.33386256586647645,0.33051811109307067,0.32716950078309387,0.32381677703793821,0.32045998201071346,0.31709915790571602,0.31373434697789987,0.31036559153234422,0.30699293392372179,0.30361641655576654,0.30023608188074058,0.29685197239889949,0.29346413065795957,0.29007259925256162,0.28667742082373593,0.28327863805836612,0.27987629368865252,0.27647043049157422,0.27306109128835238,0.26964831894391111,0.26623215636633868,0.262812646506348,0.25938983235673707,0.2559637569518472,0.25253446336702357,0.24910199471807265,0.24566639416072028,0.24222770489006917,0.23878597014005606,0.23534123318290714,0.23189353732859547,0.22844292592429546,0.22498944235383811,0.2215331300371656,0.21807403242978562,0.21461219302222401,0.21114765533947943,0.20768046294047518,0.20421065941751168,0.20073828839571856,0.19726339353250608,0.19378601851701643,0.19030620706957363,0.18682400294113505,0.18333944991274059,0.17985259179496241,0.17636347242735398,0.17287213567789933,0.16937862544246046,0.16588298564422685,0.1623852602331623,0.15888549318545261,0.15538372850295268,0.15188001021263339,0.14837438236602737,0.14486688903867637,0.14135757432957613,0.13784648236062236,0.13433365727605584,0.13081914324190769,0.12730298444544316,0.12378522509460746,0.12026590941746902,0.11674508166166361,0.11322278609383808,0.109699066999094,0.10617396868042997,0.10264753545818599,0.099119811669485275,0.095590841667677076,0.092060669821779031,0.088529340515919555,0.084996898148778866,0.081463387133032181,0.077928851894790374,0.074393336873041643,0.070856886519092832,0.067319545296010738,0.0637813576780622,0.060242368150156295,0.056702621207284101,0.053162161353959521,0.049621033103659756,0.04607928097826583,0.042536949507501962,0.038994083228377024,0.035450726684623707,0.03190692442613869,0.028362721008422544,0.024818160992019746,0.021273288941957555,0.017728149427187024,0.014182787020021773,0.010637246295577793,0.0070915718312130251,0.0035458082059671202,6.123233995736766e-17,0.99999875386955495,0.9999950154813253,0.99998878484462816,0.99998006197499201,0.99996884689415633,0.9999551396300721,0.99993894021690155,0.99992024869501761,0.99989906511100446,0.99987538951765731,0.99984922197398174,0.99982056254519414,0.99978941130272125,0.99975576832420021,0.99971963369347794,0.99968100750061151,0.99963988984186747,0.99959628081972163,0.99955018054285905,0.99950158912617382,0.99945050669076818,0.99939693336395308,0.99934086927924726,0.99928231457637684,0.99922126940127565,0.99915773390608398,0.99909170824914895,0.9990231925950237,0.9989521871144672,0.99887869198444357,0.99880270738812194,0.99872423351487549,0.9986432705602819,0.99855981872612176,0.99847387822037881,0.99838544925723938,0.9982945320570914,0.99820112684652429,0.99810523385832817,0.99800685333149342,0.9979059855112099,0.99780263064886665,0.99769678900205083,0.99758846083454755,0.99747764641633874,0.99736434602360302,0.99724855993871442,0.99713028845024199,0.99700953185294927,0.9968862904477932,0.99676056454192341,0.9966323544486817,0.99650166048760114,0.99636848298440506,0.99623282227100673,0.99609467868550783,0.99595405257219827,0.99581094428155514,0.99566535417024149,0.99551728260110595,0.99536672994318143,0.99521369657168446,0.99505818286801417,0.99490018921975121,0.99473971602065692,0.9945767636706726,0.99441133257591785,0.99424342314869008,0.99407303580746353,0.99390017097688776,0.99372482908778714,0.99354701057715944,0.9933667158881746,0.99318394547017419,0.99299869977866961,0.99281097927534168,0.99262078442803869,0.99242811571077583,0.99223297360373386,0.99203535859325775,0.99183527117185588,0.99163271183819801,0.9914276810971151,0.99122017945959695,0.99101020744279211,0.99079776557000543,0.99058285437069749,0.99036547438048317,0.99014562614113,0.98992331020055713,0.98969852711283401,0.98947127743817864,0.98924156174295663,0.98900938059967924,0.9887747345870026,0.98853762428972569,0.98829805029878925,0.98805601321127423,0.9878115136304001,0.98756455216552375,0.98731512943213739,0.98706324605186768,0.98680890265247367,0.98655209986784553,0.98629283833800274,0.98603111870909266,0.98576694163338885,0.98550030776928954,0.98523121778131595,0.9849596723401105,0.98468567212243518,0.98440921781117008,0.9841303100953116,0.98384894966997027,0.98356513723636996,0.98327887350184495,0.98299015917983956,0.98269899498990487,0.98240538165769808,0.98210931991498041,0.98181081049961472,0.98150985415556447,0.98120645163289133,0.98090060368775356,0.98059231108240408,0.9802815745851885,0.97996839497054311,0.97965277301899334,0.9793347095171514,0.97901420525771454,0.97869126103946291,0.9783658776672578,0.97803805595203952,0.97770779671082531,0.97737510076670719,0.97703996894885048,0.97670240209249093,0.97636240103893335,0.97601996663554891,0.9756750997357736,0.97532780119910567,0.97497807189110375,0.97462591268338439,0.97427132445362019,0.97391430808553781,0.97355486446891482,0.97319299449957875,0.97282869907940372,0.97246197911630927,0.97209283552425696,0.97172126922324908,0.97134728113932578,0.9709708722045628,0.9705920433570695,0.97021079554098633,0.96982712970648199,0.96944104680975218,0.96905254781301597,0.9686616336845143,0.96826830539850717,0.96787256393527132,0.9674744102810976,0.967073845428289,0.96667087037515731,0.96626548612602181,0.96585769369120567,0.96544749408703401,0.9650348883358314,0.96461987746591882,0.96420246251161168,0.96378264451321705,0.96336042451703086,0.96293580357533548,0.96250878274639706,0.96207936309446285,0.96164754568975874,0.96121333160848643,0.9607767219328206,0.96033771775090648,0.959896320156857,0.95945253025075017,0.95900634913862615,0.95855777793248476,0.95810681775028239,0.95765346971592957,0.95719773495928773,0.95673961461616686,0.95627910982832243,0.95581622174345249,0.95535095151519478,0.95488330030312429,0.95441326927274972,0.953940859595511,0.95346607244877635,0.95298890901583921,0.95250937048591544,0.95202745805413991,0.95154317292156432,0.95105651629515353,0.9505674893877829,0.95007609341823485,0.94958232961119649,0.94908619919725601,0.94858770341289989,0.94808684350050954,0.94758362070835866,0.94707803629060971,0.94657009150731097,0.94605978762439324,0.94554712591366707,0.9450321076528192,0.94451473412540932,0.94399500662086744,0.94347292643448999,0.94294849486743704,0.94242171322672885,0.94189258282524269,0.94136110498170966,0.94082728102071111,0.94029111227267559,0.93975260007387551,0.93921174576642386,0.9386685506982706,0.9381230162231996,0.93757514370082506,0.93702493449658819,0.93647238998175397,0.93591751153340752,0.93536030053445052,0.93480075837359833,0.93423888644537589,0.93367468615011462,0.93310815889394894,0.93253930608881241,0.93196812915243488,0.93139462950833807,0.93081880858583277,0.93024066782001502,0.92966020865176235,0.92907743252773056,0.9284923409003496,0.92790493522782069,0.92731521697411179,0.92672318760895478,0.92612884860784117,0.92553220145201898,0.9249332476284885,0.92433198862999877,0.92372842595504434,0.92312256110786073,0.92251439559842119,0.92190393094243284,0.92129116866133287,0.9206761102822848,0.92005875733817455,0.91943911136760659,0.91881717391490048,0.91819294653008665,0.91756643076890243,0.91693762819278879,0.91630654036888548,0.91567316887002825,0.91503751527474408,0.91439958116724751,0.91375936813743674,0.91311687778088968,0.91247211169886,0.91182507149827297,0.91117575879172141,0.9105241751974622,0.90987032233941156,0.90921420184714141,0.90855581535587515,0.90789516450648367,0.90723225094548132,0.90656707632502165,0.90589964230289333,0.90522995054251598,0.90455800271293629,0.90388380048882355,0.90320734555046545,0.90252863958376439,0.90184768428023265,0.90116448133698834,0.90047903245675165,0.89979133934783995,0.89910140372416369,0.89840922730522277,0.89771481181610113,0.89701815898746351,0.89631927055555038,0.89561814826217423,0.89491479385471451,0.89420920908611401,0.89350139571487408,0.89279135550505029,0.89207909022624798,0.89136460165361819,0.89064789156785273,0.88992896175518033,0.88920781400736137,0.88848445012168431,0.88775887190096059,0.88703108115352058,0.88630107969320859,0.88556886933937884,0.88483445191689036,0.88409782925610303,0.88335900319287286,0.88261797556854693,0.88187474822995948,0.88112932302942704,0.88038170182474351,0.87963188647917623,0.87887987886146035,0.87812568084579523,0.87736929431183908,0.87661072114470451,0.87584996323495357,0.87508702247859371,0.87432190077707217,0.87355460003727181,0.87278512217150639,0.87201346909751531,0.87123964273845955,0.87046364502291618,0.86968547788487405,0.86890514326372859,0.86812264310427723,0.86733797935671464,0.86655115397662741,0.86576216892498992,0.86497102616815846,0.86417772767786738,0.86338227543122337,0.86258467141070105,0.86178491760413767,0.86098301600472837,0.86017896861102128,0.85937277742691198,0.85856444446163949,0.8577539717297803,0.85694136125124398,0.85612661505126786,0.85530973516041187,0.85449072361455403,0.85366958245488467,0.85284631372790176,0.85202091948540581,0.85119340178449465,0.85036376268755809,0.84953200426227349,0.84869812858159965,0.84786213772377228,0.84702403377229896,0.84618381881595295,0.84534149494876965,0.84449706427003934,0.84365052888430414,0.8428018909013506,0.84195115243620633,0.84109831560913328,0.84024338254562347,0.83938635537639306,0.83852723623737735,0.8376660272697255,0.83680273061979471,0.83593734843914569,0.83506988288453654,0.83420033611791755,0.8333287103064263,0.83245500762238167,0.83157923024327873,0.83070138035178309,0.82982146013572589,0.82893947178809757,0.82805541750704348,0.82716929949585738,0.8262811199629766,0.82539088112197623,0.8244985851915636,0.82360423439557318,0.82270783096296041,0.82180937712779645,0.82090887512926258,0.82000632721164479,0.81910173562432809,0.81819510262179052,0.81728643046359817,0.81637572141439907,0.81546297774391785,0.81454820172694964,0.81363139564335518,0.8127125617780544,0.81179170242102072,0.81086881986727632,0.8099439164168849,0.80901699437494745,0.80808805605159528,0.80715710376198535,0.80622413982629337,0.80528916656970895,0.80435218632242944,0.803413201419654,0.80247221420157799,0.80152922701338702,0.80058424220525126,0.79963726213231934,0.79868828915471257,0.79773732563751931,0.79678437395078872,0.79582943646952509,0.79487251557368155,0.79391361364815483,0.79295273308277858,0.79198987627231787,0.79102504561646325,0.79005824351982412,0.78908947239192373,0.7881187346471924,0.78714603270496186,0.78617136898945905,0.78519474592980054,0.78421616595998533,0.78323563151889042,0.78225314505026322,0.78126870900271628,0.78028232582972123,0.77929399798960208,0.77830372794552993,0.77731151816551591,0.77631737112240562,0.7753212892938729,0.7743232751624135,0.77332333121533914,0.77232145994477075,0.77131766384763323,0.77031194542564807,0.76930430718532816,0.76829475163797079,0.76728328129965162,0.76626989869121898,0.76525460633828624,0.76423740677122731,0.76321830252516842,0.76219729613998366,0.7611743901602871,0.76014958713542724,0.75912288961948071,0.75809430017124557,0.75706382135423489,0.75603145573667097,0.75499720589147812,0.7539610743962768,0.75292306383337704,0.7518831767897719,0.75084141585713138,0.74979778363179539,0.74875228271476757,0.74770491571170916,0.7466556852329318,0.74560459389339184,0.74455164431268284,0.74349683911503006,0.74244018092928321,0.74138167238890995,0.74032131613199004,0.73925911480120765,0.73819507104384574,0.73712918751177903,0.73606146686146712,0.73499191175394862,0.73392052485483383,0.73284730883429849,0.73177226636707671,0.73069540013245515,0.72961671281426499,0.72853620710087674,0.72745388568519231,0.72636975126463943,0.72528380654116353,0.72419605422122213,0.72310649701577812,0.72201513764029202,0.72092197881471642,0.71982702326348802,0.71873027371552189,0.7176317329042039,0.71653140356738443,0.7154292884473713,0.71432539029092279,0.71321971184924138,0.71211225587796578,0.71100302513716551,0.70989202239133287,0.70877925040937662,0.70766471196461467,0.70654840983476774,0.70543034680195205,0.70431052565267216,0.70318894917781471,0.70206562017264063,0.7009405414367792,0.69981371577422002,0.69868514599330644,0.69755483490672909,0.6964227853315178,0.69528900008903571,0.69415348200497118,0.69301623390933176,0.69187725863643623,0.69073655902490816,0.68959413791766877,0.68844999816192909,0.68730414260918427,0.68615657411520514,0.68500729554003181,0.68385630974796618,0.68270361960756543,0.68154922799163375,0.68039313777721655,0.67923535184559203,0.67807587308226491,0.67691470437695866,0.67575184862360871,0.67458730872035499,0.67342108756953467,0.6722531880776752,0.67108361315548681,0.66991236571785517,0.66873944868383473,0.66756486497664047,0.66638861752364165,0.66521070925635362,0.66403114311043121,0.66284992202566106,0.66166704894595396,0.66048252681933861,0.65929635859795288,0.65810854723803769,0.65691909569992857,0.65572800694804934,0.65453528395090366,0.65334092968106872,0.65214494711518667,0.65094733923395809,0.64974810902213442,0.64854725946851022,0.64734479356591568,0.64614071431120967,0.64493502470527198,0.64372772775299536,0.64251882646327896,0.64130832384902015,0.64009622292710722,0.63888252671841195,0.63766723824778182,0.63645036054403292,0.63523189663994184,0.63401184957223866,0.63279022238159888,0.63156701811263605,0.63034223981389448,0.62911589053784112,0.62788797334085844,0.62665849128323625,0.6254274474291649,0.6241948448467266,0.6229606866078885,0.62172497578849528,0.6204877154682602,0.61924890873075911,0.61800855866342153,0.61676666835752336,0.61552324090817911,0.61427827941433477,0.61303178697875893,0.6117837667080358,0.61053422171255767,0.60928315510651665,0.60803057000789718,0.60677646953846798,0.60552085682377466,0.60426373499313157,0.60300510717961453,0.60174497652005232,0.60048334615501908,0.59922021922882718,0.5979555988895181,0.59668948828885593,0.59542189058231854,0.59415280892909006,0.59288224649205301,0.59161020643778062,0.59033669193652838,0.58906170616222686,0.58778525229247314,0.58650733350852324,0.5852279529952843,0.58394711394130627,0.58266481953877414,0.58138107298350028,0.58009587747491576,0.57880923621606339,0.57752115241358859,0.57623162927773242,0.57494067002232285,0.57364827786476735,0.57235445602604418,0.57105920773069474,0.56976253620681605,0.56846444468605162,0.56716493640358423,0.56586401459812752,0.56456168251191807,0.56325794339070712,0.56195280048375285,0.56064625704381188,0.55933831632713105,0.55802898159344017,0.55671825610594283,0.55540614313130898,0.55409264593966634,0.55277776780459276,0.55146151200310756,0.55014388181566332,0.54882488052613865,0.54750451142182854,0.54618277779343749,0.54485968293507037,0.543535230144225,0.54220942272178296,0.54088226397200234,0.53955375720250898,0.53822390572428869,0.53689271285167772,0.53556018190235621,0.53422631619733907,0.53289111906096776,0.53155459382090142,0.53021674380811001,0.52887757235686472,0.52753708280473,0.52619527849255576,0.52485216276446822,0.52350773896786251,0.52216201045339306,0.52081498057496667,0.51946665268973324,0.51811703015807742,0.5167661163436108,0.51541391461316299,0.51406042833677379,0.51270566088768366,0.51134961564232662,0.50999229598032136,0.50863370528446272,0.50727384694071276,0.50591272433819334,0.50455034086917749,0.50318669992907983,0.50182180491644934,0.50045565923296065,0.49908826628340541,0.4977196294756831,0.49634975222079403,0.49497863793282976,0.4936062900289645,0.49223271192944751,0.49085790705759363,0.48948187883977556,0.48810463070541421,0.48672616608697139,0.48534648841994082,0.48396560114283876,0.48258350769719682,0.48120021152755232,0.47981571608144052,0.47843002480938479,0.47704314116488955,0.47565506860443085,0.47426581058744721,0.47287537057633233,0.4714837520364254,0.47009095843600313,0.46869699324627007,0.46730185994135137,0.46590556199828348,0.46450810289700467,0.4631094861203478,0.46170971515403081,0.46030879348664833,0.4589067246096622,0.45750351201739414,0.45609915920701588,0.4546936696785413,0.45328704693481653,0.45187929448151271,0.45047041582711633,0.44906041448292017,0.44764929396301567,0.4462370577842833,0.44482370946638428,0.4434092525317509,0.44199369050557907,0.4405770269158189,0.43915926529316524,0.43774040917105006,0.43632046208563308,0.43489942757579308,0.43347730918311833,0.43205411045189912,0.43062983492911816,0.42920448616444129,0.4277780677102096,0.42635058312143009,0.424922035955767,0.42349242977353208,0.4220617681376771,0.42063005461378417,0.41919729277005707,0.41776348617731174,0.4163286384089685,0.41489275304104239,0.41345583365213412,0.4120178838234218,0.41057890713865153,0.40913890718412887,0.407697887548709,0.40625585182378898,0.40481280360329819,0.40336874648368898,0.40192368406392853,0.40047761994548947,0.39903055773234103,0.39758250103093934,0.39613345345021972,0.39468341860158695,0.39323240009890581,0.39178040155849314,0.39032742659910807,0.38887347884194357,0.3874185619106163,0.38596267943115903,0.38450583503201097,0.38304803234400797,0.38158927500037487,0.3801295666367156,0.37866891089100441,0.37720731140357605,0.37574477181711796,0.37428129577666058,0.3728168869295676,0.37135154892552813,0.36988528541654681,0.36841810005693493,0.36694999650330085,0.3654809784145418,0.36401104945183416,0.36254021327862451,0.36106847356062005,0.35959583396578026,0.35812229816430735,0.35664786982863661,0.3551725526334284,0.3536963502555579,0.35221926637410689,0.3507413046703533,0.34926246882776357,0.34778276253198248,0.34630218947082392,0.34482075333426226,0.34333845781442301,0.34185530660557345,0.34037130340411287,0.3388864519085647,0.33740075581956641,0.33591421883985989,0.3344268446742833,0.33293863702976106,0.33144959961529513,0.32995973614195478,0.32846905032286877,0.32697754587321493,0.32548522651021178,0.32399209595310802,0.32249815792317482,0.32100341614369565,0.31950787433995659,0.31801153623923822,0.31651440557080546,0.31501648606589866,0.31351778145772374,0.31201829548144366,0.31051803187416893,0.30901699437494745,0.30751518672475653,0.30601261266649254,0.3045092759449623,0.30300518030687273,0.30150032950082278,0.29999472727729343,0.29848837738863776,0.296981283589073,0.29547344963466998,0.29396487928334458,0.29245557629484725,0.29094554443075499,0.28943478745446138,0.28792330913116654,0.28641111322786894,0.28489820351335532,0.28338458375819164,0.28187025773471275,0.28035522921701439,0.27883950198094309,0.27732307980408616,0.2758059664657635,0.27428816574701731,0.27276968143060321,0.27125051730097982,0.26973067714430071,0.26821016474840409,0.26668898390280371,0.26516713839867867,0.26364463202886529,0.26212146858784674,0.26059765187174339,0.25907318567830417,0.25754807380689659,0.25602232005849751,0.25449592823568296,0.25296890214261969,0.25144124558505543,0.24991296237030841,0.24838405630725929,0.2468545312063409,0.24532439087952904,0.24379363914033217,0.24226227980378318,0.24073031668642925,0.23919775360632178,0.23766459438300794,0.23613084283752056,0.23459650279236882,0.23306157807152797,0.23152607250043108,0.22998998990595865,0.22845333411642943,0.22691610896159015,0.22537831827260715,0.22383996588205624,0.22230105562391247,0.22076159133354195,0.21922157684769125,0.21768101600447853,0.21613991264338286,0.21459827060523609,0.2130560937322126,0.21151338586781906,0.2099701508568862,0.20842639254555823,0.20688211478128382,0.2053373214128057,0.20379201629015206,0.20224620326462675,0.20069988618879861,0.19915306891649348,0.19760575530278351,0.19605794920397812,0.19450965447761354,0.1929608749824443,0.19141161457843323,0.18986187712674099,0.18831166648971787,0.18676098653089318,0.18520984111496616,0.18365823410779544,0.18210616937639068,0.18055365078890231,0.17900068221461132,0.1774472675239207,0.17589341058834518,0.17433911528050181,0.17278438547409958,0.17122922504393101,0.16967363786586157,0.16811762781682063,0.1665611987747907,0.16500435461879923,0.16344709922890824,0.16188943648620402,0.16033137027278871,0.15877290447176978,0.15721404296725086,0.15565478964432103,0.15409514838904659,0.15253512308846068,0.1509747176305529,0.14941393590426094,0.1478527817994601,0.14629125920695385,0.14472937201846353,0.14316712412661964,0.14160451942495175,0.140041561807878,0.13847825517069676,0.13691460340957601,0.13535061042154409,0.13378628010447915,0.13222161635710067,0.13065662307895887,0.12909130417042558,0.12752566353268341,0.1259597050677175,0.12439343267830515,0.12282685026800531,0.12125996174115028,0.11969277100283507,0.11812528195890805,0.11655749851596045,0.11498942458131783,0.11342106406302978,0.1118524208698594,0.11028349891127502,0.10871430209743946,0.10714483433920081,0.10557509954808172,0.10400510163627105,0.10243484451661342,0.10086433210259878,0.099293568308354022,0.097722557048632308,0.096151302238803818,0.094579807794844983,0.093008077633330175,0.091436115671421223,0.089863925826857025,0.088291512017945051,0.086718878163550728,0.08514602818308814,0.083572965996509332,0.081999695524295896,0.080426220687448507,0.078852545407476549,0.07727867360638957,0.075704609206686702,0.074130356131347344,0.072555918303820383,0.070981299648015903,0.069406504088294352,0.067831535549457367,0.06625639795673699,0.064681095235787259,0.063105631312673757,0.061530010113863165,0.059954235566214785,0.058378311596969906,0.056802242133742416,0.055226031104508168,0.05364968243759647,0.052073200061679682,0.050496587905762731,0.048919849899174653,0.047342989971557919,0.04576601205285908,0.044188920073318073,0.042611717963459791,0.04103440965408358,0.039456999076252823,0.037879490161286417,0.036301886840748143,0.034724193046437278,0.033146412710377916,0.031568549764810501,0.029990608142181154,0.028412591775132282,0.026834504596491917,0.025256350539265237,0.0236781335366241,0.022099857521896575,0.020521526428558472,0.018943144190222642,0.01736471474062963,0.015786242013636979,0.014207729943210757,0.012629182463415078,0.01105060350840165,0.0094719970124012842,0.0078933669097132116,0.0063147171346957199,0.0047360516217554594,0.0031573743053389678,0.0015786891199222012,6.123233995736766e-17,0.99998610763373685,0.99994443092094321,0.99987497101959544,0.9997777298596181,0.99965271014283097,0.99949991534287352,0.99931934970510816,0.99911101824650306,0.99887492675549194,0.9986110817918139,0.99831949068633041,0.99800016154082261,0.99765310322776524,0.99727832539008066,0.99687583844087102,0.99644565356312842,0.99598778270942467,0.99550223860157894,0.99498903473030453,0.99444818535483348,0.99387970550252125,0.99328361096842843,0.99265991831488209,0.99200864487101592,0.99132980873228838,0.99062342875997988,0.98988952458066903,0.98912811658568733,0.98833922593055201,0.98752287453437915,0.98667908507927382,0.98580788100970029,0.98490928653183074,0.98398332661287236,0.98303002698037367,0.98204941412151014,0.98104151528234784,0.98000635846708617,0.97894397243728049,0.97785438671104263,0.97673763156222027,0.97559373801955673,0.97442273786582811,0.97322466363696036,0.97199954862112559,0.97074742685781679,0.96946833313690217,0.96816230299765871,0.96682937272778458,0.96546957936239064,0.96408296068297206,0.96266955521635766,0.96122940223364051,0.95976254174908604,0.95826901451902025,0.95674886204069798,0.95520212655114911,0.95362885102600559,0.95202907917830704,0.95040285545728631,0.94875022504713458,0.94707123386574577,0.94536592856344059,0.94363435652167094,0.94187656585170287,0.94009260539327988,0.93828252471326612,0.93644637410426923,0.93458420458324265,0.93269606789006854,0.9307820164861198,0.92884210355280283,0.92687638299007957,0.92488490941497004,0.92286773816003498,0.9208249252718379,0.91875652750938885,0.91666260234256614,0.91454320795052058,0.91239840322005838,0.91022824774400546,0.90803280181955115,0.90581212644657327,0.90356628332594302,0.90129533485781088,0.8989993441398727,0.8966783749656162,0.89433249182254926,0.8919617598904076,0.88956624503934378,0.8871460138280971,0.88470113350214463,0.88223167199183206,0.87973769791048706,0.87721928055251241,0.87467648989146085,0.87210939657809061,0.8695180719384028,0.86690258797165953,0.86426301734838329,0.86159943340833756,0.85891191015848989,0.85620052227095489,0.85346534508091987,0.8507064545845513,0.84792392743688383,0.84511784094968989,0.84228827308933207,0.83943530247459652,0.83655900837450858,0.83365947070613067,0.83073677003234114,0.82779098755959657,0.82482220513567517,0.82183050524740231,0.81881597101835923,0.81577868620657323,0.8127187352021904,0.80963620302513095,0.80653117532272689,0.80340373836734258,0.80025397905397699,0.79708198489785043,0.79388784403197199,0.79067164520469135,0.7874334777772326,0.78417343172121168,0.78089159761613613,0.77758806664688884,0.77426293060119433,0.77091628186706807,0.76754821343024993,0.76415881887162074,0.76074819236460156,0.7573164286725379,0.7538636231460657,0.75038987172046323,0.74689527091298458,0.74337991782017865,0.73984391011519057,0.73628734604504886,0.73271032442793482,0.72911294465043741,0.72549530666479145,0.72185751098610074,0.71819965868954527,0.71452185140757274,0.71082419132707475,0.70710678118654757,0.70336972427323752,0.69961312442027157,0.69583708600377192,0.69204171393995562,0.68822711368222056,0.68439339121821474,0.68054065306689093,0.6766690062755486,0.67277855841685819,0.66886941758587271,0.66494169239702461,0.66099549198110785,0.65703092598224522,0.65304810455484275,0.64904713836052863,0.64502813856507812,0.64099121683532567,0.63693648533606184,0.63286405672691681,0.62877404415923011,0.62466656127290698,0.62054172219326098,0.61639964152784232,0.61224043436325459,0.60806421626195639,0.60387110325905058,0.59966121185906041,0.59543465903269244,0.59119156221358626,0.58693203929505233,0.58265620862679557,0.57836418901162723,0.57405609970216454,0.56973206039751667,0.56539219123995887,0.56103661281159523,0.5566654461310071,0.55227881264989165,0.54787683424968681,0.54345963323818514,0.53902733234613498,0.53458005472383152,0.53011792393769352,0.52564106396683163,0.52114959919960258,0.51664365443015359,0.51212335485495486,0.50758882606932132,0.50304019406392197,0.49847758522128061,0.49390112631226352,0.48931094449255752,0.4847071672991366,0.4800899226467189,0.47545933882421176,0.47081554449114832,0.46615866867411204,0.46148884076315183,0.45680619050818716,0.45211084801540291,0.4474029437436346,0.4426826085007427,0.4379499734399796,0.43320517005634462,0.42844833018293066,0.42367958598726124,0.41889906996761855,0.41410691494936114,0.40930325408123464,0.4044882208316713,0.39966194898508223,0.39482457263813964,0.38997622619605177,0.38511704436882727,0.38024716216753368,0.37536671490054541,0.37047583816978436,0.36557466786695236,0.36066334016975554,0.35574199153811986,0.35081075871040096,0.34586977869958396,0.34091918878947691,0.33595912653089632,0.3309897297378453,0.32601113648368479,0.32102348509729633,0.31602691415923978,0.31102156249790225,0.30600756918564082,0.30098507353491855,0.29595421509443398,0.2909151336452428,0.2858679691968754,0.28081286198344613,0.2757499524597567,0.27067938129739405,0.26560128938082189,0.26051581780346544,0.25542310786379252,0.25032330106138656,0.24521653909301558,0.24010296384869487,0.23498271740774507,0.22985594203484361,0.22472278017607314,0.21958337445496295,0.21443786766852632,0.20928640278329302,0.204129122931337,0.19896617140629977,0.19379769165940802,0.18862382729548932,0.18344472206898116,0.17826051987993694,0.17307136477002788,0.16787740091854095,0.1626787726383721,0.15747562437201779,0.15226810068756091,0.14705634627465416,0.14184050594049988,0.13662072460582686,0.13139714730086294,0.12616991916130654,0.1209391854242934,0.11570509142436129,0.11046778258941205,0.10522740443667102,0.099984102568643055,0.094738022669068361,0.089489310498873736,0.084238111892122949,0.078984572751964729,0.073728839046578898,0.068471056805120903,0.06321137211366358,0.057949931111139455,0.052686879985279503,0.047422364968551511,0.042156532334097115,0.0368895283916678,0.031621499483558885,0.026352591980544737,0.02108295227781104,0.015812726790887442,0.010542061951579447,0.0052711042039000769,6.123233995736766e-17,0.99999794597273206,0.99999178389936638,0.99998151380521705,0.9999671357324742,0.99994864974020359,0.99992605590434691,0.99989935431772081,0.99986854509001677,0.99983362834780076,0.99979460423451283,0.99975147291046607,0.99970423455284629,0.99965288935571128,0.99959743752998986,0.99953787930348115,0.99947421492085364,0.99940644464364414,0.9993345687502565,0.99925858753596097,0.99917850131289232,0.99909431041004937,0.99900601517329268,0.99891361596534411,0.99881711316578459,0.99871650717105276,0.99861179839444369,0.99850298726610676,0.99839007423304382,0.99827305975910796,0.99815194432500098,0.99802672842827156,0.99789741258331355,0.99776399732136356,0.99762648319049863,0.9974848707556343,0.99733916059852235,0.99718935331774783,0.99703544952872747,0.99687744986370608,0.99671535497175523,0.99654916551876949,0.99637888218746407,0.99620450567737229,0.99602603670484235,0.99584347600303447,0.99565682432191804,0.9954660824282684,0.99527125110566339,0.99507233115448102,0.99486932339189516,0.9946622286518727,0.99445104778517024,0.99423578165933035,0.99401643115867777,0.99379299718431657,0.99356548065412553,0.99333388250275512,0.99309820368162305,0.99285844515891086,0.99261460791955947,0.99236669296526581,0.99211470131447788,0.99185863400239105,0.99159849208094397,0.99133427661881379,0.99106598870141194,0.9907936294308799,0.99051719992608445,0.99023670132261299,0.98995213477276911,0.98966350144556769,0.98937080252673026,0.98907403921867987,0.98877321274053642,0.98846832432811138,0.98815937523390307,0.98784636672709125,0.9875293000935319,0.98720817663575189,0.98688299767294418,0.98655376454096144,0.98622047859231154,0.98588314119615117,0.98554175373828079,0.98519631762113868,0.98484683426379538,0.98449330510194732,0.9841357315879119,0.9837741151906203,0.98340845739561267,0.98303875970503096,0.98266502363761365,0.98228725072868872,0.98190544253016787,0.98151960061054011,0.98112972655486508,0.98073582196476672,0.98033788845842629,0.97993592767057669,0.97952994125249448,0.97911993087199423,0.97870589821342069,0.97828784497764287,0.97786577288204601,0.97743968366052558,0.97700957906347907,0.97657546085779978,0.97613733082686882,0.97569519077054845,0.97524904250517408,0.97479888786354696,0.97434472869492716,0.97388656686502506,0.97342440425599464,0.97295824276642495,0.97248808431133293,0.97201393082215515,0.97153578424673981,0.97105364654933934,0.97056751971060173,0.97007740572756229,0.96958330661363623,0.96908522439860956,0.96858316112863108,0.96807711886620429,0.96756709969017829,0.96705310569573966,0.9665351389944038,0.96601320171400618,0.96548729599869354,0.96495742400891527,0.96442358792141436,0.96388578992921869,0.96334403224163168,0.96279831708422337,0.9622486466988216,0.9616950233435021,0.96113744929257983,0.96057592683659943,0.96001045828232578,0.95944104595273449,0.95886769218700252,0.95829039934049842,0.95770916978477272,0.95712400590754798,0.95653491011270941,0.95594188482029474,0.95534493246648411,0.95474405550359043,0.95413925640004882,0.95353053764040729,0.95291790172531543,0.95230135117151515,0.95168088851182975,0.95105651629515353,0.95042823708644186,0.94979605346669971,0.94915996803297198,0.94851998339833243,0.94787610219187268,0.94722832705869198,0.94657666065988577,0.94592110567253518,0.94526166478969598,0.94459834072038718,0.94393113618958024,0.94326005393818768,0.94258509672305213,0.94190626731693461,0.94122356850850319,0.94053700310232202,0.93984657391883908,0.93915228379437521,0.93845413558111201,0.93775213214708042,0.93704627637614901,0.9363365711680115,0.93562301943817583,0.93490562411795131,0.93418438815443705,0.93345931451050967,0.93273040616481129,0.93199766611173718,0.93126109736142348,0.93052070293973466,0.92977648588825135,0.92902844926425798,0.92827659614072966,0.92752092960632004,0.92676145276534849,0.92599816873778729,0.92523108065924886,0.92446019168097271,0.92368550496981305,0.92290702370822486,0.92212475109425185,0.92133869034151261,0.92054884467918729,0.91975521735200527,0.9189578116202306,0.91815663075964982,0.91735167806155726,0.91654295683274278,0.91573047039547728,0.91491422208749917,0.91409421526200108,0.9132704532876158,0.9124429395484025,0.91161167744383276,0.91077667038877641,0.9099379218134882,0.90909543516359304,0.90824921390007185,0.90739926149924788,0.90654558145277186,0.90568817726760809,0.90482705246601958,0.90396221058555404,0.90309365517902906,0.9022213898145176,0.90134541807533342,0.90046574356001619,0.89958236988231677,0.89869530067118231,0.89780453957074169,0.89691009024028989,0.89601195635427366,0.89511014160227609,0.89420464968900115,0.89329548433425909,0.89238264927295075,0.89146614825505233,0.89054598504560012,0.88962216342467459,0.88869468718738553,0.88776356014385571,0.8868287861192059,0.88589036895353879,0.88494831250192318,0.8840026206343784,0.88305329723585835,0.88210034620623512,0.88114377146028366,0.88018357692766502,0.8792197665529109,0.87825234429540677,0.87728131412937604,0.87630668004386358,0.87532844604271942,0.87434661614458209,0.87336119438286253,0.87237218480572687,0.87137959147608046,0.87038341847155087,0.86938366988447113,0.86838034982186296,0.86737346240541979,0.86636301177149022,0.86534900207106036,0.86433143746973762,0.86331032214773251,0.86228566029984288,0.86125745613543503,0.86022571387842817,0.85919043776727544,0.85815163205494782,0.85710930100891558,0.85606344891113173,0.85501408005801349,0.85396119876042564,0.85290480934366164,0.85184491614742708,0.85078152352582082,0.84971463584731788,0.84864425749475092,0.84757039286529279,0.84649304637043765,0.84541222243598391,0.84432792550201508,0.84324016002288216,0.84214893046718509,0.8410542413177543,0.83995609707163277,0.83885450224005653,0.83774946134843764,0.83664097893634404,0.83552905955748202,0.83441370777967716,0.83329492818485529,0.83217272536902398,0.83104710394225356,0.82991806852865835,0.82878562376637732,0.82764977430755537,0.82651052481832399,0.82536787997878225,0.82422184448297731,0.82307242303888573,0.82191962036839328,0.82076344120727629,0.81960389030518188,0.8184409724256082,0.81727469234588546,0.8161050548571559,0.81493206476435387,0.81375572688618691,0.81257604605511502,0.81139302711733141,0.81020667493274234,0.80901699437494745,0.80782399033121921,0.80662766770248329,0.80542803140329833,0.80422508636183576,0.80301883751985925,0.80180928983270494,0.80059644826926057,0.79938031781194563,0.79816090345669022,0.796938210212915,0.79571224310351052,0.79448300716481657,0.79325050744660142,0.79201474901204105,0.79077573693769854,0.78953347631350312,0.78828797224272917,0.78703922984197516,0.78578725424114326,0.78453205058341724,0.78327362402524248,0.78201197973630354,0.78074712289950432,0.77947905871094547,0.77820779237990401,0.77693332912881108,0.77565567419323145,0.77437483282184116,0.77309081027640647,0.77180361183176205,0.77051324277578925,0.76921970840939446,0.76792301404648755,0.76662316501395966,0.76532016665166136,0.76401402431238119,0.76270474336182292,0.76139232917858424,0.76007678715413407,0.75875812269279097,0.75743634121170011,0.75611144814081233,0.75478344892286031,0.75345234901333746,0.75211815388047454,0.75078086900521823,0.74944049988120753,0.74809705201475196,0.74675053092480859,0.7454009421429596,0.74404829121338911,0.74269258369286117,0.7413338251506959,0.73997202116874772,0.73860717734138159,0.7372392992754504,0.73586839259027181,0.73449446291760523,0.73311751590162877,0.73173755719891576,0.73035459247841183,0.72896862742141155,0.72757966772153493,0.72618771908470403,0.72479278722911999,0.72339487788523871,0.72199399679574827,0.72059014971554436,0.71918334241170756,0.71777358066347863,0.71636087026223616,0.71494521701147118,0.7135266267267647,0.71210510523576276,0.71068065837815331,0.70925329200564169,0.70782301198192676,0.70638982418267693,0.70495373449550569,0.70351474881994802,0.70207287306743538,0.70062811316127205,0.6991804750366104,0.69772996464042714,0.69627658793149771,0.69482035088037308,0.69336125946935434,0.69189931969246876,0.69043453755544448,0.68896691907568663,0.68749647028225169,0.68602319721582372,0.68454710592868862,0.68306820248471023,0.68158649295930407,0.68010198343941408,0.67861468002348624,0.677124588821444,0.67563171595466331,0.67413606755594735,0.67263764976950136,0.67113646875090716,0.66963253066709838,0.6681258416963346,0.66661640802817645,0.66510423586345946,0.66358933141426968,0.66207170090391698,0.66055135056691039,0.65902828664893187,0.65750251540681126,0.65597404310849972,0.65444287603304518,0.6529090204705652,0.65137248272222226,0.64983326910019701,0.64829138592766322,0.64674683953876089,0.6451996362785708,0.64364978250308846,0.64209728457919757,0.64054214888464445,0.63898438180801098,0.63742398974868975,0.63586097911685602,0.63429535633344292,0.63272712783011409,0.63115630004923795,0.62958287944386049,0.62800687247767939,0.6264282856250174,0.62484712537079523,0.62326339821050536,0.6216771106501856,0.6200882692063916,0.61849688040617057,0.61690295078703461,0.61530648689693357,0.61370749529422808,0.6121059825476628,0.61050195523633954,0.60889541994968999,0.60728638328744866,0.60567485185962577,0.60406083228648066,0.60244433119849339,0.60082535523633884,0.59920391105085846,0.59758000530303335,0.59595364466395695,0.59432483581480744,0.59269358544682038,0.59105990026126132,0.58942378696939801,0.58778525229247314,0.58614430296167641,0.58450094571811739,0.58285518731279695,0.58120703450658062,0.57955649407016985,0.57790357278407489,0.57624827743858653,0.57459061483374818,0.57293059177932837,0.5712682150947922,0.56960349160927393,0.56793642816154832,0.56626703160000291,0.56459530878260977,0.56292126657689767,0.56124491185992287,0.55956625151824235,0.55788529244788398,0.55620204155431974,0.55451650575243561,0.55282869196650508,0.55113860713015872,0.54944625818635773,0.54775165208736332,0.54605479579471028,0.54435569627917635,0.54265436052075533,0.54095079550862724,0.53924500824112986,0.53753700572573049,0.53582679497899655,0.53411438302656711,0.5323997769031239,0.53068298365236222,0.52896401032696239,0.52724286398856068,0.52551955170772024,0.52379408056390164,0.52206645764543436,0.5203366900494879,0.51860478488204187,0.5168707492578567,0.51513459030044573,0.51339631514204442,0.5116559309235823,0.50991344479465206,0.50816886391348215,0.50642219544690581,0.50467344657033242,0.50292262446771785,0.50116973633153461,0.49941478936274269,0.49765779077076011,0.49589874777343307,0.49413766759700573,0.49237455747609166,0.49060942465364343,0.48884227638092315,0.48707311991747182,0.48530196253108099,0.48352881149776172,0.48175367410171532,0.47997655763530273,0.47819746939901542,0.47641641670144497,0.47463340685925309,0.47284844719714109,0.47106154504782083,0.46927270775198382,0.46748194265827114,0.46568925712324372,0.46389465851135109,0.46209815419490236,0.46029975155403535,0.45849945797668629,0.45669728085855904,0.45489322760309558,0.45308730562144522,0.45127952233243407,0.44946988516253406,0.44765840154583353,0.4458450789240061,0.44402992474628006,0.44221294646940745,0.44039415155763428,0.43857354748266925,0.43675114172365342,0.43492694176712854,0.4331009551070078,0.431273189244544,0.4294436516882989,0.42761234995411279,0.42577929156507266,0.42394448405148255,0.42210793495083182,0.42026965180776449,0.41842964217404754,0.41658791360854119,0.41474447367716671,0.41289932995287615,0.41105249001562016,0.40920396145231808,0.40735375185682604,0.40550186882990624,0.4036483199791947,0.40179311291917136,0.39993625527112803,0.39807775466313738,0.39621761873002087,0.39435585511331855,0.39249247146125693,0.39062747542871762,0.38876087467720627,0.38689267687482015,0.3850228896962179,0.38315152082258719,0.38127857794161374,0.37940406874744848,0.37752800094067773,0.37565038222829028,0.37377122032364646,0.37189052294644542,0.37000829782269473,0.36812455268467786,0.3662392952709228,0.36435253332616946,0.36246427460133884,0.36057452685350094,0.35868329784584269,0.35679059534763558,0.35489642713420488,0.35300080098689696,0.3511037246930474,0.34920520604594923,0.34730525284482028,0.34540387289477203,0.34350107400677704,0.34159686399763711,0.33969125068995043,0.33778424191208056,0.33587584549812355,0.3339660692878762,0.33205492112680285,0.3301424088660046,0.32822854036218618,0.32631332347762393,0.32439676608013285,0.32247887604303549,0.32055966124512869,0.31863912957065166,0.31671728890925294,0.31479414715595894,0.31286971221114085,0.31094399198048239,0.30901699437494745,0.30708872731074699,0.3051591987093073,0.30322841649723725,0.30129638860629565,0.29936312297335799,0.29742862754038507,0.29549291025438973,0.29355597906740433,0.29161784193644741,0.28967850682349217,0.28773798169543302,0.28579627452405332,0.28385339328599146,0.28190934596270978,0.27996414054046076,0.27801778501025454,0.27607028736782535,0.27412165561359991,0.27217189775266376,0.27022102179472851,0.26826903575409922,0.26631594764964056,0.26436176550474522,0.26240649734729993,0.26045015120965326,0.25849273512858134,0.25653425714525635,0.25457472530521269,0.2526141476583143,0.25065253225872053,0.24868988716485474,0.24672622043936995,0.24476154014911641,0.24279585436510742,0.24082917116248764,0.23886149862049891,0.23689284482244752,0.23492321785567025,0.23295262581150231,0.23098107678524324,0.22900857887612422,0.2270351401872738,0.22506076882568593,0.22308547290218583,0.2211092605313969,0.21913213983170757,0.21715411892523701,0.21517520593780323,0.21319540899888872,0.21121473624160744,0.20923319580267072,0.20725079582235489,0.20526754444446726,0.20328344981631283,0.20129852008866012,0.19931276341570886,0.19732618795505583,0.19533880186766153,0.193350613317816,0.19136163047310639,0.18937186150438276,0.18738131458572474,0.18538999789440716,0.18339791961086785,0.18140508791867299,0.17941151100448391,0.17741719705802347,0.17542215427204172,0.17342639084228342,0.17142991496745358,0.1694327348491842,0.1674348586919997,0.16543629470328447,0.16343705109324838,0.16143713607489349,0.15943655786397923,0.15743532467899027,0.15543344474110168,0.15343092627414562,0.1514277775045767,0.14942400666143957,0.1474196219763341,0.14541463168338212,0.14340904401919266,0.14140286722282941,0.13939610953577611,0.13738877920190276,0.13538088446743204,0.13337243358090461,0.13136343479314647,0.12935389635723415,0.12734382652846141,0.12533323356430426,0.12332212572438847,0.12131051127045474,0.11929839846632516,0.11728579557786842,0.11527271087296717,0.11325915262148316,0.11124512909522372,0.10923064856790687,0.10721571931512874,0.10520034961432856,0.1031845477447552,0.10116832198743222,0.099151680625125221,0.097134631942306898,0.095117184225123219,0.093099345761359684,0.091081124840406286,0.089062529753224859,0.087043568792314119,0.085024250251675981,0.083004582426780743,0.080984573614534164,0.078964232113242605,0.076943566222579377,0.074922584243549695,0.072901294478457987,0.070879705230872822,0.068857824805593298,0.066835661508614044,0.064813223647092369,0.062790519529313304,0.060767557464655904,0.058744345763558206,0.056720892737484443,0.054697206698889993,0.052673295961187465,0.050649168838712767,0.048624833646690062,0.046600298701198938,0.044575572319139369,0.042550662818197964,0.040525578516812946,0.03850032773414129,0.036474918790023646,0.034449360004950649,0.032423659700027807,0.030397826196942659,0.028371867817929729,0.026345792885736737,0.024319609723589562,0.022293326655159353,0.020266952004527456,0.018240494096151673,0.016213961254831159,0.014187361805673569,0.012160704074059963,0.010133996385610824,0.0081072470661520905,0.0060804644416800509,0.0040536568383284823,0.0020268325823335526,6.123233995736766e-17,0.99999692105369242,0.9999876842337293,0.99997228959699025,0.99995073723827355,0.99992302729029647,0.99988915992369387,0.99984913534701725,0.99980295380673379,0.99975061558722433,0.99969212101078209,0.99962747043761035,0.99955666426582046,0.99947970293142918,0.99939658690835609,0.99930731670842088,0.99921189288133971,0.99911031601472222,0.99900258673406805,0.99888870570276245,0.99876867362207244,0.9986424912311429,0.99851015930699127,0.99837167866450349,0.99822705015642832,0.99807627467337279,0.99791935314379587,0.99775628653400372,0.99758707584814288,0.99741172212819462,0.9972302264539683,0.9970425899430948,0.99684881375101964,0.99664889907099574,0.99644284713407638,0.99623065920910703,0.99601233660271837,0.99578788065931734,0.99555729276107974,0.99532057432794097,0.99507772681758777,0.99482875172544905,0.99457365058468661,0.99431242496618588,0.99404507647854623,0.99377160676807097,0.99349201751875715,0.99320631045228536,0.99291448732800902,0.99261654994294368,0.99231250013175554,0.99200233976675101,0.99168607075786397,0.99136369505264521,0.99103521463624977,0.99070063153142462,0.99035994779849668,0.99001316553535967,0.98966028687746166,0.98930131399779153,0.98893624910686573,0.98856509445271457,0.98818785232086859,0.98780452503434435,0.9874151149536301,0.98701962447667135,0.98661805603885588,0.98621041211299909,0.98579669520932856,0.98537690787546839,0.98495105269642391,0.98451913229456578,0.98408114932961332,0.98363710649861857,0.9831870065359497,0.98273085221327394,0.98226864633954047,0.98180039176096356,0.98132609136100457,0.98084574806035441,0.98035936481691566,0.97986694462578405,0.97936849051923014,0.97886400556668085,0.97835349287470041,0.97783695558697115,0.97731439688427413,0.97678581998446978,0.97625122814247789,0.9757106246502576,0.97516401283678711,0.97461139606804337,0.97405277774698107,0.97348816131351179,0.97291755024448301,0.97234094805365634,0.97175835829168611,0.97116978454609759,0.9705752304412647,0.96997469963838767,0.96936819583547085,0.96875572276729949,0.96813728420541678,0.9675128839581012,0.9668825258703424,0.9662462138238177,0.96560395173686842,0.96495574356447544,0.96430159329823517,0.96364150496633472,0.96297548263352706,0.96230353040110617,0.96162565240688191,0.96094185282515399,0.96025213586668701,0.95955650577868368,0.95885496684475957,0.95814752338491604,0.95743417975551404,0.95671494034924687,0.95598980959511359,0.95525879195839158,0.95452189194060899,0.95377911407951688,0.95303046294906169,0.95227594315935649,0.95151555935665333,0.95074931622331393,0.94997721847778116,0.94919927087455014,0.94841547820413863,0.94762584529305771,0.94683037700378203,0.94602907823471982,0.94522195392018304,0.94440900903035652,0.9435902485712675,0.94276567758475494,0.94193530114843849,0.9410991243756871,0.94025715241558749,0.93940939045291261,0.93855584370808953,0.93769651743716753,0.93683141693178551,0.93596054751913937,0.93508391456194961,0.93420152345842766,0.93331337964224337,0.9324194885824908,0.93151985578365515,0.93061448678557868,0.92970338716342638,0.9287865625276519,0.92786401852396294,0.92693576083328633,0.92600179517173331,0.92506212729056403,0.92411676297615253,0.9231657080499508,0.92220896836845268,0.92124654982315857,0.92027845834053856,0.91930469988199592,0.91832528044383066,0.91734020605720268,0.91634948278809414,0.91535311673727249,0.91435111404025304,0.91334348086726069,0.91233022342319225,0.9113113479475784,0.9102868607145449,0.909256768032774,0.90822107624546589,0.90717979173029939,0.90613292089939268,0.90508047019926396,0.90402244611079152,0.90295885514917429,0.901889703863891,0.90081499883866056,0.89973474669140108,0.89864895407418932,0.89755762767321945,0.89646077420876247,0.89535840043512416,0.89425051314060378,0.89313711914745231,0.8920182253118305,0.89089383852376647,0.88976396570711314,0.88862861381950609,0.88748778985232035,0.88634150083062735,0.88518975381315179,0.88403255589222818,0.88286991419375693,0.881701835877161,0.88052832813534099,0.87934939819463165,0.87816505331475692,0.87697530078878549,0.87578014794308556,0.87457960213728003,0.87337367076420114,0.87216236124984459,0.87094568105332448,0.8697236376668267,0.86849623861556324,0.86726349145772574,0.8660254037844386,0.864781983219713,0.86353323742039911,0.86227917407613941,0.86101980090932151,0.85975512567502999,0.85848515616099919,0.85720990018756493,0.85592936560761668,0.85464356030654864,0.85335249220221199,0.85205616924486549,0.85075459941712661,0.84944779073392251,0.84813575124244089,0.84681848902208001,0.84549601218439907,0.84416832887306859,0.84283544726381965,0.84149737556439408,0.84015412201449391,0.83880569488573009,0.83745210248157209,0.8360933531372966,0.83472945521993613,0.83336041712822773,0.83198624729256088,0.8306069541749258,0.82922254626886138,0.82783303209940295,0.8264384202230296,0.82503871922761129,0.8236339377323566,0.82222408438775918,0.82080916787554437,0.81938919690861611,0.81796418023100326,0.81653412661780556,0.81509904487513929,0.81365894384008397,0.81221383238062705,0.81076371939560976,0.80930861381467212,0.807848524598198,0.80638346073725997,0.80491343125356407,0.80343844519939389,0.80195851165755527,0.80047363974132002,0.79898383859436983,0.79748911739074035,0.7959894853347641,0.7944849516610144,0.79297552563424789,0.79146121654934798,0.78994203373126748,0.78841798653497097,0.78688908434537741,0.7853553365773025,0.78381675267539996,0.7822733421141046,0.78072511439757264,0.77917207905962416,0.77761424566368409,0.77605162380272319,0.77448422309919895,0.77291205320499679,0.77133512380136982,0.76975344459888029,0.7681670253373386,0.76657587578574438,0.76498000574222558,0.7633794250339786,0.76177414351720762,0.76016417107706391,0.7585495176275846,0.75693019311163245,0.75530620750083388,0.75367757079551789,0.75204429302465448,0.75040638424579265,0.74876385454499894,0.74711671403679469,0.74546497286409441,0.74380864119814283,0.7421477292384524,0.7404822472127407,0.7388122053768672,0.73713761401477018,0.73545848343840337,0.73377482398767258,0.73208664603037188,0.73039395996211998,0.72869677620629569,0.72699510521397448,0.72528895746386357,0.72357834346223759,0.72186327374287396,0.72014375886698767,0.71841980942316663,0.71669143602730667,0.71495864932254527,0.71322145997919717,0.71147987869468754,0.70973391619348691,0.70798358322704513,0.7062288905737244,0.70446984903873378,0.70270646945406212,0.70093876267841149,0.69916673959713038,0.69739041112214684,0.69560978819190056,0.69382488177127655,0.69203570285153682,0.690242262450253,0.68844457161123862,0.68664264140448061,0.6848364829260718,0.68302610729814217,0.68121152566879029,0.6793927492120152,0.67756978912764687,0.67574265664127775,0.67391136300419352,0.6720759194933037,0.67023633741107225,0.6683926280854483,0.66654480286979578,0.66469287314282388,0.66283685030851713,0.6609767457960648,0.6591125710597906,0.65724433757908252,0.65537205685832167,0.65349574042681158,0.65161539983870753,0.64973104667294479,0.64784269253316784,0.64595034904765869,0.64405402786926547,0.64215374067533004,0.64024949916761709,0.63834131507224134,0.63642920013959559,0.63451316614427811,0.63259322488502057,0.63066938818461504,0.62874166788984132,0.62681007587139403,0.62487462402380944,0.62293532426539211,0.62099218853814164,0.61904522880767932,0.61709445706317401,0.6151398853172686,0.61318152560600614,0.61121938998875525,0.60925349054813649,0.60728383938994757,0.60531044864308869,0.60333333045948812,0.60135249701402749,0.59936796050446628,0.59737973315136728,0.59538782719802097,0.5933922549103704,0.59139302857693532,0.58939016050873694,0.58738366303922163,0.58537354852418544,0.58335982934169761,0.58134251789202462,0.57932162659755382,0.57729716790271679,0.57526915427391268,0.57323759819943165,0.5712025121893779,0.56916390877559264,0.56712180051157657,0.56507619997241321,0.563027119754691,0.5609745724764259,0.55891857077698359,0.55685912731700182,0.55479625477831218,0.55272996586386225,0.55066027329763734,0.54858718982458199,0.5465107282105216,0.54443090124208371,0.5423477217266196,0.54026120249212506,0.53817135638716151,0.53607819628077646,0.53398173506242563,0.53188198564189149,0.52977896094920607,0.52767267393456907,0.52556313756827022,0.52345036484060747,0.52133436876180883,0.51921516236195053,0.51709275869087845,0.51496717081812593,0.51283841183283541,0.5107064948436757,0.50857143297876273,0.5064332393855786,0.50429192723088934,0.50214750970066557,0.49999999999999989,0.49784941135302685,0.49569575700283985,0.4935390502114117,0.49137930425951065,0.48921653244662083,0.48705074809085841,0.48488196452889132,0.48271019511585533,0.4805354532252738,0.47835775224897326,0.47617710559700294,0.47399352669755024,0.47180702899686011,0.46961762595915008,0.46742533106652934,0.46523015781891408,0.46303211973394576,0.46083123034690654,0.45862750321063733,0.45642095189545273,0.45421158998905919,0.45199943109646973,0.44978448883992161,0.44756677685879104,0.44534630880951059,0.44312309836548375,0.44089715921700179,0.43866850507115929,0.43643714965176861,0.43420310669927725,0.43196638997068149,0.42972701323944307,0.4274849902954031,0.42524033494469843,0.42299306100967532,0.4207431823288057,0.41849071275660049,0.41623566616352592,0.41397805643591623,0.41171789747589016,0.40945520320126344,0.40718998754546493,0.40492226445744883,0.40265204790161091,0.40037935185770052,0.39810419032073624,0.39582657730091808,0.39354652682354285,0.39126405292891614,0.38897916967226748,0.3866918911236622,0.3844022313679164,0.38211020450450861,0.37981582464749453,0.37751910592541843,0.37522006248122808,0.37291870847218567,0.37061505806978229,0.36830912545964989,0.36600092484147356,0.36369047042890512,0.36137777644947444,0.35906285714450303,0.356745726769015,0.35442639959165079,0.35210488989457772,0.34978121197340356,0.34745538013708699,0.34512740870785119,0.34279731202109381,0.34046510442530042,0.33813080028195452,0.33579441396545079,0.33345595986300486,0.33111545237456635,0.32877290591272873,0.32642833490264184,0.32408175378192189,0.32173317700056381,0.31938261902085074,0.31703009431726686,0.31467561737640609,0.31231920269688512,0.30996086478925206,0.3076006181758989,0.30523847739097043,0.30287445698027637,0.30050857150120014,0.29814083552261078,0.29577126362477191,0.29339987039925297,0.29102667044883895,0.28865167838743994,0.28627490884000245,0.28389637644241766,0.28151609584143311,0.27913408169456067,0.27675034866998816,0.27436491144648706,0.27197778471332407,0.26958898317016888,0.26719852152700535,0.26480641450403908,0.26241267683160863,0.26001732325009319,0.25762036850982328,0.25522182737098842,0.25282171460354769,0.25042004498713749,0.24801683331098173,0.24561209437379944,0.24320584298371525,0.24079809395816631,0.23838886212381308,0.23597816231644597,0.23356600938089603,0.23115241817094151,0.22873740354921834,0.22632098038712684,0.22390316356474174,0.22148396797071901,0.21906340850220571,0.21664150006474672,0.21421825757219431,0.21179369594661579,0.20936783011820082,0.20694067502517111,0.20451224561368667,0.20208255683775544,0.19965162365913958,0.19721946104726498,0.19478608397912739,0.19235150743920196,0.18991574641934911,0.18747881591872409,0.18504073094368279,0.18260150650769108,0.18016115763123075,0.17771969934170848,0.17527714667336183,0.17283351466716829,0.1703888183707509,0.16794307283828735,0.16549629313041558,0.16304849431414273,0.16059969146275058,0.15814989965570456,0.15569913397855917,0.15324740952286664,0.15079474138608251,0.14834114467147419,0.14588663448802636,0.14343122595034954,0.14097493417858548,0.13851777429831527,0.13605976144046583,0.13360091074121599,0.13114123734190475,0.12868075638893628,0.12621948303368855,0.12375743243241813,0.12129461974616867,0.11883106014067578,0.11636676878627542,0.11390176085780868,0.1114360515345301,0.10896965600001247,0.10650258944205511,0.10403486705258851,0.10156650402758256,0.099097515566951289,0.096627916874460942,0.094157723157634626,0.091686949627660441,0.089215611499296008,0.086743723990776567,0.08427130232371953,0.081798361723032467,0.079324917416817575,0.076850984636279748,0.074376578615630948,0.07190171459199815,0.069426407805327814,0.066950673498293783,0.064474526916201619,0.061997983306896272,0.059521057920667586,0.057043766010155664,0.054566122830258496,0.052088143638036294,0.049609843692619261,0.047131238255111889,0.044652342588500739,0.042173171957558687,0.039693741628752707,0.037214066870148048,0.034734162951316053,0.032254045143238305,0.029773728718214376,0.027293228949766025,0.024812561112544897,0.022331740482236712,0.019850782335468945,0.017369701949715006,0.014888514603201923,0.012407235574814492,0.0099258801440029621,0.0074444635906871703,0.0049630011951642319,0.0024815082380126624,6.123233995736766e-17,0.99999798258100203,0.99999193033214806,0.99998184327785788,0.99996772145883128,0.99994956493204723,0.99992737377076468,0.99990114806452124,0.99987088791913337,0.99983659345669584,0.99979826481558132,0.99975590215043952,0.99970950563219718,0.99965907544805654,0.99960461180149529,0.9995461149122653,0.99948358501639223,0.99941702236617402,0.99934642723018019,0.99927179989325055,0.99919314065649445,0.99911044983728914,0.99902372776927861,0.99893297480237242,0.99883819130274409,0.99873937765282972,0.99863653425132637,0.99852966151319034,0.99841875986963602,0.99830382976813348,0.9981848716724071,0.99806188606243351,0.99793487343443965,0.99780383430090103,0.99766876919053915,0.9975296786483201,0.9973865632354515,0.99723942352938089,0.99708826012379304,0.99693307362860806,0.99677386466997808,0.9966106338902857,0.99644338194814042,0.99627210951837675,0.99609681729205135,0.99591750597643991,0.99573417629503447,0.99554682898754077,0.99535546480987458,0.99516008453415949,0.99496068894872325,0.99475727885809484,0.99454985508300087,0.99433841846036275,0.99412296984329296,0.99390351010109179,0.99368004011924382,0.99345256079941402,0.99322107305944485,0.99298557783335162,0.99274607607131959,0.99250256873969944,0.99225505682100379,0.99200354131390334,0.9917480232332222,0.99148850360993446,0.99122498349115984,0.99095746394015927,0.99068594603633076,0.99041043087520519,0.99013091956844146,0.98984741324382253,0.98955991304525048,0.98926842013274197,0.98897293568242362,0.98867346088652752,0.98836999695338579,0.98806254510742619,0.98775110658916732,0.98743568265521298,0.9871162745782478,0.98679288364703144,0.98646551116639392,0.9861341584572304,0.98579882685649511,0.98545951771719686,0.98511623240839308,0.98476897231518434,0.98441773883870887,0.9840625333961367,0.9837033574206645,0.98334021236150904,0.98297309968390179,0.98260202086908288,0.98222697741429532,0.98184797083277853,0.98146500265376291,0.98107807442246275,0.98068718770007091,0.9802923440637521,0.97989354510663618,0.97949079243781256,0.97908408768232291,0.97867343248115501,0.97825882849123602,0.97784027738542612,0.97741778085251096,0.97699134059719561,0.9765609583400976,0.97612663581773951,0.97568837478254233,0.97524617700281835,0.9748000442627639,0.97434997836245252,0.97389598111782705,0.97343805436069286,0.97297619993871021,0.97251041971538688,0.97204071557007055,0.97156708939794145,0.9710895431100045,0.97060807863308141,0.97012269790980354,0.96963340289860345,0.96914019557370712,0.96864307792512627,0.96814205195865011,0.96763711969583721,0.96712828317400745,0.96661554444623377,0.96609890558133393,0.96557836866386193,0.96505393579410004,0.96452560908804974,0.96399339067742396,0.96345728270963749,0.96291728734779936,0.96237340677070315,0.96182564317281904,0.96127399876428443,0.96071847577089509,0.96015907643409615,0.95959580301097358,0.95902865777424418,0.95845764301224723,0.95788276102893477,0.95730401414386235,0.95672140469218003,0.95613493502462243,0.95554460750749981,0.95495042452268797,0.95435238846761894,0.95375050175527143,0.95314476681416083,0.95253518608832943,0.95192176203733658,0.95130449713624921,0.95068339387563106,0.95005845476153306,0.94942968231548353,0.9487970790744773,0.94816064759096585,0.9475203904328473,0.94687631018345542,0.94622840944154984,0.94557669082130491,0.94492115695229983,0.94426181047950741,0.94359865406328403,0.9429316903793582,0.94226092211882051,0.94158635198811214,0.94090798270901421,0.94022581701863694,0.93953985766940851,0.9388501074290635,0.93815656908063261,0.93745924542243064,0.93675813926804552,0.93605325344632706,0.93534459080137533,0.93463215419252943,0.9339159464943555,0.9331959705966355,0.93247222940435581,0.93174472583769463,0.93101346283201125,0.93027844333783316,0.92953967032084506,0.92879714676187652,0.9280508756568896,0.92730086001696732,0.92654710286830144,0.92578960725217985,0.92502837622497469,0.92426341285812974,0.92349472023814838,0.92272230146658063,0.92194615966001137,0.92116629795004679,0.92038271948330252,0.919595427421391,0.91880442494090797,0.91800971523342034,0.91721130150545305,0.91640918697847606,0.91560337488889165,0.91479386848802102,0.91398067104209124,0.91316378583222246,0.91234321615441405,0.9115189653195318,0.91069103665329409,0.9098594334962592,0.90902415920381108,0.9081852171461462,0.90734261070825972,0.90649634328993223,0.90564641830571557,0.90479283918491948,0.90393560937159745,0.90307473232453273,0.9022102115172248,0.90134205043787519,0.90047025258937308,0.8995948214892816,0.89871576066982339,0.89783307367786647,0.89694676407490981,0.89605683543706915,0.89516329135506234,0.89426613543419498,0.89336537129434579,0.89246100256995231,0.89155303290999566,0.89064146597798655,0.88972630545194964,0.88880755502440945,0.88788521840237522,0.88695929930732575,0.8860298014751945,0.88509672865635469,0.88416008461560414,0.88321987313214945,0.88227609799959206,0.88132876302591145,0.88037787203345086,0.87942342885890135,0.87846543735328653,0.877503901381947,0.8765388248245245,0.87557021157494674,0.87459806554141117,0.8736223906463696,0.87264319082651198,0.87166047003275127,0.87067423223020635,0.86968448139818721,0.86869122153017797,0.86769445663382139,0.86669419073090237,0.86569042785733163,0.86468317206312983,0.8636724274124109,0.86265819798336574,0.86164048786824599,0.86061930117334684,0.85959464201899116,0.85856651453951283,0.85753492288323963,0.85649987121247662,0.8554613637034898,0.85441940454648857,0.85337399794560942,0.85232514811889859,0.85127285929829521,0.85021713572961422,0.84915798167252909,0.84809540140055495,0.84702939920103115,0.8459599793751037,0.84488714623770833,0.84381090411755311,0.84273125735710053,0.84164821031255044,0.84056176735382204,0.83947193286453681,0.83837871124200036,0.83728210689718474,0.83618212425471095,0.83507876775283052,0.83397204184340845,0.83286195099190441,0.83174849967735509,0.83063169239235612,0.82951153364304409,0.82838802794907807,0.82726117984362135,0.82613099387332367,0.82499747459830231,0.82386062659212389,0.82272045444178588,0.8215769627476982,0.82043015612366466,0.81928003919686421,0.81812661660783226,0.81696989301044209,0.81580987307188602,0.81464656147265657,0.81347996290652769,0.81231008208053546,0.8111369237149596,0.80996049254330404,0.80878079331227781,0.80759783078177649,0.80641160972486192,0.80522213492774408,0.80402941118976112,0.80283344332335993,0.80163423615407725,0.80043179452051971,0.79922612327434439,0.79801722728023949,0.7968051114159046,0.79558978057203078,0.79437123965228107,0.7931494935732708,0.79192454726454731,0.79069640566857058,0.78946507374069308,0.78823055644913942,0.78699285877498715,0.78575198571214566,0.78450794226733689,0.78326073346007441,0.78201036432264392,0.78075683990008227,0.77950016525015731,0.77824034544334775,0.77697738556282236,0.7757112907044198,0.77444206597662757,0.77316971650056188,0.77189424740994672,0.77061566385109315,0.76933397098287892,0.7680491739767269,0.766761278016585,0.76547028829890473,0.76417621003262037,0.76287904843912835,0.76157880875226525,0.76027549621828761,0.75896911609585049,0.75765967365598597,0.75634717418208219,0.75503162296986193,0.75371302532736106,0.75239138657490767,0.75106671204509978,0.74973900708278474,0.74840827704503676,0.7470745273011361,0.74573776323254692,0.74439799023289555,0.74305521370794914,0.74170943907559339,0.74036067176581077,0.73900891722065909,0.73765418089424883,0.73629646825272166,0.73493578477422805,0.73357213594890547,0.73220552727885591,0.73083596427812414,0.72946345247267486,0.72808799740037078,0.72670960461095047,0.72532827966600544,0.72394402813895797,0.72255685561503902,0.72116676769126464,0.71977376997641462,0.7183778680910089,0.7169790676672857,0.7155773743491779,0.71417279379229104,0.71276533166388001,0.71135499364282662,0.70994178541961639,0.70852571269631526,0.70710678118654757,0.7056849966154719,0.70426036471975861,0.70283289124756676,0.70140258195852057,0.69996944262368621,0.69853347902554863,0.69709469695798854,0.69565310222625831,0.69420870064695928,0.69276149804801768,0.69131150026866162,0.68985871315939729,0.68840314258198521,0.68694479440941691,0.68548367452589098,0.68401978882678949,0.68255314321865412,0.68108374361916213,0.67961159595710297,0.678136706172354,0.67665908021585652,0.67517872404959178,0.67369564364655721,0.67220984499074199,0.67072133407710288,0.66923011691154044,0.66773619951087415,0.66623958790281879,0.66474028812595976,0.66323830622972879,0.66173364827437942,0.66022632033096285,0.65871632848130302,0.65720367881797248,0.65568837744426756,0.65417043047418388,0.65264984403239146,0.6511266242542102,0.6496007772855853,0.64807230928306203,0.64654122641376099,0.64500753485535378,0.64347124079603724,0.64193235043450902,0.64039086997994243,0.63884680565196139,0.63730016368061526,0.63575095030635387,0.63419917178000229,0.63264483436273533,0.63108794432605286,0.62952850795175375,0.62796653153191118,0.62640202136884704,0.62483498377510638,0.62326542507343186,0.62169335159673866,0.62011876968808866,0.61854168570066481,0.61696210599774537,0.61538003695267851,0.61379548494885661,0.61220845637969035,0.61061895764858276,0.60902699516890391,0.60743257536396433,0.60583570466698966,0.60423638952109449,0.60263463637925641,0.6010304517042897,0.5994238419688197,0.59781481365525657,0.59620337325576866,0.594589527272257,0.59297328221632883,0.5913546446092709,0.58973362098202375,0.58811021787515527,0.58648444183883386,0.58485629943280237,0.58322579722635193,0.58159294179829457,0.57995773973693732,0.57832019764005593,0.57668032211486708,0.57503811977800323,0.57339359725548444,0.57174676118269285,0.57009761820434512,0.56844617497446615,0.5667924381563616,0.56513641442259188,0.56347811045494434,0.56181753294440673,0.56015468859114048,0.55848958410445315,0.55682222620277144,0.55515262161361445,0.55348077707356624,0.55180669932824866,0.55013039513229423,0.54845187124931871,0.54677113445189418,0.54508819152152121,0.54340304924860205,0.54171571443241251,0.54002619388107553,0.53833449441153269,0.53664062284951708,0.53494458602952633,0.53324639079479408,0.53154604399726313,0.5298435524975571,0.5281389231649537,0.52643216287735584,0.52472327852126499,0.52301227699175257,0.52129916519243269,0.51958395003543356,0.51786663844137104,0.51614723733931867,0.51442575366678156,0.51270219436966769,0.51097656640225908,0.50924887672718555,0.50751913231539469,0.50578734014612514,0.50405350720687758,0.50231764049338734,0.50057974700959507,0.49883983376761959,0.49709790778772883,0.49535397609831217,0.49360804573585115,0.49186012374489224,0.49011021717801717,0.48835833309581578,0.48660447856685624,0.48484866066765775,0.48309088648266069,0.48133116310419954,0.47956949763247264,0.47780589717551525,0.476040368849169,0.4742729197770551,0.47250355709054387,0.4707322879287274,0.46895911943838953,0.46718405877397817,0.46540711309757515,0.46362828957886887,0.46184759539512354,0.4600650377311522,0.4582806237792858,0.45649436073934591,0.45470625581861424,0.45291631623180473,0.45112454920103334,0.44933096195579014,0.44753556173290865,0.44573835577653831,0.44393935133811369,0.44213855567632654,0.44033597605709529,0.43853161975353705,0.4367254940459368,0.43491760622171954,0.43310796357541942,0.43129657340865168,0.42948344303008185,0.42766857975539768,0.42585199090727799,0.42403368381536494,0.42221366581623265,0.42039194425335935,0.41856852647709591,0.4167434198446382,0.41491663171999532,0.41308816947396176,0.41125804048408621,0.4094262521346429,0.40759281181660079,0.40575772692759482,0.40392100487189497,0.40208265306037744,0.40024267891049364,0.39840108984624156,0.39655789329813435,0.39471309670317184,0.39286670750480907,0.39101873315292768,0.38916918110380444,0.38731805882008263,0.38546537377074042,0.38361113343106212,0.3817553452826068,0.37989801681317942,0.37803915551679895,0.37617876889367008,0.374316864450151,0.3724534496987249,0.370588532157968,0.36872211935252092,0.36685421881305652,0.36498483807625126,0.3631139846847532,0.36124166618715303,0.35936789013795223,0.357492664097534,0.35561599563213114,0.35373789231379738,0.35185836172037488,0.34997741143546551,0.34809504904839855,0.34621128215420172,0.3443261183535688,0.3424395652528307,0.34055163046392328,0.33866232160435783,0.33677164629718914,0.33487961217098627,0.33298622685979989,0.33109149800313348,0.32919543324591061,0.32729804023844572,0.32539932663641191,0.32349930010081129,0.32159796829794279,0.31969533889937257,0.31779141958190166,0.31588621802753641,0.31397974192345601,0.31207199896198318,0.31016299684055126,0.30825274326167496,0.30634124593291756,0.3044285125668616,0.30251455088107582,0.30059936859808606,0.29868297344534206,0.29676537315518831,0.29484657546483084,0.2929265881163079,0.29100541885645698,0.28908307543688527,0.28715956561393657,0.2852348971486619,0.28330907780678616,0.28138211535867891,0.27945401757932103,0.27752479224827487,0.27559444714965237,0.27366299007208278,0.27173042880868303,0.26979677115702422,0.26786202491910216,0.26592619790130406,0.26398929791437881,0.26205133277340353,0.26011231029775417,0.25817223831107172,0.25623112464123288,0.2542889771203164,0.25234580358457326,0.25040161187439347,0.24845640983427608,0.24651020531279572,0.24456300616257279,0.24261482024023998,0.2406656554064123,0.23871551952565365,0.2367644204664468,0.23481236610115994,0.23285936430601664,0.23090542296106231,0.22895054995013414,0.22699475316082762,0.22503804048446641,0.22308041981606866,0.22112189905431712,0.21916248610152533,0.21720218886360754,0.21524101525004508,0.21327897317385622,0.21131607055156246,0.20935231530315829,0.20738771535207759,0.2054222786251633,0.20345601305263375,0.20148892656805248,0.19952102710829431,0.19755232261351516,0.19558282102711835,0.19361253029572412,0.1916414583691359,0.18966961320031012,0.18769700274532208,0.18572363496333585,0.18374951781657031,0.18177465927026876,0.17979906729266507,0.17782274985495325,0.17584571493125353,0.17386797049858202,0.17188952453681663,0.16991038502866676,0.16793055995963924,0.16595005731800794,0.16396888509477972,0.16198705128366397,0.16000456388103865,0.15802143088591966,0.15603766029992694,0.15405326012725384,0.15206823837463318,0.15008260305130658,0.14809636216899041,0.14610952374184533,0.14412209578644206,0.14213408632173088,0.14014550336900747,0.1381563549518823,0.13616664909624659,0.13417639383024155,0.13218559718422426,0.13019426719073721,0.12820241188447379,0.12621003930224794,0.12421715748295983,0.12222377446756519,0.12022989829904109,0.11823553702235529,0.11624069868443203,0.11424539133412126,0.11224962302216446,0.11025340180116386,0.10825673572554828,0.1062596328515423,0.10426210123713202,0.10226414894203437,0.1002657840276627,0.098267014557096174,0.096267848595045349,0.094268294207821429,0.092268359463302016,0.090268052430900234,0.088267381181530449,0.086266353787577507,0.084264978322862297,0.082263262862611056,0.080261215483420911,0.078258844263229155,0.076256157281278825,0.074253162618087898,0.072249868355414901,0.070246282576228072,0.068242413364671003,0.066238268806031786,0.064233856986708582,0.062229185994178794,0.060224263916964685,0.058219098844602468,0.056213698867607916,0.054208072077445504,0.05220222656649396,0.050196170428015413,0.048189911756120959,0.046183458645739743,0.044176819192584579,0.042170001493121015,0.040163013644532918,0.038155863744691557,0.036148559892121172,0.034141110185968049,0.032133522725966111,0.030125805612405947,0.028117966946100421,0.026110014828353494,0.024101957360926882,0.022093802646006713,0.02008555878617237,0.01807723388436205,0.016068836043841812,0.014060373368171128,0.012051853961171966,0.010043285926894296,0.0080346773695851876,0.0060260363936543203,0.0040173711036430686,0.0020086896041900228,6.123233995736766e-17,0.9999979979712954,0.99999199189319787,0.99998198178975606,0.99996796770105112,0.99994994968319606,0.99992792780833617,0.99990190216464836,0.9998718728563406,0.99983784000365228,0.9997998037428526,0.99975776422624107,0.99971172162214628,0.99966167611492551,0.99960762790496382,0.99954957720867343,0.99948752425849252,0.99942146930288467,0.99935141260633775,0.99927735444936294,0.99919929512849315,0.99911723495628246,0.9990311742613045,0.99894111338815117,0.99884705269743157,0.99874899256576988,0.99864693338580468,0.99854087556618665,0.99843081953157742,0.99831676572264771,0.99819871459607556,0.99807666662454431,0.99795062229674125,0.99782058211735492,0.99768654660707368,0.99754851630258357,0.99740649175656559,0.99726047353769443,0.99711046223063537,0.99695645843604219,0.99679846277055495,0.99663647586679749,0.99647049837337454,0.99630053095486948,0.9961265742918417,0.99594862908082371,0.99576669603431822,0.99558077588079574,0.99539086936469112,0.99519697724640099,0.99499910030228056,0.99479723932464037,0.99459139512174344,0.99438156851780179,0.99416776035297316,0.99394997148335773,0.99372820278099461,0.99350245513385849,0.99327272944585587,0.99303902663682153,0.99280134764251493,0.99255969341461647,0.9923140649207236,0.99206446314434682,0.99181088908490611,0.9915533437577263,0.99129182819403394,0.9910263434409522,0.99075689056149729,0.99048347063457398,0.99020608475497152,0.98992473403335868,0.9896394195962801,0.98935014258615106,0.98905690416125325,0.98875970549573022,0.98845854777958264,0.98815343221866303,0.9878443600346718,0.98753133246515168,0.98721435076348296,0.9868934161988786,0.98656853005637912,0.98623969363684716,0.9859069082569627,0.98557017524921742,0.98522949596190967,0.98488487175913886,0.98453630402080017,0.98418379414257873,0.98382734353594437,0.98346695362814573,0.98310262586220476,0.98273436169691075,0.98236216260681442,0.98198603008222252,0.98160596562919111,0.98122197076952022,0.98083404704074706,0.9804421959961408,0.98004641920469537,0.9796467182511237,0.97924309473585158,0.97883555027501046,0.978424086500432,0.97800870505964066,0.97758940761584756,0.97716619584794373,0.97673907145049343,0.9763080361337273,0.97587309162353542,0.97543423966146059,0.97499148200469121,0.9745448204260545,0.97409425671400907,0.97363979267263767,0.9731814301216406,0.97271917089632776,0.97225301684761167,0.97178296984199986,0.97130903176158756,0.97083120450405003,0.97034948998263504,0.96986389012615526,0.96937440687898024,0.96888104220102911,0.96838379806776231,0.9678826764701739,0.9673776794147837,0.96686880892362859,0.96635606703425547,0.96583945579971231,0.96531897728853999,0.96479463358476447,0.9642664267878881,0.96373435901288096,0.96319843239017322,0.9626586490656458,0.96211501120062204,0.96156752097185916,0.96101618057153959,0.96046099220726178,0.95990195810203194,0.95933908049425465,0.95877236163772417,0.95820180380161546,0.95762740927047474,0.9570491803442106,0.95646711933808504,0.95588122858270352,0.95529151042400651,0.95469796722325928,0.95410060135704289,0.95349941521724446,0.9528944112110479,0.95228559176092398,0.9516729593046207,0.95105651629515353,0.95043626520079583,0.94981220850506853,0.94918434870673041,0.94855268831976813,0.94791722987338622,0.94727797591199669,0.94663492899520929,0.9459880916978205,0.94533746660980433,0.94468305633630067,0.94402486349760606,0.94336289072916224,0.9426971406815462,0.94202761602045948,0.94135431942671721,0.94067725359623755,0.93999642124003102,0.93931182508418931,0.93862346786987494,0.9379313523533096,0.93723548130576351,0.9365358575135444,0.93583248377798611,0.93512536291543735,0.93441449775725061,0.93369989114977103,0.93298154595432425,0.9322594650472058,0.93153365131966903,0.93080410767791377,0.93007083704307469,0.92933384235120953,0.9285931265532873,0.92784869261517655,0.92710054351763349,0.92634868225629019,0.92559311184164217,0.92483383529903684,0.92407085566866098,0.92330417600552894,0.92253379937947,0.92175972887511637,0.92098196759189099,0.92020051864399444,0.91941538516039334,0.9186265702848071,0.91783407717569587,0.9170379090062476,0.91623806896436522,0.91543456025265424,0.91462738608840977,0.91381654970360326,0.91300205434487025,0.91218390327349708,0.91136209976540739,0.91053664711114968,0.90970754861588377,0.90887480759936767,0.9080384273959442,0.90719841135452772,0.90635476283859062,0.90550748522614999,0.90465658190975418,0.9038020562964687,0.90294391180786338,0.90208215187999785,0.90121677996340843,0.90034779952309385,0.89947521403850184,0.89859902700351468,0.89771924192643549,0.89683586232997436,0.89594889175123382,0.89505833374169508,0.89416419186720342,0.89326646970795431,0.89236517085847877,0.89146029892762912,0.8905518575385647,0.88963985032873671,0.88872428094987455,0.88780515306797059,0.88688247036326551,0.88595623653023403,0.88502645527756929,0.88409313032816905,0.88315626541911996,0.88221586430168286,0.88127193074127774,0.88032446851746893,0.87937348142394933,0.87841897326852603,0.87746094787310458,0.87649940907367341,0.87553436072028923,0.87456580667706108,0.87359375082213486,0.87261819704767796,0.87163914925986385,0.87065661137885597,0.86967058733879254,0.86868108108777031,0.86768809658782908,0.86669163781493597,0.86569170875896884,0.86468831342370123,0.86368145582678579,0.86267113999973777,0.86165736998792009,0.86064014985052584,0.85961948366056296,0.85859537550483744,0.85756782948393728,0.85653684971221544,0.85550244031777434,0.85446460544244851,0.85342334924178831,0.85237867588504357,0.85133058955514607,0.85027909444869387,0.84922419477593369,0.84816589476074433,0.84710419864061992,0.84603911066665249,0.84497063510351555,0.84389877622944665,0.84282353833623014,0.84174492572918036,0.84066294272712405,0.83957759366238327,0.83848888288075807,0.83739681474150884,0.83630139361733913,0.83520262389437794,0.83410050997216245,0.83299505626361992,0.83188626719505065,0.83077414720610954,0.82965870074978909,0.82853993229240064,0.82741784631355764,0.82629244730615647,0.82516373977635959,0.82403172824357673,0.82289641724044693,0.82175781131282077,0.82061591501974163,0.81947073293342776,0.81832226963925425,0.81717052973573379,0.81601551783449922,0.81485723856028447,0.81369569655090623,0.81253089645724541,0.81136284294322847,0.81019154068580856,0.80901699437494745,0.80783920871359582,0.80665818841767511,0.8054739382160585,0.8042864628505515,0.80309576707587393,0.8019018556596399,0.80070473338233927,0.79950440503731846,0.79830087543076089,0.79709414938166823,0.79588423172184108,0.79467112729585898,0.79345484096106178,0.79223537758752982,0.79101274205806438,0.78978693926816834,0.78855797412602646,0.78732585155248569,0.78609057648103564,0.7848521538577885,0.7836105886414596,0.78236588580334732,0.78111805032731341,0.7798670872097625,0.77861300145962298,0.777355798098326,0.77609548215978608,0.77483205869038063,0.7735655327489297,0.77229590940667592,0.77102319374726391,0.76974739086672039,0.76846850587343329,0.76718654388813157,0.76590151004386442,0.76461340948598133,0.76332224737211085,0.76202802887214027,0.76073075916819466,0.7594304434546163,0.75812708693794417,0.75682069483689252,0.75551127238233018,0.75419882481725997,0.75288335739679735,0.7515648753881492,0.75024338407059321,0.74891888873545664,0.74759139468609481,0.74626090723786997,0.74492743171813036,0.74359097346618841,0.74225153783329978,0.74090913018264171,0.73956375588929135,0.7382154203402046,0.73686412893419451,0.73550988708190934,0.73415270020581136,0.73279257374015472,0.73142951313096372,0.73006352383601136,0.72869461132479718,0.72732278107852555,0.7259480385900835,0.72457038936401885,0.72318983891651811,0.72180639277538472,0.72042005648001628,0.71903083558138303,0.71763873564200509,0.71624376223593067,0.71484592094871313,0.71344521737738953,0.7120416571304572,0.71063524582785209,0.7092259891009256,0.70781389259242267,0.70639896195645879,0.70498120285849741,0.70356062097532746,0.70213722199504025,0.70071101161700711,0.69928199555185611,0.69785017952144979,0.69641556925886172,0.69497817050835364,0.69353798902535269,0.69209503057642818,0.69064930093926868,0.68920080590265875,0.68774955126645532,0.68629554284156558,0.68483878644992269,0.68337928792446268,0.68191705310910167,0.68045208785871181,0.67898439803909783,0.67751398952697417,0.67604086820994103,0.67456503998646045,0.6730865107658337,0.67160528646817652,0.67012137302439589,0.66863477637616664,0.66714550247590687,0.66565355728675513,0.66415894678254528,0.66266167694778366,0.66116175377762465,0.65965918327784678,0.65815397146482868,0.65664612436552472,0.65513564801744117,0.65362254846861223,0.65210683177757534,0.650588504013347,0.64906757125539893,0.64754403959363305,0.64601791512835771,0.64448920397026277,0.64295791224039556,0.64142404607013614,0.63988761160117258,0.63834861498547679,0.6368070623852794,0.63526295997304572,0.63371631393145045,0.63216713045335304,0.63061541574177304,0.62906117600986533,0.62750441748089492,0.62594514638821253,0.62438336897522895,0.62281909149539061,0.62125232021215449,0.61968306139896256,0.61811132133921731,0.61653710632625625,0.6149604226633264,0.6133812766635599,0.611799674649948,0.61021562295531584,0.6086291279222974,0.60704019590330982,0.60544883326052823,0.60385504636585985,0.60225884160091903,0.60066022535700136,0.59905920403505786,0.5974557840456699,0.59584997180902322,0.59424177375488207,0.592631196322564,0.59101824596091335,0.58940292912827597,0.58778525229247314,0.58616522193077591,0.58454284452987892,0.58291812658587427,0.5812910746042258,0.5796616950997433,0.57802999459655557,0.57639597962808542,0.57475965673702234,0.57312103247529722,0.57148011340405569,0.5698369060936318,0.56819141712352206,0.56654365308235888,0.56489362056788384,0.56324132618692202,0.56158677655535483,0.5599299782980941,0.55827093804905525,0.55660966245113053,0.55494615815616277,0.55328043182491882,0.55161249012706248,0.54994233974112805,0.54826998735449362,0.546595439663354,0.54491870337269432,0.54323978519626304,0.54155869185654504,0.53987543008473426,0.53819000662070759,0.53650242821299743,0.53481270161876449,0.53312083360377116,0.53142683094235399,0.529730700417397,0.5280324488203042,0.52633208295097234,0.52462960961776406,0.52292503563748027,0.52121836783533315,0.51950961304491849,0.51779877810818853,0.5160858698754246,0.51437089520520973,0.5126538609644008,0.5109347740281015,0.50921364127963487,0.5074904696105148,0.50576526592041982,0.50403803711716444,0.50230879011667218,0.50057753184294707,0.49884426922804675,0.49710900921205414,0.49537175874305012,0.49363252477708514,0.49189131427815214,0.49014813421815745,0.48840299157689443,0.48665589334201426,0.48490684650899862,0.48315585808113148,0.48140293506947102,0.47964808449282159,0.47789131337770568,0.47613262875833562,0.47437203767658559,0.47260954718196363,0.47084516433158247,0.46907889619013243,0.46731074982985266,0.46554073233050258,0.463768850779334,0.46199511227106227,0.46021952390783827,0.45844209279921971,0.45666282606214281,0.45488173082089389,0.4530988142070802,0.45131408335960238,0.44952754542462525,0.44773920755554919,0.44594907691298175,0.44415716066470878,0.44236346598566584,0.44056800005790936,0.43877077007058801,0.43697178321991381,0.43517104670913359,0.43336856774849936,0.43156435355524048,0.42975841135353426,0.42795074837447689,0.42614137185605477,0.42433028904311526,0.42251750718733799,0.42070303354720556,0.41888687538797459,0.41706903998164679,0.41524953460693914,0.41342836654925574,0.41160554310065817,0.40978107155983606,0.4079549592320782,0.40612721342924324,0.4042978414697303,0.40246685067844967,0.40063424838679368,0.39880004193260721,0.3969642386601579,0.39512684592010755,0.39328787106948226,0.39144732147164291,0.38960520449625569,0.38776152751926274,0.38591629792285254,0.38406952309543035,0.38222121043158852,0.38037136733207716,0.37852000120377438,0.37666711945965603,0.37481272951876726,0.37295683880619179,0.37109945475302258,0.36924058479633204,0.36738023637914213,0.36551841695039483,0.36365513396492194,0.36179039488341547,0.35992420717239804,0.35805657830419191,0.3561875157568905,0.3543170270143276,0.35244511956604746,0.35057180090727502,0.34869707853888571,0.3468209599673755,0.34494345270483084,0.3430645642688987,0.34118430218275614,0.33930267397508074,0.33741968718001941,0.33553534933715967,0.33364966799149837,0.33176265069341188,0.32987430499862574,0.32798463846818465,0.32609365866842177,0.32420137317092884,0.32230778955252554,0.3204129153952297,0.31851675828622578,0.31661932581783586,0.31472062558748853,0.31282066519768847,0.31091945225598622,0.30901699437494745,0.30711329917212282,0.30520837427001724,0.30330222729605927,0.30139486588257086,0.29948629766673684,0.29757653029057352,0.29566557140089927,0.29375342864930321,0.29184010969211471,0.28992562219037266,0.28800997380979504,0.28609317222074782,0.28417522509821463,0.28225614012176592,0.28033592497552828,0.278414587348153,0.2764921349327864,0.27456857542703833,0.2726439165329515,0.27071816595697057,0.26879133140991152,0.26686342060693036,0.26493444126749272,0.26300440111534251,0.26107330787847144,0.25914116928908781,0.257207993083585,0.25527378700251185,0.25333855879054046,0.25140231619643572,0.24946506697302412,0.24752681887716277,0.24558757966970834,0.24364735711548594,0.24170615898325803,0.23976399304569362,0.2378208670793362,0.23587678886457389,0.23393176618560746,0.23198580683041942,0.23003891859074269,0.22809110926202958,0.22614238664342046,0.22419275853771259,0.22224223275132879,0.22029081709428655,0.21833851938016571,0.21638534742607865,0.21443130905263799,0.21247641208392556,0.21052066434746103,0.20856407367417065,0.20660664789835581,0.20464839485766162,0.20268932239304577,0.20072943834874679,0.19876875057225318,0.19680726691427092,0.19484499522869339,0.19288194337256909,0.1909181192060703,0.18895353059246178,0.18698818539806908,0.18502209149224721,0.18305525674734907,0.18108768903869382,0.17911939624453582,0.17715038624603191,0.17518066692721143,0.1732102461749436,0.17123913187890621,0.16926733193155408,0.1672948542280874,0.16532170666642015,0.1633478971471484,0.16137343357351883,0.15939832385139688,0.15742257588923556,0.15544619759804262,0.1534691968913505,0.15149158168518345,0.14951335989802636,0.14753453945079276,0.1455551282667934,0.14357513427170424,0.14159456539353493,0.13961342956259695,0.13763173471147214,0.13564948877497998,0.13366669969014724,0.13168337539617528,0.12969952383440839,0.1277151529483021,0.12573027068339138,0.1237448849872588,0.12175900380950262,0.1197726351017051,0.11778578681740061,0.11579846691204392,0.1138106833429776,0.11182244406940139,0.1098337570523395,0.1078446302546089,0.1058550716407875,0.10386508917718219,0.10187469083179701,0.099883884574301196,0.097892678375997286,0.095901080209789449,0.09390909805015063,0.091916739873091971,0.089924013656129995,0.087930927378254878,0.085937489019898491,0.083943706562902468,0.081949587990486239,0.079955141287215037,0.077960374438967944,0.075965295432905977,0.073969912257440207,0.071974232902198981,0.069978265357997227,0.067982017616803586,0.065985497671708623,0.063988713516892809,0.061991673147594538,0.059994384560078086,0.057996855751601628,0.055999094720385188,0.054001109465578852,0.052002907987229827,0.050004498286251788,0.048005888364391881,0.046007086224198995,0.044008099868991631,0.042008937302825927,0.040009606530463558,0.038010115557339727,0.036010472389531076,0.03401068503372387,0.032010761497181038,0.030010709787711459,0.028010537913636998,0.026010253883760673,0.024009865707334568,0.022009381394027784,0.020008808953894359,0.018008156397341192,0.016007431735095976,0.014006642978175122,0.012005798137851895,0.010004905225623457,0.0080039722531801225,0.0060030072323723864,0.0040020181751790626,0.0020010130936752141,6.123233995736766e-17,0.99999747503580438,0.99998990015596823,0.99997727539874437,0.99995960082788682,0.99993687653265084,0.99990910262779253,0.99987627925356815,0.99983840657573331,0.99979548478554248,0.99974751409974749,0.99969449476059691,0.99963642703583455,0.9995733112186983,0.99950514762791864,0.99943193660771668,0.99935367852780288,0.9992703737833748,0.9991820227951157,0.99908862600919157,0.99899018389724947,0.99888669695641508,0.99877816570929001,0.99866459070394942,0.99854597251393873,0.99842231173827145,0.99829360900142561,0.99815986495334075,0.99802108026941483,0.99787725565050056,0.99772839182290196,0.99757448953837058,0.99741554957410217,0.99725157273273191,0.9970825598423313,0.99690851175640327,0.99672942935387809,0.99654531353910925,0.99635616524186832,0.99616198541734069,0.99596277504612052,0.99575853513420598,0.99554926671299404,0.99533497083927513,0.99511564859522805,0.99489130108841461,0.99466192945177345,0.99442753484361501,0.99418811844761534,0.99394368147280987,0.99369422515358807,0.99343975074968638,0.99318025954618239,0.99291575285348788,0.99264623200734292,0.99237169836880845,0.9920921533242596,0.99180759828537901,0.99151803468914901,0.99122346399784511,0.99092388769902828,0.99061930730553738,0.99030972435548148,0.98999514041223236,0.98967555706441646,0.98935097592590671,0.98902139863581473,0.98868682685848208,0.98834726228347236,0.98800270662556244,0.9876531616247336,0.98729862904616317,0.98693911068021511,0.9865746083424316,0.98620512387352322,0.98583065913936019,0.98545121603096253,0.9850667964644908,0.98467740238123624,0.98428303574761111,0.98388369855513869,0.98347939282044328,0.98307012058523968,0.98265588391632352,0.98223668490556026,0.98181252566987498,0.98138340835124127,0.98094933511667104,0.98051030815820295,0.98006632969289176,0.9796174019627969,0.97916352723497113,0.97870470780144958,0.97824094597923728,0.97777224411029839,0.97729860456154372,0.97682002972481907,0.97633652201689314,0.97584808387944522,0.97535471777905292,0.97485642620717972,0.97435321168016231,0.97384507673919807,0.97333202395033214,0.97281405590444425,0.97229117521723596,0.97176338452921729,0.97123068650569355,0.97069308383675146,0.97015057923724601,0.96960317544678676,0.96905087522972333,0.96849368137513259,0.9679315966968034,0.96736462403322332,0.9667927662475635,0.96621602622766489,0.96563440688602331,0.96504791115977473,0.96445654201068065,0.96386030242511289,0.9632591954140387,0.96265322401300535,0.96204239128212499,0.96142670030605937,0.96080615419400373,0.96018075607967135,0.95955050912127815,0.95891541650152601,0.95827548142758723,0.95763070713108811,0.95698109686809263,0.95632665391908611,0.9556673815889587,0.95500328320698824,0.95433436212682421,0.95366062172647004,0.95298206540826647,0.95229869659887445,0.95161051874925751,0.95091753533466439,0.95021974985461177,0.94951716583286649,0.94880978681742734,0.94809761638050782,0.94738065811851757,0.94665891565204452,0.9459323926258365,0.94520109270878261,0.94446501959389528,0.94372417699829081,0.94297856866317131,0.94222819835380567,0.94147306985950996,0.94071318699362916,0.93994855359351714,0.93917917352051816,0.93840505065994617,0.93762618892106631,0.93684259223707467,0.93605426456507823,0.93526120988607531,0.93446343220493544,0.93366093555037855,0.93285372397495536,0.93204180155502647,0.9312251723907421,0.93040384060602099,0.92957781034852982,0.92874708578966214,0.92791167112451767,0.92707157057188061,0.92622678837419847,0.92537732879756096,0.92452319613167799,0.92366439468985861,0.92280092880898834,0.92193280284950818,0.92106002119539199,0.92018258825412469,0.91930050845667977,0.91841378625749703,0.91752242613446022,0.91662643258887389,0.91572581014544141,0.9148205633522416,0.91391069678070602,0.91299621502559569,0.91207712270497787,0.91115342446020309,0.91022512495588126,0.90929222887985839,0.90835474094319291,0.90741266588013181,0.90646600844808667,0.90551477342760966,0.90455896562236959,0.90359858985912744,0.90263365098771187,0.90166415388099541,0.90069010343486866,0.89971150456821691,0.89872836222289432,0.89774068136369911,0.8967484669783492,0.89575172407745596,0.89475045769449968,0.89374467288580406,0.89273437473051021,0.89171956833055144,0.89070025881062753,0.88967645131817852,0.88864815102335892,0.88761536311901157,0.88657809282064148,0.88553634536638925,0.88449012601700516,0.88343944005582176,0.88238429278872799,0.88132468954414211,0.88026063567298451,0.87919213654865103,0.87811919756698575,0.87704182414625387,0.87596002172711374,0.87487379577259028,0.87378315176804677,0.8726880952211572,0.87158863166187894,0.87048476664242402,0.8693765057372318,0.86826385454294064,0.86714681867835919,0.86602540378443871,0.86489961552424399,0.86376945958292528,0.86263494166768906,0.86149606750776953,0.86035284285439972,0.85920527348078224,0.85805336518206021,0.85689712377528815,0.85573655509940227,0.85457166501519133,0.85340245940526682,0.85222894417403339,0.85105112524765869,0.84986900857404435,0.84868260012279462,0.84749190588518741,0.84629693187414312,0.84509768412419517,0.84389416869145883,0.8426863916536006,0.84147435910980828,0.84025807718075929,0.83903755200859031,0.83781278975686602,0.83658379661054827,0.83535057877596419,0.83411314248077573,0.83287149397394744,0.83162563952571544,0.83037558542755552,0.82912133799215115,0.82786290355336234,0.82660028846619271,0.82533349910675802,0.82406254187225403,0.82278742318092357,0.82150814947202477,0.8202247272057982,0.81893716286343454,0.81764546294704143,0.81634963397961091,0.81504968250498655,0.81374561508783028,0.81243743831358894,0.8111251587884617,0.80980878313936633,0.8084883180139053,0.80716377008033313,0.80583514602752204,0.80450245256492825,0.80316569642255842,0.80182488435093524,0.80048002312106381,0.79913111952439686,0.79777818037280102,0.79642121249852227,0.795060222754151,0.79369521801258802,0.79232620516700958,0.79095319113083251,0.78957618283767939,0.78819518724134341,0.78681021131575346,0.7854212620549389,0.78402834647299391,0.78263147160404245,0.78123064450220259,0.77982587224155087,0.77841716191608679,0.77700452063969627,0.77558795554611693,0.77416747378890094,0.77274308254137936,0.77131478899662609,0.76988260036742118,0.76844652388621471,0.76700656680509005,0.76556273639572747,0.76411503994936691,0.76266348477677204,0.76120807820819225,0.75974882759332663,0.75828574030128637,0.75681882372055731,0.75534808525896335,0.75387353234362831,0.7523951724209389,0.7509130129565067,0.74942706143513094,0.74793732536076052,0.74644381225645584,0.74494652966435104,0.74344548514561615,0.74194068628041832,0.74043214066788432,0.73891985592606124,0.73740383969187884,0.73588409962111045,0.73436064338833473,0.73283347868689652,0.73130261322886825,0.72976805474501072,0.72822981098473449,0.72668788971606035,0.72514229872558023,0.72359304581841821,0.72204013881819018,0.72048358556696557,0.71892339392522675,0.71735957177182974,0.71579212700396444,0.71422106753711478,0.71264640130501844,0.71106813625962717,0.70948628037106642,0.70790084162759526,0.70631182803556569,0.70471924761938265,0.70312310842146308,0.70152341850219568,0.69992018593990013,0.69831341883078579,0.69670312528891187,0.69508931344614511,0.69347199145211991,0.6918511674741965,0.69022684969741988,0.68859904632447866,0.68696776557566297,0.6853330156888241,0.68369480491933188,0.68205314154003316,0.68040803384121062,0.67875949013054038,0.67710751873304997,0.6754521279910769,0.67379332626422561,0.67213112192932611,0.67046552338039134,0.66879653902857461,0.66712417730212747,0.66544844664635683,0.66376935552358252,0.66208691241309447,0.66040112581110988,0.6587120042307304,0.65701955620189911,0.65532379027135734,0.65362471500260155,0.65192233897584018,0.65021667078795031,0.6485077190524341,0.6467954923993755,0.64507999947539651,0.64336124894361335,0.64163924948359341,0.63991400979131052,0.63818553857910154,0.63645384457562237,0.63471893652580369,0.63298082319080706,0.63123951334798001,0.62949501579081302,0.62774733932889348,0.62599649278786251,0.62424248500936985,0.62248532485102903,0.62072502118637307,0.6189615829048094,0.61719501891157502,0.61542533812769173,0.61365254948992076,0.61187666195071766,0.61009768447818746,0.60831562605603884,0.60653049568353934,0.60474230237546955,0.60295105516207759,0.60115676308903354,0.59935943521738388,0.59755908062350582,0.595755708399061,0.59394932765094999,0.59213994750126631,0.59032757708725014,0.58851222556124227,0.58669390209063788,0.58487261585784034,0.58304837606021465,0.58122119191004129,0.5793910726344691,0.57755802747546969,0.57572206568978967,0.57388319654890452,0.57204142933897195,0.57019677336078434,0.56834923792972225,0.56649883237570742,0.56464556604315519,0.56278944829092814,0.56093048849228777,0.55906869603484799,0.55720408032052748,0.55533665076550187,0.55346641680015685,0.55159338786904011,0.5497175734308134,0.54783898295820554,0.54595762593796371,0.54407351187080621,0.54218665027137414,0.54029705066818356,0.53840472260357697,0.53650967563367569,0.5346119193283313,0.53271146327107688,0.53080831705907994,0.52890249030309233,0.52699399262740276,0.5250828336697877,0.52316902308146307,0.52125257052703544,0.51933348568445281,0.51741177824495621,0.51548745791303074,0.51356053440635618,0.51163101745575823,0.50969891680515933,0.50776424221152949,0.50582700344483678,0.50388721028799832,0.50194487253683051,0.50000000000000011,0.49805260249897398,0.49610268986797018,0.49415027195390782,0.49219535861635749,0.49023795972749168,0.48827808517203453,0.48631574484721218,0.48435094866270278,0.48238370654058643,0.48041402841529485,0.47844192423356163,0.47646740395437165,0.47449047754891083,0.4725111550005161,0.47052944630462451,0.46854536146872305,0.46655891051229814,0.46457010346678479,0.46257895037551616,0.46058546129367284,0.4585896462882319,0.45659151543791621,0.45459107883314348,0.45258834657597535,0.45058332878006602,0.44857603557061226,0.44656647708430081,0.44455466346925809,0.44254060488499886,0.4405243115023747,0.43850579350352281,0.43648506108181456,0.43446212444180399,0.43243699379917627,0.43040967938069608,0.42838019142415612,0.42634854017832519,0.42431473590289659,0.42227878886843634,0.42024070935633112,0.41820050765873656,0.41615819407852511,0.41411377892923407,0.41206727253501363,0.41001868523057444,0.40796802736113574,0.40591530928237296,0.40386054136036537,0.40180373397154379,0.39974489750263836,0.39768404235062571,0.39562117892267679,0.39355631763610427,0.39148946891830971,0.3894206432067312,0.38734985094879038,0.38527710260183989,0.38320240863311045,0.38112577951965798,0.3790472257483109,0.37696675781561689,0.37488438622778997,0.37280012150065761,0.37071397415960738,0.36862595473953397,0.36653607378478598,0.36444434184911256,0.36235076949560996,0.36025536729666902,0.35815814583392069,0.35605911569818316,0.35395828748940827,0.35185567181662802,0.34975127929790106,0.34764512056025887,0.34553720623965223,0.34342754698089756,0.34131615343762306,0.33920303627221488,0.3370882061557634,0.33497167376800929,0.33285344979728954,0.33073354494048351,0.32861196990295893,0.3264887353985178,0.32436385214934232,0.32223733088594081,0.32010918234709329,0.3179794172797975,0.31584804643921455,0.31371508058861458,0.31158053049932233,0.30944440695066294,0.30730672072990733,0.30516748263221788,0.30302670346059379,0.30088439402581657,0.29874056514639546,0.29659522764851282,0.29444839236596931,0.29230007014012943,0.29015027181986652,0.28799900826150826,0.28584629032878145,0.28369212889275763,0.28153653483179769,0.27937951903149727,0.27722109238463183,0.27506126579110124,0.27290005015787494,0.27073745639893759,0.26857349543523262,0.26640817819460788,0.26424151561176035,0.26207351862818101,0.25990419819209937,0.25773356525842822,0.25556163078870847,0.2533884057510537,0.25121390112009467,0.24903812787692409,0.24686109700904102,0.24468281951029547,0.24250330638083281,0.24032256862703827,0.23814061726148134,0.23595746330286016,0.23377311777594595,0.23158759171152712,0.22940089614635384,0.22721304212308213,0.22502404069021811,0.22283390290206231,0.22064263981865367,0.21845026250571389,0.21625678203459139,0.21406220948220547,0.21186655593099041,0.20966983246883936,0.20747205018904852,0.20527322019026104,0.20307335357641096,0.2008724614566671,0.19867055494537711,0.19646764516201121,0.19426374323110601,0.19205886028220848,0.18985300744981959,0.1876461958733382,0.18543843669700477,0.18322974106984499,0.18102012014561369,0.17880958508273803,0.17659814704426224,0.17438581719778984,0.17217260671542814,0.16995852677373155,0.1677435885536453,0.16552780324044875,0.16331118202369904,0.16109373609717462,0.15887547665881863,0.15665641491068236,0.15443656205886877,0.15221592931347577,0.14999452788853973,0.14777236900197877,0.14554946387553611,0.1433258237347235,0.1411014598087644,0.13887638333053737,0.13665060553651925,0.13442413766672859,0.13219699096466861,0.12996917667727073,0.12774070605483753,0.12551159035098611,0.12328184082259114,0.12105146872972807,0.11882048533561625,0.11658890190656206,0.11435672971190203,0.11212398002394589,0.10989066411791966,0.10765679327190879,0.10542237876680104,0.10318743188622968,0.10095196391651641,0.098715986146614407,0.096479509868051275,0.094242546374872088,0.092005106963582287,0.089767202933090692,0.087528845584652404,0.08529004622181173,0.083050816150344917,0.080811166678203927,0.078571109115458004,0.076330654774237422,0.074089814968676157,0.071848601014854782,0.069607024230743275,0.067365095936143857,0.065122827452633897,0.062880230103508655,0.060637315213724161,0.058394094109839999,0.056150578119962109,0.053906778573685581,0.051662706802037446,0.049418374137419466,0.047173791913550873,0.044928971465411173,0.042683924129182871,0.040438661242194265,0.038193194142862139,0.035947534170634558,0.033701692665933571,0.031455680970097953,0.029209510425325942,0.026963192374617934,0.024716738161719234,0.022470159131062751,0.020223466627711715,0.017976671997302383,0.015729786585986751,0.013482821740375251,0.011235788807479448,0.0089886991346547485,0.0067415640695430868,0.0044943949600156291,0.0022472031541154605,2.8327694488239898e-16,0.99999496500555107,0.99997986007290651,0.99995468535417287,0.99991944110285935,0.99987412767387507,0.99981874552352579,0.99975329520950917,0.99967777739090913,0.99959219282818923,0.99949654238318508,0.99939082701909576,0.9992750478004736,0.9991492058932141,0.9990133025645439,0.99886733918300796,0.99871131721845596,0.99854523824202746,0.99836910392613565,0.99818291604445142,0.99798667647188444,0.99778038718456508,0.9975640502598242,0.99733766787617228,0.99710124231327746,0.99685477595194238,0.99659827127408063,0.99633173086269133,0.99605515740183381,0.99576855367659944,0.99547192257308459,0.99516526707836128,0.99484859028044692,0.99452189536827329,0.99418518563165459,0.99383846446125412,0.99348173534855022,0.99311500188580104,0.99273826776600849,0.99235153678288102,0.99195481283079534,0.99154809990475712,0.99113140210036121,0.99070472361374973,0.99026806874157036,0.98982144188093268,0.98936484752936449,0.98889829028476561,0.98842177484536242,0.98793530600966006,0.98743888867639429,0.98693252784448227,0.98641622861297173,0.98588999618099049,0.98535383584769298,0.98480775301220802,0.98425175317358371,0.98368584193073205,0.98311002498237321,0.98252430812697733,0.98192869726270671,0.98132319838735604,0.9807078175982924,0.98008256109239345,0.9794474351659852,0.97880244621477874,0.97814760073380569,0.9774829053173526,0.97680836665889514,0.97612399155103002,0.97542978688540705,0.9747257596526594,0.97401191694233347,0.97328826594281759,0.97255481394126919,0.97181156832354165,0.97105853657411034,0.97029572627599647,0.96952314511069126,0.96874080085807857,0.96794870139635625,0.96714685470195716,0.96633526884946852,0.96551395201155088,0.96468291245885573,0.96384215855994204,0.9629916987811924,0.96213154168672721,0.96126169593831889,0.96038217029530448,0.95949297361449737,0.95859411485009838,0.95768560305360528,0.95676744737372166,0.95583965705626517,0.95490224144407387,0.95395520997691263,0.95299857219137785,0.95203233772080142,0.95105651629515353,0.95007111774094544,0.94907615198112927,0.94807162903499953,0.94705755901809086,0.94603395214207719,0.94500081871466846,0.94395816913950681,0.94290601391606166,0.94184436363952473,0.94077322900070226,0.93969262078590843,0.93860254987685576,0.93750302725054624,0.93639406397916058,0.93527567122994648,0.93414786026510677,0.93301064244168508,0.93186402921145228,0.93070803212079112,0.92954266281057918,0.92836793301607268,0.92718385456678742,0.92599043938638037,0.92478769949252915,0.92357564699681105,0.92235429410458136,0.92112365311485012,0.91988373642015842,0.91863455650645354,0.91737612595296336,0.91610845743206959,0.91483156370918028,0.91354545764260087,0.91225015218340533,0.91094566037530511,0.90963199535451844,0.90830917034963721,0.90697719868149473,0.90563609376303089,0.9042858690991572,0.90292653828662128,0.90155811501386907,0.90018061306090791,0.89879404629916704,0.89739842869135844,0.89599377429133586,0.8945800972439536,0.8931574117849238,0.89172573224067331,0.89028507302819904,0.88883544865492348,0.8873768737185479,0.88590936290690558,0.88443293099781439,0.88294759285892699,0.88145336344758207,0.87995025781065317,0.87843829108439742,0.8769174784943029,0.87538783535493569,0.87384937706978494,0.87230211913110878,0.87074607711977714,0.8691812667051162,0.86760770364474915,0.86602540378443871,0.86443438305792675,0.86283465748677446,0.86122624318020058,0.8596091563349193,0.85798341323497707,0.85634903025158904,0.85470602384297356,0.85305441055418707,0.85139420701695689,0.84972542994951439,0.84804809615642596,0.84636222252842441,0.84466782604223833,0.84296492376042154,0.84125353283118121,0.83953367048820493,0.83780535405048728,0.83606860092215585,0.83432342859229525,0.8325698546347714,0.83080789670805466,0.82903757255504174,0.82725890000287716,0.82547189696277401,0.8236765814298328,0.82187297148286109,0.82006108528419108,0.81824094107949674,0.81641255719760975,0.81457595205033573,0.81273114413226799,0.81087815202060198,0.80901699437494745,0.80714768993714137,0.80527025753105863,0.80338471606242279,0.80149108451861528,0.79958938196848506,0.79767962756215538,0.79576184053083221,0.79383604018660936,0.79190224592227521,0.78996047721111617,0.78801075360672201,0.78605309474278751,0.78408752033291584,0.78211405017041935,0.78013270412812075,0.77814350215815264,0.77614646429175682,0.77414161063908249,0.77212896138898357,0.77010853680881564,0.76808035724423196,0.76604444311897801,0.76400081493468674,0.76194949327067085,0.75989049878371706,0.75782385220787685,0.75574957435425838,0.75366768611081647,0.75157820844214274,0.74948116238925411,0.74737656906938099,0.74526444967575478,0.74314482547739436,0.7410177178188917,0.73888314812019762,0.73674113787640494,0.73459170865753332,0.73243488210831098,0.73027067994795736,0.72809912396996412,0.72592023604187605,0.7237340381050702,0.72154055217453561,0.71933980033865119,0.71713180475896354,0.71491658766996358,0.71269417137886293,0.7104645782653688,0.70822783078145923,0.70598395145115644,0.70373296287030052,0.70147488770632127,0.69920974869801078,0.69693756865529344,0.69465837045899737,0.69237217706062282,0.69007901148211204,0.68777889681561699,0.68547185622326667,0.68315791293693451,0.68083709025800343,0.67850941155713218,0.67617490027401939,0.67383357991716797,0.67148547406364756,0.66913060635885824,0.66676900051629162,0.66440068031729238,0.66202566961081855,0.65964399231320159,0.6572556724079055,0.6548607339452851,0.65245920104234423,0.65005109788249249,0.64763644871530202,0.64521527785626309,0.64278760968653936,0.64035346865272236,0.63791287926658535,0.63546586610483624,0.63301245380887039,0.63055266708452251,0.62808653070181752,0.62561406949472143,0.62313530836089115,0.62065027226142377,0.61815898622060528,0.6156614753256584,0.61315776472648997,0.61064787963543821,0.60813184532701792,0.60560968713766672,0.60308143046548957,0.60054710077000317,0.59800672357187912,0.59546032445268804,0.59290792905464051,0.59034956308032993,0.58778525229247314,0.58521502251365154,0.5826388996260502,0.58005690957119826,0.57746907834970662,0.57487543202100733,0.57227599670308971,0.56967079857223879,0.56705986386277074,0.56444321886676929,0.56182088993382018,0.5591929034707469,0.55655928594134385,0.55392006386611037,0.55127526382198333,0.54862491244207001,0.54596903641537919,0.54330766248655316,0.54064081745559767,0.53796852817761254,0.53529082156252139,0.53260772457479999,0.52991926423320512,0.52722546761050237,0.52452636183319434,0.52182197408124609,0.519112331587812,0.51639746163896194,0.51367739157340642,0.51095214878222062,0.50822176070856928,0.50548625484742971,0.50274565874531585,0.50000000000000011,0.49724930626023534,0.49449360522547686,0.49173292464560381,0.4889672923206389,0.48619673610046882,0.48342128388456385,0.48064096362169734,0.47785580330966326,0.47506583099499505,0.47227107477268271,0.46947156278589086,0.46666732322567384,0.46385838433069287,0.46104477438693131,0.45822652172741046,0.45540365473190308,0.45257620182664843,0.44974419148406575,0.44690765222246814,0.44406661260577424,0.44122110124322145,0.43837114678907746,0.43551677794235227,0.43265802344650839,0.42979491208917175,0.42692747270184184,0.42405573415960179,0.42117972538082671,0.41829947532689293,0.41541501300188644,0.41252636745231119,0.4096335677667956,0.40673664307580037,0.40383562255132482,0.40093053540661377,0.39802141089586235,0.39510827831392203,0.39219116699600548,0.38927010631739156,0.38634512569312879,0.38341625457773948,0.38048352246492306,0.37754695888725986,0.37460659341591218,0.37166245566032768,0.36871457526794077,0.36576298192387457,0.36280770535064116,0.35984877530784276,0.35688622159187189,0.35392007403561193,0.35095036250813577,0.34797711691440536,0.34500036719497068,0.34202014332566882,0.33903647531732078,0.33604939321543009,0.33305892709988083,0.33006510708463327,0.32706796331742177,0.3240675259794506,0.32106382528509086,0.31805689148157501,0.31504675484869299,0.31203344569848712,0.30901699437494745,0.30599743125370521,0.30297478674172745,0.29994909127701064,0.29692037532827492,0.29388866939465608,0.29085400400539924,0.28781640971955091,0.28477591712565226,0.28173255684142978,0.27868635951348775,0.27563735581699916,0.27258557645539788,0.26953105216006801,0.26647381369003514,0.2634138918316567,0.26035131739831213,0.25728612123009181,0.25421833419348711,0.25114798718107922,0.24807511111122887,0.24499973692776381,0.2419218955996679,0.2388416181207689,0.23575893550942728,0.23267387880822252,0.2295864790836413,0.22649676742576438,0.2234047749479543,0.22031053278654075,0.21721407210050794,0.21411542407118039,0.21101461990190978,0.20791169081775945,0.20480666806519085,0.20169958291174842,0.19859046664574553,0.19547935057594831,0.192366266031261,0.18925124436041021,0.18613431693163002,0.18301551513234482,0.17989487036885407,0.17677241406601568,0.17364817766693041,0.17052219263262391,0.16739449044173074,0.16426510259017704,0.16113406059086416,0.15800139597335003,0.15486714028353263,0.15173132508333168,0.14859398195037188,0.14545514247766356,0.14231483827328534,0.13917310096006547,0.13602996217526428,0.13288545357025419,0.12973960681020197,0.12659245357374929,0.12344402555269482,0.12029435445167351,0.11714347198783839,0.11399140989054066,0.1108381999010111,0.10768387377203907,0.10452846326765368,0.10137200016280344,0.098214516243037217,0.095056043304182811,0.091896613152027656,0.088736257601998089,0.085575008478839837,0.082412897616296277,0.079249956856788664,0.076086218051095125,0.072921713058030746,0.069756473744125455,0.066590531983304002,0.063423919656564562,0.060256668651658525,0.057088810862768145,0.053920378190186177,0.050751402539994245,0.047581915823742403,0.044411949958126473,0.041241536864667534,0.038070708469390008,0.03489949670250108,0.031727933498067816,0.028556050793696476,0.025383880530210449,0.02221145465132952,0.019038805103346847,0.015865963834808153,0.012692962796189564,0.0095198339395767585,0.0063466092183418719,0.0031733205868226173,6.123233995736766e-17,0.99995971617087109,0.99983886792905818,0.99963746501102113,0.99935552364332136,0.9989930665413147,0.99855012290732093,0.99802672842827156,0.99742292527283405,0.9967387620880146,0.99597429399523907,0.99512958258591122,0.99420469591645155,0.99319970850281292,0.99211470131447788,0.99094976176793481,0.98970498371963489,0.98838046745843078,0.98697631969749566,0.98549265356572668,0.98392958859862967,0.98228725072868872,0.98056577227522002,0.97876529193371142,0.97688595476464768,0.97492791218182362,0.97289132194014494,0.97077634812291813,0.96858316112863119,0.96631193765722401,0.96396286069585324,0.96153611950414886,0.95903190959896567,0.95645043273863162,0.95379189690669208,0.95105651629515353,0.94824451128722631,0.94535610843956897,0.94239154046403484,0.93935104620892351,0.9362348706397372,0.93304326481944422,0.92977648588825146,0.92643479704288745,0.92301846751539729,0.91952777255145068,0.91596299338816656,0.91232441723145441,0.90861233723287449,0.90482705246601958,0.90096886790241915,0.89703809438696869,0.89303504861288541,0.8889600530961933,0.88481343614973851,0.880595531856738,0.87630668004386358,0.87194722625386245,0.86751752171771757,0.8630179233263503,0.8584487936018661,0.85381050066834729,0.8491034182221936,0.84432792550201519,0.83948440725807727,0.83457325372130264,0.82959486057183118,0.82454962890714079,0.81943796520973189,0.81426028131437866,0.80901699437494745,0.80370852683078875,0.79833530637270156,0.79289776590847527,0.78739634352801202,0.7818314824680298,0.77620363107635304,0.77051324277578925,0.7647607760275984,0.75894669429455563,0.75307146600361097,0.74713556450814966,0.74113946804985487,0.73508365972017686,0.72896862742141155,0.72279486382739166,0.71656286634379229,0.71027313706805706,0.70392618274894503,0.69752251474570237,0.69106264898686476,0.68454710592868873,0.67797641051322088,0.67135109212600408,0.66467168455342573,0.6579387259397127,0.65115275874357359,0.64431432969449431,0.63742398974868975,0.63048229404471379,0.62348980185873359,0.61644707655947006,0.60935468556280825,0.60221320028608227,0.59502319610203724,0.58778525229247325,0.58049995200157356,0.57316788218892234,0.56578963358221457,0.55836580062966257,0.55089698145210264,0.54338377779480573,0.53582679497899677,0.52822664185308443,0.52058393074360865,0.51289927740590613,0.50517330097450119,0.49740662391322216,0.4895998719650525,0.48175367410171532,0.47386866247299869,0.46594547235582506,0.45798474210306767,0.44998711309212125,0.44195322967322681,0.43388373911755818,0.42577929156507283,0.4176405399721313,0.40946814005889065,0.40126275025647429,0.39302503165392366,0.38475564794493622,0.37645526537439217,0.36812455268467809,0.35976418106180702,0.35137482408134274,0.34295715765413171,0.33451185997184552,0.32603961145234195,0.31754109468484443,0.30901699437494745,0.30046799728945212,0.29189479220103348,0.28329806983274958,0.2746785228023903,0.26603684556667517,0.25737373436530259,0.24868988716485496,0.23998600360256606,0.23126278492995225,0.22252093395631445,0.21376115499211468,0.20498415379223051,0.19619063749909532,0.18738131458572474,0.17855689479863671,0.16971808910066918,0.16086560961369861,0.15200016956126727,0.14312248321111959,0.13423326581765554,0.12533323356430448,0.11642310350582305,0.10750359351052506,0.098575422202443613,0.089639308903433773,0.080695973575217517,0.071746136761379475,0.062790519529313527,0.053829843412128306,0.044864830350515209,0.035896202634582416,0.026924682845663007,0.017950993798097389,0.0089758584809980588,2.8327694488239898e-16],"twiddles":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99998006197499201,0.0063147171346956315,0.99992024869501761,0.012629182463414962,0.99982056254519414,0.018943144190222718,0.99968100750061151,0.025256350539265286,0.99950158912617382,0.031568549764810529,0.99928231457637684,0.03787949016128641,0.9990231925950237,0.044188920073318039,0.99872423351487549,0.050496587905762669,0.99838544925723938,0.056802242133742332,0.99800685333149342,0.063105631312673646,0.99758846083454755,0.069406504088294435,0.99713028845024199,0.075704609206686757,0.9966323544486817,0.08199969552429591,0.99609467868550783,0.088291512017945037,0.99551728260110595,0.094579807794844942,0.99490018921975121,0.10086433210259871,0.99424342314869008,0.10714483433920072,0.99354701057715944,0.11342106406302965,0.99281097927534168,0.11969277100283514,0.99203535859325775,0.12595970506771756,0.99122017945959695,0.13222161635710067,0.99036547438048317,0.13847825517069676,0.98947127743817864,0.14472937201846348,0.98853762428972569,0.15097471763055284,0.98756455216552375,0.15721404296725078,0.98655209986784553,0.16344709922890813,0.98550030776928954,0.16967363786586165,0.98440921781117008,0.17589341058834523,0.98327887350184495,0.18210616937639068,0.98210931991498041,0.18831166648971787,0.98090060368775356,0.19450965447761348,0.97965277301899334,0.20069988618879855,0.9783658776672578,0.20688211478128374,0.97703996894885048,0.21305609373221249,0.9756750997357736,0.21922157684769134,0.97427132445362019,0.22537831827260721,0.97282869907940372,0.23152607250043108,0.97134728113932578,0.23766459438300794,0.96982712970648199,0.24379363914033211,0.96826830539850717,0.24991296237030836,0.96667087037515731,0.25602232005849745,0.9650348883358314,0.26212146858784663,0.96336042451703086,0.26821016474840415,0.96164754568975874,0.27428816574701737,0.959896320156857,0.28035522921701445,0.95810681775028239,0.28641111322786894,0.95627910982832243,0.2924555762948472,0.95441326927274972,0.2984883773886377,0.95250937048591544,0.30450927594496224,0.9505674893877829,0.31051803187416882,0.94858770341289989,0.31651440557080551,0.94657009150731097,0.32249815792317488,0.94451473412540932,0.32846905032286877,0.94242171322672885,0.3344268446742833,0.94029111227267559,0.34037130340411281,0.9381230162231996,0.34630218947082386,0.93591751153340752,0.35221926637410683,0.93367468615011462,0.35812229816430724,0.93139462950833807,0.36401104945183416,0.92907743252773056,0.36988528541654681,0.92672318760895478,0.37574477181711802,0.92433198862999877,0.38158927500037487,0.92190393094243284,0.38741856191061624,0.91943911136760659,0.39323240009890575,0.91693762819278879,0.39903055773234097,0.91439958116724751,0.40481280360329808,0.91182507149827297,0.41057890713865158,0.90921420184714141,0.4163286384089685,0.90656707632502165,0.42206176813767715,0.90388380048882355,0.4277780677102096,0.90116448133698834,0.43347730918311828,0.89840922730522277,0.43915926529316518,0.89561814826217423,0.44482370946638422,0.89279135550505029,0.45047041582711622,0.88992896175518033,0.45609915920701594,0.88703108115352058,0.46170971515403086,0.88409782925610303,0.46730185994135143,0.88112932302942704,0.47287537057633233,0.87812568084579523,0.47843002480938474,0.87508702247859371,0.48396560114283876,0.87201346909751531,0.48948187883977551,0.86890514326372859,0.4949786379328297,0.86576216892498992,0.50045565923296076,0.86258467141070105,0.50591272433819345,0.85937277742691198,0.51134961564232673,0.85612661505126786,0.5167661163436108,0.85284631372790176,0.52216201045339306,0.84953200426227349,0.52753708280473,0.84618381881595295,0.53289111906096776,0.8428018909013506,0.53822390572428858,0.83938635537639306,0.54353523014422489,0.83593734843914569,0.54882488052613865,0.83245500762238167,0.55409264593966634,0.82893947178809757,0.55933831632713105,0.82539088112197623,0.56456168251191807,0.82180937712779645,0.56976253620681605,0.81819510262179052,0.57494067002232296,0.81454820172694964,0.58009587747491576,0.81086881986727632,0.5852279529952843,0,0.99992024869501761,0.012629182463414962,0.99968100750061151,0.025256350539265286,0.99928231457637684,0.03787949016128641,0.99872423351487549,0.050496587905762669,0.99800685333149342,0.063105631312673646,0.99713028845024199,0.075704609206686757,0.99609467868550783,0.088291512017945037,0.99490018921975121,0.10086433210259871,0.99354701057715944,0.11342106406302965,0.99203535859325775,0.12595970506771756,0.99036547438048317,0.13847825517069676,0.98853762428972569,0.15097471763055284,0.98655209986784553,0.16344709922890813,0.98440921781117008,0.17589341058834523,0.98210931991498041,0.18831166648971787,0.97965277301899334,0.20069988618879855,0.97703996894885048,0.21305609373221249,0.97427132445362019,0.22537831827260721,0.97134728113932578,0.23766459438300794,0.96826830539850717,0.24991296237030836,0.9650348883358314,0.26212146858784663,0.96164754568975874,0.27428816574701737,0.95810681775028239,0.28641111322786894,0.95441326927274972,0.2984883773886377,0.9505674893877829,0.31051803187416882,0.94657009150731097,0.32249815792317488,0.94242171322672885,0.3344268446742833,0.9381230162231996,0.34630218947082386,0.93367468615011462,0.35812229816430724,0.92907743252773056,0.36988528541654681,0.92433198862999877,0.38158927500037487,0.91943911136760659,0.39323240009890575,0.91439958116724751,0.40481280360329808,0.90921420184714141,0.4163286384089685,0.90388380048882355,0.4277780677102096,0.89840922730522277,0.43915926529316518,0.89279135550505029,0.45047041582711622,0.88703108115352058,0.46170971515403086,0.88112932302942704,0.47287537057633233,0.87508702247859371,0.48396560114283876,0.86890514326372859,0.4949786379328297,0.86258467141070105,0.50591272433819345,0.85612661505126786,0.5167661163436108,0.84953200426227349,0.52753708280473,0.8428018909013506,0.53822390572428858,0.83593734843914569,0.54882488052613865,0.82893947178809757,0.55933831632713105,0.82180937712779645,0.56976253620681605,0.81454820172694964,0.58009587747491576,0.80715710376198535,0.59033669193652838,0.79963726213231934,0.60048334615501908,0.79198987627231787,0.61053422171255767,0.78421616595998533,0.6204877154682602,0.77631737112240562,0.63034223981389437,0.76829475163797079,0.64009622292710711,0.76014958713542724,0.64974810902213442,0.7518831767897719,0.65929635859795299,0.74349683911503006,0.66873944868383473,0.73499191175394862,0.67807587308226491,0.72636975126463943,0.68730414260918427,0.7176317329042039,0.69642278533151791,0.70877925040937662,0.70543034680195205,0.69981371577422002,0.71432539029092279,0.69073655902490816,0.72310649701577812,0.68154922799163375,0.73177226636707682,0.6722531880776752,0.74032131613199004,0.66284992202566106,0.74875228271476746,0.65334092968106872,0.75706382135423489,0.64372772775299536,0.76525460633828635,0.63401184957223866,0.77332333121533903,0.6241948448467266,0.78126870900271628,0.61427827941433477,0.78908947239192362,0.60426373499313157,0.79678437395078883,0.59415280892909006,0.80435218632242944,0.58394711394130627,0.81179170242102072,0.57364827786476735,0.81910173562432809,0.56325794339070712,0.8262811199629766,0.55277776780459276,0.8333287103064263,0.54220942272178296,0.84024338254562336,0.53155459382090142,0.84702403377229885,0.52081498057496667,0.85366958245488467,0.50999229598032136,0.86017896861102128,0.49908826628340541,0.86655115397662741,0.48810463070541421,0.87278512217150628,0.47704314116488955,0.87887987886146035,0.46590556199828348,0.88483445191689025,0.4546936696785413,0.89064789156785273,0.4434092525317509,0.89631927055555038,0.43205411045189912,0.90184768428023265,0.42063005461378417,0.90723225094548143,0.40913890718412887,0.91247211169886,0.39758250103093934,0.91756643076890243,0.38596267943115903,0.92251439559842119,0.37428129577666058,0.92731521697411168,0.36254021327862451,0.93196812915243477,0.3507413046703533,0.93647238998175397,0.3388864519085647,0.94082728102071111,0.32697754587321493,0.9450321076528192,0.31501648606589866,0.94908619919725601,0,0.99982056254519414,0.018943144190222718,0.99928231457637684,0.03787949016128641,0.99838544925723938,0.056802242133742332,0.99713028845024199,0.075704609206686757,0.99551728260110595,0.094579807794844942,0.99354701057715944,0.11342106406302965,0.99122017945959695,0.13222161635710067,0.98853762428972569,0.15097471763055284,0.98550030776928954,0.16967363786586165,0.98210931991498041,0.18831166648971787,0.9783658776672578,0.20688211478128374,0.97427132445362019,0.22537831827260721,0.96982712970648199,0.24379363914033211,0.9650348883358314,0.26212146858784663,0.959896320156857,0.28035522921701445,0.95441326927274972,0.2984883773886377,0.94858770341289989,0.31651440557080551,0.94242171322672885,0.3344268446742833,0.93591751153340752,0.35221926637410683,0.92907743252773056,0.36988528541654681,0.92190393094243284,0.38741856191061624,0.91439958116724751,0.40481280360329808,0.90656707632502165,0.42206176813767715,0.89840922730522277,0.43915926529316518,0.88992896175518033,0.45609915920701594,0.88112932302942704,0.47287537057633233,0.87201346909751531,0.48948187883977551,0.86258467141070105,0.50591272433819345,0.85284631372790176,0.52216201045339306,0.8428018909013506,0.53822390572428858,0.83245500762238167,0.55409264593966634,0.82180937712779645,0.56976253620681605,0.81086881986727632,0.5852279529952843,0.79963726213231934,0.60048334615501908,0.7881187346471924,0.61552324090817923,0.77631737112240562,0.63034223981389437,0.76423740677122731,0.64493502470527186,0.7518831767897719,0.65929635859795299,0.73925911480120765,0.67342108756953467,0.72636975126463943,0.68730414260918427,0.71321971184924138,0.7009405414367792,0.69981371577422002,0.71432539029092279,0.68615657411520514,0.72745388568519243,0.6722531880776752,0.74032131613199004,0.65810854723803769,0.75292306383337704,0.64372772775299536,0.76525460633828635,0.62911589053784112,0.77731151816551591,0.61427827941433477,0.78908947239192362,0.59922021922882718,0.80058424220525115,0.58394711394130627,0.81179170242102072,0.56846444468605162,0.82270783096296041,0.55277776780459276,0.8333287103064263,0.53689271285167772,0.84365052888430403,0.52081498057496667,0.85366958245488467,0.50455034086917749,0.86338227543122326,0.48810463070541421,0.87278512217150628,0.4714837520364254,0.88187474822995959,0.4546936696785413,0.89064789156785273,0.43774040917105006,0.89910140372416369,0.42063005461378417,0.90723225094548143,0.40336874648368898,0.91503751527474408,0.38596267943115903,0.92251439559842119,0.36841810005693493,0.92966020865176235,0.3507413046703533,0.93647238998175397,0.33293863702976106,0.94294849486743704,0.31501648606589866,0.94908619919725601,0.296981283589073,0.95488330030312429,0.27883950198094309,0.96033771775090648,0.26059765187174339,0.96544749408703401,0.24226227980378318,0.97021079554098633,0.22383996588205624,0.97462591268338428,0.2053373214128057,0.97869126103946291,0.18676098653089318,0.98240538165769808,0.16811762781682063,0.98576694163338885,0.14941393590426094,0.9887747345870026,0.13065662307895887,0.9914276810971151,0.1118524208698594,0.99372482908778714,0.093008077633330175,0.99566535417024149,0.074130356131347344,0.99724855993871442,0.055226031104508168,0.99847387822037881,0.036301886840748143,0.99934086927924726,0.01736471474062963,0.99984922197398174,-0.0015786891199220787,0.99999875386955495,-0.02052152642855835,0.99978941130272125,-0.039456999076252698,0.99922126940127565,-0.058378311596970003,0.9982945320570914,-0.077278673606389445,0.99700953185294927,-0.096151302238803693,0.99536672994318143,-0.11498942458131793,0.9933667158881746,-0.13378628010447904,0.99101020744279211,-0.15253512308846057,0.98829805029878925,-0.17122922504393109,0.98523121778131595,-0.18986187712674088,0.98181081049961472,-0.20842639254555831,0.97803805595203952,-0.22691610896159004,0.97391430808553781,-0.24532439087952893,0.96944104680975218,-0.26364463202886534,0.96461987746591882,-0.28187025773471264,0.95945253025075017,-0.29999472727729326,0.953940859595511,0,0.99968100750061151,0.025256350539265286,0.99872423351487549,0.050496587905762669,0.99713028845024199,0.075704609206686757,0.99490018921975121,0.10086433210259871,0.99203535859325775,0.12595970506771756,0.98853762428972569,0.15097471763055284,0.98440921781117008,0.17589341058834523,0.97965277301899334,0.20069988618879855,0.97427132445362019,0.22537831827260721,0.96826830539850717,0.24991296237030836,0.96164754568975874,0.27428816574701737,0.95441326927274972,0.2984883773886377,0.94657009150731097,0.32249815792317488,0.9381230162231996,0.34630218947082386,0.92907743252773056,0.36988528541654681,0.91943911136760659,0.39323240009890575,0.90921420184714141,0.4163286384089685,0.89840922730522277,0.43915926529316518,0.88703108115352058,0.46170971515403086,0.87508702247859371,0.48396560114283876,0.86258467141070105,0.50591272433819345,0.84953200426227349,0.52753708280473,0.83593734843914569,0.54882488052613865,0.82180937712779645,0.56976253620681605,0.80715710376198535,0.59033669193652838,0.79198987627231787,0.61053422171255767,0.77631737112240562,0.63034223981389437,0.76014958713542724,0.64974810902213442,0.74349683911503006,0.66873944868383473,0.72636975126463943,0.68730414260918427,0.70877925040937662,0.70543034680195205,0.69073655902490816,0.72310649701577812,0.6722531880776752,0.74032131613199004,0.65334092968106872,0.75706382135423489,0.63401184957223866,0.77332333121533903,0.61427827941433477,0.78908947239192362,0.59415280892909006,0.80435218632242944,0.57364827786476735,0.81910173562432809,0.55277776780459276,0.8333287103064263,0.53155459382090142,0.84702403377229885,0.50999229598032136,0.86017896861102128,0.48810463070541421,0.87278512217150628,0.46590556199828348,0.88483445191689025,0.4434092525317509,0.89631927055555038,0.42063005461378417,0.90723225094548143,0.39758250103093934,0.91756643076890243,0.37428129577666058,0.92731521697411168,0.3507413046703533,0.93647238998175397,0.32697754587321493,0.9450321076528192,0.30300518030687273,0.95298890901583921,0.27883950198094309,0.96033771775090648,0.25449592823568296,0.967073845428289,0.22998998990595865,0.97319299449957875,0.2053373214128057,0.97869126103946291,0.18055365078890231,0.98356513723636985,0.15565478964432103,0.9878115136304001,0.13065662307895887,0.9914276810971151,0.10557509954808172,0.99441133257591785,0.080426220687448507,0.99676056454192341,0.055226031104508168,0.99847387822037881,0.029990608142181154,0.99955018054285905,0.0047360516217554594,0.99998878484462816,-0.02052152642855835,0.99978941130272125,-0.045766012052858955,0.9989521871144672,-0.070981299648016,0.99747764641633874,-0.096151302238803693,0.99536672994318143,-0.12125996174115017,0.99262078442803869,-0.14629125920695374,0.98924156174295663,-0.17122922504393109,0.98523121778131595,-0.19605794920397801,0.98059231108240408,-0.22076159133354181,0.97532780119910567,-0.24532439087952893,0.96944104680975218,-0.26973067714430082,0.96293580357533537,-0.29396487928334447,0.95581622174345249,-0.31801153623923811,0.94808684350050954,-0.34185530660557328,0.93975260007387551,-0.36548097841454186,0.93081880858583277,-0.38887347884194345,0.92129116866133287,-0.41201788382342169,0.91117575879172152,-0.43489942757579297,0.90047903245675165,-0.4575035120173942,0.88920781400736126,-0.47981571608144064,0.87736929431183897,-0.50182180491644923,0.86497102616815846,-0.5235077389678624,0.85202091948540581,-0.54485968293507048,0.83852723623737735,-0.5658640145981273,0.82449858519156383,-0.58650733350852313,0.80994391641688501,-0.60677646953846798,0.79487251557368166,-0.62665849128323636,0.77929399798960208,-0.6461407143112099,0.76321830252516842,-0.66521070925635351,0.74665568523293191,-0.68385630974796618,0.72961671281426499,-0.70206562017264074,0.71211225587796578,-0.7198270232634878,0.6941534820049714,-0.73712918751177892,0.67575184862360882,-0.7539610743962768,0.65691909569992868,-0.77031194542564818,0.63766723824778182,-0.78617136898945927,0.61800855866342141,-0.80152922701338691,0.59795559888951821,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9997777298596181,0.021082952277811057,0.99911101824650306,0.042156532334097212,0.99800016154082261,0.063211372113663539,0.99644565356312842,0.084238111892122991,0.99444818535483348,0.10522740443667092,0.99200864487101592,0.12616991916130652,0.98912811658568733,0.14705634627465419,0.98580788100970029,0.16787740091854086,0.98204941412151014,0.18862382729548932,0.97785438671104263,0.20928640278329311,0.97322466363696036,0.22985594203484355,0.96816230299765871,0.25032330106138656,0.96266955521635766,0.27067938129739411,0.95674886204069798,0.29091513364524274,0.95040285545728631,0.3110215624979023,0.94363435652167094,0.33098972973784541,0.93644637410426923,0.35081075871040091,0.92884210355280283,0.37047583816978441,0.9208249252718379,0.38997622619605166,0.91239840322005838,0.40930325408123458,0.90356628332594302,0.42844833018293071,0.89433249182254926,0.44740294374363454,0.88470113350214463,0.46615866867411199,0.87467648989146085,0.48470716729913665,0.86426301734838329,0.50304019406392197,0.85346534508091987,0.52114959919960258,0.84228827308933207,0.53902733234613509,0.83073677003234114,0.5566654461310071,0.81881597101835923,0.57405609970216465,0.80653117532272689,0.59119156221358637,0.79388784403197199,0.60806421626195639,0.78089159761613613,0.62466656127290709,0.76754821343024993,0.64099121683532567,0.7538636231460657,0.65703092598224522,0.73984391011519057,0.67277855841685819,0.72549530666479145,0.68822711368222067,0.71082419132707475,0.70336972427323763,0.69583708600377192,0.71819965868954527,0.68054065306689093,0.73271032442793482,0.66494169239702461,0.74689527091298469,0.64904713836052863,0.76074819236460156,0.63286405672691681,0.77426293060119433,0.61639964152784232,0.7874334777772326,0.59966121185906041,0.80025397905397699,0.58265620862679557,0.8127187352021904,0.56539219123995887,0.82482220513567506,0.54787683424968681,0.83655900837450858,0.53011792393769352,0.84792392743688372,0.51212335485495486,0.85891191015849,0.49390112631226352,0.8695180719384028,0.47545933882421176,0.87973769791048706,0.45680619050818716,0.88956624503934378,0.4379499734399796,0.89899934413987259,0.41889906996761855,0.90803280181955115,0.39966194898508223,0.91666260234256614,0.38024716216753368,0.92488490941497004,0.36066334016975554,0.93269606789006843,0.34091918878947691,0.94009260539327988,0.32102348509729633,0.94707123386574565,0.30098507353491855,0.9536288510260057,0.28081286198344613,0.95976254174908604,0.26051581780346544,0.96546957936239064,0.24010296384869487,0.97074742685781679,0.21958337445496295,0.97559373801955673,0.19896617140629977,0.98000635846708617,0.17826051987993694,0.98398332661287236,0.15747562437201779,0.98752287453437915,0.13662072460582686,0.99062342875997977,0.11570509142436129,0.99328361096842843,0.094738022669068361,0.99550223860157894,0.073728839046578898,0.99727832539008066,0.052686879985279503,0.9986110817918139,0.031621499483558885,0.99949991534287352,0.010542061951579447,0.99994443092094321,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9999671357324742,0.0081072470661520402,0.99986854509001677,0.016213961254831117,0.99970423455284629,0.024319609723589531,0.99947421492085364,0.032423659700027786,0.99917850131289232,0.040525578516812946,0.99881711316578459,0.048624833646690062,0.99839007423304382,0.05672089273748445,0.99789741258331355,0.064813223647092383,0.99733916059852235,0.072901294478458015,0.99671535497175523,0.080984573614534205,0.99602603670484235,0.089062529753224914,0.99527125110566339,0.097134631942306954,0.99445104778517024,0.10520034961432864,0.99356548065412553,0.11325915262148323,0.99261460791955947,0.12131051127045483,0.99159849208094397,0.12935389635723427,0.99051719992608445,0.13738877920190287,0.98937080252673026,0.14541463168338203,0.98815937523390307,0.15343092627414551,0.98688299767294418,0.16143713607489341,0.98554175373828079,0.16943273484918414,0.9841357315879119,0.17741719705802342,0.98266502363761365,0.18538999789440713,0.98112972655486508,0.19335061331781597,0.97952994125249448,0.20129852008866006,0.97786577288204601,0.20923319580267069,0.97613733082686882,0.21715411892523701,0.97434472869492716,0.2250607688256859,0.97248808431133293,0.23295262581150231,0.97056751971060173,0.24082917116248767,0.96858316112863108,0.24868988716485479,0.9665351389944038,0.25653425714525641,0.96442358792141436,0.26436176550474527,0.9622486466988216,0.27217189775266382,0.96001045828232578,0.27996414054046087,0.95770916978477272,0.28773798169543313,0.95534493246648411,0.29549291025438984,0.95291790172531543,0.30322841649723736,0.95042823708644186,0.31094399198048245,0.94787610219187268,0.3186391295706516,0.94526166478969598,0.32631332347762387,0.94258509672305213,0.33396606928787609,0.93984657391883908,0.34159686399763706,0.93704627637614901,0.34920520604594918,0.93418438815443705,0.35679059534763552,0.93126109736142348,0.36435253332616946,0.92827659614072966,0.37189052294644542,0.92523108065924886,0.37940406874744848,0.92212475109425185,0.38689267687482015,0.9189578116202306,0.39435585511331855,0.91573047039547728,0.40179311291917141,0.9124429395484025,0.40920396145231813,0.90909543516359304,0.41658791360854125,0.90568817726760809,0.42394448405148261,0.9022213898145176,0.431273189244544,0.89869530067118231,0.4385735474826693,0.89511014160227609,0.44584507892400616,0.89146614825505233,0.45308730562144534,0.88776356014385571,0.46029975155403541,0.8840026206343784,0.46748194265827125,0.88018357692766502,0.47463340685925298,0.87630668004386358,0.48175367410171532,0.87237218480572687,0.48884227638092309,0.86838034982186296,0.49589874777343301,0.86433143746973762,0.50292262446771785,0.86022571387842817,0.50991344479465206,0.85606344891113173,0.5168707492578567,0.85184491614742708,0.52379408056390153,0.84757039286529279,0.53068298365236222,0.84324016002288216,0.5375370057257306,0.83885450224005653,0.54435569627917646,0.83441370777967716,0.55113860713015883,0.82991806852865835,0.5578852924478841,0.82536787997878225,0.56459530878260988,0.82076344120727629,0.57126821509479231,0.8161050548571559,0.57790357278407489,0.81139302711733141,0.58450094571811728,0,0.99986854509001677,0.016213961254831117,0.99947421492085364,0.032423659700027786,0.99881711316578459,0.048624833646690062,0.99789741258331355,0.064813223647092383,0.99671535497175523,0.080984573614534205,0.99527125110566339,0.097134631942306954,0.99356548065412553,0.11325915262148323,0.99159849208094397,0.12935389635723427,0.98937080252673026,0.14541463168338203,0.98688299767294418,0.16143713607489341,0.9841357315879119,0.17741719705802342,0.98112972655486508,0.19335061331781597,0.97786577288204601,0.20923319580267069,0.97434472869492716,0.2250607688256859,0.97056751971060173,0.24082917116248767,0.9665351389944038,0.25653425714525641,0.9622486466988216,0.27217189775266382,0.95770916978477272,0.28773798169543313,0.95291790172531543,0.30322841649723736,0.94787610219187268,0.3186391295706516,0.94258509672305213,0.33396606928787609,0.93704627637614901,0.34920520604594918,0.93126109736142348,0.36435253332616946,0.92523108065924886,0.37940406874744848,0.9189578116202306,0.39435585511331855,0.9124429395484025,0.40920396145231813,0.90568817726760809,0.42394448405148261,0.89869530067118231,0.4385735474826693,0.89146614825505233,0.45308730562144534,0.8840026206343784,0.46748194265827125,0.87630668004386358,0.48175367410171532,0.86838034982186296,0.49589874777343301,0.86022571387842817,0.50991344479465206,0.85184491614742708,0.52379408056390153,0.84324016002288216,0.5375370057257306,0.83441370777967716,0.55113860713015883,0.82536787997878225,0.56459530878260988,0.8161050548571559,0.57790357278407489,0.80662766770248329,0.59105990026126132,0.796938210212915,0.60406083228648066,0.78703922984197516,0.61690295078703472,0.77693332912881108,0.62958287944386049,0.76662316501395966,0.64209728457919768,0.75611144814081233,0.65444287603304518,0.7454009421429596,0.66661640802817634,0.73449446291760523,0.67861468002348635,0.72339487788523871,0.69043453755544448,0.71210510523576276,0.70207287306743538,0.70062811316127205,0.7135266267267647,0.68896691907568663,0.72479278722911999,0.677124588821444,0.73586839259027181,0.66510423586345946,0.7467505309248087,0.6529090204705652,0.75743634121170011,0.64054214888464445,0.76792301404648755,0.62800687247767939,0.7782077923799039,0.61530648689693357,0.78828797224272917,0.60244433119849339,0.79816090345669022,0.58942378696939801,0.80782399033121921,0.57624827743858653,0.81727469234588546,0.56292126657689767,0.82651052481832399,0.54944625818635773,0.83552905955748202,0.53582679497899655,0.84432792550201508,0.52206645764543436,0.85290480934366164,0.50816886391348215,0.86125745613543514,0.49413766759700573,0.86938366988447113,0.47997655763530273,0.87728131412937604,0.46568925712324372,0.88494831250192318,0.45127952233243407,0.89238264927295075,0.43675114172365342,0.89958236988231666,0.42210793495083182,0.90654558145277198,0.40735375185682604,0.91327045328761591,0.39249247146125693,0.91975521735200527,0.37752800094067773,0.92599816873778729,0.36246427460133884,0.93199766611173718,0.34730525284482028,0.93775213214708042,0.33205492112680285,0.94326005393818768,0.31671728890925294,0.94851998339833243,0,0.99970423455284629,0.024319609723589531,0.99881711316578459,0.048624833646690062,0.99733916059852235,0.072901294478458015,0.99527125110566339,0.097134631942306954,0.99261460791955947,0.12131051127045483,0.98937080252673026,0.14541463168338203,0.98554175373828079,0.16943273484918414,0.98112972655486508,0.19335061331781597,0.97613733082686882,0.21715411892523701,0.97056751971060173,0.24082917116248767,0.96442358792141436,0.26436176550474527,0.95770916978477272,0.28773798169543313,0.95042823708644186,0.31094399198048245,0.94258509672305213,0.33396606928787609,0.93418438815443705,0.35679059534763552,0.92523108065924886,0.37940406874744848,0.91573047039547728,0.40179311291917141,0.90568817726760809,0.42394448405148261,0.89511014160227609,0.44584507892400616,0.8840026206343784,0.46748194265827125,0.87237218480572687,0.48884227638092309,0.86022571387842817,0.50991344479465206,0.84757039286529279,0.53068298365236222,0.83441370777967716,0.55113860713015883,0.82076344120727629,0.57126821509479231,0.80662766770248329,0.59105990026126132,0.79201474901204105,0.61050195523633966,0.77693332912881108,0.62958287944386049,0.76139232917858424,0.64829138592766322,0.7454009421429596,0.66661640802817634,0.72896862742141155,0.68454710592868873,0.71210510523576276,0.70207287306743538,0.69482035088037308,0.71918334241170745,0.677124588821444,0.73586839259027181,0.65902828664893187,0.75211815388047465,0.64054214888464445,0.76792301404648755,0.6216771106501856,0.78327362402524248,0.60244433119849339,0.79816090345669022,0.58285518731279695,0.81257604605511502,0.56292126657689767,0.82651052481832399,0.54265436052075533,0.83995609707163277,0.52206645764543436,0.85290480934366164,0.50116973633153461,0.86534900207106036,0.47997655763530273,0.87728131412937604,0.45849945797668629,0.88869468718738542,0.43675114172365342,0.89958236988231666,0.41474447367716671,0.90993792181348832,0.39249247146125693,0.91975521735200527,0.37000829782269473,0.92902844926425798,0.34730525284482028,0.93775213214708042,0.32439676608013285,0.94592110567253518,0.30129638860629565,0.95353053764040718,0.27801778501025454,0.96057592683659931,0.25457472530521269,0.96705310569573966,0.23098107678524324,0.97295824276642495,0.20725079582235489,0.97828784497764287,0.18339791961086785,0.98303875970503096,0.15943655786397923,0.98720817663575189,0.13538088446743204,0.9907936294308799,0.11124512909522372,0.99379299718431657,0.087043568792314119,0.99620450567737229,0.062790519529313304,0.99802672842827156,0.03850032773414129,0.99925858753596097,0.014187361805673569,0.99989935431772081,-0.010133996385610924,0.99994864974020359,-0.034449360004950524,0.99940644464364414,-0.058744345763558081,0.99827305975910796,-0.08300458242678084,0.99654916551876949,-0.10721571931512884,0.99423578165933035,-0.13136343479314655,0.99133427661881379,-0.15543344474110177,0.98784636672709125,-0.17941151100448402,0.9837741151906203,-0.20328344981631272,0.97911993087199423,-0.22703514018727367,0.97388656686502506,-0.25065253225872064,0.96807711886620429,-0.27412165561359997,0.96169502334350199,-0.29742862754038518,0.95474405550359032,0,0.99947421492085364,0.032423659700027786,0.99789741258331355,0.064813223647092383,0.99527125110566339,0.097134631942306954,0.99159849208094397,0.12935389635723427,0.98688299767294418,0.16143713607489341,0.98112972655486508,0.19335061331781597,0.97434472869492716,0.2250607688256859,0.9665351389944038,0.25653425714525641,0.95770916978477272,0.28773798169543313,0.94787610219187268,0.3186391295706516,0.93704627637614901,0.34920520604594918,0.92523108065924886,0.37940406874744848,0.9124429395484025,0.40920396145231813,0.89869530067118231,0.4385735474826693,0.8840026206343784,0.46748194265827125,0.86838034982186296,0.49589874777343301,0.85184491614742708,0.52379408056390153,0.83441370777967716,0.55113860713015883,0.8161050548571559,0.57790357278407489,0.796938210212915,0.60406083228648066,0.77693332912881108,0.62958287944386049,0.75611144814081233,0.65444287603304518,0.73449446291760523,0.67861468002348635,0.71210510523576276,0.70207287306743538,0.68896691907568663,0.72479278722911999,0.66510423586345946,0.7467505309248087,0.64054214888464445,0.76792301404648755,0.61530648689693357,0.78828797224272917,0.58942378696939801,0.80782399033121921,0.56292126657689767,0.82651052481832399,0.53582679497899655,0.84432792550201508,0.50816886391348215,0.86125745613543514,0.47997655763530273,0.87728131412937604,0.45127952233243407,0.89238264927295075,0.42210793495083182,0.90654558145277198,0.39249247146125693,0.91975521735200527,0.36246427460133884,0.93199766611173718,0.33205492112680285,0.94326005393818768,0.30129638860629565,0.95353053764040718,0.27022102179472851,0.96279831708422348,0.23886149862049891,0.97105364654933946,0.20725079582235489,0.97828784497764287,0.17542215427204172,0.98449330510194732,0.14340904401919266,0.98966350144556769,0.11124512909522372,0.99379299718431657,0.078964232113242605,0.99687744986370619,0.046600298701198938,0.99891361596534411,0.014187361805673569,0.99989935431772081,-0.018240494096151548,0.99983362834780076,-0.050649168838712642,0.99871650717105276,-0.08300458242678084,0.99654916551876949,-0.11527271087296727,0.99333388250275512,-0.14741962197633418,0.98907403921867987,-0.17941151100448402,0.9837741151906203,-0.21121473624160733,0.97743968366052558,-0.24279585436510731,0.97007740572756229,-0.27412165561359997,0.96169502334350199,-0.30515919870930741,0.95230135117151515,-0.33587584549812366,0.94190626731693461,-0.36623929527092269,0.93052070293973466,-0.39621761873002076,0.91815663075964982,-0.42577929156507272,0.90482705246601947,-0.4548932276030957,0.89054598504560012,-0.48352881149776183,0.87532844604271942,-0.51165593092358219,0.85919043776727544,-0.53924500824112986,0.8421489304671852,-0.5662670316000028,0.82422184448297742,-0.59269358544682038,0.80542803140329844,-0.61849688040617046,0.78578725424114337,-0.64364978250308869,0.76532016665166125,-0.66812584169633482,0.744048291213389,-0.69189931969246887,0.72199399679574816,-0.71494521701147129,0.6991804750366104,-0.7372392992754504,0.67563171595466331,-0.75875812269279097,0.65137248272222226,-0.77947905871094547,0.6264282856250174,-0.79938031781194563,0.60082535523633895,0,0.99917850131289232,0.040525578516812946,0.99671535497175523,0.080984573614534205,0.99261460791955947,0.12131051127045485,0.98688299767294418,0.16143713607489341,0.97952994125249448,0.20129852008866009,0.97056751971060173,0.2408291711624877,0.96001045828232578,0.27996414054046087,0.94787610219187268,0.3186391295706516,0.93418438815443694,0.35679059534763558,0.9189578116202306,0.39435585511331861,0.9022213898145176,0.43127318924454405,0.8840026206343784,0.46748194265827125,0.86433143746973762,0.50292262446771785,0.84324016002288216,0.5375370057257306,0.82076344120727629,0.57126821509479242,0,0.99671535497175523,0.080984573614534205,0.98688299767294418,0.16143713607489341,0.97056751971060173,0.2408291711624877,0.94787610219187268,0.3186391295706516,0.9189578116202306,0.39435585511331861,0.8840026206343784,0.46748194265827125,0.84324016002288216,0.5375370057257306,0.796938210212915,0.60406083228648066,0.7454009421429596,0.66661640802817645,0.68896691907568652,0.72479278722911999,0.62800687247767939,0.77820779237990401,0.56292126657689756,0.8265105248183241,0.49413766759700573,0.86938366988447113,0.42210793495083182,0.90654558145277198,0.34730525284482006,0.93775213214708053,0,0.99261460791955947,0.12131051127045483,0.97056751971060173,0.24082917116248767,0.93418438815443705,0.35679059534763552,0.8840026206343784,0.46748194265827125,0.82076344120727629,0.57126821509479231,0.7454009421429596,0.66661640802817634,0.65902828664893187,0.75211815388047465,0.56292126657689767,0.82651052481832399,0.45849945797668629,0.88869468718738542,0.34730525284482028,0.93775213214708042,0.23098107678524324,0.97295824276642495,0.11124512909522372,0.99379299718431657,-0.010133996385610924,0.99994864974020359,-0.13136343479314655,0.99133427661881379,-0.25065253225872042,0.96807711886620429,0,0.98688299767294418,0.16143713607489341,0.94787610219187268,0.3186391295706516,0.8840026206343784,0.46748194265827125,0.796938210212915,0.60406083228648066,0.68896691907568652,0.72479278722911999,0.56292126657689756,0.8265105248183241,0.42210793495083182,0.90654558145277198,0.27022102179472851,0.96279831708422348,0.11124512909522349,0.99379299718431657,-0.050649168838712864,0.99871650717105276,-0.21121473624160755,0.97743968366052547,-0.36623929527092292,0.93052070293973455,-0.51165593092358219,0.85919043776727544,-0.64364978250308869,0.76532016665166125,-0.75875812269279119,0.65137248272222181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99995073723827355,0.0099258801440029135,0.99980295380673379,0.01985078233546891,0.99955666426582046,0.029773728718214355,0.99921189288133971,0.0396937416287527,0.99876867362207244,0.049609843692619268,0.99822705015642832,0.059521057920667614,0.99758707584814288,0.069426407805327855,0.99684881375101964,0.079324917416817631,0.99601233660271837,0.089215611499296063,0.99507772681758777,0.099097515566951372,0.99404507647854623,0.10896965600001257,0.99291448732800902,0.11883106014067589,0.99168607075786397,0.12868075638893639,0.99035994779849668,0.13851777429831538,0.98893624910686573,0.14834114467147413,0.9874151149536301,0.1581498996557045,0.98579669520932856,0.1679430728382873,0.98408114932961332,0.17771969934170845,0.98226864633954047,0.18747881591872406,0.98035936481691566,0.19721946104726498,0.97835349287470041,0.20694067502517111,0.97625122814247789,0.21664150006474675,0.97405277774698107,0.22632098038712689,0.97175835829168611,0.23597816231644603,0.96936819583547085,0.24561209437379949,0.9668825258703424,0.25522182737098847,0.96430159329823517,0.26480641450403913,0.96162565240688191,0.27436491144648711,0.95885496684475957,0.28389637644241777,0.95598980959511359,0.29339987039925308,0.95303046294906169,0.30287445698027632,0.94997721847778116,0.31231920269688507,0.94683037700378203,0.32173317700056375,0.9435902485712675,0.3311154523745663,0.94025715241558749,0.34046510442530042,0.93683141693178551,0.34978121197340356,0.93331337964224337,0.35906285714450303,0.92970338716342638,0.36830912545964994,0.92600179517173331,0.37751910592541849,0.92220896836845268,0.38669189112366226,0.91832528044383066,0.39582657730091814,0.91435111404025304,0.40492226445744889,0.9102868607145449,0.41397805643591634,0.90613292089939268,0.42299306100967538,0.901889703863891,0.4319663899706816,0.89755762767321945,0.44089715921700195,0.89313711914745231,0.44978448883992156,0.88862861381950609,0.45862750321063728,0.88403255589222818,0.46742533106652928,0.87934939819463165,0.47617710559700288,0.87457960213728003,0.48488196452889126,0.8697236376668267,0.49353905021141165,0.864781983219713,0.50214750970066557,0.85975512567502999,0.5107064948436757,0.85464356030654864,0.51921516236195064,0.84944779073392251,0.52767267393456918,0.84416832887306859,0.53607819628077658,0.83880569488573009,0.54443090124208371,0.83336041712822773,0.55272996586386225,0.82783303209940295,0.5609745724764259,0.82222408438775918,0.56916390877559264,0.81653412661780556,0.57729716790271679,0.81076371939560976,0.58537354852418555,0.80491343125356407,0.5933922549103704,0.79898383859436983,0.60135249701402749,0.79297552563424789,0.6092534905481366,0.78688908434537741,0.61709445706317401,0.78072511439757264,0.62487462402380944,0.77448422309919895,0.63259322488502057,0.7681670253373386,0.6402494991676172,0.76177414351720762,0.64784269253316795,0.75530620750083388,0.65537205685832167,0.74876385454499894,0.66283685030851724,0.7421477292384524,0.67023633741107225,0.73545848343840337,0.67756978912764676,0.72869677620629569,0.6848364829260718,0.72186327374287396,0.69203570285153693,0.71495864932254527,0.69916673959713049,0.70798358322704513,0.7062288905737244,0.70093876267841149,0.71322145997919717,0.69382488177127655,0.72014375886698767,0.68664264140448061,0.72699510521397459,0.6793927492120152,0.73377482398767246,0.6720759194933037,0.7404822472127407,0.66469287314282388,0.74711671403679469,0.65724433757908252,0.753677570795518,0.64973104667294479,0.76016417107706391,0.64215374067533004,0.76657587578574438,0.63451316614427811,0.77291205320499679,0.62681007587139403,0.77917207905962416,0.61904522880767932,0.78535533657730239,0.61121938998875525,0.79146121654934798,0.60333333045948812,0.79748911739074035,0.59538782719802097,0.80343844519939389,0.58738366303922163,0.80930861381467212,0.57932162659755382,0.81509904487513929,0.5712025121893779,0.82080916787554437,0.563027119754691,0.8264384202230296,0.55479625477831218,0.83198624729256088,0.5465107282105216,0.83745210248157198,0.53817135638716151,0.84283544726381954,0.52977896094920607,0.84813575124244089,0.52133436876180883,0.85335249220221199,0.51283841183283541,0.85848515616099919,0.50429192723088934,0.86353323742039911,0,0.99980295380673379,0.01985078233546891,0.99921189288133971,0.0396937416287527,0.99822705015642832,0.059521057920667614,0.99684881375101964,0.079324917416817631,0.99507772681758777,0.099097515566951372,0.99291448732800902,0.11883106014067589,0.99035994779849668,0.13851777429831538,0.9874151149536301,0.1581498996557045,0.98408114932961332,0.17771969934170845,0.98035936481691566,0.19721946104726498,0.97625122814247789,0.21664150006474675,0.97175835829168611,0.23597816231644603,0.9668825258703424,0.25522182737098847,0.96162565240688191,0.27436491144648711,0.95598980959511359,0.29339987039925308,0.94997721847778116,0.31231920269688507,0.9435902485712675,0.3311154523745663,0.93683141693178551,0.34978121197340356,0.92970338716342638,0.36830912545964994,0.92220896836845268,0.38669189112366226,0.91435111404025304,0.40492226445744889,0.90613292089939268,0.42299306100967538,0.89755762767321945,0.44089715921700195,0.88862861381950609,0.45862750321063728,0.87934939819463165,0.47617710559700288,0.8697236376668267,0.49353905021141165,0.85975512567502999,0.5107064948436757,0.84944779073392251,0.52767267393456918,0.83880569488573009,0.54443090124208371,0.82783303209940295,0.5609745724764259,0.81653412661780556,0.57729716790271679,0.80491343125356407,0.5933922549103704,0.79297552563424789,0.6092534905481366,0.78072511439757264,0.62487462402380944,0.7681670253373386,0.6402494991676172,0.75530620750083388,0.65537205685832167,0.7421477292384524,0.67023633741107225,0.72869677620629569,0.6848364829260718,0.71495864932254527,0.69916673959713049,0.70093876267841149,0.71322145997919717,0.68664264140448061,0.72699510521397459,0.6720759194933037,0.7404822472127407,0.65724433757908252,0.753677570795518,0.64215374067533004,0.76657587578574438,0.62681007587139403,0.77917207905962416,0.61121938998875525,0.79146121654934798,0.59538782719802097,0.80343844519939389,0.57932162659755382,0.81509904487513929,0.563027119754691,0.8264384202230296,0.5465107282105216,0.83745210248157198,0.52977896094920607,0.84813575124244089,0.51283841183283541,0.85848515616099919,0.49569575700283985,0.86849623861556335,0.47835775224897326,0.87816505331475692,0.46083123034690654,0.88748778985232035,0.44312309836548375,0.89646077420876247,0.42524033494469843,0.90508047019926396,0.40718998754546493,0.91334348086726069,0.38897916967226748,0.92124654982315857,0.37061505806978229,0.9287865625276519,0.35210488989457772,0.93596054751913949,0.33345595986300486,0.94276567758475494,0.31467561737640609,0.94919927087455014,0.29577126362477191,0.95525879195839158,0.27675034866998816,0.96094185282515399,0.25762036850982328,0.9662462138238177,0.23838886212381308,0.97116978454609759,0.21906340850220571,0.97571062465025749,0.19965162365913958,0.97986694462578405,0.18016115763123075,0.98363710649861869,0.16059969146275058,0.98701962447667135,0.14097493417858548,0.99001316553535967,0.12129461974616867,0.99261654994294368,0.10156650402758256,0.99482875172544905,0.081798361723032467,0.99664889907099574,0.061997983306896272,0.99807627467337279,0.042173171957558687,0.99911031601472222,0.022331740482236712,0.99975061558722433,0.0024815082380126624,0.99999692105369242,-0.017369701949715103,0.99984913534701725,-0.037214066870148152,0.99930731670842088,-0.057043766010155761,0.99837167866450349,-0.076850984636279637,0.9970425899430948,-0.096627916874460817,0.99532057432794097,-0.11636676878627553,0.99320631045228536,-0.13605976144046594,0.99070063153142462,-0.15569913397855925,0.98780452503434435,-0.17527714667336192,0.98451913229456578,-0.1947860839791275,0.98084574806035441,-0.21421825757219443,0.97678581998446978,-0.23356600938089589,0.97234094805365634,-0.2528217146035478,0.9675128839581012,-0.27197778471332418,0.96230353040110617,-0.29102667044883906,0.95671494034924676,-0.30996086478925217,0.95074931622331393,-0.32877290591272879,0.94440900903035652,-0.3474553801370871,0.93769651743716753,-0.36600092484147362,0.93061448678557868,-0.38440223136791629,0.9231657080499508,-0.4026520479016108,0.9153531167372726,-0.42074318232880559,0.90717979173029939,-0.43866850507115912,0.89864895407418932,-0.45642095189545262,0.88976396570711325,-0.47399352669755013,0.88052832813534099,-0.49137930425951093,0.87094568105332437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99996772145883128,0.0080346773695851303,0.99987088791913337,0.016068836043841756,0.99970950563219718,0.02410195736092683,0.99948358501639223,0.032133522725966063,0.99919314065649445,0.040163013644532869,0.99883819130274409,0.048189911756120918,0.99841875986963602,0.056213698867607881,0.99793487343443965,0.06423385698670854,0.9973865632354515,0.072249868355414859,0.99677386466997808,0.080261215483420884,0.99609681729205135,0.088267381181530435,0.99535546480987458,0.096267848595045322,0.99454985508300087,0.104262101237132,0.99368004011924382,0.11224962302216444,0.99274607607131959,0.12022989829904107,0.9917480232332222,0.12820241188447379,0.99068594603633076,0.13616664909624659,0.98955991304525048,0.14412209578644206,0.98836999695338579,0.15206823837463318,0.9871162745782478,0.16000456388103862,0.98579882685649511,0.16793055995963926,0.98441773883870887,0.17584571493125356,0.98297309968390179,0.18374951781657034,0.98146500265376291,0.19164145836913593,0.97989354510663618,0.19952102710829431,0.97825882849123602,0.20738771535207759,0.9765609583400976,0.2152410152500451,0.9748000442627639,0.22308041981606871,0.97297619993871021,0.23090542296106234,0.9710895431100045,0.2387155195256537,0.96914019557370712,0.24651020531279577,0.96712828317400745,0.25428897712031645,0.96505393579410004,0.26205133277340359,0.96291728734779936,0.26979677115702427,0.96071847577089509,0.27752479224827492,0.95845764301224723,0.28523489714866174,0.95613493502462243,0.29292658811630773,0.95375050175527143,0.30059936859808589,0.95130449713624921,0.30825274326167479,0.9487970790744773,0.31588621802753625,0.94622840944154984,0.32349930010081118,0.94359865406328403,0.33109149800313337,0.94090798270901421,0.33866232160435772,0.93815656908063261,0.34621128215420161,0.93534459080137533,0.35373789231379726,0.93247222940435581,0.36124166618715292,0.92953967032084506,0.36872211935252081,0.92654710286830144,0.37617876889366997,0.92349472023814838,0.38361113343106201,0.92038271948330252,0.39101873315292757,0.91721130150545305,0.39840108984624145,0.91398067104209124,0.40575772692759471,0.91069103665329409,0.41308816947396165,0.90734261070825972,0.42039194425335924,0.90393560937159745,0.42766857975539757,0.90047025258937308,0.43491760622171949,0.89694676407490981,0.44213855567632648,0.89336537129434579,0.44933096195579009,0.88972630545194964,0.45649436073934585,0.8860298014751945,0.46362828957886881,0.88227609799959206,0.47073228792872734,0.87846543735328653,0.47780589717551519,0.87459806554141117,0.48484866066765769,0.87067423223020635,0.49186012374489219,0.86669419073090237,0.49883983376761959,0.86265819798336574,0.50578734014612514,0.85856651453951283,0.51270219436966769,0.85441940454648857,0.51958395003543356,0.85021713572961422,0.52643216287735572,0.8459599793751037,0.53324639079479397,0.84164821031255044,0.54002619388107542,0.83728210689718474,0.54677113445189418,0.83286195099190441,0.55348077707356624,0.82838802794907807,0.56015468859114048,0.82386062659212389,0.5667924381563616,0.81928003919686421,0.57339359725548444,0.81464656147265657,0.57995773973693732,0.80996049254330404,0.58648444183883375,0.80522213492774408,0.59297328221632872,0.80043179452051971,0.5994238419688197,0.79558978057203078,0.60583570466698966,0.79069640566857058,0.61220845637969035,0.78575198571214566,0.61854168570066481,0.78075683990008227,0.62483498377510627,0.7757112907044198,0.63108794432605286,0.77061566385109315,0.63730016368061526,0.76547028829890473,0.64347124079603724,0.76027549621828761,0.6496007772855853,0.75503162296986193,0.65568837744426756,0.74973900708278474,0.66173364827437942,0.74439799023289555,0.66773619951087415,0.73900891722065909,0.67369564364655721,0.73357213594890547,0.67961159595710297,0.72808799740037078,0.68548367452589098,0.72255685561503902,0.69131150026866162,0.7169790676672857,0.69709469695798854,0.71135499364282662,0.70283289124756676,0.7056849966154719,0.70852571269631526,0.69996944262368621,0.71417279379229093,0.69420870064695928,0.71977376997641462,0.68840314258198521,0.72532827966600533,0.68255314321865412,0.73083596427812403,0.67665908021585652,0.73629646825272166,0.67072133407710288,0.74170943907559339,0.66474028812595976,0.7470745273011361,0.65871632848130302,0.75239138657490756,0.65264984403239146,0.75765967365598597,0.64654122641376099,0.76287904843912824,0.64039086997994243,0.7680491739767269,0.63419917178000229,0.77316971650056177,0.62796653153191118,0.77824034544334775,0.62169335159673866,0.78326073346007452,0.61538003695267851,0.78823055644913953,0.60902699516890391,0.7931494935732708,0.60263463637925641,0.79801722728023949,0.59620337325576866,0.80283344332335993,0.58973362098202375,0.80759783078177638,0.58322579722635193,0.81231008208053546,0.57668032211486708,0.81696989301044198,0.57009761820434512,0.8215769627476982,0.56347811045494434,0.82613099387332367,0.55682222620277144,0.83063169239235612,0.55013039513229423,0.83507876775283052,0.54340304924860205,0.83947193286453681,0.53664062284951708,0.84381090411755311,0.5298435524975571,0.84809540140055495,0.52301227699175257,0.85232514811889859,0.51614723733931867,0.85649987121247662,0.50924887672718555,0.86061930117334673,0.50231764049338734,0.86468317206312972,0.49535397609831217,0.86869122153017797,0.48835833309581578,0.87264319082651198,0.48133116310419954,0.8765388248245245,0.4742729197770551,0.88037787203345075,0.46718405877397817,0.88416008461560402,0.4600650377311522,0.88788521840237522,0.45291631623180473,0.89155303290999566,0.44573835577653831,0.89516329135506234,0.43853161975353705,0.89871576066982339,0.43129657340865168,0.9022102115172248,0.42403368381536494,0.90564641830571557,0.4167434198446382,0.90902415920381108,0.4094262521346429,0.91234321615441405,0.40208265306037744,0.91560337488889154,0.39471309670317184,0.91880442494090797,0.38731805882008263,0.92194615966001126,0.37989801681317942,0.92502837622497469,0.3724534496987249,0.92805087565688948,0.36498483807625126,0.93101346283201114,0.357492664097534,0.93391594649435539,0.34997741143546551,0.93675813926804552,0.3424395652528307,0.9395398576694084,0.33487961217098627,0.9422609221188204,0.32729804023844572,0.94492115695229983,0.31969533889937257,0.9475203904328473,0.31207199896198318,0.95005845476153306,0.3044285125668616,0.95253518608832932,0.29676537315518831,0.95495042452268786,0.28908307543688527,0.95730401414386224,0.28138211535867891,0.95959580301097358,0.27366299007208278,0.96182564317281904,0.26592619790130406,0.96399339067742396,0.25817223831107172,0.96609890558133393,0.25040161187439347,0.96814205195865011,0.24261482024023998,0.97012269790980354,0.23481236610115994,0.97204071557007055,0.22699475316082762,0.97389598111782705,0.21916248610152533,0.97568837478254233,0.21131607055156246,0.97741778085251096,0.20345601305263375,0.97908408768232291,0.19558282102711835,0.98068718770007091,0.18769700274532208,0.98222697741429532,0.17979906729266507,0.9837033574206645,0.17188952453681663,0.98511623240839308,0.16396888509477972,0.98646551116639392,0.15603766029992694,0.98775110658916732,0.14809636216899041,0.98897293568242362,0.14014550336900747,0.99013091956844146,0.13218559718422426,0.99122498349115984,0.12421715748295983,0.99225505682100379,0.11624069868443203,0.99322107305944485,0.10825673572554828,0.99412296984329296,0.1002657840276627,0.99496068894872325,0.092268359463302016,0.99573417629503447,0.084264978322862297,0.99644338194814042,0.076256157281278825,0.99708826012379304,0.068242413364671003,0.99766876919053915,0.060224263916964685,0.9981848716724071,0.05220222656649396,0.99863653425132626,0.044176819192584579,0.99902372776927861,0.036148559892121172,0.99934642723018019,0.028117966946100421,0.99960461180149529,0.02008555878617237,0.99979826481558132,0.012051853961171966,0.99992737377076468,0.0040173711036430686,0.99999193033214806,0,0.99987088791913337,0.016068836043841756,0.99948358501639223,0.032133522725966063,0.99883819130274409,0.048189911756120918,0.99793487343443965,0.06423385698670854,0.99677386466997808,0.080261215483420884,0.99535546480987458,0.096267848595045322,0.99368004011924382,0.11224962302216444,0.9917480232332222,0.12820241188447379,0.98955991304525048,0.14412209578644206,0.9871162745782478,0.16000456388103862,0.98441773883870887,0.17584571493125356,0,0.99948358501639223,0.032133522725966063,0.99793487343443965,0.06423385698670854,0.99535546480987458,0.096267848595045322,0.9917480232332222,0.12820241188447379,0.9871162745782478,0.16000456388103862,0.98146500265376291,0.19164145836913593,0.9748000442627639,0.22308041981606871,0.96712828317400745,0.25428897712031645,0.95845764301224723,0.28523489714866174,0.9487970790744773,0.31588621802753625,0.93815656908063261,0.34621128215420161,0,0.99883819130274409,0.048189911756120918,0.99535546480987458,0.096267848595045322,0.98955991304525048,0.14412209578644206,0.98146500265376291,0.19164145836913593,0.9710895431100045,0.2387155195256537,0.95845764301224723,0.28523489714866174,0.94359865406328403,0.33109149800313337,0.92654710286830144,0.37617876889366997,0.90734261070825972,0.42039194425335924,0.8860298014751945,0.46362828957886881,0.86265819798336574,0.50578734014612514,0,0.99793487343443965,0.06423385698670854,0.9917480232332222,0.12820241188447379,0.98146500265376291,0.19164145836913593,0.96712828317400745,0.25428897712031645,0.9487970790744773,0.31588621802753625,0.92654710286830144,0.37617876889366997,0.90047025258937308,0.43491760622171949,0.87067423223020635,0.49186012374489219,0.83728210689718474,0.54677113445189418,0.80043179452051971,0.5994238419688197,0.76027549621828761,0.6496007772855853,0,0.99677386466997808,0.080261215483420884,0.9871162745782478,0.16000456388103862,0.9710895431100045,0.23871551952565367,0.9487970790744773,0.31588621802753625,0.92038271948330264,0.39101873315292751,0.8860298014751945,0.46362828957886876,0.8459599793751037,0.53324639079479397,0.80043179452051971,0.5994238419688197,0.74973900708278485,0.6617336482743793,0.69420870064695928,0.71977376997641451,0.63419917178000229,0.77316971650056177,0,0.99535546480987458,0.096267848595045322,0.98146500265376291,0.19164145836913593,0.95845764301224723,0.28523489714866174,0.92654710286830144,0.37617876889366997,0.8860298014751945,0.46362828957886881,0.83728210689718474,0.54677113445189418,0.78075683990008227,0.62483498377510627,0.7169790676672857,0.69709469695798854,0.64654122641376099,0.76287904843912824,0.57009761820434512,0.8215769627476982,0.48835833309581578,0.87264319082651198,0,0.99368004011924382,0.11224962302216444,0.9748000442627639,0.22308041981606871,0.94359865406328403,0.33109149800313337,0.90047025258937308,0.43491760622171949,0.8459599793751037,0.53324639079479397,0.78075683990008227,0.62483498377510627,0.70568499661547179,0.70852571269631537,0.62169335159673866,0.78326073346007452,0.5298435524975571,0.84809540140055495,0.43129657340865168,0.9022102115172248,0.3272980402384455,0.94492115695229983,0,0.9917480232332222,0.12820241188447379,0.96712828317400745,0.25428897712031645,0.92654710286830144,0.37617876889366997,0.87067423223020635,0.49186012374489219,0.80043179452051971,0.5994238419688197,0.7169790676672857,0.69709469695798854,0.62169335159673866,0.78326073346007452,0.51614723733931867,0.85649987121247662,0.40208265306037744,0.91560337488889154,0.28138211535867891,0.95959580301097358,0.15603766029992694,0.98775110658916732,0,0.98955991304525048,0.14412209578644206,0.95845764301224723,0.28523489714866174,0.90734261070825972,0.42039194425335924,0.83728210689718474,0.54677113445189418,0.74973900708278485,0.6617336482743793,0.64654122641376099,0.76287904843912824,0.5298435524975571,0.84809540140055495,0.40208265306037744,0.91560337488889154,0.26592619790130428,0.96399339067742384,0.12421715748296006,0.99225505682100379,-0.020085558786172249,0.99979826481558132,0,0.9871162745782478,0.16000456388103862,0.9487970790744773,0.31588621802753625,0.8860298014751945,0.46362828957886876,0.80043179452051971,0.5994238419688197,0.69420870064695928,0.71977376997641451,0.57009761820434524,0.82157696274769809,0.43129657340865168,0.9022102115172248,0.28138211535867891,0.95959580301097358,0.12421715748296006,0.99225505682100379,-0.036148559892120825,0.99934642723018019,-0.19558282102711821,0.98068718770007102,0,0.98441773883870887,0.17584571493125356,0.93815656908063261,0.34621128215420161,0.86265819798336574,0.50578734014612514,0.76027549621828761,0.6496007772855853,0.63419917178000218,0.77316971650056188,0.48835833309581578,0.87264319082651198,0.3272980402384455,0.94492115695229983,0.15603766029992694,0.98775110658916732,-0.020085558786172249,0.99979826481558132,-0.19558282102711844,0.98068718770007091,-0.36498483807625115,0.93101346283201125,0,0.98146500265376291,0.19164145836913593,0.92654710286830144,0.37617876889366997,0.83728210689718474,0.54677113445189418,0.7169790676672857,0.69709469695798854,0.57009761820434512,0.8215769627476982,0.40208265306037744,0.91560337488889154,0.21916248610152533,0.97568837478254233,0.028117966946100421,0.99960461180149529,-0.16396888509477958,0.98646551116639403,-0.3499774114354654,0.93675813926804552,-0.52301227699175246,0.85232514811889859,0,0.97825882849123602,0.20738771535207759,0.91398067104209124,0.40575772692759471,0.80996049254330404,0.58648444183883375,0.67072133407710288,0.74170943907559339,0.50231764049338734,0.86468317206312972,0.31207199896198318,0.95005845476153306,0.10825673572554828,0.99412296984329296,-0.10026578402766258,0.99496068894872325,-0.30442851256686126,0.95253518608832943,-0.49535397609831211,0.86869122153017808,-0.66474028812595964,0.74707452730113622,0,0.9748000442627639,0.22308041981606871,0.90047025258937308,0.43491760622171949,0.78075683990008227,0.62483498377510627,0.62169335159673866,0.78326073346007452,0.43129657340865168,0.9022102115172248,0.21916248610152533,0.97568837478254233,-0.0040173711036431683,0.99999193033214806,-0.22699475316082773,0.97389598111782705,-0.43853161975353694,0.89871576066982339,-0.62796653153191107,0.77824034544334786,-0.78575198571214577,0.6185416857006647,0,0.9710895431100045,0.2387155195256537,0.8860298014751945,0.46362828957886881,0.74973900708278474,0.66173364827437942,0.57009761820434512,0.8215769627476982,0.357492664097534,0.93391594649435539,0.12421715748295983,0.99225505682100379,-0.11624069868443213,0.99322107305944485,-0.3499774114354654,0.93675813926804552,-0.56347811045494423,0.82613099387332378,-0.74439799023289543,0.66773619951087426,-0.88227609799959206,0.47073228792872729,0,0.96712828317400745,0.25428897712031645,0.87067423223020635,0.49186012374489219,0.7169790676672857,0.69709469695798854,0.51614723733931867,0.85649987121247662,0.28138211535867891,0.95959580301097358,0.028117966946100421,0.99960461180149529,-0.22699475316082773,0.97389598111782705,-0.46718405877397806,0.88416008461560414,-0.6766590802158563,0.73629646825272177,-0.84164821031255022,0.54002619388107576,-0.95130449713624921,0.30825274326167484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99996796770105112,0.0080039722531799768,0.9998718728563406,0.016007431735095969,0.99971172162214628,0.024009865707334471,0.99948752425849252,0.032010761497180858,0.99919929512849315,0.040009606530463523,0.99884705269743157,0.048005888364391749,0.99843081953157742,0.055999094720385195,0.99795062229674125,0.06398871351689274,0.99740649175656559,0.071974232902198815,0.99679846277055495,0.079955141287215009,0.9961265742918417,0.087930927378254767,0.99539086936469112,0.095901080209789255,0.99459139512174344,0.10386508917718212,0.99372820278099461,0.11182244406940124,0.99280134764251493,0.1197726351017051,0.99181088908490611,0.12771515294830202,0.99075689056149729,0.13564948877497982,0.9896394195962801,0.14357513427170421,0.98845854777958264,0.15149158168518334,0.98721435076348296,0.15939832385139691,0.9859069082569627,0.16729485422808735,0.98453630402080017,0.17518066692721129,0.98310262586220476,0.18305525674734904,0.98160596562919111,0.19091811920607019,0.98004641920469537,0.19876875057225299,0.978424086500432,0.20660664789835573,0.97673907145049343,0.21443130905263785,0.97499148200469121,0.22224223275132879,0.9731814301216406,0.2300389185907426,0.97130903176158756,0.23782086707933603,0.96937440687898024,0.24558757966970832,0.9673776794147837,0.25333855879054035,0.96531897728853999,0.26107330787847144,0.96319843239017322,0.26879133140991146,0.96101618057153959,0.27649213493278624,0.95877236163772417,0.28417522509821463,0.95646711933808504,0.2918401096921146,0.95410060135704289,0.29948629766673668,0.9516729593046207,0.30711329917212277,0.94918434870673041,0.31472062558748842,0.94663492899520929,0.32230778955252554,0.94402486349760606,0.32987430499862569,0.94135431942671721,0.33741968718001925,0.93862346786987494,0.34494345270483084,0.93583248377798611,0.35244511956604735,0.93298154595432425,0.35992420717239787,0.93007083704307469,0.36738023637914208,0.92710054351763349,0.3748127295187671,0.92407085566866098,0.38222121043158852,0.92098196759189099,0.38960520449625557,0.91783407717569587,0.39696423866015773,0.91462738608840977,0.40429784146973025,0.91136209976540739,0.41160554310065806,0.9080384273959442,0.41888687538797453,0.90465658190975418,0.42614137185605472,0.90121677996340843,0.43336856774849919,0.89771924192643549,0.44056800005790936,0.89416419186720342,0.44773920755554908,0.8905518575385647,0.45488173082089373,0.88688247036326551,0.46199511227106221,0.88315626541911996,0.46907889619013232,0.87937348142394933,0.47613262875833562,0.87553436072028923,0.48315585808113148,0.87163914925986385,0.49014813421815734,0.86768809658782908,0.49710900921205414,0.86368145582678579,0.50403803711716433,0.85961948366056296,0.5109347740281015,0.85550244031777434,0.51779877810818853,0.85133058955514607,0.52462960961776395,0.84710419864061992,0.53142683094235388,0.84282353833623014,0.53819000662070759,0.83848888288075807,0.54491870337269432,0.83410050997216245,0.55161249012706248,0.82965870074978909,0.55827093804905514,0.82516373977635959,0.56489362056788384,0.82061591501974163,0.57148011340405558,0.81601551783449922,0.57802999459655557,0.81136284294322847,0.58454284452987881,0,0.9998718728563406,0.016007431735095969,0.99948752425849252,0.032010761497180858,0.99884705269743157,0.048005888364391749,0.99795062229674125,0.06398871351689274,0.99679846277055495,0.079955141287215009,0.99539086936469112,0.095901080209789255,0.99372820278099461,0.11182244406940124,0.99181088908490611,0.12771515294830202,0.9896394195962801,0.14357513427170421,0.98721435076348296,0.15939832385139691,0.98453630402080017,0.17518066692721129,0.98160596562919111,0.19091811920607019,0.978424086500432,0.20660664789835573,0.97499148200469121,0.22224223275132879,0.97130903176158756,0.23782086707933603,0.9673776794147837,0.25333855879054035,0.96319843239017322,0.26879133140991146,0.95877236163772417,0.28417522509821463,0.95410060135704289,0.29948629766673668,0.94918434870673041,0.31472062558748842,0.94402486349760606,0.32987430499862569,0.93862346786987494,0.34494345270483084,0.93298154595432425,0.35992420717239787,0.92710054351763349,0.3748127295187671,0.92098196759189099,0.38960520449625557,0.91462738608840977,0.40429784146973025,0.9080384273959442,0.41888687538797453,0.90121677996340843,0.43336856774849919,0.89416419186720342,0.44773920755554908,0.88688247036326551,0.46199511227106221,0.87937348142394933,0.47613262875833562,0.87163914925986385,0.49014813421815734,0.86368145582678579,0.50403803711716433,0.85550244031777434,0.51779877810818853,0.84710419864061992,0.53142683094235388,0.83848888288075807,0.54491870337269432,0.82965870074978909,0.55827093804905514,0.82061591501974163,0.57148011340405558,0.81136284294322847,0.58454284452987881,0.8019018556596399,0.59745578404566979,0.79223537758752982,0.61021562295531573,0.78236588580334732,0.62281909149539061,0.77229590940667592,0.63526295997304572,0.76202802887214027,0.64754403959363305,0.7515648753881492,0.65965918327784678,0.74090913018264171,0.67160528646817652,0.73006352383601136,0.68337928792446268,0.71903083558138303,0.69497817050835353,0.70781389259242267,0.70639896195645868,0.69641556925886172,0.71763873564200498,0.68483878644992269,0.72869461132479718,0.6730865107658337,0.73956375588929124,0.66116175377762465,0.75024338407059321,0.64906757125539893,0.76073075916819455,0.6368070623852794,0.77102319374726391,0.62438336897522895,0.7811180503273133,0.611799674649948,0.79101274205806427,0.59905920403505786,0.80070473338233916,0.58616522193077591,0.81019154068580856,0.57312103247529722,0.81947073293342776,0.5599299782980941,0.82853993229240064,0.546595439663354,0.83739681474150873,0.53312083360377116,0.84603911066665249,0.51950961304491849,0.8544646054424484,0.50576526592041982,0.86267113999973766,0.49189131427815214,0.87065661137885597,0.47789131337770568,0.87841897326852603,0.463768850779334,0.88595623653023392,0.44952754542462525,0.8932664697079542,0.43517104670913359,0.90034779952309374,0.42070303354720556,0.90719841135452772,0.40612721342924324,0.91381654970360326,0.39144732147164291,0.92020051864399444,0.37666711945965603,0.92634868225629019,0.36179039488341547,0.9322594650472058,0.3468209599673755,0.9379313523533096,0.33176265069341188,0.94336289072916224,0.31661932581783586,0.94855268831976813,0,0.99971172162214628,0.024009865707334471,0.99884705269743157,0.048005888364391749,0.99740649175656559,0.071974232902198801,0.99539086936469112,0.095901080209789255,0.99280134764251493,0.1197726351017051,0.9896394195962801,0.14357513427170418,0.9859069082569627,0.16729485422808732,0.98160596562919111,0.19091811920607019,0.97673907145049343,0.21443130905263785,0.97130903176158756,0.23782086707933603,0.96531897728853999,0.26107330787847144,0.95877236163772428,0.28417522509821458,0.9516729593046207,0.30711329917212277,0.94402486349760606,0.32987430499862569,0.93583248377798611,0.35244511956604735,0.92710054351763349,0.3748127295187671,0.91783407717569598,0.39696423866015768,0.9080384273959442,0.41888687538797453,0.89771924192643549,0.4405680000579093,0.88688247036326551,0.46199511227106221,0.87553436072028934,0.48315585808113137,0.86368145582678579,0.50403803711716433,0.85133058955514607,0.52462960961776395,0.83848888288075807,0.54491870337269421,0.82516373977635971,0.56489362056788373,0.81136284294322847,0.58454284452987881,0.79709414938166823,0.60385504636585985,0.78236588580334743,0.6228190914953905,0.76718654388813157,0.64142404607013603,0.7515648753881492,0.65965918327784678,0.73550988708190945,0.67751398952697406,0.71903083558138303,0.69497817050835353,0.70213722199504025,0.7120416571304572,0.6848387864499228,0.72869461132479707,0.66714550247590698,0.74492743171813025,0.64906757125539893,0.76073075916819455,0.63061541574177316,0.77609548215978597,0.61179967464994811,0.79101274205806427,0.592631196322564,0.80547393821605839,0.57312103247529722,0.81947073293342776,0.55328043182491893,0.83299505626361992,0.53312083360377127,0.84603911066665238,0.51265386096440091,0.85859537550483733,0.49189131427815214,0.87065661137885597,0.47084516433158247,0.88221586430168275,0.44952754542462525,0.8932664697079542,0.42795074837447689,0.9038020562964687,0.40612721342924346,0.91381654970360315,0.38406952309543058,0.92330417600552883,0.36179039488341569,0.93225946504720569,0.33930267397508074,0.94067725359623744,0.31661932581783586,0.94855268831976813,0.29375342864930321,0.95588122858270352,0.27071816595697057,0.9626586490656458,0.24752681887716299,0.968881042201029,0.22419275853771281,0.9745448204260545,0.20072943834874701,0.9796467182511237,0.17715038624603191,0.98418379414257873,0.1534691968913505,0.98815343221866303,0.12969952383440839,0.9915533437577263,0.10585507164078772,0.99438156851780179,0.081949587990486461,0.99663647586679749,0.05799685575160185,0.99831676572264771,0.03401068503372387,0.99942146930288467,0.010004905225623457,0.99994994968319606,-0.014006642978174999,0.99990190216464836,-0.038010115557339609,0.99927735444936294,-0.061991673147594191,0.99807666662454431,-0.085937489019898144,0.99630053095486948,-0.10983375705233915,0.99394997148335773,-0.13366669969014691,0.9910263434409522,-0.15742257588923522,0.98753133246515168,-0.18108768903869371,0.98346695362814573,-0.20464839485766129,0.97883555027501057,-0.22809110926202925,0.97363979267263778,-0.25140231619643538,0.96788267647017401,-0.274568575427038,0.96156752097185927,-0.29757653029057318,0.95469796722325939,0,0.99948752425849252,0.032010761497180858,0.99795062229674125,0.06398871351689274,0.99539086936469112,0.095901080209789255,0.99181088908490611,0.12771515294830202,0.98721435076348296,0.15939832385139691,0.98160596562919111,0.19091811920607019,0.97499148200469121,0.22224223275132879,0.9673776794147837,0.25333855879054035,0.95877236163772417,0.28417522509821463,0.94918434870673041,0.31472062558748842,0.93862346786987494,0.34494345270483084,0.92710054351763349,0.3748127295187671,0.91462738608840977,0.40429784146973025,0.90121677996340843,0.43336856774849919,0.88688247036326551,0.46199511227106221,0.87163914925986385,0.49014813421815734,0.85550244031777434,0.51779877810818853,0.83848888288075807,0.54491870337269432,0.82061591501974163,0.57148011340405558,0.8019018556596399,0.59745578404566979,0.78236588580334732,0.62281909149539061,0.76202802887214027,0.64754403959363305,0.74090913018264171,0.67160528646817652,0.71903083558138303,0.69497817050835353,0.69641556925886172,0.71763873564200498,0.6730865107658337,0.73956375588929124,0.64906757125539893,0.76073075916819455,0.62438336897522895,0.7811180503273133,0.59905920403505786,0.80070473338233916,0.57312103247529722,0.81947073293342776,0.546595439663354,0.83739681474150873,0.51950961304491849,0.8544646054424484,0.49189131427815214,0.87065661137885597,0.463768850779334,0.88595623653023392,0.43517104670913359,0.90034779952309374,0.40612721342924324,0.91381654970360326,0.37666711945965603,0.92634868225629019,0.3468209599673755,0.9379313523533096,0.31661932581783586,0.94855268831976813,0.28609317222074782,0.95820180380161546,0.25527378700251185,0.96686880892362859,0.22419275853771259,0.9745448204260545,0.19288194337256909,0.98122197076952011,0.16137343357351883,0.9868934161988786,0.12969952383440839,0.9915533437577263,0.097892678375997286,0.99519697724640099,0.065985497671708623,0.99782058211735492,0.03401068503372387,0.99942146930288467,0.0020010130936752141,0.9999979979712954,-0.030010709787711112,0.99954957720867343,-0.061991673147594413,0.99807666662454431,-0.093909098050150283,0.99558077588079574,-0.12573027068339127,0.99206446314434682,-0.15742257588923522,0.98753133246515168,-0.18895353059246164,0.98198603008222252,-0.22029081709428622,0.97543423966146059,-0.2514023161964356,0.9678826764701739,-0.28225614012176581,0.95933908049425476,-0.31282066519768836,0.94981220850506853,-0.34306456426889859,0.93931182508418942,-0.37295683880619168,0.92784869261517655,-0.40246685067844956,0.91543456025265435,-0.43156435355524037,0.90208215187999785,-0.46021952390783816,0.8878051530679707,-0.4884029915768941,0.87261819704767807,-0.51608586987542437,0.85653684971221555,-0.54323978519626304,0.83957759366238327,-0.56983690609363169,0.82175781131282077,-0.59584997180902299,0.80309576707587405,-0.62125232021215415,0.78361058864145972,-0.64601791512835771,0.76332224737211085,-0.67012137302439578,0.74225153783329989,-0.69353798902535257,0.72042005648001639,-0.71624376223593045,0.69785017952145001,-0.7382154203402046,0.67456503998646045,-0.7594304434546163,0.650588504013347,-0.77986708720976239,0.62594514638821264,-0.79950440503731823,0.60066022535700148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99995960082788682,0.0089886991346544865,0.99983840657573331,0.017976671997302143,0.99963642703583455,0.026963192374617716,0.99935367852780288,0.035947534170634357,0.99899018389724947,0.044928971465410993,0.99854597251393873,0.053906778573685421,0.99802108026941483,0.062880230103508516,0.99741554957410217,0.071848601014854671,0.99672942935387809,0.080811166678203844,0.99596277504612052,0.089767202933090401,0.99511564859522805,0.098715986146614115,0.99418811844761534,0.10765679327190852,0.99318025954618239,0.11658890190656183,0.9920921533242596,0.12551159035098589,0.99092388769902828,0.13442413766672837,0.98967555706441646,0.14332582373472333,0.98834726228347236,0.15221592931347563,0.98693911068021511,0.16109373609717451,0.98545121603096253,0.16995852677373144,0.98388369855513869,0.17880958508273795,0.98223668490556026,0.18764619587333792,0.98051030815820295,0.19646764516201093,0.97870470780144958,0.20527322019026079,0.97682002972481907,0.21406220948220525,0.97485642620717972,0.22283390290206212,0.97281405590444425,0.23158759171152696,0.97069308383675146,0.2403225686270381,0.96849368137513259,0.24903812787692392,0.96621602622766489,0.25773356525842811,0.96386030242511289,0.26640817819460777,0.96142670030605937,0.27506126579110096,0.95891541650152601,0.28369212889275736,0.95632665391908611,0.29230007014012915,0.95366062172647004,0.3008843940258164,0.95091753533466439,0.30944440695066272,0.94809761638050782,0.31797941727979734,0.94520109270878261,0.32648873539851764,0.94222819835380567,0.33497167376800913,0.93917917352051816,0.34342754698089745,0.93605426456507823,0.35185567181662791,0.93285372397495536,0.3602553672966689,0.92957781034852982,0.36862595473953375,0.92622678837419847,0.37696675781561662,0.92280092880898834,0.38527710260183962,0.91930050845667977,0.39355631763610405,0.91572581014544141,0.40180373397154362,0.91207712270497787,0.41001868523057428,0.90835474094319291,0.4182005076587364,0.90455896562236959,0.42634854017832502,0.90069010343486866,0.43446212444180388,0.8967484669783492,0.44254060488499875,0.89273437473051021,0.45058332878006596,0.88864815102335892,0.45858964628823168,0.88449012601700516,0.46655891051229786,0.88026063567298451,0.47449047754891066,0.87596002172711374,0.48238370654058615,0.87158863166187894,0.49023795972749151,0.86714681867835919,0.49805260249897387,0.86263494166768906,0.50582700344483666,0.85805336518206021,0.51356053440635596,0.85340245940526682,0.52125257052703533,0.84868260012279462,0.52890249030309233,0.84389416869145883,0.53650967563367546,0.83903755200859031,0.54407351187080599,0.83411314248077573,0.55159338786903989,0.82912133799215115,0.55906869603484777,0.82406254187225403,0.5664988323757072,0.81893716286343454,0.57388319654890441,0.81374561508783028,0.58122119191004107,0.8084883180139053,0.58851222556124216,0.80316569642255842,0.59575570839906078,0.79777818037280102,0.60295105516207737,0.79232620516700958,0.61009768447818724,0.78681021131575346,0.61719501891157491,0.78123064450220259,0.62424248500936974,0.77558795554611693,0.6312395133479799,0.76988260036742118,0.63818553857910132,0.76411503994936691,0.6450799994753964,0.75828574030128637,0.65192233897584007,0.7523951724209389,0.6587120042307304,0.74644381225645584,0.66544844664635661,0.74043214066788432,0.67213112192932589,0.73436064338833473,0.67875949013054027,0.72822981098473449,0.68533301568882399,0.72204013881819018,0.69185116747419639,0.71579212700396444,0.69831341883078579,0.70948628037106642,0.70471924761938243,0.70312310842146308,0.71106813625962706,0.69670312528891187,0.71735957177182963,0.69022684969741988,0.7235930458184181,0.68369480491933188,0.72976805474501061,0.67710751873304997,0.73588409962111034,0.67046552338039134,0.7419406862804182,0.66376935552358252,0.74793732536076041,0.65701955620189911,0.75387353234362819,0.65021667078795031,0.75974882759332651,0.64336124894361335,0.76556273639572736,0.63645384457562237,0.77131478899662587,0.62949501579081302,0.77700452063969616,0.62248532485102903,0.78263147160404234,0.61542533812769173,0.7881951872413433,0.60831562605603884,0.79369521801258791,0.60115676308903354,0.79913111952439675,0.59394932765094999,0.80450245256492814,0.58669390209063788,0.80980878313936622,0.5793910726344691,0.81504968250498644,0.57204142933897195,0.82022472720579809,0.56464556604315519,0.82533349910675791,0.55720408032052748,0.8303755854275553,0.5497175734308134,0.83535057877596408,0.54218665027137414,0.84025807718075918,0.5346119193283313,0.84509768412419506,0.52699399262740276,0.84986900857404435,0.51933348568445281,0.85457166501519122,0.51163101745575823,0.85920527348078213,0.50388721028799832,0.86376945958292517,0,0.99983840657573331,0.017976671997302143,0.99935367852780288,0.035947534170634357,0.99854597251393873,0.053906778573685421,0.99741554957410217,0.071848601014854671,0.99596277504612052,0.089767202933090401,0.99418811844761534,0.10765679327190852,0.9920921533242596,0.12551159035098589,0.98967555706441646,0.14332582373472333,0.98693911068021511,0.16109373609717451,0.98388369855513869,0.17880958508273795,0.98051030815820295,0.19646764516201093,0.97682002972481907,0.21406220948220525,0.97281405590444425,0.23158759171152696,0.96849368137513259,0.24903812787692392,0.96386030242511289,0.26640817819460777,0.95891541650152601,0.28369212889275736,0.95366062172647004,0.3008843940258164,0.94809761638050782,0.31797941727979734,0.94222819835380567,0.33497167376800913,0.93605426456507823,0.35185567181662791,0.92957781034852982,0.36862595473953375,0.92280092880898834,0.38527710260183962,0.91572581014544141,0.40180373397154362,0.90835474094319291,0.4182005076587364,0.90069010343486866,0.43446212444180388,0.89273437473051021,0.45058332878006596,0.88449012601700516,0.46655891051229786,0.87596002172711374,0.48238370654058615,0.86714681867835919,0.49805260249897387,0.85805336518206021,0.51356053440635596,0.84868260012279462,0.52890249030309233,0.83903755200859031,0.54407351187080599,0.82912133799215115,0.55906869603484777,0.81893716286343454,0.57388319654890441,0.8084883180139053,0.58851222556124216,0.79777818037280102,0.60295105516207737,0.78681021131575346,0.61719501891157491,0.77558795554611693,0.6312395133479799,0.76411503994936691,0.6450799994753964,0.7523951724209389,0.6587120042307304,0.74043214066788432,0.67213112192932589,0.72822981098473449,0.68533301568882399,0.71579212700396444,0.69831341883078579,0.70312310842146308,0.71106813625962706,0.69022684969741988,0.7235930458184181,0.67710751873304997,0.73588409962111034,0.66376935552358252,0.74793732536076041,0.65021667078795031,0.75974882759332651,0.63645384457562237,0.77131478899662587,0.62248532485102903,0.78263147160404234,0.60831562605603884,0.79369521801258791,0.59394932765094999,0.80450245256492814,0.5793910726344691,0.81504968250498644,0.56464556604315519,0.82533349910675791,0.5497175734308134,0.83535057877596408,0.5346119193283313,0.84509768412419506,0.51933348568445281,0.85457166501519122,0.50388721028799832,0.86376945958292517,0.48827808517203453,0.87268809522115709,0.4725111550005161,0.881324689544142,0.45659151543791621,0.88967645131817841,0.4405243115023747,0.89774068136369911,0.42431473590289659,0.90551477342760955,0.40796802736113574,0.91299621502559558,0.39148946891830971,0.92018258825412458,0.37488438622778997,0.9270715705718805,0.35815814583392069,0.93366093555037843,0.34131615343762306,0.93994855359351714,0.32436385214934232,0.94593239262583639,0.30730672072990733,0.95161051874925739,0.29015027181986652,0.95698109686809252,0.27290005015787494,0.96204239128212499,0.25556163078870847,0.9667927662475635,0.23814061726148134,0.97123068650569344,0.22064263981865367,0.97535471777905292,0.20307335357641096,0.97916352723497113,0.18543843669700477,0.98265588391632341,0.1677435885536453,0.98583065913936019,0.14999452788853973,0.98868682685848208,0.13219699096466861,0.99122346399784511,0.11435672971190203,0.99343975074968638,0.096479509868051275,0.99533497083927513,0.078571109115458004,0.99690851175640327,0.060637315213724161,0.99815986495334075,0.042683924129182871,0.99908862600919157,0.024716738161719234,0.99969449476059691,0.0067415640695430868,0.99997727539874437,-0.011235788807478882,0.99993687653265084,-0.029209510425325599,0.9995733112186983,-0.047173791913550527,0.99888669695641508,-0.06512282745263355,0.99787725565050056,-0.08305081615034457,0.99654531353910936,-0.10095196391651584,0.99489130108841461,-0.11882048533561591,0.99291575285348788,-0.13665060553651892,0.99061930730553738,-0.15443656205886841,0.98800270662556244,-0.17217260671542778,0.9850667964644908,-0.18985300744981903,0.98181252566987498,-0.20747205018904818,0.97824094597923728,-0.22502404069021778,0.97435321168016231,-0.24250330638083248,0.97015057923724612,-0.25990419819209903,0.96563440688602331,-0.27722109238463127,0.96080615419400373,-0.29444839236596898,0.9556673815889587,-0.31158053049932199,0.95021974985461188,-0.3286119699029586,0.94446501959389528,-0.3455372062396519,0.93840505065994628,-0.36235076949560963,0.93204180155502658,-0.3790472257483104,0.92537732879756107,-0.39562117892267651,0.91841378625749714,-0.4120672725350133,0.91115342446020309,-0.42838019142415557,0.90359858985912755,-0.44455466346925798,0.89575172407745596,-0.46058546129367256,0.88761536311901168,-0.47646740395437132,0.87919213654865114,-0.49219535861635721,0.87048476664242413,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99991944110285935,0.012692962796189505,0.99967777739090913,0.025383880530210394,0.9992750478004736,0.038070708469389952,0.99871131721845596,0.050751402539994189,0.99798667647188444,0.063423919656564506,0.99710124231327746,0.076086218051095084,0.99605515740183381,0.088736257601998034,0.99484859028044692,0.10137200016280339,0.99348173534855022,0.11399140989054062,0.99195481283079534,0.12659245357374926,0.99026806874157036,0.13917310096006544,0.98842177484536242,0.15173132508333162,0.98641622861297173,0.16426510259017701,0.98425175317358371,0.17677241406601565,0.98192869726270671,0.18925124436041019,0.9794474351659852,0.20169958291174839,0.97680836665889514,0.21411542407118034,0.97401191694233347,0.22649676742576436,0.97105853657411034,0.23884161812076887,0.96794870139635625,0.25114798718107922,0.96468291245885573,0.2634138918316567,0.96126169593831889,0.27563735581699916,0.95768560305360528,0.28781640971955091,0.95395520997691263,0.29994909127701064,0.95007111774094544,0.31203344569848712,0.94603395214207719,0.3240675259794506,0.94184436363952473,0.33604939321543009,0.93750302725054624,0.34797711691440514,0.93301064244168508,0.35984877530784254,0.92836793301607268,0.37166245566032752,0.92357564699681105,0.38341625457773926,0.91863455650645354,0.39510827831392187,0.91354545764260087,0.40673664307580015,0.90830917034963721,0.41829947532689271,0.90292653828662128,0.42979491208917159,0.89739842869135844,0.44122110124322128,0.89172573224067331,0.45257620182664826,0.88590936290690558,0.46385838433069265,0.87995025781065317,0.47506583099499483,0.87384937706978494,0.48619673610046871,0.86760770364474915,0.49724930626023517,0.86122624318020058,0.50822176070856906,0.85470602384297356,0.51911233158781189,0.84804809615642596,0.5299192642332049,0.84125353283118121,0.54064081745559756,0.83432342859229525,0.55127526382198333,0.82725890000287716,0.56182088993382007,0.82006108528419108,0.5722759967030896,0.81273114413226799,0.5826388996260502,0.80527025753105863,0.5929079290546404,0.79767962756215538,0.60308143046548945,0.78996047721111617,0.61315776472648986,0.78211405017041935,0.62313530836089115,0.77414161063908249,0.63301245380887039,0.76604444311897801,0.64278760968653925,0.75782385220787685,0.65245920104234412,0.74948116238925411,0.66202566961081855,0.7410177178188917,0.67148547406364745,0.73243488210831098,0.68083709025800343,0.7237340381050702,0.69007901148211193,0.71491658766996358,0.69920974869801067,0.70598395145115644,0.70822783078145923,0.69693756865529344,0.71713180475896343,0.68777889681561699,0.72592023604187594,0.67850941155713218,0.7345917086575332,0.66913060635885824,0.74314482547739424,0.65964399231320159,0.75157820844214263,0.65005109788249249,0.75989049878371695,0.64035346865272236,0.76808035724423185,0.63055266708452251,0.77614646429175682,0.62065027226142377,0.78408752033291573,0.61064787963543821,0.79190224592227509,0.60054710077000317,0.79958938196848495,0.59034956308032993,0.80714768993714126,0.58005690957119826,0.81457595205033562,0.56967079857223879,0.82187297148286109,0.5591929034707469,0.82903757255504162,0.54862491244207001,0.83606860092215574,0.53796852817761254,0.84296492376042154,0.52722546761050237,0.84972542994951439,0.51639746163896194,0.85634903025158893,0.50548625484742971,0.86283465748677446,0,0.99967777739090913,0.025383880530210394,0.99871131721845596,0.050751402539994189,0.99710124231327746,0.076086218051095084,0.99484859028044692,0.10137200016280339,0.99195481283079534,0.12659245357374926,0.98842177484536242,0.15173132508333162,0.98425175317358371,0.17677241406601565,0.9794474351659852,0.20169958291174839,0.97401191694233347,0.22649676742576436,0.96794870139635625,0.25114798718107922,0.96126169593831889,0.27563735581699916,0.95395520997691263,0.29994909127701064,0.94603395214207719,0.3240675259794506,0.93750302725054624,0.34797711691440514,0.92836793301607268,0.37166245566032752,0.91863455650645354,0.39510827831392187,0.90830917034963721,0.41829947532689271,0.89739842869135844,0.44122110124322128,0.88590936290690558,0.46385838433069265,0.87384937706978494,0.48619673610046871,0.86122624318020058,0.50822176070856906,0.84804809615642596,0.5299192642332049,0.83432342859229525,0.55127526382198333,0.82006108528419108,0.5722759967030896,0.80527025753105863,0.5929079290546404,0.78996047721111617,0.61315776472648986,0.77414161063908249,0.63301245380887039,0.75782385220787685,0.65245920104234412,0.7410177178188917,0.67148547406364745,0.7237340381050702,0.69007901148211193,0.70598395145115644,0.70822783078145923,0.68777889681561699,0.72592023604187594,0.66913060635885824,0.74314482547739424,0.65005109788249249,0.75989049878371695,0.63055266708452251,0.77614646429175682,0.61064787963543821,0.79190224592227509,0.59034956308032993,0.80714768993714126,0.56967079857223879,0.82187297148286109,0.54862491244207001,0.83606860092215574,0.52722546761050237,0.84972542994951439,0.50548625484742971,0.86283465748677446,0.48342128388456385,0.87538783535493569,0.46104477438693131,0.88737687371854779,0.43837114678907746,0.89879404629916693,0.41541501300188644,0.90963199535451833,0.39219116699600548,0.9198837364201583,0.36871457526794077,0.92954266281057918,0.34500036719497068,0.93860254987685565,0.32106382528509086,0.94705755901809086,0.29692037532827492,0.95490224144407387,0.27258557645539788,0.96213154168672721,0.24807511111122887,0.96874080085807857,0.2234047749479543,0.9747257596526594,0.19859046664574553,0.98008256109239345,0.17364817766693041,0.98480775301220802,0.14859398195037188,0.98889829028476561,0.12344402555269482,0.99235153678288102,0.098214516243037217,0.99516526707836128,0.072921713058030746,0.99733766787617228,0.047581915823742403,0.99886733918300796,0.02221145465132952,0.99975329520950917,-0.0031733205868222725,0.99999496500555107,-0.028556050793696133,0.99959219282818923,-0.053920378190185837,0.99854523824202746,-0.079249956856788317,0.99685477595194238,-0.10452846326765333,0.9945218953682734,-0.12973960681020161,0.99154809990475712,-0.15486714028353227,0.98793530600966006,-0.17989487036885371,0.98368584193073216,-0.20480666806519052,0.97880244621477874,-0.22958647908364097,0.97328826594281759,-0.25421833419348677,0.96714685470195716,-0.27868635951348741,0.96038217029530448,-0.30297478674172712,0.95299857219137796,-0.32706796331742144,0.94500081871466857,-0.35095036250813544,0.93639406397916058,-0.37460659341591185,0.92718385456678742,-0.39802141089586202,0.91737612595296336,-0.4211797253808266,0.90697719868149473,-0.44406661260577412,0.89599377429133586,-0.46666732322567372,0.88443293099781428,-0.48896729232063879,0.87230211913110878,0,0.9992750478004736,0.038070708469389952,0.99710124231327746,0.076086218051095084,0.99348173534855022,0.11399140989054063,0.98842177484536242,0.15173132508333162,0.98192869726270671,0.18925124436041019,0.97401191694233347,0.22649676742576438,0.96468291245885573,0.2634138918316567,0.95395520997691263,0.29994909127701064,0.94184436363952473,0.33604939321543009,0.92836793301607268,0.37166245566032752,0.91354545764260087,0.40673664307580015,0.89739842869135844,0.44122110124322128,0.87995025781065317,0.47506583099499489,0.86122624318020058,0.50822176070856906,0.84125353283118121,0.54064081745559756,0.82006108528419108,0.5722759967030896,0.79767962756215538,0.60308143046548945,0.77414161063908249,0.63301245380887039,0.74948116238925411,0.66202566961081855,0.7237340381050702,0.69007901148211193,0.69693756865529344,0.71713180475896343,0.66913060635885824,0.74314482547739424,0.64035346865272236,0.76808035724423185,0.6106478796354381,0.79190224592227509,0.58005690957119815,0.81457595205033573,0.5486249124420699,0.83606860092215585,0.51639746163896194,0.85634903025158893,0,0.99710124231327746,0.076086218051095084,0.98842177484536242,0.15173132508333162,0.97401191694233347,0.22649676742576438,0.95395520997691263,0.29994909127701064,0.92836793301607268,0.37166245566032752,0.89739842869135844,0.44122110124322128,0.86122624318020058,0.50822176070856906,0.82006108528419108,0.5722759967030896,0.77414161063908249,0.63301245380887039,0.7237340381050702,0.69007901148211193,0.66913060635885824,0.74314482547739424,0.6106478796354381,0.79190224592227509,0.5486249124420699,0.83606860092215585,0.48342128388456385,0.87538783535493569,0.41541501300188644,0.90963199535451833,0.34500036719497068,0.93860254987685565,0.27258557645539788,0.96213154168672721,0.19859046664574553,0.98008256109239345,0.12344402555269482,0.99235153678288102,0.047581915823742403,0.99886733918300796,-0.028556050793696133,0.99959219282818923,-0.10452846326765333,0.9945218953682734,-0.17989487036885371,0.98368584193073216,-0.25421833419348699,0.96714685470195716,-0.32706796331742166,0.94500081871466846,-0.39802141089586224,0.91737612595296336,-0.46666732322567372,0.88443293099781428,0,0.99348173534855022,0.11399140989054062,0.97401191694233347,0.22649676742576436,0.94184436363952473,0.33604939321543009,0.89739842869135844,0.44122110124322128,0.84125353283118121,0.54064081745559756,0,0.97401191694233347,0.22649676742576436,0.89739842869135844,0.44122110124322128,0.77414161063908249,0.63301245380887039,0.61064787963543821,0.79190224592227509,0.41541501300188644,0.90963199535451833,0,0.94184436363952473,0.33604939321543009,0.77414161063908249,0.63301245380887039,0.51639746163896194,0.85634903025158893,0.19859046664574553,0.98008256109239345,-0.142314838273285,0.9898214418809328,0,0.89739842869135844,0.44122110124322128,0.61064787963543821,0.79190224592227509,0.19859046664574553,0.98008256109239345,-0.25421833419348677,0.96714685470195716,-0.6548607339452851,0.75574957435425827,0,0,0,0,0,0,0,0,0,0,0,0,0.99935552364332136,0.035896202634582174,0.99742292527283405,0.071746136761379281,0.99420469591645155,0.10750359351052489,0.98970498371963489,0.14312248321111948,0.98392958859862967,0.17855689479863665,0.97688595476464768,0.21376115499211443,0.96858316112863119,0.24868988716485474,0.95903190959896567,0.28329806983274941,0.94824451128722631,0.31754109468484432,0.9362348706397372,0.35137482408134268,0.92301846751539729,0.38475564794493594,0.90861233723287449,0.41764053997213108,0.89303504861288541,0.44998711309212114,0.87630668004386358,0.48175367410171521,0.8584487936018661,0.51289927740590613,0.83948440725807727,0.54338377779480562,0.81943796520973189,0.57316788218892212,0,0.99742292527283405,0.071746136761379281,0.98970498371963489,0.14312248321111948,0.97688595476464768,0.21376115499211443,0.95903190959896567,0.28329806983274941,0.9362348706397372,0.35137482408134268,0.90861233723287449,0.41764053997213108,0.87630668004386358,0.48175367410171521,0.83948440725807727,0.54338377779480562,0.79833530637270156,0.60221320028608205,0.75307146600361097,0.65793872593971259,0.70392618274894503,0.71027313706805695,0.65115275874357359,0.75894669429455552,0.59502319610203724,0.80370852683078864,0.53582679497899677,0.84432792550201496,0.47386866247299869,0.880595531856738,0.40946814005889065,0.9123244172314543,0.34295715765413171,0.9393510462089234,0,0.99420469591645155,0.10750359351052489,0.97688595476464768,0.21376115499211443,0.94824451128722631,0.31754109468484432,0.90861233723287449,0.41764053997213108,0.8584487936018661,0.51289927740590613,0.79833530637270156,0.60221320028608205,0.72896862742141155,0.68454710592868862,0.65115275874357359,0.75894669429455552,0.56578963358221457,0.82454962890714067,0.47386866247299869,0.880595531856738,0.37645526537439217,0.92643479704288745,0.2746785228023903,0.96153611950414886,0.16971808910066918,0.98549265356572668,0.062790519529313527,0.99802672842827156,-0.04486483035051464,0.9989930665413147,-0.15200016956126694,0.98838046745843078,-0.25737373436530225,0.96631193765722401,0,0.98970498371963489,0.14312248321111948,0.95903190959896567,0.28329806983274941,0.90861233723287449,0.41764053997213108,0.83948440725807727,0.54338377779480562,0.75307146600361097,0.65793872593971259,0.65115275874357359,0.75894669429455552,0.53582679497899677,0.84432792550201496,0.40946814005889065,0.9123244172314543,0.2746785228023903,0.96153611950414886,0.13423326581765554,0.9909497617679347,-0.0089758584809977136,0.99995971617087109,-0.15200016956126694,0.98838046745843078,-0.29189479220103315,0.95645043273863162,-0.42577929156507233,0.90482705246601969,-0.55089698145210242,0.83457325372130275,-0.66467168455342551,0.74713556450814977,-0.76476077602759807,0.64431432969449465,0,0.98392958859862967,0.17855689479863665,0.9362348706397372,0.35137482408134268,0.8584487936018661,0.51289927740590613,0,0.9362348706397372,0.35137482408134268,0.75307146600361097,0.65793872593971259,0.47386866247299869,0.880595531856738,0,0.8584487936018661,0.51289927740590613,0.47386866247299869,0.880595531856738,-0.044864830350514862,0.9989930665413147,0,0.75307146600361097,0.65793872593971259,0.13423326581765554,0.9909497617679347,-0.55089698145210242,0.83457325372130275,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/medium.json b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/medium.json index 07704064ab79..7825df644a03 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/medium.json +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/medium.json @@ -1 +1 @@ -{"lengths":[96,59,31,104,37,53,83,44,118,79],"offsets":[0,96,155,186,290,327,380,463,507,625],"cosines":[0.9998661379095618,0.99946458747636568,0.99879545620517241,0.99785892323860348,0.99665523930918032,0.99518472667219693,0.99344777901944437,0.99144486137381038,0.98917650996478101,0.98664333208487898,0.98384600592707738,0.98078528040323043,0.9774619749435719,0.97387697927733363,0.97003125319454397,0.96592582628906831,0.96156179768296191,0.95694033573220882,0.95206267771392428,0.94693012949510569,0.94154406518302081,0.93590592675732576,0.93001722368401218,0.92387953251128674,0.91749449644749137,0.91086382492117579,0.90398929312344334,0.89687274153268837,0.88951607542185607,0.88192126434835505,0.87409034162675892,0.86602540378443871,0.85772861000027212,0.849202181526579,0.84044840109443808,0.83146961230254524,0.82226821898977509,0.81284668459161524,0.80320753148064494,0.79335334029123528,0.78328674922865049,0.77301045336273699,0.76252720390638817,0.7518398074789775,0.74095112535495922,0.72986407269783571,0.7185816177796982,0.70710678118654757,0.69544263500961168,0.68359230202287136,0.67155895484701844,0.65934581510006895,0.6469561525348575,0.6343932841636456,0.62166057337007741,0.60876142900872066,0.59569930449243347,0.58247769686780226,0.56910014587889834,0.5555702330196024,0.54189158057475173,0.5280678506503681,0.51410274419322188,0.50000000000000011,0.48576339371634009,0.47139673682599781,0.45690387563042073,0.44228869021900147,0.4275550934302822,0.41270702980439494,0.39774847452701118,0.38268343236508984,0.36751593659470372,0.3522500479212336,0.33688985339222027,0.3214394653031617,0.30590302009655351,0.2902846772544625,0.27458861818493241,0.25881904510252096,0.24298017990326398,0.22707626303437345,0.21111155235896531,0.19509032201612833,0.17901686127663285,0.16289547339458882,0.14673047445536197,0.13052619222005171,0.11428696496684666,0.09801714032956077,0.081721074133668303,0.06540312923014327,0.049067674327418126,0.032719082821776387,0.016361731626486936,6.123233995736766e-17,0.99964561112345263,0.99858269567676194,0.99681200703075012,0.99433480021013709,0.9911528310040072,0.98726835472134455,0.98268412459252097,0.97740338981786667,0.97142989326470996,0.96476786881451593,0.95742203836200546,0.94939760846838128,0.94070026667103335,0.93133617745233843,0.92131197787041297,0.91063477285491323,0.89931213017121925,0.88735207505657154,0.87476308453196128,0.86155408139380607,0.84773442788967102,0.83331391908251495,0.81830277590816913,0.80271163793096367,0.78655155580264258,0.76983398342990628,0.75257076985613847,0.7347741508630673,0.71645674029831519,0.69763152113498472,0.67831183626961611,0.65851137906503865,0.63824418364482016,0.61752461494619193,0.59636735853850142,0.57478741021440694,0.55280006536119353,0.53042090811974252,0.50766580033884001,0.48455087033265021,0.4610925014493259,0.43730732045885545,0.41321218576837826,0.38882417547332071,0.36416057525282231,0.33923886611803039,0.31407671202194892,0.28869194733962117,0.26310256422752143,0.23732669987111499,0.21138262362962451,0.18528872408711453,0.15906349601907227,0.13272552728372197,0.10629348564736542,0.079786105553083103,0.053222174842178692,0.026620521437774818,6.123233995736766e-17,0.99871650717105276,0.99486932339189516,0.98846832432811138,0.97952994125249448,0.96807711886620429,0.95413925640004882,0.93775213214708042,0.9189578116202306,0.89780453957074169,0.87434661614458209,0.84864425749475092,0.82076344120727629,0.79077573693769854,0.75875812269279097,0.72479278722911999,0.68896691907568663,0.65137248272222226,0.61210598254766291,0.57126821509479231,0.52896401032696239,0.48530196253108099,0.44039415155763428,0.39435585511331855,0.34730525284482028,0.29936312297335799,0.25065253225872053,0.20129852008866012,0.1514277775045767,0.10116832198743222,0.050649168838712767,6.123233995736766e-17,0.99988593961749794,0.9995437844895334,0.99897361266879592,0.9981755542233175,0.99714979120680114,0.99589655761709095,0.99441613934279216,0.99270887409805397,0.99077515134553018,0.98861541220753424,0.98623014936541065,0.98361990694714363,0.98078528040323043,0.97772691637084685,0.97444551252633571,0.97094181742605201,0.96721663033560268,0.96327080104751628,0.95910522968738887,0.9547208665085456,0.95011871167526907,0.94529981503464022,0.94026527587704756,0.93501624268541483,0.92955391287320943,0.92387953251128674,0.91799439604363597,0.91189984599209006,0.9055972726500694,0.89908811376542597,0.89237385421246429,0.88545602565320991,0.87833620618800601,0.87101601999551559,0.86349713696221297,0.85578127230144752,0.84787018616216847,0.83976568322739797,0.83146961230254524,0.82298386589365646,0.81431037977569387,0.80545113255094591,0.79640814519766712,0.78718348060905019,0.77777924312263813,0.76819757804028055,0.75844067113874603,0.74851074817110119,0.73841007435896955,0.72814095387578848,0.71770572932117838,0.70710678118654757,0.69634652731205293,0.68542742233503984,0.67435195713008877,0.6631226582407953,0.65174208730341221,0.64021284046248805,0.62853754777863213,0.61671887262854308,0.60475951109743753,0.59266219136401688,0.58042967307811322,0.56806474673115581,0.55557023301960229,0.5429489822014788,0.53020387344617725,0.51733781417765679,0.50435373941120076,0.49125461108387752,0.4780434173788618,0.46472317204376862,0.45129691370315361,0.43776770516534047,0.42413863272373109,0.41041280545275693,0.39659335449863536,0.38268343236508984,0.36868621219419895,0.35460488704253579,0.34044266915276611,0.32620278922086943,0.31188849565914922,0.29750305385520298,0.28304974542702049,0.26853186747437691,0.25395273182669686,0.23931566428755782,0.22462400387600404,0.20988110206484778,0.19509032201612833,0.18025503781390587,0.16537863369456143,0.15046450327478306,0.13551604877741186,0.12053668025532323,0.10552981481352347,0.09049887582963792,0.075447292172966099,0.060378497422286286,0.045295929082584473,0.030203027800888991,0.015103236581386131,6.123233995736766e-17,0.99909896620468153,0.99639748854252652,0.99190043525887683,0.98561591034770846,0.97755523894768626,0.96773294693349887,0.95616673473925096,0.94287744546108421,0.92788902729650935,0.91122849038813569,0.89292585814956849,0.87301411316118815,0.85152913773331129,0.82850964924384218,0.80399713036694054,0.77803575431843952,0.75067230525272433,0.72195609395452454,0.69193886897754631,0.66067472339008149,0.62821999729564237,0.59463317630428669,0.55997478613759544,0.52430728355723166,0.4876949438136346,0.45020374481767328,0.41190124824399277,0.37285647778030861,0.33313979474205768,0.29282277127655043,0.25197806138512535,0.21067926999572642,0.16900082032184907,0.12701781974687887,0.08480592447550922,0.042441203196148462,6.123233995736766e-17,0.99956083650879435,0.99824373176432146,0.9960498426152169,0.99298109601351692,0.98904018732216403,0.98423057794759683,0.97855649229950403,0.97202291408041075,0.96463558190835863,0.95640098427652243,0.94732635385419139,0.9374196611341209,0.92668960743183348,0.91514561724301846,0.90279782996574354,0.88965709099474732,0.87573494219563686,0.86104361176735555,0.84559600350182607,0.82940568545020188,0.81248687800568131,0.79485444141335326,0.77652386271804241,0.75751124216162014,0.73783327904172735,0.71750725704433116,0.69655102906299704,0.67498300151821056,0.65282211819052161,0.63008784358171099,0.60680014581859332,0.58297947911447212,0.55864676580365247,0.53382337796479062,0.50853111864922051,0.48279220273074486,0.45662923739371297,0.43006520227652051,0.40312342928797218,0.37582758211423822,0.3482016354343988,0.32026985386283752,0.29205677063697588,0.26358716606906762,0.23488604578098377,0.20597861874109838,0.17689027512257288,0.14764656400248127,0.11827317092136577,0.088795895322934901,0.059240627893714301,0.029633327822559667,6.123233995736766e-17,0.99982092266973777,0.99928375481633147,0.99838868882895127,0.99713604527965205,0.99552627280855899,0.99355994796318492,0.99123777499193733,0.98856058559188853,0.9855293386108992,0.98214511970420271,0.97840914094557274,0.97432274039321343,0.96988738161052723,0.96510465314193328,0.95997626794392277,0.9545040627715552,0.94868999752061645,0.94253615452567274,0.93604473781427278,0.92921807231756526,0.92205860303761356,0.91456889417170728,0.90675162819398258,0.89860960489468222,0.89014574037739658,0.88136306601464887,0.87226472736219385,0.86285398303242278,0.85313420352727676,0.84310887003108448,0.832781573163761,0.82215601169481001,0.81123599121859236,0.80002542279133448,0.78852832153036578,0.77674880517608547,0.76469109261717461,0.75235950237958116,0.73975845107982074,0.72689245184314366,0.71376611268713896,0.70038413487135076,0.68675131121350108,0.67287252437291889,0.65875274510179371,0.64439703046487706,0.62981052202827126,0.61499844401795356,0.59996610144869555,0.58471887822404711,0.56926223520806596,0.55360170826948452,0.537742906299012,0.52169150920048457,0.5054532658565809,0.48903399206983328,0.472439568479671,0.4556759384562416,0.43874910597176514,0.42166513345018403,0.40443013959587698,0.38705029720221712,0.36953183094075687,0.35188101513183306,0.33410417149738975,0.31620766689682389,0.29819791104666543,0.28008135422490688,0.26186448496080666,0.24355382771099193,0.22515594052269391,0.20667741268495293,0.18812486236863368,0.16950493425609656,0.15082429716137372,0.13208964164170223,0.11330767760126972,0.094485131888031135,0.075628745884456575,0.056745273093073867,0.037841476717670366,0.018924127241019079,6.123233995736766e-17,0.99936282565699164,0.99745211461025352,0.99427030177189735,0.98982144188093268,0.9841112043361161,0.97714686597115952,0.96893730178150728,0.95949297361449737,0.94882591683731965,0.9369497249997617,0.92387953251128674,0.90963199535451844,0.89422526985971129,0.87767898956725565,0.86001424020770056,0.84125353283118121,0.82142077512049161,0.80054124092436041,0.77864153804975511,0.75574957435425827,0.73189452218172546,0.70710678118654757,0.68141793959389119,0.6548607339452851,0.62746900738085198,0.59927766651134695,0.5703226369349641,0.54064081745559767,0.51027003306089957,0.47924898672005684,0.44761721006271254,0.41541501300188644,0.38268343236508984,0.34946417959909842,0.31579958761502502,0.28173255684142978,0.24730650055421563,0.2125652895529766,0.17755319625430321,0.14231483827328512,0.10689512156511279,0.071339183199232353,0.035692333838980496,6.123233995736766e-17,0.99991139885578173,0.99964561112345263,0.99920268390120681,0.99858269567676194,0.99778575631345012,0.99681200703075012,0.99566162037926342,0.99433480021013709,0.99283178163894159,0.9911528310040072,0.98929824581922854,0.98726835472134455,0.98506351741170306,0.98268412459252097,0.98013059789765078,0.97740338981786667,0.97450298362068122,0.97142989326470996,0.96818466330859665,0.96476786881451593,0.96118011524627134,0.95742203836200546,0.95349430410154234,0.94939760846838128,0.94513267740636353,0.94070026667103335,0.93610116169571611,0.93133617745233843,0.92640615830701256,0.92131197787041297,0.91605453884297094,0.91063477285491323,0.90505364030117574,0.89931213017121925,0.89341125987377767,0.88735207505657154,0.88113564942101663,0.87476308453196128,0.86823550962248719,0.86155408139380607,0.85471998381029035,0.84773442788967102,0.84059865148844315,0.83331391908251495,0.82588152154313943,0.81830277590816913,0.81057902514867386,0.80271163793096367,0.79470200837405758,0.78655155580264258,0.77826172449556597,0.76983398342990628,0.76126982602066662,0.75257076985613847,0.74373835642898145,0.7347741508630673,0.72567974163613613,0.71645674029831519,0.70710678118654757,0.69763152113498472,0.68803263918139135,0.67831183626961611,0.66847083494818038,0.65851137906503865,0.64843523345856524,0.63824418364482016,0.62794003550115185,0.61752461494619193,0.6069997676162977,0.59636735853850142,0.58562927180002344,0.57478741021440694,0.56384369498433606,0.55280006536119353,0.541658478301421,0.53042090811974252,0.51908934613931079,0.50766580033884001,0.49615229499678842,0.48455087033265021,0.4728635821454254,0.4610925014493259,0.44923971410678892,0.43730732045885545,0.42529743495298689,0.41321218576837826,0.40105371443884164,0.38882417547332071,0.37652573597410632,0.36416057525282231,0.35173088444424488,0.33923886611803039,0.32668673388841302,0.31407671202194892,0.3014110350433698,0.28869194733962117,0.27592170276215056,0.26310256422752143,0.25023680331641746,0.23732669987111499,0.22437454159148809,0.21138262362962451,0.19835324818311784,0.18528872408711453,0.17219136640518129,0.15906349601907227,0.14590743921746174,0.13272552728372197,0.11952009608281382,0.10629348564736542,0.093048039763014637,0.079786105553083103,0.066510033062662358,0.053222174842178692,0.039924885530517651,0.026620521437774818,0.013311440127714057,6.123233995736766e-17,0.99980232977006556,0.99920939722730184,0.99822143678193298,0.99683883901469583,0.99506215052242741,0.99289207370197341,0.99032946647250186,0.98737534193633336,0.98403086797842065,0.98029736680463619,0.97617631441905084,0.97166934004041006,0.96677822545803715,0.96150490432742042,0.95585146140576083,0.94982013172778268,0.9434132997221345,0.93663349826872788,0.92948340769738702,0.92196585472820669,0.9140838113540346,0.90584039366552316,0.89723886061921221,0.88828261274913189,0.87897519082243369,0.86932027443958249,0.85932168057966107,0.84898336209136394,0.83830940613027649,0.82730403254305729,0.81597159219916093,0.80431656527076478,0.79234355946157431,0.78005730818521213,0.767462668693908,0.75456462015823011,0.74136826169861814,0.72787881036949409,0.71410159909674964,0.70004207456942535,0.68570579508641316,0.67109842835903677,0.65622574927037558,0.64109363759222004,0.62570807566055986,0.61007514601052437,0.59420102897171045,0.5780920002248483,0.56175442832077083,0.54519477216266765,0.52841957845261944,0.51143547910342202,0.4942491886167229,0.47686750142850598,0.4592972892229778,0.44154549821591188,0.42361914640852805,0.40552532081299381,0.38727117465064109,0.36886392452400785,0.35031084756382425,0.33161927855206769,0.31279660702222717,0.29385027433792088,0.27478777075102523,0.25561663244047472,0.23634443853290488,0.21697880810631798,0.19752739717795251,0.17799789567755026,0.1583980244072149,0.1387355319890681,0.1190181918019048,0.099253798908061547,0.079450166971714253,0.059615125169819927,0.039756515096925606,0.019882187665070074,-1.6081226496766366e-16],"twiddles":[0.99785892323860348,0.065403129230143062,0.99144486137381038,0.13052619222005157,0.98078528040323043,0.19509032201612825,0.96592582628906831,0.25881904510252074,0.94693012949510569,0.32143946530316153,0.92387953251128674,0.38268343236508978,0.89687274153268837,0.44228869021900125,0.86602540378443871,0.49999999999999994,0.83146961230254524,0.55557023301960218,0.79335334029123528,0.60876142900872054,0.7518398074789775,0.65934581510006884,0.70710678118654757,0.70710678118654746,0.65934581510006895,0.75183980747897738,0.60876142900872066,0.79335334029123517,0.5555702330196024,0.83146961230254512,0.50000000000000011,0.8660254037844386,0.44228869021900147,0.89687274153268826,0.38268343236508984,0.92387953251128674,0.3214394653031617,0.94693012949510558,0.25881904510252096,0.9659258262890682,0.19509032201612833,0.98078528040323043,0.13052619222005171,0.99144486137381038,0.06540312923014327,0.99785892323860348,0,0,0.99144486137381038,0.13052619222005157,0.96592582628906831,0.25881904510252074,0.92387953251128674,0.38268343236508978,0.86602540378443871,0.49999999999999994,0.79335334029123528,0.60876142900872054,0,0,0.96592582628906831,0.25881904510252074,0.86602540378443871,0.49999999999999994,0.70710678118654757,0.70710678118654746,0.50000000000000011,0.8660254037844386,0.25881904510252096,0.9659258262890682,0,0,0.92387953251128674,0.38268343236508978,0.70710678118654757,0.70710678118654746,0.38268343236508984,0.92387953251128674,6.123233995736766e-17,1,-0.38268343236508973,0.92387953251128674,0,0,0.86602540378443871,0.49999999999999994,0,0.50000000000000011,0.8660254037844386,0,6.123233995736766e-17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9981755542233175,0.06037849742228605,0.99270887409805397,0.12053668025532305,0.98361990694714363,0.18025503781390573,0.97094181742605201,0.23931566428755774,0.9547208665085456,0.29750305385520293,0.93501624268541483,0.35460488704253557,0.91189984599209006,0.41041280545275677,0.88545602565320991,0.46472317204376851,0.85578127230144752,0.51733781417765679,0.82298386589365646,0.5680647467311557,0.78718348060905019,0.61671887262854308,0.74851074817110119,0.66312265824079519,0.70710678118654757,0.70710678118654746,0.6631226582407953,0.74851074817110108,0.61671887262854308,0.78718348060905019,0.56806474673115581,0.82298386589365635,0.51733781417765679,0.85578127230144752,0.46472317204376862,0.8854560256532098,0.41041280545275693,0.91189984599209006,0.35460488704253579,0.93501624268541472,0.29750305385520298,0.9547208665085456,0.23931566428755782,0.97094181742605201,0.18025503781390587,0.98361990694714352,0.12053668025532323,0.99270887409805397,0.060378497422286286,0.9981755542233175,0,0,0.99270887409805397,0.12053668025532305,0.97094181742605201,0.23931566428755774,0.93501624268541483,0.35460488704253557,0.88545602565320991,0.46472317204376851,0.82298386589365646,0.5680647467311557,0.74851074817110119,0.66312265824079519,0,0.97094181742605201,0.23931566428755774,0.88545602565320991,0.46472317204376851,0.74851074817110119,0.66312265824079519,0.56806474673115581,0.82298386589365635,0.35460488704253579,0.93501624268541472,0.12053668025532323,0.99270887409805397,0,0.93501624268541483,0.35460488704253557,0.74851074817110119,0.66312265824079519,0.46472317204376862,0.8854560256532098,0.12053668025532323,0.99270887409805397,-0.23931566428755749,0.97094181742605212,-0.5680647467311557,0.82298386589365646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.98982144188093268,0.14231483827328514,0.95949297361449737,0.28173255684142967,0.90963199535451844,0.41541501300188638,0.84125353283118121,0.54064081745559756,0.75574957435425827,0.6548607339452851,0,0.95949297361449737,0.28173255684142967,0.84125353283118121,0.54064081745559756,0.6548607339452851,0.75574957435425827,0.41541501300188644,0.90963199535451833,0.14231483827328512,0.98982144188093268,0,0.90963199535451844,0.41541501300188638,0.6548607339452851,0.75574957435425827,0.28173255684142978,0.95949297361449737,-0.142314838273285,0.9898214418809328,-0.54064081745559722,0.84125353283118143,0,0,0,0,0,0,0,0,0,0,0,0,0.99858269567676194,0.05322217484217865,0.99433480021013709,0.1062934856473654,0.98726835472134455,0.15906349601907205,0.97740338981786667,0.21138262362962432,0.96476786881451593,0.26310256422752126,0.94939760846838128,0.31407671202194876,0.93133617745233843,0.36416057525282219,0.91063477285491323,0.41321218576837815,0.88735207505657154,0.46109250144932579,0.86155408139380607,0.5076658003388399,0.83331391908251495,0.5528000653611933,0.80271163793096367,0.59636735853850131,0.76983398342990628,0.63824418364482005,0.7347741508630673,0.67831183626961611,0.69763152113498472,0.71645674029831508,0.65851137906503865,0.75257076985613847,0.61752461494619193,0.78655155580264247,0.57478741021440694,0.81830277590816902,0.53042090811974252,0.84773442788967091,0.48455087033265021,0.87476308453196128,0.43730732045885545,0.89931213017121925,0.38882417547332071,0.92131197787041297,0.33923886611803039,0.94070026667103324,0.28869194733962117,0.95742203836200546,0.23732669987111499,0.97142989326470996,0.18528872408711453,0.98268412459252086,0.13272552728372197,0.9911528310040072,0.079786105553083103,0.99681200703075012,0.026620521437774818,0.99964561112345263,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} +{"lengths":[80,30,85,41,64,21,113,71,16,60],"offsets":[0,80,110,195,236,300,321,434,505,521],"cosines":[0.99980724048206482,0.9992290362407229,0.99826561018471593,0.99691733373312796,0.99518472667219693,0.99306845695492629,0.99056934044357725,0.98768834059513777,0.9844265680898916,0.98078528040323043,0.97676588132087239,0.97236992039767656,0.96759909236025976,0.96245523645364728,0.95694033573220882,0.95105651629515353,0.94480604646687805,0.93819133592248416,0.93121493475880357,0.92387953251128674,0.91618795711713596,0.90814317382508125,0.89974828405222151,0.8910065241883679,0.88192126434835505,0.87249600707279718,0.86273438597779184,0.85264016435409229,0.84221723371628654,0.83146961230254524,0.82040144352551359,0.80901699437494745,0.79732065377270711,0.78531693088074495,0.77301045336273699,0.76040596560003093,0.74750832686259683,0.73432250943568556,0.72085359670291882,0.70710678118654757,0.69308736254563585,0.67880074553294178,0.66425243791128175,0.64944804833018366,0.63439328416364549,0.61909394930983397,0.60355594195357143,0.58778525229247314,0.57178796022761225,0.55557023301960229,0.53913832291100039,0.52249856471594891,0.50565737337798455,0.48862124149695496,0.47139673682599781,0.45399049973954686,0.43640924067334202,0.41865973753742813,0.40074883310314113,0.38268343236508984,0.36447049987914959,0.34611705707749302,0.32763017956169366,0.30901699437494745,0.29028467725446233,0.27144044986507432,0.25249157701515812,0.23344536385590547,0.21430915306505069,0.19509032201612833,0.17579627993435468,0.15643446504023092,0.13701234168196799,0.1175373974578377,0.09801714032956077,0.078459095727844999,0.058870803651188984,0.039259815759068666,0.019633692460628474,6.123233995736766e-17,0.99862953475457383,0.99452189536827329,0.98768834059513777,0.97814760073380569,0.96592582628906831,0.95105651629515353,0.93358042649720174,0.91354545764260087,0.8910065241883679,0.86602540378443871,0.83867056794542405,0.80901699437494745,0.7771459614569709,0.74314482547739436,0.70710678118654757,0.66913060635885824,0.6293203910498375,0.58778525229247314,0.54463903501502708,0.50000000000000011,0.45399049973954686,0.40673664307580037,0.35836794954530038,0.30901699437494745,0.25881904510252096,0.20791169081775945,0.15643446504023092,0.10452846326765368,0.052335956242943966,6.123233995736766e-17,0.99982925045805271,0.99931706014302291,0.99846360396743394,0.99726917338578802,0.99573417629503447,0.99385913689527372,0.99164469551074275,0.98909160837114596,0.98620074735340257,0.98297309968390179,0.97940976760136589,0.9755119679804366,0.97128103191611381,0.96671840426918743,0.96182564317281904,0.95660441950044084,0.95105651629515353,0.94518382816081958,0.93898836061505653,0.93247222940435581,0.92563765978155632,0.91848698574592302,0.91102264924608833,0.90324719934612885,0.89516329135506234,0.88677368592006189,0.87808124808369792,0.86908894630552835,0.85979985144837245,0.85021713572961422,0.84034407163789271,0.8301840308155507,0.81974048290722112,0.80901699437494745,0.79801722728023949,0.78674493803348333,0.7752039761111299,0.763398282741103,0.75133188955687336,0.73900891722065909,0.72643357401622421,0.71361015441175235,0.70054303759329095,0.68723668596926268,0.67369564364655721,0.6599245348787226,0.64592806248678736,0.63171100625325105,0.61727822128979293,0.60263463637925641,0.58778525229247314,0.5727351400805053,0.55748943934288553,0.54205335647244945,0.52643216287735584,0.51063119318090699,0.49465584339977892,0.4785115691012865,0.46220388354031322,0.44573835577653831,0.4291206087726091,0.41235631747390344,0.39545120687054258,0.37841105004231035,0.36124166618715303,0.34394891863392829,0.32653871284008329,0.30901699437494745,0.29138974688932473,0.273662990072083,0.25584277759443558,0.23793519504261884,0.2199463578396687,0.20188240915701039,0.18374951781657031,0.16555387618413001,0.14730169805463758,0.12899921653020341,0.11065268189150082,0.092268359463302016,0.07385252747487403,0.05541147491597008,0.036951499389145069,0.018478904959129915,6.123233995736766e-17,0.99926618105081,0.99706580118374044,0.99340208975967503,0.98828042378034853,0.98170831999685493,0.97369542387777908,0.96425349545314099,0.95339639205493054,0.94114004797956152,0.92750245110209462,0.91250361647654998,0.8961655569610556,0.87851225091094243,0.85956960698720108,0.83936542613194998,0.81792936076671763,0.7952928712734264,0.77148917982194298,0.74655322161196258,0.72052159360078705,0.69343250079224172,0.66532570016556525,0.6362424423265598,0.60622541096663796,0.57531866021862055,0.54356755000122114,0.51101867944711032,0.47771981851226275,0.44371983786695968,0.40906863717133979,0.37381707184076884,0.3380168784085027,0.30172059859519218,0.26498150219666167,0.22785350890313749,0.19039110916466842,0.15264928421887447,0.1146834253984003,0.076549252836495663,0.038302733690035271,-1.6081226496766366e-16,0.99969881869620425,0.99879545620517241,0.99729045667869021,0.99518472667219693,0.99247953459870997,0.98917650996478101,0.98527764238894122,0.98078528040323043,0.97570213003852857,0.97003125319454397,0.96377606579543984,0.95694033573220882,0.94952818059303667,0.94154406518302081,0.93299279883473896,0.92387953251128674,0.91420975570353069,0.90398929312344334,0.89322430119551532,0.88192126434835505,0.87008699110871146,0.85772861000027212,0.84485356524970712,0.83146961230254524,0.81758481315158371,0.80320753148064494,0.78834642762660623,0.77301045336273699,0.75720884650648457,0.74095112535495922,0.724247082951467,0.70710678118654757,0.68954054473706694,0.67155895484701833,0.65317284295377687,0.63439328416364549,0.61523159058062682,0.59569930449243347,0.57580819141784534,0.55557023301960229,0.53499761988709726,0.51410274419322166,0.49289819222978409,0.47139673682599781,0.4496113296546066,0.4275550934302822,0.40524131400498986,0.38268343236508984,0.35989503653498828,0.33688985339222005,0.31368174039889157,0.29028467725446233,0.26671275747489842,0.24298017990326398,0.21910124015686977,0.19509032201612833,0.17096188876030136,0.14673047445536175,0.12241067519921628,0.09801714032956077,0.073564563599667454,0.049067674327418126,0.024541228522912264,6.123233995736766e-17,0.99720379718118013,0.98883082622512852,0.97492791218182362,0.95557280578614068,0.93087374864420425,0.90096886790241915,0.8660254037844386,0.82623877431599491,0.7818314824680298,0.73305187182982634,0.68017273777091936,0.62348980185873359,0.56332005806362195,0.49999999999999989,0.43388373911755818,0.36534102436639498,0.2947551744109041,0.22252093395631445,0.14904226617617444,0.074730093586424171,6.123233995736766e-17,0.99990338470638107,0.99961355749455405,0.99913057436800123,0.99845452865383599,0.99758555098476864,0.9965238092738643,0.9952695086820974,0.99382289157870785,0.9921842374943679,0.99035386306716877,0.98833212198143583,0.98611940489938621,0.98371613938564106,0.9811227898246071,0.97833985733074269,0.975367879651728,0.97220743106455521,0.96885912226456061,0.96532360024742003,0.96160154818412902,0.95769368528899346,0.9536007666806553,0.94932358323618105,0.94486296143823911,0.94021976321539902,0.93539488577558016,0.93038926143268352,0.92520385742644029,0.91983967573551173,0.91429775288387605,0.90857915974054027,0.90268500131261564,0.89661641653179647,0.89037457803428377,0.88396069193419569,0.87737599759050977,0.87062176736758112,0.86369930638928183,0.8566099522868118,0.84935507494022766,0.84193607621373923,0.83435438968482722,0.82661148036723175,0.8187088444278674,0.81064800889771726,0.80243053137676457,0.79405799973301627,0.78553203179567854,0.77685427504254267,0.76802640628164209,0.75905013132724153,0.74992718467022146,0.74065932914292176,0.73124835557850854,0.72169608246493022,0.71200435559352981,0.70217504770238204,0.69221005811442282,0.6821113123704422,0.67188076185701062,0.66152038342941155,0.65103217902965238,0.64041817529962863,0.62968042318951389,0.61882099756145403,0.60784199678864015,0.59674554234983879,0.58553377841945764,0.57420887145322486,0.56277300976956379,0.55122840312674337,0.53957728229588453,0.52782189862990736,0.51596452362850098,0.50400744849919987,0.4919529837146529,0.47980345856616935,0.46756122071362805,0.45522863573183869,0.4428080866534394,0.43030197350842236,0.41771271286037459,0.40504273733952406,0.39229449517268095,0.37947044971016541,0.36657307894981289,0.35360487505814908,0.34056834388882778,0.32746600449842223,0.31430038865966692,0.30107404037224184,0.28778951537119346,0.27444938063308905,0.26105621387999778,0.24761260308139635,0.23412114595409397,0.22058444946027386,0.2070051293037492,0.1933858094245279,0.17972912149178802,0.1660377043953585,0.15231420373580504,0.13856127131321905,0.12478156461480873,0.11097774630139143,0.097152483692885747,0.083308448252904677,0.069448315072545827,0.055574762353482812,0.041690470890454627,0.027798123553254055,0.01390040476831517,6.123233995736766e-17,0.999755276685243,0.9990212265199736,0.99779820878257108,0.99608682207494481,0.99388790402955074,0.99120253089941457,0.98803201703136401,0.98437791422272558,0.98024201096180286,0.97562633155250678,0.97053313512356731,0.96496491452280997,0.95892439509704008,0.95241453335813131,0.94543851553597025,0.93799975601896746,0.93010189568289625,0.92174880010887839,0.91294455769138871,0.90369347763720387,0.89400008785627572,0.88386913274556111,0.87330557086689276,0.86231457252002774,0.85090151721206209,0.83907199102444863,0.82683178387890877,0.8141868867035742,0.80114348850074812,0.78770797331771836,0.77388691712210689,0.75968708458328493,0.74511542576142853,0.73017907270583426,0.71488533596416248,0.69924170100431415,0.68325582455069345,0.6669355308366508,0.65028880777493692,0.63332380304804703,0.61604882012036422,0.59847231417405733,0.58060288797072068,0.56244928764078062,0.54402039840273231,0.52532524021429883,0.50637296335764392,0.48717284396079646,0.46773427945748181,0.44806678398757854,0.42817998374045535,0.4080836122434649,0.38778750559790215,0.3673015976647569,0.34663591520261949,0.3258005729601175,0.30480576872528664,0.28366177833429679,0.26237895064197908,0.24096770245661442,0.21943851344146065,0.19780192098551741,0.17606851504603618,0.15424893296530237,0.13235385426422255,0.11039399541526972,0.08838010459734251,0.066322956435104038,0.044233346725379007,0.022122087153186896,6.123233995736766e-17,0.99518472667219693,0.98078528040323043,0.95694033573220882,0.92387953251128674,0.88192126434835505,0.83146961230254524,0.77301045336273699,0.70710678118654757,0.63439328416364549,0.55557023301960229,0.47139673682599781,0.38268343236508984,0.29028467725446233,0.19509032201612833,0.09801714032956077,6.123233995736766e-17,0.99965732497555726,0.99862953475457383,0.99691733373312796,0.99452189536827329,0.99144486137381038,0.98768834059513777,0.98325490756395462,0.97814760073380569,0.97236992039767656,0.96592582628906831,0.95881973486819305,0.95105651629515353,0.94264149109217843,0.93358042649720174,0.92387953251128674,0.91354545764260087,0.90258528434986063,0.8910065241883679,0.87881711266196538,0.86602540378443871,0.85264016435409229,0.83867056794542405,0.8241261886220157,0.80901699437494745,0.79335334029123528,0.7771459614569709,0.76040596560003093,0.74314482547739436,0.72537437101228774,0.70710678118654757,0.68835457569375402,0.66913060635885824,0.64944804833018366,0.6293203910498375,0.60876142900872066,0.58778525229247314,0.56640623692483294,0.54463903501502708,0.52249856471594891,0.50000000000000011,0.47715876025960857,0.45399049973954686,0.43051109680829525,0.40673664307580037,0.38268343236508984,0.35836794954530038,0.33380685923377112,0.30901699437494745,0.28401534470392276,0.25881904510252096,0.23344536385590547,0.20791169081775945,0.18223552549214767,0.15643446504023092,0.13052619222005171,0.10452846326765368,0.078459095727844999,0.052335956242943966,0.026176948307873361,6.123233995736766e-17],"twiddles":[0.99691733373312796,0.078459095727844944,0.98768834059513777,0.15643446504023087,0.97236992039767656,0.23344536385590539,0.95105651629515353,0.3090169943749474,0.92387953251128674,0.38268343236508978,0.8910065241883679,0.45399049973954675,0.85264016435409229,0.5224985647159488,0.80901699437494745,0.58778525229247314,0.76040596560003093,0.64944804833018366,0,0,0.98768834059513777,0.15643446504023087,0.95105651629515353,0.3090169943749474,0.8910065241883679,0.45399049973954675,0.80901699437494745,0.58778525229247314,0.70710678118654757,0.70710678118654746,0.58778525229247314,0.80901699437494745,0.45399049973954686,0.8910065241883679,0.30901699437494745,0.95105651629515353,0.15643446504023092,0.98768834059513777,0,0,0.97236992039767656,0.23344536385590539,0.8910065241883679,0.45399049973954675,0.76040596560003093,0.64944804833018366,0.58778525229247314,0.80901699437494745,0.38268343236508984,0.92387953251128674,0.15643446504023092,0.98768834059513777,-0.078459095727844874,0.99691733373312796,-0.30901699437494734,0.95105651629515364,-0.5224985647159488,0.85264016435409229,0,0,0.95105651629515353,0.3090169943749474,0.80901699437494745,0.58778525229247314,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0.58778525229247314,0.80901699437494745,-0.30901699437494734,0.95105651629515364,0,0,0,0,0,0,0.97814760073380569,0.20791169081775931,0.91354545764260087,0.40673664307580015,0.80901699437494745,0.58778525229247314,0.66913060635885824,0.74314482547739424,0.50000000000000011,0.8660254037844386,0.30901699437494745,0.95105651629515353,0.10452846326765368,0.99452189536827329,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0.99726917338578802,0.073852527474873961,0.98909160837114596,0.1473016980546375,0.9755119679804366,0.21994635783966859,0.95660441950044084,0.29138974688932462,0.93247222940435581,0.36124166618715292,0.90324719934612885,0.42912060877260894,0.86908894630552835,0.49465584339977881,0.8301840308155507,0.55748943934288553,0,0.98909160837114596,0.1473016980546375,0.95660441950044084,0.29138974688932462,0.90324719934612885,0.42912060877260894,0.8301840308155507,0.55748943934288553,0.73900891722065909,0.67369564364655721,0.63171100625325105,0.77520397611112979,0.51063119318090699,0.85979985144837234,0.37841105004231035,0.92563765978155621,0,0.9755119679804366,0.21994635783966859,0.90324719934612885,0.42912060877260894,0.78674493803348333,0.61727822128979282,0.63171100625325105,0.77520397611112979,0.44573835577653831,0.89516329135506234,0.23793519504261904,0.97128103191611381,0.018478904959130137,0.99982925045805271,-0.20188240915701006,0.97940976760136589,0,0.95660441950044084,0.29138974688932462,0.8301840308155507,0.55748943934288553,0.63171100625325105,0.77520397611112979,0.37841105004231035,0.92563765978155621,0.092268359463302016,0.99573417629503447,-0.20188240915701006,0.97940976760136589,-0.47851156910128639,0.87808124808369803,-0.71361015441175224,0.70054303759329106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99518472667219693,0.098017140329560604,0.98078528040323043,0.19509032201612825,0.95694033573220882,0.29028467725446233,0.92387953251128674,0.38268343236508978,0.88192126434835505,0.47139673682599764,0.83146961230254524,0.55557023301960218,0.77301045336273699,0.63439328416364549,0,0,0.98078528040323043,0.19509032201612825,0.92387953251128674,0.38268343236508978,0.83146961230254524,0.55557023301960218,0.70710678118654757,0.70710678118654746,0.55557023301960229,0.83146961230254524,0.38268343236508984,0.92387953251128674,0.19509032201612833,0.98078528040323043,0,0,0.95694033573220882,0.29028467725446233,0.83146961230254524,0.55557023301960218,0.63439328416364549,0.77301045336273699,0.38268343236508984,0.92387953251128674,0.09801714032956077,0.99518472667219682,-0.19509032201612819,0.98078528040323043,-0.4713967368259977,0.88192126434835505,0,0,0.92387953251128674,0.38268343236508978,0,0,0.70710678118654757,0.70710678118654746,0,0,0.38268343236508984,0.92387953251128674,0,0,0,0,0,0,0.95557280578614068,0.29475517441090421,0.82623877431599491,0.56332005806362206,0.62348980185873359,0.7818314824680298,0,0.82623877431599491,0.56332005806362206,0.36534102436639498,0.93087374864420425,-0.22252093395631434,0.97492791218182362,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.92387953251128674,0.38268343236508978,0,0,0.70710678118654757,0.70710678118654746,0,0,0.38268343236508984,0.92387953251128674,0,0,0,0,0,0,0.99452189536827329,0.10452846326765346,0.97814760073380569,0.20791169081775931,0.95105651629515353,0.3090169943749474,0.91354545764260087,0.40673664307580015,0.86602540378443871,0.49999999999999994,0.80901699437494745,0.58778525229247314,0.74314482547739436,0.66913060635885813,0,0.97814760073380569,0.20791169081775931,0.91354545764260087,0.40673664307580015,0.80901699437494745,0.58778525229247314,0.66913060635885824,0.74314482547739424,0.50000000000000011,0.8660254037844386,0.30901699437494745,0.95105651629515353,0.10452846326765368,0.99452189536827329,0,0.95105651629515353,0.3090169943749474,0.80901699437494745,0.58778525229247314,0.58778525229247314,0.80901699437494745,0.30901699437494745,0.95105651629515353,6.123233995736766e-17,1,-0.30901699437494734,0.95105651629515364,-0.58778525229247303,0.80901699437494745,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/small.json b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/small.json index 7e5210a3a308..4e069a37b2ec 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/small.json +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/fixtures/c/fftpack/small.json @@ -1 +1 @@ -{"lengths":[5,4,8,10,10,9,4,10,8,5],"offsets":[0,5,9,17,27,37,46,50,60,68],"cosines":[0.95105651629515353,0.80901699437494745,0.58778525229247314,0.30901699437494745,6.123233995736766e-17,0.92387953251128674,0.70710678118654757,0.38268343236508984,6.123233995736766e-17,0.98078528040323043,0.92387953251128674,0.83146961230254524,0.70710678118654757,0.55557023301960229,0.38268343236508984,0.19509032201612833,6.123233995736766e-17,0.98768834059513777,0.95105651629515353,0.8910065241883679,0.80901699437494745,0.70710678118654757,0.58778525229247314,0.45399049973954686,0.30901699437494745,0.15643446504023092,6.123233995736766e-17,0.98768834059513777,0.95105651629515353,0.8910065241883679,0.80901699437494745,0.70710678118654757,0.58778525229247314,0.45399049973954686,0.30901699437494745,0.15643446504023092,6.123233995736766e-17,0.98480775301220802,0.93969262078590843,0.86602540378443871,0.76604444311897801,0.64278760968653936,0.50000000000000011,0.34202014332566882,0.17364817766693041,6.123233995736766e-17,0.92387953251128674,0.70710678118654757,0.38268343236508984,6.123233995736766e-17,0.98768834059513777,0.95105651629515353,0.8910065241883679,0.80901699437494745,0.70710678118654757,0.58778525229247314,0.45399049973954686,0.30901699437494745,0.15643446504023092,6.123233995736766e-17,0.98078528040323043,0.92387953251128674,0.83146961230254524,0.70710678118654757,0.55557023301960229,0.38268343236508984,0.19509032201612833,6.123233995736766e-17,0.95105651629515353,0.80901699437494745,0.58778525229247314,0.30901699437494745,6.123233995736766e-17],"twiddles":[0,0,0,0,0,0,0,0,0,0.70710678118654757,0.70710678118654746,0,0,0,0,0,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0,0,0,0,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0,0,0,0,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0,0,0,0,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0,0,0,0,0,0.70710678118654757,0.70710678118654746,0,0,0,0,0,0,0,0,0,0,0]} +{"lengths":[15,2,13,8,15,5,4,6,13,6],"offsets":[0,15,17,30,38,53,58,62,68,81],"cosines":[0.99452189536827329,0.97814760073380569,0.95105651629515353,0.91354545764260087,0.86602540378443871,0.80901699437494745,0.74314482547739436,0.66913060635885824,0.58778525229247314,0.50000000000000011,0.40673664307580037,0.30901699437494745,0.20791169081775945,0.10452846326765368,6.123233995736766e-17,0.70710678118654757,6.123233995736766e-17,0.99270887409805397,0.97094181742605201,0.93501624268541483,0.88545602565320991,0.82298386589365646,0.74851074817110119,0.6631226582407953,0.56806474673115581,0.46472317204376862,0.35460488704253579,0.23931566428755782,0.12053668025532323,6.123233995736766e-17,0.98078528040323043,0.92387953251128674,0.83146961230254524,0.70710678118654757,0.55557023301960229,0.38268343236508984,0.19509032201612833,6.123233995736766e-17,0.99452189536827329,0.97814760073380569,0.95105651629515353,0.91354545764260087,0.86602540378443871,0.80901699437494745,0.74314482547739436,0.66913060635885824,0.58778525229247314,0.50000000000000011,0.40673664307580037,0.30901699437494745,0.20791169081775945,0.10452846326765368,6.123233995736766e-17,0.95105651629515353,0.80901699437494745,0.58778525229247314,0.30901699437494745,6.123233995736766e-17,0.92387953251128674,0.70710678118654757,0.38268343236508984,6.123233995736766e-17,0.96592582628906831,0.86602540378443871,0.70710678118654757,0.50000000000000011,0.25881904510252096,6.123233995736766e-17,0.99270887409805397,0.97094181742605201,0.93501624268541483,0.88545602565320991,0.82298386589365646,0.74851074817110119,0.6631226582407953,0.56806474673115581,0.46472317204376862,0.35460488704253579,0.23931566428755782,0.12053668025532323,6.123233995736766e-17,0.96592582628906831,0.86602540378443871,0.70710678118654757,0.50000000000000011,0.25881904510252096,6.123233995736766e-17],"twiddles":[0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.70710678118654757,0.70710678118654746,0,0,0,0,0,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.50000000000000011,0.8660254037844386,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.50000000000000011,0.8660254037844386,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/test.js b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/test.js index f76560a784ca..ba823af6d8a1 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/test.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/cosqi/test/test.js @@ -117,9 +117,9 @@ tape( 'the function correctly initializes twiddle factors (small sequence length workspace = new Float64Array( ( 3*N ) + 34 ); cosqi( N, workspace, 1, 0 ); - t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); - for ( i = 0; i < N-1; i++ ) { - y = workspace[ (2*N) + i + 1 ]; + t.strictEqual( workspace[ (2*N) - 1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ (2*N) + i ]; e = expected[ off+i ]; t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); } @@ -185,9 +185,9 @@ tape( 'the function correctly initializes twiddle factors (medium sequence lengt workspace = new Float64Array( ( 3*N ) + 34 ); cosqi( N, workspace, 1, 0 ); - t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); - for ( i = 0; i < N-1; i++ ) { - y = workspace[ (2*N) + i + 1 ]; + t.strictEqual( workspace[ (2*N) - 1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ (2*N) + i ]; e = expected[ off+i ]; t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); } @@ -253,9 +253,9 @@ tape( 'the function correctly initializes twiddle factors (large sequence length workspace = new Float64Array( ( 3*N ) + 34 ); cosqi( N, workspace, 1, 0 ); - t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); - for ( i = 0; i < N-1; i++ ) { - y = workspace[ (2*N) + i + 1 ]; + t.strictEqual( workspace[ (2*N) - 1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ (2*N) + i ]; e = expected[ off+i ]; t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); } @@ -307,8 +307,8 @@ tape( 'the function correctly handles stride and offset parameters', function te expected = new Float64Array( ( 3*N ) + 34 ); cosqi( N, expected, 1, 0 ); - for ( i = 0; i < N-1; i++ ) { - t.strictEqual( workspace[ offset + ( ( (2*N)+i+1 ) * stride ) ], expected[ (2*N)+i+1 ], 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + t.strictEqual( workspace[ offset + ( ( (2*N)+i ) * stride ) ], expected[ (2*N)+i ], 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/README.md b/lib/node_modules/@stdlib/fft/base/fftpack/costi/README.md new file mode 100644 index 000000000000..66a10f8c654e --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/README.md @@ -0,0 +1,173 @@ + + +# costi + +> Initialize a workspace array for performing a cosine transform. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var costi = require( '@stdlib/fft/base/fftpack/costi' ); +``` + +#### costi( N, workspace, strideW, offsetW ) + +Initializes a workspace array for performing a cosine transform. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); + +var N = 9; +var workspace = new Float64Array( ( 3*N ) + 34 ); + +var out = costi( N, workspace, 1, 0 ); +// returns + +var bool = ( out === workspace ); +// returns true + +var cosineTable = workspace.slice( 0, N ); +// returns [ 0, ~0.765, ~1.414, ~1.848, 0, ~0.765, ~1.414, ~1.848, 0 ] + +var twiddleFactors = workspace.slice( (2*N)-1, (3*N)-2 ); +// returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] + +var factors = workspace.slice( (3*N)-2, (3*N)+2 ); +// returns [ 8, 2, 2, 4 ] +``` + +The function accepts the following arguments: + +- **N**: length of the sequence to transform. +- **workspace**: workspace array. +- **strideW**: stride length for `workspace`. +- **offsetW**: starting index for `workspace`. + +
+ + + + + +
+ +## Notes + +- The workspace array is divided into four sections: + + ```text + size = N N-1 N-1 2+ceil(log2(N-1)/2) + ↓ ↓ ↓ ↓ + | sine / cosine table | scratch / workspace | twiddle factors | radix factor table | + ↑ ↑ ↑ ↑ + i = 0 ... N ... 2N-1 ... 3N-2 ... + ``` + + - **sine/cosine table**: a table of precomputed sine/cosine coefficients used by cosine transforms. + - **scratch/workspace**: used as a scratch space when performing transforms. This section is not updated during initialization. + - **twiddle factors**: a table of reusable complex-exponential constants stored as cosine/sine pairs. + - **radix factor table**: a table containing the sequence length `N-1`, the number of factors into which `N-1` was decomposed, and the individual integer radix factors. + +- In general, a workspace array should have `3N + 34` indexed elements (as `log2(N-1)/2 ≤ 32` for all `2^64`). During initialization, only the sections for storing the cosine coefficients, twiddle factors, and the factorization of `N-1` are updated. + +- The radix factor table is comprised as follows: + + ```text + | sequence_length | number_of_factors | integer_factors | + ``` + +
+ + + +
+ +## Examples + + + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); +var zeroTo = require( '@stdlib/array/zero-to' ); +var logEach = require( '@stdlib/console/log-each' ); +var costi = require( '@stdlib/fft/base/fftpack/costi' ); + +var N = 9; +var workspace = new Float64Array( ( 3*N ) + 34 ); + +costi( N, workspace, 1, 0 ); +console.log( 'Sequence length: %d', N ); + +console.log( 'Sine/Cosine table:' ); +var idx = zeroTo( N, 'generic' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( 0, N ) ); + +console.log( 'Twiddle factors:' ); +idx = zeroTo( N-1, 'generic' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( (2*N)-1, (3*N)-2 ) ); + +console.log( 'Factorization:' ); +var nf = workspace[ (3*N)-1 ]; + +console.log( ' number of factors: %d', nf ); +idx = zeroTo( nf, 'generic' ); +logEach( ' factor[ %d ]: %d', idx, workspace.slice( 3*N, (3*N)+nf ) ); +``` + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/benchmark/benchmark.js b/lib/node_modules/@stdlib/fft/base/fftpack/costi/benchmark/benchmark.js new file mode 100644 index 000000000000..10d37c7de95a --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/benchmark/benchmark.js @@ -0,0 +1,101 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var format = require( '@stdlib/string/format' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var Float64Array = require( '@stdlib/array/float64' ); +var pkg = require( './../package.json' ).name; +var costi = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} N - sequence length +* @returns {Function} benchmark function +*/ +function createBenchmark( N ) { + var workspace = new Float64Array( ( 3*N ) + 34 ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + costi( N, workspace, 1, 0 ); + if ( isnan( workspace[ (2*N)-1 ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( workspace[ (2*N)-1 ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var lengths; + var N; + var f; + var i; + + lengths = [ + 9, + 17, + 33, + 65, + 129, + 257, + 513, + 1025 + ]; + + for ( i = 0; i < lengths.length; i++ ) { + N = lengths[ i ]; + f = createBenchmark( N ); + bench( format( '%s:N=%d', pkg, N ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/docs/repl.txt b/lib/node_modules/@stdlib/fft/base/fftpack/costi/docs/repl.txt new file mode 100644 index 000000000000..65db9bb0b311 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/docs/repl.txt @@ -0,0 +1,60 @@ + +{{alias}}( N, workspace, strideW, offsetW ) + Initializes a workspace array for performing a cosine transform. + + The workspace array is divided into four sections: + + 1. sine/cosine table: the section ranges from indices 0 to N-1 and is used + to store a table of precomputed sine and cosine coefficients used by cosine + transforms. + + 2. scratch/workspace: the section ranges from indices N to 2N-2 and is used + while performing transforms. This section is not updated during + initialization. + + 3. twiddle factors: the section ranges from indices 2N-1 to 3N-3 and stores + a table of reusable complex exponential constants as cosine/sine pairs. + + 4. radix factor table: the section starts at index 3N-2 and stores the + sequence length N-1, the number of factors into which N-1 was decomposed, + and the individual integer radix factors. + + Any remaining array space remains as unused storage. + + Parameters + ---------- + N: integer + Length of the sequence. + + workspace: ArrayLikeObject + Workspace array. + + strideW: integer + Stride length for `workspace`. + + offsetW: integer + Starting index for `workspace`. + + Returns + ------- + out: ArrayLikeObject + Workspace array. + + Examples + -------- + > var N = 9; + > var workspace = new {{alias:@stdlib/array/float64}}( ( 3*N ) + 34 ); + > var out = {{alias}}( N, workspace, 1, 0 ) + + > var bool = ( out === workspace ) + true + > var cosineTable = workspace.slice( 0, N ) + [ 0, ~0.765, ~1.414, ~1.848, 0, ~0.765, ~1.414, ~1.848, 0 ] + > var twiddleFactors = workspace.slice( (2*N)-1, (3*N)-2 ) + [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] + > var factors = workspace.slice( (3*N)-2, (3*N)+2 ) + [ 8, 2, 2, 4 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/docs/types/index.d.ts b/lib/node_modules/@stdlib/fft/base/fftpack/costi/docs/types/index.d.ts new file mode 100644 index 000000000000..c07e61126440 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/docs/types/index.d.ts @@ -0,0 +1,64 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection } from '@stdlib/types/array'; + +/** +* Initializes a workspace array for performing a cosine transform. +* +* ## Notes +* +* - The workspace array should have a length of at least `( 3*N ) + 34` elements. +* +* @param N - length of the sequence +* @param workspace - workspace array +* @param strideW - stride length for `workspace` +* @param offsetW - starting index for `workspace` +* @returns workspace array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var N = 9; +* var workspace = new Float64Array( ( 3*N ) + 34 ); +* +* var out = costi( N, workspace, 1, 0 ); +* // returns +* +* var bool = ( out === workspace ); +* // returns true +* +* var cosineTable = workspace.slice( 0, N ); +* // returns [ 0, ~0.765, ~1.414, ~1.848, 0, ~0.765, ~1.414, ~1.848, 0 ] +* +* var twiddleFactors = workspace.slice( (2*N)-1, (3*N)-2 ); +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] +* +* var factors = workspace.slice( (3*N)-2, (3*N)+2 ); +* // returns [ 8, 2, 2, 4 ] +*/ +declare function costi>( N: number, workspace: T, strideW: number, offsetW: number ): T; + + +// EXPORTS // + +export = costi; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/docs/types/test.ts b/lib/node_modules/@stdlib/fft/base/fftpack/costi/docs/types/test.ts new file mode 100644 index 000000000000..519ce5795600 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/docs/types/test.ts @@ -0,0 +1,94 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import costi = require( './index' ); + + +// TESTS // + +// The function returns a collection... +{ + const workspace = new Float64Array( ( 3*9 ) + 34 ); + + costi( 9, workspace, 1, 0 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const workspace = new Float64Array( ( 3*9 ) + 34 ); + + costi( '9', workspace, 1, 0 ); // $ExpectError + costi( true, workspace, 1, 0 ); // $ExpectError + costi( false, workspace, 1, 0 ); // $ExpectError + costi( null, workspace, 1, 0 ); // $ExpectError + costi( void 0, workspace, 1, 0 ); // $ExpectError + costi( [], workspace, 1, 0 ); // $ExpectError + costi( {}, workspace, 1, 0 ); // $ExpectError + costi( ( x: number ): number => x, workspace, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a collection... +{ + costi( 9, '50', 1, 0 ); // $ExpectError + costi( 9, 50, 1, 0 ); // $ExpectError + costi( 9, true, 1, 0 ); // $ExpectError + costi( 9, false, 1, 0 ); // $ExpectError + costi( 9, null, 1, 0 ); // $ExpectError + costi( 9, void 0, 1, 0 ); // $ExpectError + costi( 9, {}, 1, 0 ); // $ExpectError + costi( 9, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const workspace = new Float64Array( ( 3*9 ) + 34 ); + + costi( 9, workspace, '1', 0 ); // $ExpectError + costi( 9, workspace, true, 0 ); // $ExpectError + costi( 9, workspace, false, 0 ); // $ExpectError + costi( 9, workspace, null, 0 ); // $ExpectError + costi( 9, workspace, void 0, 0 ); // $ExpectError + costi( 9, workspace, [], 0 ); // $ExpectError + costi( 9, workspace, {}, 0 ); // $ExpectError + costi( 9, workspace, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const workspace = new Float64Array( ( 3*9 ) + 34 ); + + costi( 9, workspace, 1, '0' ); // $ExpectError + costi( 9, workspace, 1, true ); // $ExpectError + costi( 9, workspace, 1, false ); // $ExpectError + costi( 9, workspace, 1, null ); // $ExpectError + costi( 9, workspace, 1, void 0 ); // $ExpectError + costi( 9, workspace, 1, [] ); // $ExpectError + costi( 9, workspace, 1, {} ); // $ExpectError + costi( 9, workspace, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const workspace = new Float64Array( ( 3*9 ) + 34 ); + + costi(); // $ExpectError + costi( 9 ); // $ExpectError + costi( 9, workspace ); // $ExpectError + costi( 9, workspace, 1 ); // $ExpectError + costi( 9, workspace, 1, 0, 123 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/examples/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/costi/examples/index.js new file mode 100644 index 000000000000..355a9b5e8e24 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/examples/index.js @@ -0,0 +1,45 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var Float64Array = require( '@stdlib/array/float64' ); +var zeroTo = require( '@stdlib/array/zero-to' ); +var logEach = require( '@stdlib/console/log-each' ); +var costi = require( './../lib' ); + +var N = 9; +var workspace = new Float64Array( ( 3*N ) + 34 ); + +costi( N, workspace, 1, 0 ); +console.log( 'Sequence length: %d', N ); + +console.log( 'Sine/Cosine table:' ); +var idx = zeroTo( N, 'generic' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( 0, N ) ); + +console.log( 'Twiddle factors:' ); +idx = zeroTo( N-1, 'generic' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( (2*N)-1, (3*N)-2 ) ); + +console.log( 'Factorization:' ); +var nf = workspace[ (3*N)-1 ]; + +console.log( ' number of factors: %d', nf ); +idx = zeroTo( nf, 'generic' ); +logEach( ' factor[ %d ]: %d', idx, workspace.slice( 3*N, (3*N)+nf ) ); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/lib/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/costi/lib/index.js new file mode 100644 index 000000000000..161842e74fa3 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/lib/index.js @@ -0,0 +1,56 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Initialize a workspace array for performing a cosine transform. +* +* @module @stdlib/fft/base/fftpack/costi +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var costi = require( '@stdlib/fft/base/fftpack/costi' ); +* +* var N = 9; +* var workspace = new Float64Array( ( 3*N ) + 34 ); +* +* var out = costi( N, workspace, 1, 0 ); +* // returns +* +* var bool = ( out === workspace ); +* // returns true +* +* var cosineTable = workspace.slice( 0, N ); +* // returns [ 0, ~0.765, ~1.414, ~1.848, 0, ~0.765, ~1.414, ~1.848, 0 ] +* +* var twiddleFactors = workspace.slice( (2*N)-1, (3*N)-2 ); +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] +* +* var factors = workspace.slice( (3*N)-2, (3*N)+2 ); +* // returns [ 8, 2, 2, 4 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/lib/main.js b/lib/node_modules/@stdlib/fft/base/fftpack/costi/lib/main.js new file mode 100644 index 000000000000..7c289635ee44 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/lib/main.js @@ -0,0 +1,210 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +* +* ## Notice +* +* The original C code and copyright notice are from the [PFFFT library]{@link https://github.com/marton78/pffft/blob/0b4ee12c4ba45a4a8e567550c16d96d1679f50ce/src/fftpack.c}. The implementation follows the original, but has been modified for JavaScript. +* +* ```text +* Copyright (c) 2004 the University Corporation for Atmospheric +* Research ("UCAR"). All rights reserved. Developed by NCAR's +* Computational and Information Systems Laboratory, UCAR, +* www.cisl.ucar.edu. +* +* Redistribution and use of the Software in source and binary forms, +* with or without modification, is permitted provided that the +* following conditions are met: +* +* - Neither the names of NCAR's Computational and Information Systems +* Laboratory, the University Corporation for Atmospheric Research, +* nor the names of its sponsors or contributors may be used to +* endorse or promote products derived from this Software without +* specific prior written permission. +* +* - Redistributions of source code must retain the above copyright +* notices, this list of conditions, and the disclaimer below. +* +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions, and the disclaimer below in the +* documentation and/or other materials provided with the +* distribution. +* +* THIS 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 AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT +* HOLDERS BE LIABLE FOR ANY CLAIM, INDIRECT, INCIDENTAL, SPECIAL, +* EXEMPLARY, OR CONSEQUENTIAL DAMAGES OR OTHER LIABILITY, WHETHER IN AN +* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +* SOFTWARE. +* ``` +*/ + +'use strict'; + +// MODULES // + +var sincos = require( '@stdlib/math/base/special/sincos' ).assign; +var PI = require( '@stdlib/constants/float64/pi' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var rffti = require( '@stdlib/fft/base/fftpack/rffti' ); + + +// VARIABLES // + +// Reusable buffer for storing computed sine and cosine values: +var SINCOS_WORKSPACE = [ 0.0, 0.0 ]; + + +// MAIN // + +/** +* Initializes a workspace array for performing a cosine transform. +* +* ## Notes +* +* The workspace array is divided into four sections: +* +* ```text +* size = N N-1 N-1 2+ceil(log2(N-1)/2) +* ↓ ↓ ↓ ↓ +* | sine/cosine table | scratch/workspace | twiddle factors | radix factor table | +* ↑ ↑ ↑ ↑ +* i = 0 ... N ... 2N-1 ... 3N-2 ... +* ``` +* +* where +* +* - **sine/cosine table**: a table of precomputed sine/cosine coefficients used by cosine transforms. +* - **scratch/workspace**: used as a scratch space when performing transforms. This section is not updated during initialization. +* - **twiddle factors**: a table of reusable complex-exponential constants stored as cosine/sine pairs. +* - **radix factor table**: a table containing the radix factorization of `N-1`. +* +* In general, a workspace array should have `3N + 34` indexed elements (as `log2(N-1)/2 ≤ 32` for all `2^64`). During initialization, only the sections for storing the sine/cosine coefficients, twiddle factors, and the factorization of `N-1` are updated. +* +* > Note: FFTPACK only requires `3N+15`, but we increase that number here to accommodate larger workspace arrays, where `N` may exceed `2^30` indexed elements. +* +* The factorization section is comprised as follows: +* +* ```text +* | sequence_length | number_of_factors | integer_factors | +* ``` +* +* The sequence length and number of factors (`nf`) comprise a single element each. Only the first `nf` elements in the integer factors section are written to, with the rest being unused. +* +* As for twiddle factors, these are small, reusable complex-exponential constants that appear inside each "butterfly" stage of a Cooley–Tukey–style FFT. Every arithmetic step in an FFT multiplies one intermediate value by some +* +* ```tex +* W_N^k +* ``` +* +* where `W_N^k` is an N-th root of unity. Formally, in a forward FFT, +* +* ```tex +* W_N^k = e^{-2\pi ik/N} +* ``` +* +* In a backward FFT, +* +* ```tex +* W_N^k = e^{+2\pi ik/N} +* ``` +* +* As may be observed, `W_N^k` for forward and backward FFTs is the same, except the sign of the exponent is flipped. As a consequence, both forward and backward FFT callers can reuse the same set of twiddle factors, with those performing a forward transform multiplying with `(cos,-sin)` and those performing a backward transform multiplying with `(cos,+sin)`. +* +* Because these constants only depend on the transform length `N` (and **not** on the input data), we can pre-compute and store them once, then "twiddle" them (i.e., reuse them with different indices) as we proceed through the factorization. +* +* > As a quick aside regarding the name "twiddle", early FFT papers (notably Gentleman & Sande, 1966) described how you "twiddle" one branch of each butterfly by a complex rotation before adding/subtracting. The coefficients themselves inherited the nickname "twiddle factors," and the term stuck. +* +* By reusing the workspace array when computing multiple transforms of the same length `N`, every subsequent `*f` (forward) or `*b` (backward) call can simply look up the pre-stored twiddle factors instead of recomputing sine and cosine on-the-fly. +* +* In short, twiddle factors are cached roots of unity that allow each stage of the algorithm to rotate data quickly and predictably. +* +* During initialization, `costi` first writes the sine/cosine table, and then initializes the remaining three sections using `rffti`. +* +* @param {PositiveInteger} N - length of the sequence to transform +* @param {Collection} workspace - workspace array +* @param {integer} strideW - stride length for `workspace` +* @param {NonNegativeInteger} offsetW - starting index for `workspace` +* @returns {Collection} workspace array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* +* var N = 9; +* var workspace = new Float64Array( ( 3*N ) + 34 ); +* +* var out = costi( N, workspace, 1, 0 ); +* // returns +* +* var bool = ( out === workspace ); +* // returns true +* +* var cosineTable = workspace.slice( 0, N ); +* // returns [ 0, ~0.765, ~1.414, ~1.848, 0, ~0.765, ~1.414, ~1.848, 0 ] +* +* var twiddleFactors = workspace.slice( (2*N)-1, (3*N)-2 ); +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] +* +* var factors = workspace.slice( (3*N)-2, (3*N)+2 ); +* // returns [ 8, 2, 2, 4 ] +*/ +function costi( N, workspace, strideW, offsetW ) { + var offsetR; + var ns2; + var iwc; + var iws; + var dt; + var fk; + var i; + + if ( N <= 3 ) { + return workspace; + } + // Compute the number of sine/cosine pairs to store: + ns2 = floor( N / 2 ); + + // Compute the angular increment: + dt = PI / ( N - 1 ); + + // Compute and store the sine/cosine table: + fk = 0.0; + iws = offsetW + strideW; + iwc = offsetW + ( (N-2)*strideW ); + for ( i = 1; i < ns2; i++ ) { + fk += 1.0; + sincos( fk*dt, SINCOS_WORKSPACE, 1, 0 ); + workspace[ iws ] = SINCOS_WORKSPACE[ 0 ] * 2.0; + workspace[ iwc ] = SINCOS_WORKSPACE[ 1 ] * 2.0; + iws += strideW; + iwc -= strideW; + } + // Resolve the starting index for the `rffti` workspace: + offsetR = offsetW + ( N*strideW ); + + // Initialize the real FFT workspace for a sequence of length N-1: + rffti( N-1, workspace, strideW, offsetR ); + + return workspace; +} + + +// EXPORTS // + +module.exports = costi; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/package.json b/lib/node_modules/@stdlib/fft/base/fftpack/costi/package.json new file mode 100644 index 000000000000..eae44f1cec64 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/package.json @@ -0,0 +1,64 @@ +{ + "name": "@stdlib/fft/base/fftpack/costi", + "version": "0.0.0", + "description": "Initialize a workspace array for performing a cosine transform.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "fft", + "fftpack", + "costi", + "fourier", + "transform", + "twiddle", + "workspace", + "initialization", + "cosine" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/Makefile b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/Makefile new file mode 100644 index 000000000000..7ce16281940d --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/Makefile @@ -0,0 +1,137 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +endif + +# Specify the path to FFTPACK: +FFTPACK ?= + +# Specify a list of FFTPACK source files: +FFTPACK_SRC ?= + +# Determine the OS: +# +# [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 +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]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of C targets: +c_targets := runner.out + + +# RULES # + +#/ +# Compiles C source files. +# +# @param {string} [C_COMPILER] - C compiler +# @param {string} [CFLAGS] - C compiler flags +# @param {(string|void)} [fPIC] - flag indicating whether to generate position independent code +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler +# @param {string} CFLAGS - C compiler flags +# @param {(string|void)} fPIC - flag indicating whether to generate position independent code +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) -DFFTPACK_DOUBLE_PRECISION $(fPIC) -o $@ $(FFTPACK_SRC) $< -lm + +#/ +# Generates test fixtures. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean + +#/ +# Removes generated test fixtures. +# +# @example +# make clean-fixtures +#/ +clean-fixtures: + $(QUIET) -rm -f *.json + +.PHONY: clean-fixtures diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/large.json b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/large.json new file mode 100644 index 000000000000..3f6163310f81 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/large.json @@ -0,0 +1 @@ +{"lengths":[1013,288,184,392,695,183,883,334,217,968],"offsets":[0,1013,1301,1485,1877,2572,2755,3638,3972,4189],"cosines":[0,0.0062086711614768577,0.012417282490470189,0.018625774155073067,0.024834086324531757,0.031042159169822312,0.037249932864227141,0.043457347583911517,0.049664343508500158,0.05587086082165367,0.062076839711644981,0.068282220371935792,0.074486943001752862,0.080690947806664359,0.086894174999156096,0.09309656479920761,0.099298057434868414,0.10549859314283386,0.11169811216902115,0.11789655476914518,0.12409386120929426,0.13028997176650584,0.13648482672934195,0.14267836639846468,0.14887053108721154,0.15506126112217056,0.16125049684375553,0.16743817860678073,0.17362424678103583,0.17980864175186054,0.18599130392071908,0.19217217370577463,0.19835119154246333,0.20452829788406846,0.21070343320229423,0.2168765379878394,0.22304755275097091,0.229216418022097,0.23538307435234043,0.24154746231411134,0.24770952250167996,0.25386919553174919,0.26002642204402659,0.26618114270179682,0.27233329819249319,0.27848282922826917,0.28462967654657029,0.29077378091070438,0.29691508311041331,0.30305352396244289,0.30918904431111377,0.31532158502889107,0.32145108701695446,0.32757749120576768,0.33370073855564758,0.3398207700573333,0.3459375267325549,0.35205094963460154,0.35816097984888995,0.36426755849353165,0.37037062671990084,0.37647012571320138,0.38256599669303332,0.38865818091395993,0.39474661966607316,0.40083125427555999,0.40691202610526755,0.41298887655526823,0.41906174706342458,0.42513057910595331,0.43119531419798979,0.43725589389415126,0.44331225978910005,0.44936435351810688,0.45541211675761267,0.46145549122579116,0.46749441868311031,0.47352884093289344,0.47955869982188032,0.48558393724078747,0.49160449512486815,0.49762031545447188,0.50363134025560385,0.50963751160048298,0.5156387716081009,0.52163506244477942,0.52762632632472761,0.53361250551059924,0.53959354231404855,0.54556937909628678,0.55153995826863733,0.55750522229309074,0.56346511368285934,0.56941957500293083,0.57536854887062228,0.58131197795613299,0.58724980498309676,0.59318197272913387,0.59910842402640296,0.60502910176215152,0.61094394887926629,0.61685290837682349,0.62275592331063745,0.62865293679381007,0.63454389199727901,0.64042873215036467,0.64630740054131797,0.65217984051786637,0.65804599548776044,0.66390580891931861,0.66975922434197221,0.67560618534681005,0.68144663558712104,0.68728051877893848,0.69310777870158125,0.69892835919819662,0.70474220417630073,0.71054925760831922,0.71634946353212781,0.72214276605159067,0.72792910933709987,0.73370843762611304,0.73948069522369031,0.74524582650303217,0.75100377590601464,0.75675448794372469,0.76249790719699584,0.76823397831694062,0.77396264602548592,0.77968385511590432,0.78539755045334647,0.79110367697537254,0.7968021796924829,0.80249300368864762,0.80817609412183655,0.81385139622454672,0.81951885530433111,0.82517841674432502,0.83083002600377276,0.83647362861855346,0.84210917020170528,0.84773659644395027,0.85335585311421691,0.85896688606016369,0.86456964120870039,0.87016406456650908,0.87575010222056493,0.88132770033865515,0.88689680516989844,0.89245736304526235,0.89800932037808112,0.90355262366457167,0.90908721948434879,0.9146130545009411,0.92013007546230419,0.92563822920133387,0.93113746263637898,0.93662772277175232,0.9421089566982418,0.94758111159362035,0.95304413472315463,0.95849797344011367,0.96394257518627535,0.96937788749243459,0.97480385797890678,0.98022043435603445,0.98562756442469013,0.99102519607677986,0.99641327729574514,1.0017917561570642,1.0071605808287523,1.0125196995718617,1.0178690607409797,1.0232086127847269,1.0285383042462533,1.0338580837637343,1.0391679000708671,1.0444677019973625,1.0497574384694393,1.0550370585103166,1.0603065112407049,1.0655657458792955,1.0708147117432514,1.0760533582486951,1.0812816349111951,1.086499491346254,1.0917068772697931,1.0969037424986374,1.1020900369509985,1.1072657106469583,1.11243071370895,1.1175849963622386,1.1227285089354013,1.1278612018608052,1.1329830256750857,1.1380939310196234,1.1431938686410186,1.1482827893915675,1.1533606442297342,1.158427384220625,1.1634829605364583,1.1685273244570367,1.1735604273702154,1.1785822207723708,1.183592656268869,1.1885916855745304,1.1935792605140965,1.1985553330226937,1.2035198551462964,1.208472779042189,1.2134140569794269,1.2183436413392974,1.2232614846157774,1.2281675394159919,1.23306175846067,1.2379440945846019,1.2428145007370919,1.2476729299824132,1.2525193355002588,1.2573536705861939,1.2621758886521055,1.266985943226651,1.271783787955707,1.2765693766028148,1.281342663049627,1.2861036012963516,1.2908521454621951,1.2955882497858049,1.30031186862571,1.3050229564607614,1.30972146789057,1.3144073576359447,1.3190805805393291,1.323741091565235,1.3283888458006787,1.3330237984556124,1.3376459048633556,1.3422551204810271,1.3468514008899721,1.3514347017961925,1.356004979030772,1.3605621885503023,1.365106286437308,1.3696372289006697,1.3741549722760453,1.3786594730262913,1.3831506877418829,1.3876285731413311,1.3920930860716012,1.3965441835085275,1.4009818225572281,1.4054059604525191,1.4098165545593262,1.4142135623730949,1.4185969415202015,1.42296664975836,1.4273226449770307,1.4316648851978244,1.4359933285749082,1.4403079333954085,1.4446086580798121,1.4488954611823686,1.4531683013914876,1.4574271375301389,1.4616719285562481,1.4659026335630929,1.4701192117796962,1.4743216225712201,1.4785098254393574,1.4826837800227204,1.4868434460972324,1.4909887835765132,1.4951197525122661,1.4992363130946635,1.5033384256527293,1.5074260506547221,1.5114991487085165,1.5155576805619815,1.5196016071033598,1.5236308893616439,1.527645488506953,1.5316453658509057,1.5356304828469933,1.5396008010909519,1.5435562823211317,1.5474968884188662,1.5514225814088396,1.555333323459452,1.5592290768831851,1.5631098041369644,1.5669754678225223,1.5708260306867563,1.5746614556220904,1.578481705666831,1.5822867440055244,1.5860765339693104,1.5898510390362763,1.593610222831809,1.5973540491289453,1.6010824818487206,1.6047954850605175,1.6084930229824115,1.6121750599815154,1.6158415605743239,1.6194924894270541,1.6231278113559877,1.6267474913278082,1.6303514944599402,1.633939786020884,1.6375123314305515,1.6410690962605996,1.6446100462347604,1.648135147229173,1.651644365272712,1.6551376665473148,1.6586150173883072,1.6620763842847281,1.6655217338796531,1.6689510329705142,1.6723642485094217,1.6757613476034814,1.6791422975151127,1.6825070656623622,1.68585561961922,1.6891879271159311,1.6925039560393058,1.6958036744330296,1.6990870504979723,1.7023540525924921,1.7056046492327432,1.7088388090929771,1.7120565010058455,1.7152576939627007,1.7184423571138936,1.721610459769072,1.7247619713974756,1.7278968616282309,1.7310151002506433,1.7341166572144886,1.737201502630302,1.7402696067696672,1.7433209400655023,1.7463554731123441,1.7493731766666323,1.7523740216469916,1.7553579791345113,1.7583250203730234,1.7612751167693816,1.7642082398937349,1.7671243614798029,1.7700234534251476,1.7729054877914441,1.7757704368047504,1.7786182728557745,1.7814489685001407,1.7842624964586542,1.7870588296175636,1.789837941028823,1.7925998039103503,1.7953443916462872,1.7980716777872536,1.8007816360506044,1.8034742403206812,1.8061494646490652,1.8088072832548265,1.8114476705247731,1.8140706010136969,1.8166760494446197,1.8192639907090367,1.8218343998671582,1.8243872521481503,1.8269225229503729,1.8294401878416173,1.8319402225593422,1.8344226030109059,1.8368873052738006,1.8393343055958813,1.841763580395595,1.8441751062622085,1.8465688599560337,1.8489448184086514,1.851302958723134,1.8536432581742659,1.8559656942087619,1.8582702444454864,1.8605568866756663,1.8628255988631077,1.8650763591444071,1.8673091458291615,1.8695239374001784,1.871720712513683,1.8738994499995234,1.8760601288613752,1.8782027282769431,1.8803272275981628,1.8824336063513984,1.8845218442376408,1.8865919211327036,1.8886438170874151,1.8906775123278137,1.8926929872553351,1.8946902224470037,1.8966691986556181,1.8986298968099384,1.9005722980148678,1.9024963835516362,1.90440213487798,1.9062895336283217,1.9081585616139449,1.9100092008231722,1.9118414334215363,1.9136552417519537,1.9154506083348937,1.9172275158685474,1.9189859472289947,1.9207258854703684,1.9224473138250187,1.9241502157036732,1.9258345746955985,1.9275003745687576,1.9291475992699656,1.9307762329250457,1.9323862598389816,1.9339776644960684,1.9355504315600625,1.9371045458743295,1.9386399924619897,1.9401567565260636,1.9416548234496129,1.9431341787958829,1.9445948083084406,1.9460366979113122,1.9474598337091193,1.9488642019872122,1.9502497892118027,1.9516165820300939,1.9529645672704092,1.954293731942319,1.9556040632367662,1.9568955485261899,1.9581681753646456,1.9594219314879275,1.960656804813685,1.9618727834415388,1.9630698556531976,1.9642480099125685,1.9654072348658707,1.9665475193417425,1.967668852351351,1.9687712230884966,1.9698546209297179,1.9709190354343937,1.9719644563448437,1.9729908735864277,1.9739982772676419,1.9749866576802153,1.975956005299202,1.9769063107830742,1.9778375649738116,1.9787497588969893,1.9796428837618654,1.9805169309614645,1.9813718920726615,1.9822077588562621,1.9830245232570831,1.983822177404029,1.9846007136101684,1.9853601243728083,1.986100402373566,1.9868215404784395,1.9875235317378768,1.9882063693868424,1.9888700468448828,1.9895145577161897,1.9901398957896614,1.990746055038964,1.9913330296225868,1.9919008138839018,1.992449402351216,1.9929787897378244,1.9934889709420622,1.9939799410473522,1.9944516953222535,1.994904229220507,1.9953375383810783,1.9957516186282007,1.9961464659714148,1.9965220766056071,1.9968784469110474,1.9972155734534223,1.9975334529838698,1.997832082439009,1.9981114589409712,1.9983715797974264,1.9986124425016105,1.998834044732348,1.9990363843540755,1.9992194594168613,1.9993832681564256,1.9995278089941562,1.9996530805371242,1.9997590815780975,1.9998458110955519,1.9999132682536822,1.9999614524024087,1.9999903630773845,0,0.0062086711614769575,0.012417282490470265,0.018625774155073119,0.024834086324532233,0.031042159169822767,0.037249932864227564,0.043457347583911926,0.049664343508500547,0.055870860821654031,0.062076839711645321,0.068282220371936098,0.074486943001753153,0.080690947806664637,0.086894174999156332,0.093096564799207845,0.099298057434868622,0.10549859314283404,0.11169811216902131,0.11789655476914532,0.12409386120929439,0.13028997176650595,0.13648482672934201,0.14267836639846471,0.14887053108721199,0.15506126112217103,0.16125049684375597,0.16743817860678115,0.17362424678103619,0.1798086417518609,0.18599130392071941,0.19217217370577494,0.19835119154246361,0.20452829788406873,0.21070343320229445,0.21687653798783962,0.2230475527509711,0.22921641802209716,0.23538307435234057,0.24154746231411148,0.2477095225016801,0.25386919553174925,0.26002642204402665,0.26618114270179688,0.27233329819249363,0.27848282922826967,0.28462967654657068,0.29077378091070477,0.29691508311041365,0.30305352396244323,0.3091890443111141,0.31532158502889135,0.32145108701695474,0.32757749120576796,0.3337007385556478,0.33982077005733352,0.34593752673255507,0.35205094963460171,0.35816097984889012,0.36426755849353176,0.37037062671990095,0.37647012571320143,0.38256599669303343,0.38865818091396037,0.39474661966607361,0.40083125427556043,0.40691202610526794,0.41298887655526861,0.41906174706342492,0.42513057910595364,0.43119531419799012,0.43725589389415154,0.44331225978910033,0.44936435351810711,0.45541211675761289,0.46145549122579138,0.46749441868311048,0.4735288409328936,0.47955869982188049,0.48558393724078758,0.49160449512486826,0.49762031545447205,0.50363134025560385,0.50963751160048343,0.51563877160810134,0.52163506244477986,0.52762632632472806,0.53361250551059958,0.53959354231404888,0.54556937909628711,0.55153995826863766,0.55750522229309107,0.56346511368285956,0.56941957500293106,0.5753685488706225,0.58131197795613321,0.58724980498309687,0.59318197272913398,0.59910842402640307,0.60502910176215163,0.6109439488792664,0.61685290837682349,0.62275592331063745,0.62865293679381051,0.63454389199727945,0.64042873215036511,0.6463074005413183,0.6521798405178667,0.65804599548776077,0.66390580891931883,0.66975922434197255,0.67560618534681027,0.68144663558712126,0.6872805187789387,0.69310777870158147,0.69892835919819685,0.70474220417630085,0.71054925760831933,0.71634946353212792,0.72214276605159089,0.72792910933709998,0.73370843762611304,0.73948069522369031,0.74524582650303262,0.75100377590601508,0.75675448794372513,0.76249790719699606,0.76823397831694096,0.77396264602548626,0.77968385511590466,0.7853975504533468,0.79110367697537276,0.79680217969248313,0.80249300368864784,0.80817609412183677,0.81385139622454694,0.81951885530433122,0.82517841674432513,0.83083002600377287,0.83647362861855357,0.84210917020170539,0.84773659644395027,0.85335585311421736,0.85896688606016414,0.86456964120870083,0.87016406456650952,0.87575010222056526,0.88132770033865548,0.88689680516989877,0.89245736304526269,0.89800932037808145,0.90355262366457179,0.90908721948434901,0.91461305450094132,0.92013007546230441,0.9256382292013341,0.93113746263637909,0.93662772277175244,0.94210895669824191,0.94758111159362046,0.95304413472315475,0.95849797344011367,0.9639425751862758,0.96937788749243492,0.97480385797890712,0.98022043435603468,0.98562756442469046,0.99102519607678019,0.99641327729574547,1.0017917561570644,1.0071605808287525,1.0125196995718619,1.0178690607409799,1.0232086127847271,1.0285383042462533,1.0338580837637346,1.0391679000708671,1.0444677019973625,1.0497574384694393,1.0550370585103168,1.0603065112407049,1.0655657458792955,1.0708147117432518,1.0760533582486953,1.0812816349111953,1.0864994913462542,1.0917068772697935,1.0969037424986376,1.1020900369509987,1.1072657106469586,1.1124307137089502,1.1175849963622388,1.1227285089354015,1.1278612018608052,1.1329830256750859,1.1380939310196234,1.1431938686410188,1.1482827893915677,1.1533606442297344,1.1584273842206252,1.1634829605364585,1.1685273244570369,1.1735604273702154,1.1785822207723711,1.183592656268869,1.1885916855745304,1.1935792605140967,1.1985553330226941,1.2035198551462967,1.2084727790421892,1.2134140569794272,1.2183436413392976,1.2232614846157777,1.2281675394159919,1.23306175846067,1.2379440945846019,1.2428145007370921,1.2476729299824134,1.2525193355002591,1.2573536705861943,1.2621758886521057,1.2669859432266513,1.271783787955707,1.2765693766028148,1.281342663049627,1.2861036012963516,1.2908521454621953,1.2955882497858051,1.3003118686257102,1.3050229564607616,1.3097214678905702,1.314407357635945,1.3190805805393291,1.323741091565235,1.3283888458006787,1.3330237984556124,1.337645904863356,1.3422551204810274,1.3468514008899723,1.3514347017961927,1.356004979030772,1.3605621885503025,1.3651062864373082,1.3696372289006697,1.3741549722760453,1.3786594730262913,1.3831506877418831,1.3876285731413316,1.3920930860716014,1.3965441835085277,1.4009818225572284,1.4054059604525193,1.4098165545593262,1.4142135623730951,1.4185969415202015,1.4229666497583604,1.4273226449770309,1.4316648851978246,1.4359933285749085,1.4403079333954087,1.4446086580798123,1.4488954611823686,1.4531683013914876,1.4574271375301389,1.4616719285562483,1.4659026335630931,1.4701192117796964,1.4743216225712203,1.4785098254393574,1.4826837800227206,1.4868434460972326,1.4909887835765134,1.4951197525122664,1.4992363130946635,1.5033384256527293,1.5074260506547223,1.5114991487085168,1.5155576805619817,1.5196016071033598,1.5236308893616441,1.5276454885069533,1.5316453658509057,1.5356304828469933,1.5396008010909519,1.5435562823211317,1.5474968884188665,1.5514225814088398,1.5553333234594522,1.5592290768831853,1.5631098041369649,1.5669754678225225,1.5708260306867563,1.5746614556220904,1.578481705666831,1.5822867440055244,1.5860765339693106,1.5898510390362766,1.5936102228318092,1.5973540491289455,1.6010824818487208,1.6047954850605177,1.6084930229824117,1.6121750599815154,1.6158415605743239,1.6194924894270544,1.6231278113559879,1.6267474913278084,1.6303514944599404,1.6339397860208842,1.6375123314305517,1.6410690962605998,1.6446100462347604,1.648135147229173,1.6516443652727122,1.6551376665473148,1.6586150173883074,1.6620763842847284,1.6655217338796531,1.6689510329705144,1.6723642485094219,1.6757613476034816,1.6791422975151127,1.6825070656623624,1.6858556196192203,1.6891879271159314,1.6925039560393058,1.6958036744330298,1.6990870504979723,1.7023540525924921,1.7056046492327432,1.7088388090929771,1.7120565010058457,1.7152576939627007,1.7184423571138936,1.721610459769072,1.7247619713974758,1.7278968616282311,1.7310151002506435,1.7341166572144886,1.7372015026303023,1.7402696067696675,1.7433209400655025,1.7463554731123441,1.7493731766666325,1.7523740216469919,1.7553579791345113,1.7583250203730234,1.7612751167693816,1.7642082398937349,1.7671243614798029,1.7700234534251476,1.7729054877914443,1.7757704368047504,1.7786182728557745,1.7814489685001407,1.7842624964586542,1.7870588296175638,1.789837941028823,1.7925998039103506,1.7953443916462875,1.7980716777872539,1.8007816360506046,1.8034742403206814,1.8061494646490655,1.8088072832548268,1.8114476705247731,1.8140706010136969,1.8166760494446197,1.8192639907090369,1.8218343998671584,1.8243872521481503,1.8269225229503729,1.8294401878416173,1.8319402225593422,1.8344226030109061,1.8368873052738008,1.8393343055958813,1.841763580395595,1.8441751062622085,1.8465688599560337,1.8489448184086517,1.8513029587231342,1.8536432581742659,1.8559656942087621,1.8582702444454864,1.8605568866756663,1.8628255988631079,1.8650763591444071,1.8673091458291615,1.8695239374001784,1.871720712513683,1.8738994499995234,1.8760601288613752,1.8782027282769433,1.8803272275981628,1.8824336063513984,1.884521844237641,1.8865919211327036,1.8886438170874154,1.8906775123278137,1.8926929872553351,1.8946902224470037,1.8966691986556183,1.8986298968099384,1.9005722980148678,1.9024963835516362,1.90440213487798,1.9062895336283217,1.9081585616139451,1.9100092008231722,1.9118414334215363,1.9136552417519537,1.9154506083348937,1.9172275158685474,1.9189859472289947,1.9207258854703686,1.9224473138250187,1.9241502157036732,1.9258345746955987,1.9275003745687576,1.9291475992699656,1.930776232925046,1.9323862598389818,1.9339776644960684,1.9355504315600625,1.9371045458743295,1.9386399924619897,1.9401567565260636,1.9416548234496129,1.9431341787958829,1.9445948083084406,1.9460366979113122,1.9474598337091193,1.9488642019872122,1.9502497892118029,1.9516165820300941,1.9529645672704092,1.954293731942319,1.9556040632367664,1.9568955485261899,1.9581681753646458,1.9594219314879278,1.960656804813685,1.961872783441539,1.9630698556531976,1.9642480099125685,1.9654072348658707,1.9665475193417425,1.967668852351351,1.9687712230884966,1.9698546209297179,1.9709190354343937,1.9719644563448437,1.9729908735864277,1.9739982772676419,1.9749866576802153,1.975956005299202,1.9769063107830742,1.9778375649738116,1.9787497588969893,1.9796428837618654,1.9805169309614645,1.9813718920726615,1.9822077588562621,1.9830245232570831,1.983822177404029,1.9846007136101684,1.9853601243728083,1.986100402373566,1.9868215404784395,1.9875235317378768,1.9882063693868424,1.9888700468448828,1.9895145577161897,1.9901398957896617,1.990746055038964,1.9913330296225868,1.9919008138839021,1.992449402351216,1.9929787897378246,1.9934889709420622,1.9939799410473522,1.9944516953222535,1.994904229220507,1.9953375383810783,1.9957516186282007,1.9961464659714148,1.9965220766056071,1.9968784469110474,1.9972155734534225,1.9975334529838698,1.997832082439009,1.9981114589409712,1.9983715797974264,1.9986124425016105,1.998834044732348,1.9990363843540755,1.9992194594168613,1.9993832681564256,1.9995278089941564,1.9996530805371242,1.9997590815780975,1.9998458110955519,1.9999132682536822,1.9999614524024087,1.9999903630773845,0,0,0.021892194532415619,0.043781765928189414,0.065666091364985468,0.087542548649041971,0.10940851652936419,0.13126137501180443,0.1530985056729913,0.17491729197407099,0.19671511957422252,0.21848937664390983,0.24023745417783265,0.26195674630753946,0.28364465061366401,0.305298568437749,0.32691590519361907,0.3484940706782656,0.37003047938220651,0.39152255079928378,0.41296770973586117,0.43436338661938562,0.45570701780627515,0.47699604588909605,0.49822792000299332,0.51940009613133675,0.54051003741054648,0.56155521443406209,0.58253310555541715,0.60344119719038469,0.62427698411815657,0.64503796978152061,0.66572166658599974,0.68632559619791644,0.70684728984134948,0.72728428859394323,0.74763414368153758,0.76789441677158188,0.78806268026529713,0.80813651758855265,0.82811352348142131,0.84799130428637937,0.86776747823511635,0.88743967573391946,0.90700553964760033,0.92646272558192821,0.94580890216453684,0.96504175132427061,0.98415896856893825,1.0031582632614373,1.0220373588942206,1.0407939933620689,1.0594259192331372,1.077930904018243,1.0963067304383667,1.1145511966903248,1.132662116710593,1.1506373204372413,1.1684746540699518,1.1861719803280888,1.2037271787067896,1.2211381457310433,1.2384027952077326,1.2555190584756002,1.2724848846531196,1.2892982408842317,1.3059571125819229,1.3224595036696143,1.3388034368203334,1.3549869536936383,1.3710081151702667,1.3868650015844834,1.4025557129540958,1.4180783692081094,1.4334311104120019,1.4486120969905785,1.4636195099483937,1.4784515510877034,1.4931064432239254,1.5075824303985836,1.521877778089709,1.5359907734196683,1.5499197253604056,1.5636629649360596,1.577218845422943,1.590585742546853,1.6037620546776934,1.6167462030213833,1.6295366318090279,1.6421318084833332,1.6545302238822368,1.6667303924197381,1.6787308522639,1.6905301655120084,1.7021269183628627,1.7135197212861761,1.7247072091890727,1.7356880415796525,1.7464609027276095,1.7570245018218846,1.7673775731253309,1.7775188761263745,1.7874471956876536,1.7971613421916188,1.8066601516830703,1.8159424860086271,1.8250072329531002,1.8338533063727573,1.8424796463254682,1.8508852191977052,1.8590690178283924,1.8670300616295845,1.8747673967039611,1.8822800959591233,1.8895672592186785,1.8966280133301012,1.9034615122693523,1.9100669372422525,1.9164434967825899,1.9225904268469534,1.928506990906282,1.9341924800341153,1.9396462129915384,1.9448675363088066,1.9498558243636472,1.9546104794562196,1.9591309318807333,1.9634166399937099,1.9674670902788838,1.9712817974087313,1.9748603043026232,1.9782021821815927,1.9813070306197116,1.9841744775920693,1.9868041795193501,1.9891958213090004,1.9913491163929831,1.9932638067621145,1.9949396629969798,1.9963764842954212,1.9975740984965993,1.99853236210162,1.9992511602907304,1.9997304069370752,1.999970044617017,0.010946261215931117,0.032837472059828524,0.054724748296984371,0.076605467380070541,0.098477007547440848,0.12033674813727302,0.14218206990157634,0.16401035532003427,0.18581898891363602,0.20760535755806356,0.22936685079680061,0.25110086115391772,0.27280478444650047,0.29447602009668694,0.31611197144326914,0.33771004605282562,0.35926765603035071,0.38078221832933684,0.40225115506127501,0.42367189380454223,0.4450418679126289,0.46635851682167501,0.48761928635728091,0.50882162904054917,0.52996300439332333,0.55104087924259271,0.57205272802401697,0.59299603308454008,0.61386828498405943,0.63466698279610656,0.65538963440751108,0.67603375681700539,0.69659687643274193,0.71707652936867905,0.73747026173980479,0.75777562995616476,0.77799020101565386,0.79811155279553847,0.81813727434267958,0.83806496616241344,0.85789224050605906,0.87761672165702242,0.89723604621545527,0.91674786338143743,0.93614983523665429,0.95543963702452595,0.97461495742875981,0.99367349885029665,1.0126129776826092,1.0314311245853236,1.0501256847561364,1.0686944182009848,1.0871351000024423,1.1054455205863136,1.1236234859863845,1.1416668181073049,1.1595733549855691,1.1773409510485653,1.1949674773716576,1.2124508219332759,1.2297888898679801,1.246979603717467,1.264020903679494,1.2809107478546853,1.2976471124911928,1.3142279922271856,1.3306514003311307,1.3469153689398468,1.3630179492942944,1.378957211973076,1.3947312471236226,1.410338164691032,1.4257760946445373,1.4410431872015741,1.4561376130494237,1.4710575635644019,1.4858012510285701,1.5003669088439393,1.514752791744147,1.5289571760035745,1.542978359643886,1.5568146626379591,1.5704644271111889,1.5839260175401342,1.5971978209484863,1.610278247100339,1.6231657286907293,1.6358587215334353,1.6483557047459989,1.6606551809319612,1.6727556763602802,1.6846557411419145,1.6963539494035502,1.7078488994584495,1.7191392139744024,1.7302235401387582,1.7411005498205219,1.7517689397294909,1.7622274315724158,1.7724747722061673,1.7825097337878875,1.7923311139221112,1.8019377358048383,1.8113284483645382,1.8205021264000725,1.8294576707155175,1.83819400825187,1.8467100922156223,1.8550049022041892,1.8630774443281743,1.8709267513304575,1.8785518827020919,1.8859519247949983,1.8931259909314366,1.9000732215102498,1.9067927841098611,1.9132838735880155,1.9195457121782524,1.9255775495830985,1.9313786630639673,1.9369483575277611,1.9422859656101537,1.9473908477555582,1.9522623922937556,1.9569000155131886,1.9613031617308994,1.965471303359114,1.9694039409684576,1.973100603347796,1.9765608475606971,1.9797842589985033,1.9827704514300104,1.9855190670477465,1.9880297765108439,1.9903022789845013,1.9923363021760301,1.9941316023674809,1.9956879644448453,1.9970052019238318,1.9980831569722093,1.9989217004287201,1.9995207318185548,1.9998801793653926,0,0,0.034332659509414741,0.068655201026486992,0.10295750954069306,0.13722947600426808,0.17146100031138869,0.2056419942747208,0.23976238459845445,0.27381211584695048,0.30778115340812356,0.34165948645068839,0.37543713087439745,0.40910413225240161,0.44265056876486508,0.47606655412297122,0.50934224048245746,0.54246782134582006,0.57543353445233392,0.6082296646550357,0.64084654678382236,0.6732745684938205,0.70550417309818958,0.73752586238452034,0.76933019941400238,0.80090781130253286,0.83224939198294889,0.86334570494756757,0.89418758597022774,0.92476594580702975,0.95507177287497635,0.98509613590772882,1.014830186587691,1.0442651621536496,1.0733923879832008,1.1022032801492001,1.1306893479494857,1.1588421964091273,1.1866535287544637,1.2141151488582007,1.2412189636548456,1.2679569855257733,1.2943213346532121,1.3203042413424635,1.3458980483116658,1.3710952129484311,1.3958883095326871,1.4202700314250716,1.4442331932202321,1.4677707328643981,1.4908757137366004,1.5135413266929252,1.5357608920732,1.5575278616695214,1.5788358206560393,1.5996784894794387,1.6200497257095503,1.6399435258495543,1.6593540271052376,1.6782755091127877,1.6967023956246077,1.7146292561526646,1.7320508075688772,1.7489619156620795,1.7653575966510946,1.7812330186534808,1.7965835031095059,1.8114045261609428,1.8256917199842713,1.8394408740778931,1.85264793650299,1.8653090150776448,1.8774203785238885,1.8889784575673225,1.899979845989002,1.9104213016292633,1.9202997473432035,1.9296122719075293,1.9383561308785071,1.9465287474007651,1.9541277129667016,1.9611507881262857,1.9675959031470327,1.9734611586239628,1.9787448260393659,1.983445348272203,1.9875613400569969,1.9910915883920763,1.9940350528970534,1.9963908661194281,1.9981583337902307,1.9993369350286261,1.9999263224954198,0.017166962164174109,0.051495827309977316,0.085809516399108748,0.12009791702989675,0.15435092425329261,0.18855844355084905,0.22271039380961793,0.25679671029310197,0.29080734760737997,0.32473228266152759,0.35856151762147154,0.39228508285639396,0.42589303987683164,0.45937548426359104,0.49272254858662962,0.52592440531302931,0.55897126970321898,0.59185340269457909,0.6245611137715894,0.65708476382166969,0.68941476797586765,0.72154159843356691,0.75345578727037021,0.78514792922834375,0.81660868448778667,0.84782878141972151,0.87879901931828308,0.90951027111221172,0.93995348605464035,0.97011969239039242,1.0000000000000002,1.0295856030196615,1.0588677824363706,1.0878379086574494,1.1164874440537296,1.1448079454756297,1.1727910667413914,1.2004285610967365,1.2277122836452239,1.2546341937485876,1.2811863573963502,1.3073609495440119,1.3331502564191262,1.3585466777945863,1.3835427292284439,1.4081310442696113,1.4323043766287866,1.4560556023139697,1.4793777217299335,1.5022638617410398,1.5247072776967805,1.5467013554194597,1.5682396131534209,1.5893157034752503,1.609923415164392,1.6300566750336227,1.6497095497188488,1.6688762474276946,1.6875511196463713,1.7057286628043193,1.7234035198961364,1.7405704820603105,1.7572244901142966,1.7733606360454801,1.7889741644575912,1.8040604739721415,1.8186151185844717,1.8326338089740095,1.8461124137683522,1.8590469607608007,1.8714336380809873,1.8832687953182519,1.8945489445974337,1.9052707616067652,1.9154310865775606,1.9250269252154162,1.9340554495826408,1.9425139989316629,1.950400080489165,1.9577113701907156,1.9644457133656814,1.970601125372218,1.9761757921821543,1.9811680709155941,1.9855764903250801,1.9893997512291781,1.9926367268953511,1.9952864633720127,1.9973481797696611,1.9988212684910105,1.9997052954100538,0,0,0.016069354739170261,0.032137672087683512,0.048203914721853661,0.064267045451932125,0.080326027289065738,0.096379823512241836,0.11242739773521576,0.12846771397341708,0.14449973671082972,0.16052243096684177,0.17653476236306087,0.19253569719009064,0.20852420247426401,0.22449924604432889,0.24045979659808214,0.25640482376894758,0.27233329819249319,0.28824419157288411,0.30413647674926636,0.32000912776207724,0.33586111991927853,0.35169142986250712,0.36749903563314068,0.38328291673827186,0.39904205421658862,0.41477543070415518,0.43048203050009021,0.44616083963213743,0.46181084592212468,0.4774310390513074,0.49302041062559154,0.5085779542406329,0.52410266554680718,0.53959354231404855,0.55504958449654984,0.57046979429732347,0.58585317623261546,0.60119873719617178,0.61650548652334958,0.63177243605507249,0.64699860020162236,0.66218299600626673,0.67732464320871544,0.69242256430840321,0.70747578462759453,0.72248333237430584,0.73744423870504161,0.75235753778733994,0.76722226686212402,0.78203746630585513,0.7968021796924829,0.81151545385518942,0.82617633894792331,0.84078388850671848,0.85533715951079514,0.86983521244343898,0.88427711135265297,0.89866192391158017,0.9129887214786917,0.92725657915773763,0.94146457585745469,0.95561179435103039,0.96969732133531539,0.98372024748978437,0.99767966753523918,1.0115746802922503,1.0254043887393354,1.0391679000708671,1.0528643257547114,1.0664927815895879,1.0800523877621508,1.0935422689037884,1.1069615541471325,1.120309377182281,1.1335848763127232,1.1467871945109689,1.1599154794738746,1.1729688836776675,1.1859465644326574,1.1988476839376394,1.2116714093339793,1.2244169127593807,1.2370833714013296,1.2496699675502125,1.2621758886521057,1.2746003273612305,1.2869424815920745,1.2992015545711706,1.3113767548885351,1.3234672965487588,1.3354723990217483,1.3473912872931144,1.3592231919142059,1.370967349051782,1.3826230005373232,1.3941893939159771,1.4056657824951335,1.4170514253926305,1.4283455875845819,1.4395475399528292,1.4506565593320107,1.4616719285562481,1.4725929365054433,1.4834188781511868,1.4941490546022722,1.5047827731498151,1.5153193473119719,1.5257580968782565,1.5360983479534538,1.5463394330011235,1.5564806908866955,1.566521466920149,1.5764611128982791,1.5862989871465416,1.596034454560479,1.6056668866467199,1.6151956615635528,1.6246201641610709,1.633939786020884,1.6431539254953964,1.6522619877466473,1.6612633847847122,1.670157535505661,1.6789438657290736,1.6876218082351062,1.6961908028011099,1.7046502962377972,1.7129997424249532,1.7212386023466935,1.7293663441262594,1.7373824430603559,1.745286381653024,1.753077649649049,1.7607557440669015,1.768320169231208,1.7757704368047504,1.7831060658199913,1.7903265827101247,1.7974315213396468,1.8044204230344496,1.8112928366114311,1.8180483184076222,1.8246864323088281,1.8312067497777831,1.8376088498818159,1.8438923193200225,1.8500567524499494,1.856101751313779,1.8620269256640223,1.8678318929887108,1.873516278536091,1.8790797153388168,1.8845218442376408,1.8898423139045997,1.8950407808656946,1.9001169095230661,1.9050703721766586,1.9099008490453757,1.9146080282877245,1.9191916060219472,1.9236512863456381,1.9279867813548479,1.9321978111626679,1.9362841039173002,1.9402453958196071,1.9440814311401411,1.9477919622356541,1.9513767495650847,1.9548355617050219,1.9581681753646458,1.9613743754001418,1.9644539548285906,1.967406714841329,1.9702324648167862,1.9729310223327878,1.9755022131783346,1.9779458713648472,1.9802618391368829,1.9824499669823197,1.9845101136420076,1.9864421461188897,1.9882459396865859,1.9899213778974465,1.9914683525900689,1.9928867638962808,1.9941765202475861,1.9953375383810783,1.9963697433448142,1.9972730685026525,1.9980474555385572,1.9986928544603604,1.9992092236029906,1.9995965296311626,1.9998547475415294,1.9999838606642961,0.0080347422072861371,0.024103707922343932,0.04017111757234474,0.056235933892200843,0.072297119784242345,0.088353638385169159,0.10440445313298792,0.12044852783392937,0.13648482672934201,0.15251231456255765,0.16852995664572459,0.18453671892660403,0.2005315680553254,0.21651347145109656,0.23248139736886406,0.24843431496591967,0.26437119436844853,0.28029100673801494,0.29619272433798083,0.31207532059985388,0.32793777018955944,0.34377904907363327,0.35959813458533013,0.37539400549064417,0.39116564205423671,0.4069120261052675,0.42263214110312491,0.43832497220305067,0.45398950632165525,0.46962473220231987,0.48522964048047995,0.50080322374878694,0.51634447662214344,0.53185239580260812,0.54732598014416556,0.56276423071735782,0.57816615087377055,0.59353074631037661,0.6088570251337232,0.62414399792396635,0.63939067779874514,0.65459608047689144,0.66975922434197255,0.6848791305056614,0.69995482287093103,0.71498532819506799,0.72996967615250252,0.74490689939744981,0.75979603362635884,0.77463611764016527,0.78942619340634368,0.80416530612075487,0.8188525042692858,0.83348683968927639,0.84806736763072987,0.86259314681730337,0.8770632395070741,0.89147671155307662,0.90583263246360946,0.92013007546230441,0.93436811754795634,0.9485458395541102,0.96266232620839909,0.97671666619163156,0.99070795219662433,1.0046352809867747,1.0184977534543711,1.0322944746786373,1.0460245539835051,1.0596871049951142,1.0732812456990342,1.0868060984972041,1.1002607902645885,1.1136444524055429,1.1269562209098887,1.1401952364086902,1.1533606442297342,1.1664515944527039,1.1794672419640475,1.1924067465115373,1.2052692727585128,1.2180539903378078,1.230760073905357,1.2433867031934773,1.2559330630638224,1.2683983435600046,1.2807817399598849,1.293082452827522,1.3052996880647829,1.317432656962606,1.3294805762519195,1.3414426681542058,1.353318160431713,1.3651062864373082,1.3768062851639704,1.3884174012939186,1.3999388852473724,1.4113699932309438,1.4227099872856532,1.4339581353345714,1.445113711230078,1.4561759948007416,1.4671442718978109,1.4780178344413182,1.4887959804657911,1.4994780141655695,1.5100632459397239,1.5205509924365752,1.5309405765978095,1.5412313277021863,1.5514225814088396,1.5615136798001645,1.5715039714242913,1.5813928113371412,1.5911795611440616,1.6008635890410394,1.6104442698554882,1.6199209850866081,1.6292931229453131,1.6385600783937284,1.6477212531842478,1.6567760558981561,1.6657239019838088,1.6745642137943695,1.6832964206251009,1.6919199587502074,1.7004342714592284,1.7088388090929771,1.7171330290790257,1.7253163959667315,1.7333883814618047,1.7413484644604127,1.7491961310828223,1.7569308747065731,1.7645521959991841,1.772059602950389,1.7794526109038993,1.7867307425886916,1.7938935281498196,1.8009405051787462,1.8078712187431949,1.8146852214165194,1.8213820733065882,1.8279613420841825,1.8344226030109061,1.840765438966605,1.8469894404762968,1.8530942057366029,1.8590793406416901,1.8649444588087116,1.8706891816027507,1.8763131381612652,1.8818159654180284,1.8871973081265681,1.8924568188830997,1.8975941581489546,1.9026089942724984,1.9075010035105429,1.9122698700492449,1.9169152860244945,1.9214369515417902,1.9258345746955987,1.9301078715882001,1.9342565663480149,1.9382803911474142,1.942179086220009,1.9459523998774204,1.9496000885255278,1.9531219166801952,1.956517656982472,1.9597870902132724,1.9629300053075258,1.9659461993678036,1.9688354776774177,1.9715976537129902,1.9742325491564956,1.9767399939067716,1.979119826090501,1.9813718920726615,1.9834960464664444,1.9854921521426392,1.9873600802384876,1.9890997101660017,1.9907109296197492,1.9921936345841027,1.9935477293399562,1.994773126470903,1.9958697468688793,1.996837519739272,1.9976763826054882,1.9983862813129889,1.9989671700327845,1.9994190112643944,1.9997417758382667,1.9999354429176626,0,0,0.0090535502135510159,0.018106914903581267,0.027159908550371703,0.036212345641806622,0.04526404067717512,0.054314808170972381,0.063364462656700579,0.0724128186906694,0.081459690855796171,0.090504893765405353,0.099548242067027434,0.10858955044619717,0.11762863363025101,0.12666530639212362,0.1356993835541436,0.14473067999182795,0.15375901063767583,0.16278419048496079,0.17180603459152183,0.18082435808355335,0.18983897615939338,0.19884970409331076,0.20785635723929013,0.21685875103481603,0.22585670100465463,0.2348500227646341,0.24383853202542305,0.25282204459630669,0.26180037638896153,0.2707733434212275,0.27974076182087798,0.28870244782938803,0.29765821780569957,0.30660788822998475,0.31555127570740638,0.32448819697187625,0.33341846888981042,0.34234190846388202,0.35125833283677133,0.36016755929491245,0.36906940527223792,0.37796368835391947,0.38685022628010624,0.39572883694965949,0.40459933842388424,0.41346154893025744,0.42231528686615299,0.43116037080256286,0.43999661948781521,0.4488238518512882,0.45764188700712061,0.46645054425791876,0.47524964309845896,0.48403900321938648,0.49281844451091056,0.50158778706649509,0.5103468511865451,0.51909545738208929,0.52783342637845831,0.53656057911895771,0.54527673676853772,0.55398172071745799,0.56267535258494694,0.571357454222858,0.58002784771931948,0.58868635540238046,0.59733279984365217,0.60596700386194258,0.61458879052688886,0.62319798316258135,0.63179440535118492,0.64037788093655401,0.64894823402784185,0.6575052890031059,0.66604887051290507,0.67457880348389421,0.68309491312241144,0.69159702491805941,0.70008496464728209,0.70855855837693427,0.71701763246784633,0.72546201357838203,0.73389152866799079,0.74230600500075317,0.75070527014892152,0.75908915199645211,0.76745747874253323,0.77581007890510467,0.78414678132437243,0.79246741516631591,0.80077180992618846,0.80905979543201145,0.8173312018480613,0.82558585967834974,0.83382359977009735,0.84204425331719945,0.85024765186368545,0.85843362730717065,0.86660201190230091,0.8747526382641907,0.8828853393718521,0.89099994857161802,0.89909629958055726,0.90717422648988155,0.91523356376834575,0.92327414626563964,0.93129580921577193,0.9392983882404472,0.94728171935243377,0.95524563895892445,0.96318998386488852,0.97111459127641608,0.97901929880405414,0.98690394446613416,0.99476836669209079,1.0026124043257738,1.0104358966287499,1.0182386832835961,1.0260206043971856,1.0337815005039643,1.0415212125692179,1.0492395819923315,1.0569364506100392,1.0646116606996652,1.0722650549823558,1.0798964766263024,1.0875057692499561,1.0950927769252299,1.1026573441806966,1.1101993160047734,1.1177185378488979,1.1252148556306965,1.1326881157371405,1.1401381650276943,1.1475648508374541,1.1549680209802757,1.1623475237518932,1.1697032079330274,1.1770349227924848,1.1843425180902474,1.1916258440805487,1.1988847515149454,1.2061190916453741,1.2133287162271984,1.2205134775222495,1.2276732283018512,1.2348078218498379,1.2419171119655608,1.249000952966884,1.25605919969317,1.2630917075082535,1.2700983323034061,1.277078930500289,1.2840333590538948,1.2909614754554797,1.297863137735483,1.3047382044664364,1.311586534765862,1.3184079882991599,1.3252024252824837,1.3319697064856038,1.3387096932347615,1.3454222474155118,1.3521072314755505,1.3587645084275362,1.3653939418518952,1.3719953958996178,1.3785687352950422,1.3851138253386266,1.3916305319097089,1.3981187214692552,1.4045782610625968,1.411009018322154,1.4174108614701493,1.4237836593213069,1.4301272812855417,1.4364415973706346,1.442726478184897,1.4489817949398218,1.4552074194527223,1.4614032241493595,1.4675690820665566,1.4737048668547994,1.479810452780826,1.4858857147302043,1.4919305282098945,1.4979447693508003,1.5039283149103089,1.5098810422748139,1.515802829462229,1.521693555124489,1.5275530985500341,1.5333813396662852,1.5391781590421032,1.5449434378902374,1.5506770580697595,1.5563789020884833,1.5620488531053742,1.5676867949329421,1.5732926120396227,1.5788661895521452,1.5844074132578858,1.5899161696072086,1.5953923457157921,1.6008358293669425,1.6062465090138933,1.6116242737820909,1.6169690134714667,1.6222806185586958,1.6275589801994401,1.6328039902305802,1.6380155411724309,1.6431935262309434,1.6483378392998949,1.6534483749630622,1.6585250284963811,1.6635676958700938,1.6685762737508802,1.6735506595039746,1.6784907511952698,1.6833964475934056,1.6882676481718428,1.6931042531109244,1.6979061632999191,1.7026732803390545,1.7074055065415319,1.7121027449355288,1.7167648992661848,1.7213918739975766,1.725983574314673,1.7305399061252793,1.7350607760619654,1.7395460914839782,1.7439957604791412,1.7484096918657364,1.7527877951943742,1.7571299807498464,1.7614361595529644,1.7657062433623827,1.7699401446764069,1.7741377767347875,1.7782990535204963,1.7824238897614912,1.7865122009324617,1.7905639032565617,1.7945789137071262,1.7985571500093729,1.8024985306420873,1.8064029748392947,1.8102704025919136,1.8141007346493963,1.8178938925213528,1.8216497984791589,1.8253683755575485,1.8290495475561923,1.8326932390412576,1.8362993753469552,1.8398678825770687,1.8433986876064696,1.8468917180826152,1.8503469024270305,1.8537641698367768,1.8571434502859012,1.8604846745268715,1.8637877740919966,1.8670526812948274,1.8702793292315456,1.8734676517823343,1.8766175836127319,1.8797290601749723,1.882802017709307,1.8858363932453108,1.8888321246031745,1.891789150394976,1.8947074100259409,1.8975868436956824,1.9004273923994284,1.9032289979292285,1.9059916028751491,1.9087151506264479,1.9113995853727346,1.9140448521051157,1.9166508966173195,1.9192176655068089,1.9217451061758748,1.9242331668327139,1.9266817964924901,1.9290909449783793,1.931460562922598,1.9337906017674142,1.9360810137661431,1.9383317519841248,1.9405427702996867,1.9427140234050886,1.9448454668074509,1.9469370568296658,1.948988750611294,1.9510005061094409,1.9529722820996196,1.9549040381765952,1.9567957347552125,1.9586473330712078,1.9604587951820027,1.9622300839674818,1.9639611631307532,1.9656519971988928,1.9673025515236708,1.9689127922822616,1.9704826864779368,1.9720122019407422,1.973501307328156,1.9749499721257318,1.976358166647723,1.9777258620376927,1.9790530302691032,1.9803396441458911,1.9815856773030254,1.9827911042070463,1.9839559001565894,1.9850800412828917,1.9861635045502801,1.9872062677566449,1.9882083095338927,1.9891696093483864,1.9900901475013646,1.990969905129345,1.9918088642045126,1.9926070075350877,1.993364318765678,1.9940807823776154,1.9947563836892721,1.9953911088563629,1.9959849448722276,1.9965378795680988,1.9970499016133505,1.9975210005157304,1.997951166621575,1.9983403911160076,1.9986886660231182,1.9989959842061282,1.9992623393675355,1.9994877260492436,1.9996721396326744,1.9998155763388621,1.9999180332285307,1.9999795082021543,0,0.0090535502135510697,0.018106914903581257,0.027159908550372071,0.036212345641806913,0.045264040677175349,0.054314808170972541,0.063364462656700662,0.072412818690669428,0.081459690855796574,0.090504893765405686,0.099548242067027698,0.10858955044619738,0.11762863363025115,0.1266653063921237,0.13569938355414357,0.14473067999182831,0.15375901063767614,0.16278419048496101,0.17180603459152199,0.18082435808355343,0.18983897615939344,0.19884970409331074,0.2078563572392905,0.2168587510348163,0.22585670100465483,0.23485002276463426,0.2438385320254231,0.25282204459630669,0.26180037638896192,0.27077334342122777,0.2797407618208782,0.2887024478293882,0.29765821780569973,0.3066078882299848,0.31555127570740638,0.32448819697187659,0.33341846888981069,0.34234190846388229,0.35125833283677149,0.36016755929491251,0.36906940527223792,0.37796368835391986,0.38685022628010657,0.39572883694965971,0.4045993384238844,0.41346154893025755,0.42231528686615305,0.43116037080256286,0.4399966194878156,0.44882385185128848,0.45764188700712083,0.46645054425791893,0.47524964309845902,0.48403900321938648,0.49281844451091095,0.50158778706649543,0.51034685118654532,0.51909545738208962,0.52783342637845843,0.53656057911895783,0.54527673676853772,0.55398172071745833,0.56267535258494727,0.57135745422285822,0.58002784771931959,0.58868635540238057,0.59733279984365217,0.60596700386194258,0.61458879052688919,0.62319798316258157,0.63179440535118514,0.64037788093655412,0.64894823402784196,0.6575052890031059,0.6660488705129054,0.67457880348389454,0.68309491312241166,0.69159702491805963,0.7000849646472822,0.70855855837693427,0.71701763246784633,0.72546201357838236,0.73389152866799101,0.74230600500075339,0.75070527014892163,0.75908915199645222,0.76745747874253323,0.77581007890510501,0.78414678132437277,0.79246741516631614,0.80077180992618868,0.80905979543201156,0.8173312018480613,0.82558585967834974,0.83382359977009768,0.84204425331719979,0.85024765186368567,0.85843362730717077,0.86660201190230102,0.8747526382641907,0.88288533937185243,0.89099994857161824,0.89909629958055748,0.90717422648988177,0.91523356376834586,0.92327414626563964,0.93129580921577193,0.93929838824044753,0.9472817193524341,0.95524563895892467,0.96318998386488863,0.97111459127641619,0.97901929880405425,0.98690394446613439,0.99476836669209101,1.002612404325774,1.0104358966287501,1.0182386832835961,1.0260206043971856,1.0337815005039643,1.0415212125692181,1.0492395819923317,1.0569364506100394,1.0646116606996652,1.0722650549823558,1.0798964766263026,1.0875057692499561,1.0950927769252301,1.1026573441806968,1.1101993160047736,1.1177185378488981,1.1252148556306965,1.1326881157371405,1.1401381650276943,1.1475648508374543,1.154968020980276,1.1623475237518932,1.1697032079330274,1.1770349227924852,1.1843425180902474,1.1916258440805489,1.1988847515149459,1.2061190916453741,1.2133287162271986,1.2205134775222497,1.2276732283018514,1.2348078218498379,1.2419171119655608,1.2490009529668842,1.2560591996931703,1.2630917075082537,1.2700983323034063,1.2770789305002892,1.284033359053895,1.2909614754554801,1.2978631377354832,1.3047382044664364,1.3115865347658622,1.3184079882991604,1.3252024252824839,1.3319697064856038,1.3387096932347617,1.3454222474155118,1.3521072314755507,1.3587645084275364,1.3653939418518952,1.3719953958996178,1.3785687352950422,1.3851138253386268,1.3916305319097089,1.3981187214692552,1.404578261062597,1.4110090183221542,1.4174108614701495,1.4237836593213071,1.4301272812855419,1.4364415973706348,1.4427264781848972,1.4489817949398218,1.4552074194527223,1.4614032241493597,1.4675690820665568,1.4737048668547994,1.4798104527808262,1.4858857147302045,1.4919305282098945,1.4979447693508006,1.5039283149103091,1.5098810422748139,1.5158028294622292,1.521693555124489,1.5275530985500343,1.5333813396662852,1.5391781590421032,1.5449434378902376,1.5506770580697595,1.5563789020884835,1.5620488531053744,1.5676867949329423,1.5732926120396227,1.5788661895521454,1.584407413257886,1.5899161696072088,1.5953923457157921,1.6008358293669427,1.6062465090138935,1.6116242737820909,1.6169690134714669,1.622280618558696,1.6275589801994403,1.6328039902305804,1.6380155411724309,1.6431935262309434,1.6483378392998949,1.6534483749630622,1.6585250284963811,1.663567695870094,1.6685762737508802,1.6735506595039746,1.6784907511952698,1.6833964475934056,1.688267648171843,1.6931042531109244,1.6979061632999193,1.7026732803390547,1.7074055065415321,1.7121027449355286,1.716764899266185,1.7213918739975766,1.725983574314673,1.7305399061252795,1.7350607760619654,1.7395460914839784,1.7439957604791412,1.7484096918657364,1.7527877951943742,1.7571299807498466,1.7614361595529646,1.7657062433623827,1.7699401446764069,1.7741377767347875,1.7782990535204963,1.7824238897614915,1.7865122009324619,1.7905639032565619,1.7945789137071264,1.7985571500093729,1.8024985306420875,1.8064029748392947,1.8102704025919136,1.8141007346493965,1.817893892521353,1.8216497984791589,1.8253683755575487,1.8290495475561923,1.8326932390412576,1.8362993753469552,1.8398678825770689,1.8433986876064699,1.8468917180826152,1.8503469024270307,1.8537641698367768,1.8571434502859012,1.8604846745268717,1.8637877740919966,1.8670526812948274,1.8702793292315456,1.8734676517823343,1.8766175836127319,1.8797290601749725,1.882802017709307,1.885836393245311,1.8888321246031745,1.891789150394976,1.8947074100259409,1.8975868436956824,1.9004273923994284,1.9032289979292287,1.9059916028751491,1.9087151506264479,1.9113995853727348,1.9140448521051157,1.9166508966173195,1.9192176655068089,1.9217451061758748,1.9242331668327139,1.9266817964924901,1.9290909449783793,1.931460562922598,1.9337906017674142,1.9360810137661431,1.9383317519841248,1.9405427702996867,1.9427140234050886,1.9448454668074509,1.946937056829666,1.948988750611294,1.9510005061094409,1.9529722820996196,1.9549040381765952,1.9567957347552125,1.958647333071208,1.9604587951820027,1.9622300839674818,1.9639611631307532,1.9656519971988928,1.9673025515236708,1.9689127922822616,1.9704826864779368,1.9720122019407422,1.973501307328156,1.9749499721257318,1.976358166647723,1.9777258620376927,1.9790530302691032,1.9803396441458911,1.9815856773030254,1.9827911042070463,1.9839559001565894,1.9850800412828917,1.9861635045502801,1.9872062677566449,1.9882083095338927,1.9891696093483866,1.9900901475013646,1.990969905129345,1.9918088642045126,1.9926070075350877,1.9933643187656782,1.9940807823776154,1.9947563836892723,1.9953911088563629,1.9959849448722276,1.9965378795680988,1.9970499016133505,1.9975210005157304,1.997951166621575,1.9983403911160076,1.9986886660231182,1.9989959842061282,1.9992623393675355,1.9994877260492436,1.9996721396326744,1.9998155763388621,1.9999180332285307,1.9999795082021543,0,0,0.034521281810776995,0.069032277939416256,0.10352270576841875,0.13798228880864985,0.17240075976123881,0.20676786357674029,0.2410733605106461,0.27530702917433642,0.30945866958056245,0.34351810618255207,0.37747519090583337,0.41131980617187314,0.44504186791262879,0.47863132857511548,0.51207818011509421,0.54537245697898751,0.57850423907313531,0.6114636547195057,0.64424088359698117,0.67682615966734083,0.70920977408507113,0.74138207809013501,0.77333348588283768,0.80505447747993497,0.83653560155113027,0.86776747823511624,0.8987408019343226,0.92944634408753701,0.9598749559195725,0.99001757116716271,1.0198652087802718,1.049408975598016,1.0786400689983984,1.1075497795210663,1.1361294934623116,1.1643706954415414,1.1922649709384505,1.2198040088001456,1.246979603717467,1.2737836586697784,1.3002081873374884,1.3262453164815904,1.3518872882895085,1.377126462686554,1.4019553196122987,1.4263664612611924,1.4503526142867531,1.4739066319686733,1.4970214963422022,1.5196903202891576,1.5419063495899592,1.5636629649360596,1.5849536839021809,1.605772162877765,1.6261121989570648,1.6459677317873127,1.6653328453744127,1.6842017698456233,1.7025688831687023,1.7204287128270013,1.737775937450013,1.7546053883988839,1.7709120513064196,1.7866910675711263,1.8019377358048383,1.8166475132335078,1.8308160170507326,1.8444390257236207,1.8575124802506047,1.8700324853708297,1.8819953107247527,1.8933973919656117,1.9042353318214282,1.9145059011072314,1.9242060396872009,1.933332857386439,1.941883634852104,1.9498558243636472,1.9572470505919104,1.9640551113068607,1.9702779780337476,1.9759137966574929,1.9809608879751264,1.9854177481961079,1.9892830493903855,1.9925556398840529,1.9952345446024953,1.9973189653609122,1.9988082811021408,1.9997020480816987,0,0.034521281810777148,0.069032277939416437,0.10352270576841899,0.1379822888086501,0.17240075976123909,0.20676786357674062,0.24107336051064646,0.27530702917433636,0.30945866958056245,0.34351810618255207,0.37747519090583342,0.41131980617187325,0.4450418679126289,0.47863132857511564,0.51207818011509443,0.54537245697898773,0.57850423907313553,0.61146365471950603,0.64424088359698151,0.67682615966734117,0.70920977408507113,0.74138207809013501,0.77333348588283768,0.80505447747993508,0.83653560155113038,0.86776747823511635,0.89874080193432271,0.92944634408753724,0.95987495591957284,0.99001757116716294,1.019865208780272,1.0494089755980163,1.0786400689983986,1.1075497795210663,1.1361294934623116,1.1643706954415416,1.1922649709384507,1.2198040088001456,1.2469796037174672,1.2737836586697786,1.3002081873374887,1.3262453164815906,1.3518872882895088,1.377126462686554,1.4019553196122989,1.4263664612611926,1.4503526142867531,1.4739066319686736,1.4970214963422024,1.5196903202891576,1.5419063495899592,1.5636629649360596,1.5849536839021809,1.605772162877765,1.626112198957065,1.6459677317873127,1.6653328453744127,1.6842017698456235,1.7025688831687025,1.7204287128270015,1.7377759374500132,1.7546053883988841,1.7709120513064198,1.7866910675711263,1.8019377358048383,1.816647513233508,1.8308160170507328,1.8444390257236207,1.8575124802506047,1.8700324853708297,1.8819953107247529,1.893397391965612,1.9042353318214282,1.9145059011072316,1.9242060396872012,1.933332857386439,1.941883634852104,1.9498558243636472,1.9572470505919106,1.9640551113068607,1.9702779780337476,1.9759137966574929,1.9809608879751264,1.9854177481961079,1.9892830493903855,1.9925556398840529,1.9952345446024953,1.9973189653609122,1.9988082811021408,1.9997020480816989,0,0,0.0071237778019064323,0.014247465223782924,0.021370971886746193,0.028494207414206267,0.035617081433013086,0.042739503574603099,0.04986138347614575,0.056982630781689927,0.064103155143310345,0.071222866222253753,0.078341673690085115,0.085459487229833556,0.092576216537138309,0.099691771321394326,0.10680606130689785,0.11391899623399175,0.12103048586021065,0.12814043996142582,0.13524876833298993,0.14235538079088136,0.14946018717284851,0.15656309733955356,0.16366402117571624,0.17076286859125694,0.1778595495224399,0.18495397393301566,0.19204605181536349,0.19913569319163332,0.20622280811488711,0.21330730667024031,0.22038909897600242,0.22746809518481742,0.23454420548480354,0.24161734010069288,0.24868740929497032,0.25575432336901199,0.26281799266422334,0.26987832756317665,0.27693523849074797,0.28398863591525353,0.29103843034958593,0.29808453235234889,0.30512685252899263,0.31216530153294769,0.31919979006675847,0.32623022888321623,0.33325652878649142,0.34027860063326526,0.34729635533386066,0.35430970385337268,0.36131855721279788,0.36832282649016335,0.37532242282165496,0.38231725740274458,0.38930724148931684,0.39629228639879516,0.40327230351126658,0.41024720427060646,0.41721690018560159,0.42418130283107336,0.43114032384899914,0.43809387494963359,0.44504186791262879,0.4519842145881533,0.45892082689801078,0.46585161683675713,0.4727764964728175,0.47969537794960132,0.48660817348661733,0.49351479538058723,0.50041515600655817,0.50730916781901469,0.51419674335298926,0.52107779522517206,0.52795223613501951,0.53481997886586197,0.54168093628601022,0.54853502134986076,0.55538214709900058,0.5622222266633099,0.5690551732620649,0.57588090020503779,0.58269932089359755,0.58951034882180842,0.59631389757752706,0.60310988084349915,0.60989821239845443,0.6166788061182007,0.62345157597671619,0.63021643604724131,0.63697330050336887,0.64372208362013228,0.6504626997750943,0.65719506344943213,0.66391908922902321,0.67063469180552859,0.67734178597747541,0.68404028665133743,0.69073010884261521,0.69741116767691391,0.70408337839102009,0.7107466563339776,0.71740091696816066,0.72404607587034731,0.73068204873278997,0.73730875136428531,0.74392609969124213,0.75053400975874818,0.75713239773163543,0.76372117989554344,0.77030027265798151,0.77686959254938948,0.78342905622419612,0.78997858046187719,0.79651808216801123,0.80304747837533319,0.80956668624478767,0.81607562306657933,0.82257420626122313,0.82906235338059076,0.83553998210895797,0.84200701026404801,0.84846335579807464,0.85490893679878299,0.86134367149048885,0.86776747823511624,0.87418027553323285,0.88058198202508453,0.88697251649162689,0.8933517978555563,0.8997197451823381,0.90607627768123389,0.91242131470632593,0.91875477575754072,0.92507658048167052,0.93138664867339205,0.93768490027628459,0.94397125538384596,0.95024563424050545,0.95650795724263638,0.9627581449395658,0.96899611803458241,0.97522179738594295,0.9814351040078757,0.98763595907158308,0.99382428390624167,0.99999999999999989,1.0061630290009749,1.0123132927182459,1.0184507131228462,1.0245752123487539,1.0306867126938792,1.0367851366210499,1.042870406758996,1.0489424459033305,1.0550011770175296,1.0610465232339092,1.0670784078546014,1.0730967543525258,1.0791014863723623,1.0850925277315189,1.0910698024210974,1.0970332346068594,1.1029827486301877,1.1089182690090458,1.1148397204389358,1.120747027793854,1.1266401161272441,1.1325189106729474,1.1383833368461522,1.1442333202443393,1.1500687866482269,1.1558896620227108,1.1616958725178057,1.1674873444695797,1.1732640044010911,1.1790257790233196,1.1847725952360955,1.1905043801290285,1.196221060982432,1.2019225652682453,1.2076088206509548,1.2132797549885106,1.2189352963332429,1.2245753729327737,1.2301999132309278,1.2358088458686409,1.241402099684864,1.246979603717467,1.2525412872041388,1.2580870795832848,1.2636169104949226,1.2691307097815745,1.2746284074891572,1.2801099338678699,1.2855752193730785,1.2910241946661993,1.2964567906155768,1.3018729382973622,1.3072725689963871,1.3126556142070362,1.3180220056341154,1.3233716751937188,1.3287045550140921,1.3340205774364942,1.3393196750160556,1.3446017805226336,1.3498668269416654,1.3551147474750187,1.3603454755418387,1.3655589447793932,1.3707550890439142,1.3759338424114373,1.3810951391786379,1.3862389138636653,1.3913651012069728,1.3964736361721455,1.4015644539467269,1.4066374899430392,1.4116926797990039,1.4167299593789588,1.4217492647744701,1.4267505323051444,1.4317336985194369,1.4366987001954552,1.4416454743417624,1.446573958198176,1.4514840892365641,1.4563758051616384,1.4612490439117454,1.4661037436596527,1.4709398428133342,1.4757572800167513,1.480555994150631,1.4853359243332422,1.490097009921167,1.4948391905100706,1.4995624059354684,1.5042665962734876,1.508951701841629,1.5136176631995235,1.5182644211496865,1.5228919167382688,1.5275000912558045,1.532088886237956,1.5366582434662555,1.5412081049688438,1.5457384130212062,1.5502491101469036,1.5547401391183033,1.5592114429573043,1.5636629649360596,1.5680946485776968,1.5725064376570346,1.5768982762012955,1.5812701084908163,1.5856218790597554,1.5899535326967953,1.594265014445845,1.598556269606735,1.6028272437359132,1.6070778826471346,1.6113081324121488,1.6155179393613845,1.6197072500846306,1.623876011431713,1.6280241705131695,1.6321516747009215,1.6362584716289401,1.6403445091939117,1.6444097355558984,1.6484540991389964,1.6524775486319896,1.656480032989001,1.66046150143014,1.6644219034421475,1.6683611887790353,1.6722793074627249,1.6761762097836812,1.6800518463015428,1.6839061678457496,1.6877391255161664,1.691550670683704,1.6953407549909347,1.6991093303527078,1.7028563489567574,1.7065817632643114,1.7102855260106922,1.7139675902059188,1.7176279091353008,1.7212664363600325,1.724883125717781,1.7284779313232737,1.7320508075688772,1.7356017091251801,1.739130590941564,1.7426374082467788,1.7461221165495071,1.7495846716389321,1.7530250295852954,1.7564431467404571,1.7598389797384473,1.7632124854960181,1.7665636212131886,1.7698923443737891,1.773198612746,1.7764823843828879,1.7797436176229371,1.7829822710905792,1.7861983036967166,1.789391674639246,1.7925623434035733,1.7957102697631302,1.7988354137798823,1.8019377358048383,1.80501719647855,1.8080737567316147,1.8111073777851685,1.8141180211513801,1.8171056486339372,1.8200702223285332,1.8230117046233463,1.8259300581995177,1.828825246031625,1.8316972313881512,1.8345459778319522,1.8373714492207169,1.8401736097074279,1.8429524237408152,1.8457078560658073,1.8484398717239787,1.8511484360539932,1.8538335146920435,1.8564950735722883,1.8591330789272829,1.8617474972884085,1.864338295486297,1.8669054406512511,1.8694489002136621,1.8719686419044224,1.8744646337553352,1.8769368440995209,1.8793852415718166,1.8818097951091772,1.8842104739510668,1.88658724763985,1.8889400860211782,1.8912689592443734,1.8935738377628042,1.8958546923342636,1.8981114940213373,1.9003442141917735,1.9025528245188439,1.9047372969817045,1.9068976038657504,1.9090337177629677,1.9111456115722814,1.9132332584998988,1.9152966320596492,1.9173357060733212,1.9193504546709934,1.9213408522913638,1.9233068736820724,1.9252484939000241,1.9271656883117025,1.9290584325934848,1.9309267027319481,1.9327704750241763,1.9345897260780587,1.936384432812589,1.9381545724581559,1.9399001225568335,1.9416210609626661,1.943317365841948,1.9449890156735021,1.946635989248952,1.9482582656729908,1.9498558243636472,1.9514286450525458,1.9529767077851645,1.954499992921088,1.9559984811342563,1.9574721534132105,1.9589209910613334,1.9603449756970877,1.9617440892542479,1.9631183139821307,1.9644676324458192,1.9657920275263854,1.9670914824211054,1.9683659806436749,1.969615506024416,1.9708400427104851,1.9720395751660711,1.9732140881725948,1.9743635668289004,1.9754879965514456,1.9765873630744861,1.977661652450257,1.9787108510491493,1.9797349455598832,1.9807339229896761,1.9817077706644093,1.9826564762287864,1.9835800276464923,1.9844784132003441,1.9853516214924414,1.986199641444309,1.9870224622970398,1.9878200736114287,1.9885924652681071,1.9893396274676707,1.9900615507308028,1.9907582258983965,1.9914296441316688,1.9920757969122749,1.9926966760424139,1.993292273644935,1.9938625821634361,1.9944075943623603,1.9949273033270869,1.9954217024640204,1.9958907855006727,1.996334546485744,1.9967529797891976,1.9971460801023313,1.9975138424378447,1.9978562621299032,1.9981733348341966,1.9984650565279936,1.9987314235101941,1.9989724324013758,1.9991880801438362,1.9993783640016325,1.999543281560616,1.9996828307284618,1.9997970097346971,1.9998858171307221,1.999949251789829,1.9999873129072168,0,0.0071237778019067732,0.01424746522378304,0.021370971886746529,0.028494207414206375,0.035617081433013419,0.042739503574603203,0.049861383476146069,0.056982630781690025,0.064103155143310664,0.07122286622225385,0.07834167369008542,0.085459487229833639,0.0925762165371386,0.099691771321394396,0.10680606130689814,0.11391899623399182,0.12103048586021094,0.12814043996142591,0.13524876833299021,0.14235538079088142,0.14946018717284879,0.15656309733955362,0.16366402117571649,0.170762868591257,0.17785954952244015,0.18495397393301571,0.19204605181536377,0.19913569319163332,0.20622280811488736,0.21330730667024034,0.22038909897600267,0.22746809518481742,0.23454420548480376,0.24161734010069291,0.24868740929497055,0.25575432336901199,0.26281799266422357,0.26987832756317665,0.27693523849074819,0.28398863591525353,0.2910384303495861,0.29808453235234889,0.30512685252899285,0.31216530153294764,0.31919979006675864,0.32623022888321618,0.33325652878649159,0.3402786006332652,0.34729635533386083,0.35430970385337263,0.36131855721279804,0.36832282649016335,0.37532242282165512,0.38231725740274453,0.389307241489317,0.3962922863987951,0.40327230351126675,0.41024720427060679,0.4172169001856017,0.42418130283107369,0.43114032384899925,0.43809387494963392,0.4450418679126289,0.45198421458815363,0.45892082689801089,0.46585161683675752,0.47277649647281761,0.47969537794960165,0.48660817348661745,0.49351479538058757,0.50041515600655828,0.50730916781901503,0.51419674335298948,0.52107779522517239,0.52795223613501963,0.5348199788658623,0.54168093628601033,0.5485350213498611,0.55538214709900069,0.56222222666331023,0.5690551732620649,0.57588090020503802,0.58269932089359755,0.58951034882180864,0.59631389757752706,0.60310988084349937,0.60989821239845443,0.61667880611820092,0.62345157597671619,0.63021643604724153,0.63697330050336887,0.6437220836201325,0.6504626997750943,0.65719506344943235,0.66391908922902321,0.67063469180552882,0.67734178597747541,0.68404028665133765,0.69073010884261521,0.69741116767691413,0.7040833783910202,0.71074665633397782,0.71740091696816066,0.72404607587034753,0.73068204873278997,0.73730875136428553,0.74392609969124213,0.7505340097587484,0.75713239773163543,0.76372117989554367,0.77030027265798151,0.77686959254938959,0.78342905622419601,0.7899785804618773,0.79651808216801112,0.8030474783753333,0.80956668624478756,0.81607562306657944,0.82257420626122302,0.82906235338059087,0.8355399821089583,0.84200701026404812,0.84846335579807486,0.8549089367987831,0.86134367149048918,0.86776747823511635,0.87418027553323319,0.88058198202508464,0.88697251649162723,0.89335179785555641,0.89971974518233844,0.906076277681234,0.91242131470632615,0.91875477575754083,0.92507658048167085,0.93138664867339216,0.93768490027628493,0.94397125538384608,0.95024563424050568,0.95650795724263649,0.96275814493956602,0.96899611803458252,0.97522179738594328,0.98143510400787581,0.98763595907158341,0.99382428390624167,1.0000000000000002,1.0061630290009749,1.0123132927182461,1.0184507131228462,1.0245752123487541,1.0306867126938792,1.0367851366210503,1.042870406758996,1.048942445903331,1.0550011770175296,1.0610465232339095,1.0670784078546014,1.073096754352526,1.0791014863723625,1.0850925277315189,1.0910698024210974,1.0970332346068596,1.102982748630188,1.108918269009046,1.114839720438936,1.120747027793854,1.1266401161272441,1.1325189106729474,1.1383833368461522,1.1442333202443393,1.1500687866482269,1.155889662022711,1.1616958725178057,1.1674873444695799,1.1732640044010914,1.1790257790233196,1.1847725952360955,1.1905043801290285,1.196221060982432,1.2019225652682453,1.2076088206509548,1.2132797549885106,1.2189352963332429,1.2245753729327737,1.230199913230928,1.2358088458686409,1.241402099684864,1.2469796037174672,1.2525412872041388,1.2580870795832848,1.2636169104949226,1.2691307097815745,1.2746284074891572,1.2801099338678699,1.2855752193730787,1.2910241946661993,1.2964567906155768,1.3018729382973622,1.3072725689963873,1.3126556142070365,1.3180220056341156,1.3233716751937188,1.3287045550140921,1.3340205774364942,1.3393196750160556,1.3446017805226336,1.3498668269416654,1.3551147474750187,1.3603454755418387,1.3655589447793932,1.3707550890439142,1.3759338424114373,1.3810951391786381,1.3862389138636655,1.3913651012069728,1.3964736361721457,1.4015644539467271,1.4066374899430394,1.4116926797990041,1.4167299593789588,1.4217492647744703,1.4267505323051446,1.4317336985194369,1.4366987001954554,1.4416454743417624,1.446573958198176,1.4514840892365641,1.4563758051616384,1.4612490439117454,1.4661037436596527,1.4709398428133342,1.4757572800167513,1.4805559941506312,1.4853359243332422,1.490097009921167,1.4948391905100709,1.4995624059354684,1.5042665962734876,1.508951701841629,1.5136176631995235,1.5182644211496865,1.5228919167382688,1.5275000912558045,1.532088886237956,1.5366582434662557,1.541208104968844,1.5457384130212062,1.5502491101469036,1.5547401391183036,1.5592114429573043,1.5636629649360596,1.568094648577697,1.5725064376570348,1.5768982762012955,1.5812701084908165,1.5856218790597554,1.5899535326967953,1.594265014445845,1.598556269606735,1.6028272437359132,1.6070778826471346,1.611308132412149,1.6155179393613848,1.6197072500846306,1.623876011431713,1.6280241705131697,1.6321516747009217,1.6362584716289403,1.6403445091939117,1.6444097355558986,1.6484540991389967,1.6524775486319898,1.656480032989001,1.6604615014301403,1.6644219034421475,1.6683611887790353,1.6722793074627249,1.6761762097836812,1.6800518463015428,1.6839061678457496,1.6877391255161667,1.691550670683704,1.695340754990935,1.6991093303527078,1.7028563489567576,1.7065817632643114,1.7102855260106924,1.713967590205919,1.7176279091353011,1.7212664363600325,1.7248831257177812,1.7284779313232737,1.7320508075688774,1.7356017091251801,1.7391305909415642,1.7426374082467788,1.7461221165495071,1.7495846716389321,1.7530250295852954,1.7564431467404571,1.7598389797384475,1.7632124854960181,1.7665636212131886,1.7698923443737891,1.7731986127460002,1.7764823843828881,1.7797436176229373,1.7829822710905792,1.7861983036967168,1.789391674639246,1.7925623434035733,1.7957102697631302,1.7988354137798825,1.8019377358048383,1.8050171964785502,1.8080737567316147,1.8111073777851687,1.8141180211513801,1.8171056486339374,1.8200702223285332,1.8230117046233463,1.8259300581995177,1.828825246031625,1.8316972313881512,1.8345459778319522,1.8373714492207169,1.8401736097074279,1.8429524237408152,1.8457078560658076,1.8484398717239787,1.8511484360539932,1.8538335146920435,1.8564950735722883,1.8591330789272829,1.8617474972884085,1.864338295486297,1.8669054406512511,1.8694489002136621,1.8719686419044224,1.8744646337553355,1.8769368440995209,1.8793852415718169,1.8818097951091772,1.8842104739510668,1.88658724763985,1.8889400860211785,1.8912689592443734,1.8935738377628044,1.8958546923342636,1.8981114940213373,1.9003442141917735,1.9025528245188439,1.9047372969817045,1.9068976038657504,1.9090337177629677,1.9111456115722814,1.9132332584998988,1.9152966320596492,1.9173357060733212,1.9193504546709936,1.9213408522913638,1.9233068736820726,1.9252484939000241,1.9271656883117028,1.9290584325934848,1.9309267027319483,1.9327704750241763,1.9345897260780589,1.936384432812589,1.9381545724581559,1.9399001225568335,1.9416210609626661,1.943317365841948,1.9449890156735024,1.946635989248952,1.9482582656729908,1.9498558243636472,1.9514286450525458,1.9529767077851645,1.954499992921088,1.9559984811342563,1.9574721534132105,1.9589209910613334,1.9603449756970877,1.9617440892542479,1.9631183139821307,1.9644676324458195,1.9657920275263854,1.9670914824211054,1.9683659806436749,1.969615506024416,1.9708400427104851,1.9720395751660711,1.9732140881725948,1.9743635668289004,1.9754879965514456,1.9765873630744861,1.977661652450257,1.9787108510491493,1.9797349455598832,1.9807339229896761,1.9817077706644093,1.9826564762287864,1.9835800276464923,1.9844784132003441,1.9853516214924414,1.986199641444309,1.9870224622970398,1.9878200736114287,1.9885924652681071,1.9893396274676707,1.9900615507308028,1.9907582258983965,1.9914296441316688,1.9920757969122749,1.9926966760424139,1.993292273644935,1.9938625821634361,1.9944075943623603,1.9949273033270869,1.9954217024640204,1.9958907855006727,1.996334546485744,1.9967529797891976,1.9971460801023313,1.9975138424378447,1.9978562621299032,1.9981733348341966,1.9984650565279936,1.9987314235101941,1.9989724324013758,1.9991880801438362,1.9993783640016325,1.999543281560616,1.9996828307284618,1.9997970097346971,1.9998858171307221,1.999949251789829,1.9999873129072168,0,0,0.018868144451793509,0.03773460956893418,0.056597716166236177,0.075455785357434357,0.09430713870461134,0.11315009836758469,0.13198298725324098,0.15080412916480318,0.16961184895101838,0.18840447265525251,0.20718032766447858,0.22593774285814566,0.2446750487569144,0.26339057767124718,0.2820826638498386,0.30074964362787338,0.3193898555750988,0.33800164064369814,0.3565833423159519,0.37513330675167428,0.39364988293541076,0.41213142282338511,0.43057628149018062,0.44898281727514516,0.46734939192850483,0.48567437075717429,0.50395612277025026,0.5221930208241764,0.54038344176756414,0.55852576658566011,0.57661838054444359,0.59465967333434455,0.61264803921356681,0.63058187715100489,0.64845959096874184,0.66627958948411514,0.68404028665133743,0.70174010170266099,0.71937745928907137,0.73695078962049976,0.75445852860553964,0.77189911799065736,0.78927100549888152,0.80657264496796244,0.8238024964879852,0.84095902653842858,0.85804070812465283,0.87504602091380856,0.89197345137015194,0.90882149288975478,0.92558864593459789,0.94227341816603571,0.95887432457761945,0.97538988762726897,0.99181863736877895,1.0081591115826491,1.0244098559062287,1.0405694239631578,1.0566363774921028,1.0726092864747649,1.0884867292631579,1.1042672927061403,1.1199495722751907,1.1355321721894156,1.1510137055397798,1.1663927944125465,1.1816680700119158,1.1968381727818536,1.2119017525270961,1.2268574685333236,1.2417039896864872,1.2564399945912845,1.2710641716887681,1.2855752193730785,1.2999718461072931,1.3142527705383771,1.3284167216112279,1.3424624386818054,1.3563886716293325,1.3701941809675617,1.3838777379550922,1.3974381247047347,1.4108741342919062,1.4241845708620509,1.4373682497370766,1.4504239975207944,1.4633506522033566,1.4761470632646778,1.4888120917768379,1.5013446105054487,1.5137435040099834,1.5260076687430544,1.5381360131486335,1.550127457759203,1.5619809352918348,1.5736953907431799,1.5852697814833694,1.5967030773488118,1.6079942607338809,1.6191423266814879,1.6301462829725242,1.6410051502141749,1.6517179619270861,1.6622837646313871,1.6727016179315521,1.6829705946001003,1.6930897806601211,1.7030582754666224,1.7128751917866918,1.7225396558784614,1.7320508075688772,1.7414078003302549,1.7506098013556257,1.7596559916328587,1.7685455660175553,1.7772777333047116,1.7858517162991367,1.7942667518846283,1.8025220910918893,1.8106169991651933,1.8185507556277767,1.8263226543459665,1.8339320035920268,1.841378126105726,1.8486603591546167,1.8557780545930187,1.8627305789197084,1.8695173133343019,1.8761376537923315,1.8825910110590063,1.8888768107616576,1.8949944934408596,1.9009435146002229,1.9067233447548584,1.9123334694785019,1.9177733894492994,1.9230426204942508,1.9281406936323011,1.9330671551160827,1.9378215664722991,1.9424035045407524,1.9468125615120053,1.9510483449636773,1.9551104778953723,1.9589985987622329,1.9627123615071189,1.9662514355914085,1.969615506024416,1.9728042733914291,1.9758174538803561,1.9786547793069871,1.9813159971388634,1.9838008705177537,1.9861091782807354,1.9882407149798784,1.990195290900532,1.9919727320782086,1.9935728803140684,1.9949955931889993,1.9962407440762926,1.9973082221529128,1.9981979324093628,1.9989097956581385,1.9994437485407774,1.9997997435334978,1.9999777489514281,0.009434177186064447,0.028301691881524392,0.047166687621714332,0.066027485352227508,0.084882406392296925,0.10372977258420228,0.12256790644263275,0.14139513130398976,0.16020977147561449,0.17901015238493345,0.19779460072849972,0.21656144462092414,0.23530901374367749,0.25403563949375774,0.2727396551322,0.29141939593242333,0.31007319932839605,0.32869940506261253,0.34729635533386083,0.36586239494477385,0.38439587144914616,0.40289513529901072,0.42135853999145284,0.43978444221515545,0.45817120199666034,0.47651718284633032,0.49482075190400504,0.51308028008433026,0.53129414222175297,0.54946071721516598,0.56757838817219386,0.58564554255310086,0.60366057231431391,0.62162187405154268,0.63952784914249072,0.65737690388913783,0.67516744965958497,0.69289790302944743,0.71056668592278749,0.72817222575256768,0.74571295556061723,0.76318731415709729,0.78059374625945122,0.79793070263083288,0.81519664021799254,0.83239002228861569,0.84950931856809586,0.86655300537573721,0.88351956576036639,0.900407489635347,0.91721527391298208,0.93394142263829627,0.95058444712218004,0.96714286607388911,0.98361520573288364,1.0000000000000002,1.0162957905679386,1.0325011270510576,1.0486145671144638,1.0646346766023842,1.080560029665814,1.0963892088894198,1.1121208054176952,1.127753419080356,1.1432856585169575,1.1587161413007341,1.1740434940616373,1.1892663526085734,1.2043833620508191,1.2193931769186142,1.2342944612829105,1.2490858888742777,1.2637661432009444,1.2783339176659698,1.2927879156835387,1.3071268507943585,1.321349446780163,1.335454437777297,1.3494405683893853,1.3633065937990658,1.3770512798787844,1.3906734033006358,1.4041717516452452,1.4175451235096765,1.430792328614364,1.4439121879090491,1.4569035336777219,1.469765209642552,1.4824960710668005,1.4950949848567072,1.5075608296623391,1.5198924959773952,1.532088886237956,1.5441489149201726,1.556071508636879,1.5678556062331315,1.5795001588806521,1.5910041301711799,1.602366496208715,1.6135862457006487,1.624662380047772,1.6355939134331556,1.6463798729098906,1.6570192984876844,1.6675112432183032,1.6778547732798548,1.6880489680599007,1.6980929202373958,1.7079857358634416,1.7177265344408521,1.7273144490025214,1.7367486261885854,1.7460282263223765,1.7551524234851552,1.7641204055896229,1.7729313744521973,1.7815845458640567,1.7900791496609358,1.7984144297916735,1.8065896443855047,1.8146040658180889,1.8224569807762714,1.8301476903215721,1.837675509952392,1.8450397696649374,1.8522398140128518,1.8592750021655542,1.8661447079652747,1.8728483199827848,1.8793852415718169,1.8857548909221684,1.8919567011114848,1.8979901201557174,1.903854611058253,1.9095496518577071,1.9150747356743818,1.920429370755379,1.9256130805183687,1.9306254035940067,1.9354658938669977,1.9401341205158016,1.944629668050978,1.9489521363521665,1.9531011407036987,1.9570763118288392,1.9608772959226535,1.9645037546834963,1.967955365343123,1.9712318206954169,1.9743328291237314,1.9772581146268453,1.9800074168435275,1.9825804910757108,1.9849771083102701,1.9871970552394058,1.9892401342796298,1.9911061635893492,1.992794977085053,1.9943064244560929,1.9956403711780615,1.9967966985247663,1.9977753035787957,1.99857609924068,1.9991990142366434,1.9996439931249463,1.9999109963008219,0,0,0.029087795303165312,0.058169437486222809,0.087238774730672,0.11628965782095166,0.1453159414452212,0.17431148549531633,0.20327015636560375,0.23218582825046047,0.26105238444010315,0.28986371861449345,0.31861373613504512,0.34729635533386066,0.37590550880022372,0.40443514466407587,0.43287922787620575,0.46123174148488033,0.48948668790864758,0.51763809020504148,0.54567999333492201,0.57360646542218041,0.60141159900854624,0.62908951230322729,0.65663435042712204,0.68404028665133743,0.71130152362975296,0.73841229462536884,0.76536686473017956,0.79215953207831358,0.81878462905218508,0.84523652348139888,0.87150961983415876,0.89759836040092433,0.92349722647006782,0.94920073949528083,0.97470346225448468,0.99999999999999989,1.0250850015997304,1.0499531606691204,1.0745992166936478,1.099017956141612,1.1232042135669857,1.1471528727020921,1.170858867539881,1.1943171834055724,1.2175228580174413,1.2404709825365201,1.2631567026049952,1.2855752193730785,1.3077217905141394,1.3295917312278756,1.3511804152313205,1.3724832757374672,1.3934958064213101,1.4142135623730949,1.4346321610385788,1.4547472831460975,1.4745546736202482,1.4940501424819919,1.5132295657349859,1.532088886237956,1.5506241145629318,1.5688313298391514,1.5867066805824703,1.6042463855100875,1.6214467343404244,1.6383040885779836,1.6548148822830209,1.6709756228258728,1.6867828916257712,1.7022333448739995,1.7173237142412263,1.7320508075688772,1.7464115095443915,1.7604027823602222,1.7740216663564434,1.7872652806468243,1.8001308237282423,1.8126155740732999,1.8247168907060283,1.836432213760548,1.8477590650225735,1.8586950484536449,1.869237850697977,1.8793852415718166,1.8891350745352093,1.8984852871460678,1.9074339014964539,1.9159790246309778,1.9241188489472263,1.9318516525781366,1.9391757997562322,1.9460897411596476,1.9525920142398667,1.958681243531103,1.9643561409412615,1.969615506024416,1.9744582262347481,1.9788832771618889,1.9828897227476208,1.986476715483886,1.9896434965920662,1.9923893961834911,1.9947138334011445,1.9966163165425364,1.9980964431637156,1.9991539001644012,1.9997884638542149,0,0.029087795303165551,0.058169437486222719,0.087238774730672014,0.1162896578209518,0.14531594144522147,0.17431148549531628,0.20327015636560378,0.23218582825046061,0.26105238444010342,0.28986371861449339,0.31861373613504523,0.34729635533386083,0.37590550880022355,0.40443514466407582,0.43287922787620581,0.4612317414848805,0.48948668790864741,0.51763809020504148,0.54567999333492212,0.57360646542218063,0.60141159900854613,0.62908951230322729,0.65663435042712215,0.68404028665133765,0.71130152362975285,0.73841229462536884,0.76536686473017967,0.7921595320783138,0.81878462905218496,0.84523652348139888,0.87150961983415887,0.89759836040092456,0.92349722647006782,0.94920073949528083,0.97470346225448479,1.0000000000000002,1.0250850015997304,1.0499531606691204,1.0745992166936478,1.099017956141612,1.123204213566986,1.1471528727020921,1.1708588675398812,1.1943171834055724,1.2175228580174413,1.2404709825365201,1.263156702604995,1.2855752193730787,1.3077217905141394,1.3295917312278758,1.3511804152313205,1.3724832757374672,1.3934958064213099,1.4142135623730951,1.4346321610385788,1.4547472831460975,1.4745546736202482,1.4940501424819921,1.5132295657349857,1.532088886237956,1.5506241145629316,1.5688313298391514,1.5867066805824703,1.6042463855100877,1.6214467343404246,1.6383040885779836,1.6548148822830211,1.670975622825873,1.6867828916257714,1.7022333448739995,1.7173237142412263,1.7320508075688774,1.7464115095443915,1.7604027823602222,1.7740216663564434,1.7872652806468246,1.8001308237282423,1.8126155740732999,1.8247168907060283,1.836432213760548,1.8477590650225735,1.8586950484536449,1.8692378506979768,1.8793852415718169,1.8891350745352096,1.8984852871460678,1.9074339014964539,1.9159790246309778,1.9241188489472265,1.9318516525781366,1.939175799756232,1.9460897411596476,1.9525920142398667,1.958681243531103,1.9643561409412613,1.969615506024416,1.9744582262347481,1.9788832771618889,1.9828897227476208,1.986476715483886,1.9896434965920662,1.9923893961834911,1.9947138334011445,1.9966163165425364,1.9980964431637156,1.9991539001644012,1.9997884638542149,0,0,0.0064975948855288844,0.012995121190810675,0.019492510336322127,0.025989693743987671,0.032486602837903243,0.0389831690450601,0.045479323796068526,0.051974998525881652,0.058470124674519078,0.064964633687790513,0.071458457018019367,0.077951526124766232,0.084443772475552292,0.090935127546582714,0.097425522823469848,0.10391488980195641,0.11040315998863851,0.11689026490168855,0.1233761360715781,0.1298607050418005,0.13634390336959348,0.14282566262666146,0.14930591439989785,0.15578459029210714,0.16226162192272675,0.16873694092854888,0.17521047896444186,0.18168216770407183,0.18815193884062359,0.19461972408752171,0.20108545517915127,0.20754906387157837,0.21401048194327044,0.22046964119581622,0.22692647345464573,0.23338091056974966,0.23983288441639877,0.24628232689586296,0.25272916993612993,0.25917334549262372,0.26561478554892293,0.27205342211747857,0.27848918724033161,0.28492201298983028,0.29135183146934723,0.29777857481399583,0.30420217519134657,0.31062256480214323,0.31703967588101806,0.32345344069720761,0.32986379155526691,0.33627066079578466,0.34267398079609673,0.34907368397100047,0.35546970277346768,0.36186196969535755,0.36825041726812946,0.37463497806355472,0.3810155846944287,0.38739216981528174,0.39376466612308991,0.40013300635798577,0.40649712330396792,0.41285694978961052,0.4192124186887724,0.42556346292130537,0.43191001545376234,0.43825200930010499,0.44458937752241046,0.45092205323157791,0.45724996958803482,0.46357305980244234,0.46989125713639995,0.4762044949031502,0.48251270646828237,0.48881582525043588,0.49511378472200313,0.5014065184098313,0.5076939598959247,0.51397604281814457,0.52025270087091091,0.52652386780590144,0.53278947743275085,0.53904946361975004,0.54530376029454319,0.55155230144482614,0.55779502111904222,0.56403185342707907,0.57026273254096382,0.57648759269555749,0.58270636818924981,0.58891899338465215,0.59512540270929071,0.60132553065629846,0.6075193117851061,0.61370668072213364,0.61988757216147961,0.62606192086561074,0.63222966166605088,0.63839072946406761,0.64454505923136074,0.65069258601074798,0.65683324491685025,0.66296697113677738,0.66909369993081125,0.67521336663309006,0.68132590665229009,0.68743125547230743,0.69352934865293991,0.69962012183056588,0.70570351071882453,0.71177945110929419,0.71784787887216961,0.72390872995693956,0.72996194039306206,0.73600744629064041,0.74204518384109674,0.74807508931784605,0.75409709907696854,0.76011114955788173,0.7661171772840103,0.77211511886345774,0.77810491098967383,0.78408649044212364,0.79005979408695493,0.79602475887766377,0.80198132185576088,0.80792942015143532,0.81386899098421861,0.81979997166364749,0.82572229958992471,0.83163591225458089,0.83754074724113314,0.84343674222574505,0.84932383497788366,0.8552019633609762,0.86107106533306688,0.86693107894747046,0.8727819423534271,0.8786235937967547,0.88445597162050049,0.89027901426559253,0.89609266027148882,0.90189684827682615,0.90769151702006778,0.91347660534014996,0.91925205217712791,0.92501779657281968,0.93077377767144953,0.93651993472029116,0.94225620707030777,0.94798253417679279,0.95369885560000911,0.95940511100582637,0.96510124016635845,0.97078718296059874,0.97646287937505483,0.98212826950438148,0.987783293552014,0.99342789183079816,0.99906200476362128,1.00468557288404,1.0102985368369086,1.0159008373790053,1.0214924153796574,1.0270732118213661,1.0326431678004282,1.0382022245275588,1.0437503233285113,1.049287405644697,1.0548134130338032,1.0603282871704096,1.0658319698466039,1.071324402972597,1.0768055285773357,1.0822752888091136,1.0877336259361836,1.0931804823473652,1.0986158005526541,1.1040395231838283,1.1094515929950539,1.1148519528634893,1.1202405457898874,1.1256173148991981,1.1309822034411685,1.1363351547909417,1.1416761124496539,1.1470050200450317,1.1523218213319866,1.1576264601932087,1.162918880639759,1.1681990268116604,1.1734668429784867,1.1787222735399523,1.1839652630264976,1.1891957560998749,1.1944136975537327,1.1996190323141984,1.204811705440459,1.2099916621253415,1.2151588476958917,1.2203132076139502,1.2254546874767298,1.2305832330173871,1.2356987901055976,1.2408013047481263,1.2458907230893972,1.2509669914120618,1.2560300561375668,1.2610798638267184,1.2661163611802477,1.271139495039372,1.2761492123863571,1.2811454603450751,1.2861281861815652,1.2910973373045873,1.296052861266179,1.3009947057622093,1.305922818632929,1.3108371478635228,1.3157376415846576,1.3206242480730301,1.3254969157519136,1.3303555931916999,1.3352002291104452,1.3400307723744089,1.3448471719985955,1.3496493771472902,1.3544373371345977,1.3592110014249759,1.3639703196337698,1.3687152415277433,1.3734457170256094,1.3781616961985579,1.3828631292707838,1.3875499666200122,1.392222158778021,1.3968796564311647,1.4015224104208941,1.4061503717442743,1.4107634915545035,1.4153617211614273,1.4199450120320538,1.4245133157910648,1.4290665842213259,1.4336047692643981,1.4381278230210415,1.4426356977517238,1.4471283458771222,1.4516057199786265,1.4560677727988398,1.4605144572420763,1.4649457263748593,1.469361533426417,1.4737618317891739,1.4781465750192455,1.482515716836927,1.4868692111271815,1.4912070119401282,1.495529073491525,1.4998353501632549,1.5041257965038046,1.5084003672287456,1.5126590172212124,1.5169017015323776,1.5211283753819278,1.5253389941585345,1.5295335134203263,1.533711888895358,1.5378740764820769,1.5420200322497886,1.5461497124391212,1.5502630734624874,1.5543600719045434,1.5584406645226472,1.5625048082473165,1.5665524601826823,1.570583577606941,1.5745981179728066,1.5785960389079592,1.5825772982154918,1.5865418538743563,1.590489664039807,1.5944206870438418,1.5983348813956424,1.6022322057820122,1.6061126190678119,1.6099760802963943,1.6138225486900359,1.6176519836503687,1.6214643447588064,1.625259591776973,1.6290376846471268,1.6327985834925831,1.6365422486181351,1.6402686405104732,1.6439777198386014,1.6476694474542533,1.6513437843923044,1.6550006918711846,1.6586401312932857,1.6622620642453705,1.665866452498977,1.6694532580108234,1.6730224429232079,1.6765739695644089,1.6801078004490835,1.683623898278662,1.6871222259417422,1.6906027465144804,1.6940654232609824,1.69751021963369,1.7009370992737674,1.704346026011484,1.707736963866598,1.7111098770487345,1.7144647299577642,1.7178014871841785,1.7211201135094634,1.7244205739064717,1.7277028335397926,1.7309668577661181,1.7342126121346109,1.7374400623872657,1.7406491744592727,1.7438399144793759,1.7470122487702313,1.7501661438487619,1.7533015664265115,1.7564184834099954,1.7595168619010506,1.7625966691971824,1.7656578727919097,1.7687004403751079,1.7717243398333504,1.7747295392502473,1.7777160069067826,1.7806837112816478,1.7836326210515761,1.7865627050916719,1.7894739324757405,1.7923662724766132,1.7952396945664721,1.7980941684171732,1.8009296639005643,1.803746151088806,1.8065436002546849,1.8093219818719291,1.8120812666155186,1.8148214253619961,1.8175424291897733,1.8202442493794362,1.8229268574140496,1.8255902249794562,1.8282343239645764,1.8308591264617053,1.8334646047668068,1.8360507313798058,1.8386174790048793,1.8411648205507432,1.8436927291309397,1.8462011780641201,1.8486901408743261,1.8511595912912715,1.8536095032506155,1.8560398508942417,1.8584506085705292,1.8608417508346236,1.8632132524487046,1.8655650883822548,1.867897233812321,1.8702096641237789,1.8725023549095907,1.8747752819710639,1.8770284213181065,1.8792617491694799,1.8814752419530505,1.8836688763060379,1.8858426290752619,1.8879964773173863,1.890130398299162,1.8922443694976661,1.8943383686005402,1.8964123735062253,1.8984663623241951,1.9005003133751885,1.9025142051914361,1.9045080165168884,1.9064817263074401,1.9084353137311512,1.9103687581684679,1.9122820392124393,1.9141751366689344,1.9160480305568528,1.917900701108338,1.9197331287689847,1.9215452941980453,1.9233371782686342,1.9251087620679304,1.9268600268973752,1.9285909542728723,1.9303015259249801,1.9319917237991062,1.9336615300556983,1.9353109270704305,1.9369398974343914,1.938548423954267,1.9401364896525219,1.9417040777675791,1.9432511717539962,1.9447777552826411,1.9462838122408628,1.9477693267326632,1.9492342830788634,1.9506786658172703,1.9521024597028391,1.9535056497078342,1.9548882210219884,1.9562501590526589,1.9575914494249809,1.9589120779820199,1.9602120307849211,1.961491294113056,1.9627498544641679,1.9639876985545137,1.965204813319005,1.9664011859113446,1.9675768037041641,1.9687316542891553,1.9698657254772021,1.970979005298509,1.9720714820027272,1.973143144059079,1.9741939801564796,1.9752239792036554,1.9762331303292631,1.977221422882002,1.9781888464307282,1.9791353907645644,1.9800610458930068,1.9809658020460317,1.9818496496741977,1.9827125794487472,1.9835545822617044,1.9843756492259712,1.9851757716754221,1.9859549411649944,1.9867131494707779,1.987450388590102,1.9881666507416196,1.9888619283653892,1.9895362141229553,1.990189500897426,1.9908217817935463,1.9914330501377737,1.9920232994783462,1.9925925235853514,1.9931407164507928,1.9936678722886518,1.9941739855349505,1.9946590508478086,1.995123063107501,1.995566017416512,1.995987909099586,1.9963887337037773,1.9967684869984978,1.9971271649755602,1.9974647638492216,1.9977812800562229,1.9980767102558266,1.9983510513298517,1.998604300382707,1.9988364547414215,1.9990475119556728,1.9992374697978124,1.9994063262628901,1.9995540795686744,1.9996807281556712,1.9997862706871417,1.9998707060491143,1.9999340333503983,1.9999762519225921,1.9999973613200908,0.0032488017290386909,0.0097463708969465958,0.016243837194710065,0.022741132043439211,0.029238186866053742,0.035734933088006772,0.042231302138008617,0.048727225448750966,0.055222634457628823,0.061717460607466849,0.068211635347241159,0.074705090132803312,0.081197756427603782,0.087689565703415337,0.09418044944105633,0.10067033913111391,0.10715916627466711,0.11364686238400983,0.12013335898337416,0.12661858760965133,0.13310247981311704,0.13958496715815202,0.14606598122396497,0.15254545360531455,0.15902331591323152,0.16549949977574047,0.17197393683858148,0.17844655876593166,0.18491729724112671,0.19138608396738038,0.19785285066850788,0.20431752908964471,0.21078005099796759,0.21724034818341467,0.22369835245940536,0.23015399566356004,0.23660720965841958,0.24305792633216444,0.24950607759933402,0.2559515954015435,0.26239441170820493,0.26883445851724341,0.27527166785581514,0.28170597178102524,0.28813730238064444,0.29456559177382619,0.30099077211182296,0.30741277557870234,0.31383153439206346,0.32024698080375036,0.32665904710057003,0.33306766560500495,0.33947276867592824,0.34587428870931725,0.35227215813896745,0.35866630943720518,0.3650566751156008,0.37144318772568058,0.377825779859639,0.3842043841510504,0.3905789332755783,0.39694935995168873,0.40331559694135855,0.40967757705078539,0.41603523313109725,0.42238849807906093,0.42873730483779032,0.43508158639745426,0.44142127579598373,0.44775630611977918,0.4540866105044149,0.46041212213534732,0.4667327742486187,0.47304850013156208,0.47935923312350537,0.48566490661647516,0.49196545405589948,0.49826080894131042,0.5045509048270459,0.51083567532295171,0.51711505409508018,0.52338897486639291,0.52965737141745883,0.53592017758715349,0.54217732727335721,0.5484287544336528,0.55467439308602295,0.56091417730954607,0.56714804124509255,0.57337591909602015,0.57959774512886675,0.58581345367404669,0.59202297912654223,0.59822625594659629,0.60442321866040438,0.61061380186080561,0.61679794020797318,0.62297556843010349,0.6291466213241057,0.63531103375628972,0.64146874066305382,0.64761967705157009,0.65376377800047258,0.65990097866054132,0.66603121425538658,0.672154420082133,0.67827053151210248,0.68437948399149628,0.6904812130420761,0.69657565426184509,0.70266274332572753,0.70874241598624677,0.71481460807420483,0.72087925549935916,0.72693629425109851,0.73298566039911939,0.73902729009410018,0.74506111956837529,0.75108708513660827,0.75710512319646406,0.76311517022928055,0.76911716280073716,0.77511103756152722,0.78109673124802503,0.78707418068295343,0.79304332277605105,0.79900409452473831,0.80495643301478204,0.81090027542095966,0.81683555900772253,0.82276222112985808,0.82868019923314962,0.83458943085503923,0.84048985362528472,0.84638140526661942,0.85226402359540843,0.8581376465223054,0.86400221205290806,0.86985765828841233,0.87570392342626557,0.88154094576081943,0.88736866368397949,0.8931870156858579,0.89899594035542096,0.90479537638113805,0.91058526255162808,0.91636553775630625,0.92213614098602836,0.92789701133373559,0.93364808799509658,0.93938931026914951,0.94512061755894339,0.95084194937217559,0.95655324532183339,0.96225444512682878,0.96794548861263596,0.97362631571192615,0.97929686646520164,0.98495708102142843,0.99060689963866821,0.99624626268470884,1.001875110637694,1.0074933840867504,1.0131010237326159,1.0186979703882657,1.0242841649795358,1.0298595485457473,1.035424062240329,1.0409776473314372,1.046520245202577,1.0520517973532209,1.057572245399425,1.0630815310744459,1.0685795962293567,1.0740663828336594,1.0795418329758979,1.0850058888642691,1.090458492827233,1.0958995873141215,1.101329114895746,1.1067470182650023,1.1121532402374774,1.1175477237520517,1.1229304118715016,1.1283012477831007,1.133660174799219,1.1390071363579215,1.1443420760235656,1.1496649374873957,1.1549756645681388,1.1602742012125962,1.1655604914962359,1.1708344796237828,1.176096109929808,1.1813453268793153,1.1865820750683276,1.1918062992244729,1.1970179442075661,1.2022169550101918,1.207403276758285,1.2125768547117093,1.2177376342648365,1.2228855609471208,1.2280205804236755,1.2331426384958455,1.238251681101779,1.2433476543169999,1.2484305043549746,1.2535001775676817,1.2585566204461771,1.2635997796211593,1.2686296018635315,1.2736460340849656,1.2786490233384606,1.2836385168189028,1.2886144618636222,1.293576805952948,1.2985254967107642,1.3034604819050624,1.3083817094484911,1.313289127398908,1.3181826839599267,1.3230623274814632,1.3279280064602828,1.3327796695405414,1.3376172655143299,1.3424407433222119,1.3472500520537656,1.3520451409481189,1.3568259593944865,1.3615924569327034,1.3663445832537573,1.3710822882003204,1.3758055217672784,1.380514234102258,1.3852083755061535,1.389887896433651,1.3945527474937518,1.3992028794502931,1.4038382432224683,1.4084587898853451,1.4130644706703803,1.417655236965937,1.4222310403177956,1.4267918324296669,1.4313375651637006,1.4358681905409936,1.4403836607420966,1.4448839281075194,1.4493689451382328,1.4538386644961709,1.4582930390047302,1.4627320216492672,1.4671555655775956,1.4715636241004806,1.4759561506921306,1.4803330989906902,1.4846944227987269,1.4890400760837215,1.4933700129785519,1.4976841877819784,1.5019825549591259,1.5062650691419632,1.5105316851297841,1.5147823578896824,1.5190170425570289,1.5232356944359433,1.5274382689997672,1.5316247218915335,1.535795008924435,1.5399490860822902,1.5440869095200083,1.5482084355640517,1.5523136207128976,1.5564024216374956,1.5604747951817275,1.5645306983628602,1.5685700883720011,1.5725929225745492,1.5765991585106454,1.5805887538956205,1.5845616666204416,1.5885178547521563,1.5924572765343357,1.5963798903875146,1.6002856549096307,1.6041745288764624,1.6080464712420617,1.6119014411391894,1.6157393978797465,1.6195603009552018,1.6233641100370211,1.627150784977093,1.6309202858081511,1.6346725727441973,1.6384076061809212,1.6421253466961179,1.6458257550501045,1.6495087921861342,1.653174419230808,1.6568225974944859,1.6604532884716945,1.6640664538415337,1.667662055468081,1.6712400554007947,1.6748004158749132,1.6783430993118549,1.6818680683196139,1.6853752856931552,1.6888647144148072,1.6923363176546522,1.6957900587709156,1.6992259013103523,1.7026438090086313,1.7060437457907192,1.7094256757712598,1.7127895632549541,1.7161353727369364,1.7194630689031485,1.7227726166307138,1.7260639809883067,1.7293371272365223,1.7325920208282428,1.7358286274090009,1.7390469128173442,1.7422468430851952,1.7454283844382092,1.7485915032961314,1.751736166273151,1.7548623401782539,1.7579699920155727,1.7610590889847353,1.7641295984812106,1.7671814880966532,1.7702147256192451,1.7732292790340356,1.7762251165232799,1.7792022064667736,1.7821605174421882,1.7851000182254011,1.7880206777908263,1.7909224653117413,1.7938053501606122,1.796669301909418,1.799514290329971,1.8023402853942356,1.8051472572746461,1.8079351763444207,1.8107040131778747,1.8134537385507308,1.8161843234404278,1.8188957390264269,1.8215879566905153,1.8242609480171095,1.8269146847935538,1.829549139010419,1.8321642828617979,1.8347600887455988,1.8373365292638359,1.8398935772229201,1.8424312056339449,1.8449493877129715,1.8474480968813116,1.849927306765808,1.8523869911991124,1.8548271242199625,1.8572476800734556,1.8596486332113198,1.8620299582921849,1.8643916301818486,1.8667336239535428,1.869055914888196,1.8713584784746951,1.8736412904101425,1.8759043266001145,1.878147563158914,1.880370976409824,1.8825745428853564,1.8847582393275,1.8869220426879663,1.8890659301284329,1.8911898790207835,1.8932938669473478,1.895377871701138,1.8974418712860825,1.8994858439172591,1.9015097680211235,1.9035136222357383,1.9054973854109984,1.9074610366088534,1.9094045551035288,1.9113279203817455,1.9132311121429357,1.9151141102994571,1.9169768949768051,1.9188194465138231,1.9206417454629083,1.9224437725902195,1.924225508875878,1.925986935514169,1.9277280339137408,1.9294487856977998,1.9311491727043053,1.9328291769861612,1.9344887808114049,1.9361279666633948,1.9377467172409952,1.9393450154587593,1.9409228444471081,1.9424801875525104,1.9440170283376568,1.9455333505816346,1.9470291382800982,1.9485043756454379,1.9499590471069477,1.9513931373109881,1.9528066311211489,1.9541995136184092,1.9555717701012942,1.9569233860860316,1.9582543473067022,1.9595646397153936,1.9608542494823453,1.9621231629960969,1.963371366863631,1.9645988479105143,1.965805593181037,1.9669915899383494,1.9681568256645969,1.969301288061051,1.9704249650482397,1.9715278447660753,1.9726099155739798,1.973671166051006,1.9747115849959607,1.9757311614275204,1.9767298845843488,1.9777077439252104,1.9786647291290804,1.979600830095255,1.9805160369434578,1.9814103400139429,1.9822837298675988,1.9831361972860464,1.9839677332717371,1.9847783290480474,1.9855679760593719,1.9863366659712132,1.98708439067027,1.987811142264523,1.9885169130833182,1.9892016956774472,1.9898654828192266,1.9905082675025736,1.9911300429430807,1.9917308025780867,1.9923105400667465,1.9928692492900972,1.9934069243511237,1.9939235595748199,1.9944191495082497,1.9948936889206039,1.995347172803255,1.9957795963698113,1.9961909550561658,1.9965812445205462,1.9969504606435591,1.9972985995282346,1.9976256575000666,1.9979316311070523,1.9982165171197281,1.9984803125312043,1.9987230145571957,1.9989446206360524,1.9991451284287858,1.9993245358190936,1.9994828409133829,1.9996200420407884,1.9997361377531917,1.9998311268252362,1.9999050082543393,1.9999577812607034,1.9999894452873255,0],"twiddles":[0.99998072620120437,0.0062086412452350944,0.99992290554777596,0.012417043162265879,0.9998265402685621,0.01862496643211357,0.99969163407821282,0.024832171754250079,0.99951819217703775,0.03103841985582249,0.99930622125080526,0.037243471500876431,0.9990557294704856,0.043447087499578048,0.99876672649193488,0.049649028717434207,0.99843922345552372,0.055849056084510573,0.99807323298570738,0.062046930604647131,0.99766876919053915,0.068242413364670976,0.99722584766112676,0.074435265543605772,0.99674448547103112,0.080625248421877765,0.99622470117560802,0.086812123390517915,0.99566651481129342,0.092995651960359541,0.99506994789483083,0.099175595771231667,0.99443502342244139,0.10535171660114712,0.99376176586893838,0.11152377637548545,0.993050201186783,0.11769153717617022,0.99230035680508422,0.12385476125083998,0.99151226162854156,0.1300132110220133,0.99068594603633076,0.13616664909624659,0.98982144188093268,0.14231483827328514,0.98891878248690579,0.14845754155520666,0.98797800264960101,0.15459452215555688,0.98699913863382094,0.16072554350847723,0.98598222817242187,0.16685036927782379,0.98492731046485893,0.17296876336627745,0.98383442617567551,0.17908048992444497,0.98270361743293533,0.18518531335995042,0.98153492782659879,0.19128299834651666,0.98032840240684249,0.19737330983303658,0.97908408768232291,0.20345601305263378,0.97780203161838319,0.20953087353171229,0.97648228363520462,0.21559765709899489,0.97512489460590146,0.22165612989455002,0.97372991685455967,0.22770605837880634,0.97229740415422028,0.23374720934155516,0.97082741172480647,0.23977934991094016,0.96931999623099485,0.24580224756243407,0.96777521578003123,0.25181567012780193,0.96619312991949091,0.25781938580405045,0.9645737996349828,0.26381316316236381,0.96291728734779936,0.26979677115702427,0.96122365691250933,0.27576997913431867,0.95949297361449737,0.28173255684142967,0.95772530416744683,0.28768427443531114,0.95592071671076817,0.29362490249154838,0.95407928080697257,0.29955421201320148,0.95220106743899002,0.30547197443963314,0.95028614900743391,0.31137796165531872,0.94833459932780917,0.3172719459986395,0.94634649362766754,0.32315370027065898,0.94432190854370768,0.32902299774388022,0.94226092211882051,0.33487961217098611,0.94016361379908142,0.34072331779356052,0.93803006443068759,0.34655388935079062,0.9358603562568415,0.35237110208815037,0.93365457291458076,0.3581747317660639,0.93141279943155397,0.36396455466854993,0.92913512222274319,0.36974034761184515,0.92682162908713295,0.37550188795300732,0.92447240920432583,0.38124895359849792,0.92208755313110424,0.38698132301274296,0.91966715279794065,0.39269877522667324,0.91721130150545305,0.39840108984624145,0.91472009392080866,0.40408804706091828,0.91219362607407517,0.40975942765216555,0.90963199535451844,0.41541501300188638,0.90703530050684844,0.42105458510085264,0.90440364162741338,0.42667792655710846,0.90173712016034069,0.4322848206043502,0.89903583889362693,0.43787505111028246,0.89629990195517528,0.44344840258494922,0.8935294148087819,0.44900466018904056,0.89072448425007034,0.45454360974217439,0.88788521840237522,0.46006503773115209,0.88501172671257378,0.46556873131818949,0.88210411994686744,0.4710544783491209,0.8791625101865117,0.47652206736157732,0.87618701082349593,0.48197128759313768,0.87317773655617203,0.48740192898945339,0.87013480338483373,0.49281378221234506,0.8670583286072443,0.49820663864787257,0.86394843081411554,0.50358029041437613,0.86080522988453601,0.50893453037048986,0.85762884698135033,0.51426915212312663,0.85441940454648857,0.51958395003543356,0.85117702629624603,0.52487871923471963,0.84790183721651491,0.53015325562035243,0.84459396355796568,0.53540735587162569,0.84125353283118121,0.54064081745559756,0.83788067380174081,0.54585343863489655,0.8344755164852572,0.55104501847549925,0.83103819214236418,0.55621535685447498,0.82756883327365738,0.56136425446770066,0.82406757361458649,0.56649151283754284,0.82053454813029991,0.57159693432050929,0.81696989301044209,0.57668032211486708,0.81337374566390419,0.58174148026822914,0.80974624471352719,0.58678021368510769,0.80608752999075772,0.5917963281344345,0.80239774253025886,0.59678963025704823,0.79867702456447276,0.60175992757314822,0.79492551951813828,0.60670702848971347,0.79114337200276219,0.61163074230788872,0.78733072781104518,0.616530879230335,0.78348773391126125,0.62140725036854594,0.77961453844159267,0.62625966775012942,0.77571129070441991,0.63108794432605275,0.77177814116056587,0.63589189397785351,0.76781524142349666,0.64067133152481348,0.76382274425347663,0.64542607273109753,0.75980080355167989,0.65015593431285501,0.75574957435425838,0.65486073394528499,0.75166921282636467,0.65954029026966454,0.74755987625613318,0.66419442290033937,0.74342172304861631,0.66882295243167778,0.73925491271967869,0.67342570044498606,0.7350596058898482,0.678002489515386,0.73083596427812414,0.68255314321865401,0.72658415069574378,0.68707748613802266,0.72230432903990616,0.69157534387094144,0.71799666428745423,0.6960465430358006,0.71366132248851544,0.70049091127861407,0.70929847076010077,0.7049082772796631,0,0.99992290554777596,0.012417043162265879,0.99969163407821282,0.024832171754250079,0.99930622125080526,0.037243471500876431,0.99876672649193488,0.049649028717434207,0.99807323298570738,0.062046930604647131,0.99722584766112676,0.074435265543605772,0.99622470117560802,0.086812123390517915,0.99506994789483083,0.099175595771231667,0.99376176586893838,0.11152377637548545,0.99230035680508422,0.12385476125083998,0.99068594603633076,0.13616664909624659,0.98891878248690579,0.14845754155520666,0.98699913863382094,0.16072554350847723,0.98492731046485893,0.17296876336627745,0.98270361743293533,0.18518531335995042,0.98032840240684249,0.19737330983303658,0.97780203161838319,0.20953087353171229,0.97512489460590146,0.22165612989455002,0.97229740415422028,0.23374720934155516,0.96931999623099485,0.24580224756243407,0.96619312991949091,0.25781938580405045,0.96291728734779936,0.26979677115702427,0.95949297361449737,0.28173255684142967,0.95592071671076817,0.29362490249154838,0.95220106743899002,0.30547197443963314,0.94833459932780917,0.3172719459986395,0.94432190854370768,0.32902299774388022,0.94016361379908142,0.34072331779356052,0.9358603562568415,0.35237110208815037,0.93141279943155397,0.36396455466854993,0.92682162908713295,0.37550188795300732,0.92208755313110424,0.38698132301274296,0.91721130150545305,0.39840108984624145,0.91219362607407517,0.40975942765216555,0.90703530050684844,0.42105458510085264,0.90173712016034069,0.4322848206043502,0.89629990195517528,0.44344840258494922,0.89072448425007034,0.45454360974217439,0.88501172671257378,0.46556873131818949,0.8791625101865117,0.47652206736157732,0.87317773655617203,0.48740192898945339,0.8670583286072443,0.49820663864787257,0.86080522988453601,0.50893453037048986,0.85441940454648857,0.51958395003543356,0.84790183721651491,0.53015325562035243,0.84125353283118121,0.54064081745559756,0.8344755164852572,0.55104501847549925,0.82756883327365738,0.56136425446770066,0.82053454813029991,0.57159693432050929,0.81337374566390419,0.58174148026822914,0.80608752999075772,0.5917963281344345,0.79867702456447276,0.60175992757314822,0.79114337200276219,0.61163074230788872,0.78348773391126125,0.62140725036854594,0.77571129070441991,0.63108794432605275,0.76781524142349666,0.64067133152481348,0.75980080355167989,0.65015593431285501,0.75166921282636467,0.65954029026966454,0.74342172304861631,0.66882295243167778,0.7350596058898482,0.678002489515386,0.72658415069574378,0.68707748613802266,0.71799666428745423,0.6960465430358006,0.70929847076010077,0.7049082772796631,0.70049091127861418,0.71366132248851533,0.69157534387094155,0.72230432903990605,0.68255314321865412,0.73083596427812403,0.67342570044498617,0.73925491271967869,0.66419442290033937,0.74755987625613307,0.6548607339452851,0.75574957435425827,0.64542607273109764,0.76382274425347652,0.63589189397785351,0.77177814116056587,0.62625966775012953,0.77961453844159256,0.616530879230335,0.78733072781104518,0.60670702848971358,0.79492551951813817,0.59678963025704834,0.80239774253025875,0.58678021368510769,0.80974624471352707,0.57668032211486719,0.81696989301044198,0.56649151283754295,0.82406757361458649,0.5562153568544751,0.83103819214236407,0.54585343863489677,0.83788067380174069,0.53540735587162591,0.84459396355796557,0.52487871923471963,0.85117702629624603,0.51426915212312663,0.85762884698135033,0.50358029041437624,0.86394843081411543,0.49281378221234523,0.87013480338483362,0.4819712875931379,0.87618701082349582,0.47105447834912095,0.88210411994686744,0.4600650377311522,0.88788521840237522,0.44900466018904073,0.89352941480878179,0.43787505111028263,0.89903583889362682,0.42667792655710868,0.90440364162741327,0.41541501300188644,0.90963199535451833,0.40408804706091839,0.91472009392080866,0.3926987752266734,0.91966715279794065,0.38124895359849803,0.92447240920432572,0.36974034761184515,0.92913512222274319,0.35817473176606396,0.93365457291458076,0.34655388935079073,0.93803006443068759,0.33487961217098627,0.9422609221188204,0.32315370027065915,0.94634649362766754,0.31137796165531872,0.95028614900743391,0.29955421201320154,0.95407928080697246,0.28768427443531125,0.95772530416744683,0.27576997913431883,0.96122365691250933,0.26381316316236403,0.9645737996349828,0.25181567012780193,0.96777521578003123,0.23977934991094024,0.97082741172480647,0.22770605837880645,0.97372991685455967,0.21559765709899506,0.97648228363520462,0.20345601305263397,0.9790840876823228,0.19128299834651671,0.98153492782659879,0.17908048992444506,0.98383442617567551,0.1668503692778239,0.98598222817242187,0.15459452215555705,0.98797800264960101,0.14231483827328534,0.98982144188093268,0.13001321102201333,0.99151226162854156,0.11769153717617029,0.993050201186783,0.10535171660114723,0.99443502342244139,0.092995651960359707,0.99566651481129342,0.080625248421877987,0.99674448547103112,0.068242413364671003,0.99766876919053915,0.055849056084510657,0.99843922345552372,0.043447087499578166,0.9990557294704856,0.03103841985582266,0.99951819217703775,0.018624966432113782,0.9998265402685621,0.0062086412452351325,0.99998072620120437,0,0.9998265402685621,0.01862496643211357,0.99930622125080526,0.037243471500876431,0.99843922345552372,0.05584905608451058,0.99722584766112676,0.074435265543605772,0.99566651481129342,0.092995651960359554,0.99376176586893838,0.11152377637548547,0.99151226162854156,0.13001321102201333,0.98891878248690579,0.14845754155520666,0.98598222817242187,0.16685036927782379,0.98270361743293533,0.18518531335995045,0.97908408768232291,0.20345601305263381,0.97512489460590146,0.22165612989455005,0.97082741172480647,0.23977934991094016,0.96619312991949091,0.2578193858040505,0.96122365691250933,0.27576997913431872,0.95592071671076817,0.29362490249154838,0.95028614900743391,0.31137796165531872,0.94432190854370768,0.32902299774388022,0.93803006443068759,0.34655388935079068,0.93141279943155386,0.36396455466854999,0.92447240920432583,0.38124895359849792,0.91721130150545305,0.39840108984624151,0.90963199535451833,0.41541501300188644,0.90173712016034069,0.43228482060435025,0.8935294148087819,0.44900466018904062,0.88501172671257378,0.46556873131818949,0.87618701082349593,0.48197128759313779,0.8670583286072443,0.49820663864787268,0.85762884698135033,0.51426915212312663,0.8479018372165148,0.53015325562035243,0.83788067380174081,0.54585343863489655,0.82756883327365738,0.56136425446770066,0.81696989301044198,0.57668032211486719,0.80608752999075772,0.5917963281344345,0.79492551951813817,0.60670702848971358,0.78348773391126125,0.62140725036854594,0.77177814116056587,0.63589189397785351,0.75980080355167989,0.65015593431285512,0.74755987625613318,0.66419442290033937,0.73505960588984809,0.678002489515386,0.72230432903990616,0.69157534387094155,0.70929847076010077,0.7049082772796631,0.69604654303580071,0.71799666428745423,0.68255314321865401,0.73083596427812414,0.66882295243167789,0.74342172304861631,0.65486073394528499,0.75574957435425827,0.64067133152481348,0.76781524142349666,0.62625966775012942,0.77961453844159256,0.61163074230788872,0.79114337200276219,0.59678963025704834,0.80239774253025886,0.58174148026822914,0.81337374566390419,0.56649151283754295,0.82406757361458649,0.55104501847549925,0.83447551648525709,0.5354073558716258,0.84459396355796568,0.51958395003543356,0.85441940454648857,0.50358029041437602,0.86394843081411554,0.48740192898945334,0.87317773655617215,0.47105447834912095,0.88210411994686744,0.4545436097421745,0.89072448425007034,0.43787505111028241,0.89903583889362693,0.4210545851008527,0.90703530050684844,0.40408804706091839,0.91472009392080866,0.38698132301274296,0.92208755313110435,0.36974034761184515,0.92913512222274319,0.35237110208815042,0.9358603562568415,0.33487961217098605,0.94226092211882051,0.3172719459986395,0.94833459932780917,0.29955421201320154,0.95407928080697246,0.28173255684142962,0.95949297361449737,0.26381316316236381,0.9645737996349828,0.24580224756243413,0.96931999623099485,0.22770605837880645,0.97372991685455967,0.20953087353171224,0.97780203161838319,0.19128299834651671,0.98153492782659879,0.17296876336627753,0.98492731046485893,0.15459452215555683,0.98797800264960101,0.13616664909624659,0.99068594603633076,0.11769153717617029,0.993050201186783,0.099175595771231584,0.99506994789483083,0.080625248421877765,0.99674448547103112,0.062046930604647194,0.99807323298570738,0.043447087499577944,0.9990557294704856,0.024832171754250051,0.99969163407821282,0.0062086412452351325,0.99998072620120437,-0.012417043162265993,0.99992290554777596,-0.031038419855822539,0.99951819217703775,-0.049649028717434186,0.99876672649193488,-0.068242413364671101,0.99766876919053915,-0.086812123390517984,0.99622470117560802,-0.1053517166011471,0.99443502342244139,-0.12385476125083993,0.99230035680508422,-0.14231483827328523,0.98982144188093268,-0.16072554350847726,0.98699913863382094,-0.17908048992444492,0.98383442617567551,-0.19737330983303669,0.98032840240684249,-0.21559765709899495,0.97648228363520462,-0.23374720934155513,0.97229740415422028,-0.25181567012780204,0.96777521578003123,-0.26979677115702433,0.96291728734779924,-0.28768427443531114,0.95772530416744683,-0.30547197443963331,0.95220106743899002,-0.32315370027065904,0.94634649362766754,-0.34072331779356052,0.94016361379908142,-0.35817473176606385,0.93365457291458076,-0.37550188795300743,0.92682162908713295,-0.39269877522667324,0.91966715279794065,-0.4097594276521655,0.91219362607407517,-0.42667792655710857,0.90440364162741338,-0.44344840258494927,0.89629990195517528,-0.46006503773115209,0.88788521840237522,-0.47652206736157726,0.87916251018651181,-0.49281378221234529,0.87013480338483362,-0.50893453037049008,0.86080522988453589,-0.52487871923471974,0.85117702629624603,-0.54064081745559767,0.84125353283118109,-0.5562153568544751,0.83103819214236418,-0.57159693432050929,0.82053454813029991,-0.58678021368510758,0.80974624471352719,-0.60175992757314845,0.79867702456447254,-0.61653087923033512,0.78733072781104507,-0.63108794432605286,0.7757112907044198,-0.64542607273109764,0.76382274425347663,-0.65954029026966454,0.75166921282636467,-0.67342570044498606,0.7392549127196788,-0.68707748613802289,0.72658415069574356,-0.70049091127861418,0.71366132248851533,0,0.99969163407821282,0.024832171754250079,0.99876672649193488,0.049649028717434207,0.99722584766112676,0.074435265543605772,0.99506994789483083,0.099175595771231667,0.99230035680508422,0.12385476125083998,0.98891878248690579,0.14845754155520666,0.98492731046485893,0.17296876336627745,0.98032840240684249,0.19737330983303658,0.97512489460590146,0.22165612989455002,0.96931999623099485,0.24580224756243407,0.96291728734779936,0.26979677115702427,0,0.99876672649193488,0.049649028717434207,0.99506994789483083,0.099175595771231667,0.98891878248690579,0.14845754155520666,0.98032840240684249,0.19737330983303658,0.96931999623099485,0.24580224756243407,0.95592071671076817,0.29362490249154838,0.94016361379908142,0.34072331779356052,0.92208755313110424,0.38698132301274296,0.90173712016034069,0.4322848206043502,0.8791625101865117,0.47652206736157732,0.85441940454648857,0.51958395003543356,0,0.99722584766112676,0.074435265543605772,0.98891878248690579,0.14845754155520666,0.97512489460590146,0.22165612989455005,0.95592071671076817,0.29362490249154838,0.93141279943155386,0.36396455466854999,0.90173712016034069,0.43228482060435025,0.8670583286072443,0.49820663864787268,0.82756883327365738,0.56136425446770066,0.78348773391126125,0.62140725036854594,0.73505960588984809,0.678002489515386,0.68255314321865401,0.73083596427812414,0,0.99506994789483083,0.099175595771231667,0.98032840240684249,0.19737330983303658,0.95592071671076817,0.29362490249154838,0.92208755313110424,0.38698132301274296,0.8791625101865117,0.47652206736157732,0.82756883327365738,0.56136425446770066,0.76781524142349666,0.64067133152481348,0.70049091127861418,0.71366132248851533,0.62625966775012953,0.77961453844159256,0.54585343863489677,0.83788067380174069,0.4600650377311522,0.88788521840237522,0,0.99230035680508422,0.12385476125083998,0.96931999623099485,0.24580224756243407,0.93141279943155397,0.36396455466854993,0.8791625101865117,0.47652206736157732,0.81337374566390419,0.58174148026822914,0.7350596058898482,0.678002489515386,0.64542607273109764,0.76382274425347652,0.54585343863489677,0.83788067380174069,0.43787505111028263,0.89903583889362682,0.32315370027065915,0.94634649362766754,0.20345601305263397,0.9790840876823228,0,0.98891878248690579,0.14845754155520666,0.95592071671076817,0.29362490249154838,0.90173712016034069,0.43228482060435025,0.82756883327365738,0.56136425446770066,0.73505960588984809,0.678002489515386,0.62625966775012942,0.77961453844159256,0.50358029041437602,0.86394843081411554,0.36974034761184515,0.92913512222274319,0.22770605837880645,0.97372991685455967,0.080625248421877765,0.99674448547103112,-0.068242413364671101,0.99766876919053915,0,0.98492731046485893,0.17296876336627745,0.94016361379908142,0.34072331779356052,0.8670583286072443,0.49820663864787257,0.76781524142349666,0.64067133152481348,0.64542607273109764,0.76382274425347663,0.50358029041437624,0.86394843081411543,0.34655388935079073,0.93803006443068759,0.17908048992444506,0.98383442617567551,0.0062086412452351325,0.99998072620120437,-0.16685036927782379,0.98598222817242187,-0.33487961217098616,0.94226092211882051,0,0.98032840240684249,0.19737330983303658,0.92208755313110424,0.38698132301274296,0.82756883327365738,0.56136425446770066,0.70049091127861418,0.71366132248851533,0.54585343863489677,0.83788067380174069,0.36974034761184515,0.92913512222274319,0.17908048992444506,0.98383442617567551,-0.018624966432113439,0.9998265402685621,-0.21559765709899473,0.97648228363520462,-0.40408804706091805,0.91472009392080877,-0.57668032211486708,0.81696989301044209,0,0.97512489460590146,0.22165612989455002,0.90173712016034069,0.4322848206043502,0.78348773391126125,0.62140725036854594,0.62625966775012953,0.77961453844159256,0.43787505111028263,0.89903583889362682,0.22770605837880645,0.97372991685455967,0.0062086412452353546,0.99998072620120437,-0.21559765709899473,0.97648228363520462,-0.42667792655710812,0.90440364162741349,-0.61653087923033478,0.78733072781104541,-0.77571129070441969,0.63108794432605297,0,0.96931999623099485,0.24580224756243407,0.8791625101865117,0.47652206736157732,0.7350596058898482,0.678002489515386,0.54585343863489677,0.83788067380174069,0.32315370027065915,0.94634649362766754,0.080625248421877987,0.99674448547103112,-0.16685036927782357,0.98598222817242198,-0.40408804706091805,0.91472009392080877,-0.61653087923033478,0.78733072781104541,-0.79114337200276197,0.61163074230788905,-0.91721130150545283,0.39840108984624178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99976036590927742,0.021890882964094707,0.99904157848610464,0.043771274324520985,0.99784398222242265,0.065630687505902216,0.99616815108801504,0.087458645987035497,0.99401488825542195,0.10924468832195491,0.9913852257150052,0.13097837315376973,0.98828042378034853,0.1526492842188745,0.98470197048422881,0.1742470353391328,0.98065158086544968,0.19576127539964189,0.97613119614687782,0.21718169330969281,0.97114298280507683,0.23849802294454803,0.96568933153198366,0.25970004806566838,0.95977285608912621,0.28077760721703104,0.95339639205493054,0.30172059859519235,0.94656299546571832,0.32251898489076031,0.93927594135104597,0.34316279809895822,0.93153872216408717,0.36364214429697161,0.92335504610781116,0.38394720838579094,0.91472883535775873,0.40406825879427632,0.90566422418226911,0.42399565214318968,0,0.99904157848610464,0.043771274324520985,0.99616815108801504,0.087458645987035497,0.9913852257150052,0.13097837315376973,0.98470197048422881,0.1742470353391328,0.97613119614687782,0.21718169330969281,0.96568933153198366,0.25970004806566838,0.95339639205493054,0.30172059859519235,0.93927594135104597,0.34316279809895822,0.92335504610781116,0.38394720838579094,0.90566422418226911,0.42399565214318968,0.88623738610308367,0.46323136279096411,0.86511177006937912,0.50157913163071866,0.84232787057095726,0.53896545200912149,0.81792936076671763,0.57531866021862066,0.79196300877006709,0.61056907286552164,0.76447858800178725,0.64464912044211586,0.73552878178220094,0.67749347684681915,0.70516908234551601,0.70903918460405468,0.67345768446992338,0.73922577554385172,0.64045537392734264,0.76799538670983414,0,0.99784398222242265,0.065630687505902216,0.9913852257150052,0.13097837315376973,0.98065158086544968,0.19576127539964189,0.96568933153198366,0.25970004806566838,0.94656299546571832,0.32251898489076036,0.92335504610781116,0.38394720838579094,0.8961655569610556,0.44371983786695973,0.86511177006937912,0.50157913163071866,0.83032759046598059,0.55727559834516238,0.79196300877006698,0.61056907286552176,0.75018345442196954,0.66122975183480714,0.70516908234551601,0.70903918460405468,0.65711399611359278,0.75379121519929182,0.60622541096663796,0.79529287127342652,0.55272276029315681,0.83336519620986904,0.49683674942514833,0.86784402078982625,0.43880836082851121,0.89858067109580941,0.37888781497808238,0.92544260959885261,0.31733349139805328,0.94831400666505061,0.25441081452027436,0.96709624001705774,0,0.99616815108801504,0.087458645987035497,0.98470197048422881,0.1742470353391328,0.96568933153198366,0.25970004806566838,0.93927594135104597,0.34316279809895822,0.90566422418226911,0.42399565214318968,0.86511177006937912,0.50157913163071866,0.81792936076671763,0.57531866021862066,0.76447858800178725,0.64464912044211586,0.70516908234551601,0.70903918460405468,0.64045537392734264,0.76799538670983414,0.57083340905365243,0.82106590424166659,0.49683674942514833,0.86784402078982625,0.41903248308120672,0.90797124300431353,0.3380168784085027,0.94114004797956163,0.25441081452027459,0.96709624001705763,0.16885502302641281,0.98564089870436566,0.082005177660017137,0.99663190338105723,-0.0054731306079656575,0.9999850223085085,-0.092909494456818106,0.99567455819649142,-0.17963382801517547,0.98373354513944189,0,0.99401488825542195,0.10924468832195491,0.97613119614687782,0.21718169330969281,0.94656299546571832,0.32251898489076031,0.90566422418226911,0.42399565214318968,0.85392444972922477,0.52039699668103445,0.79196300877006709,0.61056907286552164,0.72052159360078705,0.69343250079224172,0.64045537392734264,0.76799538670983414,0.55272276029315692,0.83336519620986893,0.45837393169071872,0.88875943806318725,0.35853826468433952,0.93351503081479226,0.25441081452027459,0.96709624001705763,0.14723801004834369,0.98910109109079636,0.038302733690035271,0.99926618105081,-0.071091034950788265,0.99746983149848989,-0.17963382801517547,0.98373354513944189,-0.28602636401200837,0.95822174839129493,-0.38899510050782682,0.92123982316273412,-0.48730747871437979,0.87323045136380484,-0.57978667749278467,0.81476831590451393,0,0.9913852257150052,0.13097837315376973,0.96568933153198366,0.25970004806566838,0.92335504610781116,0.38394720838579094,0.86511177006937912,0.50157913163071866,0.79196300877006698,0.61056907286552176,0.70516908234551601,0.70903918460405468,0.60622541096663796,0.79529287127342652,0.49683674942514833,0.86784402078982625,0.37888781497808238,0.92544260959885261,0.25441081452027436,0.96709624001705774,0.12555043057695864,0.99208723879603467,-0.0054731306079656575,0.9999850223085085,-0.13640239222325035,0.99065351530985579,-0.26498150219666178,0.96425349545314099,-0.38899510050782704,0.92123982316273412,-0.50630648884130469,0.86235360459453625,-0.61489444493399026,0.78860942271147128,-0.71288804732226885,0.70127785647704766,-0.79859891047424336,0.60186358935339457,-0.87055027491026105,0.49207948428446885,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99941063424550525,0.034327600513243496,0.99764323168600633,0.068614738002134038,0.99469987561458906,0.1028209971373604,0.99058403545779705,0.13690605792347524,0.98530056268610899,0.17082974322534419,0.97885568509535781,0.2045520661262008,0.97125699946583144,0.23803327706148561,0.96251346260770809,0.27123391067291003,0.95263538080338261,0.30411483232751785,0.94163439765912593,0.33663728424691025,0.92952348038040034,0.36876293119226017,0.91631690448700476,0.40045390565126643,0.90203023698607077,0.43167285247378379,0.88668031802274005,0.46238297290351488,0.87028524103015525,0.49254806795386441,0.85286433140215967,0.52213258107682481,0.83443812371384729,0.55110164007460005,0.81502833751681136,0.57942109820456367,0.79465785173762515,0.60705757442910036,0.77335067770972987,0.63397849276288665,0.75113193087051988,0.66015212067123175,0.72802780115698484,0.68554760647421553,0.70406552213480567,0.71013501571253579,0.67927333889729313,0.73388536643219904,0.65368047477200597,0.75677066334646259,0.62731709687429382,0.7787639308347607,0.60021428054836823,0.79983924473971935,0.57240397273781485,0.81997176292477714,0.54391895432872472,0.83913775455639383,0.51479280150983076,0.8573146280763323,0,0.99764323168600633,0.068614738002134038,0.99058403545779705,0.13690605792347524,0.97885568509535781,0.2045520661262008,0.96251346260770809,0.27123391067291003,0.94163439765912593,0.33663728424691025,0.91631690448700476,0.40045390565126643,0.88668031802274005,0.46238297290351488,0.85286433140215967,0.52213258107682481,0.81502833751681136,0.57942109820456367,0.77335067770972987,0.63397849276288665,0.72802780115698484,0.68554760647421553,0.67927333889729313,0.73388536643219904,0.62731709687429382,0.7787639308347607,0.57240397273781485,0.81997176292477714,0.51479280150983076,0.8573146280763323,0.45475513555610586,0.89061650932674041,0.39257396461417188,0.91972043703894657,0.32854238191083485,0.94448922878366126,0.26296220265651465,0.96480613595376463,0.19614254142819698,0.98057539406314287,0.12839835514655099,0.99172267413610149,0.060048958514948375,0.99819543305971403,-0.0085834810820869332,0.9999631612477099,-0.07717546212664618,0.9970175264485267,-0.14540367380368988,0.98937241301968293,-0.21294651993841571,0.97706385648335081,-0.27948563485160938,0.96014987367160176,-0.34470738398793371,0.93871018926194427,-0.40830434224389323,0.91284585999213563,-0.46997674302732007,0.88267879832554741,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99987088791913337,0.016068836043841756,0.99948358501639223,0.032133522725966063,0.99883819130274409,0.048189911756120918,0.99793487343443965,0.06423385698670854,0.99677386466997808,0.080261215483420884,0.99535546480987458,0.096267848595045322,0.99368004011924382,0.11224962302216444,0.9917480232332222,0.12820241188447379,0.98955991304525048,0.14412209578644206,0.9871162745782478,0.16000456388103862,0.98441773883870887,0.17584571493125356,0,0.99948358501639223,0.032133522725966063,0.99793487343443965,0.06423385698670854,0.99535546480987458,0.096267848595045322,0.9917480232332222,0.12820241188447379,0.9871162745782478,0.16000456388103862,0.98146500265376291,0.19164145836913593,0.9748000442627639,0.22308041981606871,0.96712828317400745,0.25428897712031645,0.95845764301224723,0.28523489714866174,0.9487970790744773,0.31588621802753625,0.93815656908063261,0.34621128215420161,0,0.99883819130274409,0.048189911756120918,0.99535546480987458,0.096267848595045322,0.98955991304525048,0.14412209578644206,0.98146500265376291,0.19164145836913593,0.9710895431100045,0.2387155195256537,0.95845764301224723,0.28523489714866174,0.94359865406328403,0.33109149800313337,0.92654710286830144,0.37617876889366997,0.90734261070825972,0.42039194425335924,0.8860298014751945,0.46362828957886881,0.86265819798336574,0.50578734014612514,0,0.99793487343443965,0.06423385698670854,0.9917480232332222,0.12820241188447379,0.98146500265376291,0.19164145836913593,0.96712828317400745,0.25428897712031645,0.9487970790744773,0.31588621802753625,0.92654710286830144,0.37617876889366997,0.90047025258937308,0.43491760622171949,0.87067423223020635,0.49186012374489219,0.83728210689718474,0.54677113445189418,0.80043179452051971,0.5994238419688197,0.76027549621828761,0.6496007772855853,0,0.99677386466997808,0.080261215483420884,0.9871162745782478,0.16000456388103862,0.9710895431100045,0.23871551952565367,0.9487970790744773,0.31588621802753625,0.92038271948330264,0.39101873315292751,0.8860298014751945,0.46362828957886876,0.8459599793751037,0.53324639079479397,0.80043179452051971,0.5994238419688197,0.74973900708278485,0.6617336482743793,0.69420870064695928,0.71977376997641451,0.63419917178000229,0.77316971650056177,0,0.99535546480987458,0.096267848595045322,0.98146500265376291,0.19164145836913593,0.95845764301224723,0.28523489714866174,0.92654710286830144,0.37617876889366997,0.8860298014751945,0.46362828957886881,0.83728210689718474,0.54677113445189418,0.78075683990008227,0.62483498377510627,0.7169790676672857,0.69709469695798854,0.64654122641376099,0.76287904843912824,0.57009761820434512,0.8215769627476982,0.48835833309581578,0.87264319082651198,0,0.99368004011924382,0.11224962302216444,0.9748000442627639,0.22308041981606871,0.94359865406328403,0.33109149800313337,0.90047025258937308,0.43491760622171949,0.8459599793751037,0.53324639079479397,0.78075683990008227,0.62483498377510627,0.70568499661547179,0.70852571269631537,0.62169335159673866,0.78326073346007452,0.5298435524975571,0.84809540140055495,0.43129657340865168,0.9022102115172248,0.3272980402384455,0.94492115695229983,0,0.9917480232332222,0.12820241188447379,0.96712828317400745,0.25428897712031645,0.92654710286830144,0.37617876889366997,0.87067423223020635,0.49186012374489219,0.80043179452051971,0.5994238419688197,0.7169790676672857,0.69709469695798854,0.62169335159673866,0.78326073346007452,0.51614723733931867,0.85649987121247662,0.40208265306037744,0.91560337488889154,0.28138211535867891,0.95959580301097358,0.15603766029992694,0.98775110658916732,0,0.98955991304525048,0.14412209578644206,0.95845764301224723,0.28523489714866174,0.90734261070825972,0.42039194425335924,0.83728210689718474,0.54677113445189418,0.74973900708278485,0.6617336482743793,0.64654122641376099,0.76287904843912824,0.5298435524975571,0.84809540140055495,0.40208265306037744,0.91560337488889154,0.26592619790130428,0.96399339067742384,0.12421715748296006,0.99225505682100379,-0.020085558786172249,0.99979826481558132,0,0.9871162745782478,0.16000456388103862,0.9487970790744773,0.31588621802753625,0.8860298014751945,0.46362828957886876,0.80043179452051971,0.5994238419688197,0.69420870064695928,0.71977376997641451,0.57009761820434524,0.82157696274769809,0.43129657340865168,0.9022102115172248,0.28138211535867891,0.95959580301097358,0.12421715748296006,0.99225505682100379,-0.036148559892120825,0.99934642723018019,-0.19558282102711821,0.98068718770007102,0,0.98441773883870887,0.17584571493125356,0.93815656908063261,0.34621128215420161,0.86265819798336574,0.50578734014612514,0.76027549621828761,0.6496007772855853,0.63419917178000218,0.77316971650056188,0.48835833309581578,0.87264319082651198,0.3272980402384455,0.94492115695229983,0.15603766029992694,0.98775110658916732,-0.020085558786172249,0.99979826481558132,-0.19558282102711844,0.98068718770007091,-0.36498483807625115,0.93101346283201125,0,0.98146500265376291,0.19164145836913593,0.92654710286830144,0.37617876889366997,0.83728210689718474,0.54677113445189418,0.7169790676672857,0.69709469695798854,0.57009761820434512,0.8215769627476982,0.40208265306037744,0.91560337488889154,0.21916248610152533,0.97568837478254233,0.028117966946100421,0.99960461180149529,-0.16396888509477958,0.98646551116639403,-0.3499774114354654,0.93675813926804552,-0.52301227699175246,0.85232514811889859,0,0.97825882849123602,0.20738771535207759,0.91398067104209124,0.40575772692759471,0.80996049254330404,0.58648444183883375,0.67072133407710288,0.74170943907559339,0.50231764049338734,0.86468317206312972,0.31207199896198318,0.95005845476153306,0.10825673572554828,0.99412296984329296,-0.10026578402766258,0.99496068894872325,-0.30442851256686126,0.95253518608832943,-0.49535397609831211,0.86869122153017808,-0.66474028812595964,0.74707452730113622,0,0.9748000442627639,0.22308041981606871,0.90047025258937308,0.43491760622171949,0.78075683990008227,0.62483498377510627,0.62169335159673866,0.78326073346007452,0.43129657340865168,0.9022102115172248,0.21916248610152533,0.97568837478254233,-0.0040173711036431683,0.99999193033214806,-0.22699475316082773,0.97389598111782705,-0.43853161975353694,0.89871576066982339,-0.62796653153191107,0.77824034544334786,-0.78575198571214577,0.6185416857006647,0,0.9710895431100045,0.2387155195256537,0.8860298014751945,0.46362828957886881,0.74973900708278474,0.66173364827437942,0.57009761820434512,0.8215769627476982,0.357492664097534,0.93391594649435539,0.12421715748295983,0.99225505682100379,-0.11624069868443213,0.99322107305944485,-0.3499774114354654,0.93675813926804552,-0.56347811045494423,0.82613099387332378,-0.74439799023289543,0.66773619951087426,-0.88227609799959206,0.47073228792872729,0,0.96712828317400745,0.25428897712031645,0.87067423223020635,0.49186012374489219,0.7169790676672857,0.69709469695798854,0.51614723733931867,0.85649987121247662,0.28138211535867891,0.95959580301097358,0.028117966946100421,0.99960461180149529,-0.22699475316082773,0.97389598111782705,-0.46718405877397806,0.88416008461560414,-0.6766590802158563,0.73629646825272177,-0.84164821031255022,0.54002619388107576,-0.95130449713624921,0.30825274326167484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99995901661426534,0.0090534574517906335,0.99983606981633721,0.018106172820903311,0.99963116968376775,0.027157404085486191,0.99934433301155912,0.0362064093453347,0.99897558331078751,0.045252446882702677,0.99852495080667525,0.054294775223098585,0.99799247243611378,0.063332653196061808,0.99737819184463616,0.072365339995913977,0.99668215938283911,0.081392095242480395,0.99590443210225632,0.090412179041776675,0.9950450737506823,0.099424852046655382,0.99410415476694636,0.10842937551740801,0.99308175227514006,0.11742501138231705,0.9919779500782947,0.12641102229815335,0.99079283865151269,0.13538667171061375,0.98952651513455159,0.14435122391469402,0.98817908332386151,0.15330394411499237,0.98675065366407799,0.16224409848593813,0.98524134323896839,0.17117095423194101,0.98365127576183542,0.18008377964745623,0.9819805815653766,0.18898184417695973,0.98022939759100136,0.19786441847482975,0.97839786737760626,0.20673077446512872,0.9764861410498098,0.21558018540128143,0.97449437530564698,0.2244119259256441,0.97242273340372543,0.23322527212895938,0.97027138514984335,0.24201950160969324,0.96804050688307153,0.25079389353324755,0.96573028146129902,0.25954772869104464,0.96334089824624503,0.26828028955947886,0.9608725530879374,0.276990860358729,0.95832544830865973,0.285678727111429,0.9556997926863674,0.29434317770119023,0.95299580143757456,0.30298350193097129,0.95021369619971419,0.31159899158129067,0.94735370501297045,0.32018894046827701,0.94441606230158726,0.32875264450155295,0.9414010088546535,0.3372894017419471,0.93830879180636595,0.34579851245902971,0.9351396646157728,0.35427927918846713,0.93189388704599829,0.36273100678919101,0.92857172514295061,0.37115300250037658,0.92517345121351535,0.37954457599822605,0.92169934380323493,0.38790503945255234,0.9181496876734776,0.39623370758315796,0.91452477377809616,0.40452989771600573,0.91082489923957943,0.41279292983917487,0.90705036732469824,0.42102212665859973,0.90320148741964734,0.42921681365358533,0.89927857500468644,0.43737631913209535,0.89528195162828095,0.44549997428580901,0.89121194488074573,0.45358711324494078,0.88706888836739373,0.46163707313281982,0.88285312168119134,0.4696491941202236,0.8785649903749233,0.47762281947946222,0.87420484593286818,0.48555729563820804,0.86977304574198921,0.49345197223306708,0.86526995306263976,0.5013062021628869,0.86069593699878832,0.50911934164179806,0.8560513724677643,0.51689075025198217,0.85133664016952737,0.52461979099616574,0.84655212655546219,0.53230583034983259,0.84169822379670278,0.5399482383131512,0.83677532975198732,0.54754638846261494,0.831783847935047,0.5550996580023867,0.82672418748153109,0.56260742781534823,0.8215967631154717,0.57006908251384714,0.81640199511529021,0.57748401049013787,0.81114030927934799,0.5848516039665137,0.80581213689104547,0.59217125904512369,0.80041791468347134,0.59944237575747272,0.79495808480360441,0.6066643581135992,0.78943309477607271,0.61383661415092561,0.78384339746647114,0.62095855598278038,0.77818945104424175,0.62802959984658502,0.77247171894511879,0.63504916615170304,0.7666906698331426,0.64201667952694741,0.7608467775622445,0.6489315688677415,0.75494052113740695,0.65579326738293098,0.74897238467540028,0.66260121264124183,0.74294285736510224,0.66935484661738076,0.7368524334273997,0.67605361573777523,0.73070161207467987,0.68269697092594761,0.72449089746991091,0.6892843676475211,0.71822079868531741,0.69581526595485443,0.71189182966065356,0.70228913053129838,0.7055045091610771,0.70870543073507464,0.6990593607346276,0.71506364064277084,0.69255691266931341,0.72136323909244848,0.68599769794980892,0.72760370972636113,0.67938225421376819,0.73378454103327828,0.67271112370775588,0.73990522639041301,0.66598485324280188,0.74596526410494723,0.6592039941495802,0.75196415745515444,0.6523691022332182,0.7579014147311145,0.64548073772774006,0.76377654927501704,0.6385394652501446,0.7695890795210516,0.63154585375412686,0.77533852903487976,0.62450047648344209,0.78102442655268711,0.61740391092491897,0.78664630601981134,0.61025673876112485,0.79220370662894291,0.60305954582268706,0.79769617285789607,0.59581292204027447,0.80312325450694666,0.58851746139624261,0.80848450673573335,0.5811737618759466,0.81377949009972006,0.57378242541872715,0.81900777058621543,0.56634405786857023,0.82416891964994743,0.55885926892444904,0.82926251424819053,0.55132867209034842,0.83428813687544012,0.54375288462497806,0.8392453755976349,0.5361325274911779,0.84413382408592141,0.52846822530501969,0.84895308164995953,0.52076060628460907,0.85370275327076595,0.51301030219859278,0.8583824496330924,0.50521794831437505,0.86299178715733649,0.49738418334604551,0.8675303880309827,0.48950964940202712,0.87199788023957059,0.48159499193244432,0.87639389759718711,0.47364085967621705,0.8807180797764822,0.46564790460788597,0.88497007233820346,0.45761678188417293,0.88914952676024817,0.44954814979027874,0.89325610046623083,0.44144266968592621,0.89728945685356309,0.43330100595115051,0.90124926532104366,0.42512382593184284,0.90513520129595681,0.41691179988504884,0.9089469462606764,0.40866560092403065,0.91268418777877425,0.40038590496309434,0.91634661952062879,0.39207339066218638,0.91993394128853434,0.38372873937126661,0.9234458590413076,0.37535263507446082,0.92688208491838842,0.36694576433399551,0.93024233726343575,0.35850881623392317,0.93352634064741369,0.3500424823236411,0.93673382589116716,0.34154745656120583,0.93986453008748616,0.3330244352564527,0.94291819662265541,0.32447411701392098,0.94589457519748799,0.31589720267559257,0.94879342184784121,0.3072943952634446,0.95161449896461425,0.29866639992182609,0.95435757531322396,0.29001392385965979,0.95702242605255783,0.28133767629247364,0.95960883275340447,0.27263836838426886,0.96211658341635697,0.26391671318922921,0.96454547248918965,0.25517342559327266,0.96689530088370712,0.24640922225545547,0.96916587599206239,0.23762482154922951,0.97135701170254429,0.22882094350356041,0.97346852841483289,0.2199983097439078,0.97550025305472043,0.21115764343307653,0.9774520190882976,0.2022996692119422,0.97932366653560388,0.19342511314005328,0.98111504198374089,0.18453470263611896,0.98282599859944642,0.17562916641838575,0.98445639614113079,0.16670923444490535,0.98600610097037111,0.15777563785370319,0.98747498606286588,0.14882910890284987,0.98886293101884637,0.1398703809104391,0.99016982207294557,0.13090018819448096,0.99139555210352315,0.12191926601271155,0.99254002064144586,0.11292835050232741,0.99360313387832244,0.10392817861964525,0.99458480467419319,0.094919488079696718,0.99548495256467251,0.085903017295760997,0.99630350376754384,0.076879505318838068,0.99704039118880772,0.067849691777071786,0.99769555442818147,0.058814316815125577,0.9982689397840494,0.049774121033513849,0.99876050025786522,0.040729845427898287,0.99917019555800379,0.031682231328350331,0.99949799210306411,0.022632020338587674,0.99974386302462181,0.013579954275186035,0.99990778816943104,0.0045267751067755348,0.99998975410107716,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99940414055107041,0.034516138969708128,0.99761727230124764,0.068991144404324925,0.99464152469519274,0.10338393178837015,0.99048044398756319,0.13765351458716821,0.9851389890168738,0.17175905309127604,0.97862352529595531,0.20565990308593657,0.97094181742605201,0.23931566428755774,0.96210301984360058,0.27268622848949375,0.95211766591071412,0.30573182735975285,0.94099765536237645,0.33841307983367042,0.92875624012530233,0.37069103904506751,0.91540800852536641,0.40252723873996749,0.90096886790241915,0.43388373911755812,0.88545602565320991,0.46472317204376851,0.86888796872500662,0.49500878558358136,0.85128444158435124,0.52470448779900802,0.83266642268720636,0.55377488976053313,0.81305609947853252,0.58218534772077069,0.79247684195109047,0.60990200440007281,0.7709531747949796,0.63689182933488919,0.74851074817110119,0.66312265824079519,0.72517630714337655,0.68856323134327702,0.70097765980614946,0.71318323063059619,0.67594364414475439,0.73695331598433667,0.65010409366874433,0.75984516014457881,0.62348980185873359,0.7818314824680298,0.59613248546922537,0.80288608143888252,0.56806474673115581,0.82298386589365635,0.5393200344991993,0.84210088492281165,0.50993260439013599,0.86021435641350064,0.47993747795978642,0.87730269419944196,0.44937040096716135,0.89334553378556314,0.41826780077556519,0.90832375661675391,0.38666674294141884,0.92221951286181036,0.35460488704253557,0.93501624268541483,0.32212044179849075,0.94669869598280587,0.28925211953656776,0.9572529505536157,0.25603909005754721,0.9666664286932195,0.22252093395631445,0.97492791218182362,0.18873759545291671,0.98202755565343036,0.15472933479028123,0.98795689832874645,0.12053668025532323,0.99270887409805397,0.086200379880619543,0.99627781994202647,0.051761352884209494,0.99865948268045612,0.017260640905388574,0.99985102404084936,0,0.99761727230124764,0.068991144404324925,0.99048044398756319,0.13765351458716821,0.97862352529595531,0.20565990308593657,0.96210301984360058,0.27268622848949375,0.94099765536237645,0.33841307983367042,0.91540800852536641,0.40252723873996749,0,0.99048044398756319,0.13765351458716821,0.96210301984360058,0.27268622848949375,0.91540800852536641,0.40252723873996749,0.85128444158435124,0.52470448779900802,0.7709531747949796,0.63689182933488919,0.67594364414475439,0.73695331598433667,0,0.97862352529595531,0.20565990308593657,0.91540800852536641,0.40252723873996749,0.81305609947853252,0.58218534772077069,0.67594364414475439,0.73695331598433667,0.50993260439013599,0.86021435641350064,0.32212044179849075,0.94669869598280587,0,0.96210301984360058,0.27268622848949375,0.85128444158435124,0.52470448779900802,0.67594364414475439,0.73695331598433667,0.44937040096716135,0.89334553378556314,0.18873759545291671,0.98202755565343036,-0.086200379880619196,0.99627781994202647,0,0.94099765536237645,0.33841307983367042,0.7709531747949796,0.63689182933488919,0.50993260439013577,0.86021435641350075,0.18873759545291671,0.98202755565343036,-0.15472933479028111,0.98795689832874645,-0.47993747795978653,0.87730269419944185,0,0.91540800852536641,0.40252723873996749,0.67594364414475439,0.73695331598433667,0.32212044179849075,0.94669869598280587,-0.086200379880619196,0.99627781994202647,-0.47993747795978614,0.87730269419944207,-0.79247684195109025,0.60990200440007303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99997462589491448,0.0071237326118914618,0.99989850486734855,0.014247103707103134,0.999771640780308,0.02136975178730155,0.9995940400719181,0.028491315390844964,0.99936571175509703,0.035611433111126876,0.99908666741709828,0.042729743614916778,0.99875692121892234,0.049845885660697163,0.99837648989459882,0.056959498116995876,0.99794539275033634,0.064070219980712911,0.99746365166354345,0.071177690395440682,0.99693129108171807,0.078281548669776782,0.99634833802120693,0.085381434295628472,0.99571482206583439,0.092476986966507829,0.99503077536540141,0.099567846595816661,0.99429623263405353,0.10665365333512015,0.99351123114851991,0.11373404759240871,0.99267581074622069,0.12080867005034644,0.99179001382324616,0.127877161684506,0.99085388533220464,0.13493916378158832,0.98986747277994158,0.14199431795762676,0.98883082622512852,0.14904226617617444,0.98774399827572279,0.15608265076647385,0.9866070440862974,0.16311511444160812,0.98542002135524254,0.17013930031663263,0.98418299032183743,0.17715485192668634,0.98289601376319269,0.18416141324508167,0.98155915699106533,0.19115862870137229,0.98017248784854383,0.19814614319939758,0.97873607670660523,0.20512360213530323,0.977249996460544,0.21209065141553668,0.97571432252627288,0.21904693747481679,0.97412913283649538,0.22599210729407665,0.97249450783675118,0.23292580841837857,0.97081053048133303,0.23984768897480066,0.96907728622907796,0.24675739769029362,0.96729486303902945,0.25365458390950735,0.96546335136597417,0.26053889761258603,0.96358284415585138,0.26740998943293098,0.96165343684103632,0.27426751067493038,0.95967522733549682,0.28111111333165495,0.95764831602982459,0.2879404501025189,0.95557280578614068,0.29475517441090421,0.95344880193287518,0.30155494042174957,0.95127641225942194,0.30833940305910035,0.94905574701066864,0.31510821802362066,0.94678691888140221,0.32186104181006614,0.94447004301058923,0.32859753172471606,0.94210523697553339,0.3353173459027643,0.93969262078590843,0.34202014332566871,0.93723231687766773,0.34870558383845696,0.93472445010683103,0.3553733281669888,0.93216914774314852,0.36202303793517365,0.92956653946364143,0.36865437568214265,0.92691675734602175,0.37526700487937409,0.92421993586198936,0.38186058994777172,0.92147621187040762,0.38843479627469474,0.91868572461035847,0.39498929023093859,0.91584861569407561,0.4015237391876666,0.91296502909975885,0.40803781153328966,0.91003511116426661,0.41453117669029538,0.90705901057569005,0.421003505132024,0.90403687836580737,0.4274544683993915,0.90096886790241915,0.43388373911755812,0.8978551348815651,0.44029099101254227,0.89469583731962299,0.44667589892777815,0.89149113554528958,0.45303813884061694,0.88824119219144404,0.45937738787877036,0.88494617218689453,0.46569332433669602,0.88160624274800903,0.47198562769192298,0.87822157337022855,0.47825397862131819,0.87479233581946603,0.4844980590172912,0.87131870412338941,0.49071755200393785,0.86780085456259004,0.49691214195312083,0.86423896566163683,0.50308151450048744,0.86063321818001626,0.50922535656142309,0.85698379510295952,0.51534335634693962,0.85329088163215572,0.521435203379498,0.84955466517635392,0.5275005885087648,0.84577533534185201,0.5335392039273007,0.84195308392287482,0.53955074318618113,0.8380881048918406,0.54553490121054871,0.83418059438951764,0.55149137431509387,0.83023075071507013,0.55741986021946788,0.82623877431599491,0.56332005806362206,0.82220486777794932,0.56919166842307611,0.81812923581447017,0.57503439332411344,0.81401208525658486,0.58084793625890285,0.80985362504231528,0.58663200220054557,0.80565406620607449,0.59238629761804773,0.80141362186795662,0.59811053049121599,0.7971325072229225,0.60380441032547738,0.79281093952987769,0.60946764816662147,0.78844913810064776,0.61509995661546391,0.78404732428884849,0.62070104984243202,0.77960572147865215,0.62627064360206941,0.77512455507345179,0.63180845524746132,0.77060405248442199,0.63731420374457859,0.76604444311897801,0.64278760968653925,0.76144595836913442,0.64822839530778842,0.75680883159976176,0.65363628449819355,0.75213329813674379,0.65901100281705771,0.74741959525503543,0.66435227750704606,0.74266796216662112,0.66965983750802782,0.73787864000837566,0.67493341347083269,0.73305187182982634,0.68017273777091936,0.72818790258081922,0.68537754452195709,0.72328697909908801,0.69054756958931895,0.71834935009772771,0.69568255060348638,0.7133752661525723,0.70078222697336345,0.70836497968947942,0.70584633989950196,0.70331874497151969,0.71087463238723503,0.69823681808607285,0.71586684925971844,0.69311945693183274,0.72082273717088119,0.68796692120571867,0.72574204461828207,0.68277947238969661,0.73062452195587269,0.67755737373750935,0.73546992140666712,0.67230089026131679,0.7402779970753155,0.66701028871824708,0.7450485049605835,0.66168583759685939,0.74978120296773421,0.65632780710351823,0.75447585092081448,0.65093646914868108,0.75913221057484326,0.64551209733309967,0.76375004562790227,0.64005496693393493,0.76832912173312773,0.63456535489078725,0.77286920651060309,0.6290435397916424,0.77737006955915167,0.62348980185873359,0.7818314824680298,0.61790442293432046,0.78625321882851729,0.61228768646638687,0.79063505424540814,0.6066398774942553,0.79497676634839765,0.60096128263412263,0.79927813480336751,0.59525219006451424,0.80353894132356729,0.58951288951165981,0.80775896968069227,0.58374367223478996,0.8119380057158565,0.57794483101135552,0.81607583735046074,0.57211666012216966,0.82017225459695586,0.5662594553364737,0.82422704956949822,0.56037351389692702,0.82824001649450052,0.554459134504523,0.83221095172107373,0.54851661730342982,0.83613965373136245,0.54254626386575944,0.8400259231507714,0.53654837717626302,0.84386956275808322,0.53052326161695473,0.84767037749546736,0.52447122295166548,0.85142817447837871,0.51839256831052516,0.85514276300534608,0.51228760617437707,0.85881395456765042,0.50615664635912305,0.86244156285889051,0.50000000000000011,0.8660254037844386,0.49381797953579171,0.86956529547078198,0.48761089869297164,0.87306105827475355,0.48137907246978301,0.87651251479264769,0.47512281712025284,0.87991948986922364,0.46884245013814246,0.88328181060659428,0.46253829024083543,0.886599306373,0.45621065735316307,0.88987180881146855,0.44985987259116922,0.89309915184835831,0.44348625824581361,0.89628117170178667,0.43709013776661659,0.89941770688994116,0.43067183574524459,0.90250859823927498,0.42423167789903743,0.90555368889258425,0.41776999105447915,0.9085528243169686,0.41128710313061151,0.91150585231167314,0.40478334312239378,0.9144126230158125,0.39825904108400556,0.91727298891597608,0.391714528112098,0.92008680485371397,0.38515013632899076,0.92285392803290367,0.37856619886581772,0.92557421802699658,0.37196304984562106,0.92824753678614413,0.36534102436639498,0.93087374864420425,0.35870045848408033,0.93345272032562554,0.3520416891955101,0.93598432095221118,0.3453650544213076,0.93846842204976044,0.3386708929887377,0.94090489755458862,0.3319595446145116,0.94329362381992499,0.32523134988754715,0.94563447962218672,0.31848665025168443,0.94792734616713181,0.31172578798835809,0.95017210709588673,0.30494910619922722,0.95236864849085223,0.29815694878876353,0.95451685888148385,0.29134966044679877,0.95661662924994939,0.28452758663103245,0.95866785303666058,0.27769107354950034,0.96067042614568188,0.27084046814300516,0.96262424695001203,0.26397611806750981,0.96452921629674238,0.25709837167649474,0.96638523751208816,0.25020757800327914,0.96819221640629449,0.24330408674330872,0.96995006127841676,0.2363882482364088,0.97165868292097402,0.22946041344900545,0.97331799462447599,0.22252093395631445,0.97492791218182362,0.21557016192449963,0.97648835389258226,0.20860845009280085,0.97799924056712817,0.20163615175563337,0.97946049553066672,0.1946536207446585,0.98087204462712396,0.18766121141082756,0.98223381622290962,0.18065927860639902,0.98354574121055272,0.17364817766693041,0.98480775301220802,0.1666282643932458,0.98601978758303555,0.15959989503337932,0.98718178341445018,0.15256342626449643,0.98829368153724306,0.14551921517479305,0.98935542552457467,0.1384676192453741,0.99036696149483805,0.13140899633211178,0.99132823811439319,0.12434370464748527,0.99223920660017206,0.11727210274240188,0.99309982072215452,0.11019454948800134,0.99391003680571433,0.10311140405744368,0.99466981373383534,0.096023025907681886,0.99537911294919823,0.088929774761220076,0.99603789845613744,0.081832010587858245,0.9966461368224675,0.074730093586424393,0.99720379718118013,0.067624384166495105,0.9977108512320102,0.060515242930105469,0.99816727324287202,0.05340303065344907,0.99857304005116565,0.0462881082685693,0.9989281310649516,0.03917083684504271,0.99923252826399678,0.032051577571655332,0.99948621620068789,0.024930691738073035,0.99968918200081625,0.017808540716506709,0.99984141536423088,0.010685485943373265,0.99994290856536105,0.0035618889009533866,0.99999365645360838,0,0.99989850486734855,0.014247103707103134,0.9995940400719181,0.028491315390844964,0.99908666741709828,0.042729743614916778,0.99837648989459882,0.056959498116995876,0.99746365166354345,0.071177690395440682,0.99634833802120693,0.085381434295628472,0.99503077536540141,0.099567846595816661,0.99351123114851991,0.11373404759240871,0.99179001382324616,0.127877161684506,0.98986747277994158,0.14199431795762676,0.98774399827572279,0.15608265076647385,0.98542002135524254,0.17013930031663263,0.98289601376319269,0.18416141324508167,0.98017248784854383,0.19814614319939758,0.977249996460544,0.21209065141553668,0.97412913283649538,0.22599210729407665,0.97081053048133303,0.23984768897480066,0.96729486303902945,0.25365458390950735,0.96358284415585138,0.26740998943293098,0.95967522733549682,0.28111111333165495,0.95557280578614068,0.29475517441090421,0.95127641225942194,0.30833940305910035,0.94678691888140221,0.32186104181006614,0.94210523697553339,0.3353173459027643,0.93723231687766773,0.34870558383845696,0.93216914774314852,0.36202303793517365,0.92691675734602175,0.37526700487937409,0.92147621187040762,0.38843479627469474,0.91584861569407561,0.4015237391876666,0.91003511116426661,0.41453117669029538,0.90403687836580737,0.4274544683993915,0.8978551348815651,0.44029099101254227,0.89149113554528958,0.45303813884061694,0.88494617218689453,0.46569332433669602,0.87822157337022855,0.47825397862131819,0.87131870412338941,0.49071755200393785,0.86423896566163683,0.50308151450048744,0.85698379510295952,0.51534335634693962,0.84955466517635392,0.5275005885087648,0.84195308392287482,0.53955074318618113,0.83418059438951764,0.55149137431509387,0.82623877431599491,0.56332005806362206,0.81812923581447017,0.57503439332411344,0.80985362504231528,0.58663200220054557,0.80141362186795662,0.59811053049121599,0.79281093952987769,0.60946764816662147,0.78404732428884849,0.62070104984243202,0.77512455507345179,0.63180845524746132,0.76604444311897801,0.64278760968653925,0.75680883159976176,0.65363628449819355,0.74741959525503543,0.66435227750704606,0.73787864000837566,0.67493341347083269,0.72818790258081922,0.68537754452195709,0.71834935009772771,0.69568255060348638,0.70836497968947942,0.70584633989950196,0.69823681808607285,0.71586684925971844,0.68796692120571867,0.72574204461828207,0.67755737373750935,0.73546992140666712,0.66701028871824708,0.7450485049605835,0.65632780710351823,0.75447585092081448,0.64551209733309967,0.76375004562790227,0.63456535489078725,0.77286920651060309,0.62348980185873359,0.7818314824680298,0.61228768646638687,0.79063505424540814,0.60096128263412263,0.79927813480336751,0.58951288951165981,0.80775896968069227,0.57794483101135552,0.81607583735046074,0.5662594553364737,0.82422704956949822,0.554459134504523,0.83221095172107373,0.54254626386575944,0.8400259231507714,0.53052326161695473,0.84767037749546736,0.51839256831052516,0.85514276300534608,0.50615664635912305,0.86244156285889051,0,0.9995940400719181,0.028491315390844964,0.99837648989459882,0.056959498116995876,0.99634833802120693,0.085381434295628472,0.99351123114851991,0.11373404759240871,0.98986747277994158,0.14199431795762676,0.98542002135524254,0.17013930031663263,0.98017248784854383,0.19814614319939758,0.97412913283649538,0.22599210729407665,0.96729486303902945,0.25365458390950735,0.95967522733549682,0.28111111333165495,0.95127641225942194,0.30833940305910035,0.94210523697553339,0.3353173459027643,0.93216914774314852,0.36202303793517365,0.92147621187040762,0.38843479627469474,0.91003511116426661,0.41453117669029538,0.8978551348815651,0.44029099101254227,0.88494617218689453,0.46569332433669602,0.87131870412338941,0.49071755200393785,0.85698379510295952,0.51534335634693962,0.84195308392287482,0.53955074318618113,0.82623877431599491,0.56332005806362206,0.80985362504231528,0.58663200220054557,0.79281093952987769,0.60946764816662147,0.77512455507345179,0.63180845524746132,0.75680883159976176,0.65363628449819355,0.73787864000837566,0.67493341347083269,0.71834935009772771,0.69568255060348638,0.69823681808607285,0.71586684925971844,0.67755737373750935,0.73546992140666712,0.65632780710351823,0.75447585092081448,0.63456535489078725,0.77286920651060309,0.61228768646638687,0.79063505424540814,0.58951288951165981,0.80775896968069227,0.5662594553364737,0.82422704956949822,0.54254626386575944,0.8400259231507714,0.51839256831052516,0.85514276300534608,0.49381797953579171,0.86956529547078198,0.46884245013814246,0.88328181060659428,0.44348625824581361,0.89628117170178667,0.41776999105447915,0.9085528243169686,0.391714528112098,0.92008680485371397,0.36534102436639498,0.93087374864420425,0.3386708929887377,0.94090489755458862,0.31172578798835809,0.95017210709588673,0.28452758663103245,0.95866785303666058,0.25709837167649474,0.96638523751208816,0.22946041344900545,0.97331799462447599,0.20163615175563337,0.97946049553066672,0.17364817766693041,0.98480775301220802,0.14551921517479305,0.98935542552457467,0.11727210274240188,0.99309982072215452,0.088929774761220076,0.99603789845613744,0.060515242930105469,0.99816727324287202,0.032051577571655332,0.99948621620068789,0.0035618889009533866,0.99999365645360838,-0.024930691738072913,0.99968918200081625,-0.053403030653448945,0.99857304005116565,-0.08183201058785812,0.9966461368224675,-0.11019454948800121,0.99391003680571433,-0.13846761924537396,0.99036696149483805,-0.16662826439324568,0.98601978758303555,-0.19465362074465839,0.98087204462712396,-0.22252093395631434,0.97492791218182362,-0.25020757800327903,0.96819221640629449,-0.27769107354950023,0.96067042614568188,-0.3049491061992271,0.95236864849085223,-0.33195954461451149,0.94329362381992499,-0.35870045848408022,0.93345272032562565,-0.38515013632899064,0.92285392803290378,-0.4112871031306114,0.91150585231167325,-0.43709013776661626,0.89941770688994138,-0.46253829024083509,0.88659930637300011,-0.48761089869297131,0.87306105827475367,0,0.99908666741709828,0.042729743614916778,0.99634833802120693,0.085381434295628472,0.99179001382324616,0.127877161684506,0.98542002135524254,0.17013930031663263,0.977249996460544,0.21209065141553668,0.96729486303902945,0.25365458390950735,0.95557280578614068,0.29475517441090421,0.94210523697553339,0.3353173459027643,0.92691675734602175,0.37526700487937409,0.91003511116426661,0.41453117669029538,0.89149113554528958,0.45303813884061694,0.87131870412338941,0.49071755200393785,0.84955466517635392,0.5275005885087648,0.82623877431599491,0.56332005806362206,0.80141362186795662,0.59811053049121599,0.77512455507345179,0.63180845524746132,0.74741959525503543,0.66435227750704606,0.71834935009772771,0.69568255060348638,0.68796692120571867,0.72574204461828207,0.65632780710351823,0.75447585092081448,0.62348980185873359,0.7818314824680298,0.58951288951165981,0.80775896968069227,0.554459134504523,0.83221095172107373,0.51839256831052516,0.85514276300534608,0,0.99634833802120693,0.085381434295628472,0.98542002135524254,0.17013930031663263,0.96729486303902945,0.25365458390950735,0.94210523697553339,0.3353173459027643,0.91003511116426661,0.41453117669029538,0.87131870412338941,0.49071755200393785,0.82623877431599491,0.56332005806362206,0.77512455507345179,0.63180845524746132,0.71834935009772771,0.69568255060348638,0.65632780710351823,0.75447585092081448,0.58951288951165981,0.80775896968069227,0.51839256831052516,0.85514276300534608,0.44348625824581361,0.89628117170178667,0.36534102436639498,0.93087374864420425,0.28452758663103245,0.95866785303666058,0.20163615175563337,0.97946049553066672,0.11727210274240188,0.99309982072215452,0.032051577571655332,0.99948621620068789,-0.053403030653448945,0.99857304005116565,-0.13846761924537396,0.99036696149483805,-0.22252093395631434,0.97492791218182362,-0.3049491061992271,0.95236864849085223,-0.38515013632899064,0.92285392803290378,-0.46253829024083509,0.88659930637300011,0,0.99179001382324616,0.127877161684506,0.96729486303902945,0.25365458390950735,0.92691675734602175,0.37526700487937409,0,0.96729486303902945,0.25365458390950735,0.87131870412338941,0.49071755200393785,0.71834935009772771,0.69568255060348638,0,0.92691675734602175,0.37526700487937409,0.71834935009772771,0.69568255060348638,0.404783343122394,0.91441262301581239,0,0.87131870412338941,0.49071755200393785,0.51839256831052516,0.85514276300534608,0.032051577571655332,0.99948621620068789,0,0.80141362186795662,0.59811053049121599,0.28452758663103245,0.95866785303666058,-0.34536505442130749,0.93846842204976044,0,0.71834935009772771,0.69568255060348638,0.032051577571655332,0.99948621620068789,-0.67230089026131656,0.74027799707531572,0,0,0,0,0,0,0,0,0,0.99982199656247317,0.01886730478446709,0.99928804962034001,0.037727892678717179,0.99839834926238313,0.056575049183792345,0.99715321222804643,0.07540206458240159,0.99555308179467461,0.094202236327626254,0.99359852761970291,0.11296887142907283,0.99129024553785539,0.13169528883562359,0.98862905731342265,0.15037482181393669,0.98561591034770846,0.16900082032184907,0.98225187734174813,0.18756665337583714,0.97853815591441962,0.20606571141169255,0.97447606817608323,0.22449140863757258,0.97006706025790079,0.24283718537858714,0.96531270179700335,0.2610965104120882,0.9602146853776895,0.27926288329283006,0.95477482592885354,0.29732983666717228,0.94899506007785872,0.31529093857550244,0.94287744546108421,0.33313979474205757,0.93642415999139239,0.35087005085133049,0.9296375010827771,0.36847539481024988,0.92251988483246872,0.38594955899532868,0.91507384516078605,0.40328632248398122,0.90730203290904443,0.42047951326921429,0.89920721489583677,0.43752301045690428,0.89079227293202834,0.45441074644487739,0.88206020279481145,0.47113670908301786,0.87301411316118827,0.48769494381363448,0.8636572245012607,0.50407955579132457,0.8539928679317208,0.52028471198157888,0.84402448402995034,0.53630464323738247,0.83375562160915162,0.55213364635307016,0.82318993645494531,0.5677660860947078,0.81233119002388599,0.58319639720627325,0.80118324810435748,0.59841908639092678,0.78975007944032605,0.61342873426666178,0.77803575431843952,0.62821999729564226,0.76604444311897801,0.64278760968653925,0.75378041483116953,0.65712638526918854,0.74124803553340024,0.67123121934090269,0.72845176683886093,0.68509709048378087,0.715396164307182,0.69871906235236736,0.70208587582262261,0.71209228543102543,0.6885256399393922,0.72521199876039721,0.67472028419469265,0.73807353163233891,0.66067472339008149,0.75067230525272433,0.64639395784176934,0.76300383437152719,0.63188307160047219,0.77506372887960151,0.61714723064145527,0.78684769537158994,0.60219168102540954,0.79835153867440589,0.58702174703081866,0.80957116334074397,0.57164282925847876,0.82050257510708746,0.5560604027088476,0.83114188231569353,0.540280014832907,0.84148529730005017,0.52430728355723188,0.85152913773331118,0.50814789528396931,0.86126982793923068,0,0.99928804962034001,0.037727892678717179,0.99715321222804643,0.07540206458240159,0.99359852761970291,0.11296887142907283,0.98862905731342265,0.15037482181393669,0.98225187734174813,0.18756665337583714,0.97447606817608323,0.22449140863757258,0.96531270179700335,0.2610965104120882,0.95477482592885354,0.29732983666717228,0.94287744546108421,0.33313979474205757,0.9296375010827771,0.36847539481024988,0.91507384516078605,0.40328632248398122,0.89920721489583677,0.43752301045690428,0.88206020279481145,0.47113670908301786,0.8636572245012607,0.50407955579132457,0.84402448402995034,0.53630464323738247,0.82318993645494531,0.5677660860947078,0.80118324810435748,0.59841908639092678,0.77803575431843952,0.62821999729564226,0.75378041483116953,0.65712638526918854,0.72845176683886093,0.68509709048378087,0.70208587582262261,0.71209228543102543,0.67472028419469265,0.73807353163233891,0.64639395784176934,0.76300383437152719,0.61714723064145527,0.78684769537158994,0.58702174703081866,0.80957116334074397,0.5560604027088476,0.83114188231569353,0.52430728355723188,0.85152913773331118,0.49180760286644182,0.87070390016512744,0.45860763695649104,0.88863886665235581,0.42475465928404793,0.90530849958259663,0.39029687312972561,0.92068906305286302,0.35528334296139374,0.93475865666715097,0.31976392457124536,0.94749724672042979,0.28378919408609693,0.95888669472464971,0.24741037595200252,0.96891078323614954,0.21067926999572642,0.97755523894768614,0.17364817766693041,0.98480775301220802,0.1363698275661,0.99065799856943171,0.09889730036424986,0.99509764545026602,0.061283953221316377,0.9981203720381463,0.023583343810857166,0.99972187427038872,-0.014150845940761853,0.99989987176674888,-0.051864886292100801,0.99865411107645652,-0.089505076192466379,0.9959863660391044,-0.12701781974687854,0.99190043525887694,-0.16434970253130593,0.98640213669571464,-0.20144756764950503,0.97949929938111646,-0.23825859142316483,0.97120175227037631,-0.27473035860758266,0.9615213102471255,-0.31081093702577101,0.95047175730011157,-0.34644895151472338,0.93806882689616589,-0.38159365707854837,0.92433017957730845,-0.41619501114430751,0.90927537781388856,-0.450203744817673,0.8929258581495686,-0.48357143303694428,0.87530490067781308,0,0.99839834926238313,0.056575049183792345,0.99359852761970291,0.11296887142907283,0.98561591034770846,0.16900082032184907,0.97447606817608323,0.22449140863757258,0.9602146853776895,0.27926288329283006,0.94287744546108421,0.33313979474205757,0.92251988483246872,0.38594955899532868,0.89920721489583677,0.43752301045690428,0.87301411316118827,0.48769494381363448,0.84402448402995034,0.53630464323738247,0.81233119002388599,0.58319639720627325,0.77803575431843952,0.62821999729564226,0.74124803553340024,0.67123121934090269,0.70208587582262261,0.71209228543102543,0.66067472339008149,0.75067230525272433,0.61714723064145527,0.78684769537158994,0.57164282925847876,0.82050257510708746,0.52430728355723188,0.85152913773331118,0,0.99359852761970291,0.11296887142907283,0.97447606817608323,0.22449140863757258,0.94287744546108421,0.33313979474205757,0.89920721489583677,0.43752301045690428,0.84402448402995034,0.53630464323738247,0.77803575431843952,0.62821999729564226,0.70208587582262261,0.71209228543102543,0.61714723064145527,0.78684769537158994,0.52430728355723188,0.85152913773331118,0.42475465928404793,0.90530849958259663,0.31976392457124536,0.94749724672042979,0.21067926999572642,0.97755523894768614,0.09889730036424986,0.99509764545026602,-0.014150845940761853,0.99989987176674888,-0.12701781974687854,0.99190043525887694,-0.23825859142316483,0.97120175227037631,-0.34644895151472338,0.93806882689616589,-0.450203744817673,0.8929258581495686,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9995769500822006,0.029084718743111405,0.99830815827126818,0.058144828910475829,0.99619469809174555,0.087155742747658166,0.99323835774194302,0.11609291412523023,0.98944163858094447,0.14493185930724672,0.98480775301220802,0.17364817766693033,0.97934062176555148,0.20221757233203794,0.97304487057982381,0.23061587074244017,0.96592582628906831,0.25881904510252074,0.9579895123154889,0.28680323271109021,0.9492426435730339,0.31454475615161365,0.93969262078590843,0.34202014332566871,0.92934752422682243,0.36920614731268442,0.918216106880274,0.39607976603915679,0.90630778703664994,0.42261826174069944,0.89363264032341228,0.44879918020046217,0.88020139118011109,0.47460036974764042,0.86602540378443871,0.49999999999999994,0.85111667243699973,0.52497658033456018,0.83548781141293649,0.54950897807080601,0.8191520442889918,0.57357643635104605,0.80212319275504385,0.59715859170278618,0.78441566491957571,0.62023549126826005,0.76604444311897801,0.64278760968653925,0.74702507124099604,0.66479586561393778,0.72737364157304873,0.6862416378687336,0.70710678118654757,0.70710678118654746,0.6862416378687336,0.72737364157304873,0.66479586561393789,0.74702507124099593,0.64278760968653936,0.76604444311897801,0.62023549126826005,0.78441566491957571,0.59715859170278618,0.80212319275504373,0.57357643635104605,0.8191520442889918,0.54950897807080601,0.83548781141293638,0.52497658033456018,0.85111667243699973,0.50000000000000011,0.8660254037844386,0.47460036974764042,0.88020139118011109,0.44879918020046228,0.89363264032341216,0.42261826174069944,0.90630778703664994,0.3960797660391569,0.918216106880274,0.36920614731268442,0.92934752422682243,0.34202014332566882,0.93969262078590832,0.31454475615161365,0.9492426435730339,0.28680323271109032,0.9579895123154889,0.25881904510252074,0.96592582628906831,0.23061587074244025,0.97304487057982381,0.20221757233203791,0.97934062176555148,0.17364817766693041,0.98480775301220802,0.1449318593072467,0.98944163858094447,0.1160929141252303,0.99323835774194302,0.087155742747658138,0.99619469809174555,0.058144828910475899,0.99830815827126818,0.02908471874311136,0.9995769500822006,0,0,0.99830815827126818,0.058144828910475829,0.99323835774194302,0.11609291412523023,0.98480775301220802,0.17364817766693033,0.97304487057982381,0.23061587074244017,0.9579895123154889,0.28680323271109021,0.93969262078590843,0.34202014332566871,0.918216106880274,0.39607976603915679,0.89363264032341228,0.44879918020046217,0.86602540378443871,0.49999999999999994,0.83548781141293649,0.54950897807080601,0.80212319275504385,0.59715859170278618,0.76604444311897801,0.64278760968653925,0.72737364157304873,0.6862416378687336,0,0.99323835774194302,0.11609291412523023,0.97304487057982381,0.23061587074244017,0.93969262078590843,0.34202014332566871,0.89363264032341228,0.44879918020046217,0.83548781141293649,0.54950897807080601,0.76604444311897801,0.64278760968653925,0.6862416378687336,0.72737364157304873,0.59715859170278618,0.80212319275504373,0.50000000000000011,0.8660254037844386,0.3960797660391569,0.918216106880274,0.28680323271109032,0.9579895123154889,0.17364817766693041,0.98480775301220802,0.058144828910475899,0.99830815827126818,0,0.98480775301220802,0.17364817766693033,0.93969262078590843,0.34202014332566871,0.86602540378443871,0.49999999999999994,0.76604444311897801,0.64278760968653925,0.64278760968653936,0.76604444311897801,0.50000000000000011,0.8660254037844386,0.34202014332566882,0.93969262078590832,0.17364817766693041,0.98480775301220802,6.123233995736766e-17,1,-0.1736481776669303,0.98480775301220802,-0.34202014332566871,0.93969262078590843,-0.49999999999999983,0.86602540378443871,-0.64278760968653936,0.76604444311897801,0,0.97304487057982381,0.23061587074244017,0.89363264032341228,0.44879918020046217,0.76604444311897801,0.64278760968653925,0.59715859170278618,0.80212319275504373,0,0.89363264032341228,0.44879918020046217,0.59715859170278618,0.80212319275504373,0.17364817766693041,0.98480775301220802,-0.28680323271109021,0.9579895123154889,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/medium.json b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/medium.json new file mode 100644 index 000000000000..defc24a0cdda --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/medium.json @@ -0,0 +1 @@ +{"lengths":[71,90,111,72,123,58,59,82,67,36],"offsets":[0,71,161,272,344,467,525,584,666,733],"cosines":[0,0.089729660701029848,0.17927861780686699,0.26846653163531092,0.3571137895972733,0.44504186791262879,0.53207369113335024,0.61803398874989479,0.70274964816268537,0.78605006330784721,0.86776747823511624,0.94773732494599727,1.0257985548118123,1.1017939629042051,1.1755705045849463,1.246979603717467,1.3158774518794252,1.3821252979737293,1.4455897276547831,1.5061429320072217,1.5636629649360596,1.6180339887498949,1.6691465074426053,1.7168975872037322,1.761191063713476,1.8019377358048383,1.8390555451029011,1.8724697412794744,1.9021130325903071,1.9279257213917065,1.9498558243636472,1.9678591771972593,1.9818995235358694,1.9919485879904781,1.9979861330826292,0,0.089729660701029973,0.1792786178068671,0.26846653163531109,0.35711378959727341,0.4450418679126289,0.53207369113335035,0.6180339887498949,0.70274964816268548,0.78605006330784732,0.86776747823511635,0.94773732494599738,1.0257985548118123,1.1017939629042051,1.1755705045849463,1.2469796037174672,1.3158774518794252,1.3821252979737293,1.4455897276547831,1.5061429320072219,1.5636629649360596,1.6180339887498949,1.6691465074426053,1.7168975872037322,1.761191063713476,1.8019377358048383,1.8390555451029014,1.8724697412794744,1.9021130325903071,1.9279257213917065,1.9498558243636472,1.9678591771972593,1.9818995235358696,1.9919485879904781,1.9979861330826294,0,0,0.070582927811704943,0.14107791808462192,0.21139714283918598,0.28145299307778104,0.35115818793464149,0.42042588341694215,0.48916978060159982,0.55730423315298427,0.62474435402758821,0.69140612123271261,0.75720648250740663,0.82206345879524356,0.88589624638001596,0.94862531755710444,1.0101725197150946,1.0704611727041986,1.1294161643701734,1.1869640441347125,1.2430331145057187,1.2975535204034521,1.3504573361912611,1.4016786503024659,1.4511536473579654,1.4988206876722503,1.5446203840487778,1.5884956757690218,1.630391899683024,1.6702568583128712,1.7080408848842525,1.7436969052050773,1.7771804963140538,1.8084499418261699,1.8374662839061122,1.8641933718048791,1.8885979068991114,1.910649484177031,1.9303206301192992,1.9475868369276008,1.9624265930583091,1.9748214100231904,1.9847558454237579,1.992217522190578,1.9971971440035567,1.9996885068739971,0.035296961286257408,0.10584690824032614,0.17626498312720365,0.24646345379431775,0.3163548616886081,0.38585213081899389,0.45486867624221267,0.52331851193688139,0.5911163579313683,0.65817774655201999,0.72441912765936523,0.78975797274118253,0.85411287773275202,0.91740366443618138,0.97955148041245677,1.0404788972217645,1.1001100068896827,1.158370516479067,1.215187840649798,1.2704911920910771,1.3242116697136008,1.3762823444917376,1.4266383428487603,1.4752169274812446,1.5219575755219357,1.5668020539437051,1.6096944921106515,1.6505814513859549,1.6894119917097641,1.7261377350641682,1.7607129257461827,1.793094487373657,1.8232420765530837,1.8511181331424422,1.8766879270464589,1.8999196014859816,1.9207842126875585,1.9392557659437764,1.9553112479994288,1.9689306557231667,1.9800970210289086,1.9887964320159639,1.9950180503015276,1.9987541245239564,0,0,0.057112101587392501,0.11417762172553596,0.17115001695767948,0.22798281978108123,0.28462967654657029,0.34104438526524755,0.3971809332914909,0.45299353485152871,0.50843666838697388,0.56346511368285934,0.61803398874989479,0.67209878643086018,0.72561541070128199,0.7785402126347829,0.83083002600377276,0.88244220248644256,0.93333464645134734,0.98346584929120751,1.0327949232779237,1.0812816349111951,1.1288864377335381,1.1755705045849463,1.2212957592708762,1.2660249076177408,1.30972146789057,1.3523498005480388,1.3938751373105869,1.4342636095179269,1.4734822757528097,1.5114991487085165,1.5482832212781648,1.5838044918445502,1.6180339887498949,1.6509437939255478,1.6825070656623622,1.7126980605031779,1.7414921542395543,1.7688658619956286,1.7947968573827167,1.8192639907090367,1.8422473062297002,1.8637280584229046,1.8836887272790492,1.9021130325903071,1.9189859472289947,1.9342937094039141,1.9480238338846669,1.9601651221847869,1.970707671695386,1.9796428837618654,1.9869634706971004,1.9926634617253827,1.9967382078522713,1.9991843856563785,0,0.057112101587392952,0.11417762172553629,0.17115001695767967,0.22798281978108131,0.28462967654657068,0.34104438526524783,0.39718093329149107,0.45299353485152921,0.50843666838697421,0.56346511368285956,0.6180339887498949,0.67209878643086063,0.72561541070128233,0.77854021263478312,0.83083002600377287,0.88244220248644289,0.93333464645134767,0.98346584929120762,1.0327949232779239,1.0812816349111953,1.1288864377335386,1.1755705045849463,1.2212957592708764,1.266024907617741,1.3097214678905702,1.352349800548039,1.3938751373105869,1.4342636095179271,1.4734822757528099,1.5114991487085168,1.548283221278165,1.5838044918445504,1.6180339887498949,1.650943793925548,1.6825070656623624,1.7126980605031781,1.7414921542395543,1.7688658619956288,1.7947968573827169,1.8192639907090369,1.8422473062297002,1.8637280584229046,1.8836887272790495,1.9021130325903071,1.9189859472289947,1.9342937094039143,1.9480238338846669,1.9601651221847869,1.970707671695386,1.9796428837618654,1.9869634706971004,1.9926634617253827,1.9967382078522713,1.9991843856563785,0,0,0.088466693450757708,0.17676020919468496,0.26470770852844488,0.35213703009207237,0.43887702688292107,0.52475790128395827,0.60961153745057317,0.69327183040523865,0.77557501119580419,0.85635996748091037,0.93546855891496361,1.0127459267152878,1.0880407968054646,1.1612057759414414,1.2320976402407282,1.3005776155498738,1.3665116491013869,1.4297706719283247,1.4902308515228568,1.5477738342442136,1.6022869770014962,1.6536635677578173,1.7018030344241242,1.7466111417337855,1.7880001757125514,1.8258891153827774,1.8602037913657923,1.8908770310719405,1.9178487901940802,1.9410662702471346,1.9604840219236057,1.976064034062728,1.9877758080591015,1.9955964175651422,1.999510553370486,0.044244174306373792,0.13264591287020808,0.22078799083053943,0.30849786593060474,0.39560384197103482,0.48193540491322884,0.56732355666859358,0.65160114592023499,0.73460319532951379,0.8161672244869298,0.89613356797515709,0.97434568792159293,1.0506504804285977,1.1248985752815612,1.1969446283481147,1.2666476060960941,1.3338710616733016,1.3984834020086283,1.4603581454116685,1.5193741691665699,1.5754159466354367,1.6283737734071484,1.6781439820488973,1.7246291450400555,1.7677382654911222,1.8073869552744077,1.8434976002177568,1.8759995120379349,1.9048290667162626,1.9299298290456199,1.9512526631050136,1.9687558284454512,1.9824050617988291,1.9921736441498896,1.9980424530399472,0,0,0.051495827309977107,0.10295750954069306,0.15435092425329269,0.2056419942747208,0.25679671029310186,0.30778115340812356,0.35856151762147132,0.40910413225240161,0.45937548426359104,0.50934224048245735,0.55897126970321886,0.6082296646550357,0.65708476382166936,0.70550417309818958,0.7534557872703701,0.80090781130253286,0.84782878141972129,0.89418758597022774,0.93995348605464002,0.9850961359077286,1.0295856030196613,1.0733923879832008,1.1164874440537293,1.1588421964091273,1.2004285610967365,1.2412189636548454,1.2811863573963502,1.3203042413424635,1.358546677794586,1.3958883095326871,1.4323043766287864,1.4677707328643981,1.5022638617410398,1.5357608920732,1.5682396131534209,1.5996784894794387,1.6300566750336225,1.6593540271052376,1.6875511196463713,1.7146292561526644,1.7405704820603103,1.7653575966510946,1.7889741644575912,1.8114045261609428,1.8326338089740095,1.8526479365029898,1.8714336380809873,1.8889784575673225,1.905270761606765,1.9202997473432035,1.9340554495826405,1.9465287474007649,1.9577113701907156,1.9675959031470327,1.9761757921821543,1.983445348272203,1.9893997512291781,1.9940350528970534,1.9973481797696611,1.9993369350286261,0,0.051495827309977316,0.10295750954069334,0.15435092425329305,0.20564199427472124,0.25679671029310197,0.30778115340812373,0.35856151762147154,0.40910413225240194,0.45937548426359148,0.50934224048245791,0.55897126970321898,0.60822966465503592,0.65708476382166969,0.70550417309818991,0.75345578727037055,0.80090781130253297,0.84782878141972151,0.89418758597022796,0.93995348605464035,0.98509613590772915,1.0295856030196617,1.073392387983201,1.1164874440537296,1.1588421964091276,1.2004285610967367,1.2412189636548456,1.2811863573963505,1.3203042413424635,1.3585466777945863,1.3958883095326873,1.4323043766287866,1.4677707328643983,1.5022638617410398,1.5357608920732002,1.5682396131534209,1.5996784894794389,1.6300566750336227,1.6593540271052378,1.6875511196463713,1.7146292561526648,1.7405704820603105,1.7653575966510948,1.7889741644575912,1.8114045261609431,1.8326338089740095,1.85264793650299,1.8714336380809873,1.8889784575673225,1.9052707616067652,1.9202997473432035,1.9340554495826408,1.9465287474007651,1.9577113701907156,1.9675959031470327,1.9761757921821543,1.983445348272203,1.9893997512291781,1.9940350528970534,1.9973481797696611,1.9993369350286261,0,0,0.11017552071173088,0.22001644198815859,0.32918918056146779,0.4373621824127516,0.54420692969066997,0.64939893840936691,0.75261874389567085,0.8535528709928073,0.95189478607414713,1.0473458279757557,1.1396161150205324,1.2284254253793356,1.3135040480954687,1.3945936021879908,1.4714478213462632,1.5438333018326418,1.6115302113219563,1.6743329565250571,1.7320508075688772,1.7845084772367878,1.8315466533101148,1.8730224823941095,1.9088100037590148,1.9388005318786607,1.9629029865048357,1.9810441692750065,1.9931689860133397,1.9992406140499028,0.055108684736324118,0.16515869094466479,0.27470711563681649,0.38342126384747699,0.49097097428159847,0.59702962200338927,0.70127511038550894,0.80339084930593907,0.90306671662177895,1.0000000000000002,1.0938963162448538,1.18447050532996,1.271447496419936,1.3545631432514822,1.4335650263369026,1.5082132195537925,1.5782810187927871,1.6435556304504904,1.7038388176766541,1.7589475024129781,1.8087143213951551,1.8529881344296035,1.8916344834012693,1.9245360006185008,1.9515927652548712,1.9727226068054446,1.987861354635899,1.9969630328666323,0,0,0.10827781717083505,0.21623803684788354,0.32356399310552947,0.42994088042204814,0.53505667705844162,0.63860306027196001,0.74027631067982869,0.8397782031205292,0.9368168813995803,1.0311077143540435,1.1223741307247648,1.2103484303875303,1.2947725695636554,1.3753989177068466,1.4519909838462617,1.5243241102552729,1.5921861314112875,1.6553779963137811,1.7137143523351785,1.7670240888920459,1.815150839341914,1.8579534396335828,1.8953063423656049,1.927099985038446,1.9532411114201733,1.9736530450830523,1.9882759143087192,1.9970668277022476,0,0.10827781717083522,0.21623803684788373,0.32356399310552925,0.42994088042204798,0.53505667705844151,0.6386030602719599,0.74027631067982869,0.8397782031205292,0.9368168813995803,1.0311077143540435,1.1223741307247646,1.2103484303875303,1.2947725695636552,1.3753989177068466,1.4519909838462617,1.5243241102552729,1.5921861314112875,1.6553779963137811,1.7137143523351785,1.7670240888920459,1.815150839341914,1.8579534396335828,1.8953063423656049,1.9270999850384458,1.9532411114201733,1.9736530450830523,1.9882759143087192,1.9970668277022476,0,0,0.077550742513633419,0.15498484134386187,0.23218582825046044,0.30903758561568095,0.38542452109617936,0.46123174148488028,0.53634522552127462,0.61065199539022619,0.68404028665133743,0.75639971634328496,0.82762144901027823,0.89759836040092422,0.96622519859327682,1.0333987423037256,1.099017956141612,1.1629841425760532,1.2252010903864057,1.2855752193730785,1.3440157211110448,1.400434695534337,1.4547472831460975,1.5068717926553215,1.55672982384832,1.6042463855100875,1.6493500082182133,1.6919728518396819,1.7320508075688772,1.7695235943533154,1.8043348495620752,1.836432213760548,1.8657674094640009,1.8922963137515008,1.9159790246309778,1.9367799210556118,1.9546677165012709,1.969615506024416,1.9816008067296906,1.9906055915863317,1.9966163165425364,1.9996239408970029,0.038782663543648871,0.1162896578209518,0.19362174140635832,0.27066259950026234,0.34729635533386083,0.42340774445882168,0.49888228811596275,0.57360646542218063,0.64746788411664224,0.72035544960942099,0.7921595320783138,0.86277213136250708,0.93208703940507787,1.0000000000000002,1.0664088656033828,1.1312137509730773,1.1943171834055726,1.2556242493441971,1.3150427371381272,1.3724832757374672,1.4278594691157982,1.4810880262180093,1.532088886237956,1.5807853390375186,1.6271041405259352,1.670975622825873,1.712333799060533,1.7511164626041817,1.7872652806468246,1.8207258819322933,1.8514479385377809,1.8793852415718169,1.9044957706768306,1.9267417572317607,1.9460897411596476,1.9625106212547694,1.975979698953618,1.986476715483886,1.993985882335584,1.9984959050084601,0,0,0.095163831647484584,0.19011208660836532,0.28462967654657029,0.37850248872082037,0.4715178710188544,0.56346511368285934,0.65413592663484321,0.74332491132065504,0.83083002600377276,0.9164530434548207,0.99999999999999989,1.0812816349111951,1.1601138191423963,1.2363179724412103,1.30972146789057,1.3801580229642239,1.4474680762101404,1.5114991487085165,1.572106189485575,1.6291519041006712,1.6825070656623622,1.7320508075688772,1.777670897309847,1.8192639907090367,1.8567358660321454,1.8900016374293369,1.9189859472289947,1.9436231366470833,1.9638573945254134,1.9796428837618654,1.9909438451461692,1.9977346783660159,0,0.095163831647484806,0.19011208660836562,0.28462967654657068,0.37850248872082043,0.47151787101885456,0.56346511368285956,0.65413592663484355,0.74332491132065504,0.83083002600377287,0.91645304345482093,1.0000000000000002,1.0812816349111953,1.1601138191423965,1.2363179724412106,1.3097214678905702,1.3801580229642241,1.4474680762101404,1.5114991487085168,1.572106189485575,1.6291519041006715,1.6825070656623624,1.7320508075688774,1.777670897309847,1.8192639907090369,1.8567358660321454,1.8900016374293369,1.9189859472289947,1.9436231366470833,1.9638573945254134,1.9796428837618654,1.9909438451461692,1.9977346783660159,0,0,0.17927861780686699,0.3571137895972733,0.53207369113335024,0.70274964816268537,0.86776747823511624,1.0257985548118123,1.1755705045849463,1.3158774518794252,1.4455897276547831,1.5636629649360596,1.6691465074426053,1.761191063713476,1.8390555451029011,1.9021130325903071,1.9498558243636472,1.9818995235358694,1.9979861330826292,0.089729660701029973,0.26846653163531109,0.4450418679126289,0.6180339887498949,0.78605006330784732,0.94773732494599738,1.1017939629042051,1.2469796037174672,1.3821252979737293,1.5061429320072219,1.6180339887498949,1.7168975872037322,1.8019377358048383,1.8724697412794744,1.9279257213917065,1.9678591771972593,1.9919485879904781,0],"twiddles":[0.99597429399523907,0.089639308903433496,0.98392958859862967,0.17855689479863665,0.96396286069585324,0.26603684556667512,0.9362348706397372,0.35137482408134268,0.90096886790241915,0.43388373911755812,0.8584487936018661,0.51289927740590613,0.80901699437494745,0.58778525229247314,0.75307146600361097,0.65793872593971259,0.69106264898686465,0.72279486382739155,0.62348980185873359,0.7818314824680298,0.55089698145210253,0.83457325372130264,0.47386866247299869,0.880595531856738,0.39302503165392366,0.91952777255145057,0.30901699437494745,0.95105651629515353,0.22252093395631445,0.97492791218182362,0.13423326581765554,0.9909497617679347,0.044864830350514986,0.99899306654131459,0,0.98392958859862967,0.17855689479863665,0.9362348706397372,0.35137482408134268,0.8584487936018661,0.51289927740590613,0,0.9362348706397372,0.35137482408134268,0.75307146600361097,0.65793872593971259,0.47386866247299869,0.880595531856738,0,0.8584487936018661,0.51289927740590613,0.47386866247299869,0.880595531856738,-0.044864830350514862,0.9989930665413147,0,0.75307146600361097,0.65793872593971259,0.13423326581765554,0.9909497617679347,-0.55089698145210242,0.83457325372130275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99836910392613565,0.057088810862767979,0.99348173534855022,0.11399140989054062,0.98535383584769298,0.17052219263262378,0.97401191694233347,0.22649676742576436,0.95949297361449737,0.28173255684142967,0.94184436363952473,0.33604939321543009,0.92112365311485012,0.38927010631739145,0.89739842869135844,0.44122110124322128,0.87074607711977714,0.49173292464560375,0.84125353283118121,0.54064081745559756,0.80901699437494745,0.58778525229247314,0.77414161063908249,0.63301245380887039,0.73674113787640494,0.67617490027401939,0.69693756865529344,0.71713180475896343,0.6548607339452851,0.75574957435425827,0.61064787963543821,0.79190224592227509,0.56444321886676929,0.8254718969627739,0.51639746163896194,0.85634903025158893,0.46666732322567384,0.88443293099781428,0.41541501300188644,0.90963199535451833,0.36280770535064116,0.93186402921145228,0.30901699437494745,0.95105651629515353,0.25421833419348711,0.96714685470195705,0.19859046664574553,0.98008256109239345,0.14231483827328534,0.98982144188093268,0.085575008478839837,0.99633173086269133,0.028556050793696476,0.99959219282818923,0,0.99348173534855022,0.11399140989054062,0.97401191694233347,0.22649676742576436,0.94184436363952473,0.33604939321543009,0.89739842869135844,0.44122110124322128,0.84125353283118121,0.54064081745559756,0,0.97401191694233347,0.22649676742576436,0.89739842869135844,0.44122110124322128,0.77414161063908249,0.63301245380887039,0.61064787963543821,0.79190224592227509,0.41541501300188644,0.90963199535451833,0,0.94184436363952473,0.33604939321543009,0.77414161063908249,0.63301245380887039,0.51639746163896194,0.85634903025158893,0.19859046664574553,0.98008256109239345,-0.142314838273285,0.9898214418809328,0,0.89739842869135844,0.44122110124322128,0.61064787963543821,0.79190224592227509,0.19859046664574553,0.98008256109239345,-0.25421833419348677,0.96714685470195716,-0.6548607339452851,0.75574957435425827,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99867408988483053,0.051478754770346531,0.99469987561458906,0.1028209971373604,0.98808789609107717,0.15389057670406178,0.97885568509535781,0.2045520661262008,0.96702772479132038,0.25467112024122868,0.95263538080338261,0.30411483232751785,0.93571681904049364,0.35275208654909479,0.91631690448700476,0.40045390565126643,0.89448708222879558,0.44709379298511387,0.87028524103015525,0.4925480679538643,0.84377555982318564,0.5366961939916004,0.81502833751681136,0.57942109820456367,0.78411980657671043,0.6206094818274227,0.75113193087051988,0.66015212067123175,0.71615218831439331,0.69794415476634353,0.67927333889729313,0.73388536643219904,0.64059317869817523,0.7678804460366,0.60021428054836834,0.79983924473971935,0.55824372202686479,0.8296770135526188,0.51479280150983087,0.85731462807633219,0.46997674302732018,0.8826787983255473,0.42391439070986076,0.90570226308047141,0.37672789363518527,0.92632396825149488,0.32854238191083485,0.94448922878366126,0.27948563485160949,0.96014987367160176,0.22968774213179574,0.97326437370038243,0.17928075881073577,0.98379795157351635,0.12839835514655099,0.99172267413610149,0.077175462126646527,0.9970175264485267,0.025747913654988658,0.99966846751431304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99393067731794948,0.11000822099407929,0.97579638262743562,0.2186810912063758,0.94581724170063464,0.32469946920468346,0.90435716069757754,0.42677643549640365,0.85191940883832706,0.52367291398787785,0.78914050939639357,0.61421271268966782,0.71678251316845132,0.69729680109399539,0.63572374820996802,0.77191665091632089,0.54694815812242692,0.83716647826252855,0,0.97579638262743562,0.2186810912063758,0.90435716069757754,0.42677643549640365,0.78914050939639357,0.61421271268966782,0.63572374820996802,0.77191665091632089,0.45153335831088948,0.89225423861839392,0.24548548714079924,0.96940026593933037,0.027554342368162059,0.99962030702495142,-0.19171063192373838,0.98145149325241787,-0.40169542465296942,0.9157733266550574,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9941379571543596,0.10811901842394177,0.97662055571008666,0.21497044021102407,0.94765317118280246,0.31930153013598001,0.90757541967095701,0.4198891015602646,0.85685717616758927,0.51555385717702173,0.79609306570564375,0.60517421519376513,0.72599549192313084,0.68769945885342332,0.64738628478182758,0.76216205512763646,0.56118706536238228,0.82768899815689057,0.46840844069979015,0.88351204444602294,0.37013815533991434,0.92897671981679142,0.26752833852922075,0.96354999251922302,0.16178199655276462,0.98682652254152614,0.05413890858541761,0.99853341385112382,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99699294116779202,0.077492420671930934,0.98798984947680901,0.15451879280784048,0.97304487057982381,0.23061587074244014,0.95224788533841531,0.30532599769511309,0.92572396926889045,0.37819985817164248,0.89363264032341228,0.44879918020046211,0.85616689953026648,0.51669937115186282,0.81355207026296761,0.5814920712880266,0.76604444311897801,0.64278760968653925,0.7139297345578991,0.70021734776716849,0.65752136856906362,0.75343589632766073,0.59715859170278629,0.80212319275504373,0.53320443280169139,0.84598642591984097,0,0.98798984947680901,0.15451879280784048,0.95224788533841531,0.30532599769511309,0.89363264032341228,0.44879918020046211,0.81355207026296761,0.5814920712880266,0.7139297345578991,0.70021734776716849,0.59715859170278629,0.80212319275504373,0.46604351970253893,0.8847617971766577,0.32373394205832112,0.94614815687575038,0.17364817766693041,0.98480775301220802,0.019391331771824435,0.99981197044850145,-0.13533129975013106,0.99080040336484532,-0.28680323271108998,0.9579895123154889,-0.43138606568125326,0.90216742478103773,0,0.97304487057982381,0.23061587074244014,0.89363264032341228,0.44879918020046211,0.76604444311897812,0.64278760968653925,0.59715859170278629,0.80212319275504373,0,0.89363264032341228,0.44879918020046211,0.59715859170278629,0.80212319275504373,0.17364817766693064,0.98480775301220802,-0.28680323271108998,0.9579895123154889,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0,0,0.99547192257308459,0.095056043304182658,0.98192869726270671,0.18925124436041019,0.95949297361449737,0.28173255684142967,0.92836793301607268,0.37166245566032752,0.88883544865492348,0.45822652172741035,0.84125353283118121,0.54064081745559756,0.78605309474278751,0.61815898622060517,0.7237340381050702,0.69007901148211193,0.6548607339452851,0.75574957435425827,0.58005690957119826,0.81457595205033562,0.50000000000000011,0.8660254037844386,0.41541501300188644,0.90963199535451833,0.32706796331742177,0.94500081871466846,0.23575893550942728,0.97181156832354165,0.14231483827328534,0.98982144188093268,0.047581915823742403,0.99886733918300796,0,0.98192869726270671,0.18925124436041019,0.92836793301607268,0.37166245566032752,0.84125353283118121,0.54064081745559756,0.7237340381050702,0.69007901148211193,0.58005690957119826,0.81457595205033562,0,0.92836793301607268,0.37166245566032752,0.7237340381050702,0.69007901148211193,0.41541501300188644,0.90963199535451833,0.047581915823742403,0.99886733918300796,-0.32706796331742144,0.94500081871466857,0,0,0,0,0,0,0,0,0,0,0,0,0,0.98392958859862967,0.17855689479863665,0.9362348706397372,0.35137482408134268,0.8584487936018661,0.51289927740590613,0,0.9362348706397372,0.35137482408134268,0.75307146600361097,0.65793872593971259,0.47386866247299869,0.880595531856738,0,0.8584487936018661,0.51289927740590613,0.47386866247299869,0.880595531856738,-0.044864830350514862,0.9989930665413147,0,0.75307146600361097,0.65793872593971259,0.13423326581765554,0.9909497617679347,-0.55089698145210242,0.83457325372130275,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/runner.c b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/runner.c new file mode 100644 index 000000000000..92ab037366e8 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/runner.c @@ -0,0 +1,304 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/** +* Generate FFTPACK test fixtures. +* +* ## Notes +* +* - Run this script from the directory in which fixtures should be written. +* +*/ + +#include +#include +#include + +/** +* Define prototypes for external functions. +*/ +extern void costi( int n, double *wsave ); + +/** +* Generates a random number on the interval [0,1]. +* +* @return random number +*/ +double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Generates an array of pseudorandom integers drawn from a uniform distribution. +* +* ## Notes +* +* - WARNING: the method used here is not particularly robust, as some integer values may be sampled more frequently than others. +* +* +* @param out output array +* @param len array length +* @param a lower bound (inclusive) +* @param b upper bound (exclusive) +*/ +void rand_array_i32( int *out, const unsigned int len, const int a, const int b ) { + unsigned int i; + unsigned int r; + double delta; + + delta = (double)b - (double)a; + + for ( i = 0; i < len; i++ ) { + r = (unsigned int)( delta * rand_double() ); // truncation + out[ i ] = (int)( a + r ); + } +} + +/** +* Writes an array of doubles to a file as a series of comma-separated values. +* +* @param f file to write to +* @param x array of doubles +* @param len array length +*/ +void write_array_f64( FILE *f, const double *x, const unsigned int len ) { + unsigned int i; + + for ( i = 0; i < len; i++ ) { + fprintf( f, "%.17g", x[ i ] ); + if ( i < len-1 ) { + fprintf( f, "," ); + } + } +} + +/** +* Writes an array of integers to a file as a series of comma-separated values. +* +* @param f file to write to +* @param x array of integers +* @param len array length +*/ +void write_array_i32( FILE *f, const int *x, const unsigned int len ) { + unsigned int i; + + for ( i = 0; i < len; i++ ) { + fprintf( f, "%d", x[ i ] ); + if ( i < len-1 ) { + fprintf( f, "," ); + } + } +} + +/** +* Writes a named array of doubles to a file as JSON. +* +* @param f file to write to +* @param name array name +* @param x data +* @param len array length +*/ +void write_named_array_f64( FILE *f, const char *name, const double *x, const unsigned int len ) { + fprintf( f, "\"%s\":[", name ); + write_array_f64( f, x, len ); + fprintf( f, "]" ); +} + +/** +* Writes a named array of integers to a file as JSON. +* +* @param f file to write to +* @param name array name +* @param x data +* @param len array length +*/ +void write_named_array_i32( FILE *f, const char *name, const int *x, const unsigned int len ) { + fprintf( f, "\"%s\":[", name ); + write_array_i32( f, x, len ); + fprintf( f, "]" ); +} + +/** +* Writes data to a file as JSON. +* +* ## Notes +* +* - This function SHOULD be tailored to the input data (e.g., input types, output types, number of arguments, etc) and may vary from use case to use case. +* +* +* @param f file to write to +* @param lengths sequence lengths +* @param offsets cosine and twiddle offsets +* @param cosines cosine values +* @param twiddles twiddle factors +* @param num number of sequence lengths +* @param total total number of cosine and twiddle values +*/ +void write_data_as_json( FILE *f, const int *lengths, const int *offsets, const double *cosines, const double *twiddles, const unsigned int num, const unsigned int total ) { + fprintf( f, "{" ); + write_named_array_i32( f, "lengths", lengths, num ); + fprintf( f, "," ); + write_named_array_i32( f, "offsets", offsets, num ); + fprintf( f, "," ); + write_named_array_f64( f, "cosines", cosines, total ); + fprintf( f, "," ); + write_named_array_f64( f, "twiddles", twiddles, total ); + fprintf( f, "}\n" ); +} + +/** +* Generates test fixtures. +* +* @param lengths sequence lengths +* @param offsets cosine and twiddle offsets into flat output array +* @param num number of sequence lengths +* @param total total number of cosine and twiddle values +* @param name output filename +*/ +void generate( const int *lengths, const int *offsets, const unsigned int num, const unsigned int total, const char *name ) { + double *twiddles; + double *cosines; + unsigned int i; + unsigned int j; + double *wsave; + FILE *f; + int off; + int n; + + // Allocate an output array for cosine values: + cosines = (double*) malloc( total * sizeof(double) ); + if ( cosines == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + + // Allocate an output array for twiddle factors: + twiddles = (double*) malloc( total * sizeof(double) ); + if ( twiddles == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + + // Generate fixture data: + for ( i = 0; i < num; i++ ) { + n = lengths[ i ]; + wsave = (double*) calloc( 3*n + 15, sizeof(double) ); + if ( wsave == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + costi( n, wsave ); + + // Copy cosine region into flat array (N values starting at wsave[0]): + off = offsets[ i ]; + for ( j = 0; j < (unsigned int)n; j++ ) { + cosines[ off + j ] = wsave[ j ]; + } + + // Copy twiddle region into flat array (N-1 values starting at wsave[(2*n)-1]): + off = offsets[ i ]; + for ( j = 0; j < (unsigned int)( n - 1 ); j++ ) { + twiddles[ off + j ] = wsave[ ( 2*n ) - 1 + j ]; + } + free( wsave ); + } + // Open a new file: + f = fopen( name, "w" ); + if ( f == NULL ) { + printf( "Error opening file.\n" ); + exit( 1 ); + } + + // Write data as JSON: + write_data_as_json( f, lengths, offsets, cosines, twiddles, num, total ); + + // Close the file: + fclose( f ); + + // Free allocated memory: + free( cosines ); + free( twiddles ); +} + +/** +* Computes offsets into flat cosine and twiddle arrays for each sequence length. +* +* @param offsets output array of offsets +* @param lengths sequence lengths +* @param num number of sequence lengths +* @return total number of cosine and twiddle values +*/ +unsigned int compute_offsets( int *offsets, const int *lengths, const unsigned int num ) { + unsigned int total; + unsigned int i; + + total = 0; + for ( i = 0; i < num; i++ ) { + offsets[ i ] = total; + total += lengths[ i ]; + } + return total; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + unsigned int total; + unsigned int num; + int *lengths; + int *offsets; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + // Define the number of sequence lengths per range: + num = 10; + + // Allocate arrays: + lengths = (int*) malloc( num * sizeof(int) ); + if ( lengths == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + offsets = (int*) malloc( num * sizeof(int) ); + if ( offsets == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + + // Generate fixture data: + rand_array_i32( lengths, num, 2, 16 ); + total = compute_offsets( offsets, lengths, num ); + generate( lengths, offsets, num, total, "small.json" ); + + rand_array_i32( lengths, num, 16, 128 ); + total = compute_offsets( offsets, lengths, num ); + generate( lengths, offsets, num, total, "medium.json" ); + + rand_array_i32( lengths, num, 128, 1024 ); + total = compute_offsets( offsets, lengths, num ); + generate( lengths, offsets, num, total, "large.json" ); + + // Free allocated memory: + free( lengths ); + free( offsets ); + + return 0; +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/small.json b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/small.json new file mode 100644 index 000000000000..03372bfa74b5 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/fixtures/c/fftpack/small.json @@ -0,0 +1 @@ +{"lengths":[9,2,8,7,12,11,2,4,10,12],"offsets":[0,9,11,19,26,38,49,51,55,65],"cosines":[0,0.76536686473017956,1.4142135623730949,1.8477590650225735,0,0.76536686473017967,1.4142135623730951,1.8477590650225735,0,0,0,0,0.86776747823511624,1.5636629649360596,1.9498558243636472,0.4450418679126289,1.2469796037174672,1.8019377358048383,0,0,0.99999999999999989,1.7320508075688772,0,1.0000000000000002,1.7320508075688774,0,0,0.56346511368285934,1.0812816349111951,1.5114991487085165,1.8192639907090367,1.9796428837618654,0.28462967654657023,0.83083002600377287,1.3097214678905702,1.6825070656623624,1.9189859472289947,0,0,0.61803398874989479,1.1755705045849463,1.6180339887498949,1.9021130325903071,0,0.6180339887498949,1.1755705045849463,1.6180339887498949,1.9021130325903071,0,0,0,0,1.7320508075688772,1.0000000000000002,0,0,0.68404028665133743,1.2855752193730785,1.7320508075688772,1.969615506024416,0.34729635533386083,1.0000000000000002,1.532088886237956,1.8793852415718169,0,0,0.56346511368285934,1.0812816349111951,1.5114991487085165,1.8192639907090367,1.9796428837618654,0.28462967654657023,0.83083002600377287,1.3097214678905702,1.6825070656623624,1.9189859472289947,0],"twiddles":[0.70710678118654757,0.70710678118654746,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.50000000000000011,0.8660254037844386,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0,0,0,0,0,0,0,0,0,0,0,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/test.js b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/test.js new file mode 100644 index 000000000000..0602234a1a93 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/costi/test/test.js @@ -0,0 +1,314 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var isAlmostSameValue = require( '@stdlib/number/float64/base/assert/is-almost-same-value' ); +var costi = require( './../lib' ); + + +// FIXTURES // + +var small = require( './fixtures/c/fftpack/small.json' ); +var medium = require( './fixtures/c/fftpack/medium.json' ); +var large = require( './fixtures/c/fftpack/large.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof costi, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( costi.length, 4, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns a reference to the workspace array', function test( t ) { + var workspace; + var out; + var N; + + N = 8; + workspace = new Float64Array( ( 3*N ) + 34 ); + out = costi( N, workspace, 1, 0 ); + + t.strictEqual( out, workspace, 'same reference' ); + t.end(); +}); + +tape( 'the function correctly initializes sine and cosine values (small sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = small.lengths; + offsets = small.offsets; + expected = small.cosines; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float64Array( ( 3*N ) + 34 ); + costi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes twiddle factors (small sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = small.lengths; + offsets = small.offsets; + expected = small.twiddles; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float64Array( ( 3*N ) + 34 ); + costi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); + for ( i = 0; i < N-1; i++ ) { + y = workspace[ (2*N) - 1 + i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes sine and cosine values (medium sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = medium.lengths; + offsets = medium.offsets; + expected = medium.cosines; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float64Array( ( 3*N ) + 34 ); + costi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes twiddle factors (medium sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = medium.lengths; + offsets = medium.offsets; + expected = medium.twiddles; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float64Array( ( 3*N ) + 34 ); + costi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); + for ( i = 0; i < N-1; i++ ) { + y = workspace[ (2*N) - 1 + i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes sine and cosine values (large sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = large.lengths; + offsets = large.offsets; + expected = large.cosines; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float64Array( ( 3*N ) + 34 ); + costi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes twiddle factors (large sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = large.lengths; + offsets = large.offsets; + expected = large.twiddles; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + workspace = new Float64Array( ( 3*N ) + 34 ); + costi( N, workspace, 1, 0 ); + + t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); + for ( i = 0; i < N-1; i++ ) { + y = workspace[ (2*N) - 1 + i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function does not modify the scratch region of the workspace', function test( t ) { + var workspace; + var N; + var i; + + N = 8; + workspace = new Float64Array( ( 3*N ) + 34 ); + + for ( i = 0; i < workspace.length; i++ ) { + workspace[ i ] = i + 1.0; + } + costi( N, workspace, 1, 0 ); + for ( i = N; i < (2*N) - 1; i++ ) { + t.strictEqual( workspace[ i ], i + 1.0, 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function correctly handles stride and offset parameters', function test( t ) { + var workspace; + var expected; + var stride; + var offset; + var nf; + var N; + var i; + + N = 9; + stride = 2; + offset = 3; + workspace = new Float64Array( offset + ( ( ( 3*N ) + 34 ) * stride ) ); + + costi( N, workspace, stride, offset ); + + t.strictEqual( workspace[ offset + ( ( (3*N)-2 ) * stride ) ], N-1, 'returns expected value' ); + + nf = workspace[ offset + ( ( (3*N)-1 ) * stride ) ]; + t.strictEqual( nf, 2, 'returns expected value' ); + t.strictEqual( workspace[ offset + ( ( 3*N ) * stride ) ], 2, 'returns expected value' ); + t.strictEqual( workspace[ offset + ( ( (3*N)+1 ) * stride ) ], 4, 'returns expected value' ); + + expected = new Float64Array( ( 3*N ) + 34 ); + costi( N, expected, 1, 0 ); + + for ( i = 0; i < N-1; i++ ) { + t.strictEqual( workspace[ offset + ( ( (2*N)-1+i ) * stride ) ], expected[ (2*N)-1+i ], 'returns expected value' ); + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/docs/types/index.d.ts b/lib/node_modules/@stdlib/fft/base/fftpack/docs/types/index.d.ts index 489f138b7da4..a628f4d39fce 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/fft/base/fftpack/docs/types/index.d.ts @@ -22,9 +22,11 @@ import cffti = require( '@stdlib/fft/base/fftpack/cffti' ); import cosqi = require( '@stdlib/fft/base/fftpack/cosqi' ); +import costi = require( '@stdlib/fft/base/fftpack/costi' ); import decompose = require( '@stdlib/fft/base/fftpack/decompose' ); import rffti = require( '@stdlib/fft/base/fftpack/rffti' ); import sinqi = require( '@stdlib/fft/base/fftpack/sinqi' ); +import sinti = require( '@stdlib/fft/base/fftpack/sinti' ); /** * Interface describing the `fftpack` namespace. @@ -93,13 +95,49 @@ interface Namespace { * // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] * * var twiddleFactors = workspace.slice( 2*N, 3*N ); - * // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] + * // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] */ cosqi: typeof cosqi; + /** + * Initializes a workspace array for performing a cosine transform. + * + * ## Notes + * + * - The workspace array should have a length of at least `( 3*N ) + 34` elements. + * + * @param N - length of the sequence + * @param workspace - workspace array + * @param strideW - stride length for `workspace` + * @param offsetW - starting index for `workspace` + * @returns workspace array + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * + * var N = 9; + * var workspace = new Float64Array( ( 3*N ) + 34 ); + * + * var out = ns.costi( N, workspace, 1, 0 ); + * // returns + * + * var bool = ( out === workspace ); + * // returns true + * + * var cosineTable = workspace.slice( 0, N ); + * // returns [ 0, ~0.765, ~1.414, ~1.848, 0, ~0.765, ~1.414, ~1.848, 0 ] + * + * var twiddleFactors = workspace.slice( (2*N)-1, (3*N)-2 ); + * // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] + * + * var factors = workspace.slice( (3*N)-2, (3*N)+2 ); + * // returns [ 8, 2, 2, 4 ] + */ + costi: typeof costi; + /** * Factorizes a sequence length into a product of integers. * @@ -149,7 +187,7 @@ interface Namespace { * // returns true * * var twiddleFactors = workspace.slice( N, 2*N ); - * // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] + * // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 2*N, ( 2*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] @@ -185,12 +223,49 @@ interface Namespace { * // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] * * var twiddleFactors = workspace.slice( 2*N, 3*N ); - * // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] + * // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] */ sinqi: typeof sinqi; + + /** + * Initializes a workspace array for performing a sine transform. + * + * ## Notes + * + * - The workspace array should have a length of at least `( 2.5*N ) + 34` elements. + * + * @param N - length of the sequence + * @param workspace - workspace array + * @param strideW - stride length for `workspace` + * @param offsetW - starting index for `workspace` + * @returns workspace array + * + * @example + * var Float64Array = require( '@stdlib/array/float64' ); + * var floor = require( '@stdlib/math/base/special/floor' ); + * + * var N = 7; + * var workspace = new Float64Array( floor( 2.5*N ) + 34 ); + * + * var out = ns.sinti( N, workspace, 1, 0 ); + * // returns + * + * var bool = ( out === workspace ); + * // returns true + * + * var sineTable = workspace.slice( 0, floor( N/2 ) ); + * // returns [ ~0.765, ~1.414, ~1.848 ] + * + * var twiddleFactors = workspace.slice( floor( 3*N/2 ) + 1, floor( 5*N/2 ) + 2 ); + * // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] + * + * var factors = workspace.slice( floor( 5*N/2 ) + 2, floor( 5*N/2 ) + 2 + 4 ); + * // returns [ 8, 2, 2, 4 ] + */ + sinti: typeof sinti; } /** diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/lib/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/lib/index.js index 179b47fcacbe..0c5488fd1d9d 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/lib/index.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/lib/index.js @@ -58,6 +58,15 @@ setReadOnly( ns, 'cffti', require( '@stdlib/fft/base/fftpack/cffti' ) ); */ setReadOnly( ns, 'cosqi', require( '@stdlib/fft/base/fftpack/cosqi' ) ); +/** +* @name costi +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/fft/base/fftpack/costi} +*/ +setReadOnly( ns, 'costi', require( '@stdlib/fft/base/fftpack/costi' ) ); + /** * @name decompose * @memberof ns @@ -85,6 +94,15 @@ setReadOnly( ns, 'rffti', require( '@stdlib/fft/base/fftpack/rffti' ) ); */ setReadOnly( ns, 'sinqi', require( '@stdlib/fft/base/fftpack/sinqi' ) ); +/** +* @name sinti +* @memberof ns +* @readonly +* @type {Function} +* @see {@link module:@stdlib/fft/base/fftpack/sinti} +*/ +setReadOnly( ns, 'sinti', require( '@stdlib/fft/base/fftpack/sinti' ) ); + // EXPORTS // diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/README.md b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/README.md index a3a7c1a21138..e5228324e714 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/README.md +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/README.md @@ -57,7 +57,7 @@ var bool = ( out === workspace ); // returns true var twiddleFactors = workspace.slice( N, 2*N ); -// returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +// returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] var factors = workspace.slice( 2*N, ( 2*N ) + 4 ); // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/benchmark/benchmark.js b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/benchmark/benchmark.js index 07feddfa216b..b2f4afc682ca 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/benchmark/benchmark.js @@ -53,12 +53,12 @@ function createBenchmark( N ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { rffti( N, workspace, 1, 0 ); - if ( isnan( workspace[ N+1 ] ) ) { + if ( isnan( workspace[ N ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( workspace[ N+1 ] ) ) { + if ( isnan( workspace[ N ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/docs/repl.txt b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/docs/repl.txt index 92606b3192fa..8edb96270359 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/docs/repl.txt +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/docs/repl.txt @@ -46,7 +46,7 @@ > var bool = ( out === workspace ) true > var twiddleFactors = workspace.slice( N, 2*N ) - [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] + [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] > var factors = workspace.slice( 2*N, ( 2*N ) + 4 ) [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/docs/types/index.d.ts b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/docs/types/index.d.ts index 4083a9a87d20..94af8df9504d 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/docs/types/index.d.ts @@ -49,7 +49,7 @@ import { Collection } from '@stdlib/types/array'; * // returns true * * var twiddleFactors = workspace.slice( N, 2*N ); -* // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 2*N, ( 2*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/index.js index 51c16c7bcb35..b927441e8dcf 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/index.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/index.js @@ -37,7 +37,7 @@ * // returns true * * var twiddleFactors = workspace.slice( N, 2*N ); -* // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 2*N, ( 2*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/main.js b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/main.js index ba81b6c219a1..1b045b91a18c 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/main.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/main.js @@ -147,7 +147,7 @@ var rffti1 = require( './rffti1.js' ); * // returns true * * var twiddleFactors = workspace.slice( N, 2*N ); -* // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 2*N, ( 2*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/rffti1.js b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/rffti1.js index 9d4c242a83ac..ba401e085efc 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/rffti1.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/lib/rffti1.js @@ -116,7 +116,7 @@ function rffti1( N, twiddles, strideT, offsetT, factors, strideF, offsetF ) { argh = TWO_PI / N; // Define the location of the first sine term we want to compute: - im = 2; + im = 1; // Initialize a running product of factors already processed: l1 = 1; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/large.json b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/large.json index 01ea1093cdc9..f8983602724c 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/large.json +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/large.json @@ -1 +1 @@ -{"lengths":[259,615,618,201,648,971,569,524,342,823],"offsets":[0,258,872,1489,1689,2336,3306,3874,4397,4738],"twiddles":[0.99970575512072213,0.024257023282068805,0.99882319364298633,0.048499771554363059,0.99735283494518367,0.072713978207805285,0.99529554431834921,0.096885393429768346,0.99265253245694707,0.12099979258994435,0.9894253547463896,0.14504298461139381,0.98561591034770846,0.16900082032184907,0.98122644107991797,0.1928592007803574,0.97625953010072786,0.21660408557436325,0.97071810038638084,0.24022150108234722,0.96460541301151181,0.26369754869715928,0.95792506523003795,0.28701841300520692,0.95068098835821235,0.31017036991668395,0.94287744546108421,0.33313979474205757,0.93451902884372884,0.35591317021005814,0.92561065734872361,0.37847709442245486,0.91615757346145843,0.40081828874093606,0.90616534022498785,0.42292360560145142,0,0.99882319364298633,0.048499771554363059,0.99529554431834921,0.096885393429768346,0.9894253547463896,0.14504298461139381,0.98122644107991797,0.1928592007803574,0.97071810038638084,0.24022150108234722,0.95792506523003795,0.28701841300520692,0.94287744546108421,0.33313979474205757,0.92561065734872361,0.37847709442245486,0.90616534022498785,0.42292360560145142,0.88458726083548767,0.46637471840524203,0.86092720562221858,0.50872816574229318,0.83524086119194496,0.54988426400046964,0.80758868325149491,0.58974614766365085,0.77803575431843952,0.62821999729564226,0.74665163054205241,0.66521526035479261,0.71351017799507233,0.70064486431960682,0.6786893988215752,0.73442542162374047,0.64227124765013588,0.76647742591803558,0,0.99735283494518367,0.072713978207805285,0.9894253547463896,0.14504298461139381,0.97625953010072786,0.21660408557436325,0.95792506523003795,0.28701841300520692,0.93451902884372884,0.35591317021005814,0.90616534022498785,0.42292360560145142,0.87301411316118815,0.48769494381363454,0.83524086119194496,0.54988426400046964,0.79304556838249773,0.60916231537159382,0.74665163054205241,0.66521526035479261,0.69630467249262196,0.71774633615570793,0.64227124765013588,0.76647742591803558,0.58483742680266448,0.81115053116597169,0.52430728355723166,0.85152913773331129,0.46100128447376204,0.88739946794752,0.3952545924093237,0.91857161243930208,0.3274152920553221,0.94488053558549301,0.25784254706223786,0.96618694926212789,0,0.99529554431834921,0.096885393429768346,0.98122644107991797,0.1928592007803574,0.95792506523003795,0.28701841300520692,0.92561065734872361,0.37847709442245486,0.88458726083548767,0.46637471840524203,0.83524086119194496,0.54988426400046964,0.77803575431843952,0.62821999729564226,0.71351017799507233,0.70064486431960682,0.64227124765013588,0.76647742591803558,0.56498924406486239,0.82509826935402997,0.4823913067609637,0.87595583630765872,0.3952545924093237,0.91857161243930208,0.30439896263176669,0.95254462968865894,0.21067926999572642,0.97755523894768614,0.11497731478221103,0.99336811761072363,0.01819354820511962,0.99983448370403183,-0.078761399854417713,0.99689349576219655,-0.17497528888387551,0.98457282528008272,0,0.99265253245694707,0.12099979258994435,0.97071810038638084,0.24022150108234722,0.93451902884372884,0.35591317021005814,0.88458726083548767,0.46637471840524203,0.8216565404512729,0.56998292038766007,0.74665163054205241,0.66521526035479261,0.66067472339008149,0.75067230525272433,0.56498924406486239,0.82509826935402997,0.46100128447376204,0.88739946794752,0.35023894093270863,0.93666038896407622,0.23432985889002245,0.97215714636707895,0.11497731478221103,0.99336811761072363,-0.0060648135026995014,0.99998160884947151,-0.12701781974687876,0.99190043525887683,-0.2461043073750987,0.96924334916027299,-0.36157430818203079,0.93234329496311918,-0.47173099800142432,0.88174251656851632,-0.57495563142708306,0.81818458913027947,0,0.9894253547463896,0.14504298461139381,0.95792506523003795,0.28701841300520692,0.90616534022498785,0.42292360560145142,0.83524086119194496,0.54988426400046964,0.74665163054205241,0.66521526035479261,0.64227124765013588,0.76647742591803558,0.52430728355723166,0.85152913773331129,0.3952545924093237,0.91857161243930208,0.25784254706223786,0.96618694926212789,0.11497731478221103,0.99336811761072363,-0.030319606129884956,0.99954025505935906,-0.17497528888387551,0.98457282528008272,-0.3159303684216761,0.94878237879344285,-0.45020374481767339,0.89292585814956849,-0.57495563142708306,0.81818458913027947,-0.68754761435867873,0.7261392965469432,-0.78559845305665621,0.61873667303222679,-0.86703444184891532,0.49824820787208046,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99994781138976108,0.010216383745088785,0.99979125100634614,0.020431701132438921,0.99953033519109313,0.030644885915615212,0.99916509117766938,0.040854872070777773,0.99869555708922997,0.051060593907950605,0.9981217819344379,0.061260986182255367,0.9974438256023489,0.071454984205098687,0.99666175885616082,0.081641523955301387,0.99577566332582645,0.091819542190158046,0.99478563149953469,0.10198797655641534,0.99369176671405557,0.11214576570115752,0.99249418314395499,0.1222918493825874,0.99119300578967739,0.13242516858069164,0.98978837046449819,0.14254466560777812,0.98828042378034853,0.15264928421887447,0.98666932313251188,0.16273796972197613,0.98495523668319584,0.17280966908813197,0.98313834334397954,0.18286333106135669,0.98121883275713973,0.19289790626835787,0.97919690527585612,0.20291234732806676,0.97707277194329922,0.21290560896096089,0.97484665447060215,0.22287664809816748,0.97251878521371926,0.23282442399033618,0.97008940714917313,0.24274789831626933,0.9675587738486936,0.25264603529129942,0.96492714945275082,0.26251780177540102,0.96219480864298434,0.27236216738102731,0.95936203661353348,0.28217810458065901,0.95642912904126876,0.29196458881405485,0.95339639205493054,0.30172059859519229,0.95026414220317601,0.31144511561888744,0.94703270642153836,0.32113712486708279,0.94370242199830279,0.3307956147147923,0.94027363653930063,0.34041957703569159,0.93674670793162784,0.35000800730734355,0.93312200430628933,0.35955990471604782,0.92939990399977446,0.36907427226130246,0.92558079551456762,0.37855011685986856,0.92166507747859727,0.38798644944942523,0.91765315860362795,0.39738228509180523,0.91354545764260087,0.40673664307580015,0.90934240334592487,0.41604854701952437,0.90504443441672477,0.42531702497232671,0.90065199946505126,0.43454110951624053,0.8961655569610556,0.44371983786695968,0.89158557518713633,0.45285225197433127,0.88691253218906085,0.46193739862235467,0.88214691572606829,0.47097432952867496,0.87728922321995917,0.47996210144356261,0.87233996170317496,0.48889977624836689,0.86729964776587642,0.49778642105343401,0.86216880750202252,0.5066211082954799,0.85694797645445886,0.51540291583440645,0.85163769955901858,0.524130927049552,0.84623853108764413,0.53280423093536566,0.84075103459053335,0.54142192219649532,0.83517578283731808,0.54998310134228023,0.82951335775727975,0.55848687478063719,0.8237643503786094,0.5669323549113312,0.81792936076671774,0.57531866021862055,0.81200899796160186,0.58364491536326712,0.80600387991427569,0.59191025127390207,0.79991463342226965,0.6001138052377365,0.79374189406420737,0.60825472099060984,0.78748630613346571,0.61633214880636367,0.78114852257092537,0.62434524558553384,0.77472920489681862,0.63229317494335113,0.76822902314168173,0.64017510729704064,0.76164865577641871,0.64799021995241135,0.75498878964148508,0.65573769718972652,0.74825011987519663,0.66341673034884641,0.74143334984117326,0.67102651791363388,0.73453919105492382,0.6785662655956145,0.72756836310957995,0.68603518641688221,0.72052159360078705,0.69343250079224172,0.7133996180507598,0.70075743661057932,0.70620317983151026,0.70800922931545429,0.69893303008725727,0.71518712198490064,0.69158992765602345,0.72229036541043257,0.68417463899043041,0.72931821817524489,0.67668793807769811,0.73626994673160018,0.66913060635885824,0.74314482547739424,0.66150343264718992,0.74994213683189226,0.65380721304588529,0.7566611713106286,0.64604275086495444,0.76330122759945984,0.63821085653737841,0.76986161262776687,0.63031234753451815,0.77634164164079511,0.62234804828078927,0.78274063827112772,0.61431879006761103,0.78905793460928231,0.60622541096663807,0.7952928712734264,0.59806875574228535,0.80144479747820097,0.58984967576355352,0.80751307110264836,0.58156902891516571,0.81349705875723433,0.57322767950802367,0.81939613584996029,0.56482649818899355,0.82520968665155581,0.55636636185003019,0.8309371043597471,0.54784815353664951,0.83657779116259345,0.53927276235575861,0.84213115830088459,0.53064108338285343,0.84759662612959441,0.52195401756859361,0.85297362417838229,0.51321247164476247,0.85826159121113765,0.50441735802962662,0.86345997528455909,0,0.99979125100634614,0.020431701132438921,0.99916509117766938,0.040854872070777773,0.9981217819344379,0.061260986182255367,0.99666175885616082,0.081641523955301387,0.99478563149953469,0.10198797655641534,0.99249418314395499,0.1222918493825874,0.98978837046449819,0.14254466560777812,0.98666932313251188,0.16273796972197613,0.98313834334397954,0.18286333106135669,0.97919690527585612,0.20291234732806676,0.97484665447060215,0.22287664809816748,0.97008940714917313,0.24274789831626933,0.96492714945275082,0.26251780177540102,0.95936203661353348,0.28217810458065901,0.95339639205493054,0.30172059859519229,0.94703270642153836,0.32113712486708279,0.94027363653930063,0.34041957703569159,0.93312200430628933,0.35955990471604782,0.92558079551456762,0.37855011685986856,0.91765315860362795,0.39738228509180523,0.90934240334592487,0.41604854701952437,0.90065199946505126,0.43454110951624053,0.89158557518713633,0.45285225197433127,0.88214691572606829,0.47097432952867496,0.87233996170317496,0.48889977624836689,0.86216880750202252,0.5066211082954799,0.85163769955901858,0.524130927049552,0.84075103459053335,0.54142192219649532,0.82951335775727975,0.55848687478063719,0.81792936076671774,0.57531866021862055,0.80600387991427569,0.59191025127390207,0.79374189406420737,0.60825472099060984,0.78114852257092537,0.62434524558553384,0.76822902314168173,0.64017510729704064,0.75498878964148508,0.65573769718972652,0.74143334984117326,0.67102651791363388,0.72756836310957995,0.68603518641688221,0.7133996180507598,0.70075743661057932,0.69893303008725727,0.71518712198490064,0.68417463899043041,0.72931821817524489,0.66913060635885824,0.74314482547739424,0.65380721304588529,0.7566611713106286,0.63821085653737841,0.76986161262776687,0.62234804828078927,0.78274063827112772,0.60622541096663807,0.7952928712734264,0.58984967576355352,0.80751307110264836,0.57322767950802367,0.81939613584996029,0.55636636185003019,0.8309371043597471,0.53927276235575861,0.84213115830088459,0.52195401756859361,0.85297362417838229,0.50441735802962662,0.86345997528455909,0.48667010525891918,0.87358583358893394,0.4687196686987834,0.8833469715660448,0.45057354262035432,0.8927393139604326,0.43223930299474717,0.90175893948805141,0.41372460433010444,0.91040208247339727,0.39503717647585423,0.91866513442166986,0.37618482139551362,0.92654464552531168,0.35717540990938473,0.93403732610429602,0.33801687840850292,0.94114004797956152,0.31871722554120951,0.94784984577902098,0.29928450887373237,0.95416391817559776,0.27972684152616806,0.96007962905677469,0.26005238878527065,0.96559450862516527,0.24026936469546087,0.97070625442964964,0.22038602862947904,0.97541273232664261,0.20041068184011365,0.97971197737109483,0.18035166399444508,0.98360219463685361,0.16021734969205123,0.98708175996603997,0.14001614496862919,0.99014922064713251,0.11975648378649216,0.99280329602147055,0.099446824513407237,0.99504287801792723,0.079095646391243821,0.99686703161552659,0.05871144599590726,0.99827499523381313,0.038302733690035493,0.99926618105081,0.017878030069939755,0.9998401752484336,-0.0025541375917272082,0.99999673818526158,-0.022985238906090319,0.99973580449658295,-0.043406743929472351,0.99905748312168763,-0.063810126724628255,0.99796205725838438,-0.084186868920306773,0.99644998424476638,-0.10452846326765333,0.9945218953682734,-0.12482641719196928,0.99217859560213073,-0.14507225633834475,0.98942106326927448,-0.1652575281096848,0.9862504496339034,-0.18537380519565161,0.98266807842082904,-0.20541268909104968,0.97867544526282246,-0.22536581360218477,0.97427421707619122,-0.24522484833973299,0.96946623136484489,-0.26498150219666156,0.96425349545314099,-0.28462752680974923,0.9586381856478311,-0.30415472000326155,0.95262264632945692,-0.32355492921334233,0.94620938897357654,-0.34282005489169304,0.93940109110222803,-0.36194205388711781,0.93220059516606979,-0.3809129428035225,0.92461090735766271,-0.39972480133296751,0.91663519635639112,-0.41836977556237903,0.90827679200554534,-0.43684008125254309,0.89953918392211885,-0.45512800708800849,0.89042602003990068,-0.47322591789654772,0.88094110508646939,-0.49112625783682295,0.87108839899472801,0,0.99953033519109313,0.030644885915615212,0.9981217819344379,0.061260986182255367,0.99577566332582657,0.091819542190158032,0.99249418314395499,0.1222918493825874,0.98828042378034853,0.15264928421887447,0.98313834334397954,0.18286333106135666,0.97707277194329922,0.21290560896096086,0.97008940714917313,0.24274789831626933,0.96219480864298434,0.27236216738102731,0.95339639205493054,0.30172059859519229,0.94370242199830279,0.3307956147147923,0.93312200430628933,0.35955990471604776,0.92166507747859727,0.38798644944942517,0.90934240334592487,0.41604854701952432,0.8961655569610556,0.44371983786695962,0.88214691572606829,0.47097432952867496,0.86729964776587642,0.49778642105343401,0.85163769955901858,0.524130927049552,0.83517578283731808,0.54998310134228023,0.81792936076671774,0.57531866021862055,0,0.9981217819344379,0.061260986182255367,0.99249418314395499,0.1222918493825874,0.98313834334397954,0.18286333106135666,0.97008940714917313,0.24274789831626933,0.95339639205493054,0.30172059859519229,0.93312200430628933,0.35955990471604776,0.90934240334592487,0.41604854701952432,0.88214691572606829,0.47097432952867496,0.85163769955901858,0.524130927049552,0.81792936076671774,0.57531866021862055,0.78114852257092537,0.62434524558553384,0.74143334984117337,0.67102651791363377,0.69893303008725727,0.71518712198490053,0.6538072130458854,0.75666117131062849,0.60622541096663818,0.79529287127342629,0.55636636185003019,0.8309371043597471,0.50441735802962662,0.86345997528455909,0.45057354262035432,0.8927393139604326,0.39503717647585423,0.91866513442166986,0.33801687840850292,0.94114004797956152,0,0.99577566332582645,0.091819542190158046,0.98313834334397954,0.18286333106135669,0.96219480864298434,0.27236216738102731,0.93312200430628933,0.35955990471604782,0.8961655569610556,0.44371983786695968,0.85163769955901858,0.524130927049552,0.79991463342226965,0.6001138052377365,0.74143334984117326,0.67102651791363388,0.67668793807769811,0.73626994673160018,0.60622541096663807,0.7952928712734264,0.53064108338285343,0.84759662612959441,0.45057354262035432,0.8927393139604326,0.36669925317684809,0.93033953894239163,0.27972684152616806,0.96007962905677469,0.19039110916466842,0.98170831999685493,0.099446824513407237,0.99504287801792723,0.0076623461263018869,0.99997064379502698,-0.084186868920306773,0.99644998424476638,-0.17532481661118743,0.98451064426965618,-0.26498150219666156,0.96425349545314099,0,0.99249418314395499,0.1222918493825874,0.97008940714917313,0.24274789831626933,0.93312200430628933,0.35955990471604776,0.88214691572606829,0.47097432952867496,0.81792936076671774,0.57531866021862055,0.74143334984117337,0.67102651791363377,0.6538072130458854,0.75666117131062849,0.55636636185003019,0.8309371043597471,0.45057354262035432,0.8927393139604326,0.33801687840850292,0.94114004797956152,0.22038602862947904,0.97541273232664261,0.099446824513407445,0.99504287801792723,-0.022985238906090097,0.99973580449658295,-0.14507225633834453,0.98942106326927448,-0.26498150219666133,0.9642534954531411,-0.3809129428035225,0.92461090735766271,-0.49112625783682295,0.87108839899472801,-0.59396696538108751,0.80448943065523359,-0.68789125840396959,0.72581376165749512,-0.77148917982194276,0.63624244232656013,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99994831684112406,0.010166791362219731,0.99979327270679419,0.020332531820652998,0.99953488362335152,0.030496170580141393,0.99917317629952429,0.040656657062771384,0.99870818812366646,0.050812941016468702,0.99813996715989384,0.060963972623559008,0.99746857214311491,0.071108702609283689,0.99669407247296038,0.081246082350259541,0.99581654820660925,0.091375063982871096,0.99483609005051377,0.10149460051158439,0.99375279935102301,0.11160364591717112,0.99256678808390786,0.1217011552648317,0.9912781788427858,0.13178608481220641,0.98988710482644893,0.1418573921172632,0.98839370982509611,0.15191403614605092,0.98679814820546974,0.1619549773803074,0.98510058489489893,0.17197917792491049,0.98330119536425242,0.18198560161516153,0.98140016560980015,0.19197321412388973,0.97939769213398775,0.20194098306836697,0.97729398192512484,0.21188787811702126,0.97508925243598943,0.22181287109593834,0.97278373156135023,0.23171493609514029,0.97037765761441064,0.24159304957462996,0.96787127930217487,0.25144619047019068,0.96526485569973985,0.26127334029892979,0.962558656223516,0.27107348326455549,0.95975296060337811,0.28084560636237593,0.95684805885375124,0.29058869948400995,0.9538442512436327,0.30030175552179805,0.9507418482655543,0.30998377047290337,0.94754117060348819,0.31963374354309215,0.94424254909969862,0.32925067725018159,0.94084632472054397,0.33883357752714643,0.93735284852123257,0.34838145382487162,0.93376248160953546,0.35789331921454187,0.9300755951084595,0.36736819048965696,0.92629257011788635,0.37680508826766201,0.92241379767517928,0.3862030370911827,0.91843967871476306,0.39556106552885462,0.9143706240266809,0.4048782062757369,0.91020705421413273,0.41415349625329845,0.90594939964999865,0.42338597670896833,0.90159810043235322,0.43257469331523801,0.89715360633897423,0.44171869626830707,0.89261637678085004,0.45081704038626075,0.88798688075469323,0.45986878520676988,0.88326559679446082,0.46887299508430325,0.87845301292189082,0.47782873928684144,0.87354962659605717,0.48673509209208354,0.86855594466194874,0.49559113288313561,0.86347248329807924,0.5043959462436709,0.85829976796313123,0.51314862205255429,0.85303833334164147,0.52184825557791659,0.84768872328873324,0.53049394757067447,0.84225149077389883,0.53908480435748241,0.83672719782384208,0.54761993793310804,0.83111641546438353,0.55609846605222191,0.82541972366143535,0.56451951232059261,0.81963771126105245,0.57288220628567577,0.81377097592856618,0.5811856835265895,0.8078201240868047,0.58942908574346708,0.80178577085341063,0.59761156084617539,0.79566853997725762,0.60573226304239336,0.78946906377397619,0.61379035292503703,0.78318798306059356,0.62178499755902727,0.77682594708929431,0.62971537056738647,0.77038361348031048,0.63758065221665838,0.76386164815394486,0.64538002950164097,0.7572607252617376,0.65311269622942336,0.75058152711678217,0.66077785310271953,0.7438247441231961,0.66837470780248853,0.73699107470475722,0.67590247506983359,0.73008122523271024,0.68336037678717121,0.72309590995275108,0.69074764205866301,0.71603585091119881,0.69806350728989941,0.70890177788035968,0.70530721626683024,0.70169442828309314,0.71247802023393192,0.69441454711658812,0.71957517797160275,0.68706288687535433,0.7265979558727812,0.67964020747344023,0.73354562801877499,0.67214727616588366,0.74041747625429755,0.66458486746940282,0.74721279026170062,0.65695376308233822,0.75393086763439732,0.64925475180385039,0.76057101394946713,0.64148862945238583,0.76713254283943633,0.63365619878341517,0.77361477606322449,0.62575826940645563,0.78001704357625279,0.61779565770138467,0.78633868359970283,0.60976918673405422,0.79257904268892332,0.60167968617121248,0.79873747580097387,0.59352799219474506,0.80481334636130053,0.58531494741524204,0.81080602632953613,0.57704140078489941,0.81671489626441918,0.56870820750976747,0.82253934538782236,0.56031622896134992,0.82827877164788677,0.55186633258756801,0.83393258178125396,0.54335939182309545,0.83950019137438903,0.53479628599907425,0.84498102492398985,0.52617790025222189,0.85037451589647417,0.51750512543333804,0.85568010678654038,0.50877885801522049,0.86089724917479449,0.49999999999999989,0.86602540378443871,0.49116945882590363,0.87106404053701414,0.48228814727345615,0.87601263860719325,0.47335698337112969,0.88087068647661559,0.46437689030045004,0.88563768198676129,0.45534879630057101,0.89031313239085785,0.44627363457232566,0.89489655440481297,0.43715234318176505,0.89938747425717036,0.42798586496319291,0.9037854277380819,0.41877514742170974,0.90808996024729027,0.40952114263527162,0.91230062684112057,0.40022480715627778,0.91641699227847162,0.39088710191269549,0.92043863106580548,0.38150899210873157,0.92436512750112976,0.37209144712506415,0.92819607571696594,0.36263544041864049,0.9319310797223036,0.3531419494220544,0.93556975344353199,0.34361195544251288,0.93911172076434679,0.33404644356040203,0.94255661556462866,0.32444640252746199,0.945904081758287,0.31481282466458482,0.94915377333006756,0.30514670575924108,0.9523053543713188,0.29544904496254892,0.95535849911471338,0.2857208446859959,0.95831289196792147,0.27596311049782252,0.96116822754623277,0.26617685101908162,0.96392421070412249,0.25636307781938011,0.96658055656576003,0.24652280531231693,0.96913699055445479,0.23665705065062695,0.97159324842103889,0.22676683362104103,0.97394907627118121,0.21685317653887543,0.97620423059163153,0.20691710414235823,0.97835847827539191,0.19695964348670594,0.98041159664581168,0.18698182383796097,0.9823633734796049,0.17698467656659911,0.98421360702878735,0.16696923504092209,0.98596210604153001,0.15693653452024103,0.98760868978192839,0.14688761204786591,0.98915318804868424,0.13682350634391002,0.99059544119269904,0.12674525769792169,0.991935300133576,0.11665390786135239,0.99317262637503012,0.10655049993987611,0.99430729201920387,0.09643607828556644,0.99533917977988795,0.08631168838894597,0.99626818299464404,0.076178376770918002,0.99709420563583062,0.066037190874590687,0.99781716232052897,0.055889178957007998,0.99843697831936873,0.045735389980794357,0.99895358956425229,0.035576873505727448,0.99936694265497772,0.025414679580249136,0.99967699486475792,0.015249858632925991,0.99988371414463784,0.0050834613638695023,0.99998707912680651,0,0.99979327270679419,0.020332531820652998,0.99917317629952429,0.040656657062771384,0.99813996715989384,0.060963972623559008,0.99669407247296038,0.081246082350259541,0.99483609005051377,0.10149460051158439,0.99256678808390786,0.1217011552648317,0.98988710482644893,0.1418573921172632,0.98679814820546974,0.1619549773803074,0.98330119536425242,0.18198560161516153,0.97939769213398775,0.20194098306836697,0.97508925243598943,0.22181287109593834,0.97037765761441064,0.24159304957462996,0.96526485569973985,0.26127334029892979,0.95975296060337811,0.28084560636237593,0.9538442512436327,0.30030175552179805,0.94754117060348819,0.31963374354309215,0.94084632472054397,0.33883357752714643,0.93376248160953546,0.35789331921454187,0.92629257011788635,0.37680508826766201,0.91843967871476306,0.39556106552885462,0.91020705421413273,0.41415349625329845,0.90159810043235322,0.43257469331523801,0.89261637678085004,0.45081704038626075,0.88326559679446082,0.46887299508430325,0.87354962659605717,0.48673509209208354,0.86347248329807924,0.5043959462436709,0.85303833334164147,0.52184825557791659,0.84225149077389883,0.53908480435748241,0.83111641546438353,0.55609846605222191,0.81963771126105245,0.57288220628567577,0.8078201240868047,0.58942908574346708,0.79566853997725762,0.60573226304239336,0.78318798306059356,0.62178499755902727,0.77038361348031048,0.63758065221665838,0.7572607252617376,0.65311269622942336,0.7438247441231961,0.66837470780248853,0.73008122523271024,0.68336037678717121,0.71603585091119881,0.69806350728989941,0.70169442828309314,0.71247802023393192,0.68706288687535433,0.7265979558727812,0.67214727616588366,0.74041747625429755,0.65695376308233822,0.75393086763439732,0.64148862945238583,0.76713254283943633,0.62575826940645563,0.78001704357625279,0.60976918673405422,0.79257904268892332,0.59352799219474506,0.80481334636130053,0.57704140078489941,0.81671489626441918,0.56031622896134992,0.82827877164788677,0.54335939182309545,0.83950019137438903,0.52617790025222189,0.85037451589647417,0.50877885801522049,0.86089724917479449,0,0.99917317629952429,0.040656657062771384,0.99669407247296038,0.081246082350259541,0.99256678808390786,0.1217011552648317,0.98679814820546974,0.1619549773803074,0.97939769213398775,0.20194098306836697,0.97037765761441064,0.24159304957462996,0.95975296060337811,0.28084560636237593,0.94754117060348819,0.31963374354309215,0.93376248160953546,0.35789331921454187,0.91843967871476306,0.39556106552885462,0.90159810043235322,0.43257469331523801,0.88326559679446082,0.46887299508430325,0.86347248329807924,0.5043959462436709,0.84225149077389883,0.53908480435748241,0.81963771126105245,0.57288220628567577,0.79566853997725762,0.60573226304239336,0.77038361348031048,0.63758065221665838,0.7438247441231961,0.66837470780248853,0.71603585091119881,0.69806350728989941,0.68706288687535433,0.7265979558727812,0.65695376308233822,0.75393086763439732,0.62575826940645563,0.78001704357625279,0.59352799219474506,0.80481334636130053,0.56031622896134992,0.82827877164788677,0.52617790025222189,0.85037451589647417,0.49116945882590363,0.87106404053701414,0.45534879630057101,0.89031313239085785,0.41877514742170974,0.90808996024729027,0.38150899210873157,0.92436512750112976,0.34361195544251288,0.93911172076434679,0.30514670575924108,0.9523053543713188,0.26617685101908162,0.96392421070412249,0.22676683362104103,0.97394907627118121,0.18698182383796097,0.9823633734796049,0.14688761204786591,0.98915318804868424,0.10655049993987611,0.99430729201920387,0.066037190874590687,0.99781716232052897,0.025414679580249136,0.99967699486475792,-0.01524985863292609,0.99988371414463784,-0.055889178957008102,0.99843697831936873,-0.096436078285566551,0.99533917977988795,-0.13682350634391011,0.99059544119269904,-0.17698467656659922,0.98421360702878735,-0.21685317653887551,0.97620423059163153,-0.25636307781938023,0.96658055656576003,-0.2954490449625492,0.95535849911471327,-0.33404644356040208,0.94255661556462866,-0.3720914471250642,0.92819607571696594,-0.40952114263527173,0.91230062684112057,-0.44627363457232572,0.89489655440481286,-0.48228814727345626,0.87601263860719325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99951145760046589,0.03125453767682429,0.99804630774921599,0.062478537019982648,0.99560598202189809,0.093641489534350766,0.99219286482368529,0.12471294637273277,0.98781029105950946,0.15566254808696697,0.98246254287557611,0.18646005429168117,0.97615484547534526,0.21707537321171355,0.96889336201406373,0.24747859108432871,0.96068518757684018,0.27764000138750056,0.95153834224614542,0.30753013386570344,0.94146176326551134,0.33711978332485076,0.93046529630708663,0.36638003816824616,0.91855968585157977,0.39528230864566533,0.90575656468999055,0.42379835478796629,0.89206844255738649,0.45190031399993386,0.87750869390983122,0.47956072828439789,0.86209154485640649,0.50675257107102523,0.84583205925909744,0.53344927362357031,0.82874612401412162,0.55962475099978393,0.81085043352908504,0.5852534275386132,0.79216247341112933,0.61031026184979209,0.77270050338201135,0.63477077128140225,0.75248353943680657,0.65861105584150048,0.73153133526366898,0.68180782155043773,0.70986436294280331,0.70433840320105223,0.68750379294350594,0.72618078650449913,0.66447147343882174,0.74731362960007708,0.64078990895802601,0.76771628390803637,0.61648223839779126,0.78736881430499195,0.59157221241352231,0.80625201860222984,0.5660841702129531,0.82434744630787338,0.54004301577467573,0.84163741665457892,0.51347419351484191,0.85810503587514431,0,0.99804630774921599,0.062478537019982648,0.99219286482368529,0.12471294637273277,0.98246254287557611,0.18646005429168117,0.96889336201406373,0.24747859108432871,0.95153834224614542,0.30753013386570344,0.93046529630708663,0.36638003816824616,0.90575656468999055,0.42379835478796629,0.87750869390983122,0.47956072828439789,0.84583205925909744,0.53344927362357031,0.81085043352908504,0.5852534275386132,0.77270050338201135,0.63477077128140225,0.73153133526366898,0.68180782155043773,0.68750379294350594,0.72618078650449913,0.64078990895802601,0.76771628390803637,0.59157221241352231,0.80625201860222984,0.54004301577467573,0.84163741665457892,0.48640366342581109,0.87373421370915205,0.43086374494097046,0.90241699523858832,0.37364027613685968,0.92757368658687767,0.31495685110861033,0.94910599088813508,0.25504276856167651,0.96692977315025064,0.19413213585362751,0.98097538900265424,0.13246295424668797,0.99118795682364902,0.070276188945293,0.99752757218401011,0.0078148275523839076,0.99996946376893259,-0.054677069376585792,0.99850409016908293,-0.11695532197208247,0.99313717716255423,-0.17877658515512931,0.9838896953420494,-0.23989929948009772,0.97079777817471258,-0.30008463500034077,0.95391258081477903,-0.35909742446862458,0.93330008022071897,-0.41670708222598662,0.90904081735789222,-0.47268850518856537,0.88122958249402839,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99995299150722616,0.0096961216859783959,0.99981197044850145,0.01939133177182437,0.9995769500822006,0.029084718743111401,0.99924795250423004,0.03877537125681671,0.99882500864595036,0.048462378227002958,0.99830815827126818,0.058144828910475822,0.99769744997289767,0.067821812992409344,0.99699294116779202,0.077492420671930934,0.99619469809174555,0.087155742747658166,0.99530279579316583,0.096810870703179092,0.99431731812601842,0.10645689679246825,0.99323835774194302,0.11609291412523022,0.99206601608154232,0.12571801675216268,0.99080040336484532,0.13533129975013108,0.98944163858094447,0.14493185930724672,0.98798984947680901,0.15451879280784048,0.98644517254527386,0.16409119891732396,0.98480775301220802,0.17364817766693033,0.98307774482286003,0.18318883053832663,0.98125531062738469,0.19271226054808968,0.97934062176555148,0.20221757233203794,0.97733385825063557,0.21170387222941073,0.97523520875249314,0.22117026836688777,0.97304487057982381,0.23061587074244014,0.97076304966161997,0.24003979130900588,0.9683899605278059,0.24944114405798126,0.96592582628906831,0.25881904510252074,0.96337087861588033,0.26817261276063731,0.96072535771672052,0.27750096763809573,0.9579895123154889,0.28680323271109021,0.95516359962812303,0.29607853340869988,0.95224788533841531,0.30532599769511309,0.9492426435730339,0.31454475615161365,0.94614815687575049,0.32373394205832101,0.94296471618087596,0.33289269147567657,0.93969262078590843,0.34202014332566871,0.93633217832339311,0.35111543947278878,0.93288370473200055,0.36017772480471039,0.92934752422682243,0.36920614731268442,0.92572396926889045,0.37819985817164248,0.92201338053391846,0.38715801182000059,0.918216106880274,0.39607976603915679,0.91433250531617938,0.40496428203267359,0.91036294096614667,0.41381072450513912,0.90630778703664994,0.42261826174069944,0.90216742478103773,0.43138606568125343,0.89794224346368812,0.44011331200430481,0.89363264032341228,0.44879918020046211,0.88923902053610615,0.45744285365058074,0.88476179717665782,0.46604351970253877,0.8802013911801112,0.47460036974764036,0.87555823130209087,0.48311259929663841,0.87083275407849214,0.49157940805537054,0.86602540378443871,0.49999999999999994,0.8611366323925137,0.50837358345185557,0.85616689953026648,0.51669937115186282,0.85111667243699973,0.52497658033456018,0.84598642591984108,0.53320443280169116,0.84077664230910321,0.54138215499536957,0.83548781141293649,0.54950897807080601,0.83012043047127881,0.55758413796859274,0.82467500410910677,0.56560687548653854,0.8191520442889918,0.57357643635104605,0.81355207026296761,0.5814920712880266,0.80787560852371121,0.58935303609334477,0.80212319275504385,0.59715859170278618,0.79629536378175581,0.60490800426154168,0.79039266951875931,0.61260054519320284,0.78441566491957571,0.62023549126826005,0.77836491192416002,0.62781212467209857,0.77224097940606917,0.63532973307248508,0.76604444311897801,0.64278760968653925,0.75977588564254939,0.65018505334718335,0.75343589632766073,0.65752136856906362,0.74702507124099604,0.66479586561393778,0.74054401310900464,0.67200786055552242,0.73399333126123534,0.6791566753437932,0.72737364157304873,0.6862416378687336,0.72068556640771464,0.69326208202352424,0.7139297345578991,0.70021734776716849,0.70710678118654757,0.70710678118654746,0.70021734776716849,0.71392973455789899,0.69326208202352424,0.72068556640771453,0.6862416378687336,0.72737364157304873,0.6791566753437932,0.73399333126123523,0.67200786055552242,0.74054401310900453,0.66479586561393789,0.74702507124099593,0.65752136856906362,0.75343589632766073,0.65018505334718346,0.75977588564254939,0.64278760968653936,0.76604444311897801,0.63532973307248508,0.77224097940606906,0.62781212467209857,0.77836491192416002,0.62023549126826005,0.78441566491957571,0.61260054519320284,0.79039266951875931,0.60490800426154168,0.79629536378175569,0.59715859170278629,0.80212319275504373,0.589353036093345,0.8078756085237111,0.58149207128802671,0.8135520702629675,0.57357643635104616,0.81915204428899169,0.56560687548653865,0.82467500410910666,0.55758413796859296,0.8301204304712787,0.54950897807080612,0.83548781141293638,0.54138215499536968,0.84077664230910309,0.53320443280169139,0.84598642591984097,0.52497658033456018,0.85111667243699973,0.51669937115186304,0.85616689953026648,0.50837358345185557,0.8611366323925137,0.50000000000000011,0.8660254037844386,0.49157940805537059,0.87083275407849203,0.48311259929663858,0.87555823130209076,0.47460036974764042,0.88020139118011109,0.46604351970253893,0.8847617971766577,0.45744285365058079,0.88923902053610615,0.44879918020046228,0.89363264032341216,0.44011331200430487,0.89794224346368812,0.43138606568125354,0.90216742478103762,0.42261826174069944,0.90630778703664994,0.41381072450513923,0.91036294096614667,0.40496428203267359,0.91433250531617938,0.3960797660391569,0.918216106880274,0.38715801182000059,0.92201338053391846,0.37819985817164259,0.92572396926889033,0.36920614731268442,0.92934752422682243,0.3601777248047105,0.93288370473200044,0.35111543947278878,0.93633217832339311,0.34202014332566882,0.93969262078590832,0.33289269147567657,0.94296471618087596,0.32373394205832112,0.94614815687575038,0.31454475615161387,0.94924264357303378,0.3053259976951132,0.95224788533841531,0.29607853340870011,0.95516359962812303,0.28680323271109032,0.9579895123154889,0.27750096763809595,0.96072535771672041,0.26817261276063747,0.96337087861588033,0.25881904510252096,0.9659258262890682,0.24944114405798137,0.9683899605278059,0.2400397913090061,0.97076304966161997,0.23061587074244025,0.97304487057982381,0.22117026836688797,0.97523520875249303,0.21170387222941084,0.97733385825063546,0.20221757233203813,0.97934062176555148,0.19271226054808976,0.98125531062738469,0.18318883053832682,0.98307774482285992,0.17364817766693041,0.98480775301220802,0.16409119891732415,0.98644517254527386,0.15451879280784056,0.98798984947680901,0.14493185930724692,0.98944163858094447,0.13533129975013117,0.99080040336484532,0.12571801675216288,0.99206601608154232,0.1160929141252303,0.99323835774194302,0.10645689679246843,0.99431731812601842,0.096810870703179161,0.99530279579316583,0.08715574274765836,0.99619469809174555,0.077492420671931017,0.99699294116779202,0.067821812992409525,0.99769744997289767,0.058144828910475899,0.99830815827126818,0.048462378227003132,0.99882500864595036,0.038775371256816779,0.99924795250423004,0.029084718743111582,0.9995769500822006,0.019391331771824435,0.99981197044850145,0.0096961216859785693,0.99995299150722616,0,0,0.99981197044850145,0.01939133177182437,0.99924795250423004,0.03877537125681671,0.99830815827126818,0.058144828910475822,0.99699294116779202,0.077492420671930934,0.99530279579316583,0.096810870703179092,0.99323835774194302,0.11609291412523022,0.99080040336484532,0.13533129975013108,0.98798984947680901,0.15451879280784048,0.98480775301220802,0.17364817766693033,0.98125531062738469,0.19271226054808968,0.97733385825063557,0.21170387222941073,0.97304487057982381,0.23061587074244014,0.9683899605278059,0.24944114405798126,0.96337087861588033,0.26817261276063731,0.9579895123154889,0.28680323271109021,0.95224788533841531,0.30532599769511309,0.94614815687575049,0.32373394205832101,0.93969262078590843,0.34202014332566871,0.93288370473200055,0.36017772480471039,0.92572396926889045,0.37819985817164248,0.918216106880274,0.39607976603915679,0.91036294096614667,0.41381072450513912,0.90216742478103773,0.43138606568125343,0.89363264032341228,0.44879918020046211,0.88476179717665782,0.46604351970253877,0.87555823130209087,0.48311259929663841,0.86602540378443871,0.49999999999999994,0.85616689953026648,0.51669937115186282,0.84598642591984108,0.53320443280169116,0.83548781141293649,0.54950897807080601,0.82467500410910677,0.56560687548653854,0.81355207026296761,0.5814920712880266,0.80212319275504385,0.59715859170278618,0.79039266951875931,0.61260054519320284,0.77836491192416002,0.62781212467209857,0.76604444311897801,0.64278760968653925,0.75343589632766073,0.65752136856906362,0.74054401310900464,0.67200786055552242,0.72737364157304873,0.6862416378687336,0.7139297345578991,0.70021734776716849,0,0.99924795250423004,0.03877537125681671,0.99699294116779202,0.077492420671930934,0.99323835774194302,0.11609291412523022,0.98798984947680901,0.15451879280784048,0.98125531062738469,0.19271226054808968,0.97304487057982381,0.23061587074244014,0.96337087861588033,0.26817261276063731,0.95224788533841531,0.30532599769511309,0.93969262078590843,0.34202014332566871,0.92572396926889045,0.37819985817164248,0.91036294096614667,0.41381072450513912,0.89363264032341228,0.44879918020046211,0.87555823130209087,0.48311259929663841,0.85616689953026648,0.51669937115186282,0.83548781141293649,0.54950897807080601,0.81355207026296761,0.5814920712880266,0.79039266951875931,0.61260054519320284,0.76604444311897801,0.64278760968653925,0.74054401310900464,0.67200786055552242,0.7139297345578991,0.70021734776716849,0.6862416378687336,0.72737364157304873,0.65752136856906362,0.75343589632766073,0.62781212467209857,0.77836491192416002,0.59715859170278629,0.80212319275504373,0.56560687548653865,0.82467500410910666,0.53320443280169139,0.84598642591984097,0.50000000000000011,0.8660254037844386,0.46604351970253893,0.8847617971766577,0.43138606568125354,0.90216742478103762,0.3960797660391569,0.918216106880274,0.3601777248047105,0.93288370473200044,0.32373394205832112,0.94614815687575038,0.28680323271109032,0.9579895123154889,0.24944114405798137,0.9683899605278059,0.21170387222941084,0.97733385825063546,0.17364817766693041,0.98480775301220802,0.13533129975013117,0.99080040336484532,0.096810870703179161,0.99530279579316583,0.058144828910475899,0.99830815827126818,0.019391331771824435,0.99981197044850145,0,0.99830815827126818,0.058144828910475822,0.99323835774194302,0.11609291412523022,0.98480775301220802,0.1736481776669303,0.97304487057982381,0.23061587074244014,0.9579895123154889,0.28680323271109021,0.93969262078590843,0.34202014332566866,0.918216106880274,0.39607976603915673,0.89363264032341228,0.44879918020046211,0.86602540378443871,0.49999999999999994,0.83548781141293649,0.54950897807080601,0.80212319275504385,0.59715859170278618,0.76604444311897812,0.64278760968653925,0.72737364157304885,0.68624163786873349,0.68624163786873371,0.72737364157304862,0.64278760968653947,0.76604444311897801,0.59715859170278629,0.80212319275504373,0.54950897807080612,0.83548781141293638,0.50000000000000011,0.8660254037844386,0.44879918020046228,0.89363264032341216,0.3960797660391569,0.918216106880274,0.34202014332566882,0.93969262078590832,0.28680323271109032,0.9579895123154889,0.23061587074244025,0.97304487057982381,0.17364817766693064,0.98480775301220802,0.11609291412523053,0.99323835774194291,0.058144828910476121,0.99830815827126818,2.8327694488239898e-16,1,-0.058144828910475552,0.99830815827126818,-0.11609291412522996,0.99323835774194302,-0.17364817766693008,0.98480775301220813,-0.23061587074243992,0.97304487057982392,-0.28680323271108998,0.9579895123154889,-0.34202014332566849,0.93969262078590843,-0.39607976603915662,0.91821610688027411,-0.44879918020046178,0.8936326403234125,-0.49999999999999983,0.86602540378443871,-0.54950897807080568,0.8354878114129366,-0.59715859170278596,0.80212319275504396,-0.64278760968653903,0.76604444311897835,-0.68624163786873349,0.72737364157304885,0,0.99699294116779202,0.077492420671930934,0.98798984947680901,0.15451879280784048,0.97304487057982381,0.23061587074244014,0.95224788533841531,0.30532599769511309,0.92572396926889045,0.37819985817164248,0.89363264032341228,0.44879918020046211,0.85616689953026648,0.51669937115186282,0.81355207026296761,0.5814920712880266,0.76604444311897801,0.64278760968653925,0.7139297345578991,0.70021734776716849,0.65752136856906362,0.75343589632766073,0.59715859170278629,0.80212319275504373,0.53320443280169139,0.84598642591984097,0,0.98798984947680901,0.15451879280784048,0.95224788533841531,0.30532599769511309,0.89363264032341228,0.44879918020046211,0.81355207026296761,0.5814920712880266,0.7139297345578991,0.70021734776716849,0.59715859170278629,0.80212319275504373,0.46604351970253893,0.8847617971766577,0.32373394205832112,0.94614815687575038,0.17364817766693041,0.98480775301220802,0.019391331771824435,0.99981197044850145,-0.13533129975013106,0.99080040336484532,-0.28680323271108998,0.9579895123154889,-0.43138606568125326,0.90216742478103773,0,0.97304487057982381,0.23061587074244014,0.89363264032341228,0.44879918020046211,0.76604444311897812,0.64278760968653925,0.59715859170278629,0.80212319275504373,0,0.89363264032341228,0.44879918020046211,0.59715859170278629,0.80212319275504373,0.17364817766693064,0.98480775301220802,-0.28680323271108998,0.9579895123154889,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9999281110792807,0.011990524318042962,0.99971245465315683,0.023979324664381761,0.99935306172824367,0.035964677315181159,0.99884998397728031,0.047944859042308149,0.9982032937316998,0.059918147361093972,0.99741308397122974,0.071882820777989201,0.99647946831052381,0.083837159038076495,0.99540258098282641,0.095779443372404918,0.9941825768206729,0.10770795674511109,0.99281963123362849,0.11962098410029072,0.9913139401830674,0.13151681260858564,0.98966572015399901,0.14339373191345081,0.98787520812394114,0.15525003437706569,0.98594266152884857,0.16708401532585457,0.98386835822609919,0.17889397329558099,0.9816525964545445,0.19067821027598067,0.97929569479162915,0.20243503195489748,0.97679799210758655,0.21416274796188825,0.97415984751671725,0.22585967211126057,0.97138164032575602,0.23752412264450873,0.9684637699793357,0.24915442247211347,0.96540665600255637,0.26074889941467033,0.96221073794066658,0.27230588644331183,0.95887647529586684,0.28382372191938954,0.95540434746124281,0.29530074983338067,0.9517948536518398,0.30673532004298554,0.9480485128328866,0.3181257885103817,0.94416586364517918,0.32947051753859996,0.94014746432763696,0.34076787600698882,0.93599389263703991,0.35201623960573386,0.93170574576495979,0.36321399106939706,0.9272836402518978,0.37435952040944409,0.92272821189863918,0.38545122514572466,0.91804011567483923,0.39648751053687392,0.91322002562485372,0.40746678980960094,0.90826863477082542,0.41838748438683115,0.90318665501304352,0.42924802411467144,0.89797481702758775,0.44004684748816275,0.8926338701612736,0.45078240187579038,0.88716458232391271,0.46145314374271784,0.88156773987790471,0.47205753887271301,0.87584414752517514,0.48259406258873427,0.86999462819147799,0.49306119997214548,0.86402002290807622,0.50345744608052756,0.85792119069082129,0.51378130616405604,0.85169900841664437,0.52403129588041286,0.84535437069748198,0.53420594150820178,0.83888818975165003,0.54430378015883696,0.83230139527268743,0.55432335998687421,0.82559493429568631,0.56426324039875353,0.81876977106112947,0.57412199225992522,0.81182688687625448,0.58389819810032739,0.80476727997396258,0.59359045231818686,0.79759196536929577,0.60319736138211355,0.79030197471349939,0.61271754403145939,0.78289835614569425,0.62214963147491276,0.77538217414217658,0.63149226758730093,0.76775450936337097,0.64074410910457025,0.76001645849845445,0.64990382581691819,0.75216913410767716,0.65897010076004747,0.74421366446240123,0.66794163040451704,0.73615119338287993,0.67681712484316014,0.72798288007380163,0.68559530797654455,0.71970989895762205,0.69427491769644789,0.71133343950570849,0.70285470606731981,0,0.99971245465315683,0.023979324664381761,0.99884998397728031,0.047944859042308149,0.99741308397122974,0.071882820777989201,0.99540258098282641,0.095779443372404918,0.99281963123362849,0.11962098410029072,0.98966572015399901,0.14339373191345081,0.98594266152884857,0.16708401532585457,0.9816525964545445,0.19067821027598067,0.97679799210758655,0.21416274796188825,0.97138164032575602,0.23752412264450873,0.96540665600255637,0.26074889941467033,0.95887647529586684,0.28382372191938954,0.9517948536518398,0.30673532004298554,0.94416586364517918,0.32947051753859996,0.93599389263703991,0.35201623960573386,0.9272836402518978,0.37435952040944409,0.91804011567483923,0.39648751053687392,0.90826863477082542,0.41838748438683115,0.89797481702758775,0.44004684748816275,0.88716458232391271,0.46145314374271784,0.87584414752517514,0.48259406258873427,0.86402002290807622,0.50345744608052756,0.85169900841664437,0.52403129588041286,0.83888818975165003,0.54430378015883696,0.82559493429568631,0.56426324039875353,0.81182688687625448,0.58389819810032739,0.79759196536929577,0.60319736138211355,0.78289835614569425,0.62214963147491276,0.76775450936337097,0.64074410910457025,0.75216913410767716,0.65897010076004747,0.73615119338287993,0.67681712484316014,0.71970989895762205,0.69427491769644789,0.70285470606731981,0.71133343950570849,0.68559530797654455,0.72798288007380163,0.66794163040451704,0.74421366446240123,0.64990382581691819,0.76001645849845434,0.63149226758730093,0.77538217414217658,0.61271754403145928,0.7903019747134995,0.59359045231818686,0.80476727997396258,0.57412199225992511,0.81876977106112958,0.5543233599868741,0.83230139527268754,0.53420594150820166,0.84535437069748198,0.51378130616405593,0.85792119069082129,0.49306119997214531,0.86999462819147799,0.47205753887271307,0.88156773987790471,0.45078240187579044,0.8926338701612736,0.4292480241146715,0.90318665501304352,0.40746678980960094,0.91322002562485372,0.38545122514572466,0.92272821189863918,0.36321399106939706,0.93170574576495979,0.34076787600698882,0.94014746432763696,0.3181257885103817,0.9480485128328866,0.29530074983338062,0.95540434746124281,0.27230588644331177,0.96221073794066658,0.24915442247211336,0.9684637699793357,0.22585967211126048,0.97415984751671736,0.20243503195489734,0.97929569479162915,0.1788939732955811,0.98386835822609919,0.15525003437706575,0.98787520812394103,0.13151681260858569,0.9913139401830674,0.10770795674511113,0.9941825768206729,0.083837159038076495,0.99647946831052381,0.059918147361093958,0.9982032937316998,0.035964677315181139,0.99935306172824367,0.011990524318042921,0.9999281110792807,0,0.99935306172824367,0.035964677315181159,0.99741308397122974,0.071882820777989201,0.9941825768206729,0.10770795674511109,0.98966572015399901,0.14339373191345081,0.98386835822609919,0.17889397329558099,0.97679799210758655,0.21416274796188825,0.9684637699793357,0.24915442247211342,0.95887647529586684,0.28382372191938954,0.9480485128328866,0.3181257885103817,0.93599389263703991,0.35201623960573386,0.92272821189863918,0.38545122514572461,0.90826863477082542,0.41838748438683115,0.8926338701612736,0.45078240187579038,0.87584414752517525,0.48259406258873416,0.85792119069082129,0.51378130616405604,0.83888818975165003,0.54430378015883696,0.81876977106112947,0.57412199225992522,0.79759196536929577,0.60319736138211355,0.77538217414217669,0.63149226758730093,0.75216913410767716,0.65897010076004747,0.72798288007380163,0.68559530797654455,0.70285470606731981,0.71133343950570849,0.67681712484316014,0.73615119338287982,0.64990382581691819,0.76001645849845434,0.62214963147491276,0.78289835614569425,0.59359045231818686,0.80476727997396258,0.56426324039875353,0.8255949342956862,0.53420594150820189,0.84535437069748187,0.50345744608052756,0.86402002290807633,0.47205753887271307,0.88156773987790471,0.4400468474881627,0.89797481702758775,0.40746678980960094,0.91322002562485372,0.37435952040944415,0.9272836402518978,0.34076787600698882,0.94014746432763696,0.30673532004298559,0.9517948536518398,0.27230588644331177,0.96221073794066658,0.23752412264450873,0.97138164032575602,0.20243503195489757,0.97929569479162915,0.16708401532585451,0.98594266152884857,0.13151681260858569,0.9913139401830674,0.095779443372405057,0.99540258098282641,0.059918147361093958,0.9982032937316998,0.023979324664381838,0.99971245465315683,-0.011990524318042799,0.9999281110792807,-0.047944859042308129,0.99884998397728031,-0.08383715903807637,0.99647946831052381,-0.11962098410029073,0.99281963123362849,-0.15525003437706564,0.98787520812394114,-0.1906782102759805,0.98165259645454461,-0.22585967211126057,0.97415984751671725,-0.26074889941467022,0.96540665600255637,-0.29530074983338073,0.95540434746124281,-0.32947051753859991,0.94416586364517918,-0.36321399106939695,0.9317057457649599,-0.39648751053687392,0.91804011567483923,-0.42924802411467117,0.90318665501304363,-0.46145314374271773,0.88716458232391282,-0.49306119997214543,0.86999462819147799,-0.52403129588041297,0.85169900841664425,-0.55432335998687399,0.83230139527268754,-0.58389819810032739,0.81182688687625448,-0.61271754403145939,0.79030197471349939,-0.64074410910457014,0.76775450936337108,-0.66794163040451704,0.74421366446240123,-0.69427491769644789,0.71970989895762205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99983124163332271,0.018370853381597361,0.99932502349206376,0.036735506292772425,0.99848151643331617,0.055087760355865434,0.99730100515482734,0.073421421378035326,0.9957838880989075,0.091730301441903458,0.99393067731794948,0.11000822099407928,0.99174199830160237,0.12824901093086305,0.98921858976565791,0.14644651468042152,0.98636130340272232,0.16459459028073389,0.98317110359475501,0.18268711245260688,0.97964906708757393,0.20071797466705893,0.97579638262743562,0.21868109120637577,0.97161435055981382,0.2365703992181423,0.96710438239051078,0.25437986076155633,0.96226800030925042,0.27210346484533499,0.95710683667591423,0.28973522945652458,0.95162263346959186,0.3072692035795303,0.94581724170063464,0.32469946920468346,0.93969262078590843,0.34202014332566871,0.93325083788745711,0.35922537992513726,0.92649406721480176,0.37630937194783542,0.91942458929110782,0.39326635326058312,0.91204479018347051,0.41009060059844005,0.90435716069757754,0.42677643549640359,0.89636429553702013,0.44331822620598577,0.88806889242753762,0.4597103895960224,0.87947375120648907,0.47594739303707351,0.87058177287786243,0.49202375626877815,0.86139595863313612,0.50793405324953411,0.85191940883832706,0.52367291398787785,0.84215532198756582,0.53923502635494613,0.83210699362355012,0.55461513787740879,0.82177781522524518,0.5698080575102662,0.81117127306320225,0.58480865738891352,0.80029094702288417,0.59961187455988163,0.78914050939639357,0.61421271268966782,0.77772372364301401,0.62860624375108209,0.76604444311897801,0.64278760968653925,0.75410660977689625,0.65675202404773436,0.74191425283528156,0.67049477361114895,0.72947148741862089,0.68401121996884306,0.71678251316845132,0.69729680109399539,0.70385161282591147,0.71034703288066403,0.69068315078624443,0.72315751065724665,0.6772815716257411,0.73572391067313159,0.66365139860162137,0.7480419915580353,0.64979723212535956,0.76010759575353637,0.63572374820996813,0.77191665091632078,0.62143569689176481,0.78346517129266602,0.6069379006271568,0.79474925906369964,0.59223525266498012,0.80576510566097803,0.57733271539494657,0.8165089930519428,0.56223531867275423,0.8269772949948182,0.54694815812242692,0.83716647826252855,0.53147639341645603,0.84707310383522183,0.51582524653432404,0.85669382806099625,0.50000000000000011,0.8660254037844386,0.48400599509899889,0.87506468144259364,0.46784863007560795,0.88380861012799428,0.45153335831088948,0.89225423861839392,0.43506568648207333,0.90039871637285351,0.41845117270396115,0.90823929449384633,0.40169542465296953,0.9157733266550574,0.38480409767444568,0.92299826999456269,0.36778289287389332,0.9299116859730876,0.35063755519275447,0.93651124119705476,0.33337387146939557,0.94279470820614331,0.31599766848595262,0.94875996622509429,0.29851481100169464,0.95440500187950739,0.28093119977356945,0.95972790987538903,0.26325276956459931,0.96472689364222042,0.24548548714079924,0.96940026593933037,0.22763534925729345,0.97374644942536759,0.20970838063431035,0.97776397719067931,0.19171063192373849,0.98145149325241787,0.17364817766693041,0.98480775301220802,0.15552711424444327,0.98783162367621935,0.13735355781840825,0.99052208463750324,0.11913364226822376,0.99287822782046486,0.10087351712026828,0.99489925798735368,0.082579345472332394,0.99658449300666985,0.064257301913470136,0.99793336408339472,0.045913570439971865,0.99894541595096864,0.027554342368162059,0.99962030702495142,0.0091858142447264219,0.99995780951831237,0,0.99932502349206376,0.036735506292772425,0.99730100515482734,0.073421421378035326,0.99393067731794948,0.11000822099407928,0.98921858976565791,0.14644651468042152,0.98317110359475501,0.18268711245260688,0.97579638262743562,0.21868109120637577,0.96710438239051078,0.25437986076155633,0.95710683667591423,0.28973522945652458,0.94581724170063464,0.32469946920468346,0.93325083788745711,0.35922537992513726,0.91942458929110782,0.39326635326058312,0.90435716069757754,0.42677643549640359,0.88806889242753762,0.4597103895960224,0.87058177287786243,0.49202375626877815,0.85191940883832706,0.52367291398787785,0.83210699362355012,0.55461513787740879,0.81117127306320225,0.58480865738891352,0.78914050939639357,0.61421271268966782,0.76604444311897801,0.64278760968653925,0.74191425283528156,0.67049477361114895,0.71678251316845132,0.69729680109399539,0.69068315078624443,0.72315751065724665,0.66365139860162137,0.7480419915580353,0.63572374820996813,0.77191665091632078,0.6069379006271568,0.79474925906369964,0.57733271539494657,0.8165089930519428,0.54694815812242692,0.83716647826252855,0.51582524653432404,0.85669382806099625,0,0.99730100515482734,0.073421421378035326,0.98921858976565791,0.14644651468042152,0.97579638262743562,0.21868109120637577,0.95710683667591423,0.28973522945652458,0.93325083788745711,0.35922537992513726,0.90435716069757754,0.42677643549640359,0.87058177287786243,0.49202375626877815,0.83210699362355012,0.55461513787740879,0.78914050939639357,0.61421271268966782,0.74191425283528156,0.67049477361114895,0.69068315078624443,0.72315751065724665,0.63572374820996813,0.77191665091632078,0.57733271539494657,0.8165089930519428,0.51582524653432404,0.85669382806099625,0.45153335831088948,0.89225423861839392,0.38480409767444568,0.92299826999456269,0.31599766848595262,0.94875996622509429,0.24548548714079924,0.96940026593933037,0.17364817766693041,0.98480775301220802,0.10087351712026828,0.99489925798735368,0.027554342368162059,0.99962030702495142,-0.045913570439971747,0.99894541595096864,-0.11913364226822364,0.99287822782046486,-0.19171063192373816,0.98145149325241798,-0.26325276956459898,0.96472689364222042,-0.33337387146939523,0.94279470820614342,-0.40169542465296926,0.91577332665505751,-0.46784863007560762,0.88380861012799439,0,0.99393067731794948,0.11000822099407928,0.97579638262743562,0.21868109120637577,0.94581724170063475,0.3246994692046834,0.90435716069757754,0.42677643549640359,0.85191940883832706,0.52367291398787785,0.78914050939639369,0.61421271268966771,0.71678251316845132,0.69729680109399528,0.63572374820996813,0.77191665091632078,0.54694815812242692,0.83716647826252855,0,0.97579638262743562,0.21868109120637577,0.90435716069757754,0.42677643549640359,0.78914050939639369,0.61421271268966771,0.63572374820996813,0.77191665091632078,0.45153335831088948,0.89225423861839392,0.24548548714079946,0.96940026593933037,0.027554342368162281,0.99962030702495142,-0.19171063192373816,0.98145149325241798,-0.40169542465296926,0.91577332665505751,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} +{"lengths":[404,948,722,219,410,658,865,453,247,236],"offsets":[0,404,1352,2074,2293,2703,3361,4226,4679,4926],"twiddles":[0.99987906326014953,0.015551811920350872,0.99951628229198808,0.031099862269836916,0.9989117448426108,0.046640390387417532,0.99806559713359433,0.062169637431480525,0.99697804382562927,0.077683847289006208,0.99564934796901861,0.093179267484071571,0.99407983094005259,0.10865215008547453,0.99226987236327646,0.12409875261325934,0.99021991001966947,0.13951533894392301,0.98793043974075667,0.15489818021408466,0.98540201528868132,0.17024355572239858,0.98263524822226367,0.18554775382949326,0.97963080774908162,0.20080707285571847,0.976389420563607,0.2160178219764835,0.97291187067143747,0.23117632211496963,0.96919899919966612,0.24627890683200135,0.96525170419343564,0.26132192321286063,0.96107094039872454,0.27630173275083025,0.95665771903141972,0.29121471222725204,0.95201310753272994,0.3060572545878873,0.94713822931100022,0.32082576981536765,0.9420342634699892,0.33551668579752492,0.93670244452367502,0.35012644919139069,0.93114406209765954,0.36465152628265518,0.92536046061724153,0.37908840384037934,0.9193530389822363,0.39343358996675232,0.91312325022861884,0.40768361494168881,0.9066726011770726,0.42183503206206224,0.90000265206853003,0.43588441847537107,0.89311501618679157,0.44982837600763581,0.88601135946831489,0.46366353198532728,0.87869340009926877,0.47738654005112702,0.87116290809995045,0.49099408097332214,0.86342170489666348,0.5044828634486398,0.85547166288116383,0.51784962489832542,0.8473147049577775,0.531091132257275,0.8389528040783012,0.54420418275602722,0.83038798276479753,0.55718560469542855,0.82162231262040064,0.57003225821378267,0.81265791382825037,0.5827410360463009,0.80349695463867565,0.59530886427666596,0.79414165084475352,0.60773270308053162,0.784594265246366,0.62000954746077508,0.77485710710288991,0.63213642797432634,0.76493253157464769,0.64411041145039771,0.75482293915325704,0.65592860169993994,0.74453077508101528,0.66758814021615354,0.73405852875946009,0.67908620686588594,0.72340873314724974,0.69042002057174678,0.71258396414750702,0.70158683998477656,0,0.99951628229198808,0.031099862269836916,0.99806559713359433,0.062169637431480525,0.99564934796901861,0.093179267484071571,0.99226987236327646,0.12409875261325934,0.98793043974075667,0.15489818021408466,0.98263524822226367,0.18554775382949326,0.976389420563607,0.2160178219764835,0.96919899919966612,0.24627890683200135,0.96107094039872454,0.27630173275083025,0.95201310753272994,0.3060572545878873,0.9420342634699892,0.33551668579752492,0.93114406209765954,0.36465152628265518,0.9193530389822363,0.39343358996675232,0.9066726011770726,0.42183503206206224,0.89311501618679157,0.44982837600763581,0.87869340009926877,0.47738654005112702,0.86342170489666348,0.5044828634486398,0.8473147049577775,0.531091132257275,0.83038798276479753,0.55718560469542855,0.81265791382825037,0.5827410360463009,0.79414165084475352,0.60773270308053162,0.77485710710288991,0.63213642797432634,0.75482293915325704,0.65592860169993994,0.73405852875946009,0.67908620686588594,0.71258396414750702,0.70158683998477656,0.69042002057174678,0.72340873314724974,0.66758814021615365,0.74453077508101517,0.64411041145039782,0.76493253157464758,0.62000954746077519,0.78459426524636589,0.59530886427666607,0.80349695463867565,0.57003225821378278,0.82162231262040053,0.54420418275602733,0.83895280407830108,0.51784962489832553,0.85547166288116383,0.4909940809733222,0.87116290809995045,0.46366353198532739,0.88601135946831477,0.43588441847537118,0.90000265206853003,0.40768361494168903,0.91312325022861873,0.3790884038403794,0.92536046061724153,0.3501264491913908,0.93670244452367502,0.32082576981536781,0.94713822931100011,0.29121471222725209,0.95665771903141972,0.26132192321286074,0.96525170419343564,0.23117632211496977,0.97291187067143736,0.20080707285571867,0.97963080774908162,0.17024355572239863,0.98540201528868132,0.13951533894392312,0.99021991001966947,0.10865215008547471,0.99407983094005259,0.077683847289006236,0.99697804382562927,0.046640390387417609,0.9989117448426108,0.015551811920351015,0.99987906326014953,0,0.9989117448426108,0.046640390387417532,0.99564934796901861,0.093179267484071571,0.99021991001966947,0.13951533894392301,0.98263524822226367,0.18554775382949326,0.97291187067143747,0.23117632211496966,0.96107094039872454,0.27630173275083025,0.94713822931100022,0.32082576981536765,0.93114406209765954,0.36465152628265518,0.91312325022861884,0.40768361494168887,0.89311501618679157,0.44982837600763581,0.87116290809995045,0.49099408097332226,0.8473147049577775,0.531091132257275,0.82162231262040064,0.57003225821378267,0.79414165084475352,0.60773270308053162,0.76493253157464769,0.64411041145039771,0.73405852875946009,0.67908620686588594,0.70158683998477667,0.71258396414750691,0.66758814021615354,0.74453077508101517,0.63213642797432634,0.7748571071028898,0.59530886427666596,0.80349695463867565,0.55718560469542855,0.83038798276479753,0.51784962489832531,0.85547166288116394,0.47738654005112696,0.87869340009926888,0.43588441847537118,0.90000265206853003,0.39343358996675243,0.9193530389822363,0.3501264491913908,0.93670244452367502,0.30605725458788741,0.95201310753272983,0.26132192321286074,0.96525170419343564,0.21601782197648356,0.976389420563607,0.17024355572239863,0.98540201528868132,0.12409875261325937,0.99226987236327646,0.077683847289006236,0.99697804382562927,0.031099862269836912,0.99951628229198808,-0.015551811920350891,0.99987906326014953,-0.062169637431480559,0.99806559713359433,-0.10865215008547459,0.99407983094005259,-0.15489818021408475,0.98793043974075667,-0.20080707285571855,0.97963080774908162,-0.24627890683200143,0.96919899919966612,-0.29121471222725215,0.95665771903141972,-0.33551668579752486,0.9420342634699892,-0.37908840384037923,0.92536046061724153,-0.42183503206206219,0.9066726011770726,-0.46366353198532745,0.88601135946831477,-0.50448286344863968,0.86342170489666359,-0.54420418275602744,0.83895280407830108,-0.5827410360463009,0.81265791382825026,-0.62000954746077497,0.78459426524636611,-0.65592860169993994,0.75482293915325693,-0.69042002057174667,0.72340873314724985,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99997803599789992,0.0066277840778626584,0.99991214495643443,0.013255277010398508,0.99980232977006556,0.019882187665070172,0.99964859526275518,0.02650822493491857,0.99945094818775349,0.033133097751350697,0.99920939722730184,0.039756515096925633,0.99892395299225201,0.046378186018138409,0.99859462802159948,0.05299781963820098,0.99822143678193298,0.059615125169819885,0.9978043956667989,0.06622981192796995,0.99734352299598095,0.072841589342663451,0.99683883901469583,0.079450166971714378,0.99629036589270359,0.086055254513496854,0.99569812772333388,0.092656561819697614,0.99506215052242741,0.099253798908061602,0.9943824622271934,0.10584667597513026,0.99365909269498209,0.11243490340897211,0.99289207370197341,0.11901819180190477,0.9920814389417808,0.12559625196320806,0.99122722402397145,0.13216879493182762,0.99032946647250186,0.13873553198906824,0.9893882057240696,0.14529617467127695,0.9884034831263806,0.15185043478251442,0.98737534193633336,0.15839802440721498,0.9863038273181185,0.16493865592283408,0.98518898634123453,0.17147204201248303,0.98403086797842065,0.17799789567755023,0.98282952310350513,0.18451593025030852,0.98158500448917063,0.19102585940650776,0.98029736680463619,0.19752739717795267,0.97896666661325527,0.20402025796506468,0.97759296237003157,0.21050415654942789,0.97617631441905084,0.21697880810631806,0.97471678499083025,0.22344392821721437,0.97321443819958453,0.22989923288229347,0.97166934004041006,0.23634443853290488,0.97008155838638499,0.24277926204402778,0.96845116298558875,0.24920342074670784,0.96677822545803715,0.25561663244047467,0.96506281929253701,0.26201861540573806,0.96330501984345762,0.26840908841616334,0.96150490432742042,0.27478777075102528,0.95966255181990756,0.28115438220753958,0.95777804325178761,0.28750864311317142,0.95585146140576083,0.29385027433792088,0.95388289091272271,0.30017899730658509,0.95187241824804603,0.30649453401099475,0.94982013172778268,0.31279660702222717,0.9477261215047833,0.31908493950279243,0.94559047956473785,0.325359255218795,0.9434132997221345,0.3316192785520678,0.94119467761613851,0.3378647345122795,0.93893471070639101,0.34409534874901443,0.93663349826872788,0.35031084756382425,0.93429114139081881,0.35651095792225101,0.9319077429677266,0.36269540746582069,0.92948340769738702,0.36886392452400785,0.92701824207601025,0.37501623812616919,0.92451235439340185,0.38115207801344708,0.92196585472820669,0.38727117465064104,0.91937885494307248,0.39337325923804833,0.91675146867973689,0.39945806372327158,0.9140838113540346,0.40552532081299392,0.91137600015082787,0.4115747639847202,0.90862815401885866,0.41760612749848552,0.90584039366552316,0.4236191464085281,0.90301284155157013,0.42961355657492795,0.90014562188572067,0.43558909467521006,0.89723886061921221,0.44154549821591182,0.89429268544026597,0.4474825055441134,0.89130722576847754,0.45339985585893189,0.88828261274913189,0.45929728922297791,0.88521897924744242,0.46517454657377377,0.88211645984271458,0.47103136973513399,0.87897519082243369,0.47686750142850604,0.87579531017627854,0.48268268528427238,0.8725769575900596,0.48847666585301225,0.8693202744395826,0.49424918861672285,0.86602540378443871,0.49999999999999994,0.86269249036171991,0.50572884738117707,0.85932168057966107,0.51143547910342224,0.85591312251120844,0.51711964448579317,0.85246696588751514,0.5227810938342492,0.84898336209136394,0.52841957845261944,0.84546246415051685,0.53403485065352807,0.84190442673099353,0.53962666376927415,0.83830940613027649,0.54519477216266765,0.83467756027044604,0.5507389312378197,0.83100904869124237,0.55625889745088708,0.82730403254305729,0.56175442832077083,0.82356267457985577,0.56722528243976789,0.81978513915202633,0.57267121948417554,0.81597159219916104,0.5780920002248483,0.81212220124276635,0.58348738653770715,0.8082371353789044,0.58885714141419954,0.80431656527076478,0.59420102897171057,0.80036066314116772,0.59951881446392508,0.79636960276499857,0.60481026429113971,0.79234355946157431,0.61007514601052437,0.78828271008694206,0.61531322834633262,0.78418723302611015,0.62052428120006164,0.78005730818521213,0.62570807566055997,0.77589311698360386,0.6308643840140824,0.77169484234589381,0.63599297975429425,0.767462668693908,0.64109363759222016,0.76319678193858831,0.64616613346614116,0.75889736947182607,0.65121024455143728,0.75456462015823011,0.65622574927037558,0.75019872432683066,0.66121242730184371,0.74579987376271795,0.66617005959102815,0.74136826169861814,0.67109842835903677,0.73690408280640463,0.6759973171124658,0.73240753318854646,0.68086651065290926,0.72787881036949409,0.68570579508641316,0.72331811328700268,0.69051495783287042,0.71872564228339264,0.69529378763535965,0.71410159909674964,0.70004207456942535,0.70944618685206229,0.70475961005229915,0,0.99991214495643443,0.013255277010398508,0.99964859526275518,0.02650822493491857,0.99920939722730184,0.039756515096925633,0.99859462802159948,0.05299781963820098,0.9978043956667989,0.06622981192796995,0.99683883901469583,0.079450166971714378,0.99569812772333388,0.092656561819697614,0.9943824622271934,0.10584667597513026,0.99289207370197341,0.11901819180190477,0.99122722402397145,0.13216879493182762,0.9893882057240696,0.14529617467127695,0.98737534193633336,0.15839802440721498,0.98518898634123453,0.17147204201248303,0.98282952310350513,0.18451593025030852,0.98029736680463619,0.19752739717795267,0.97759296237003157,0.21050415654942789,0.97471678499083025,0.22344392821721437,0.97166934004041006,0.23634443853290488,0.96845116298558875,0.24920342074670784,0.96506281929253701,0.26201861540573806,0.96150490432742042,0.27478777075102528,0.95777804325178761,0.28750864311317142,0.95388289091272271,0.30017899730658509,0.94982013172778268,0.31279660702222717,0.94559047956473785,0.325359255218795,0.94119467761613851,0.3378647345122795,0.93663349826872788,0.35031084756382425,0.9319077429677266,0.36269540746582069,0.92701824207601025,0.37501623812616919,0.92196585472820669,0.38727117465064104,0.91675146867973689,0.39945806372327158,0.91137600015082787,0.4115747639847202,0.90584039366552316,0.4236191464085281,0.90014562188572067,0.43558909467521006,0.89429268544026597,0.4474825055441134,0.88828261274913189,0.45929728922297791,0.88211645984271458,0.47103136973513399,0.87579531017627854,0.48268268528427238,0.8693202744395826,0.49424918861672285,0.86269249036171991,0.50572884738117707,0.85591312251120844,0.51711964448579317,0.84898336209136394,0.52841957845261944,0.84190442673099353,0.53962666376927415,0.83467756027044604,0.5507389312378197,0.82730403254305729,0.56175442832077083,0.81978513915202633,0.57267121948417554,0.81212220124276635,0.58348738653770715,0.80431656527076478,0.59420102897171057,0.79636960276499857,0.60481026429113971,0.78828271008694206,0.61531322834633262,0.78005730818521213,0.62570807566055997,0.77169484234589381,0.63599297975429425,0.76319678193858831,0.64616613346614116,0.75456462015823011,0.65622574927037558,0.74579987376271795,0.66617005959102815,0.73690408280640463,0.6759973171124658,0.72787881036949409,0.68570579508641316,0.71872564228339264,0.69529378763535965,0.70944618685206229,0.70475961005229915,0.70004207456942535,0.71410159909674975,0.69051495783287042,0.72331811328700268,0.68086651065290937,0.73240753318854646,0.67109842835903677,0.74136826169861825,0.66121242730184371,0.75019872432683066,0.65121024455143739,0.75889736947182607,0.64109363759222004,0.767462668693908,0.6308643840140824,0.77589311698360386,0.62052428120006176,0.78418723302611015,0.61007514601052448,0.79234355946157431,0.59951881446392496,0.80036066314116783,0.58885714141419954,0.8082371353789044,0.57809200022484841,0.81597159219916104,0.567225282439768,0.82356267457985577,0.55625889745088697,0.83100904869124237,0.54519477216266765,0.8383094061302766,0.53403485065352807,0.84546246415051685,0.5227810938342492,0.85246696588751514,0.51143547910342224,0.85932168057966096,0.50000000000000011,0.8660254037844386,0.48847666585301219,0.8725769575900596,0.47686750142850598,0.87897519082243381,0.46517454657377377,0.88521897924744242,0.45339985585893194,0.89130722576847754,0.44154549821591188,0.89723886061921221,0.429613556574928,0.90301284155157013,0.41760612749848564,0.90862815401885855,0.40552532081299381,0.91408381135403471,0.39337325923804828,0.91937885494307259,0.38115207801344703,0.92451235439340196,0.36886392452400785,0.92948340769738702,0.35651095792225101,0.93429114139081881,0.34409534874901448,0.93893471070639101,0.33161927855206785,0.9434132997221345,0.31908493950279254,0.9477261215047833,0.30649453401099475,0.95187241824804614,0.29385027433792088,0.95585146140576083,0.28115438220753958,0.95966255181990756,0.26840908841616334,0.96330501984345762,0.25561663244047472,0.96677822545803715,0.24277926204402783,0.97008155838638499,0.22989923288229355,0.97321443819958453,0.21697880810631798,0.97617631441905084,0.20402025796506462,0.97896666661325527,0.19102585940650774,0.98158500448917063,0.17799789567755026,0.98403086797842065,0.1649386559228341,0.9863038273181185,0.15185043478251448,0.9884034831263806,0.13873553198906832,0.99032946647250186,0.12559625196320817,0.9920814389417808,0.11243490340897204,0.9936590926949822,0.099253798908061547,0.99506215052242741,0.08605525451349684,0.99629036589270359,0.072841589342663465,0.99734352299598095,0.059615125169819927,0.99822143678193298,0.046378186018138472,0.99892395299225201,0.033133097751350794,0.99945094818775349,0.019882187665070074,0.99980232977006556,0.0066277840778625943,0.99997803599789992,0,0.99980232977006556,0.019882187665070172,0.99920939722730184,0.039756515096925633,0.99822143678193298,0.059615125169819892,0.99683883901469583,0.079450166971714378,0.99506215052242741,0.099253798908061602,0.99289207370197341,0.11901819180190479,0.99032946647250186,0.13873553198906824,0.98737534193633336,0.15839802440721498,0.98403086797842065,0.17799789567755026,0.98029736680463619,0.19752739717795267,0.97617631441905084,0.21697880810631806,0.97166934004041006,0.2363444385329049,0.96677822545803715,0.25561663244047472,0.96150490432742042,0.27478777075102528,0.95585146140576083,0.29385027433792088,0.94982013172778268,0.31279660702222717,0.9434132997221345,0.3316192785520678,0.93663349826872788,0.3503108475638243,0.92948340769738702,0.36886392452400785,0.92196585472820669,0.38727117465064104,0.9140838113540346,0.40552532081299392,0.90584039366552316,0.4236191464085281,0.89723886061921221,0.44154549821591188,0.88828261274913189,0.45929728922297797,0.87897519082243369,0.47686750142850604,0.86932027443958249,0.49424918861672296,0.85932168057966107,0.51143547910342224,0.84898336209136394,0.52841957845261944,0.83830940613027649,0.54519477216266765,0.82730403254305729,0.56175442832077083,0.81597159219916093,0.57809200022484841,0.80431656527076478,0.59420102897171057,0.79234355946157431,0.61007514601052437,0.78005730818521213,0.62570807566055997,0.767462668693908,0.64109363759222016,0.75456462015823011,0.65622574927037569,0.74136826169861814,0.67109842835903677,0.72787881036949409,0.68570579508641316,0.71410159909674964,0.70004207456942535,0.70004207456942535,0.71410159909674975,0.68570579508641316,0.72787881036949409,0.67109842835903677,0.74136826169861825,0.65622574927037558,0.75456462015823011,0.64109363759222004,0.767462668693908,0.62570807566055986,0.78005730818521213,0.61007514601052437,0.79234355946157431,0.59420102897171045,0.80431656527076478,0.5780920002248483,0.81597159219916104,0.56175442832077083,0.82730403254305729,0.54519477216266765,0.8383094061302766,0.52841957845261944,0.84898336209136394,0.51143547910342202,0.85932168057966107,0.4942491886167229,0.86932027443958249,0.47686750142850598,0.87897519082243381,0.4592972892229778,0.88828261274913189,0.44154549821591188,0.89723886061921221,0.42361914640852805,0.90584039366552327,0.40552532081299381,0.91408381135403471,0.38727117465064109,0.92196585472820669,0.36886392452400785,0.92948340769738702,0.35031084756382425,0.93663349826872788,0.33161927855206769,0.94341329972213461,0.31279660702222717,0.94982013172778268,0.29385027433792088,0.95585146140576083,0.27478777075102523,0.96150490432742053,0.25561663244047472,0.96677822545803715,0.23634443853290488,0.97166934004041006,0.21697880810631798,0.97617631441905084,0.19752739717795251,0.98029736680463619,0.17799789567755026,0.98403086797842065,0.1583980244072149,0.98737534193633347,0.1387355319890681,0.99032946647250186,0.1190181918019048,0.99289207370197341,0.099253798908061547,0.99506215052242741,0.079450166971714253,0.99683883901469583,0.059615125169819927,0.99822143678193298,0.039756515096925606,0.99920939722730184,0.019882187665070074,0.99980232977006556,-1.6081226496766366e-16,1,-0.019882187665070175,0.99980232977006556,-0.039756515096925703,0.99920939722730184,-0.059615125169820031,0.99822143678193298,-0.07945016697171435,0.99683883901469583,-0.099253798908061644,0.99506215052242741,-0.1190181918019049,0.99289207370197341,-0.13873553198906818,0.99032946647250186,-0.15839802440721501,0.98737534193633336,-0.17799789567755034,0.98403086797842065,-0.19752739717795284,0.98029736680463608,-0.21697880810631806,0.97617631441905084,-0.23634443853290496,0.97166934004040995,-0.25561663244047483,0.96677822545803704,-0.27478777075102528,0.96150490432742042,-0.29385027433792094,0.95585146140576083,-0.31279660702222728,0.94982013172778257,-0.33161927855206796,0.9434132997221345,-0.3503108475638243,0.93663349826872788,-0.3688639245240079,0.92948340769738702,-0.3872711746506412,0.92196585472820658,-0.40552532081299392,0.9140838113540346,-0.42361914640852816,0.90584039366552316,-0.44154549821591194,0.89723886061921221,-0.45929728922297808,0.88828261274913178,-0.47686750142850626,0.87897519082243358,-0.49424918861672279,0.8693202744395826,-0.51143547910342213,0.85932168057966107,-0.52841957845261955,0.84898336209136382,-0.54519477216266776,0.83830940613027649,-0.56175442832077105,0.82730403254305718,-0.57809200022484863,0.81597159219916082,-0.59420102897171079,0.80431656527076467,-0.61007514601052437,0.79234355946157442,-0.62570807566055997,0.78005730818521213,-0.64109363759222016,0.76746266869390789,-0.65622574927037569,0.75456462015823,-0.67109842835903688,0.74136826169861803,-0.68570579508641338,0.72787881036949398,-0.70004207456942524,0.71410159909674986,0,0.99964859526275518,0.02650822493491857,0.99859462802159948,0.05299781963820098,0.99683883901469583,0.079450166971714378,0.9943824622271934,0.10584667597513026,0.99122722402397145,0.13216879493182762,0.98737534193633336,0.15839802440721498,0.98282952310350513,0.18451593025030852,0.97759296237003157,0.21050415654942789,0.97166934004041006,0.23634443853290488,0.96506281929253701,0.26201861540573806,0.95777804325178761,0.28750864311317142,0.94982013172778268,0.31279660702222717,0.94119467761613851,0.3378647345122795,0.9319077429677266,0.36269540746582069,0.92196585472820669,0.38727117465064104,0.91137600015082787,0.4115747639847202,0.90014562188572067,0.43558909467521006,0.88828261274913189,0.45929728922297791,0.87579531017627854,0.48268268528427238,0.86269249036171991,0.50572884738117707,0.84898336209136394,0.52841957845261944,0.83467756027044604,0.5507389312378197,0.81978513915202633,0.57267121948417554,0.80431656527076478,0.59420102897171057,0.78828271008694206,0.61531322834633262,0.77169484234589381,0.63599297975429425,0.75456462015823011,0.65622574927037558,0.73690408280640463,0.6759973171124658,0.71872564228339264,0.69529378763535965,0.70004207456942535,0.71410159909674975,0.68086651065290937,0.73240753318854646,0.66121242730184371,0.75019872432683066,0.64109363759222004,0.767462668693908,0.62052428120006176,0.78418723302611015,0.59951881446392496,0.80036066314116783,0.57809200022484841,0.81597159219916104,0.55625889745088697,0.83100904869124237,0.53403485065352807,0.84546246415051685,0.51143547910342224,0.85932168057966096,0,0.99859462802159948,0.05299781963820098,0.9943824622271934,0.10584667597513026,0.98737534193633336,0.15839802440721498,0.97759296237003157,0.21050415654942789,0.96506281929253701,0.26201861540573806,0.94982013172778268,0.31279660702222717,0.9319077429677266,0.36269540746582069,0.91137600015082787,0.4115747639847202,0.88828261274913189,0.45929728922297791,0.86269249036171991,0.50572884738117707,0.83467756027044604,0.5507389312378197,0.80431656527076478,0.59420102897171057,0.77169484234589381,0.63599297975429425,0.73690408280640463,0.6759973171124658,0.70004207456942535,0.71410159909674975,0.66121242730184371,0.75019872432683066,0.62052428120006176,0.78418723302611015,0.57809200022484841,0.81597159219916104,0.53403485065352807,0.84546246415051685,0.48847666585301219,0.8725769575900596,0.44154549821591188,0.89723886061921221,0.39337325923804828,0.91937885494307259,0.34409534874901448,0.93893471070639101,0.29385027433792088,0.95585146140576083,0.24277926204402783,0.97008155838638499,0.19102585940650774,0.98158500448917063,0.13873553198906832,0.99032946647250186,0.08605525451349684,0.99629036589270359,0.033133097751350794,0.99945094818775349,-0.019882187665070175,0.99980232977006556,-0.07284158934266334,0.99734352299598095,-0.12559625196320806,0.9920814389417808,-0.17799789567755034,0.98403086797842065,-0.22989923288229344,0.97321443819958453,-0.28115438220753969,0.95966255181990756,-0.33161927855206774,0.94341329972213461,-0.38115207801344714,0.92451235439340185,-0.42961355657492789,0.90301284155157024,-0.47686750142850587,0.87897519082243381,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99996213372321685,0.008702362880934544,0.99984853776057703,0.017404066709706054,0.99965922071499314,0.026104452484063196,0.99939419692392817,0.03480286130157427,0.99905348645831082,0.043498634409527559,0.99863711512101461,0.052191113254820364,0.99814511444490406,0.060879639533832908,0.99757752169044678,0.069563555242283345,0.99693437984289146,0.078242202725060134,0.9962157376090125,0.086914924726027909,0.99542164941342148,0.095581064437803148,0.99455217539444507,0.10423996555149591,0.99360738139957094,0.11289097230641378,0.99258733898046114,0.12153342953972431,0.99149212538753262,0.1301666827360721,0.99032182356410758,0.13879007807714702,0.98907652214013153,0.1474029624911995,0.98775631542546116,0.15600468370249923,0.98636130340272232,0.16459459028073392,0.98489159171973784,0.1731720316903434,0.98334729168152624,0.18173635833978666,0.98172852024187307,0.19028692163073704,0.98003539999447298,0.19882307400720203,0.9782680591636459,0.20734416900456451,0.97642663159462595,0.21584956129854119,0.97451125674342509,0.22433860675405454,0.9725220796662718,0.23281066247401491,0.97045925100862573,0.24126508684800863,0.96832292699376865,0.24970123960088891,0.96611326941097353,0.25811848184126557,0.96383044560325148,0.26651617610988965,0.9614746284546789,0.27489368642793022,0.95904599637730414,0.28325037834513833,0.95654473329763612,0.2915856189878957,0.95397102864271488,0.29989877710714391,0.95132507732576632,0.30818922312619029,0.94860707973144009,0.31645632918838773,0.94581724170063464,0.32469946920468351,0.9429557745149082,0.33291801890103473,0.94002289488047741,0.34111135586568636,0.93701882491180655,0.34927885959630778,0.93394379211478529,0.35741991154698516,0.93079802936949974,0.36553389517506568,0.92758177491259552,0.37362019598784951,0.92429527231923547,0.38167820158912713,0.92093877048465334,0.3897073017255579,0.91751252360530411,0.39770688833288542,0.91401679115961321,0.40567635558198861,0.91045183788832518,0.41361509992476209,0.90681793377445463,0.42152252013982461,0.90311535402283949,0.42939801737805122,0.89934437903929931,0.43724099520792542,0.89550529440939886,0.44505085966070868,0.89159839087682058,0.4528270192754229,0.8876239643213456,0.46056888514364347,0.88358231573644574,0.468275870954099,0.87947375120648907,0.47594739303707362,0.87529858188355891,0.4835828704086102,0.87105712396388979,0.49118172481450978,0.86674969866392049,0.49874338077412411,0.86237663219596861,0.50626726562393798,0.85793825574352456,0.51375280956093916,0.85343490543617073,0.52119944568577037,0.84886692232412553,0.52860661004566245,0.84423465235241468,0.53597374167714362,0.83953844633467201,0.54330028264852315,0.83477865992657119,0.5505856781021442,0.82995565359889145,0.55782937629640561,0.82506979261021773,0.56503082864754584,0.82012144697927924,0.57218948977118866,0.81511099145692645,0.57930481752364738,0.81003880549775065,0.58637627304298168,0.80490527323134642,0.59340332078980773,0.79971078343322155,0.6003854285878556,0.7944557294953527,0.60732206766427244,0.78914050939639357,0.61421271268966782,0.78376552567153523,0.62105684181789833,0.77833118538202062,0.62785393672558809,0.77283790008431652,0.63460348265138289,0.76728608579894619,0.64130496843493445,0.76167616297898233,0.64795788655561148,0.75600855647820542,0.65456173317093636,0.75028369551892848,0.66111600815474125,0.74450201365949065,0.66762021513504488,0.73866394876142294,0.67407386153164395,0.73276994295628817,0.68047645859341688,0.72682044261219669,0.68682752143533854,0.72081589830000181,0.69312656907520243,0.7147567647591776,0.6993731244700454,0.70864350086337924,0.70556671455227671,0.70247656958569227,0.71170687026550339,0.69625643796356995,0.71779312660005423,0.68998357706346369,0.72382502262819515,0.68365846194514757,0.72980210153903724,0.67728157162574099,0.7357239106731317,0.67085338904343184,0.74159000155675092,0.66437440102090173,0.74739992993585302,0.65784509822845816,0.75315325580972581,0.65126597514687457,0.75884954346430922,0.64463753002994229,0.76448836150519339,0.63796026486673607,0.77006928289028898,0.63123468534359761,0.77559188496216835,0.62446130080583839,0.78105574948007406,0.61764062421916588,0.78646046265159397,0.61077317213083471,0.79180561516399828,0.60385946463052842,0.79709080221523798,0.59690002531097031,0.80231562354460173,0.58989538122827156,0.80747968346302812,0.58284606286201546,0.81258259088307294,0.57575260407508266,0.81762395934852661,0.56861554207322074,0.82260340706368185,0.56143541736436009,0.82752055692224757,0.55421277371767985,0.83237503653590894,0.54694815812242681,0.83716647826252866,0.53964212074649076,0.84189451923398928,0.53229521489473863,0.84655880138367468,0.52490799696711132,0.85115897147358732,0.51748102641648641,0.85569468112109925,0.5100148657063085,0.86016558682533684,0.50251008026799404,0.86457134999319407,0.49496723845810808,0.86891163696497609,0.48738691151532193,0.87318611903966714,0.47976967351715194,0.87739447249982461,0.4721161013364828,0.88153637863609458,0.4644267745978794,0.88561152377134889,0.45670227563369131,0.88961959928444012,0.44894318943994993,0.89356030163357481,0.44115010363206597,0.89743333237930134,0.43332360840032791,0.90123839820711105,0.42546429646520512,0.9049752109496525,0.41757276303245966,0.90864348760855451,0.4096496057480698,0.91224295037585845,0.40169542465296937,0.91577332665505751,0.393710822137604,0.91923434908174095,0.38569640289631146,0.92262575554384252,0.37765277388152624,0.92594728920149061,0.3695805442578135,0.92919869850645953,0.36148032535573549,0.93237973722122014,0.35335273062555445,0.93549016443758737,0.34519837559077354,0.93852974459496552,0.33701787780152215,0.94149824749818745,0.32881185678778729,0.94439544833494815,0.32058093401249499,0.94722112769282985,0.31232573282444526,0.94997507157591943,0.304046878411104,0.95265707142101419,0.29574499775125701,0.95526692411341707,0.28742071956752585,0.95780443200231935,0.27907467427875393,0.9602694029157689,0.27070749395226318,0.96266165017522398,0.26231981225598588,0.96498099260969095,0.25391226441047515,0.96722725456944447,0.24548548714079901,0.96940026593933049,0.23704011862831822,0.97149986215164885,0.22857679846235601,0.97352588419861719,0.22009616759176023,0.97547817864441222,0.21159886827636254,0.97735659763679017,0.20308554403833831,0.97916099891828423,0.19455683961347187,0.98089124583697751,0.18601340090232768,0.98254720735685264,0.1774558749213356,0.98412875806771505,0.16888490975379036,0.98563577819469095,0.16030115450077065,0.98706815360729783,0.15170525923198094,0.98842577582808788,0.14309787493651993,0.98970854204086367,0.13447965347358026,0.99091635509846432,0.12585124752308033,0.99204912353012253,0.11721331053623596,0.99310676154839261,0.10856649668607271,0.99408918905564658,0.099911460817883671,0.99499633165014056,0.091248858399636118,0.99582812063164949,0.082579345472332172,0.99658449300666985,0.07390357860032376,0.99726539149319016,0.065222214821590255,0.99787076452502921,0.056535911597979056,0.99840056625574158,0.047845326765414337,0.99885475656208933,0.039151118484077228,0.99923330104708064,0.030453945188562568,0.99953617104257519,0.021754465538012604,0.99976334361145458,0.013053338366235975,0.9999148015493603,0.0043512226318123065,0.99999053338599586,0,0.99984853776057703,0.017404066709706054,0.99939419692392817,0.03480286130157427,0.99863711512101461,0.052191113254820364,0.99757752169044678,0.069563555242283345,0.9962157376090125,0.086914924726027909,0.99455217539444507,0.10423996555149591,0.99258733898046114,0.12153342953972431,0.99032182356410758,0.13879007807714702,0.98775631542546116,0.15600468370249923,0,0.99939419692392817,0.03480286130157427,0.99757752169044678,0.069563555242283345,0.99455217539444507,0.10423996555149591,0.99032182356410758,0.13879007807714702,0.98489159171973784,0.1731720316903434,0.9782680591636459,0.20734416900456451,0.97045925100862573,0.24126508684800863,0.9614746284546789,0.27489368642793022,0.95132507732576632,0.30818922312619029,0,0.99863711512101461,0.052191113254820364,0.99455217539444507,0.10423996555149591,0.98775631542546116,0.15600468370249923,0.9782680591636459,0.20734416900456451,0.96611326941097353,0.25811848184126557,0.95132507732576632,0.30818922312619029,0.93394379211478529,0.35741991154698516,0.91401679115961321,0.40567635558198861,0.89159839087682058,0.4528270192754229,0,0.99757752169044678,0.069563555242283345,0.99032182356410758,0.13879007807714702,0.9782680591636459,0.20734416900456451,0.9614746284546789,0.27489368642793022,0.94002289488047741,0.34111135586568636,0.91401679115961321,0.40567635558198861,0.88358231573644574,0.468275870954099,0.84886692232412553,0.52860661004566245,0.81003880549775065,0.58637627304298168,0,0.9962157376090125,0.086914924726027909,0.98489159171973784,0.1731720316903434,0.96611326941097353,0.25811848184126557,0.94002289488047741,0.34111135586568636,0.90681793377445463,0.42152252013982461,0.86674969866392049,0.49874338077412411,0.82012144697927924,0.57218948977118866,0.76728608579894619,0.64130496843493445,0.70864350086337924,0.70556671455227671,0,0.99455217539444507,0.10423996555149591,0.9782680591636459,0.20734416900456451,0.95132507732576632,0.30818922312619029,0.91401679115961321,0.40567635558198861,0.86674969866392049,0.49874338077412411,0.81003880549775065,0.58637627304298168,0.74450201365949065,0.66762021513504488,0.67085338904343184,0.74159000155675092,0.58989538122827156,0.80747968346302812,0,0.99258733898046114,0.12153342953972431,0.97045925100862573,0.24126508684800863,0.93394379211478529,0.35741991154698516,0.88358231573644574,0.468275870954099,0.82012144697927924,0.57218948977118866,0.74450201365949065,0.66762021513504488,0.65784509822845816,0.75315325580972581,0.56143541736436009,0.82752055692224757,0.45670227563369131,0.88961959928444012,0,0.99032182356410758,0.13879007807714702,0.9614746284546789,0.27489368642793022,0.91401679115961321,0.40567635558198861,0.84886692232412553,0.52860661004566245,0.76728608579894619,0.64130496843493445,0.67085338904343184,0.74159000155675092,0.56143541736436009,0.82752055692224757,0.44115010363206597,0.89743333237930134,0.31232573282444526,0.94997507157591943,0,0.98775631542546116,0.15600468370249923,0.95132507732576632,0.30818922312619029,0.89159839087682069,0.45282701927542285,0.81003880549775065,0.58637627304298168,0.70864350086337924,0.70556671455227671,0.58989538122827168,0.80747968346302812,0.45670227563369153,0.88961959928444001,0.31232573282444526,0.94997507157591943,0.16030115450077065,0.98706815360729783,0,0.98489159171973784,0.1731720316903434,0.94002289488047741,0.34111135586568636,0.86674969866392049,0.49874338077412411,0.76728608579894619,0.64130496843493445,0.64463753002994229,0.76448836150519339,0.50251008026799404,0.86457134999319407,0.34519837559077354,0.93852974459496552,0.1774558749213356,0.98412875806771505,0.0043512226318123065,0.99999053338599586,0,0.98172852024187307,0.19028692163073704,0.92758177491259552,0.37362019598784951,0.83953844633467201,0.54330028264852315,0.72081589830000181,0.69312656907520243,0.57575260407508255,0.81762395934852672,0.4096496057480698,0.91224295037585845,0.22857679846235601,0.97352588419861719,0.039151118484077228,0.99923330104708064,-0.15170525923198125,0.98842577582808788,0,0.9782680591636459,0.20734416900456451,0.91401679115961321,0.40567635558198861,0.81003880549775065,0.58637627304298168,0.67085338904343184,0.74159000155675092,0.50251008026799404,0.86457134999319407,0.31232573282444526,0.94997507157591943,0.10856649668607271,0.99408918905564658,-0.099911460817883768,0.99499633165014056,-0.30404687841110434,0.95265707142101408,0,0.97451125674342509,0.22433860675405454,0.89934437903929931,0.43724099520792542,0.77833118538202062,0.62785393672558809,0.61764062421916588,0.78646046265159397,0.42546429646520512,0.9049752109496525,0.21159886827636254,0.97735659763679017,-0.013053338366236076,0.9999148015493603,-0.23704011862831831,0.97149986215164885,-0.44894318943994999,0.89356030163357481,0,0.97045925100862573,0.24126508684800863,0.88358231573644574,0.468275870954099,0.74450201365949065,0.66762021513504488,0.56143541736436009,0.82752055692224757,0.34519837559077354,0.93852974459496552,0.10856649668607271,0.99408918905564658,-0.1344796534735806,0.99091635509846421,-0.36958054425781361,0.92919869850645953,-0.58284606286201568,0.81258259088307283,0,0.96611326941097353,0.25811848184126557,0.86674969866392049,0.49874338077412411,0.70864350086337924,0.70556671455227671,0.50251008026799404,0.86457134999319407,0.26231981225598566,0.96498099260969095,0.0043512226318123065,0.99999053338599586,-0.25391226441047549,0.96722725456944436,-0.49496723845810836,0.86891163696497598,-0.70247656958569238,0.71170687026550328,0,0.9614746284546789,0.27489368642793022,0.84886692232412553,0.52860661004566245,0.67085338904343184,0.74159000155675092,0.44115010363206597,0.89743333237930134,0.1774558749213356,0.98412875806771505,-0.099911460817883768,0.99499633165014056,-0.36958054425781361,0.92919869850645953,-0.61077317213083493,0.79180561516399817,-0.80490527323134642,0.59340332078980773,0,0.95654473329763612,0.2915856189878957,0.82995565359889145,0.55782937629640561,0.63123468534359761,0.77559188496216835,0.37765277388152624,0.92594728920149061,0.09124885839963634,0.99582812063164949,-0.20308554403833864,0.97916099891828412,-0.47976967351715183,0.87739447249982461,-0.7147567647591776,0.6993731244700454,-0.8876239643213456,0.4605688851436433,0,0.95132507732576632,0.30818922312619029,0.81003880549775065,0.58637627304298168,0.58989538122827168,0.80747968346302812,0.31232573282444526,0.94997507157591943,0.0043512226318123065,0.99999053338599586,-0.30404687841110412,0.95265707142101419,-0.58284606286201535,0.81258259088307305,-0.80490527323134642,0.59340332078980773,-0.94860707973144009,0.31645632918838767,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99958846031494009,0.028686408022048568,0.99835417998958509,0.057349204853451345,0.99629817493460782,0.085964798737446474,0.99342213740535379,0.11450963676904431,0.98972843460898097,0.1429602242809376,0.98522010675606064,0.17129314418147759,0.9799008645582421,0.19948507622879882,0.97377508617404307,0.22751281622522937,0.9668478136052775,0.25535329511618704,0.95912474854708807,0.28298359797784245,0.95061224769499808,0.31038098287792004,0.94131731751284708,0.3375228995941133,0.9312476084659147,0.36438700817470759,0.92041140872398064,0.39095119732613359,0.90881763733950294,0.41719360261231686,0.89647583690652999,0.44309262445084391,0.88339616570638846,0.46862694589113318,0.86958938934661101,0.49377555015997726,0.8550668718999872,0.5185177379600151,0.83984056655102968,0.54283314450689679,0.82392300575755417,0.56670175629111763,0.80732729093547262,0.59010392755072461,0.79006708167528727,0.61302039644133788,0.77215658449916424,0.63543230089017744,0.75361054116783777,0.65732119412104673,0.73444421654697112,0.67866905983749237,0.71467338604296093,0.69945832705164701,0.6943143226185251,0.71967188454654718,0.67338378339876315,0.7392930949600216,0.65189899587871247,0.75830580847856255,0.62987764374375232,0.77669437612990266,0.60733785231452686,0.79444366266336219,0.58429817362836833,0.81153905900736112,0.56077757116949789,0.8279664942938445,0.5367954042605716,0.84371244743972429,0.51237141212842352,0.85876395827580299,0,0.99835417998958509,0.057349204853451345,0.99342213740535379,0.11450963676904431,0.98522010675606064,0.17129314418147759,0.97377508617404307,0.22751281622522937,0.95912474854708807,0.28298359797784245,0.94131731751284708,0.3375228995941133,0.92041140872398064,0.39095119732613359,0.89647583690652999,0.44309262445084391,0.86958938934661101,0.49377555015997726,0.83984056655102968,0.54283314450689679,0.80732729093547262,0.59010392755072461,0.77215658449916424,0.63543230089017744,0.73444421654697112,0.67866905983749237,0.6943143226185251,0.71967188454654718,0.65189899587871247,0.75830580847856255,0.60733785231452686,0.79444366266336219,0.56077757116949789,0.8279664942938445,0.51237141212842352,0.85876395827580299,0.46227871084165822,0.88673468044425474,0.41066435444950905,0.91178659125069828,0.35769823883312546,0.93383722882292519,0.30355470937841844,0.95281401039981772,0.24841198709381002,0.96865447124767079,0.19245158197082998,0.98130647027160933,0.13585769551856253,0.99072836164530265,0.078816614438588464,0.99688913189403305,0.021516097436222254,0.99976850197989087,-0.035855242813557314,0.99935699405306655,-0.09310856051113521,0.99565596264952094,-0.15005539834465281,0.98867759023234036,-0.20650830782363735,0.97844484709145352,-0.26228146629195598,0.96499141573370562,-0.31719128858910611,0.94836158001217152,-0.37105703134647755,0.92861007935965201,-0.42370138792945899,0.90580192860616615,-0.47495107206705034,0.88001220397353552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99988257690368154,0.015324242377796345,0.99953033519109313,0.030644885915615216,0.99894335758485986,0.045958332618653008,0.9981217819344379,0.061260986182255374,0.99706580118374044,0.076549252836495635,0.99577566332582645,0.091819542190158046,0.99425167134465986,0.10706826807392743,0.99249418314395499,0.12229184938258741,0.99050361146312449,0.13748671091602935,0.98828042378034853,0.15264928421887447,0.98582514220279016,0.16777600841851203,0.98313834334397954,0.18286333106135669,0.98022065818839921,0.19790770894712867,0.97707277194329922,0.21290560896096089,0.97369542387777908,0.22785350890313755,0.97008940714917313,0.24274789831626936,0.96625556861678075,0.25758527930971092,0.96219480864298434,0.27236216738102731,0.95790808088180313,0.28707509223431588,0.95339639205493054,0.30172059859519229,0.94866080171531009,0.31629524702224848,0.94370242199830279,0.3307956147147923,0.93852241736050679,0.34521829631667933,0.93312200430628933,0.35955990471604782,0.92750245110209473,0.37381707184076873,0.92166507747859727,0.38798644944942523,0.9156112543207674,0.40206470991763371,0.90934240334592487,0.41604854701952437,0.90285999676985307,0.42993467670419533,0.8961655569610556,0.44371983786695968,0.88926065608323346,0.45740079311520343,0.88214691572606829,0.47097432952867502,0.87482600652439835,0.48443725941402699,0.86729964776587642,0.49778642105343401,0.8595696069872012,0.51101867944711032,0.85163769955901858,0.524130927049552,0.84350578825958833,0.53712008449933291,0.83517578283731808,0.54998310134228023,0.82664963956226589,0.56271695674786271,0.81792936076671774,0.57531866021862055,0.80901699437494745,0.58778525229247314,0.79991463342226965,0.6001138052377365,0.79062441556349794,0.61230142374069108,0.78114852257092537,0.62434524558553384,0.77148917982194298,0.6362424423265598,0.76164865577641871,0.64799021995241135,0.75162926144395836,0.65958581954224105,0.74143334984117326,0.67102651791363388,0.73106331543908376,0.68230962826213626,0.72052159360078705,0.69343250079224172,0.70981066000952031,0.70439252333968538,0.69893303008725727,0.71518712198490064,0.68789125840396981,0.72581376165749489,0.67668793807769811,0.73626994673160018,0.66532570016556536,0.74655322161196269,0.65380721304588529,0.7566611713106286,0.64213518179150264,0.76659142201409602,0.63031234753451815,0.77634164164079511,0.61834148682254297,0.78590954038876948,0.60622541096663807,0.7952928712734264,0.59396696538108773,0.80448943065523348,0.58156902891516571,0.81349705875723433,0.56903451317704723,0.82231364017226471,0.55636636185003008,0.83093710435974721,0.54356755000122126,0.83936542613194987,0.53064108338285343,0.84759662612959441,0.51758999772639658,0.85562877128670045,0.50441735802962662,0.86345997528455909,0.49112625783682323,0.8710883989947279,0.47771981851226297,0.87851225091094232,0.4642011885071779,0.88572978756984544,0.45057354262035432,0.8927393139604326,0.4368400812525432,0.89953918392211885,0.42300402965485884,0.90612780053133302,0.40906863717134001,0.91250361647654998,0.39503717647585423,0.91866513442166986,0.38091294280352284,0.9246109073576626,0.36669925317684809,0.93033953894239163,0.35239944562672187,0.93584968382854039,0.33801687840850292,0.94114004797956152,0.32355492921334245,0.94620938897357654,0.30901699437494745,0.95105651629515353,0.2944064880719634,0.95568029161489609,0.27972684152616806,0.96007962905677469,0.26498150219666167,0.96425349545314099,0.25017393297024537,0.96820091058736313,0.23530761134817402,0.97192094742402624,0.22038602862947904,0.97541273232664261,0.20541268909104979,0.97867544526282246,0.19039110916466842,0.98170831999685493,0.17532481661118779,0.98451064426965607,0.16021734969205123,0.98708175996603997,0.14507225633834489,0.98942106326927448,0.12989309331758045,0.99152800480288517,0.11468342539840053,0.99340208975967503,0.099446824513407237,0.99504287801792723,0.08418686892030712,0.99644998424476627,0.06890714236157082,0.99762307798665228,0.053611233222805629,0.9985618837469864,0.038302733690035493,0.99926618105081,0.022985238906090666,0.99973580449658295,0.0076623461263016649,0.99997064379502698,0,0.99953033519109313,0.030644885915615216,0.9981217819344379,0.061260986182255374,0.99577566332582645,0.091819542190158046,0.99249418314395499,0.12229184938258741,0.98828042378034853,0.15264928421887447,0.98313834334397954,0.18286333106135669,0.97707277194329922,0.21290560896096089,0.97008940714917313,0.24274789831626936,0.96219480864298434,0.27236216738102731,0.95339639205493054,0.30172059859519229,0.94370242199830279,0.3307956147147923,0.93312200430628933,0.35955990471604782,0.92166507747859727,0.38798644944942523,0.90934240334592487,0.41604854701952437,0.8961655569610556,0.44371983786695968,0.88214691572606829,0.47097432952867502,0.86729964776587642,0.49778642105343401,0.85163769955901858,0.524130927049552,0.83517578283731808,0.54998310134228023,0.81792936076671774,0.57531866021862055,0,0.9981217819344379,0.061260986182255374,0.99249418314395499,0.12229184938258741,0.98313834334397954,0.18286333106135669,0.97008940714917313,0.24274789831626936,0.95339639205493054,0.30172059859519229,0.93312200430628933,0.35955990471604782,0.90934240334592487,0.41604854701952437,0.88214691572606829,0.47097432952867502,0.85163769955901858,0.524130927049552,0.81792936076671774,0.57531866021862055,0.78114852257092537,0.62434524558553384,0.74143334984117326,0.67102651791363388,0.69893303008725727,0.71518712198490064,0.65380721304588529,0.7566611713106286,0.60622541096663807,0.7952928712734264,0.55636636185003008,0.83093710435974721,0.50441735802962662,0.86345997528455909,0.45057354262035432,0.8927393139604326,0.39503717647585423,0.91866513442166986,0.33801687840850292,0.94114004797956152,0,0.99577566332582645,0.091819542190158046,0.98313834334397954,0.18286333106135669,0.96219480864298434,0.27236216738102731,0.93312200430628933,0.35955990471604782,0.8961655569610556,0.44371983786695968,0.85163769955901858,0.524130927049552,0.79991463342226965,0.6001138052377365,0.74143334984117326,0.67102651791363388,0.67668793807769811,0.73626994673160018,0.60622541096663807,0.7952928712734264,0.53064108338285343,0.84759662612959441,0.45057354262035432,0.8927393139604326,0.36669925317684809,0.93033953894239163,0.27972684152616806,0.96007962905677469,0.19039110916466842,0.98170831999685493,0.099446824513407237,0.99504287801792723,0.0076623461263018869,0.99997064379502698,-0.084186868920306773,0.99644998424476638,-0.17532481661118743,0.98451064426965618,-0.26498150219666156,0.96425349545314099,0,0.99249418314395499,0.12229184938258741,0.97008940714917313,0.24274789831626936,0.93312200430628933,0.35955990471604782,0.88214691572606829,0.47097432952867502,0.81792936076671774,0.57531866021862055,0.74143334984117326,0.67102651791363388,0.65380721304588529,0.7566611713106286,0.55636636185003008,0.83093710435974721,0.45057354262035432,0.8927393139604326,0.33801687840850292,0.94114004797956152,0.22038602862947904,0.97541273232664261,0.099446824513407237,0.99504287801792723,-0.022985238906090319,0.99973580449658295,-0.14507225633834475,0.98942106326927448,-0.26498150219666156,0.96425349545314099,-0.38091294280352272,0.9246109073576626,-0.49112625783682295,0.87108839899472801,-0.59396696538108751,0.80448943065523359,-0.68789125840396959,0.72581376165749512,-0.77148917982194276,0.63624244232656013,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99995440946865177,0.0095487687269054707,0.99981764203160017,0.019096666786930977,0.99958971015944542,0.028642823592584892,0.99927063463525789,0.038186368715145011,0.99886044455268286,0.047726431964025158,0.99835917731328816,0.057262143466120109,0.99776687862315316,0.066792633745121552,0.99708360248870198,0.076317033800797809,0.99630941121177863,0.085834475188230286,0.99544437538396657,0.095344090096999082,0.99448857388015166,0.10484501143031102,0.99344209385133098,0.1143363728840623,0.99230503071666543,0.12381730902582917,0.99107748815478014,0.13328695537377883,0.98975957809431026,0.14274444847549397,0.98835142070369575,0.15218892598670306,0.98685314438022398,0.16161952674991004,0.98526488573832216,0.17103539087291547,0.98358678959710122,0.1804356598072224,0.98181900896715069,0.18981947642631977,0.97996170503658686,0.19918598510383609,0.9780150471563559,0.20853433179155642,0.97597921282479216,0.21786366409729527,0.97385438767143329,0.2271731313626188,0.97164076544009503,0.23646188474040861,0.96933854797120467,0.24572907727226054,0.96694794518339766,0.25497386396571137,0.96446917505437657,0.26419540187128598,0.96190246360103615,0.27339285015935849,0.95924804485885407,0.28256537019681982,0.9565061608605524,0.29171212562354537,0.95367706161402765,0.30083228242865512,0.95076100507955574,0.30992500902655962,0.94775825714627027,0.31898947633278485,0.94466909160791879,0.32802485783956914,0.94149379013789802,0.33703032969122465,0.93823264226357039,0.34600507075925802,0.93488594533986458,0.35494826271724117,0.93145400452216276,0.36385909011542755,0.92793713273847567,0.37273674045510541,0.92433565066090995,0.38158040426268253,0.92064988667642877,0.39038927516349481,0.91688017685690903,0.3991625499553324,0.91302686492849816,0.40789942868167645,0.90909030224027265,0.41659911470464001,0.90507084773220181,0.42526081477760636,0.90096886790241915,0.43388373911755812,0.89678473677380466,0.4424671014770904,0.89251883585988123,0.45101011921610185,0.88817155413002746,0.45951201337315628,0.88374328797401136,0.46797200873650951,0.87923444116584681,0.47638933391479393,0.87464542482697749,0.48476322140735484,0.86997665738878982,0.49309290767423158,0.86522856455446029,0.50137763320577844,0.86040157926013938,0.50961664259191741,0.85549614163547583,0.51780918459101699,0.85051269896348514,0.52595451219839162,0.84545170563976613,0.53405188271441395,0.84031362313106828,0.54210055781223554,0.83509891993321517,0.55009980360510724,0.82980807152838576,0.55804889071329711,0.8244415603417603,0.5659470943305952,0.81899987569753174,0.57379369429040217,0.81348351377428885,0.58158797513139526,0.80789297755977385,0.5893292261627644,0.80222877680502003,0.59701674152901385,0.79649142797787142,0.60464982027432312,0.79068145421589109,0.61222776640646071,0.78479938527866089,0.61974988896024497,0.7788457574994776,0.62721550206054766,0.77282111373644879,0.63462392498483289,0.76672600332299523,0.64197448222522546,0.76056098201776168,0.64926650355010462,0.75432661195394224,0.65649932406521683,0.74802346158802469,0.66367228427430125,0.74165210564795758,0.67078473013922346,0.73521312508074632,0.67783601313961095,0.72870710699948194,0.68482549033198636,0.72213464462980681,0.69175252440839174,0.7154963372558244,0.69861648375449859,0.7087927901654556,0.70541674250719943,0.7020246145952479,0.71215268061167447,0.69519242767464229,0.71882368387792939,0.68829685236970273,0.7254291440367967,0.68133851742631357,0.73196845879539985,0.67431805731284933,0.73844103189206989,0.66723611216232392,0.74484627315071317,0.66009332771402207,0.75118359853462502,0.65289035525462047,0.75745243019974229,0.64562785155880242,0.76365219654733207,0.63830647882937275,0.76978233227611004,0.63092690463687751,0.77584227843378617,0.62348980185873359,0.7818314824680298,0.61599584861787571,0.78774939827685242,0.60844572822092435,0.79359548625840171,0.60084012909588058,0.79936921336016287,0.5931797447293552,0.80507005312756297,0.58546527360333533,0.81069748575197376,0.57769741913149653,0.81625099811810831,0.56987688959506422,0.82173008385080737,0.56200439807823255,0.82713424336121133,0.55408066240314402,0.83246298389231288,0.54610640506443786,0.83771581956388774,0.53808235316337272,0.84289227141679701,0.5300092383415278,0.84799186745666,0.52188779671409213,0.85301414269689013,0.51371876880274348,0.85795863920109416,0.50550289946812854,0.86282490612482621,0.49724093784194379,0.86761249975669674,0.48893363725863032,0.87232098355883092,0.48058175518668378,0.8769499282066715,0.47218605315958662,0.88149891162812677,0.4637472967063721,0.88596751904205384,0.45526625528182108,0.89035534299608021,0.44674370219630377,0.89466198340375469,0.43818041454526713,0.89888704758102833,0.42957717313837962,0.90303015028205935,0.420934762428335,0.9070909137343407,0.41225397043932627,0.91106896767314549,0.40353558869519224,0.91496394937528802,0.39478041214724491,0.91877550369219763,0.38598923910178651,0.92250328308230101,0.37716287114731717,0.92614694764271199,0.36830211308144717,0.92970616514022375,0.3594077728375128,0.93318061104160255,0.35048066141091,0.93656996854317887,0.34152159278514493,0.93987392859973384,0.33253138385761594,0.94309218995267841,0.32351085436512711,0.94622445915752229,0.31446082680914322,0.94927045061063076,0.30538212638079465,0.95222988657526619,0.29627558088563394,0.95510249720691243,0.28714202066815731,0.95788802057787925,0.27798227853609109,0.96058620270118555,0.26879718968445737,0.9631967975537179,0.25958759161941825,0.96571956709866358,0.25035432408191238,0.96815428130721437,0.24109822897108632,0.97050071817954142,0.2318201502675282,0.97275866376503717,0.22252093395631445,0.97492791218182362,0.21320142794987015,0.9770082656355249,0.20386248201065718,0.97899953443730225,0.19450494767369031,0.98090153702115024,0.18512967816889506,0.982714099960452,0.1757375283433075,0.98443705798379266,0.16632935458312995,0.98607025399002857,0.15690601473564408,0.98761353906261218,0.14746836803099095,0.98906677248317076,0.13801727500382685,0.99042982174433647,0.12855359741485722,0.9917025625618292,0.11907819817226206,0.9928848788857888,0.10959194125301334,0.99397666291135633,0.10009569162409844,0.99497781508850403,0.090590315163649696,0.99588824413111265,0.081076678581994313,0.99670786702529446,0.071555649342626149,0.99743660903696285,0.062028095583108754,0.99807440371864697,0.052494886035919286,0.99862119291554985,0.04295688994923471,0.99907692677085147,0.033414977007674644,0.99944156373025461,0.023870017253000822,0.9997150705457738,0.014322881004787508,0.99989742227876688,0.004774438781063082,0.99998860230220921,0,0.99981764203160017,0.019096666786930977,0.99927063463525789,0.038186368715145011,0.99835917731328816,0.057262143466120109,0.99708360248870198,0.076317033800797809,0.99544437538396657,0.095344090096999082,0.99344209385133098,0.1143363728840623,0.99107748815478014,0.13328695537377883,0.98835142070369575,0.15218892598670306,0.98526488573832216,0.17103539087291547,0.98181900896715069,0.18981947642631977,0.9780150471563559,0.20853433179155642,0.97385438767143329,0.2271731313626188,0.96933854797120467,0.24572907727226054,0.96446917505437657,0.26419540187128598,0.95924804485885407,0.28256537019681982,0.95367706161402765,0.30083228242865512,0.94775825714627027,0.31898947633278485,0.94149379013789802,0.33703032969122465,0.93488594533986458,0.35494826271724117,0.92793713273847567,0.37273674045510541,0.92064988667642877,0.39038927516349481,0.91302686492849816,0.40789942868167645,0.90507084773220181,0.42526081477760636,0,0.99927063463525789,0.038186368715145011,0.99708360248870198,0.076317033800797809,0.99344209385133098,0.1143363728840623,0.98835142070369575,0.15218892598670306,0.98181900896715069,0.18981947642631977,0.97385438767143329,0.2271731313626188,0.96446917505437657,0.26419540187128598,0.95367706161402765,0.30083228242865512,0.94149379013789802,0.33703032969122465,0.92793713273847567,0.37273674045510541,0.91302686492849816,0.40789942868167645,0.89678473677380466,0.4424671014770904,0.87923444116584681,0.47638933391479393,0.86040157926013938,0.50961664259191741,0.84031362313106828,0.54210055781223554,0.81899987569753174,0.57379369429040217,0.79649142797787142,0.60464982027432312,0.77282111373644879,0.63462392498483289,0.74802346158802469,0.66367228427430125,0.72213464462980681,0.69175252440839174,0.69519242767464229,0.71882368387792939,0.66723611216232392,0.74484627315071317,0.63830647882937275,0.76978233227611004,0,0.99835917731328816,0.057262143466120109,0.99344209385133098,0.1143363728840623,0.98526488573832216,0.17103539087291547,0.97385438767143329,0.2271731313626188,0.95924804485885407,0.28256537019681977,0.94149379013789802,0.33703032969122465,0.92064988667642877,0.39038927516349481,0.89678473677380466,0.4424671014770904,0.86997665738878982,0.49309290767423158,0.84031362313106839,0.54210055781223543,0.80789297755977385,0.5893292261627644,0.77282111373644879,0.63462392498483289,0.73521312508074643,0.67783601313961084,0.69519242767464229,0.71882368387792939,0.65289035525462047,0.75745243019974229,0.60844572822092435,0.79359548625840171,0.56200439807823255,0.82713424336121133,0.51371876880274348,0.85795863920109416,0.4637472967063721,0.88596751904205384,0.41225397043932643,0.91106896767314549,0.3594077728375128,0.93318061104160255,0.30538212638079465,0.95222988657526619,0.2503543240819126,0.96815428130721437,0,0.99708360248870198,0.076317033800797809,0.98835142070369575,0.15218892598670306,0.97385438767143329,0.2271731313626188,0.95367706161402765,0.30083228242865512,0.92793713273847567,0.37273674045510541,0.89678473677380466,0.4424671014770904,0.86040157926013938,0.50961664259191741,0.81899987569753174,0.57379369429040217,0.77282111373644879,0.63462392498483289,0.72213464462980681,0.69175252440839174,0.66723611216232392,0.74484627315071317,0.60844572822092435,0.79359548625840171,0.54610640506443786,0.83771581956388774,0.48058175518668378,0.8769499282066715,0.41225397043932627,0.91106896767314549,0.34152159278514493,0.93987392859973384,0.26879718968445737,0.9631967975537179,0.19450494767369031,0.98090153702115024,0.11907819817226206,0.9928848788857888,0.04295688994923471,0.99907692677085147,-0.033414977007674519,0.99944156373025461,-0.10959194125301346,0.99397666291135633,-0.18512967816889495,0.98271409996045211,0,0.99544437538396657,0.095344090096999082,0.98181900896715069,0.18981947642631977,0.95924804485885407,0.28256537019681982,0.92793713273847567,0.37273674045510541,0.88817155413002746,0.45951201337315628,0.84031362313106828,0.54210055781223554,0.78479938527866089,0.61974988896024497,0.72213464462980681,0.69175252440839174,0.65289035525462047,0.75745243019974229,0.57769741913149653,0.81625099811810831,0.49724093784194379,0.86761249975669674,0.41225397043932627,0.91106896767314549,0.32351085436512711,0.94622445915752229,0.2318201502675282,0.97275866376503717,0.13801727500382685,0.99042982174433647,0.04295688994923471,0.99907692677085147,-0.052494886035919383,0.99862119291554985,-0.14746836803099106,0.98906677248317076,-0.2410982289710864,0.97050071817954142,-0.33253138385761605,0.94309218995267841,-0.42093476242833489,0.90709091373434081,-0.50550289946812843,0.86282490612482621,-0.58546527360333545,0.81069748575197365,0,0.99344209385133098,0.1143363728840623,0.97385438767143329,0.2271731313626188,0.94149379013789802,0.33703032969122465,0.89678473677380466,0.4424671014770904,0.84031362313106839,0.54210055781223543,0.77282111373644879,0.63462392498483289,0.69519242767464229,0.71882368387792939,0.60844572822092435,0.79359548625840171,0.51371876880274348,0.85795863920109416,0.41225397043932643,0.91106896767314549,0.30538212638079465,0.95222988657526619,0.19450494767369031,0.98090153702115024,0.081076678581994535,0.99670786702529435,-0.033414977007674519,0.99944156373025461,-0.14746836803099084,0.98906677248317076,-0.25958759161941813,0.96571956709866358,-0.36830211308144706,0.92970616514022375,-0.47218605315958673,0.88149891162812677,-0.56987688959506422,0.82173008385080748,-0.66009332771402196,0.75118359853462513,-0.74165210564795758,0.67078473013922346,-0.81348351377428874,0.58158797513139537,-0.87464542482697738,0.484763221407355,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99997361873499135,0.0072637341668094577,0.99989447633190787,0.014527085080626901,0.99976257696650284,0.021789669508681716,0.99957792759812047,0.029051104258645013,0.99934053796932865,0.036311006198847834,0.99905042060540483,0.043568992278496123,0.99870759081367511,0.050824679547881509,0.99831206668270667,0.058077685178586629,0.99786386908135327,0.065327626483684176,0.99736302165765445,0.072574120937928449,0.99680955083758738,0.079816786197938236,0.99620348582367269,0.08705524012237037,0.995544858593434,0.094289100792082414,0.99483370389771031,0.10151798653028361,0.99407005925882252,0.10874151592267323,0.99325396496859397,0.11595930783756483,0.99238546408622397,0.12317098144599589,0.99146460243601653,0.13037615624182117,0.99049142860496198,0.1375744520617892,0.98946599394017387,0.14476548910560072,0.98838835254617952,0.15194888795594783,0.98725856128206524,0.1591242695985331,0.98607667975847657,0.16629125544206722,0.98484277033447287,0.17344946733824443,0.98355689811423719,0.18059852760169479,0.98221913094364099,0.18773805902991147,0.98082953940666506,0.19486768492315323,0.97938819682167433,0.20198702910431982,0.97789517923755032,0.20909571593880022,0.97635056542967802,0.21619337035429195,0.97475443689579,0.22327961786059078,0.97310687785166572,0.23035408456935005,0.97140797522668898,0.23741639721380764,0.96965781865926026,0.24446618316848065,0.96785650049206817,0.25150307046882603,0.96600411576721645,0.25852668783086635,0.96410076222120988,0.26553666467077985,0.96214654027979696,0.27253263112445286,0.96014155305267157,0.27951421806699556,0.95808590632803237,0.28648105713221728,0.95597970856700154,0.29343278073206264,0.95382307089790164,0.30036902207600658,0.95161610711039235,0.30728941519040703,0.94935893364946666,0.31419359493781451,0.94705166960930731,0.32108119703623789,0.94469443672700226,0.32795185807836469,0.9422873593761224,0.33480521555073539,0.93983056456015857,0.34164090785287066,0.93732418190582101,0.34845857431635024,0.93476834365619976,0.35525785522384273,0.93216318466378723,0.36203839182808512,0.92950884238336295,0.36879982637081127,0.92680545686474114,0.37554180210162819,0.92405317074538129,0.38226396329683904,0.92125212924286259,0.38896595527821187,0.91840248014722126,0.39564742443169365,0.9155043738131533,0.40230801822606771,0.91255796315208115,0.40894738523155388,0.90956340362408572,0.41556517513835134,0.90652085322970388,0.42216103877512146,0.90343047250159247,0.42873462812741109,0.90029242449605706,0.43528559635601466,0.89710687478444995,0.44181359781527452,0.89387399144443347,0.44831828807131763,0.89059394505111167,0.45479932392022909,0.88726690866803104,0.46125636340616039,0.8838930578380485,0.46768906583937186,0.88047257057406969,0.47409709181420823,0.8770056273496567,0.48048010322700668,0.87349241108950548,0.48683776329393597,0.86993310715979422,0.49316973656876589,0.86632790335840359,0.49947568896056654,0.86267698990500707,0.5057552877513356,0.85898055943103568,0.51200820161355332,0.85523880696951304,0.51823410062766428,0.85145192994476582,0.52443265629948488,0.8476201281620066,0.53060354157753553,0.84374360379679214,0.53674643087029639,0.8398225613843554,0.542861000063387,0.83585720780881456,0.54894692653666644,0.8318477522922566,0.55500388918125665,0.8277944063836985,0.56103156841648416,0.82369738394792558,0.56702964620674257,0.81955690115420698,0.57299780607827244,0.81537317646489027,0.57893573313585922,0.81114643062387526,0.58484311407944845,0,0.99989447633190787,0.014527085080626901,0.99957792759812047,0.029051104258645013,0.99905042060540483,0.043568992278496123,0.99831206668270667,0.058077685178586629,0.99736302165765445,0.072574120937928449,0.99620348582367269,0.08705524012237037,0.99483370389771031,0.10151798653028361,0.99325396496859397,0.11595930783756483,0.99146460243601653,0.13037615624182117,0.98946599394017387,0.14476548910560072,0.98725856128206524,0.1591242695985331,0.98484277033447287,0.17344946733824443,0.98221913094364099,0.18773805902991147,0.97938819682167433,0.20198702910431982,0.97635056542967802,0.21619337035429195,0.97310687785166572,0.23035408456935005,0.96965781865926026,0.24446618316848065,0.96600411576721645,0.25852668783086635,0.96214654027979696,0.27253263112445286,0.95808590632803237,0.28648105713221728,0.95382307089790164,0.30036902207600658,0.94935893364946666,0.31419359493781451,0.94469443672700226,0.32795185807836469,0.93983056456015857,0.34164090785287066,0.93476834365619976,0.35525785522384273,0.92950884238336295,0.36879982637081127,0.92405317074538129,0.38226396329683904,0.91840248014722126,0.39564742443169365,0.91255796315208115,0.40894738523155388,0.90652085322970388,0.42216103877512146,0.90029242449605706,0.43528559635601466,0.89387399144443347,0.44831828807131763,0.88726690866803104,0.46125636340616039,0.88047257057406969,0.47409709181420823,0.87349241108950548,0.48683776329393597,0.86632790335840359,0.49947568896056654,0.85898055943103568,0.51200820161355332,0.85145192994476582,0.52443265629948488,0.84374360379679214,0.53674643087029639,0.83585720780881456,0.54894692653666644,0.8277944063836985,0.56103156841648416,0.81955690115420698,0.57299780607827244,0.81114643062387526,0.58484311407944845,0.80256476980010505,0.59656499249931216,0.79381372981955323,0.60816096746664805,0.78489515756589634,0.61962859168182904,0.77581093528005129,0.63096544493331175,0.76656298016293267,0.64216913460841707,0.75715324397083317,0.65323729619828352,0.74758371260351042,0.66416759379689094,0.73785640568506783,0.67495772059404779,0.72797337613771895,0.68560539936223608,0.71793670974852308,0.69610838293721544,0.70774852472918581,0.70646445469228036,0.69741097126901619,0.7166714290060735,0.68692623108113449,0.7267271517238556,0.67629651694202786,0.73662950061213361,0.66552407222455012,0.74637638580655252,0.65461117042446282,0.7559657502529562,0.6435601146806208,0.76539557014152237,0.63237323728890105,0.77466385533388293,0.6210528992099773,0.78376864978313709,0.60960148957104565,0.79270803194666972,0.59802142516160617,0.80148011519168805,0.58631514992340517,0.8100830481933905,0.57448513443464821,0.81851501532568371,0.56253387538859145,0.82677423704436548,0.55046389506662041,0.83485897026269329,0.53827774080592994,0.84276750871925765,0.52597798446191513,0.85049818333808413,0.51356722186538806,0.85804936258088738,0.5010480722747348,0.86541945279140342,0.48842317782312739,0.87260689853172579,0.47569520296090995,0.87961018291057702,0.46286683389327199,0.88642782790344421,0.44994077801333277,0.89305839466451287,0.43691976333075311,0.89950048383033054,0.42380653789599626,0.90575273581513926,0.4106038692203588,0.91181383109781267,0.39731454369189556,0.91768249050033679,0.3839413659873589,0.92335747545777791,0.37048715848027963,0.92883758827967777,0.35695476064531262,0.93412167240282329,0.34334702845897308,0.93920861263533628,0.32966683379689027,0.94409733539203122,0.31591706382770657,0.94878680892099299,0,0.99976257696650284,0.021789669508681716,0.99905042060540483,0.043568992278496123,0.99786386908135327,0.065327626483684176,0.99620348582367269,0.08705524012237037,0.99407005925882252,0.10874151592267321,0.99146460243601653,0.13037615624182117,0.98838835254617952,0.15194888795594783,0.98484277033447287,0.17344946733824443,0.98082953940666506,0.19486768492315321,0.97635056542967802,0.21619337035429192,0.97140797522668898,0.23741639721380761,0.96600411576721645,0.25852668783086635,0.96014155305267157,0.27951421806699556,0.95382307089790164,0.30036902207600658,0.94705166960930731,0.32108119703623789,0.93983056456015857,0.34164090785287066,0.93216318466378723,0.36203839182808506,0.9240531707453814,0.38226396329683898,0.9155043738131533,0.40230801822606765,0.90652085322970388,0.4221610387751214,0.89710687478445006,0.44181359781527452,0.88726690866803104,0.46125636340616033,0.8770056273496567,0.48048010322700668,0.86632790335840359,0.49947568896056654,0.85523880696951304,0.51823410062766417,0.84374360379679214,0.53674643087029639,0.8318477522922566,0.55500388918125665,0.81955690115420698,0.57299780607827244,0.80687688664496615,0.59071963722067555,0.79381372981955323,0.60816096746664805,0.78037363366660928,0.62531351486911968,0.76656298016293267,0.64216913460841707,0.75238832724302229,0.65871982285980046,0.73785640568506783,0.67495772059404768,0.72297411591486727,0.6908751173092833,0.70774852472918592,0.70646445469228025,0.69218686194011569,0.72171833020749532,0.67629651694202797,0.7366295006121335,0.6600850352027483,0.7511908853955741,0.64356011468062091,0.76539557014152237,0.62672960216916285,0.77923680981129406,0.60960148957104576,0.79270803194666961,0.59218391010317184,0.80580283979080047,0.57448513443464821,0.8185150153256836,0.5565135667594916,0.83083852222476351,0.53827774080592994,0.84276750871925765,0.51978631578419621,0.85429631037684572,0.5010480722747348,0.86541945279140342,0.48207190805877859,0.87613165418250272,0.46286683389327216,0.8864278279034441,0.44344196923214918,0.89630308485663135,0.42380653789599626,0.90575273581513926,0.40396986369215693,0.91477229364937596,0.3839413659873589,0.92335747545777791,0.3637305552349655,0.93150420460052874,0.34334702845897308,0.93920861263533628,0.32280046469690271,0.94646704115434666,0.30210062040374702,0.953276043521325,0.28125732481915589,0.95963238650827731,0.26028047530006121,0.96553305183073579,0.23918003262095483,0.97097523758097914,0.21796601624405459,0.97595635955850835,0.19664849956160263,0.98047405249714303,0.17523760511255351,0.98452617118815933,0.15374349977592716,0.98811079149893388,0.13217638994310626,0.99122621128661037,0.11054651667137116,0.99387095120635571,0.08886415082097493,0.99604375541382062,0.067139588178064563,0.99774359216147301,0.045383144565767988,0.99896965428851869,0.023605150945766748,0.99972135960417874,0.0018159485126781009,0.99999835116414038,-0.019974116216419657,0.99980049744005073,-0.041754696314990354,0.99912789238197275,-0.063515449360237564,0.99798085537377279,-0.085246042344162457,0.99635993108146281,-0.10693615658015337,0.99426588919456793,-0.12857549260277293,0.99169972406064244,-0.15015377505841798,0.98866265421310717,-0.17166075758453217,0.98515612179263468,-0.19308622767505007,0.98118179186235344,-0.2144200115297657,0.97674155161719989,-0.23565197888532172,0.9718375094877908,-0.25677204782552437,0.9664719941392439,-0.27777018956870303,0.96064755336541963,-0.29863643322983685,0.954366952879112,0,0.99957792759812047,0.029051104258645013,0.99831206668270667,0.058077685178586629,0.99620348582367269,0.08705524012237037,0.99325396496859397,0.11595930783756483,0.98946599394017387,0.14476548910560072,0.98484277033447287,0.17344946733824443,0.97938819682167433,0.20198702910431982,0.97310687785166572,0.23035408456935005,0.96600411576721645,0.25852668783086635,0.95808590632803237,0.28648105713221728,0.94935893364946666,0.31419359493781451,0.93983056456015857,0.34164090785287066,0.92950884238336295,0.36879982637081127,0.91840248014722126,0.39564742443169365,0.90652085322970388,0.42216103877512146,0.89387399144443347,0.44831828807131763,0.88047257057406969,0.47409709181420823,0.86632790335840359,0.49947568896056654,0.85145192994476582,0.52443265629948488,0.83585720780881456,0.54894692653666644,0.81955690115420698,0.57299780607827244,0.80256476980010505,0.59656499249931216,0.78489515756589634,0.61962859168182904,0.76656298016293267,0.64216913460841707,0.74758371260351042,0.66416759379689094,0.72797337613771895,0.68560539936223608,0.70774852472918581,0.70646445469228036,0.68692623108113449,0.7267271517238556,0.66552407222455012,0.74637638580655252,0.6435601146806208,0.76539557014152237,0.6210528992099773,0.78376864978313709,0.59802142516160617,0.80148011519168805,0.57448513443464821,0.81851501532568371,0.55046389506662041,0.83485897026269329,0.52597798446191513,0.85049818333808413,0.5010480722747348,0.86541945279140342,0.47569520296090995,0.87961018291057702,0.44994077801333277,0.89305839466451287,0.42380653789599626,0.90575273581513926,0.39731454369189556,0.91768249050033679,0.37048715848027963,0.92883758827967777,0.34334702845897308,0.93920861263533628,0.31591706382770657,0.94878680892099299,0.28822041944859128,0.95756409175202373,0.26028047530006121,0.96553305183073579,0.23212081674078638,0.97268696220088724,0.20376521460021577,0.97901978392621258,0.17523760511255351,0.98452617118815933,0.1465620697111121,0.98920147579853268,0.11776281470009607,0.99304175112324,0.088864150820974708,0.99604375541382073,0.059890472730697572,0.99820495454395219,0.030866238409070136,0.99952352414861878,0.0018159485126778788,0.99999835116414038,-0.027235874307215028,0.99962903476775899,-0.056264706105335668,0.9984158867159918,-0.085246042344162679,0.99635993108146281,-0.1141554185793036,0.99346290338843757,-0.14296843111102989,0.98972724914778953,-0.17166075758453239,0.98515612179263468,-0.20020817752151038,0.97975338001637702,-0.22858659276576349,0.97352358451541332,-0.2567720478255246,0.96647199413924378,-0.28474075009536298,0.95860456145124306,-0.31246908994058992,0.9499279277038335,-0.33993366062720842,0.94044941723230702,-0.36711127808058541,0.93017703127202567,-0.39397900045616929,0.91911944120422007,-0.42051414750572813,0.90728598123608784,-0.44669431972276263,0.89468664052137181,-0.47249741725093447,0.88133205472806697,-0.49790165853954432,0.867233497060377,-0.52288559873031537,0.8524028687424976,-0.54742814775995741,0.83685268897226006,-0.57150858816323635,0.82059608435311482,-0.59510659256151366,0.80364677781337779,-0.61820224082199737,0.78601907702209184,-0.64077603687321893,0.76772786231128221,-0.66280892516254108,0.74878857411480115,-0.68428230674180168,0.72921719993436718,-0.70517805496752195,0.70903026084379694,-0.72547853080241631,0.68824479754282741,-0.74516659770529514,0.66687835597229783,-0.76422563609678629,0.64494897250283489,-0.78263955738866697,0.62247515870954351,-0.8003928175649615,0.59947588574555877,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99990381078632362,0.013869721518034561,0.99961526165002434,0.027736774800855665,0.99913440810173104,0.041598492126560742,0.99846134264729325,0.055452206799770275,0.99759619476998451,0.069295253664642426,0.99653913090559287,0.083124969617591582,0.99529035441040237,0.096938694119611951,0.99385010552207098,0.11073376970810798,0.99221866131341507,0.12450754250813273,0.99039633563910567,0.13825736274293621,0.98838347907529023,0.15198058524372529,0.98618047885214899,0.16567456995853705,0.98378775877940017,0.17933668246012785,0.98120577916476859,0.19296429445278032,0.97843503672543197,0.20655478427793078,0.97547606449246338,0.22010553741851965,0.97232943170828756,0.23361394700196833,0.96899574371717101,0.24707741430168517,0.96547564184876677,0.26049334923700423,0.96176980329473627,0.27385917087146128,0.9578789409784727,0.28717230790931003,0.95380380341794946,0.30043019919018382,0.94954517458172172,0.31363029418180827,0.94510387373810767,0.32677005347066784,0.94048075529757891,0.33984694925053477,0.93567670864839059,0.35285846580876429,0.93069265798548195,0.36580210001026348,0.92552956213268134,0.37867536177904032,0.92018841435824938,0.39147577457724098,0.914670242183795,0.40420087588158177,0.90897610718660293,0.41684821765708585,0.90310710479540934,0.42941536682803239,0.89706436407966406,0.44189990574602744,0.89084904753232308,0.4542994326551078,0.88446235084620917,0.4666115621537868,0.87790550268398682,0.47883392565395405,0.8711797644417939,0.4909641718365409,0.86428643000657623,0.50299996710386319,0.85722682550717166,0.51493899602855575,0.8500023090591915,0.52677896179900985,0.84261427050374837,0.53851758666123051,0.83506413114008093,0.5501526123570275,0.82735334345212597,0.56168180055845529,0.81948339082909294,0.57310293329841899,0.81145578728009038,0.58441381339736365,0.80327207714286486,0.59561226488596375,0.7949338347867021,0.60669613342373307,0.78644266430955378,0.61766328671347348,0.77780019922944243,0.62851161491148244,0.76900810217020887,0.63923903103344182,0.76006806454165832,0.64984347135590848,0.75098180621417021,0.66032289581333048,0.74175107518783223,0.67067528839051083,0.73237764725616239,0.68089865751044631,0.72286332566448519,0.69099103641746351,0.71320994076302591,0.70095048355557976,0.70341934965479014,0.71077508294201763,0.69349343583829848,0.72046294453579762,0.6834341088452407,0.73001220460134197,0.67324330387312425,0.73942102606701687,0.66292298141298289,0.74868759887854552,0.65247512687222153,0.75781014034722338,0.6419017501926656,0.76678689549286938,0.63120488546389275,0.77561613738144597,0.62038659053191703,0.7842961674572837,0.60944894660330406,0.79282531586984717,0.59839405784479194,0.80120194179497828,0.58722405097849439,0.80942443375055506,0.57594107487276591,0.81749120990650603,0.56454730012880561,0.82540071838912055,0.55304491866308025,0.83315143757959564,0.54143614328564726,0.84074187640676257,0.52972320727445699,0.84817057463393686,0.51790836394571915,0.85543610313983631,0.50599388622041253,0.86253706419351295,0,0.99961526165002434,0.027736774800855665,0.99846134264729325,0.055452206799770275,0.99653913090559287,0.083124969617591582,0.99385010552207098,0.11073376970810798,0.99039633563910567,0.13825736274293621,0.98618047885214899,0.16567456995853705,0.98120577916476859,0.19296429445278032,0.97547606449246338,0.22010553741851965,0.96899574371717101,0.24707741430168517,0.96176980329473627,0.27385917087146128,0.95380380341794946,0.30043019919018382,0.94510387373810767,0.32677005347066784,0.93567670864839059,0.35285846580876429,0.92552956213268134,0.37867536177904032,0.914670242183795,0.40420087588158177,0.90310710479540934,0.42941536682803239,0.89084904753232308,0.4542994326551078,0.87790550268398682,0.47883392565395405,0.86428643000657623,0.50299996710386319,0.8500023090591915,0.52677896179900985,0.83506413114008093,0.5501526123570275,0.81948339082909294,0.57310293329841899,0.80327207714286486,0.59561226488596375,0.78644266430955378,0.61766328671347348,0.76900810217020887,0.63923903103344182,0.75098180621417021,0.66032289581333048,0.73237764725616239,0.68089865751044631,0.71320994076302591,0.70095048355557976,0.69349343583829848,0.72046294453579762,0.67324330387312425,0.73942102606701687,0.65247512687222153,0.75781014034722338,0.63120488546389275,0.77561613738144597,0.60944894660330406,0.79282531586984717,0.58722405097849439,0.80942443375055506,0.56454730012880561,0.82540071838912055,0.54143614328564726,0.84074187640676257,0.51790836394571915,0.85543610313983631,0.493982066187025,0.86947209172324658,0.46967566073820605,0.88283904179081796,0.44500785081191474,0.89552666778592394,0.41999761771312821,0.9075252068759837,0.39466420623347642,0.91882542646473386,0.36902710984282316,0.92941863129649649,0.3431060556894957,0.93929667014697582,0.31692098942070279,0.94845194209543526,0.29049205983482507,0.95687740237342855,0.2638396033773836,0.96456656778558569,0.23698412849261888,0.97151352169827976,0.20994629984272078,0.97771291859233933,0.18274692240685292,0.98315998817630068,0.15540692547220497,0.98785053905703601,0.1279473465293951,0.99178096196493248,0.10038931508461024,0.99494823253114173,0.072754036400943717,0.99734991361476044,0.045062775181439245,0.99898415717815414,0.017336839206397739,0.9998497057089788,-0.010402437062464118,0.99994589318780713,-0.038133708898383696,0.99927264560061546,-0.065835637733823241,0.99783048099573546,-0.093486907580000181,0.99562050908522792,-0.12106624142904379,0.99264443039098571,-0.14855241762615687,0.98890453493622121,-0.1759242861991854,0.98440370048334702,-0.20316078513302807,0.97914539031960501,-0.23024095657636706,0.97313365059214729,-0.25714396296824604,0.96637310719462044,-0.28384910307208761,0.95886896220764772,-0.31033582790481334,0.95062698989594974,-0.33658375654880618,0.94165353226518189,-0.36257269183455265,0.93195549418190915,-0.38828263588189377,0.92154033806047186,-0.41369380548792811,0.9104160781208317,-0.43878664734972528,0.89859127422181651,-0.46354185311013713,0.8860750252745081,-0.48794037421512843,0.8728769622408421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99967647159596196,0.025435253831007212,0.99870609572510449,0.050854049607857929,0.99708950027574106,0.076239939925691641,0.994827731276963,0.10157649867134914,0.99192225222179953,0.12684733165200082,0.98837494312025387,0.15203608720312078,0.98418809928283046,0.17712646676894278,0.97936442983533878,0.20210223544855144,0.97390705596593474,0.22694723250078574,0,0.99870609572510449,0.050854049607857929,0.994827731276963,0.10157649867134914,0.98837494312025387,0.15203608720312078,0.97936442983533878,0.20210223544855144,0.96781950890553459,0.25164538180115642,0.95377005637593015,0.30053731808322093,0.93725242953990118,0.34865152132401844,0.91830937285339653,0.39586348117703596,0.89698990732046857,0.44205102212891345,0,0.99708950027574106,0.076239939925691641,0.98837494312025387,0.15203608720312078,0.97390705596593474,0.22694723250078574,0.95377005637593015,0.30053731808322093,0.92808116181374822,0.37237797610283463,0.89698990732046857,0.44205102212891345,0.86067727507135028,0.50915088939896314,0.81935464087868981,0.57328698962260893,0.7732625437733337,0.63408598659581905,0,0.994827731276963,0.10157649867134914,0.97936442983533878,0.20210223544855144,0.95377005637593015,0.30053731808322093,0.91830937285339653,0.39586348117703596,0.87334920363630042,0.48709461966628198,0.81935464087868981,0.57328698962260893,0.75688423335689503,0.6535489708474379,0.68658420854079705,0.72705029027049251,0.60918178766956566,0.79303061074066505,0,0.99192225222179953,0.12684733165200082,0.96781950890553459,0.25164538180115642,0.92808116181374822,0.37237797610283463,0.87334920363630042,0.48709461966628198,0.80450785628032007,0.59394200826616383,0.72266928582711343,0.69119396939074185,0.62915563493797944,0.77727934941421672,0.5254776629843203,0.85080739636214797,0.41331033898133007,0.91059022819879742,0,0.98837494312025387,0.15203608720312078,0.95377005637593015,0.30053731808322093,0.89698990732046857,0.44205102212891345,0.81935464087868981,0.57328698962260893,0.72266928582711343,0.69119396939074185,0.60918178766956566,0.79303061074066505,0.48153074364848969,0.87642920017610804,0.34268405505889338,0.93945071100531574,0.19586992320561364,0.98062988593221401,0,0.98418809928283046,0.17712646676894278,0.93725242953990118,0.34865152132401844,0.86067727507135028,0.50915088939896314,0.75688423335689503,0.6535489708474379,0.62915563493797932,0.77727934941421672,0.48153074364848969,0.87642920017610804,0.3186780197373304,0.94786302794037369,0.14574748540850943,0.98932182352210163,-0.03179213845842449,0.99949450220210834,0,0.97936442983533878,0.20210223544855144,0.91830937285339653,0.39586348117703596,0.81935464087868981,0.57328698962260893,0.68658420854079705,0.72705029027049251,0.5254776629843203,0.85080739636214797,0.34268405505889338,0.93945071100531574,0.14574748540850943,0.98932182352210163,-0.057204249164814758,0.99836249622944562,-0.25779509914342436,0.9661996102553716,0,0.97390705596593474,0.22694723250078574,0.89698990732046857,0.44205102212891345,0.7732625437733337,0.63408598659581905,0.60918178766956566,0.79303061074066505,0.41331033898133007,0.91059022819879742,0.19586992320561364,0.98062988593221401,-0.031792138458424268,0.99949450220210834,-0.25779509914342436,0.9661996102553716,-0.47034479364001286,0.88248273359637674,0,0.96781950890553459,0.25164538180115642,0.87334920363630042,0.48709461966628198,0.72266928582711343,0.69119396939074185,0.5254776629843203,0.85080739636214797,0.29446578163351222,0.95566202365007924,0.044501793355740393,0.99900930445523028,-0.20832637405157595,0.97805936520976211,-0.44774645140907432,0.89416056458031157,-0.65834912738227613,0.75271271177986332,0,0.96110572764290847,0.27618070224401181,0.847448439416009,0.53087770958232083,0.66786937036663263,0.74427851247102228,0.43633771493725809,0.89978297301256605,0.17086398365900229,0.98529462552486102,-0.10790100825215546,0.99416164300287113,-0.37827253775818498,0.92569427306102658,-0.61921879704666416,0.78521849276751121,-0.81199692725321637,0.58366170863894684,0,0.95377005637593015,0.30053731808322093,0.81935464087868981,0.57328698962260893,0.60918178766956566,0.79303061074066505,0.34268405505889338,0.93945071100531574,0.044501793355740393,0.99900930445523028,-0.25779509914342436,0.9661996102553716,-0.53625628584266505,0.84405520903210463,-0.76513527681678672,0.64386955835052428,-0.923269946366854,0.38415180090134482,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99964561112345263,0.026620521437774766,0.99858269567676194,0.05322217484217865,0.99681200703075012,0.079786105553083075,0.99433480021013709,0.1062934856473654,0.9911528310040072,0.13272552728372197,0.98726835472134455,0.15906349601907205,0.98268412459252097,0.18528872408711433,0.97740338981786667,0.21138262362962432,0.97142989326470996,0.23732669987111479,0.96476786881451593,0.26310256422752126,0.95742203836200546,0.288691947339621,0.94939760846838128,0.31407671202194876,0.94070026667103335,0.33923886611803022,0.93133617745233843,0.36416057525282219,0.92131197787041297,0.38882417547332065,0.91063477285491323,0.41321218576837815,0.89931213017121925,0.43730732045885534,0.88735207505657154,0.46109250144932579,0.87476308453196128,0.48455087033265015,0.86155408139380607,0.5076658003388399,0.84773442788967102,0.53042090811974241,0.83331391908251495,0.5528000653611933,0.81830277590816913,0.57478741021440682,0.80271163793096367,0.59636735853850131,0.78655155580264258,0.61752461494619182,0.76983398342990628,0.63824418364482005,0.75257076985613847,0.65851137906503865,0.7347741508630673,0.67831183626961611,0.71645674029831519,0.69763152113498472,0,0.99858269567676194,0.05322217484217865,0.99433480021013709,0.1062934856473654,0.98726835472134455,0.15906349601907205,0.97740338981786667,0.21138262362962432,0.96476786881451593,0.26310256422752126,0.94939760846838128,0.31407671202194876,0.93133617745233843,0.36416057525282219,0.91063477285491323,0.41321218576837815,0.88735207505657154,0.46109250144932579,0.86155408139380607,0.5076658003388399,0.83331391908251495,0.5528000653611933,0.80271163793096367,0.59636735853850131,0.76983398342990628,0.63824418364482005,0.7347741508630673,0.67831183626961611,0.69763152113498472,0.71645674029831508,0.65851137906503865,0.75257076985613847,0.61752461494619193,0.78655155580264247,0.57478741021440694,0.81830277590816902,0.53042090811974252,0.84773442788967091,0.48455087033265021,0.87476308453196128,0.43730732045885545,0.89931213017121925,0.38882417547332071,0.92131197787041297,0.33923886611803039,0.94070026667103324,0.28869194733962117,0.95742203836200546,0.23732669987111499,0.97142989326470996,0.18528872408711453,0.98268412459252086,0.13272552728372197,0.9911528310040072,0.079786105553083103,0.99681200703075012,0.026620521437774818,0.99964561112345263,0,0.99681200703075012,0.079786105553083075,0.98726835472134455,0.15906349601907205,0.97142989326470996,0.23732669987111479,0.94939760846838128,0.31407671202194876,0.92131197787041297,0.3888241754733206,0.88735207505657154,0.46109250144932579,0.84773442788967102,0.53042090811974241,0.80271163793096367,0.59636735853850131,0.75257076985613858,0.65851137906503854,0.69763152113498483,0.71645674029831508,0.63824418364482016,0.76983398342990617,0.57478741021440694,0.81830277590816902,0.50766580033884001,0.86155408139380607,0.43730732045885545,0.89931213017121925,0.36416057525282231,0.93133617745233843,0.28869194733962117,0.95742203836200546,0.21138262362962451,0.97740338981786656,0.13272552728372219,0.99115283100400708,0.053222174842178914,0.99858269567676194,-0.026620521437774471,0.99964561112345263,-0.10629348564736529,0.99433480021013709,-0.18528872408711419,0.98268412459252097,-0.2631025642275211,0.96476786881451604,-0.33923886611803006,0.94070026667103335,-0.41321218576837793,0.91063477285491323,-0.4845508703326501,0.87476308453196128,-0.55280006536119308,0.83331391908251518,-0.61752461494619182,0.78655155580264258,-0.67831183626961578,0.73477415086306752,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/medium.json b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/medium.json index 9426aa08c1c5..92bc8b5c15e7 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/medium.json +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/medium.json @@ -1 +1 @@ -{"lengths":[34,49,74,77,101,16,81,113,56,96],"offsets":[0,33,81,154,230,330,345,425,537,592],"twiddles":[0.98297309968390179,0.18374951781657034,0.93247222940435581,0.36124166618715292,0.85021713572961422,0.52643216287735572,0.73900891722065909,0.67369564364655721,0.60263463637925641,0.79801722728023949,0.44573835577653831,0.89516329135506234,0.27366299007208278,0.96182564317281904,0.092268359463302016,0.99573417629503447,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99179001382324616,0.127877161684506,0.96729486303902945,0.25365458390950735,0.92691675734602175,0.37526700487937409,0,0.96729486303902945,0.25365458390950735,0.87131870412338941,0.49071755200393785,0.71834935009772771,0.69568255060348638,0,0.92691675734602175,0.37526700487937409,0.71834935009772771,0.69568255060348638,0.404783343122394,0.91441262301581239,0,0.87131870412338941,0.49071755200393785,0.51839256831052516,0.85514276300534608,0.032051577571655332,0.99948621620068789,0,0.80141362186795673,0.59811053049121587,0.28452758663103267,0.95866785303666058,-0.34536505442130727,0.93846842204976055,0,0.71834935009772771,0.69568255060348638,0.032051577571655332,0.99948621620068789,-0.67230089026131656,0.74027799707531572,0,0,0,0,0,0,0,0.99639748854252652,0.084805924475509192,0.98561591034770846,0.16900082032184907,0.96773294693349887,0.25197806138512518,0.94287744546108421,0.33313979474205757,0.91122849038813569,0.4119012482439926,0.87301411316118815,0.48769494381363454,0.82850964924384218,0.55997478613759533,0.77803575431843952,0.62821999729564226,0.72195609395452454,0.69193886897754608,0.66067472339008149,0.75067230525272433,0.59463317630428669,0.80399713036694054,0.52430728355723166,0.85152913773331129,0.45020374481767328,0.89292585814956849,0.37285647778030861,0.92788902729650935,0.29282277127655043,0.95616673473925096,0.21067926999572642,0.97755523894768614,0.12701781974687887,0.99190043525887683,0.042441203196148462,0.99909896620468142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99667258249419322,0.08150928354706316,0.98671247339128887,0.16247613626020579,0.97018595557406451,0.24236173709321232,0.94720301029191012,0.32063446055273548,0.91791658525375941,0.39677341457824244,0,0.98671247339128887,0.16247613626020579,0.94720301029191012,0.32063446055273548,0.88252157678632126,0.4702719069927368,0.79438708541211267,0.60741185247774743,0.68514171496784426,0.72840979565826902,0,0.97018595557406451,0.24236173709321232,0.88252157678632126,0.4702719069927368,0.74223412300426994,0.67014066183755949,0.55768866698682951,0.83005020975508048,0.33988930158261688,0.94046545001381143,0,0.94720301029191012,0.32063446055273548,0.79438708541211267,0.60741185247774743,0.55768866698682951,0.83005020975508048,0.26210168293910224,0.96504026226913986,-0.061161660821842483,0.99812787319336693,0,0.91791658525375941,0.39677341457824244,0.68514171496784426,0.72840979565826902,0.33988930158261688,0.94046545001381143,-0.061161660821842483,0.99812787319336693,-0.45217190728268547,0.89193080800269398,0,0.88252157678632126,0.4702719069927368,0.55768866698682951,0.83005020975508048,0.10182298670383554,0.99480253285700404,-0.37796670142890643,0.92581919002089819,-0.76895052533936181,0.63930828993555178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.92387953251128674,0.38268343236508978,0,0,0.70710678118654757,0.70710678118654746,0,0,0.38268343236508984,0.92387953251128674,0,0,0,0,0,0.99699294116779202,0.077492420671930934,0.98798984947680901,0.15451879280784048,0.97304487057982381,0.23061587074244014,0.95224788533841531,0.30532599769511309,0.92572396926889045,0.37819985817164248,0.89363264032341228,0.44879918020046211,0.85616689953026648,0.51669937115186282,0.81355207026296761,0.5814920712880266,0.76604444311897801,0.64278760968653925,0.7139297345578991,0.70021734776716849,0.65752136856906362,0.75343589632766073,0.59715859170278629,0.80212319275504373,0.53320443280169139,0.84598642591984097,0,0.98798984947680901,0.15451879280784048,0.95224788533841531,0.30532599769511309,0.89363264032341228,0.44879918020046211,0.81355207026296761,0.5814920712880266,0.7139297345578991,0.70021734776716849,0.59715859170278629,0.80212319275504373,0.46604351970253893,0.8847617971766577,0.32373394205832112,0.94614815687575038,0.17364817766693041,0.98480775301220802,0.019391331771824435,0.99981197044850145,-0.13533129975013106,0.99080040336484532,-0.28680323271108998,0.9579895123154889,-0.43138606568125326,0.90216742478103773,0,0.97304487057982381,0.23061587074244014,0.89363264032341228,0.44879918020046211,0.76604444311897812,0.64278760968653925,0.59715859170278629,0.80212319275504373,0,0.89363264032341228,0.44879918020046211,0.59715859170278629,0.80212319275504373,0.17364817766693064,0.98480775301220802,-0.28680323271108998,0.9579895123154889,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9937122098932426,0.11196447610330786,0.97492791218182362,0.22252093395631439,0.94388333030836757,0.33027906195516704,0.90096886790241915,0.43388373911755812,0.84672419922828424,0.53203207651533657,0.7818314824680298,0.62348980185873348,0.70710678118654757,0.70710678118654746,0.62348980185873359,0.7818314824680298,0.53203207651533657,0.84672419922828412,0.43388373911755818,0.90096886790241915,0.33027906195516715,0.94388333030836757,0.22252093395631445,0.97492791218182362,0.11196447610330791,0.9937122098932426,0,0,0.97492791218182362,0.22252093395631439,0.90096886790241915,0.43388373911755812,0.7818314824680298,0.62348980185873348,0,0.90096886790241915,0.43388373911755812,0.62348980185873359,0.7818314824680298,0.22252093395631445,0.97492791218182362,0,0.7818314824680298,0.62348980185873348,0.22252093395631445,0.97492791218182362,-0.43388373911755806,0.90096886790241915,0,0,0,0,0,0,0,0.99785892323860348,0.065403129230143062,0.99144486137381038,0.13052619222005157,0.98078528040323043,0.19509032201612825,0.96592582628906831,0.25881904510252074,0.94693012949510569,0.32143946530316153,0.92387953251128674,0.38268343236508978,0.89687274153268837,0.44228869021900125,0.86602540378443871,0.49999999999999994,0.83146961230254524,0.55557023301960218,0.79335334029123528,0.60876142900872054,0.7518398074789775,0.65934581510006884,0.70710678118654757,0.70710678118654746,0.65934581510006895,0.75183980747897738,0.60876142900872066,0.79335334029123517,0.5555702330196024,0.83146961230254512,0.50000000000000011,0.8660254037844386,0.44228869021900147,0.89687274153268826,0.38268343236508984,0.92387953251128674,0.3214394653031617,0.94693012949510558,0.25881904510252096,0.9659258262890682,0.19509032201612833,0.98078528040323043,0.13052619222005171,0.99144486137381038,0.06540312923014327,0.99785892323860348,0,0,0.99144486137381038,0.13052619222005157,0.96592582628906831,0.25881904510252074,0.92387953251128674,0.38268343236508978,0.86602540378443871,0.49999999999999994,0.79335334029123528,0.60876142900872054,0,0,0.96592582628906831,0.25881904510252074,0.86602540378443871,0.49999999999999994,0.70710678118654757,0.70710678118654746,0.50000000000000011,0.8660254037844386,0.25881904510252096,0.9659258262890682,0,0,0.92387953251128674,0.38268343236508978,0.70710678118654757,0.70710678118654746,0.38268343236508984,0.92387953251128674,6.123233995736766e-17,1,-0.38268343236508973,0.92387953251128674,0,0,0.86602540378443871,0.49999999999999994,0,0.50000000000000011,0.8660254037844386,0,6.123233995736766e-17,1,0,0,0]} +{"lengths":[95,94,71,43,92,43,90,30,62,57],"offsets":[0,95,189,260,303,395,438,528,558,620],"twiddles":[0.99781362721877453,0.066090584325699447,0.99126406932697519,0.1318921713420689,0.98037996587480936,0.19711702745148033,0.96520891027734868,0.26147994095381977,0.94581724170063464,0.32469946920468351,0.92228975497738475,0.38649916929245226,0.89472932982076347,0.44660880685280657,0.86325648095757379,0.50476553773484378,0.82800883114802004,0.56071505735167271,0,0.99126406932697519,0.1318921713420689,0.96520891027734868,0.26147994095381977,0.92228975497738475,0.38649916929245226,0.86325648095757379,0.50476553773484378,0.78914050939639357,0.61421271268966782,0.70123678427248859,0.71292844829139701,0.60108114728302509,0.79918799689492481,0.49042350383050809,0.87148424362727728,0.37119724891822076,0.92855403848970708,0,0.98037996587480936,0.19711702745148033,0.92228975497738475,0.38649916929245226,0.82800883114802004,0.56071505735167271,0.70123678427248859,0.71292844829139701,0.54694815812242692,0.83716647826252855,0.37119724891822076,0.92855403848970708,0.18088053433210999,0.98350507487238237,-0.016533944766358447,0.999863304992469,-0.21329963074374692,0.97698683078359927,0,0.96520891027734868,0.26147994095381977,0.86325648095757379,0.50476553773484378,0.70123678427248859,0.71292844829139701,0.49042350383050809,0.87148424362727728,0.24548548714079901,0.96940026593933049,-0.016533944766358447,0.999863304992469,-0.27740290876184465,0.96075367613684814,-0.51896957378121522,0.85479271258553891,-0.72442520479108896,0.68935340911856591,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99776687862315316,0.066792633745121552,0.99107748815478014,0.13328695537377883,0.97996170503658686,0.19918598510383609,0.96446917505437657,0.26419540187128598,0.94466909160791879,0.32802485783956914,0.92064988667642877,0.39038927516349481,0.89251883585988123,0.45101011921610179,0.86040157926013938,0.50961664259191741,0.8244415603417603,0.5659470943305952,0.78479938527866089,0.61974988896024497,0.74165210564795758,0.67078473013922346,0.69519242767464229,0.71882368387792939,0.64562785155880242,0.76365219654733207,0.59317974472935531,0.80507005312756286,0.53808235316337272,0.84289227141679701,0.48058175518668378,0.8769499282066715,0.420934762428335,0.9070909137343407,0.3594077728375128,0.93318061104160255,0.29627558088563394,0.95510249720691243,0.2318201502675282,0.97275866376503717,0.16632935458313017,0.98607025399002857,0.10009569162409844,0.99497781508850403,0.033414977007674644,0.99944156373025461,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99766876919053915,0.068242413364670976,0.99068594603633076,0.13616664909624659,0.97908408768232291,0.20345601305263378,0.96291728734779936,0.26979677115702427,0.94226092211882051,0.33487961217098611,0.91721130150545305,0.39840108984624145,0.88788521840237522,0.46006503773115215,0.85441940454648857,0.51958395003543356,0.81696989301044209,0.57668032211486708,0.77571129070441991,0.63108794432605275,0.73083596427812414,0.68255314321865401,0,0.99068594603633076,0.13616664909624659,0.96291728734779936,0.26979677115702427,0.91721130150545305,0.39840108984624145,0.85441940454648857,0.51958395003543356,0.77571129070441991,0.63108794432605275,0.68255314321865412,0.73083596427812403,0.57668032211486708,0.81696989301044198,0.4600650377311522,0.88788521840237522,0.33487961217098627,0.9422609221188204,0.20345601305263397,0.9790840876823228,0.068242413364671003,0.99766876919053915,0,0.97908408768232291,0.20345601305263378,0.91721130150545305,0.39840108984624145,0.81696989301044209,0.57668032211486708,0.68255314321865412,0.73083596427812403,0.51958395003543356,0.85441940454648857,0.33487961217098627,0.9422609221188204,0.13616664909624659,0.99068594603633076,-0.068242413364670879,0.99766876919053915,-0.26979677115702411,0.96291728734779936,-0.46006503773115209,0.88788521840237522,-0.63108794432605286,0.7757112907044198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9975640502598242,0.069756473744125302,0.99026806874157036,0.13917310096006544,0.97814760073380569,0.20791169081775934,0.96126169593831889,0.27563735581699916,0.93969262078590843,0.34202014332566871,0.91354545764260087,0.40673664307580021,0.88294759285892699,0.46947156278589081,0.84804809615642596,0.5299192642332049,0.80901699437494745,0.58778525229247314,0.76604444311897801,0.64278760968653925,0.71933980033865119,0.69465837045899725,0.66913060635885824,0.74314482547739424,0.61566147532565829,0.78801075360672201,0.55919290347074679,0.82903757255504174,0.50000000000000011,0.8660254037844386,0.43837114678907746,0.89879404629916693,0.37460659341591196,0.92718385456678742,0.30901699437494745,0.95105651629515353,0.24192189559966767,0.97029572627599647,0.17364817766693041,0.98480775301220802,0.10452846326765346,0.99452189536827329,0.03489949670250108,0.99939082701909576,0,0.99026806874157036,0.13917310096006544,0.96126169593831889,0.27563735581699916,0.91354545764260087,0.40673664307580021,0.84804809615642596,0.5299192642332049,0.76604444311897801,0.64278760968653925,0.66913060635885824,0.74314482547739424,0.55919290347074679,0.82903757255504174,0,0.96126169593831889,0.27563735581699916,0.84804809615642596,0.5299192642332049,0.66913060635885824,0.74314482547739424,0.43837114678907746,0.89879404629916693,0.17364817766693041,0.98480775301220802,-0.10452846326765355,0.99452189536827329,-0.37460659341591207,0.92718385456678742,0,0.91354545764260087,0.40673664307580021,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765355,0.99452189536827329,0,0,0,0,0,0,0.97814760073380569,0.20791169081775931,0.91354545764260087,0.40673664307580015,0.80901699437494745,0.58778525229247314,0.66913060635885824,0.74314482547739424,0.50000000000000011,0.8660254037844386,0.30901699437494745,0.95105651629515353,0.10452846326765368,0.99452189536827329,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0.99486932339189516,0.10116832198743217,0.97952994125249448,0.20129852008866006,0.95413925640004882,0.29936312297335793,0.9189578116202306,0.39435585511331855,0.87434661614458209,0.48530196253108104,0.82076344120727629,0.57126821509479231,0.75875812269279097,0.65137248272222226,0.68896691907568663,0.72479278722911999,0.61210598254766291,0.79077573693769854,0.52896401032696239,0.84864425749475092,0.44039415155763428,0.89780453957074169,0.34730525284482028,0.93775213214708042,0.25065253225872053,0.96807711886620429,0.1514277775045767,0.98846832432811138,0.050649168838712767,0.99871650717105276,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99393067731794948,0.11000822099407929,0.97579638262743562,0.2186810912063758,0.94581724170063464,0.32469946920468346,0.90435716069757754,0.42677643549640365,0.85191940883832706,0.52367291398787785,0.78914050939639357,0.61421271268966782,0.71678251316845132,0.69729680109399539,0.63572374820996802,0.77191665091632089,0.54694815812242692,0.83716647826252855,0,0.97579638262743562,0.2186810912063758,0.90435716069757754,0.42677643549640365,0.78914050939639357,0.61421271268966782,0.63572374820996802,0.77191665091632089,0.45153335831088948,0.89225423861839392,0.24548548714079924,0.96940026593933037,0.027554342368162059,0.99962030702495142,-0.19171063192373838,0.98145149325241787,-0.40169542465296942,0.9157733266550574,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/runner.c b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/runner.c index 6f783f0bf820..ee9a53000bd4 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/runner.c +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/runner.c @@ -194,9 +194,9 @@ void generate( const int *lengths, const int *offsets, const unsigned int num, c } rffti( n, wsave ); - // Copy twiddle region into flat array (N-1 values starting at wsave[n]): + // Copy twiddle region into flat array (N values starting at wsave[n]): off = offsets[ i ]; - for ( j = 0; j < (unsigned int)( n - 1 ); j++ ) { + for ( j = 0; j < (unsigned int)n; j++ ) { twiddles[ off + j ] = wsave[ n + j ]; } free( wsave ); @@ -233,7 +233,7 @@ unsigned int compute_offsets( int *offsets, const int *lengths, const unsigned i total = 0; for ( i = 0; i < num; i++ ) { offsets[ i ] = total; - total += lengths[ i ] - 1; + total += lengths[ i ]; } return total; } diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/small.json b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/small.json index fbf7013f13bc..843a8a90f932 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/small.json +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/fixtures/c/fftpack/small.json @@ -1 +1 @@ -{"lengths":[13,13,12,9,14,4,5,5,15,11],"offsets":[0,12,24,35,43,56,59,63,67,81],"twiddles":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.86602540378443871,0.49999999999999994,0,0.50000000000000011,0.8660254037844386,0,6.123233995736766e-17,1,0,0,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0.90096886790241915,0.43388373911755812,0.62348980185873359,0.7818314824680298,0.22252093395631445,0.97492791218182362,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} +{"lengths":[11,10,14,12,10,13,11,3,12,7],"offsets":[0,11,21,35,47,57,70,81,84,96],"twiddles":[0,0,0,0,0,0,0,0,0,0,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0,0,0,0,0,0.90096886790241915,0.43388373911755812,0.62348980185873359,0.7818314824680298,0.22252093395631445,0.97492791218182362,0,0,0,0,0,0,0,0,0.86602540378443871,0.49999999999999994,0,0.50000000000000011,0.8660254037844386,0,6.123233995736766e-17,1,0,0,0,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.86602540378443871,0.49999999999999994,0,0.50000000000000011,0.8660254037844386,0,6.123233995736766e-17,1,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/test.js b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/test.js index 8173a6ee269a..dbb843b8ba34 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/test.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/rffti/test/test.js @@ -83,9 +83,9 @@ tape( 'the function correctly initializes twiddle factors (small sequence length workspace = new Float64Array( ( 2*N ) + 34 ); rffti( N, workspace, 1, 0 ); - t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); - for ( i = 0; i < N-1; i++ ) { - y = workspace[ N+i+1 ]; + t.strictEqual( workspace[ N-1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ N+i ]; e = expected[ off+i ]; t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); } @@ -117,9 +117,9 @@ tape( 'the function correctly initializes twiddle factors (medium sequence lengt workspace = new Float64Array( ( 2*N ) + 34 ); rffti( N, workspace, 1, 0 ); - t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); - for ( i = 0; i < N-1; i++ ) { - y = workspace[ N+i+1 ]; + t.strictEqual( workspace[ N-1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ N+i ]; e = expected[ off+i ]; t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); } @@ -151,9 +151,9 @@ tape( 'the function correctly initializes twiddle factors (large sequence length workspace = new Float64Array( ( 2*N ) + 34 ); rffti( N, workspace, 1, 0 ); - t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); - for ( i = 0; i < N-1; i++ ) { - y = workspace[ N+i+1 ]; + t.strictEqual( workspace[ N-1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ N+i ]; e = expected[ off+i ]; t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); } @@ -224,8 +224,8 @@ tape( 'the function correctly handles stride and offset parameters', function te expected = new Float64Array( ( 2*N ) + 34 ); rffti( N, expected, 1, 0 ); - for ( i = 0; i < N-1; i++ ) { - t.strictEqual( workspace[ offset + ( ( N+i+1 ) * stride ) ], expected[ N+i+1 ], 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + t.strictEqual( workspace[ offset + ( ( N+i ) * stride ) ], expected[ N+i ], 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/README.md b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/README.md index 6a122b979129..7b08061e0f11 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/README.md +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/README.md @@ -60,7 +60,7 @@ var cosineTable = workspace.slice( 0, N ); // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] var twiddleFactors = workspace.slice( 2*N, 3*N ); -// returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +// returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/benchmark/benchmark.js b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/benchmark/benchmark.js index 859a68244c81..6eca980065f6 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/benchmark/benchmark.js @@ -53,12 +53,12 @@ function createBenchmark( N ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { sinqi( N, workspace, 1, 0 ); - if ( isnan( workspace[ ( 2*N ) + 1 ] ) ) { + if ( isnan( workspace[ 2*N ] ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnan( workspace[ ( 2*N ) + 1 ] ) ) { + if ( isnan( workspace[ 2*N ] ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/docs/repl.txt b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/docs/repl.txt index 7864186153f9..a1306dd597ab 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/docs/repl.txt +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/docs/repl.txt @@ -51,7 +51,7 @@ > var cosineTable = workspace.slice( 0, N ) [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] > var twiddleFactors = workspace.slice( 2*N, 3*N ) - [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] + [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] > var factors = workspace.slice( 3*N, ( 3*N ) + 4 ) [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/docs/types/index.d.ts b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/docs/types/index.d.ts index 681e25e4f029..6e5a33c1eb91 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/docs/types/index.d.ts @@ -51,7 +51,7 @@ import { Collection } from '@stdlib/types/array'; * // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] * * var twiddleFactors = workspace.slice( 2*N, 3*N ); -* // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/lib/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/lib/index.js index ea0d92bbec78..10f4e9017dd2 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/lib/index.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/lib/index.js @@ -40,7 +40,7 @@ * // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] * * var twiddleFactors = workspace.slice( 2*N, 3*N ); -* // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/lib/main.js b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/lib/main.js index 1b724874275e..3638dd6fcef1 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/lib/main.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/lib/main.js @@ -151,7 +151,7 @@ var cosqi = require( '@stdlib/fft/base/fftpack/cosqi' ); * // returns [ ~0.98, ~0.92, ~0.83, ~0.7, ~0.56, ~0.38, ~0.2, ~0.0 ] * * var twiddleFactors = workspace.slice( 2*N, 3*N ); -* // returns [ 0, ~0.707, ~0.707, 0, 0, 0, 0, 0 ] +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] * * var factors = workspace.slice( 3*N, ( 3*N ) + 4 ); * // returns [ 8, 2, 2, 4 ] diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/large.json b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/large.json index d85386469224..4c3c35410e99 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/large.json +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/large.json @@ -1 +1 @@ -{"lengths":[150,544,677,916,996,492,894,355,199,821],"offsets":[0,150,694,1371,2287,3283,3775,4669,5024,5223],"cosines":[0.99994516936551214,0.9997806834748455,0.9995065603657316,0.99912283009885838,0.99862953475457383,0.99802672842827156,0.9973144772244581,0.99649285924950437,0.99556196460308,0.99452189536827329,0.99337276560039645,0.99211470131447788,0.9907478404714436,0.98927233296298833,0.98768834059513777,0.98599603707050498,0.98419560796924188,0.98228725072868872,0.98027117462172186,0.97814760073380569,0.97591676193874743,0.97357890287316029,0.97113427990963608,0.96858316112863119,0.96592582628906831,0.96316256679765822,0.96029368567694307,0.95731949753206724,0.95424032851627694,0.95105651629515353,0.94776841000958567,0.94437637023748111,0.94088076895422545,0.93728198949189157,0.93358042649720174,0.92977648588825146,0.92587058480999473,0.92186315158850052,0.91775462568398114,0.91354545764260087,0.90923610904706853,0.90482705246601958,0.90031877140219352,0.8957117602394129,0.8910065241883679,0.88620357923121473,0.88130345206499228,0.87630668004386358,0.87121381112018947,0.86602540378443871,0.86074202700394364,0.85536426016050671,0.84989269298686398,0.84432792550201519,0.83867056794542405,0.83292124071009954,0.82708057427456183,0.82114920913370404,0.81512779572855421,0.80901699437494745,0.80281747519111457,0.79652991802419637,0.79015501237569041,0.78369345732583984,0.7771459614569709,0.77051324277578925,0.76379602863464224,0.75699505565175651,0.75011106963045959,0.74314482547739436,0.73609708711973443,0.72896862742141155,0.72176022809836227,0.71447267963280336,0.70710678118654768,0.69966334051336554,0.69214317387040691,0.68454710592868873,0.67687596968266073,0.66913060635885824,0.66131186532365194,0.6534206039901056,0.64545768772395062,0.63742398974868975,0.6293203910498375,0.62114778027831041,0.6129070536529766,0.60459911486237494,0.59622487496561594,0.58778525229247325,0.57928117234267895,0.57071356768443182,0.56208337785213069,0.55339154924334411,0.54463903501502708,0.53582679497899677,0.5269557954966777,0.51802700937313029,0.50904141575037143,0.50000000000000011,0.49090375361514094,0.48175367410171532,0.47255076486905406,0.46329603511986178,0.45399049973954686,0.44463517918492751,0.43523109937232773,0.42577929156507283,0.41628079226040138,0.40673664307580037,0.39714789063478079,0.3875155864521031,0.37784078681846728,0.36812455268467809,0.35836794954530038,0.34857204732181529,0.33873792024529148,0.32886664673858329,0.31895930929807004,0.30901699437494745,0.29904079225608693,0.28903179694447184,0.2789911060392295,0.26891982061526593,0.25881904510252096,0.24868988716485496,0.23853345757858105,0.22835087011065588,0.2181432413965427,0.20791169081775945,0.19765734037912627,0.18738131458572474,0.17708474031958338,0.16676874671610234,0.15643446504023092,0.14608302856241187,0.13571557243430463,0.12533323356430448,0.11493715049286683,0.10452846326765368,0.094108313318514505,0.083677843332315663,0.073238197127631854,0.062790519529313527,0.052335956242943966,0.041875653729199748,0.031410759078128396,0.020942419883357051,0.010471784116245868,2.8327694488239898e-16,0.99999583119426849,0.99998332481183183,0.99996248095696338,0.99993329980345125,0.99989578159459624,0.99984992664321093,0.99979573533161592,0.99973320811163724,0.99966234550460276,0.99958314810133719,0.9994956165621578,0.99939975161686856,0.99929555406475401,0.99918302477457299,0.999062164684551,0.99893297480237242,0.99879545620517241,0.99864961003952746,0.99849543752144632,0.99833293993635963,0.99816211863910886,0.99798297505393596,0.99779551067447025,0.99759972706371691,0.99739562585404384,0.99718320874716748,0.99696247751413902,0.99673343399532999,0.99649608010041602,0.99625041780836177,0.99599644916740404,0.99573417629503447,0.99546360137798262,0.99518472667219693,0.99489755450282624,0.99460208726420063,0.99429832741981106,0.99398627750228918,0.99366594011338594,0.99333731792394997,0.99300041367390546,0.99265523017222901,0.99230177029692679,0.99194003699500977,0.99157003328246962,0.99119176224425354,0.99080522703423868,0.99041043087520519,0.99000737705881015,0.98959606894555963,0.98917650996478101,0.98874870361459388,0.98831265346188146,0.98786836314226056,0.98741583636005115,0.98695507688824569,0.98648608856847775,0.98600887531098957,0.98552344109459999,0.9850297899666709,0.9845279260430736,0.98401785350815441,0.9834995766147,0.98297309968390179,0.98243842710531981,0.98189556333684624,0.98134451290466829,0.98078528040323043,0.98021787049519593,0.97964228791140817,0.97905853745085092,0.97846662398060902,0.97786655243582676,0.97725832781966759,0.97664195520327213,0.97601743972571564,0.97538478659396566,0.9747440010828381,0.97409508853495352,0.97343805436069286,0.97277290403815153,0.9720996431130946,0.97141827719891005,0.97072881197656213,0.97003125319454397,0.96932560666882972,0.96861187828282591,0.96789007398732263,0.96716019980044343,0.96642226180759572,0.96567626616141999,0.96492221908173792,0.96416012685550101,0.96338999583673834,0.96261183244650306,0.96182564317281904,0.96103143457062712,0.96022921326173005,0.9594189859347374,0.95860075934500966,0.95777454031460241,0.95694033573220882,0.95609815255310271,0.95524799779907998,0.95438987855840085,0.95352380198573006,0.95264977530207751,0.9517678057947383,0.95087790081723123,0.94998006778923849,0.94907431419654276,0.94816064759096585,0.94723907559030485,0.94630960587826884,0.9453722462044154,0.94442700438408522,0.94347388829833723,0.94251290589388315,0.94154406518302081,0.94056737424356762,0.93958284121879332,0.93859047431735154,0.93759028181321202,0.9365822720455913,0.93556645341888311,0.93454283440258845,0.93351142353124494,0.93247222940435581,0.93142526068631781,0.9303705261063494,0.9293080344584177,0.92823779460116518,0.92715981545783599,0.92607410601620144,0.92498067532848494,0.92387953251128674,0.92277068674550788,0.92165414727627337,0.92052992341285567,0.91939802452859654,0.9182584600608289,0.91711123951079865,0.91595637244358508,0.91479386848802102,0.91362373733661262,0.91244598874545901,0.91126063253417022,0.91006767858578586,0.9088671368466924,0.90765901732654042,0.90644333009816103,0.90522008529748199,0.90398929312344334,0.90275096383791187,0.901505107765596,0.90025173529395963,0.89899085687313562,0.89772248301583812,0.89644662429727551,0.89516329135506234,0.89387249488912979,0.89257424566163746,0.8912685544968828,0.88995543228121166,0.88863488996292672,0.88730693855219678,0.88597158912096474,0.8846288528028553,0.88327874079308233,0.88192126434835505,0.88055643478678458,0.87918426348778966,0.87780476189200141,0.87641794150116814,0.87502381387805928,0.8736223906463696,0.87221368349062123,0.87079770415606716,0.8693744644485929,0.86794397623461828,0.86650625144099813,0.86506130205492326,0.86360914012382006,0.8621497777552507,0.86068322711681144,0.85920950043603173,0.85772861000027201,0.85624056815662153,0.85474538731179484,0.85324307993202886,0.851733658542979,0.85021713572961422,0.84869352413611243,0.8471628364657553,0.84562508548082183,0.84408028400248214,0.8425284449106909,0.84096958114407949,0.83940370569984823,0.83783083163365824,0.83625097205952248,0.83466414014969603,0.83307034913456679,0.83146961230254524,0.82986194299995297,0.82824735463091204,0.82662586065723287,0.82499747459830231,0.82336221003097054,0.82172008058943824,0.82007109996514271,0.81841528190664348,0.81675264021950833,0.81508318876619767,0.81340694146594905,0.81172391229466123,0.81003411528477742,0.80833756452516847,0.80663427416101563,0.80492425839369219,0.80320753148064494,0.80148410773527612,0.79975400152682319,0.79801722728023949,0.79627379947607402,0.79452373265035037,0.79276704139444554,0.79100374035496901,0.78923384423363974,0.78745736778716358,0.78567432582711128,0.78388473321979368,0.78208860488613863,0.78028595580156657,0.77847680099586491,0.77666115555306348,0.77483903461130865,0.77301045336273699,0.77117542705334829,0.76933397098287892,0.76748610050467425,0.76563183102556032,0.76377117800571548,0.76190415695854186,0.76003078345053554,0.7581510731011567,0.75626504158270025,0.75437270462016393,0.75247407799111821,0.75056917752557417,0.74865801910585195,0.74674061866644759,0.74481699219390118,0.74288715572666286,0.74095112535495911,0.73900891722065909,0.73706054751713967,0.7351060324891503,0.73314538843267785,0.73117863169481079,0.7292057786736027,0.72722684581793529,0.72524184962738203,0.72325080665206987,0.72125373349254152,0.71925064679961714,0.71724156327425515,0.71522649966741347,0.71320547277990953,0.71117849946228018,0.70914559661464149,0.70710678118654757,0.70506207017684908,0.70301148063355234,0.70095502965367606,0.69889273438310939,0.69682461201646906,0.69475067979695593,0.69267095501621112,0.69058545501417146,0.6884941971789259,0.68639719894656981,0.68429447780105956,0.68218605127406717,0.6800719369448337,0.67795215244002305,0.67582671543357498,0.67369564364655721,0.67155895484701833,0.66941666684983958,0.66726879751658563,0.66511536475535671,0.66295638652063826,0.66079188081315221,0.65862186567970593,0.65644635921304251,0.65426537955168984,0.65207894487980855,0.64988707342704177,0.64768978346836192,0.64548709332391885,0.64327902135888737,0.64106558598331354,0.63884680565196128,0.63662269886415923,0.63439328416364549,0.63215858013841364,0.62991860542055755,0.62767337868611628,0.62542291865491761,0.62316724409042334,0.62090637379957125,0.6186403266326197,0.61636912148298906,0.61409277728710587,0.61181131302424341,0.60952474771636411,0.60723310042796141,0.60493639026589985,0.60263463637925641,0.60032785795916066,0.5980160742386349,0.59569930449243336,0.59337756803688224,0.59105088422971797,0.58871927246992606,0.58638275219757963,0.58404134289367671,0.58169506407997829,0.57934393531884576,0.57698797621307707,0.57462720640574383,0.57226164558002757,0.56989131345905519,0.56751622980573502,0.56513641442259188,0.56275188715160163,0.56036266787402622,0.55796877651024779,0.55557023301960229,0.55316705740021332,0.55075926968882571,0.54834688996063785,0.54592993832913439,0.54350843494591927,0.54108240000054664,0.53865185372035329,0.53621681637028984,0.53377730825275138,0.53133334970740909,0.52888496111103966,0.52643216287735584,0.52397497545683624,0.52151341933655504,0.51904751504001034,0.51657728312695472,0.51410274419322166,0.51162391887055558,0.50914082782643866,0.50665349176391938,0.50416193142143917,0.50166616757266058,0.49916622102629266,0.49666211262591831,0.49415386324982047,0.49164149381080791,0.4891250252560409,0.48660447856685624,0.48407987475859332,0.48155123488041762,0.47901858001514591,0.47648193127907051,0.47394130982178295,0.47139673682599759,0.46884823350737587,0.46629582111434803,0.46373952092793691,0.46117935426158024,0.45861534246095303,0.45604750690378915,0.45347586899970427,0.45090045019001579,0.4483212719475651,0.44573835577653831,0.44315172321228696,0.44056139582114806,0.43796739520026534,0.43536974297740805,0.43276846081079101,0.43016357038889436,0.4275550934302822,0.42494305168342178,0.42232746692650275,0.41970836096725428,0.41708575564276434,0.41445967281929708,0.41183013439211075,0.40919716228527486,0.4065607784514883,0.40392100487189497,0.40127786355590117,0.3986313765409924,0.39598156589254901,0.39332845370366276,0.39067206209495192,0.38801241321437813,0.38534952923706006,0.38268343236508984,0.38001414482734713,0.37734168887931446,0.37466608680289093,0.37198736090620743,0.36930553352343959,0.36662062701462206,0.36393266376546213,0.36124166618715303,0.35854765671618682,0.35585065781416819,0.35315069196762577,0.35044778168782587,0.34774194951058418,0.34503321799607806,0.34232160972865827,0.33960714731666136,0.33688985339222005,0.33416975061107534,0.33144686165238735,0.32872120921854625,0.32599281603498281,0.32326170484997974,0.32052789843448082,0.31779141958190166,0.31505229110793975,0.31231053585038404,0.30956617666892439,0.30681923644496178,0.30406973808141635,0.30131770450253714,0.2985631586537108,0.2958061235012705,0.29304662203230403,0.29028467725446233,0.28752031219576818,0.28475354990442325,0.28198441344861647,0.27921292591633173,0.27643911041515529,0.27366299007208278,0.27088458803332749,0.26810392746412581,0.26532103154854525,0.26253592348929067,0.25974862650751096,0.2569591638426052,0.25416755875202962,0.25137383451110268,0.2485780144128116,0.24578012176761813,0.24298017990326398,0.24017821216457641,0.23737424191327414,0.23456829252777145,0.23176038740298413,0.22895054995013414,0.22613880359655442,0.22332517178549338,0.22050967797592028,0.21769234564232839,0.21487319827454007,0.21205225937751071,0.20922955247113284,0.20640510109003962,0.20357892878340977,0.20075105911476968,0.19792151566179789,0.19509032201612833,0.19225750178315359,0.18942307858182816,0.18658707604447117,0.18374951781657031,0.18091042755658338,0.17806982893574189,0.17522774563785343,0.17238420135910429,0.16953921980786166,0.16669282470447674,0.16384503978108575,0.16099588878141294,0.15814539546057232,0.15529358358486969,0.1524404769316042,0.14958609928887104,0.14673047445536175,0.14387362624016667,0.1410155784625762,0.1381563549518823,0.13529597954717945,0.13243447609716683,0.1295718684599482,0.12670818050283383,0.12384343610214124,0.12097765914299619,0.11811087351913326,0.1152431031326976,0.11237437189404423,0.10950470372153961,0.10663412254136198,0.1037626522873019,0.10089031690056247,0.098017140329560548,0.095143146529725844,0.092268359463302016,0.089392803099146642,0.086516501412531449,0.083639478384942331,0.080761758003879247,0.077883364262657087,0.075004321160204265,0.072124652700863559,0.069244382894191728,0.06636353575475934,0.063482135301950279,0.06060020555976247,0.05771777055660611,0.054834854325104342,0.051951480901892583,0.049067674327418126,0.046183458645739521,0.043298857904326929,0.040413896153860339,0.037528597448029909,0.034642985843335208,0.031757085398884624,0.028870920176194564,0.025984514238989717,0.023097891653001093,0.020211076485766252,0.01732409280642842,0.014436964685535819,0.011549716194840744,0.0086623714070997518,0.0057749543958716164,0.0028874892353175129,6.123233995736766e-17,0.99999730826546718,0.99998923307635978,0.99997577447615016,0.99995693253729245,0.99993270736122153,0.99990309907835284,0.99986810784808178,0.99982773385878243,0.99978197732780705,0.99973083850148436,0.99967431765511883,0.99961241509298848,0.99954513114834409,0.99947246618340646,0.99939442058936523,0.99931099478637653,0.99922218922356054,0.99912800437899929,0.99902844075973396,0.99892349890176213,0.99881317937003511,0.99869748275845482,0.99857640968987016,0.9984499608160744,0.99831813681780102,0.99818093840472055,0.99803836631543641,0.99789042131748096,0.99773710420731154,0.99757841581030615,0.99741435698075875,0.99724492860187497,0.99707013158576729,0.99688996687345011,0.99670443543483445,0.99651353826872324,0.99631727640280521,0.99611565089365028,0.99590866282670309,0.9956963133162775,0.9954786035055504,0.99525553456655602,0.99502710770017888,0.99479332413614818,0.99455418513303029,0.99430969197822272,0.99405984598794694,0.99380464850724093,0.99354410090995238,0.99327820459873151,0.99300696100502261,0.99273037158905719,0.99244843783984604,0.99216116127517062,0.99186854344157538,0.99157058591435943,0.99126729029756799,0.99095865822398344,0.99064469135511724,0.99032539138120013,0.99000076002117365,0.98967079902268074,0.98933551016205623,0.98899489524431738,0.98864895610315395,0.98829769460091865,0.98794111262861695,0.98757921210589683,0.98721199498103862,0.98683946323094418,0.98646161886112693,0.98607846390570009,0.98569000042736665,0.98529623051740767,0.98489715629567132,0.98449277991056128,0.98408310353902539,0.98366812938654369,0.9832478596871167,0.98282229670325327,0.98239144272595857,0.98195530007472176,0.98151387109750321,0.98106715817072221,0.98061516369924406,0.98015789011636689,0.97969533988380897,0.97922751549169507,0.97875441945854336,0.97827605433125175,0.97779242268508415,0.97730352712365653,0.97680937027892289,0.97630995481116145,0.97580528340896,0.97529535878920126,0.97478018369704866,0.97425976090593147,0.97373409321752968,0.97320318346175894,0.97266703449675551,0.9721256492088608,0.97157903051260586,0.97102718135069532,0.9704701046939922,0.96990780354150152,0.96934028092035396,0.96876753988579012,0.96818958352114359,0.96760641493782451,0.96701803727530311,0.9664244537010922,0.9658256674107305,0.96522168162776567,0.96461249960373641,0.96399812461815537,0.96337855997849109,0.96275380902015084,0.96212387510646191,0.96148876162865415,0.96084847200584134,0.96020300968500283,0.95955237814096506,0.95889658087638274,0.95823562142172025,0.95756950333523227,0.95689823020294507,0.95622180563863657,0.95554023328381776,0.95485351680771213,0.95416165990723656,0.95346466630698146,0.95276253975919023,0.95205528404373929,0.95134290296811819,0.95062540036740806,0.94990278010426221,0.94917504606888436,0.94844220217900832,0.94770425237987621,0.94696120064421829,0.94621305097223041,0.94545980739155311,0.94470147395725013,0.94393805475178583,0.94316955388500412,0.94239597549410536,0.94161732374362517,0.94083360282541095,0.94004481695860009,0.93925097038959693,0.93845206739204989,0.93764811226682854,0.93683910934200043,0.93602506297280774,0.93520597754164414,0.93438185745803037,0.93355270715859162,0.93271853110703284,0.93187933379411503,0.93103511973763087,0.93018589348238068,0.92933165960014774,0.92847242268967367,0.92760818737663386,0.92673895831361242,0.92586474018007703,0.92498553768235392,0.92410135555360273,0.92321219855379044,0.92231807146966638,0.92141897911473591,0.92051492632923493,0.91960591798010383,0.91869195896096068,0.91777305419207567,0.91684920862034436,0.91592042721926059,0.91498671498889039,0.91404807695584467,0.91310451817325222,0.91215604372073267,0.91120265870436867,0.9102443682566792,0.9092811775365911,0.90831309172941188,0.90734011604680143,0.90636225572674434,0.9053795160335214,0.90439190225768129,0.90339941971601234,0.90240207375151349,0.90139986973336583,0.90039281305690388,0.89938090914358593,0.89836416344096548,0.89734258142266154,0.89631616858832941,0.89528493046363067,0.89424887260020391,0.89320800057563465,0.89216231999342521,0.89111183648296455,0.89005655569949838,0.88899648332409797,0.88793162506363021,0.88686198665072657,0.8857875738437524,0.88470839242677579,0.88362444820953656,0.88253574702741477,0.88144229474139968,0.88034409723805784,0.8792411604295014,0.87813349025335663,0.87702109267273176,0.87590397367618467,0.87478213927769077,0.87365559551661109,0.87252434845765892,0.87138840419086805,0.87024776883155897,0.86910244852030716,0.86795244942290894,0.86679777773034883,0.86563843965876619,0.86447444144942176,0.86330578936866387,0.8621324897078948,0.86095454878353694,0.85977197293699881,0.85858476853464116,0.85739294196774185,0.85619649965246236,0.85499544802981309,0.85378979356561813,0.85257954275048098,0.85136470209974957,0.85014527815348095,0.84892127747640611,0.84769270665789487,0.84645957231192026,0.84522188107702301,0.84397963961627531,0.8427328546172459,0.84148153279196314,0.84022568087687921,0.83896530563283434,0.83770041384501948,0.83643101232294059,0.83515710790038133,0.83387870743536674,0.83259581781012637,0.83130844593105668,0.83001659872868438,0.82872028315762902,0.82741950619656524,0.82611427484818567,0.82480459613916279,0.82349047712011147,0.82217192486555091,0.82084894647386608,0.81952154906727059,0.81818973979176712,0.81685352581710979,0.81551291433676498,0.81416791256787346,0.81281852775121044,0.81146476715114735,0.81010663805561245,0.80874414777605186,0.8073773036473898,0.80600611302798919,0.80463058329961268,0.80325072186738167,0.80186653615973758,0.80047803362840142,0.79908522174833363,0.79768810801769374,0.79628669995780044,0.79488100511309057,0.79347103105107897,0.79205678536231716,0.79063827566035327,0.7892155095816904,0.78778849478574553,0.78635723895480891,0.78492174979400187,0.78348203503123592,0.78203810241717098,0.78058995972517364,0.77913761475127519,0.77768107531413,0.77622034925497296,0.7747554444375776,0.77328636874821377,0.77181313009560504,0.77033573641088604,0.76885419564755997,0.76736851578145582,0.76587870481068487,0.76438477075559885,0.76288672165874516,0.76138456558482492,0.75987831062064892,0.75836796487509406,0.75685353647906006,0.7553350335854252,0.75381246436900307,0.75228583702649754,0.75075515977646012,0.74922044085924422,0.74768168853696171,0.746138911093438,0.74459211683416793,0.74304131408627039,0.741486511198444,0.73992771654092204,0.73836493850542739,0.73679818550512732,0.73522746597458788,0.73365278836972925,0.73207416116777957,0.73049159286722964,0.72890509198778686,0.72731466707032966,0.72572032667686137,0.72412207939046414,0.72251993381525281,0.72091389857632859,0.71930398231973247,0.71769019371239884,0.71607254144210863,0.71445103421744294,0.71282568076773567,0.71119648984302686,0.70956347021401556,0.70792663067201222,0.70628598002889198,0.70464152711704686,0.7029932807893382,0.70134124991904923,0.69968544339983674,0.69802587014568418,0.69636253909085277,0.69469545918983377,0.69302463941730019,0.6913500887680587,0.6896718162570008,0.68798983091905486,0.68630414180913668,0.68461475800210148,0.68292168859269475,0.68122494269550327,0.67952452944490627,0.67782045799502555,0.67611273751967738,0.67440137721232174,0.67268638628601429,0.67096777397335539,0.66924554952644144,0.66751972221681433,0.66579030133541184,0.66405729619251819,0.66232071611771259,0.66058057045982044,0.65883686858686186,0.65708961988600201,0.65533883376350011,0.65358451964465936,0.65182668697377522,0.65006534521408588,0.64830050384771987,0.6465321723756462,0.64476036031762274,0.64298507721214471,0.64120633261639404,0.63942413610618698,0.63763849727592348,0.63584942573853487,0.6340569311254326,0.6322610230864556,0.63046171128981965,0.62865900542206388,0.62685291518799968,0.62504345031065789,0.62323062053123668,0.6214144356090493,0.61959490532147077,0.61777203946388637,0.61594584784963791,0.61411634030997153,0.61228352669398445,0.61044741686857207,0.60860802071837483,0.60676534814572503,0.60491940907059349,0.60307021343053591,0.60121777118064013,0.59936209229347148,0.59750318675901992,0.59564106458464594,0.59377573579502652,0.59190721043210159,0.59003549855501969,0.58816061024008359,0.58628255558069686,0.58440134468730853,0.58251698768735904,0.58062949472522629,0.57873887596217011,0.5768451415762782,0.57494830176241096,0.57304836673214699,0.57114534671372752,0.5692392519520022,0.56733009270837298,0.56541787926073983,0.56350262190344458,0.56158433094721594,0.55966301671911389,0.5577386895624743,0.5558113598368527,0.55388103791796917,0.55194773419765208,0.55001145908378202,0.54807222300023639,0.54613003638683255,0.54418490969927202,0.54223685340908423,0.54028587800356986,0.53833199398574472,0.53637521187428316,0.53441554220346066,0.53245299552309866,0.53048758239850635,0.5285193134104248,0.52654819915496875,0.52457425024357096,0.5225974773029245,0.52061789097492539,0.51863550191661512,0.51665032080012385,0.5146623583126132,0.51267162515621711,0.51067813204798618,0.50868188971982897,0.50668290891845447,0.5046812004053135,0.50267677495654228,0.50066964336290298,0.4986598164297269,0.49664730497685461,0.49463211983857946,0.49261427186358858,0.49059377191490366,0.48857063086982389,0.48654485961986649,0.48451646907070856,0.48248547014212739,0.48045187376794318,0.47841569089595903,0.47637693248790269,0.47433560951936654,0.47229173297974991,0.47024531387219903,0.46819636321354752,0.46614489203425802,0.46409091137836223,0.46203443230340163,0.45997546588036731,0.4579140231936415,0.45585011534093717,0.45378375343323851,0.45171494859474071,0.44964371196279063,0.44757005468782668,0.4454939879333189,0.44341552287570796,0.44133467070434645,0.43925144262143784,0.43716584984197571,0.43507790359368442,0.43298761511695805,0.43089499566480016,0.42880005650276237,0.42670280890888507,0.42460326417363586,0.4225014335998491,0.42039732850266415,0.41829096020946599,0.4161823400598233,0.4140714794054271,0.41195838961003062,0.40984308204938735,0.40772556811119037,0.40560585919501002,0.40348396671223391,0.40135990208600453,0.39923367675115834,0.39710530215416323,0.39497478975305822,0.39284215101739112,0.39070739742815613,0.38857054047773343,0.38643159166982632,0.38429056251939969,0.38214746455261733,0.38000230930678108,0.37785510833026786,0.3757058731824679,0.3735546154337217,0.37140134666525904,0.36924607846913587,0.36708882244817154,0.36492959021588722,0.36276839339644285,0.36060524362457491,0.35844015254553285,0.35627313181501769,0.3541041930991185,0.35193334807425003,0.34976060842708884,0.34758598585451189,0.34540949206353261,0.34323113877123768,0.34105093770472489,0.33886890060103914,0.33668503920710996,0.33449936527968716,0.33231189058527894,0.33012262690008765,0.32793158600994676,0.32573877971025683,0.32354421980592285,0.32134791811129043,0.31914988645008135,0.31695013665533134,0.31474868056932531,0.31254553004353419,0.31034069693855032,0.30813419312402474,0.3059260304786024,0.30371622088985883,0.30150477625423522,0.29929170847697556,0.29707702947206188,0.29486075116214977,0.29264288547850514,0.29042344436093931,0.28820243975774507,0.28597988362563154,0.28375578792966111,0.28153016464318426,0.27930302574777521,0.27707438323316691,0.27484424909718763,0.27261263534569552,0.27037955399251434,0.26814501705936811,0.26590903657581744,0.2636716245791943,0.2614327931145366,0.25919255423452442,0.25695091999941455,0.25470790247697567,0.25246351374242287,0.25021776587835365,0.24797067097468214,0.24572224112857452,0.24347248844438285,0.24122142503358132,0.23896906301470042,0.23671541451326092,0.23446049166171007,0.23220430659935523,0.22994687147229917,0.22768819843337362,0.2254282996420752,0.22316718726449916,0.22090487347327425,0.21864137044749635,0.21637669037266419,0.21411084544061315,0.21184384784944885,0.20957570980348292,0.20730644351316638,0.20503606119502432,0.20276457507158926,0.20049199737133674,0.19821834032861849,0.19594361618359704,0.19366783718217909,0.19139101557595067,0.18911316362211067,0.18683429358340423,0.18455441772805789,0.18227354832971282,0.17999169766735906,0.17770887802526864,0.17542510169293069,0.17314038096498444,0.17085472814115352,0.16856815552617871,0.16628067542975319,0.16399230016645552,0.1617030420556827,0.15941291342158517,0.15712192659299959,0.1548300939033829,0.15253742769074502,0.15024394029758387,0.14794964407081782,0.14565455136171987,0.14335867452585019,0.14106202592299094,0.13876461791707903,0.13646646287613892,0.13416757317221747,0.13186796118131625,0.12956763928332546,0.1272666198619565,0.12496491530467642,0.12266253800264053,0.12035950035062602,0.11805581474696442,0.1157514935934761,0.11344654929540275,0.11114099426134089,0.10883484090317427,0.10652810163600843,0.10422078887810302,0.10191291505080448,0.099604492578480378,0.097295533888451705,0.094986051410926337,0.092676057578931326,0.09036556482824723,0.088054585597340279,0.085743132327295912,0.083431217461750848,0.081118853446827496,0.078806052731066181,0.07649282776535761,0.07417919100287701,0.071865154899016348,0.069550731911317623,0.067235934499404945,0.064920775124918798,0.06260526625144805,0.060289420344463315,0.057973249871248959,0.055656767300837288,0.053339985103940793,0.051022915752884312,0.048705571721539234,0.046387965485255485,0.044070109520794744,0.04175201630626247,0.039433698321041981,0.03711516804572644,0.03479643796205209,0.032477520552830159,0.030158428301881,0.027839173693966237,0.025519769214720864,0.023200227350587358,0.020880560588747599,0.018560781417056062,0.016240902323971712,0.013920935798492105,0.011600894330085262,0.0092807904086228826,0.0069606365243122118,0.0046404451676301372,0.002320228829255274,6.123233995736766e-17,0.9999985296568431,0.9999941186316964,0.9999867669375313,0.99997647459596672,0.99996324163726935,0.99994706810035305,0.99992795403277923,0.99990589949075626,0.99988090453913969,0.99985296925143186,0.9998220937097817,0.99978827800498438,0.99975152223648123,0.99971182651235968,0.99966919094935225,0.99962361567283686,0.99957510081683587,0.99952364652401648,0.99946925294568956,0.99941192024180958,0.99935164858097392,0.99928843814042279,0.99922228910603816,0.99915320167234367,0.99908117604250368,0.9990062124283231,0.99892831105024626,0.99884747213735681,0.99876369592737657,0.99867698266666516,0.99858733261021893,0.99849474602167076,0.99839922317328866,0.99830076434597537,0.99819936982926738,0.99809503992133419,0.99798777492897739,0.99787757516762965,0.99776444096135386,0.99764837264284223,0.99752937055341528,0.99740743504302087,0.99728256647023306,0.9971547652022511,0.99702403161489861,0.99689036609262183,0.99675376902848922,0.99661424082418992,0.99647178189003272,0.99632639264494438,0.99617807351646936,0.99602682494076744,0.99587264736261338,0.99571554123539507,0.99555550702111228,0.99539254519037557,0.99522665622240436,0.99505784060502622,0.99488609883467494,0.99471143141638907,0.99453383886381075,0.99435332169918411,0.99416988045335319,0.99398351566576149,0.99379422788444916,0.99360201766605238,0.99340688557580092,0.9932088321875171,0.9930078580836138,0.99280396385509295,0.99259715010154337,0.99238741743113945,0.99217476646063918,0.99195919781538244,0.99174071212928905,0.99151931004485661,0.99129499221315942,0.99106775929384583,0.99083761195513653,0.99060455087382271,0.99036857673526379,0.99012969023338582,0.98988789207067895,0.98964318295819587,0.98939556361554915,0.98914503477090965,0.98889159716100417,0.98863525153111331,0.98837599863506886,0.98811383923525253,0.98784877410259286,0.98758080401656312,0.98730992976517939,0.98703615214499785,0.98675947196111247,0.98647989002715308,0.98619740716528237,0.98591202420619373,0.98562374198910907,0.98533256136177594,0.98503848318046505,0.98474150830996832,0.9844416376235956,0.9841388720031724,0.98383321233903753,0.98352465953004031,0.98321321448353749,0.98289887811539156,0.98258165134996689,0.98226153512012804,0.98193853036723644,0.98161263804114762,0.98128385910020888,0.98095219451125582,0.98061764524960993,0.98028021229907569,0.97993989665193759,0.97959669930895721,0.97925062127937013,0.97890166358088349,0.97854982723967221,0.97819511329037678,0.97783752277609959,0.97747705674840213,0.97711371626730192,0.9767475024012694,0.97637841622722465,0.97600645883053427,0.97563163130500841,0.97525393475289712,0.97487337028488752,0.97448993902010039,0.97410364208608669,0.9737144806188246,0.97332245576271603,0.97292756867058283,0.97252982050366432,0.97212921243161299,0.97172574563249159,0.97131942129276927,0.97091024060731856,0.97049820477941151,0.9700833150207161,0.96966557255129315,0.96924497859959213,0.968821534402448,0.96839524120507714,0.96796610026107432,0.96753411283240831,0.9670992801894186,0.96666160361081166,0.96622108438365717,0.96577772380338367,0.9653315231737758,0.9648824838069695,0.96443060702344885,0.96397589415204155,0.96351834652991564,0.96305796550257505,0.96259475242385606,0.96212870865592293,0.96165983556926427,0.96118813454268881,0.96071360696332109,0.96023625422659808,0.95975607773626437,0.9592730789043683,0.95878725915125818,0.95829861990557719,0.95780716260426024,0.95731288869252906,0.95681579962388819,0.95631589686012064,0.95581318187128361,0.95530765613570434,0.95479932113997512,0.95428817837895008,0.95377422935573941,0.95325747558170626,0.95273791857646117,0.95221555986785844,0.95169040099199109,0.95116244349318668,0.95063168892400252,0.95009813884522154,0.94956179482584691,0.94902265844309819,0.94848073128240651,0.94793601493740942,0.94738851100994703,0.94683822111005655,0.94628514685596798,0.94572928987409932,0.94517065179905135,0.94460923427360355,0.94404503894870873,0.94347806748348839,0.94290832154522763,0.94233580280937079,0.94176051295951568,0.94118245368740927,0.94060162669294278,0.94001803368414594,0.93943167637718283,0.93884255649634629,0.93825067577405319,0.93765603595083913,0.93705863877535311,0.93645848600435289,0.93585557940269959,0.93524992074335234,0.93464151180736332,0.93403035438387227,0.93341645027010156,0.93279980127135054,0.93218040920099055,0.93155827588045925,0.93093340313925577,0.93030579281493464,0.9296754467531011,0.92904236680740515,0.92840655483953616,0.92776801271921794,0.92712674232420234,0.92648274554026455,0.92583602426119715,0.92518658038880441,0.92453441583289719,0.92387953251128674,0.92322193234977956,0.92256161728217145,0.92189858925024182,0.92123285020374812,0.92056440210042023,0.9198932469059542,0.91921938659400682,0.91854282314619007,0.91786355855206481,0.91718159480913497,0.91649693392284226,0.91580957790655926,0.91511952878158465,0.91442678857713644,0.9137313593303461,0.913033243086253,0.91233244189779805,0.91162895782581765,0.91092279293903777,0.91021394931406796,0.9095024290353948,0.90878823419537624,0.90807136689423551,0.9073518292400542,0.90662962334876696,0.90590475134415471,0.90517721535783879,0.90444701752927414,0.90371416000574356,0.90297864494235125,0.90224047450201605,0.90149965085546602,0.90075617618123072,0.90001005266563627,0.8992612825027978,0.8985098678946134,0.89775581105075775,0.89699911418867551,0.89623977953357481,0.89547780931842069,0.89471320578392843,0.89394597117855734,0.89317610775850353,0.89240361778769395,0.89162850353777923,0.89085076728812729,0.89007041132581644,0.88928743794562881,0.8885018494500434,0.88771364814922971,0.88692283636104041,0.88612941641100496,0.88533339063232241,0.88453476136585507,0.88373353096012097,0.88292970177128738,0.88212327616316399,0.8813142565071953,0.88050264518245436,0.87968844457563566,0.87887165708104775,0.87805228510060629,0.8772303310438273,0.87640579732781987,0.87557868637727909,0.87474900062447858,0.87391674250926421,0.87308191447904571,0.87224451898879063,0.87140455850101639,0.87056203548578315,0.86971695242068703,0.86886931179085214,0.86801911608892368,0.86716636781506051,0.86631106947692782,0.86545322358968968,0.86459283267600184,0.86372989926600408,0.86286442589731271,0.86199641511501368,0.86112586947165415,0.86025279152723599,0.85937718384920747,0.85849904901245599,0.85761838959930092,0.85673520819948512,0.85584950741016808,0.85496128983591801,0.85407055808870425,0.85317731478788938,0.85228156256022169,0.85138330403982765,0.85048254186820371,0.84957927869420891,0.84867351717405681,0.84776525997130792,0.84685450975686194,0.8459412692089493,0.8450255410131241,0.84410732786225584,0.84318663245652126,0.8422634575033966,0.84133780571765004,0.84040967982133297,0.83947908254377268,0.83854601662156358,0.83761048479856004,0.83667248982586773,0.83573203446183542,0.83478912147204754,0.83384375362931529,0.83289593371366899,0.83194566451234975,0.83099294881980112,0.83003778943766116,0.82908018917475379,0.82812015084708135,0.82715767727781508,0.82619277129728808,0.82522543574298601,0.82425567345953943,0.82328348729871481,0.82230888011940684,0.8213318547876296,0.82035241417650784,0.81937056116626938,0.81838629864423584,0.81739962950481448,0.81641055664948992,0.81541908298681509,0.81442521143240298,0.81342894490891804,0.81243028634606773,0.81142923868059347,0.81042580485626248,0.80941998782385893,0.80841179054117518,0.80740121597300307,0.80638826709112565,0.80537294687430749,0.80435525830828714,0.80333520438576733,0.80231278810640672,0.80128801247681081,0.80026088051052335,0.79923139522801712,0.79819955965668543,0.79716537683083311,0.79612884979166743,0.79508998158728916,0.79404877527268392,0.79300523390971289,0.7919593605671037,0.79091115832044201,0.78986063025216158,0.78880777945153613,0.78775260901466948,0.78669512204448699,0.78563532165072603,0.78457321094992716,0.78350879306542476,0.78244207112733788,0.78137304827256127,0.78030172764475558,0.77922811239433898,0.77815220567847698,0.77707401066107373,0.77599353051276265,0.7749107684108969,0.77382572753954015,0.77273841108945729,0.77164882225810483,0.77055696424962172,0.76946284027482004,0.76836645355117494,0.76726780730281607,0.7661669047605173,0.76506374916168773,0.76395834375036198,0.76285069177719045,0.76174079649943016,0.76062866118093508,0.75951428909214636,0.75839768351008252,0.75727884771833054,0.75615778500703545,0.75503449867289085,0.75390899201912975,0.75278126835551407,0.75165133099832526,0.75051918327035483,0.74938482850089383,0.74824827002572414,0.74710951118710744,0.74596855533377637,0.74482540582092427,0.7436800660101951,0.74253253926967411,0.74138282897387742,0.74023093850374222,0.73907687124661736,0.73792063059625235,0.73676221995278846,0.73560164272274786,0.7344389023190242,0.73327400216087224,0.73210694567389789,0.73093773629004832,0.72976637744760153,0.72859287259115635,0.72741722517162233,0.7262394386462101,0.72505951647842004,0.72387746213803339,0.72269327910110104,0.72150697084993376,0.72031854087309211,0.71912799266537586,0.7179353297278136,0.71674055556765337,0.7155436736983507,0.71434468763956005,0.71314360091712325,0.71194041706305944,0.71073513961555512,0.7095277721189529,0.70831831812374213,0.70710678118654757,0.70589316487011922,0.70467747274332193,0.70345970838112504,0.70223987536459154,0.70101797728086757,0.69979401772317207,0.69856800029078636,0.69733992858904303,0.69610980622931562,0.69487763682900827,0.69364342401154466,0.69240717140635744,0.69116888264887777,0.68992856138052439,0.68868621124869311,0.68744183590674612,0.68619543901400071,0.68494702423571929,0.68369659524309812,0.68244415571325667,0.68118970932922651,0.67993325977994123,0.67867481076022462,0.67741436597078064,0.67615192911818189,0.67488750391485919,0.67362109407909054,0.67235270333498987,0.67108233541249651,0.66980999404736408,0.66853568298114929,0.66725940596120148,0.66598116674065078,0.66470096907839793,0.66341881673910263,0.66213471349317277,0.66084866311675294,0.6595606693917142,0.65827073610564191,0.65697886705182518,0.65568506602924581,0.65438933684256662,0.65309168330212075,0.65179210922390018,0.6504906184295447,0.64918721474633045,0.64788190200715878,0.64657468405054486,0.64526556472060692,0.64395454786705408,0.64264163734517565,0.64132683701582971,0.64001015074543155,0.63869158240594248,0.63737113587485827,0.63604881503519817,0.63472462377549277,0.6333985659897734,0.63207064557755976,0.63074086644384952,0.62940923249910574,0.62807574765924623,0.62674041584563167,0.62540324098505407,0.62406422700972508,0.62272337785726484,0.62138069747069025,0.62003618979840291,0.61868985879417826,0.61734170841715341,0.61599174263181578,0.61463996540799126,0.61328638072083252,0.61193099255080785,0.61057380488368829,0.6092148217105372,0.60785404702769785,0.60649148483678172,0.60512713914465677,0.60376101396343562,0.60239311331046397,0.60102344120830864,0.59965200168474542,0.59827879877274792,0.59690383651047518,0.59552711894125976,0.59414865011359619,0.592768434081129,0.59138647490264051,0.59000277664203915,0.58861734336834748,0.5872301791556902,0.58584128808328206,0.58445067423541608,0.58305834170145132,0.58166429457580104,0.58026853695792058,0.57887107295229523,0.57747190666842829,0.57607104222082872,0.5746684837289997,0.57326423531742565,0.57185830111556069,0.57045068525781628,0.56904139188354907,0.56763042513704876,0.56621778916752619,0.56480348812910031,0.56338752618078691,0.56196990748648612,0.56055063621496959,0.55912971653986909,0.55770715263966353,0.55628294869766726,0.55485710890201712,0.55342963744566076,0.55200053852634401,0.55056981634659841,0.54913747511372923,0.54770351903980252,0.5462679523416335,0.5448307792407735,0.54339200396349763,0.54195163074079267,0.54050966380834464,0.53906610740652561,0.53762096578038254,0.53617424317962337,0.53472594385860561,0.53327607207632322,0.53182463209639408,0.53037162818704819,0.52891706462111432,0.52746094567600721,0.52600327563371607,0.52454405878079147,0.5230832994083322,0.52162100181197346,0.52015717029187369,0.51869180915270241,0.51722492270362685,0.51575651525830002,0.51428659113484754,0.51281515465585514,0.51134221014835612,0.50986776194381811,0.50839181437813064,0.50691437179159271,0.50543543852889949,0.50395501893912964,0.50247311737573286,0.50098973819651693,0.49950488576363455,0.49801856444357095,0.49653077860713096,0.49504153262942596,0.49355083088986129,0.49205867777212309,0.49056507766416563,0.48907003495819834,0.48757355405067276,0.48607563934226994,0.48457629523788703,0.4830755261466248,0.48157333648177436,0.48006973066080427,0.47856471310534759,0.4770582882411889,0.47555046049825117,0.47404123431058276,0.47253061411634445,0.47101860435779647,0.46950520948128516,0.46799043393723005,0.466474282180111,0.46495675866845465,0.46343786786482161,0.46191761423579325,0.4603960022519587,0.45887303638790145,0.45734872112218639,0.45582306093734654,0.45429606031986991,0.45276772376018631,0.45123805575265419,0.44970706079554734,0.44817474339104157,0.44664110804520185,0.44510615926796854,0.44356990157314452,0.44203233947838177,0.4404934775051681,0.43895332017881389,0.43741187202843868,0.43586913758695794,0.43432512139106977,0.43277982798124137,0.43123326190169603,0.42968542770039941,0.42813632992904638,0.42658597314304747,0.42503436190151578,0.42348150076725322,0.4219273943067372,0.42037204709010739,0.41881546369115202,0.41725764868729465,0.41569860665958047,0.4141383421926631,0.41257685987479087,0.41101416429779347,0.40945026005706858,0.40788515175156759,0.40631884398378326,0.40475134135973545,0.40318264848895768,0.40161276998448359,0.40004171046283338,0.39846947454400033,0.39689606685143702,0.39532149201204203,0.39374575465614592,0.39216885941749802,0.3905908109332526,0.38901161384395522,0.38743127279352912,0.38584979242926165,0.38426717740179039,0.38268343236508984,0.3810985619764572,0.37951257089649915,0.37792546378911807,0.37633724532149798,0.37474792016409125,0.37315749299060463,0.37156596847798551,0.36997335130640824,0.36837964615926039,0.3667848577231288,0.36518899068778604,0.36359204974617648,0.36199403959440246,0.36039496493171053,0.35879483046047772,0.35719364088619759,0.35559140091746633,0.35398811526596918,0.35238378864646619,0.35077842577677881,0.34917203137777558,0.3475646101733586,0.34595616689044933,0.34434670625897495,0.3427362330118543,0.34112475188498403,0.33951226761722464,0.33789878495038655,0.3362843086292161,0.33466884340138181,0.33305239401746006,0.33143496523092153,0.32981656179811686,0.32819718847826285,0.32657685003342851,0.32495555122852093,0.32333329683127127,0.32171009161222086,0.32008594034470711,0.31846084780484935,0.31683481877153497,0.31520785802640539,0.31357997035384172,0.31195116054095096,0.31032143337755191,0.30869079365616087,0.30705924617197772,0.3054267957228719,0.30379344710936806,0.30215920513463207,0.30052407460445707,0.29888806032724891,0.29725116711401239,0.295613399778337,0.29397476313638282,0.29233526200686605,0.2906949012110453,0.28905368557270711,0.28741161991815184,0.28576870907617946,0.28412495787807546,0.28248037115759661,0.28083495375095624,0.27918871049681093,0.27754164623624578,0.27589376581275998,0.27424507407225313,0.27259557586301025,0.27094527603568835,0.26929417944330142,0.26764229094120662,0.26598961538708993,0.26433615764095164,0.26268192256509237,0.26102691502409858,0.25937113988482829,0.25771460201639679,0.25605730629016227,0.2543992575797116,0.25274046076084594,0.25108092071156646,0.24942064231205979,0.24775963044468394,0.24609788999395374,0.24443542584652661,0.24277224289118812,0.2411083460188376,0.23944374012247385,0.23777843009718061,0.2361124208401123,0.23444571725047952,0.23277832422953473,0.23111024668055774,0.22944148950884141,0.22777205762167707,0.22610195592834023,0.22443118934007611,0.22275976277008513,0.22108768113350855,0.2194149493474139,0.2177415723307807,0.21606755500448585,0.21439290229128913,0.21271761911581891,0.21104171040455746,0.20936518108582663,0.20768803608977321,0.20601028034835453,0.20433191879532397,0.20265295636621636,0.2009733979983335,0.19929324863072978,0.19761251320419737,0.19593119666125197,0.19424930394611811,0.19256684000471472,0.19088380978464045,0.18920021823515923,0.18751607030718573,0.18583137095327065,0.18414612512758635,0.1824603377859122,0.18077401388561992,0.17908715838565911,0.17739977624654271,0.17571187243033223,0.17402345190062335,0.17233451962253121,0.17064508056267583,0.16895513968916756,0.16726470197159235,0.16557377238099732,0.16388235588987593,0.16219045747215352,0.1604980821031726,0.15880523475967828,0.15711192041980354,0.15541814406305474,0.15372391067029675,0.1520292252237386,0.15033409270691875,0.14863851810468981,0.14694250640320497,0.14524606258990264,0.14354919165349195,0.14185189858393801,0.14015418837244736,0.13845606601145313,0.13675753649460057,0.1350586048167321,0.13335927597387293,0.13165955496321607,0.12995944678310789,0.12825895643303323,0.12655808891360076,0.12485684922652834,0.12315524237462823,0.12145327336179242,0.11975094719297787,0.11804826887419186,0.11634524341247721,0.1146418758158976,0.1129381710935228,0.11123413425541398,0.10952977031260894,0.10782508427710739,0.10612008116185624,0.10441476598073482,0.10270914374854012,0.10100321948097211,0.099296998194618943,0.097590484906942179,0.095883684636262109,0.094176602401742929,0.092469243223378003,0.090761612121975074,0.089053714119141578,0.087345554237269793,0.085637137499522106,0.083928468929816216,0.082219553552810423,0.080510396393888781,0.078801002479146343,0.077091376835374426,0.075381524490045732,0.073671450471299679,0.071961159807927499,0.070250657529357566,0.068539948665640504,0.066829038247434469,0.065117931305990293,0.063406632873136748,0.061695147981265727,0.059983481663317406,0.05827163895276552,0.056559624883602479,0.054847444490324644,0.053135102807917452,0.051422604871840659,0.049709955718013496,0.047997160382799907,0.046284223902993686,0.044571151315803692,0.042857947658839032,0.04114461797009427,0.039431167287934554,0.03771760065108086,0.036003923098595153,0.034290139669865542,0.032576255404591518,0.030862275342769072,0.029148204524675914,0.027434047990856643,0.025719810782107916,0.024005497939463633,0.022291114504180101,0.020576665517721235,0.018862156021743699,0.017147591058082324,0.015432975668734391,0.013718314895846127,0.012003613781697004,0.010288877368685117,0.0085741106993123713,0.0068593188161696376,0.0051445067619219405,0.0034296795792936184,0.001714842311053497,6.123233995736766e-17,0.99999875637056823,0.99999502548536601,0.99998880735367313,0.99998010199095555,0.99996890941886596,0.99995522966524297,0.99993906276411182,0.99992040875568378,0.99989926768635617,0.99987563960871217,0.9998495245815211,0.99982092266973777,0.99978983394450249,0.99975625848314087,0.99972019636916398,0.99968164769226753,0.99964061254833203,0.99959709103942251,0.99955108327378839,0.99950258936586267,0.99945160943626232,0.99939814361178758,0.99934219202542196,0.99928375481633147,0.99922283212986451,0.99915942411755154,0.99909353093710485,0.99902515275241766,0.99895428973356437,0.99888094205679967,0.99880510990455806,0.99872679346545379,0.99864599293428014,0.99856270851200901,0.99847694040579016,0.99838868882895127,0.99829795400099675,0.99820473614760752,0.99810903550064067,0.99801085229812836,0.99791018678427779,0.99780703920946989,0.99770140983025968,0.99759329890937454,0.99748270671571448,0.99736963352435082,0.99725407961652579,0.99713604527965205,0.99701553080731142,0.99689253649925458,0.99676706266140036,0.99663910960583446,0.99650867765080942,0.99637576712074327,0.99624037834621881,0.996102511663983,0.99596216741694599,0.9958193459541802,0.99567404763091971,0.99552627280855899,0.99537602185465213,0.99522329514291241,0.99506809305321053,0.99491041597157426,0.99475026429018742,0.99458763840738862,0.9944225387276705,0.99425496566167881,0.99408491962621104,0.99391240104421574,0.99373741034479135,0.99355994796318492,0.99338001434079137,0.99319760992515227,0.99301273516995447,0.99282539053502949,0.99263557648635192,0.99244329349603833,0.99224854204234636,0.99205132260967321,0.99185163568855483,0.99164948177566425,0.99144486137381038,0.99123777499193733,0.99102822314512251,0.99081620635457557,0.99060172514763711,0.99038478005777753,0.99016537162459528,0.98994350039381607,0.989719166917291,0.98949237175299554,0.98926311546502799,0.989031398623608,0.98879722180507545,0.98856058559188853,0.98832149057262297,0.98807993734196986,0.9878359265007346,0.98758945865583536,0.98734053442030145,0.98708915441327194,0.9868353192599939,0.98657902959182109,0.98632028604621236,0.98605908926672969,0.9857954399030372,0.9855293386108992,0.98526078605217826,0.9849897828948343,0.98471632981292223,0.98444042748659077,0.98416207660208022,0.98388127785172153,0.98359803193393369,0.98331233955322261,0.98302420142017943,0.98273361825147798,0.982440590769874,0.98214511970420271,0.98184720578937701,0.98154684976638595,0.98124405238229284,0.98093881439023312,0.98063113654941247,0.98032101962510565,0.98000846438865352,0.9796934716174619,0.9793760420949994,0.97905617661079536,0.97873387596043815,0.97840914094557274,0.97808197237389927,0.97775237105917068,0.97742033782119087,0.97708587348581222,0.97674897888493417,0.976409654856501,0.97606790224449913,0.97572372189895595,0.97537711467593713,0.97502808143754438,0.97467662305191383,0.97432274039321343,0.97396643434164087,0.97360770578342171,0.97324655561080664,0.97288298472206969,0.97251699402150571,0.97214858441942831,0.97177775683216749,0.97140451218206769,0.97102885139748463,0.97065077541278422,0.97027028516833913,0.96988738161052723,0.96950206569172859,0.9691143383703239,0.96872420061069109,0.96833165338320404,0.96793669766422907,0.9675393344361235,0.9671395646872325,0.9667373894118868,0.96633280961040047,0.96592582628906831,0.96551644046016305,0.96510465314193328,0.9646904653586007,0.96427387814035759,0.96385489252336398,0.96343350954974583,0.9630097302675914,0.96258355573094967,0.96215498699982704,0.96172402514018474,0.96129067122393663,0.96085492632894598,0.96041679153902315,0.95997626794392277,0.95953335663934114,0.95908805872691327,0.95864037531421031,0.95819030751473677,0.95773785644792797,0.9572830232391466,0.95682580901968073,0.95636621492674045,0.95590424210345515,0.955439891698871,0.95497316486794748,0.9545040627715552,0.95403258657647239,0.95355873745538244,0.95308251658687082,0.95260392515542203,0.95212296435141686,0.95163963537112939,0.95115393941672388,0.95066587769625188,0.95017545142364923,0.94968266181873306,0.9491875101071986,0.94868999752061645,0.9481901252964291,0.94768789467794823,0.94718330691435138,0.94667636326067894,0.94616706497783098,0.9456554133325642,0.94514140959748871,0.94462505505106487,0.94410635097759998,0.94358529866724539,0.94306189941599317,0.94253615452567274,0.94200806530394754,0.94147763306431242,0.94094485912608961,0.94040974481442563,0.9398722914602885,0.93933250040046379,0.93879037297755152,0.93824591053996309,0.93769911444191734,0.9371499860434378,0.93659852671034882,0.93604473781427278,0.93548862073262584,0.93493017684861512,0.93436940755123521,0.9338063142352645,0.93324089830126167,0.93267316115556276,0.93210310421027698,0.93153072888328337,0.93095603659822757,0.93037902878451817,0.92979970687732283,0.92921807231756526,0.92863412655192101,0.92804787103281439,0.92745930721841485,0.92686843657263263,0.92627526056511622,0.92567978067124779,0.92508199837214011,0.92448191515463229,0.92387953251128674,0.92327485194038506,0.92266787494592439,0.92205860303761356,0.92144703773086956,0.92083318054681362,0.92021703301226732,0.91959859665974941,0.9189778730274708,0.91835486365933217,0.91772957010491885,0.91710199391949798,0.91647213666401384,0.91583999990508458,0.91520558521499784,0.91456889417170728,0.91392992835882825,0.91328868936563423,0.91264517878705254,0.91199939822366061,0.91135134928168171,0.9107010335729816,0.91004845271506352,0.90939360833106508,0.90873650204975387,0.90807713550552327,0.90741551033838852,0.90675162819398269,0.90608549072355249,0.90541709958395433,0.90474645643764995,0.90407356295270247,0.90339842080277211,0.90272103166711237,0.90204139723056509,0.90135951918355728,0.90067539922209616,0.89998903904776495,0.89930044036771928,0.89860960489468222,0.89791653434694041,0.89722123044833979,0.8965236949282811,0.89582392952171586,0.89512193596914158,0.89441771601659803,0.89371127141566264,0.89300260392344577,0.89229171530258711,0.89157860732125072,0.89086328175312057,0.89014574037739658,0.88942598497879,0.88870401734751869,0.88797983927930313,0.8872534525753617,0.88652485904240597,0.88579406049263676,0.8850610587437393,0.88432585561887855,0.88358845294669519,0.88284885256130041,0.88210705630227182,0.88136306601464887,0.88061688354892786,0.87986851076105776,0.87911794951243549,0.87836520166990117,0.87761026910573348,0.87685315369764505,0.87609385732877809,0.87533238188769913,0.8745687292683948,0.8738029013702665,0.8730349000981269,0.87226472736219385,0.87149238507808613,0.87071787516681909,0.86994119955479932,0.86916236017381998,0.86838135896105662,0.867598197859061,0.86681287881575786,0.86602540378443871,0.8652357747237579,0.86444399359772717,0.8636500623757114,0.86285398303242278,0.86205575754791708,0.86125538790758727,0.86045287610216015,0.85964822412769026,0.85884143398555524,0.8580325076824511,0.85722144723038696,0.85640825464668013,0.85559293195395114,0.85477548118011837,0.85395590435839364,0.85313420352727676,0.85231038073055021,0.85148443801727469,0.85065637744178346,0.84982620106367746,0.8489939109478204,0.84815950916433325,0.84732299778858899,0.84648437890120831,0.84564365458805324,0.84480082694022285,0.84395589805404758,0.84310887003108448,0.84225974497811129,0.84140852500712204,0.84055521223532093,0.83969980878511796,0.8388423167841228,0.83798273836513992,0.83712107566616356,0.83625733083037179,0.83539150600612166,0.83452360334694364,0.83365362501153639,0.832781573163761,0.83190744997263633,0.83103125761233299,0.83015299826216837,0.82927267410660055,0.82839028733522369,0.82750584014276207,0.8266193347290649,0.82573077329910061,0.82484015806295152,0.82394749123580813,0.82305277503796404,0.82215601169481001,0.82125720343682862,0.82035635249958871,0.81945346112373973,0.81854853155500618,0.81764156604418226,0.81673256684712592,0.8158215362247534,0.81490847644303388,0.8139933897729833,0.813076278490659,0.81215714487715429,0.81123599121859236,0.81031281980612069,0.80938763293590577,0.80846043290912661,0.80753122203196992,0.80660000261562359,0.8056667769762712,0.80473154743508679,0.80379431631822817,0.80285508595683175,0.8019138586870066,0.80097063684982861,0.80002542279133448,0.79907821886251651,0.79812902741931591,0.79717785082261761,0.79622469143824393,0.79526955163694901,0.79431243379441285,0.79335334029123528,0.79239227351292996,0.79142923584991898,0.79046422969752617,0.78949725745597177,0.78852832153036589,0.78755742433070308,0.78658456827185597,0.7856097557735694,0.78463298926045455,0.78365427116198239,0.78267360391247831,0.78169098995111563,0.78070643172190946,0.77971993167371123,0.77873149226020177,0.77774111593988582,0.77674880517608558,0.77575456243693497,0.77475839019537274,0.77376029092913756,0.77276026712076029,0.77175832125755928,0.77075445583163316,0.76974867333985508,0.76874097628386651,0.76773136717007073,0.76671984850962716,0.76570642281844448,0.76469109261717461,0.76367386043120689,0.76265472879066076,0.76163370023038057,0.76061077728992865,0.75958596251357924,0.7585592584503118,0.75753066765380528,0.75650019268243118,0.75546783609924739,0.75443360047199215,0.75339748837307707,0.75235950237958127,0.75131964507324456,0.75027791904046126,0.74923432687227354,0.7481888711643655,0.74714155451705588,0.7460923795352925,0.74504134882864503,0.74398846501129889,0.74293373070204882,0.74187714852429176,0.74081872110602154,0.73975845107982086,0.73869634108285576,0.73763239375686884,0.7365666117481724,0.73549899770764215,0.73442955429071077,0.73335828415736082,0.73228518997211833,0.73121027440404651,0.73013354012673837,0.72905498981831096,0.72797462616139808,0.72689245184314377,0.72580846955519573,0.72472268199369849,0.72363509185928687,0.72254570185707878,0.72145451469666955,0.72036153309212392,0.71926675976197019,0.71817019742919275,0.71707184882122632,0.71597171666994808,0.7148698037116713,0.71376611268713896,0.71266064634151627,0.71155340742438433,0.71044439868973275,0.70933362289595348,0.70822108280583329,0.70710678118654757,0.70599072080965275,0.70487290445108008,0.70375333489112801,0.70263201491445604,0.70150894731007696,0.70038413487135076,0.6992575803959773,0.69812928668598895,0.69699925654774442,0.69586749279192106,0.69473399823350834,0.69359877569180073,0.69246182799039047,0.69132315795716071,0.69018276842427884,0.68904066222818861,0.6878968422096039,0.68675131121350108,0.68560407208911245,0.68445512768991845,0.68330448087364148,0.68215213450223788,0.68099809144189138,0.67984235456300579,0.67868492674019798,0.67752581085229058,0.67636500978230474,0.67520252641745337,0.67403836364913339,0.67287252437291889,0.67170501148855422,0.67053582789994592,0.66936497651515636,0.66819246024639589,0.66701828201001612,0.66584244472650211,0.66466495132046588,0.66348580472063801,0.66230500785986146,0.66112256367508382,0.6599384751073496,0.65875274510179382,0.6575653766076337,0.65637637257816239,0.65518573597074048,0.6539934697467894,0.65279957687178392,0.65160406031524476,0.650406923050731,0.64920816805583292,0.64800779831216448,0.64680581680535609,0.64560222652504673,0.64439703046487717,0.64319023162248168,0.64198183299948175,0.64077183760147749,0.63956024843804049,0.63834706852270673,0.63713230087296879,0.63591594851026811,0.63469801445998808,0.63347850175144582,0.63225741341788522,0.6310347524964689,0.62981052202827126,0.62858472505827034,0.62735736463534031,0.62612844381224464,0.62489796564562727,0.62366593319600594,0.62243234952776438,0.62119721770914449,0.61996054081223873,0.61872232191298271,0.61748256409114743,0.61624127043033161,0.61499844401795367,0.61375408794524478,0.61250820530724037,0.61126079920277354,0.61001187273446578,0.60876142900872066,0.60750947113571552,0.60625600222939346,0.60500102540745615,0.603744543791356,0.6024865605062879,0.60122707868118208,0.59996610144869567,0.59870363194520559,0.59743967331080028,0.59617422868927195,0.5949073012281092,0.59363889407848835,0.59236901039526646,0.59109765333697295,0.58982482606580189,0.58855053174760419,0.58727477355187974,0.58599755465176939,0.58471887822404711,0.58343874744911239,0.58215716551098162,0.58087413559728085,0.57958966089923769,0.57830374461167322,0.5770163899329942,0.57572760006518475,0.57443737821379903,0.57314572758795279,0.57185265140031538,0.57055815286710221,0.56926223520806607,0.56796490164648961,0.56666615540917742,0.56536599972644741,0.56406443783212334,0.56276147296352674,0.56145710836146834,0.56015134727024063,0.55884419293760945,0.55753564861480609,0.55622571755651884,0.55491440302088546,0.55360170826948452,0.55228763656732793,0.5509721911828519,0.54965537538790987,0.54833719245776336,0.54701764567107469,0.54569673830989829,0.54437447365967262,0.54305085500921224,0.54172588565069946,0.54039956887967566,0.53907190799503457,0.537742906299012,0.53641256709717955,0.53508089369843492,0.53374788941499474,0.53241355756238562,0.53107790145943645,0.52974092442826948,0.52840262979429287,0.52706302088619161,0.5257221010359201,0.52437987357869298,0.52303634185297743,0.52169150920048457,0.5203453789661614,0.5189979544981822,0.51764923914794059,0.5162992362700406,0.51494794922228893,0.51359538136568617,0.51224153606441891,0.51088641668585055,0.50953002660051405,0.50817236918210273,0.50681344780746196,0.5054532658565809,0.50409182671258412,0.50272913376172335,0.50136519039336858,0.50000000000000011,0.49863356597719982,0.49726589172364288,0.49589698064108917,0.49452683613437493,0.493155461611404,0.49178286048314024,0.49040903616359777,0.48903399206983328,0.48765773162193743,0.48628025824302618,0.48490157535923245,0.48352168639969739,0.48214059479656207,0.48075830398495889,0.47937481740300281,0.47799013849178318,0.47660427069535466,0.47521721746072959,0.47382898223786829,0.472439568479671,0.47104897964196957,0.46965721918351827,0.46826429056598573,0.46687019725394596,0.46547494271486994,0.46407853041911679,0.46268096383992552,0.46128224645340582,0.45988238173853008,0.4584813731771239,0.45707922425385872,0.4556759384562416,0.45427151927460763,0.45286597020211083,0.45145929473471563,0.45005149637118808,0.44864257861308704,0.44723254496475578,0.44582139893331296,0.44440914402864401,0.44299578376339255,0.44158132165295116,0.4401657612154537,0.43874910597176514,0.43733135944547391,0.43591252516288254,0.43449260665299921,0.43307160744752876,0.43164953108086418,0.43022638109007738,0.42880216101491087,0.42737687439776861,0.42595052478370748,0.42452311572042806,0.42309465075826608,0.42166513345018403,0.42023456735176129,0.41880295602118617,0.41737030301924655,0.41593661190932135,0.41450188625737144,0.41306612963193101,0.41162934560409836,0.41019153774752731,0.40875270963841825,0.4073128648555091,0.40587200698006637,0.40443013959587698,0.4029872662892382,0.40154339064894934,0.40009851626630305,0.39865264673507583,0.39720578565151948,0.3957579366143521,0.39430910322474905,0.392859289086334,0.39140849780517001,0.38995673298975053,0.38850399825099052,0.38705029720221712,0.38559563345916154,0.38414001063994885,0.38268343236508984,0.38122590225747166,0.37976742394234914,0.37830800104733525,0.37684763720239262,0.37538633603982408,0.37392410119426395,0.3724609363026688,0.37099684500430852,0.36953183094075687,0.36806589775588361,0.36659904909584368,0.36513128860906952,0.36366261994626137,0.36219304676037845,0.36072257270662955,0.35925120144246447,0.35777893662756427,0.35630578192383272,0.35483174099538695,0.3533568175085483,0.35188101513183306,0.35040433753594424,0.34892678839376101,0.34744837138033058,0.34596909017285882,0.34448894845070094,0.34300794989535266,0.34152609819044066,0.34004339702171382,0.33855985007703371,0.3370754610463656,0.33559023362176932,0.33410417149738991,0.33261727836944838,0.33112955793623328,0.32964101389809014,0.32815164995741336,0.32666146981863664,0.32517047718822373,0.32367867577465925,0.32218606928843946,0.3206926614420631,0.31919845595002205,0.31770345652879223,0.31620766689682411,0.31471109077453358,0.31321373188429324,0.31171559395042209,0.31021668069917691,0.30871699585874307,0.30721654315922486,0.30571532633263671,0.30421334911289333,0.30271061523580101,0.30120712843904779,0.29970289246219456,0.2981979110466656,0.29669218793573932,0.29518572687453859,0.2936785316100225,0.2921706058909756,0.2906619534679995,0.28915257809350337,0.28764248352169436,0.28613167350856872,0.28462015181190198,0.28310792219123987,0.28159498840788888,0.2800813542249071,0.27856702340709444,0.27705199972098349,0.27553628693483079,0.27401988881860617,0.27250280914398428,0.27098505168433495,0.2694666202147139,0.26794751851185333,0.26642775035415234,0.26490731952166774,0.2633862297961046,0.26186448496080689,0.26034208880074788,0.25881904510252096,0.25729535765432981,0.25577103024597997,0.25424606666886806,0.25272047071597331,0.25119424618184777,0.24966739686260692,0.24813992655592026,0.24661183906100187,0.24508313817860089,0.24355382771099215,0.24202391146196667,0.2404933932368222,0.23896227684235355,0.23743056608684399,0.23589826478005441,0.23436537673321484,0.23283190575901466,0.23129785567159317,0.22976323028653001,0.22822803342083581,0.22669226889294253,0.22515594052269414,0.22361905213133698,0.22208160754151035,0.22054361057723693,0.21900506506391304,0.21746597482830013,0.21592634369851377,0.21438617550401518,0.21284547407560131,0.21130424324539548,0.20976248684683771,0.20822020871467528,0.20667741268495315,0.20513410259500439,0.20359028228344073,0.20204595559014291,0.20050112635625097,0.19895579842415559,0.19740997563748708,0.1958636618411069,0.19431686088109773,0.19276957660475399,0.19122181286057222,0.18967357349824149,0.18812486236863388,0.1865756833237949,0.18502604021693381,0.18347593690241418,0.18192537723574426,0.18037436507356705,0.17882290427365177,0.17727099869488283,0.17571865219725111,0.17416586864184419,0.17261265189083677,0.17105900580748098,0.16950493425609678,0.16795044110206242,0.16639553021180478,0.16484020545278977,0.16328447069351265,0.16172832980348828,0.16017178665324233,0.15861484511430035,0.15705750905917895,0.15549978236137602,0.15394166889536115,0.15238317253656583,0.15082429716137394,0.1492650466471121,0.14770542487203997,0.14614543571534061,0.14458508305711087,0.14302437077835178,0.14146330276095853,0.13990188288771183,0.13834011504226687,0.13677800310914459,0.13521555097372173,0.13365276252222119,0.13208964164170245,0.13052619222005171,0.12896241814597248,0.1273983233089756,0.12583391159936988,0.1242691869082522,0.12270415312749768,0.1211388141497509,0.11957317386841491,0.11800723617764236,0.11644100497232567,0.11487448414808725,0.11330767760126995,0.11174058922892721,0.11017322292881349,0.1086055825993745,0.10703767213973756,0.10546949544970184,0.10390105642972873,0.10233235898093185,0.10076340700506828,0.099194204404527503,0.097624755082322615,0.096055062942080327,0.094485131888031357,0.092914965825000612,0.091344568658397546,0.089773944294206445,0.088203096638976686,0.086632029599813004,0.085060747084365826,0.083489253000821301,0.081917551257892449,0.080345645764808155,0.078773540431304273,0.077201239167613733,0.075628745884456797,0.074056064493031301,0.072483198905003002,0.07091015303249576,0.069336930788081869,0.0677635360847723,0.066189972836006972,0.064616244955645025,0.063042356357954868,0.061468310957605278,0.059894112669654442,0.05831976540954098,0.056745273093074089,0.05517063963642372,0.053595868956110911,0.052020964968997982,0.050445931592278843,0.048870772743469217,0.047295492340396914,0.045720094301192074,0.044144582544277222,0.042568960988358377,0.040993233552413993,0.039417404155686113,0.037841476717670366,0.036265455158106238,0.034689343396967325,0.033113145354451576,0.031536864950971542,0.029960506107144624,0.028384072743783337,0.026807568781885532,0.025230998142624663,0.023654364747339802,0.022077672517526781,0.020500925374827103,0.018924127241019079,0.017347282038007832,0.015770393687815579,0.014193466112571844,0.012616503234503714,0.011039508975926088,0.0094624872592319106,0.0078854420068824246,0.0063083771413974142,0.0047312965853452222,0.0031542042613338832,0.0015771040920000382,6.123233995736766e-17,0.9999949034160297,0.99997961371606903,0.99995413105596853,0.99991845569547733,0.99987258799824019,0.99981652843179436,0.9997502775675644,0.99967383608085636,0.99958720475085139,0.99949038446059713,0.99938337619699891,0.99926618105081,0.99913880021662027,0.99900123499284388,0.99885348678170638,0.99869555708922997,0.99852744752521849,0.99834915980324113,0.9981606957406145,0.99796205725838438,0.99775324638130625,0.9975342652378244,0.99730511606005046,0.99706580118374044,0.99681632304827106,0.99655668419661492,0.99628688727531434,0.99600693503445481,0.99571683032763625,0.9954165761119449,0.99510617544792235,0.99478563149953469,0.99445494753414021,0.99411412692245615,0.99376317313852414,0.99340208975967503,0.99303088046649257,0.99264954904277514,0.99225809937549814,0.9918565354547737,0.99144486137381038,0.99102308132887118,0.99059119961923092,0.99014922064713251,0.98969714891774163,0.98923498903910145,0.98876274572208533,0.98828042378034853,0.98778802813027966,0.98728556379095034,0.98677303588406395,0.9862504496339034,0.98571781036727824,0.98517512351346992,0.98462239460417678,0.98405962927345714,0.98348683325767283,0.98290401239542957,0.98231117262751855,0.98170831999685493,0.98109546064841691,0.98047260082918253,0.97983974688806685,0.97919690527585612,0.97854408254514302,0.9778812853502592,0.97720852044720774,0.97652579469359435,0.9758331150485573,0.97513048857269646,0.97441792242800163,0.97369542387777908,0.97296300028657789,0.97222065912011468,0.97146840794519784,0.97070625442964964,0.96993420634222904,0.9691522715525519,0.96836045803101067,0.9675587738486936,0.96674722717730233,0.96592582628906831,0.96509457955666866,0.96425349545314099,0.96340258255179678,0.9625418495261342,0.96167130514974952,0.96079095829624772,0.95990081793915216,0.95900089315181292,0.95809119310731461,0.95717172707838249,0.95624250443728831,0.95530353465575424,0.95435482730485732,0.95339639205493054,0.95242823867546567,0.95145037703501245,0.95046281710107894,0.94946556894002943,0.94845864271698188,0.94744204869570425,0.94641579723851033,0.94537989880615336,0.9443343639577203,0.94327920335052318,0.94221442773999142,0.94114004797956152,0.94005607502056698,0.9389625199121262,0.93785939380102989,0.93674670793162784,0.93562447364571411,0.934492702382411,0.93335140567805319,0.93220059516606968,0.93104028257686533,0.92987047973770121,0.92869119857257398,0.92750245110209473,0.92630424944336598,0.92509660580985853,0.92387953251128674,0.92265304195348319,0.92141714663827201,0.92017185916334177,0.91891719222211687,0.91765315860362795,0.91637977119238223,0.91509704296823136,0.91380498700623947,0.91250361647654998,0.91119294464425138,0.90987298486924173,0.90854375060609249,0.90720525540391206,0.90585751290620653,0.90450053685074172,0.90313434106940238,0.90175893948805153,0.90037434612638845,0.89898057509780593,0.89757764060924605,0.8961655569610556,0.89474433854684055,0.89331399985331861,0.89187455546017247,0.89042602003990057,0.88896840835766766,0.8875017352711545,0.88602601573040596,0.88454126477767936,0.88304749754729051,0.88154472926545957,0.880032975250156,0.87851225091094243,0.87698257174881733,0.8754439533560574,0.87389641141605845,0.87233996170317496,0.87077462008256068,0.8692004025100053,0.86761732503177313,0.86602540378443871,0.86442465499472254,0.86281509497932607,0.86119674014476477,0.8595696069872012,0.85793371209227687,0.85628907213494332,0.85463570387929177,0.85297362417838241,0.85130284997407291,0.84962339829684541,0.84793528626563253,0.84623853108764413,0.84453315005819041,0.84281916056050665,0.84109658006557575,0.83936542613194998,0.83762571640557204,0.83587746861959544,0.83412070059420329,0.83235543023642722,0.83058167553996443,0.82879945458499449,0.82700878553799484,0.82520968665155581,0.82340217626419454,0.82158627280016794,0.8197619947692848,0.81792936076671774,0.8160883894728127,0.81423909965289942,0.81238151015709947,0.81051563992013465,0.80864150796113365,0.80675913338343819,0.8048685353744085,0.80296973320522758,0.80106274623070484,0.79914759388907874,0.79722429570181885,0.79529287127342652,0.79335334029123528,0.79140572252521013,0.78945003782774603,0.78748630613346571,0.78551454745901594,0.78353478190286407,0.78154702964509304,0.77955131094719532,0.77754764615186667,0.77553605568279893,0.77351656004447167,0.77148917982194298,0.76945393568063991,0.76741084836614792,0.7653599387039991,0.76330122759945995,0.76123473603731862,0.75916048508167056,0.75707849587570419,0.75498878964148508,0.75289138767973984,0.75078631136963891,0.74867358216857871,0.74655322161196269,0.74442525131298221,0.74228969296239578,0.74014656832830827,0.73799589925594922,0.7358377076674496,0.73367201556161865,0.73149884501371965,0.729318218175245,0.72713015727369046,0.72493468461232791,0.72273182256997925,0.72052159360078705,0.71830402023398643,0.7160791250736751,0.71384693079858308,0.71160746016184151,0.70936073599075078,0.70710678118654757,0.70484561872417173,0.70257727165203199,0.70030176309177106,0.69801911623802981,0.69572935435821082,0.69343250079224172,0.69112857895233659,0.68881761232275762,0.68649962445957569,0.68417463899043041,0.68184267961428935,0.67950377010120566,0.67715793429207716,0.67480519609840206,0.67244557950203587,0.6700791085549469,0.66770580737897089,0.66532570016556547,0.66293881117556286,0.66054516473892366,0.65814478525448783,0.65573769718972663,0.65332392508049297,0.65090349353077126,0.64847642721242693,0.64604275086495444,0.64360248929522557,0.64115566737723628,0.63870231005185329,0.6362424423265598,0.63377608927520079,0.63130327603772707,0.62882402781993929,0.62633836989323066,0.62384632759433012,0.62134792632504321,0.61884319155199363,0.61633214880636378,0.61381482368363383,0.61129124184332162,0.60876142900872066,0.60622541096663807,0.60368321356713162,0.60113486272324623,0.59858038441075012,0.59601980466786986,0.5934531495950246,0.59088044535456063,0.58830171817048438,0.58571699432819491,0.58312630017421663,0.58052966211593005,0.57792710662130298,0.57531866021862066,0.5727043494962154,0.57008420110219526,0.56745824174417314,0.56482649818899355,0.56218899726246052,0.55954576584906413,0.55689683089170583,0.55424221939142471,0.55158195840712165,0.54891607505528339,0.5462445965097068,0.54356755000122126,0.5408849628174115,0.5381968623023391,0.53550327585626412,0.53280423093536566,0.53009975505146201,0.52738987577172958,0.52467462071842319,0.52195401756859361,0.51922809405380577,0.51649687795985555,0.51376039712648758,0.51101867944711044,0.50827175286851289,0.50551964539057892,0.50276238506600213,0.50000000000000011,0.49723251835002774,0.49445996832549033,0.49168237818745586,0.488899776248367,0.48611219087175273,0.48331965047193892,0.4805221835137588,0.47771981851226297,0.47491258403242848,0.47210050868886777,0.46928362114553712,0.46646195011544433,0.46363552436035615,0.46080437269050489,0.45796852396429499,0.45512800708800882,0.45228285101551186,0.44943308474795785,0.44657873733349313,0.44371983786695984,0.44085641548960058,0.43798849938876055,0.43511611879759016,0.43223930299474717,0.42935808130409819,0.42647248309441982,0.42358253777909921,0.42068827481583426,0.41778972370633349,0.41488691399601507,0.41197987527370594,0.40906863717134001,0.40615322936365605,0.40323368156789563,0.40031002354349965,0.39738228509180534,0.39445049605574245,0.39151468631952902,0.38857488580836663,0.38563112448813575,0.38268343236508984,0.37973183948554967,0.37677637593559721,0.37381707184076884,0.37085395736574805,0.36788706271405841,0.36491641812775533,0.36194205388711792,0.3589640003103407,0.35598228775322349,0.35299694660886327,0.35000800730734377,0.34701550031542522,0.34401945613623391,0.34101990530895138,0.33801687840850292,0.33501040604524607,0.33200051886465853,0.3289872475470258,0.32597062280712852,0.32295067539392924,0.31992743609025914,0.31690093571250416,0.31387120511029087,0.31083827516617218,0.30780217679531235,0.30476294094517192,0.3017205985951924,0.2986751807564802,0.29562671847149086,0.29257524281371239,0.28952078488734867,0.28646337582700226,0.28340304679735723,0.28033982899286125,0.27727375363740792,0.27420485198401823,0.27113315531452215,0.26805869493923984,0.26498150219666189,0.26190160845313087,0.25881904510252096,0.25573384356591805,0.25264603529129964,0.2495556517532139,0.24646272445245931,0.24336728491576329,0.24026936469546087,0.2371689953691731,0.2340662085394852,0.23096103583362446,0.22785350890313771,0.22474365942356883,0.22163151909413586,0.21851711963740783,0.21540049279898141,0.21228167034715742,0.20916068407261684,0.20603756578809693,0.20291234732806684,0.19978506054840323,0.19665573732606542,0.19352440955877054,0.19039110916466842,0.18725586808201616,0.18411871826885268,0.18097969170267289,0.17783882038010171,0.17469613631656825,0.1715516715459785,0.16840545812039018,0.16525752810968514,0.1621079136012426,0.15895664669961224,0.15580375952618677,0.15264928421887466,0.14949325293177251,0.14633569783483721,0.14317665111355821,0.14001614496862919,0.13685421161562011,0.13369088328464865,0.13052619222005171,0.12736017068005684,0.1241928509364533,0.1210242652742631,0.11785444599141209,0.11468342539840053,0.11151123581797387,0.10833790958479325,0.10516347904510591,0.10198797655641542,0.098811434487151975,0.095633885216342335,0.092455361133279873,0.089275894637194375,0.086095518136921775,0.08291426405057388,0.079732164805208047,0.076549252836495885,0.073365560588393816,0.070181120512811598,0.066995965069281752,0.063810126724628602,0.060623637952637428,0.057436531233723429,0.054248839054600644,0.051060593907950785,0.047871828292092078,0.04468257471064796,0.041492865672215794,0.038302733690035493,0.035112211281658104,0.03192133096861436,0.028730125276083159,0.02553862673256006,0.022346867869525704,0.019154881221114209,0.015962699323781544,0.012770354715973884,0.0095778799377959425,0.006385307530679279,0.0031926700370506034,6.123233995736766e-17,0.99999845640057161,0.99999382560705186,0.99998610763373685,0.99997530250445366,0.99996141025255969,0.99994443092094321,0.99992436456202283,0.99990121123774722,0.99987497101959544,0.99984564398857612,0.99981323023522783,0.9997777298596181,0.99973914297134381,0.99969746968953022,0.99965271014283097,0.99960486446942798,0.99955393281703009,0.99949991534287352,0.99944281221372089,0.99938262360586116,0.99931934970510816,0.99925299070680129,0.9991835468158039,0.99911101824650306,0.99903540522280887,0.99895670797815384,0.99887492675549194,0.99879006180729812,0.99870211339556736,0.9986110817918139,0.99851696727707029,0.99841977014188688,0.99831949068633041,0.99821612921998371,0.99810968606194406,0.99800016154082261,0.99788755599474332,0.99777186977134213,0.99765310322776524,0.99753125673066856,0.99740633065621642,0.99727832539008066,0.99714724132743882,0.99701307887297363,0.99687583844087102,0.99673552045481972,0.99659212534800912,0.99644565356312842,0.99629610555236525,0.99614348177740408,0.99598778270942467,0.99582900882910119,0.9956671606266001,0.99550223860157894,0.99533424326318498,0.99516317513005303,0.99498903473030453,0.99481182260154544,0.99463153929086501,0.99444818535483348,0.99426176135950106,0.9940722678803956,0.99387970550252125,0.99368407482035626,0.99348537643785151,0.99328361096842843,0.99307877903497699,0.99287088126985434,0.99265991831488209,0.99244589082134482,0.99222879944998799,0.99200864487101592,0.9917854277640894,0.99155914881832419,0.99132980873228838,0.99109740821400027,0.99086194798092653,0.99062342875997988,0.99038185128751632,0.99013721630933382,0.98988952458066903,0.98963877686619561,0.98938497394002167,0.98912811658568733,0.98886820559616218,0.98860524177384324,0.98833922593055201,0.98807015888753247,0.98779804147544803,0.98752287453437915,0.98724465891382096,0.98696339547268053,0.98667908507927382,0.98639172861132363,0.98610132695595665,0.98580788100970029,0.98551139167848079,0.9852118598776195,0.98490928653183074,0.98460367257521864,0.98429501895127414,0.98398332661287236,0.98366859652226957,0.98335082965110021,0.98303002698037367,0.98270618950047173,0.98237931821114499,0.98204941412151014,0.98171647825004682,0.98138051162459405,0.98104151528234784,0.98069949026985703,0.98035443764302121,0.98000635846708617,0.97965525381664165,0.97930112477561748,0.97894397243728049,0.978583797904231,0.97822060228839935,0.97785438671104263,0.97748515230274113,0.97711290020339492,0.97673763156222027,0.97635934753774611,0.9759780492978104,0.97559373801955673,0.97520641488943038,0.97481608110317475,0.97442273786582811,0.97402638639171901,0.97362702790446343,0.97322466363696036,0.97281929483138829,0.97241092273920149,0.97199954862112559,0.97158517374715447,0.97116779939654563,0.97074742685781679,0.9703240574287415,0.96989769241634549,0.96946833313690217,0.96903598091592913,0.96860063708818367,0.96816230299765871,0.96772097999757878,0.96727666945039581,0.96682937272778458,0.96637909121063925,0.96592582628906831,0.96546957936239064,0.96501035183913142,0.96454814513701725,0.96408296068297206,0.96361479991311272,0.96314366427274489,0.96266955521635766,0.96219247420762022,0.96171242271937629,0.96122940223364051,0.96074341424159304,0.96025446024357541,0.95976254174908604,0.9592676602767749,0.95876981735443956,0.95826901451902025,0.9577652533165949,0.95725853530237437,0.95674886204069798,0.95623623510502853,0.95572065607794732,0.95520212655114911,0.95468064812543796,0.95415622241072129,0.95362885102600559,0.95309853559939128,0.95256527776806743,0.95202907917830704,0.95148994148546184,0.95094786635395701,0.95040285545728631,0.94985491047800685,0.94930403310773359,0.94875022504713458,0.94819348800592551,0.9476338237028642,0.94707123386574577,0.94650572023139679,0.94593728454567039,0.94536592856344059,0.94479165404859689,0.94421446277403898,0.94363435652167094,0.9430513370823963,0.94246540625611197,0.94187656585170287,0.94128481768703642,0.94069016358895696,0.94009260539327988,0.93949214494478606,0.93888878409721654,0.93828252471326612,0.93767336866457796,0.93706131783173818,0.93644637410426923,0.9358285393806246,0.93520781556818311,0.93458420458324265,0.9339577083510141,0.93332832880561611,0.93269606789006854,0.93206092755628633,0.93142290976507414,0.9307820164861198,0.9301382496979882,0.92949161138811565,0.92884210355280283,0.92818972819720991,0.92753448733534916,0.92687638299007957,0.92621541719309997,0.92555159198494341,0.92488490941497004,0.9242153715413618,0.92354298043111505,0.92286773816003498,0.92218964681272864,0.92150870848259891,0.9208249252718379,0.92013829929142033,0.91944883266109712,0.91875652750938885,0.91806138597357911,0.91736341019970824,0.91666260234256614,0.91595896456568604,0.91525249904133765,0.91454320795052058,0.91383109348295744,0.91311615783708722,0.91239840322005838,0.91167783184772233,0.91095444594462593,0.91022824774400546,0.90949923948777922,0.90876742342654049,0.90803280181955115,0.90729537693473417,0.90655515104866669,0.90581212644657327,0.9050663054223187,0.9043176902784007,0.90356628332594302,0.9028120868846885,0.90205510328299154,0.90129533485781088,0.90053278395470293,0.89976745292781379,0.8989993441398727,0.89822845996218403,0.89745480277462064,0.8966783749656162,0.89589917893215765,0.89511721707977809,0.89433249182254926,0.89354500558307415,0.89275476079247928,0.8919617598904076,0.89116600532501045,0.89036749955294048,0.88956624503934378,0.88876224425785233,0.88795549969057652,0.8871460138280971,0.88633378916945804,0.88551882822215844,0.88470113350214463,0.88388070753380288,0.88305755284995124,0.88223167199183206,0.88140306750910369,0.8805717419598329,0.87973769791048706,0.87890093793592594,0.87806146461939405,0.87721928055251241,0.8763743883352707,0.87552679057601923,0.87467648989146085,0.87382348890664274,0.87296779025494864,0.87210939657809061,0.87124831052610041,0.87038453475732191,0.8695180719384028,0.86864892474428612,0.86777709585820195,0.86690258797165953,0.8660254037844386,0.86514554600458116,0.86426301734838329,0.86337782054038614,0.8624899583133685,0.86159943340833756,0.86070624857452083,0.85981040656935748,0.85891191015848989,0.85801076211575522,0.85710696522317664,0.85620052227095489,0.85529143605745972,0.85437970938922081,0.85346534508091987,0.85254834595538131,0.85162871484356373,0.8507064545845513,0.84978156802554483,0.8488540580218531,0.84792392743688383,0.84699117914213518,0.84605581601718649,0.84511784094968989,0.84417725683536082,0.84323406657796962,0.84228827308933207,0.84133987928930076,0.84038888810575585,0.83943530247459652,0.8384791253397309,0.83752035965306815,0.83655900837450858,0.83559507447193471,0.83462856092120219,0.83365947070613067,0.83268780681849408,0.83171357225801235,0.83073677003234114,0.82975740315706326,0.8287754746556788,0.82779098755959657,0.82680394490812392,0.8258143497484578,0.82482220513567517,0.8238275141327237,0.82283027981041257,0.82183050524740231,0.82082819353019565,0.81982334775312837,0.81881597101835923,0.8178060664358604,0.81679363712340824,0.81577868620657323,0.81476121681871083,0.81374123210095139,0.8127187352021904,0.81169372927907935,0.81066621749601508,0.80963620302513095,0.80860368904628654,0.80756867874705762,0.80653117532272689,0.8054911819762739,0.80444870191836471,0.80340373836734258,0.80235629454921786,0.80130637369765778,0.80025397905397699,0.79919911386712694,0.7981417813936863,0.79708198489785043,0.79601972765142215,0.79495501293380055,0.79388784403197199,0.79281822424049886,0.79174615686151029,0.79067164520469135,0.78959469258727322,0.78851530233402289,0.7874334777772326,0.78634922225670989,0.78526253911976729,0.78417343172121168,0.78308190342333406,0.78198795759589945,0.78089159761613613,0.77979282686872542,0.77869164874579111,0.77758806664688884,0.77648208397899632,0.77537370415650186,0.77426293060119433,0.77314976674225255,0.77203421601623479,0.77091628186706807,0.7697959677460372,0.7686732771117748,0.76754821343024993,0.76642078017475812,0.76529098082590996,0.76415881887162074,0.76302429780709946,0.76188742113483832,0.76074819236460156,0.7596066150134152,0.75846269260555521,0.7573164286725379,0.75616782675310767,0.75501689039322706,0.7538636231460657,0.75270802857198871,0.75155011023854656,0.75038987172046323,0.74922731659962583,0.74806244846507297,0.74689527091298458,0.74572578754666963,0.74455400197655597,0.74337991782017865,0.74220353870216871,0.74102486825424274,0.73984391011519057,0.73866066793086493,0.73747514535416969,0.73628734604504886,0.73509727367047506,0.73390493190443828,0.73271032442793482,0.73151345492895548,0.73031432710247424,0.72911294465043741,0.7279093112817514,0.72670343071227161,0.72549530666479145,0.72428494286902989,0.72307234306162083,0.72185751098610074,0.72064045039289804,0.71942116503932085,0.71819965868954527,0.71697593511460467,0.7157499980923766,0.71452185140757274,0.71329149885172616,0.71205894422317972,0.71082419132707475,0.7095872439753389,0.70834810598667475,0.70710678118654757,0.70586327340717381,0.70461758648750938,0.70336972427323752,0.70211969061675705,0.70086748937717036,0.69961312442027157,0.69835659961853502,0.6970979188511025,0.69583708600377192,0.69457410496898475,0.69330897964581484,0.69204171393995562,0.69077231176370835,0.68950077703596979,0.68822711368222056,0.68695132563451289,0.6856734168314581,0.68439339121821474,0.68311125274647622,0.68182700537445939,0.68054065306689093,0.67925219979499651,0.6779616495364873,0.6766690062755486,0.67537427400282746,0.67407745671541974,0.67277855841685819,0.67147758311710015,0.67017453483251532,0.66886941758587271,0.66756223540632875,0.66625299232941471,0.66494169239702461,0.66362833965740187,0.6623129381651276,0.66099549198110785,0.65967600517256075,0.65835448181300482,0.65703092598224522,0.65570534176636208,0.65437773325769744,0.65304810455484275,0.65171645976262638,0.65038280299210038,0.64904713836052863,0.64770946999137313,0.64636980201428251,0.64502813856507812,0.64368448378574161,0.64233884182440271,0.64099121683532567,0.63964161297889677,0.63829003442161159,0.63693648533606184,0.63558096990092272,0.63422349230093988,0.63286405672691681,0.63150266737570127,0.63013932845017284,0.62877404415923011,0.62740681871777704,0.6260376563467106,0.62466656127290698,0.6232935377292097,0.62191858995441529,0.62054172219326098,0.61916293869641126,0.61778224372044499,0.61639964152784232,0.61501513638697092,0.61362873257207362,0.61224043436325459,0.61085024604646654,0.60945817191349727,0.60806421626195639,0.6066683833952623,0.60527067762262843,0.60387110325905058,0.60246966462529317,0.60106636604787589,0.59966121185906041,0.59825420639683724,0.59684535400491212,0.59543465903269244,0.59402212583527392,0.59260775877342786,0.59119156221358626,0.58977354052782971,0.58835369809387317,0.58693203929505233,0.58550856852031086,0.58408329016418603,0.58265620862679557,0.58122732831382384,0.57979665363650867,0.57836418901162723,0.57692993886148269,0.57549390761389052,0.57405609970216454,0.57261651956510395,0.57117517164697873,0.56973206039751667,0.5682871902718889,0.56684056573069719,0.56539219123995887,0.56394207127109419,0.56249021030091173,0.56103661281159523,0.5595812832906889,0.5581242262310846,0.5566654461310071,0.55520494749400062,0.55374273482891512,0.55227881264989165,0.55081318547634917,0.54934585783297007,0.54787683424968681,0.54640611926166727,0.54493371740930086,0.54345963323818514,0.54198387129911096,0.54050643614804883,0.53902733234613498,0.53754656445965709,0.53606413706003975,0.53458005472383152,0.53309432203268936,0.53160694357336558,0.53011792393769352,0.52862726772257262,0.52713497952995525,0.52564106396683163,0.52414552564521621,0.52264836918213331,0.52114959919960258,0.51964922032462491,0.51814723718916844,0.51664365443015359,0.51513847668943957,0.51363170861380902,0.51212335485495486,0.51061342006946531,0.5091019089188088,0.50758882606932132,0.50607417619219008,0.50455796396344077,0.50304019406392197,0.50152087117929101,0.49999999999999989,0.49847758522128061,0.49695363154312988,0.49542814367029619,0.49390112631226352,0.49237258418323837,0.49084252200213441,0.48931094449255752,0.48777785638279231,0.48624326240578636,0.4847071672991366,0.48316957580507425,0.48163049267044966,0.4800899226467189,0.47854787048992764,0.47700434096069766,0.47545933882421176,0.47391286885019845,0.47236493581291822,0.47081554449114832,0.46926469966816758,0.46771240613174264,0.46615866867411204,0.46460349209197238,0.46304688118646331,0.46148884076315183,0.45992937563201891,0.45836849060744311,0.45680619050818716,0.45524248015738233,0.45367736438251294,0.45211084801540291,0.45054293589219996,0.44897363285336023,0.4474029437436346,0.4458308734120523,0.44425742671190732,0.4426826085007427,0.44110642364033498,0.4395288769966807,0.4379499734399796,0.4363697178446212,0.43478811508916893,0.43320517005634462,0.43162088763301476,0.43003527271017383,0.42844833018293066,0.4268600649504925,0.42527048191614969,0.42367958598726124,0.42208738207523949,0.42049387509553415,0.41889906996761855,0.41730297161497282,0.41570558496507021,0.41410691494936114,0.41250696650325747,0.41090574456611856,0.40930325408123464,0.40769949999581256,0.40609448726096048,0.4044882208316713,0.40288070566680928,0.40127194672909344,0.39966194898508223,0.39805071740515918,0.39643825696351626,0.39482457263813964,0.39320966941079399,0.39159355226700621,0.38997622619605177,0.38835769619093746,0.38673796724838744,0.38511704436882727,0.3834949325563678,0.38187163681879094,0.38024716216753368,0.37862151361767188,0.37699469618790626,0.37536671490054541,0.37373757478149139,0.37210728086022404,0.37047583816978436,0.36884325174676086,0.36720952663127204,0.36557466786695236,0.3639386805009362,0.36230156958384147,0.36066334016975554,0.35902399731621792,0.35738354608420625,0.35574199153811986,0.35409933874576371,0.35245559277833377,0.35081075871040096,0.34916484161989469,0.34751784658808882,0.34586977869958396,0.34422064304229377,0.34257044470742809,0.34091918878947691,0.33926688038619612,0.33761352459858979,0.33595912653089632,0.33430369129057169,0.33264722398827329,0.3309897297378453,0.32933121365630225,0.32767168086381271,0.32601113648368479,0.32434958564234884,0.32268703346934285,0.32102348509729633,0.31935894566191336,0.31769342030195863,0.31602691415923978,0.31435943237859282,0.31269098010786578,0.31102156249790225,0.3093511847025267,0.30767985187852726,0.30600756918564082,0.30433434178653684,0.30266017484680058,0.30098507353491855,0.29930904302226186,0.29763208848306943,0.29595421509443398,0.29427542803628381,0.29259573249136861,0.2909151336452428,0.28923363668624874,0.28755124680550237,0.2858679691968754,0.28418380905698076,0.28249877158515591,0.28081286198344613,0.27912608545658985,0.27743844721200189,0.2757499524597567,0.27406060641257368,0.27237041428579967,0.27067938129739405,0.26898751266791215,0.2672948136204884,0.26560128938082189,0.26390694517715824,0.26221178624027508,0.26051581780346544,0.25881904510252074,0.25712147337571584,0.25542310786379252,0.25372395380994239,0.25202401645979233,0.25032330106138656,0.24862181286517196,0.24691955712398111,0.24521653909301558,0.2435127640298311,0.24180823719431968,0.24010296384869487,0.23839694925747473,0.23669019868746519,0.23498271740774507,0.23327451068964819,0.23156558380674858,0.22985594203484361,0.22814559065193693,0.22643453493822363,0.22472278017607314,0.22301033165001238,0.22129719464671094,0.21958337445496295,0.21786887636567237,0.21615370567183598,0.21443786766852632,0.21272136765287697,0.21100421092406435,0.20928640278329302,0.2075679485337785,0.20584885348073031,0.204129122931337,0.20240876219474899,0.20068777658206149,0.19896617140629977,0.19724395198240094,0.19552112362719903,0.19379769165940802,0.19207366139960466,0.19034903817021362,0.18862382729548932,0.18689803410150105,0.18517166391611578,0.18344472206898116,0.18171721389151047,0.17998914471686461,0.17826051987993694,0.17653134471733631,0.17480162456736986,0.17307136477002788,0.17134057066696667,0.16960924760149135,0.16787740091854095,0.16614503596467015,0.16441215808803425,0.1626787726383721,0.1609448849669888,0.15921050042674087,0.15747562437201779,0.15574026215872719,0.15400441914427751,0.15226810068756091,0.15053131214893795,0.1487940588902204,0.14705634627465416,0.14531817966690402,0.14357956443303554,0.14184050594049988,0.14010100955811663,0.13836108065605665,0.13662072460582686,0.13487994678025203,0.13313875255345972,0.13139714730086294,0.129655136399143,0.1279127252262342,0.12616991916130654,0.12442672358474846,0.1226831438781518,0.1209391854242934,0.11919485360712001,0.11745015381173105,0.11570509142436129,0.1139596718323658,0.11221390042420147,0.11046778258941205,0.10872132371861072,0.1069745292034629,0.10522740443667102,0.10347995481195624,0.10173218572404327,0.099984102568643055,0.098235710742435478,0.096487015643054008,0.094738022669068361,0.092988737219967227,0.091239164696143057,0.089489310498873736,0.087739180030307354,0.085988778693444901,0.084238111892122949,0.0824871850309985,0.080736003515530494,0.078984572751964729,0.077232898147316487,0.075480985109353166,0.073728839046578898,0.071976465368217238,0.070223869484193763,0.068471056805120903,0.06671803274227954,0.064964802707603783,0.06321137211366358,0.061457746373647433,0.059703930901347173,0.057949931111139455,0.056195752417970667,0.054441400237339482,0.052686879985279503,0.05093219707834408,0.049177356933587851,0.047422364968551511,0.045667226601244483,0.043911947250127474,0.042156532334097115,0.040400987272468547,0.038645317484958044,0.0368895283916678,0.035133625413067457,0.033377613969978903,0.031621499483558885,0.029865287375281584,0.028108983066923467,0.026352591980544737,0.024596119538474171,0.022839571163291709,0.02108295227781104,0.0193262683050642,0.017569524668284167,0.015812726790887442,0.014055880096458867,0.012298990008733104,0.010542061951579447,0.0087851013489844091,0.0070281136250343063,0.0052711042039000769,0.003514078509818754,0.0017570419670782727,6.123233995736766e-17,0.99999021068409211,0.99996084292803,0.99991189730679408,0.99984337477867258,0.999755276685243,0.9996476047513454,0.99952036108504883,0.99937354817761037,0.99920716890342576,0.9990212265199736,0.99881572466775137,0.99859066737020408,0.99834605903364571,0.99808190444717293,0.99779820878257108,0.99749497759421313,0.99717221681895074,0.99682993277599852,0.99646813216680952,0.99608682207494481,0.99568600996593426,0.99526570368713052,0.99482591146755539,0.99436664191773905,0.99388790402955074,0.99338970717602337,0.99287206111116966,0.99233497596979137,0.99177846226728072,0.99120253089941457,0.99060719314214118,0.98999246065135937,0.98935834546269008,0.98870485999124114,0.98803201703136401,0.98733982975640344,0.98662831171843901,0.98589747684802043,0.98514733945389477,0.98437791422272558,0.98358921621880646,0.98278126088376494,0.98195406403626129,0.98110764187167798,0.98024201096180286,0.9793571882545048,0.9784531910734019,0.97753003711752207,0.97658774446095664,0.97562633155250678,0.97464581721532173,0.97364622064653072,0.9726275614168669,0.97158985947028431,0.97053313512356731,0.96945740906593281,0.96836270235862509,0.96724903643450388,0.96611643309762429,0.96496491452280997,0.96379450325521909,0.96260522220990297,0.96139709467135737,0.96017014429306657,0.95892439509704019,0.95765987147334308,0.95637659817961773,0.95507460034059943,0.95375390344762456,0.95241453335813131,0.95105651629515353,0.94967987884680738,0.94828464796577039,0.94687085096875445,0.94543851553597036,0.94398766971058612,0.94251834189817818,0.94103056086617465,0.93952435574329252,0.93799975601896746,0.93645679154277606,0.93489549252385185,0.93331588953029321,0.93171801348856575,0.93010189568289625,0.92846756775465999,0.92681506170176187,0.92514440987800939,0.92345564499247967,0.92174880010887839,0.92002390864489325,0.91828100437153914,0.91652012141249706,0.91474129424344619,0.91294455769138871,0.91112994693396809,0.90929749749878008,0.90744724526267773,0.90557922645106814,0.90369347763720387,0.90179003574146677,0.89986893803064483,0.89793022211720275,0.89597392595854564,0.89400008785627572,0.89200874645544248,0.88999994074378608,0.8879737100509737,0.8859300940478303,0.88386913274556111,0.88179086649496863,0.87969533598566263,0.87758258224526331,0.87545264663859834,0.87330557086689276,0.87114139696695259,0.86896016731034176,0.86676192460255275,0.86454671188217003,0.86231457252002786,0.86006555021836095,0.85779968900994907,0.85551703325725437,0.85321762765155351,0.85090151721206209,0.84856874728505383,0.84621936354297222,0.84385341198353647,0.84147093892884106,0.83907199102444874,0.83665661523847723,0.83422485886067987,0.83177676950151935,0.82931239509123589,0.82683178387890877,0.82433498443151154,0.82182204563296135,0.81929301668316168,0.81674794709703913,0.8141868867035742,0.81160988564482539,0.80901699437494745,0.80640826365920404,0.8037837445729733,0.80114348850074812,0.79848754713513015,0.79581597247581726,0.79312881682858627,0.7904261328042681,0.78770797331771836,0.78497439158678062,0.78222544113124537,0.7794611757718013,0.77668164962898212,0.77388691712210689,0.77107703296821428,0.76825205218099168,0.76541203006969782,0.76255702223807986,0.75968708458328493,0.75680227329476601,0.75390264485318081,0.7509882560292872,0.74805916388283089,0.74511542576142864,0.74215709929944507,0.73918424241686498,0.73619691331815862,0.73319517049114258,0.73017907270583426,0.72714867901330205,0.72410404874450818,0.72104524150914773,0.71797231719448118,0.71488533596416259,0.71178435825706066,0.70866944478607607,0.70554065653695308,0.70239805476708472,0.69924170100431415,0.69607165704572926,0.69288798495645387,0.68969074706843148,0.68648000597920544,0.68325582455069356,0.68001826590795689,0.67676739343796399,0.67350327078835004,0.67022596186617078,0.6669355308366508,0.66363204212192772,0.66031556039979089,0.65698615060241483,0.65364387791508805,0.65028880777493703,0.64692100586964463,0.64354053813616452,0.64014747075942968,0.63674187017105721,0.63332380304804703,0.62989333631147681,0.62645053712519183,0.62299547289448964,0.61952821126480084,0.61604882012036433,0.61255736758289803,0.60905392201026587,0.60553855199513884,0.60201132636365196,0.59847231417405744,0.59492158471537182,0.59135920750601978,0.58778525229247325,0.58419978904788528,0.58060288797072068,0.57699461948338149,0.5733750542308278,0.56974426307919501,0.56610231711440628,0.56244928764078073,0.55878524617963743,0.55511026446789524,0.55142441445666779,0.54772776830985559,0.54402039840273231,0.54030237732052855,0.53657377785701021,0.5328346730130531,0.52908513599521434,0.52532524021429883,0.52155505928392176,0.51777466701906727,0.51398413743464377,0.51018354474403438,0.50637296335764392,0.50255246788144248,0.4987221331155044,0.49488203405254366,0.49103224587644595,0.48717284396079663,0.48330390386740479,0.47942550134482409,0.47553771232686942,0.47164061293113069,0.46773427945748197,0.46381878838658824,0.45989421637840727,0.45596064027068983,0.45201813707747412,0.44806678398757854,0.44410665836309038,0.44013783773785126,0.43616039981593896,0.43217442247014598,0.42817998374045535,0.4241771618325122,0.42016603511609291,0.41614668212357064,0.41211918154837773,0.40808361224346507,0.40404005321975833,0.39998858364461076,0.39592928284025353,0.39186223028224254,0.38778750559790237,0.38370518856476715,0.37961535910901945,0.37551809730392416,0.37141348336826163,0.3673015976647569,0.36318252069850609,0.35905633311540069,0.35492311570054813,0.35078294937669036,0.34663591520261949,0.34248209437159083,0.33832156820973297,0.33415441817445579,0.32998072585285565,0.32580057296011772,0.32161404133791649,0.31742121295281311,0.31322216989465085,0.30901699437494745,0.30480576872528664,0.30058857539570466,0.29636549695307701,0.29213661607950164,0.28790201557068013,0.28366177833429679,0.27941598738839529,0.27516472585975321,0.27090807698225494,0.26664612409526151,0.2623789506419793,0.25810664016782631,0.25382927631879626,0.24954694283982112,0.24525972357313142,0.24096770245661464,0.23667096352217198,0.23236959089407286,0.22806366878730866,0.22375328150594273,0.21943851344146065,0.21511944907111771,0.21079617295628503,0.20646876974079387,0.20213732414927849,0.19780192098551741,0.19346264513077291,0.18911958154212929,0.18477281525082953,0.18042243136061042,0.17606851504603641,0.17171115155083197,0.16735042618621268,0.16298642432921487,0.15861923142102416,0.15424893296530237,0.14987561452651429,0.14549936172825126,0.14112026025155552,0.13673839583324257,0.13235385426422255,0.1279667213878205,0.12357708309809573,0.11918502533816012,0.11479063409849549,0.11039399541526994,0.10599519536865348,0.10159432008113269,0.097191455715824437,0.092786688474789103,0.088380104597342732,0.083971790358368603,0.07956183206662816,0.075150316063071085,0.07073732871914476,0.066322956435104038,0.061907285638318349,0.057490402781580435,0.053072394341413524,0.048653346816378229,0.044233346725379007,0.039812480605970278,0.035390835012662096,0.030968496515225548,0.026545551696997842,0.022122087153187118,0.017698189489177025,0.01327394531883112,0.0088494412627970753,0.004424763946810773,2.8327694488239898e-16,0.99996884689415633,0.99987538951765731,0.99971963369347794,0.99950158912617382,0.99922126940127565,0.99887869198444357,0.99847387822037881,0.99800685333149342,0.99747764641633874,0.9968862904477932,0.99623282227100673,0.99551728260110595,0.99473971602065692,0.99390017097688776,0.99299869977866961,0.99203535859325775,0.99101020744279211,0.98992331020055713,0.9887747345870026,0.98756455216552375,0.98629283833800274,0.9849596723401105,0.98356513723636996,0.98210931991498041,0.98059231108240408,0.97901420525771454,0.97737510076670719,0.9756750997357736,0.97391430808553781,0.97209283552425696,0.97021079554098633,0.96826830539850717,0.96626548612602181,0.96420246251161168,0.96207936309446285,0.959896320156857,0.95765346971592957,0.95535095151519478,0.95298890901583921,0.9505674893877829,0.94808684350050954,0.94554712591366707,0.94294849486743704,0.94029111227267559,0.93757514370082506,0.93480075837359833,0.93196812915243488,0.92907743252773056,0.92612884860784117,0.92312256110786073,0.92005875733817455,0.91693762819278879,0.91375936813743674,0.9105241751974622,0.90723225094548132,0.90388380048882355,0.90047903245675165,0.89701815898746351,0.89350139571487408,0.88992896175518033,0.88630107969320859,0.88261797556854693,0.87887987886146035,0.87508702247859371,0.87123964273845955,0.86733797935671464,0.86338227543122337,0.85937277742691198,0.85530973516041187,0.85119340178449465,0.84702403377229896,0.8428018909013506,0.83852723623737735,0.83420033611791755,0.82982146013572589,0.82539088112197623,0.82090887512926258,0.81637572141439907,0.81179170242102072,0.80715710376198535,0.80247221420157799,0.79773732563751931,0.79295273308277858,0.7881187346471924,0.78323563151889042,0.77830372794552993,0.77332333121533914,0.76829475163797079,0.76321830252516842,0.75809430017124557,0.75292306383337704,0.74770491571170916,0.74244018092928321,0.73712918751177903,0.73177226636707671,0.72636975126463943,0.72092197881471642,0.7154292884473713,0.70989202239133287,0.70431052565267216,0.69868514599330644,0.69301623390933176,0.68730414260918427,0.68154922799163375,0.67575184862360871,0.66991236571785517,0.66403114311043121,0.65810854723803769,0.65214494711518667,0.64614071431120967,0.64009622292710722,0.63401184957223866,0.62788797334085844,0.62172497578849528,0.61552324090817911,0.60928315510651665,0.60300510717961453,0.59668948828885593,0.59033669193652838,0.58394711394130627,0.57752115241358859,0.57105920773069474,0.56456168251191807,0.55802898159344017,0.55146151200310756,0.54485968293507037,0.53822390572428869,0.53155459382090142,0.52485216276446822,0.51811703015807742,0.51134961564232662,0.50455034086917749,0.4977196294756831,0.49085790705759363,0.48396560114283876,0.47704314116488955,0.47009095843600313,0.4631094861203478,0.45609915920701588,0.44906041448292017,0.44199369050557907,0.43489942757579308,0.4277780677102096,0.42063005461378417,0.41345583365213412,0.40625585182378898,0.39903055773234103,0.39178040155849314,0.38450583503201097,0.37720731140357605,0.36988528541654681,0.36254021327862451,0.3551725526334284,0.34778276253198248,0.34037130340411287,0.33293863702976106,0.32548522651021178,0.31801153623923822,0.31051803187416893,0.30300518030687273,0.29547344963466998,0.28792330913116654,0.28035522921701439,0.27276968143060321,0.26516713839867867,0.25754807380689659,0.24991296237030841,0.24226227980378318,0.23459650279236882,0.22691610896159015,0.21922157684769125,0.21151338586781906,0.20379201629015206,0.19605794920397812,0.18831166648971787,0.18055365078890231,0.17278438547409958,0.16500435461879923,0.15721404296725086,0.14941393590426094,0.14160451942495175,0.13378628010447915,0.1259597050677175,0.11812528195890805,0.11028349891127502,0.10243484451661342,0.094579807794844983,0.086718878163550728,0.078852545407476549,0.070981299648015903,0.063105631312673757,0.055226031104508168,0.047342989971557919,0.039456999076252823,0.031568549764810501,0.0236781335366241,0.015786242013636979,0.0078933669097132116,6.123233995736766e-17,0.99999816969565092,0.99999267878930354,0.99998352730105788,0.99997071526441417,0.9999542427262722,0.99993410974693131,0.99991031640009065,0.99988286277284832,0.99985174896570128,0.99981697509254497,0.99977854128067289,0.9997364476707763,0.99969069441694347,0.999641281686659,0.99958820966080364,0.99953147853365332,0.99947108851287847,0.99940703981954337,0.99933933268810515,0.99926796736641321,0.99919294411570803,0.99911426321062036,0.99903192493917026,0.99894592960276585,0.99885627751620243,0.99876296900766115,0.99866600441870812,0.99856538410429263,0.99846110843274627,0.99835317778578148,0.9982415925584901,0.99812635315934206,0.9980074600101837,0.99788491354623632,0.99775871421609452,0.99762886248172467,0.99749535881846318,0.99735820371501471,0.99721739767345052,0.9970729412092062,0.99692483485108052,0.99677307914123292,0.99661767463518158,0.99645862190180168,0.99629592152332291,0.99612957409532776,0.99595958022674913,0.99578594053986791,0.9956086556703112,0.99542772626704945,0.99524315299239452,0.99505493652199672,0.99486307754484304,0.99466757676325424,0.99446843489288195,0.99426565266270672,0.994059230815035,0.99384917010549645,0.99363547130304097,0.99341813518993627,0.99319716256176493,0.99297255422742126,0.99274431100910832,0.99251243374233544,0.99227692327591444,0.99203778047195701,0.99179500620587147,0.99154860136635914,0.99129856685541196,0.99104490358830843,0.99078761249361036,0.99052669451315989,0.99026215060207567,0.98999398172874931,0.98972218887484231,0.98944677303528172,0.9891677352182574,0.98888507644521739,0.98859879775086501,0.98830890018315443,0.98801538480328732,0.98771825268570856,0.98741750491810254,0.98711314260138927,0.98680516684971997,0.98649357879047339,0.98617837956425158,0.98585957032487548,0.98553715223938088,0.98521112648801434,0.98488149426422866,0.98454825677467828,0.98421141523921518,0.9838709708908846,0.98352692497591998,0.98317927875373878,0.98282803349693793,0.98247319049128867,0.98211475103573254,0.98175271644237605,0.98138708803648611,0.98101786715648542,0.98064505515394707,0.98026865339358993,0.9798886632532734,0.97950508612399301,0.97911792340987425,0.97872717652816843,0.97833284690924693,0.97793493599659631,0.97753344524681263,0.97712837612959647,0.97671973012774727,0.97630750873715821,0.97589171346681047,0.97547234583876785,0.97504940738817114,0.97462289966323257,0.97419282422522979,0.97375918264850103,0.97332197652043817,0.97288120744148188,0.97243687702511517,0.97198898689785795,0.97153753869926074,0.9710825340818986,0.97062397471136541,0.97016186226626777,0.9696961984382183,0.96922698493183013,0.96875422346471041,0.9682779157674537,0.96779806358363629,0.96731466866980909,0.96682773279549172,0.96633725774316614,0.96584324530826926,0.96534569729918751,0.96484461553724932,0.96434000185671909,0.96383185810478988,0.96332018614157733,0.96280498784011215,0.96228626508633375,0.9617640197790831,0.96123825383009598,0.96070896916399584,0.96017616771828662,0.95963985144334596,0.95910002230241798,0.95855668227160573,0.95800983333986467,0.95745947750899463,0.95690561679363295,0.95634825322124706,0.95578738883212688,0.95522302567937734,0.9546551658289113,0.95408381135944142,0.95350896436247268,0.95293062694229513,0.95234880121597587,0.95176348931335097,0.95117469337701843,0.95058241556232981,0.94998665803738225,0.94938742298301104,0.9487847125927813,0.94817852907297984,0.94756887464260742,0.94695575153337019,0.94633916198967205,0.94571910826860595,0.94509559263994602,0.94446861738613908,0.94383818480229598,0.94320429719618393,0.94256695688821723,0.94192616621144953,0.94128192751156459,0.94063424314686828,0.93998311548827962,0.93932854691932222,0.93867053983611548,0.93800909664736576,0.93734421977435778,0.93667591165094566,0.9360041747235438,0.93532901145111835,0.93465042430517797,0.93396841576976442,0.93328298834144419,0.9325941445292989,0.93190188685491626,0.93120621785238056,0.93050714006826407,0.92980465606161666,0.92909876840395766,0.92838947967926555,0.92767679248396873,0.92696070942693609,0.9262412331294676,0.92551836622528438,0.92479211136051942,0.92406247119370744,0.9233294483957758,0.92259304565003386,0.92185326565216408,0.92111011111021157,0.92036358474457425,0.91961368928799303,0.91886042748554175,0.91810380209461717,0.91734381588492864,0.91658047163848844,0.91581377214960114,0.91504372022485347,0.91427031868310427,0.91349357035547385,0.91271347808533398,0.91193004472829731,0.91114327315220667,0.91035316623712492,0.90955972687532427,0.90876295797127593,0.90796286244163904,0.90715944321524999,0.90635270323311257,0.90554264544838592,0.90472927282637472,0.90391258834451782,0.90309259499237748,0.90226929577162862,0.90144269369604757,0.90061279179150089,0.8997795930959348,0.89894310065936378,0.89810331754385919,0.89726024682353844,0.89641389158455353,0.89556425492507985,0.89471133995530472,0.8938551497974162,0.89299568758559122,0.89213295646598489,0.89126695959671798,0.89039770014786634,0.88952518130144864,0.88864940625141486,0.88777037820363491,0.8868881003758865,0.88600257599784338,0.8851138083110639,0.8842218005689787,0.88332655603687915,0.88242807799190526,0.88152636972303333,0.88062143453106478,0.87971327572861302,0.87880189664009223,0.8778873006017045,0.87696949096142796,0.87604847107900485,0.87512424432592839,0.87419681408543104,0.873266183752472,0.872332356733725,0.87139533644756495,0.87045512632405675,0.86951172980494174,0.86856515034362525,0.86761539140516453,0.86666245646625517,0.86570634901521915,0.8647470725519919,0.86378463058810906,0.86281902664669397,0.86185026426244493,0.86087834698162202,0.85990327836203395,0.85892506197302543,0.85794370139546383,0.85695920022172634,0.85597156205568647,0.85498079051270104,0.85398688921959698,0.85298986181465808,0.85198971194761153,0.85098644327961448,0.84998005948324107,0.84897056424246864,0.84795796125266409,0.8469422542205709,0.84592344686429488,0.84490154291329123,0.84387654610835039,0.84284846020158477,0.84181728895641417,0.84078303614755345,0.83974570556099715,0.83870530099400675,0.83766182625509633,0.8366152851640184,0.83556568155175048,0.83451301926048072,0.83345730214359393,0.83239853406565723,0.83133671890240635,0.83027186054073088,0.82920396287866105,0.82813302982535186,0.82705906530107043,0.82598207323718065,0.82490205757612889,0.82381902227143,0.82273297128765233,0.82164390860040359,0.82055183819631616,0.81945676407303247,0.81835869023919039,0.81725762071440844,0.81615355952927149,0.81504651072531531,0.81393647835501248,0.81282346648175718,0.81170747917985031,0.81058852053448471,0.8094665946417301,0.80834170560851826,0.80721385755262764,0.80608305460266871,0.80494930089806849,0.8038126005890559,0.80267295783664561,0.80153037681262418,0.80038486169953338,0.79923641669065593,0.79808504598999952,0.79693075381228184,0.79577354438291481,0.79461342193798934,0.79345039072425982,0.79228445499912836,0.79111561903062944,0.78994388709741403,0.78876926348873455,0.78759175250442803,0.78641135845490173,0.78522808566111624,0.78404193845457026,0.78285292117728456,0.78166103818178612,0.78046629383109223,0.77926869249869446,0.77806823856854257,0.77686493643502874,0.77565879050297126,0.77444980518759832,0.77323798491453222,0.77202333411977264,0.77080585724968098,0.76958555876096357,0.7683624431206556,0.76713651480610501,0.7659077783049556,0.76467623811513075,0.76344189874481738,0.7622047647124488,0.76096484054668867,0.75972213078641415,0.75847663998069947,0.75722837268879895,0.75597733348013074,0.75472352693426004,0.75346695764088178,0.75220763019980463,0.75094554922093326,0.74968071932425273,0.74841314513980994,0.74714283130769821,0.74586978247803937,0.74459400331096703,0.74331549847660938,0.74203427265507249,0.7407503305364227,0.73946367682066971,0.73817431621774943,0.73688225344750624,0.73558749323967643,0.73429004033387058,0.73298989947955617,0.73168707543603984,0.73038157297245077,0.72907339686772255,0.72776255191057626,0.72644904289950207,0.72513287464274256,0.72381405195827475,0.72249257967379243,0.72116846262668854,0.71984170566403738,0.71851231364257717,0.71718029142869177,0.71584564389839334,0.71450837593730421,0.71316849244063918,0.71182599831318738,0.71048089846929463,0.7091331978328449,0.70778290133724286,0.70643001392539573,0.70507454054969498,0.70371648617199811,0.70235585576361081,0.70099265430526869,0.69962688678711882,0.69825855820870164,0.69688767357893255,0.69551423791608391,0.69413825624776615,0.69275973361090981,0.69137867505174677,0.68999508562579193,0.68860897039782509,0.68722033444187147,0.68582918284118388,0.684435520688224,0.68303935308464381,0.68164068514126641,0.68023952197806792,0.67883586872415835,0.67742973051776301,0.67602111250620367,0.67461001984587976,0.67319645770224912,0.6717804312498098,0.67036194567208063,0.66894100616158214,0.66751761791981779,0.66609178615725506,0.66466351609330598,0.66323281295630865,0.66179968198350714,0.6603641284210332,0.65892615752388684,0.65748577455591672,0.65604298478980116,0.65459779350702918,0.65315020599788032,0.65170022756140611,0.65024786350541031,0.64879311914642923,0.6473359998097129,0.64587651082920494,0.64441465754752347,0.64295044531594125,0.64148387949436636,0.6400149654513223,0.63854370856392884,0.63707011421788151,0.63559418780743271,0.63411593473537131,0.63263536041300372,0.63115247026013288,0.62966726970503939,0.62817976418446153,0.62668995914357473,0.62519786003597244,0.62370347232364554,0.62220680147696261,0.62070785297465014,0.61920663230377204,0.61770314495970968,0.61619739644614191,0.61468939227502484,0.61317913796657175,0.61166663904923257,0.6101519010596741,0.60863492954275922,0.6071157300515273,0.60559430814717308,0.60407066939902676,0.60254481938453375,0.60101676368923374,0.59948650790674085,0.59795405763872256,0.59641941849487978,0.59488259609292571,0.59334359605856613,0.59180242402547756,0.59025908563528806,0.58871358653755534,0.58716593238974712,0.58561612885721936,0.58406418161319651,0.58251009633874995,0.58095387872277804,0.57939553446198444,0.57783506926085759,0.57627248883164994,0.57470779889435719,0.57314100517669686,0.57157211341408765,0.57000112934962832,0.56842805873407687,0.56685290732582938,0.56527568089089864,0.56369638520289345,0.56211502604299746,0.56053160919994782,0.55894614047001367,0.55735862565697603,0.55576907057210512,0.55417748103414022,0.55258386286926808,0.55098822191110086,0.54939056400065589,0.54779089498633349,0.5461892207238962,0.54458554707644657,0.54297987991440644,0.54137222511549477,0.53976258856470694,0.5381509761542923,0.53653739378373366,0.53492184735972415,0.53330434279614736,0.53168488601405439,0.53006348294164307,0.5284401395142353,0.52681486167425651,0.52518765537121259,0.52355852656166912,0.5219274812092296,0.52029452528451225,0.51865966476512992,0.51702290563566744,0.51538425388765929,0.51374371551956843,0.51210129653676384,0.51045700295149876,0.50881084078288874,0.50716281605688907,0.50551293480627346,0.50386120307061166,0.50220762689624709,0.50055221233627523,0.49889496545052092,0.49723589230551662,0.49557499897447982,0.49391229153729127,0.49224777608047199,0.49058145869716191,0.48891334548709686,0.48724344255658669,0.48557175601849245,0.48389829199220452,0.48222305660361986,0.4805460559851199,0.47886729627554725,0.47718678362018457,0.47550452417073102,0.4738205240852803,0.47213478952829763,0.47044732667059769,0.46875814168932167,0.46706724076791478,0.46537463009610386,0.46368031586987385,0.46198430429144632,0.4602866015692561,0.45858721391792845,0.45688614755825663,0.45518340871717894,0.45347900362775595,0.45177293852914807,0.45006521966659152,0.44835585329137706,0.44664484566082613,0.44493220303826819,0.4432179316930176,0.44150203790035103,0.43978452794148426,0.4380654081035491,0.43634468467957088,0.43462236396844423,0.43289845227491158,0.43117295590953908,0.42944588118869376,0.42771723443452025,0.425987021974918,0.42425525014351778,0.42252192527965859,0.42078705372836467,0.41905064184032159,0.417312695971854,0.41557322248490158,0.41383222774699618,0.41208971813123829,0.41034570001627374,0.40860017978627039,0.40685316383089504,0.40510465854528899,0.40335467033004624,0.40160320559118873,0.39985027074014357,0.39809587219371939,0.39634001637408267,0.39458270970873455,0.39282395863048708,0.39106376957743999,0.38930214899295618,0.38753910332563951,0.38577463902931031,0.38400876256298189,0.382241480390837,0.38047279898220415,0.37870272481153394,0.37693126435837537,0.37515842410735167,0.37338421054813747,0.37160863017543433,0.36983168948894718,0.36805339499336065,0.36627375319831496,0.36449277061838237,0.36271045377304317,0.36092680918666215,0.35914184338846378,0.35735556291250958,0.35556797429767345,0.35377908408761777,0.35198889883076956,0.35019742508029666,0.34840466939408338,0.34661063833470701,0.34481533846941281,0.34301877637009132,0.34122095861325336,0.33942189178000631,0.3376215824560298,0.33582003723155185,0.33401726270132454,0.3322132654646,0.33040805212510643,0.3286016292910231,0.3267940035749573,0.32498518159391948,0.32317516996929913,0.32136397532684047,0.31955160429661844,0.3177380635130142,0.31592335961469109,0.3141074992445696,0.31229048904980411,0.31047233568175808,0.30865304579597946,0.30683262605217665,0.30501108311419406,0.30318842364998749,0.30136465433160009,0.29953978183513791,0.29771381284074466,0.29588675403257858,0.29405861209878692,0.29222939373148205,0.29039910562671656,0.28856775448445909,0.28673534700856945,0.28490188990677473,0.28306738989064339,0.28123185367556247,0.27939528798071173,0.27755769952903958,0.27571909504723824,0.27387948126571926,0.27203886491858892,0.27019725274362338,0.26835465148224447,0.26651106787949386,0.26466650868400998,0.26282098064800224,0.26097449052722671,0.25912704508096107,0.25727865107198034,0.25542931526653151,0.25357904443430973,0.2517278453484319,0.24987572478541387,0.24802268952514414,0.24616874635085981,0.24431390204912132,0.2424581634097879,0.24060153722599251,0.23874403029411717,0.23688564941376805,0.23502640138774999,0.2331662930220427,0.23130533112577503,0.22944352251120029,0.22758087399367127,0.22571739239161534,0.22385308452650948,0.22198795722285528,0.22012201730815417,0.21825527161288161,0.21638772697046332,0.2145193902172495,0.21265026819248989,0.21078036773830885,0.20890969569968026,0.20703825892440242,0.20516606426307332,0.20329311856906454,0.20141942869849766,0.19954500151021809,0.19766984386577027,0.19579396262937263,0.19391736466789231,0.19204005685082012,0.19016204605024545,0.18828333914083112,0.18640394299978758,0.18452386450684891,0.18264311054424676,0.18076168799668549,0.17887960375131684,0.17699686469771475,0.17511347772785016,0.17322944973606605,0.17134478761905123,0.16945949827581644,0.16757358860766824,0.16568706551818402,0.16379993591318653,0.1619122067007189,0.16002388479101903,0.1581349770964946,0.1562454905316977,0.15435543201329888,0.15246480846006302,0.15057362679282313,0.14868189393445527,0.1467896168098532,0.14489680234590299,0.14300345747145779,0.1411095891173125,0.13921520421617767,0.13732030970265535,0.13542491251321287,0.1335290195861577,0.13163263786161195,0.12973577428148708,0.12783843578945839,0.12594062933093969,0.12404236185305799,0.12214364030462734,0.12024447163612453,0.11834486279966294,0.1164448207489672,0.11454435243934774,0.11264346482767541,0.11074216487235594,0.10884045953330468,0.10693835577192032,0.10503586055106064,0.10313298083501618,0.10122972358948501,0.09932609578154715,0.097422104379639107,0.095517756353528355,0.093613058674287861,0.091708018314270737,0.089802642247083855,0.087896937447563633,0.085990910891749636,0.084084569556859251,0.082177920421262166,0.080270970464454777,0.078363726667034686,0.076456196010675354,0.074548385478099638,0.072640302053055605,0.070731952720290037,0.068823344465523087,0.06691448427542275,0.065005379137579242,0.063096036040479406,0.061186461973481231,0.059276663926788355,0.057366648891423684,0.055456423859205094,0.053545995822718941,0.051635371775294731,0.049724558710979458,0.04781356362451205,0.045902393511297747,0.043991055367382702,0.042079556189427512,0.040167902974682916,0.038256102720963296,0.0363441624266213,0.034432089090522193,0.03251988971201826,0.030607571290923181,0.0286951408274864,0.026782605322367731,0.024869971776610836,0.022957247191618929,0.021044438569128264,0.019131552911182723,0.01721859722010818,0.015305578498486886,0.013392503749131807,0.011479379975061233,0.0095662141794722513,0.0076530133657164339,0.0057397845372733226,0.003826534697725007,0.0019132708507304933,6.123233995736766e-17],"twiddles":[0.99912283009885838,0.041875653729199623,0.99649285924950437,0.083677843332315482,0.99211470131447788,0.12533323356430423,0.98599603707050498,0.16676874671610226,0.97814760073380569,0.20791169081775931,0.96858316112863119,0.24868988716485474,0.95731949753206724,0.28903179694447156,0.94437637023748111,0.32886664673858318,0.92977648588825146,0.36812455268467792,0.91354545764260087,0.40673664307580015,0.8957117602394129,0.44463517918492745,0.87630668004386358,0.48175367410171521,0.85536426016050671,0.51802700937313018,0.83292124071009954,0.55339154924334399,0.80901699437494745,0.58778525229247314,0.78369345732583984,0.6211477802783103,0.75699505565175651,0.65342060399010538,0.72896862742141155,0.68454710592868862,0.69966334051336554,0.71447267963280325,0.66913060635885824,0.74314482547739424,0.63742398974868975,0.77051324277578914,0.60459911486237494,0.79652991802419626,0.57071356768443182,0.82114920913370393,0.53582679497899677,0.84432792550201496,0.50000000000000011,0.8660254037844386,0.46329603511986178,0.88620357923121462,0.42577929156507283,0.90482705246601947,0.3875155864521031,0.92186315158850052,0.34857204732181529,0.93728198949189145,0.30901699437494745,0.95105651629515353,0.26891982061526593,0.9631625667976581,0.22835087011065588,0.97357890287316018,0.18738131458572474,0.98228725072868861,0.14608302856241187,0.98927233296298833,0.10452846326765368,0.99452189536827329,0.062790519529313527,0.99802672842827156,0.020942419883357051,0.9997806834748455,0,0.99649285924950437,0.083677843332315482,0.98599603707050498,0.16676874671610226,0.96858316112863119,0.24868988716485474,0.94437637023748111,0.32886664673858318,0.91354545764260087,0.40673664307580015,0.87630668004386358,0.48175367410171521,0.83292124071009954,0.55339154924334399,0.78369345732583984,0.6211477802783103,0.72896862742141155,0.68454710592868862,0.66913060635885824,0.74314482547739424,0.60459911486237494,0.79652991802419626,0.53582679497899677,0.84432792550201496,0,0.98599603707050498,0.16676874671610226,0.94437637023748111,0.32886664673858318,0.87630668004386358,0.48175367410171521,0.78369345732583984,0.6211477802783103,0.66913060635885824,0.74314482547739424,0.53582679497899677,0.84432792550201496,0.3875155864521031,0.92186315158850052,0.22835087011065588,0.97357890287316018,0.062790519529313527,0.99802672842827156,-0.10452846326765333,0.9945218953682734,-0.26891982061526559,0.96316256679765822,-0.42577929156507233,0.90482705246601969,0,0.96858316112863119,0.24868988716485474,0.87630668004386358,0.48175367410171521,0,0.87630668004386358,0.48175367410171521,0.53582679497899677,0.84432792550201496,0,0.72896862742141155,0.68454710592868862,0.062790519529313527,0.99802672842827156,0,0.53582679497899677,0.84432792550201496,-0.42577929156507233,0.90482705246601969,0,0,0,0,0,0,0.99993329980345125,0.011549716194840827,0.99973320811163724,0.023097891653001097,0.99939975161686856,0.034642985843335132,0.99893297480237242,0.04618345864573959,0.99833293993635963,0.057717770556606103,0.99759972706371691,0.069244382894191644,0.99673343399532999,0.080761758003879316,0.99573417629503447,0.092268359463301988,0.99460208726420063,0.1037626522873018,0.99333731792394997,0.11524310313269766,0.99194003699500977,0.12670818050283381,0.99041043087520519,0.13815635495188219,0.98874870361459388,0.14958609928887107,0.98695507688824569,0.16099588878141291,0.9850297899666709,0.17238420135910418,0.98297309968390179,0.18374951781657034,0.98078528040323043,0.19509032201612825,0.97846662398060902,0.20640510109003971,0.97601743972571564,0.21769234564232842,0.97343805436069286,0.22895054995013409,0.97072881197656213,0.24017821216457649,0.96789007398732263,0.25137383451110268,0.96492221908173792,0.26253592348929061,0.96182564317281904,0.27366299007208283,0.95860075934500966,0.28475354990442325,0.95524799779907998,0.29580612350127039,0.9517678057947383,0.30681923644496184,0.94816064759096585,0.31779141958190166,0.94442700438408522,0.32872120921854614,0.94056737424356762,0.33960714731666136,0.9365822720455913,0.35044778168782581,0.93247222940435581,0.36124166618715292,0.92823779460116518,0.37198736090620749,0.92387953251128674,0.38268343236508978,0.91939802452859654,0.39332845370366265,0.91479386848802102,0.40392100487189492,0.91006767858578586,0.41445967281929702,0.90522008529748199,0.42494305168342189,0.90025173529395963,0.43536974297740805,0.89516329135506234,0.44573835577653825,0.88995543228121166,0.4560475069037892,0.8846288528028553,0.46629582111434803,0.87918426348778966,0.47648193127907046,0.8736223906463696,0.48660447856685629,0.86794397623461828,0.49666211262591825,0.8621497777552507,0.50665349176391938,0.85624056815662153,0.51657728312695472,0.85021713572961422,0.52643216287735572,0.84408028400248214,0.53621681637028984,0.83783083163365824,0.54592993832913439,0.83146961230254524,0.55557023301960218,0.82499747459830231,0.56513641442259188,0.81841528190664348,0.57462720640574383,0.81172391229466123,0.5840413428936766,0.80492425839369219,0.59337756803688224,0.79801722728023949,0.60263463637925641,0.79100374035496901,0.6118113130242433,0.78388473321979368,0.62090637379957125,0.77666115555306348,0.62991860542055766,0.76933397098287892,0.63884680565196139,0.76190415695854186,0.64768978346836192,0.75437270462016393,0.65644635921304251,0.74674061866644759,0.66511536475535671,0.73900891722065909,0.67369564364655721,0.73117863169481079,0.68218605127406717,0.72325080665206987,0.69058545501417146,0.71522649966741347,0.69889273438310939,0.70710678118654757,0.70710678118654746,0.69889273438310939,0.71522649966741336,0.69058545501417146,0.72325080665206998,0.68218605127406717,0.73117863169481079,0.67369564364655721,0.73900891722065909,0.66511536475535671,0.74674061866644759,0.65644635921304251,0.75437270462016393,0.64768978346836192,0.76190415695854186,0.63884680565196128,0.76933397098287892,0.62991860542055755,0.77666115555306348,0.62090637379957125,0.78388473321979357,0.61181131302424341,0.79100374035496901,0.60263463637925641,0.79801722728023949,0.59337756803688224,0.80492425839369208,0.58404134289367671,0.81172391229466112,0.57462720640574383,0.81841528190664348,0.56513641442259188,0.82499747459830231,0.55557023301960229,0.83146961230254524,0.54592993832913439,0.83783083163365835,0.53621681637028984,0.84408028400248214,0.52643216287735584,0.8502171357296141,0.51657728312695472,0.85624056815662153,0.50665349176391938,0.86214977775525059,0.49666211262591831,0.86794397623461828,0.48660447856685624,0.8736223906463696,0.47648193127907051,0.87918426348778966,0.46629582111434803,0.8846288528028553,0.45604750690378915,0.88995543228121166,0.44573835577653831,0.89516329135506234,0.43536974297740805,0.90025173529395963,0.42494305168342178,0.9052200852974821,0.41445967281929708,0.91006767858578586,0.40392100487189497,0.91479386848802102,0.39332845370366276,0.91939802452859642,0.38268343236508984,0.92387953251128674,0.37198736090620743,0.92823779460116518,0.36124166618715303,0.93247222940435581,0.35044778168782587,0.9365822720455913,0.33960714731666136,0.94056737424356762,0.32872120921854625,0.94442700438408511,0.31779141958190166,0.94816064759096585,0.30681923644496178,0.9517678057947383,0.2958061235012705,0.95524799779907998,0.28475354990442325,0.95860075934500966,0.27366299007208278,0.96182564317281904,0.26253592348929067,0.96492221908173781,0.25137383451110268,0.96789007398732263,0.24017821216457641,0.97072881197656213,0.22895054995013414,0.97343805436069286,0.21769234564232839,0.97601743972571564,0.20640510109003962,0.97846662398060902,0.19509032201612833,0.98078528040323043,0.18374951781657031,0.98297309968390179,0.17238420135910429,0.9850297899666709,0.16099588878141294,0.98695507688824569,0.14958609928887104,0.98874870361459388,0.1381563549518823,0.99041043087520519,0.12670818050283383,0.99194003699500977,0.1152431031326976,0.99333731792394997,0.1037626522873019,0.99460208726420063,0.092268359463302016,0.99573417629503447,0.080761758003879247,0.99673343399532999,0.069244382894191728,0.99759972706371691,0.05771777055660611,0.99833293993635963,0.046183458645739521,0.99893297480237242,0.034642985843335208,0.99939975161686856,0.023097891653001093,0.99973320811163724,0.011549716194840744,0.99993329980345125,0,0,0.99973320811163724,0.023097891653001097,0.99893297480237242,0.04618345864573959,0.99759972706371691,0.069244382894191644,0.99573417629503447,0.092268359463301988,0.99333731792394997,0.11524310313269766,0.99041043087520519,0.13815635495188219,0.98695507688824569,0.16099588878141291,0.98297309968390179,0.18374951781657034,0.97846662398060902,0.20640510109003971,0.97343805436069286,0.22895054995013409,0.96789007398732263,0.25137383451110268,0.96182564317281904,0.27366299007208283,0.95524799779907998,0.29580612350127039,0.94816064759096585,0.31779141958190166,0.94056737424356762,0.33960714731666136,0.93247222940435581,0.36124166618715292,0.92387953251128674,0.38268343236508978,0.91479386848802102,0.40392100487189492,0.90522008529748199,0.42494305168342189,0.89516329135506234,0.44573835577653825,0.8846288528028553,0.46629582111434803,0.8736223906463696,0.48660447856685629,0.8621497777552507,0.50665349176391938,0.85021713572961422,0.52643216287735572,0.83783083163365824,0.54592993832913439,0.82499747459830231,0.56513641442259188,0.81172391229466123,0.5840413428936766,0.79801722728023949,0.60263463637925641,0.78388473321979368,0.62090637379957125,0.76933397098287892,0.63884680565196139,0.75437270462016393,0.65644635921304251,0.73900891722065909,0.67369564364655721,0.72325080665206987,0.69058545501417146,0,0,0.99893297480237242,0.04618345864573959,0.99573417629503447,0.092268359463301988,0.99041043087520519,0.13815635495188219,0.98297309968390179,0.18374951781657034,0.97343805436069286,0.22895054995013409,0.96182564317281904,0.27366299007208283,0.94816064759096585,0.31779141958190166,0.93247222940435581,0.36124166618715292,0.91479386848802102,0.40392100487189492,0.89516329135506234,0.44573835577653825,0.8736223906463696,0.48660447856685629,0.85021713572961422,0.52643216287735572,0.82499747459830231,0.56513641442259188,0.79801722728023949,0.60263463637925641,0.76933397098287892,0.63884680565196139,0.73900891722065909,0.67369564364655721,0.70710678118654757,0.70710678118654746,0.67369564364655721,0.73900891722065909,0.63884680565196128,0.76933397098287892,0.60263463637925641,0.79801722728023949,0.56513641442259188,0.82499747459830231,0.52643216287735584,0.8502171357296141,0.48660447856685624,0.8736223906463696,0.44573835577653831,0.89516329135506234,0.40392100487189497,0.91479386848802102,0.36124166618715303,0.93247222940435581,0.31779141958190166,0.94816064759096585,0.27366299007208278,0.96182564317281904,0.22895054995013414,0.97343805436069286,0.18374951781657031,0.98297309968390179,0.1381563549518823,0.99041043087520519,0.092268359463302016,0.99573417629503447,0.046183458645739521,0.99893297480237242,0,0,0.99759972706371691,0.069244382894191644,0.99041043087520519,0.13815635495188219,0.97846662398060902,0.20640510109003971,0.96182564317281904,0.27366299007208283,0.94056737424356762,0.33960714731666136,0.91479386848802102,0.40392100487189492,0.88462885280285541,0.46629582111434797,0.85021713572961422,0.52643216287735572,0.81172391229466123,0.5840413428936766,0.76933397098287892,0.63884680565196139,0.72325080665206998,0.69058545501417135,0.67369564364655721,0.73900891722065909,0.62090637379957125,0.78388473321979357,0.56513641442259199,0.82499747459830219,0.50665349176391938,0.86214977775525059,0.44573835577653831,0.89516329135506234,0.38268343236508984,0.92387953251128674,0.31779141958190166,0.94816064759096585,0.25137383451110268,0.96789007398732263,0.18374951781657031,0.98297309968390179,0.11524310313269782,0.99333731792394997,0.046183458645739743,0.99893297480237242,-0.023097891653000972,0.99973320811163724,-0.092268359463301891,0.99573417629503458,-0.16099588878141283,0.98695507688824569,-0.22895054995013403,0.97343805436069286,-0.29580612350127039,0.95524799779907998,-0.36124166618715275,0.93247222940435592,-0.42494305168342167,0.9052200852974821,-0.48660447856685612,0.8736223906463696,-0.54592993832913428,0.83783083163365835,-0.60263463637925629,0.7980172272802396,-0.65644635921304251,0.75437270462016404,0,0,0.99573417629503447,0.092268359463301988,0.98297309968390179,0.18374951781657034,0.96182564317281904,0.27366299007208283,0.93247222940435581,0.36124166618715292,0.89516329135506234,0.44573835577653825,0.85021713572961422,0.52643216287735572,0.79801722728023949,0.60263463637925641,0.73900891722065909,0.67369564364655721,0,0.98297309968390179,0.18374951781657034,0.93247222940435581,0.36124166618715292,0.85021713572961422,0.52643216287735572,0.73900891722065909,0.67369564364655721,0.60263463637925641,0.79801722728023949,0.44573835577653831,0.89516329135506234,0.27366299007208278,0.96182564317281904,0.092268359463302016,0.99573417629503447,0,0.96182564317281904,0.27366299007208283,0.85021713572961422,0.52643216287735572,0.67369564364655721,0.73900891722065909,0.44573835577653831,0.89516329135506234,0.18374951781657031,0.98297309968390179,-0.092268359463301891,0.99573417629503458,-0.36124166618715275,0.93247222940435592,-0.60263463637925629,0.7980172272802396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99997647459596672,0.0068593188161695648,0.99990589949075626,0.013718314895846044,0.99978827800498438,0.02057666551772136,0.99962361567283686,0.027434047990856757,0.99941192024180958,0.034290139669865646,0.99915320167234367,0.04114461797009436,0.99884747213735681,0.04799716038279999,0.99849474602167076,0.054847444490324714,0.99809503992133419,0.061695147981265783,0.99764837264284223,0.06853994866564056,0.9971547652022511,0.075381524490045773,0.99661424082418992,0.082219553552810451,0.99602682494076744,0.089053714119141592,0.99539254519037557,0.095883684636262123,0.99471143141638907,0.10270914374854011,0.99398351566576149,0.10952977031260892,0.9932088321875171,0.11634524341247718,0.99238741743113945,0.12315524237462819,0.99151931004485661,0.12995944678310783,0.99060455087382271,0.13675753649460048,0.98964318295819587,0.14354919165349186,0.98863525153111331,0.15033409270691866,0.98758080401656312,0.15711192041980368,0.98647989002715308,0.16388235588987601,0.98533256136177594,0.17064508056267594,0.9841388720031724,0.1773997762465428,0.98289887811539156,0.18414612512758644,0.98161263804114762,0.19088380978464053,0.98028021229907569,0.1976125132041974,0.97890166358088349,0.204331918795324,0.97747705674840213,0.21104171040455749,0.97600645883053427,0.21774157233078073,0.97448993902010039,0.22443118934007614,0.97292756867058283,0.23111024668055774,0.97131942129276927,0.23777843009718061,0.96966557255129315,0.24443542584652658,0.96796610026107432,0.2510809207115664,0.96622108438365717,0.25771460201639668,0.96443060702344885,0.26433615764095159,0.96259475242385606,0.2709452760356883,0.96071360696332109,0.27754164623624566,0.95878725915125818,0.28412495787807551,0.95681579962388819,0.29069490121104541,0.95479932113997512,0.2972511671140125,0.95273791857646117,0.30379344710936812,0.95063168892400252,0.31032143337755197,0.94848073128240651,0.31683481877153502,0.94628514685596798,0.32333329683127132,0.94404503894870873,0.32981656179811691,0.94176051295951568,0.33628430862921616,0.93943167637718283,0.34273623301185435,0.93705863877535311,0.34917203137777558,0.93464151180736332,0.35559140091746633,0.93218040920099055,0.36199403959440246,0.9296754467531011,0.36837964615926039,0.92712674232420234,0.37474792016409125,0.92453441583289719,0.38109856197645714,0.92189858925024182,0.38743127279352907,0.91921938659400682,0.39374575465614586,0.91649693392284226,0.40004171046283332,0.9137313593303461,0.40631884398378321,0.91092279293903777,0.41257685987479098,0.90807136689423551,0.41881546369115213,0.90517721535783879,0.42503436190151589,0.90224047450201605,0.43123326190169614,0.8992612825027978,0.43741187202843879,0.89623977953357481,0.44356990157314458,0.89317610775850353,0.4497070607955474,0.89007041132581644,0.45582306093734659,0.88692283636104041,0.46191761423579331,0.88373353096012097,0.46799043393723011,0.88050264518245436,0.47404123431058276,0.8772303310438273,0.48006973066080427,0.87391674250926421,0.48607563934226988,0.87056203548578315,0.49205867777212303,0.86716636781506051,0.4980185644435709,0.86372989926600408,0.50395501893912953,0.86025279152723599,0.509867761943818,0.85673520819948512,0.51575651525829991,0.85317731478788938,0.52162100181197335,0.84957927869420891,0.5274609456760071,0.8459412692089493,0.53327607207632333,0.8422634575033966,0.53906610740652583,0.83854601662156358,0.54483077924077339,0.83478912147204754,0.55056981634659841,0.83099294881980112,0.55628294869766715,0.82715767727781508,0.56196990748648612,0.82328348729871481,0.56763042513704887,0.81937056116626938,0.57326423531742576,0.81541908298681509,0.57887107295229523,0.81142923868059347,0.58445067423541608,0.80740121597300307,0.59000277664203915,0.80333520438576733,0.59552711894125976,0.79923139522801712,0.60102344120830853,0.79508998158728916,0.60649148483678172,0.79091115832044201,0.61193099255080774,0.78669512204448699,0.61734170841715341,0.78244207112733788,0.62272337785726495,0.77815220567847698,0.62807574765924634,0.77382572753954015,0.6333985659897734,0.76946284027482004,0.63869158240594248,0.76506374916168773,0.64395454786705408,0.76062866118093508,0.64918721474633045,0.75615778500703545,0.6543893368425665,0.75165133099832526,0.6595606693917142,0.74710951118710744,0.66470096907839804,0.74253253926967411,0.66980999404736408,0.73792063059625235,0.6748875039148593,0.73327400216087224,0.67993325977994123,0.72859287259115635,0.6849470242357194,0.72387746213803339,0.68992856138052439,0.71912799266537586,0.69487763682900838,0.71434468763956005,0.69979401772317218,0.7095277721189529,0.70467747274332193,0,0.99990589949075626,0.013718314895846044,0.99962361567283686,0.027434047990856757,0.99915320167234367,0.04114461797009436,0.99849474602167076,0.054847444490324714,0.99764837264284223,0.06853994866564056,0.99661424082418992,0.082219553552810451,0.99539254519037557,0.095883684636262123,0.99398351566576149,0.10952977031260892,0.99238741743113945,0.12315524237462819,0.99060455087382271,0.13675753649460048,0.98863525153111331,0.15033409270691866,0.98647989002715308,0.16388235588987601,0.9841388720031724,0.1773997762465428,0.98161263804114762,0.19088380978464053,0.97890166358088349,0.204331918795324,0.97600645883053427,0.21774157233078073,0.97292756867058283,0.23111024668055774,0.96966557255129315,0.24443542584652658,0.96622108438365717,0.25771460201639668,0.96259475242385606,0.2709452760356883,0.95878725915125818,0.28412495787807551,0.95479932113997512,0.2972511671140125,0.95063168892400252,0.31032143337755197,0.94628514685596798,0.32333329683127132,0.94176051295951568,0.33628430862921616,0.93705863877535311,0.34917203137777558,0.93218040920099055,0.36199403959440246,0.92712674232420234,0.37474792016409125,0.92189858925024182,0.38743127279352907,0.91649693392284226,0.40004171046283332,0.91092279293903777,0.41257685987479098,0.90517721535783879,0.42503436190151589,0.8992612825027978,0.43741187202843879,0.89317610775850353,0.4497070607955474,0.88692283636104041,0.46191761423579331,0.88050264518245436,0.47404123431058276,0.87391674250926421,0.48607563934226988,0.86716636781506051,0.4980185644435709,0.86025279152723599,0.509867761943818,0.85317731478788938,0.52162100181197335,0.8459412692089493,0.53327607207632333,0.83854601662156358,0.54483077924077339,0.83099294881980112,0.55628294869766715,0.82328348729871481,0.56763042513704887,0.81541908298681509,0.57887107295229523,0.80740121597300307,0.59000277664203915,0.79923139522801712,0.60102344120830853,0.79091115832044201,0.61193099255080774,0.78244207112733788,0.62272337785726495,0.77382572753954015,0.6333985659897734,0.76506374916168773,0.64395454786705408,0.75615778500703545,0.6543893368425665,0.74710951118710744,0.66470096907839804,0.73792063059625235,0.6748875039148593,0.72859287259115635,0.6849470242357194,0.71912799266537586,0.69487763682900838,0.7095277721189529,0.70467747274332193,0.69979401772317207,0.71434468763956005,0.68992856138052439,0.72387746213803339,0.67993325977994123,0.73327400216087224,0.66980999404736408,0.74253253926967411,0.6595606693917142,0.75165133099832526,0.64918721474633045,0.76062866118093519,0.63869158240594248,0.76946284027482004,0.62807574765924623,0.77815220567847698,0.61734170841715341,0.78669512204448699,0.60649148483678172,0.79508998158728916,0.59552711894125976,0.80333520438576744,0.58445067423541608,0.81142923868059347,0.57326423531742565,0.81937056116626938,0.56196990748648612,0.8271576772778152,0.55056981634659841,0.83478912147204754,0.53906610740652561,0.84226345750339671,0.52746094567600721,0.84957927869420891,0.51575651525830002,0.85673520819948501,0.50395501893912964,0.86372989926600408,0.49205867777212309,0.87056203548578315,0.48006973066080427,0.8772303310438273,0.46799043393723005,0.88373353096012097,0.45582306093734654,0.89007041132581644,0.44356990157314452,0.89623977953357492,0.43123326190169603,0.90224047450201617,0.41881546369115202,0.90807136689423551,0.40631884398378326,0.9137313593303461,0.39374575465614592,0.91921938659400682,0.3810985619764572,0.92453441583289719,0.36837964615926039,0.9296754467531011,0.35559140091746633,0.93464151180736332,0.3427362330118543,0.93943167637718283,0.32981656179811686,0.94404503894870873,0.31683481877153497,0.94848073128240651,0.30379344710936806,0.95273791857646117,0.2906949012110453,0.95681579962388819,0.27754164623624578,0.96071360696332109,0.26433615764095164,0.96443060702344885,0.25108092071156646,0.96796610026107421,0.23777843009718061,0.97131942129276927,0.22443118934007611,0.97448993902010039,0.21104171040455746,0.97747705674840213,0.19761251320419737,0.98028021229907569,0.18414612512758635,0.98289887811539156,0.17064508056267583,0.98533256136177594,0.15711192041980354,0.98758080401656312,0.14354919165349195,0.98964318295819587,0.12995944678310789,0.99151931004485661,0.11634524341247721,0.9932088321875171,0.10270914374854012,0.99471143141638907,0.089053714119141578,0.99602682494076744,0.075381524490045732,0.9971547652022511,0.061695147981265727,0.99809503992133419,0.047997160382799907,0.99884747213735681,0.034290139669865542,0.99941192024180958,0.020576665517721235,0.99978827800498438,0.0068593188161696376,0.99997647459596672,0,0.99978827800498438,0.02057666551772136,0.99915320167234367,0.04114461797009436,0.99809503992133419,0.061695147981265783,0.99661424082418992,0.082219553552810451,0.99471143141638907,0.10270914374854011,0.99238741743113945,0.12315524237462819,0.98964318295819587,0.14354919165349186,0.98647989002715308,0.16388235588987601,0.98289887811539156,0.18414612512758644,0.97890166358088349,0.204331918795324,0.97448993902010039,0.22443118934007611,0.96966557255129315,0.24443542584652658,0.96443060702344885,0.26433615764095159,0.95878725915125818,0.28412495787807551,0.95273791857646117,0.30379344710936812,0.94628514685596798,0.32333329683127132,0.93943167637718283,0.3427362330118543,0.93218040920099055,0.36199403959440246,0.92453441583289719,0.38109856197645714,0.91649693392284226,0.40004171046283332,0.90807136689423551,0.41881546369115213,0.8992612825027978,0.43741187202843873,0.89007041132581644,0.45582306093734659,0.88050264518245436,0.47404123431058276,0.87056203548578315,0.49205867777212303,0.86025279152723599,0.509867761943818,0.84957927869420891,0.5274609456760071,0.83854601662156358,0.54483077924077339,0.82715767727781508,0.56196990748648612,0.81541908298681509,0.57887107295229523,0.80333520438576744,0.59552711894125965,0.79091115832044201,0.61193099255080774,0.77815220567847698,0.62807574765924634,0.76506374916168784,0.64395454786705408,0.75165133099832526,0.6595606693917142,0.73792063059625235,0.6748875039148593,0.7238774621380335,0.68992856138052439,0.7095277721189529,0.70467747274332193,0.69487763682900827,0.71912799266537586,0.67993325977994123,0.73327400216087224,0.66470096907839804,0.74710951118710733,0.64918721474633045,0.76062866118093519,0.6333985659897734,0.77382572753954026,0.61734170841715352,0.78669512204448699,0.60102344120830864,0.79923139522801712,0.58445067423541608,0.81142923868059347,0.56763042513704887,0.82328348729871481,0.55056981634659841,0.83478912147204754,0.53327607207632333,0.8459412692089493,0.51575651525830002,0.85673520819948501,0.49801856444357095,0.86716636781506051,0.48006973066080427,0.8772303310438273,0.46191761423579325,0.88692283636104041,0.44356990157314452,0.89623977953357492,0.425034361901516,0.90517721535783868,0.40631884398378326,0.9137313593303461,0.38743127279352912,0.92189858925024182,0.36837964615926039,0.9296754467531011,0.34917203137777558,0.93705863877535311,0.32981656179811686,0.94404503894870873,0.31032143337755214,0.95063168892400252,0.29069490121104552,0.95681579962388819,0.27094527603568835,0.96259475242385606,0.25108092071156646,0.96796610026107421,0.23111024668055774,0.97292756867058283,0.21104171040455746,0.97747705674840213,0.19088380978464045,0.98161263804114762,0.17064508056267605,0.98533256136177583,0.15033409270691875,0.9886352515311132,0.12995944678310789,0.99151931004485661,0.10952977031260894,0.99398351566576149,0.089053714119141578,0.99602682494076744,0.068539948665640504,0.99764837264284223,0.047997160382800129,0.99884747213735681,0.027434047990856865,0.99962361567283686,0.0068593188161696376,0.99997647459596672,-0.013718314895846006,0.99990589949075626,-0.034290139669865646,0.99941192024180958,-0.054847444490324741,0.99849474602167076,-0.075381524490045829,0.9971547652022511,-0.095883684636261998,0.99539254519037557,-0.11634524341247708,0.9932088321875171,-0.13675753649460043,0.99060455087382271,-0.15711192041980365,0.98758080401656312,-0.1773997762465428,0.9841388720031724,-0.19761251320419745,0.98028021229907569,-0.21774157233078059,0.97600645883053427,-0.2377784300971805,0.97131942129276927,-0.25771460201639662,0.96622108438365717,-0.27754164623624561,0.96071360696332109,-0.29725116711401245,0.95479932113997512,-0.31683481877153508,0.94848073128240651,-0.33628430862921599,0.94176051295951568,-0.35559140091746622,0.93464151180736343,-0.37474792016409114,0.92712674232420245,-0.39374575465614581,0.91921938659400682,-0.41257685987479098,0.91092279293903777,-0.43123326190169592,0.90224047450201617,-0.44970706079554723,0.89317610775850353,-0.46799043393722994,0.88373353096012108,-0.48607563934226983,0.87391674250926421,-0.50395501893912953,0.86372989926600408,-0.52162100181197335,0.85317731478788938,-0.53906610740652572,0.84226345750339671,-0.55628294869766726,0.83099294881980112,-0.57326423531742576,0.81937056116626938,-0.59000277664203926,0.80740121597300307,-0.60649148483678184,0.79508998158728905,-0.62272337785726473,0.78244207112733799,-0.63869158240594226,0.76946284027482015,-0.65438933684256639,0.75615778500703557,-0.66980999404736397,0.74253253926967411,-0.68494702423571929,0.72859287259115635,-0.69979401772317207,0.71434468763956016,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99998010199095555,0.0063083771413972025,0.99992040875568378,0.012616503234503574,0.99982092266973777,0.018924127241019009,0.99968164769226753,0.025230998142624441,0.99950258936586267,0.03153686495097139,0.99928375481633147,0.03784147671767029,0.99902515275241766,0.044144582544277215,0.99872679346545379,0.050445931592278684,0.99838868882895127,0.056745273093073999,0.99801085229812836,0.06304235635795484,0.99759329890937454,0.069336930788081702,0.99713604527965205,0.0756287458844567,0.99663910960583446,0.081917551257892435,0.996102511663983,0.088203096638976519,0.99552627280855899,0.094485131888031246,0.99491041597157426,0.10076340700506825,0.99425496566167881,0.10703767213973737,0.99355994796318492,0.11330767760126984,0.99282539053502949,0.11957317386841487,0.99205132260967321,0.12583391159936969,0.99123777499193733,0.13208964164170234,0.99038478005777753,0.13834011504226681,0.98949237175299554,0.14458508305711068,0.98856058559188853,0.15082429716137383,0.98758945865583536,0.15705750905917887,0.98657902959182109,0.16328447069351246,0.9855293386108992,0.16950493425609664,0.98444042748659077,0.17571865219725105,0.98331233955322261,0.18192537723574403,0.98214511970420271,0.18812486236863374,0.98093881439023312,0.19431686088109765,0.9796934716174619,0.20050112635625097,0.97840914094557274,0.20667741268495302,0.97708587348581222,0.21284547407560123,0.97572372189895595,0.21900506506391304,0.97432274039321343,0.22515594052269397,0.97288298472206969,0.23129785567159308,0.97140451218206769,0.23743056608684393,0.96988738161052723,0.24355382771099199,0.96833165338320404,0.24966739686260681,0.9667373894118868,0.25577103024597991,0.96510465314193328,0.26186448496080672,0.96343350954974583,0.26794751851185322,0.96172402514018474,0.27401988881860612,0.95997626794392277,0.28008135422490693,0.95819030751473677,0.28613167350856861,0.95636621492674045,0.29217060589097554,0.9545040627715552,0.29819791104666543,0.95260392515542203,0.30421334911289322,0.95066587769625188,0.31021668069917685,0.94868999752061645,0.31620766689682389,0.94667636326067894,0.32218606928843935,0.94462505505106487,0.32815164995741331,0.94253615452567274,0.33410417149738975,0.94040974481442563,0.34004339702171366,0.93824591053996309,0.34596909017285876,0.93604473781427278,0.35188101513183306,0.9338063142352645,0.3577789366275641,0.93153072888328337,0.36366261994626131,0.92921807231756526,0.36953183094075687,0.92686843657263263,0.37538633603982391,0.92448191515463229,0.38122590225747155,0.92205860303761356,0.38705029720221712,0.91959859665974941,0.39285928908633383,0.91710199391949798,0.39865264673507572,0.91456889417170728,0.40443013959587698,0.91199939822366061,0.41019153774752715,0.90939360833106508,0.41593661190932124,0.90675162819398269,0.42166513345018397,0.90407356295270247,0.4273768743977685,0.90135951918355728,0.43307160744752865,0.89860960489468222,0.43874910597176509,0.89582392952171586,0.44440914402864384,0.89300260392344577,0.45005149637118796,0.89014574037739658,0.45567593845624155,0.8872534525753617,0.46128224645340565,0.88432585561887855,0.46687019725394585,0.88136306601464887,0.47243956847967095,0.87836520166990117,0.47799013849178296,0.87533238188769913,0.48352168639969723,0.87226472736219385,0.48903399206983322,0.86916236017381998,0.49452683613437476,0.86602540378443871,0.49999999999999994,0.86285398303242278,0.50545326585658079,0.85964822412769026,0.51088641668585044,0.85640825464668013,0.51629923627004037,0.85313420352727676,0.52169150920048446,0.84982620106367746,0.5270630208861915,0.84648437890120831,0.53241355756238551,0.84310887003108448,0.537742906299012,0.83969980878511796,0.54305085500921213,0.83625733083037179,0.54833719245776325,0.832781573163761,0.55360170826948452,0.82927267410660055,0.55884419293760934,0.82573077329910061,0.56406443783212334,0.82215601169481001,0.56926223520806596,0.81854853155500618,0.57443737821379892,0.81490847644303388,0.57958966089923769,0.81123599121859236,0.584718878224047,0.80753122203196992,0.58982482606580178,0.80379431631822817,0.5949073012281092,0.80002542279133448,0.59996610144869555,0.79622469143824393,0.60500102540745615,0.79239227351292996,0.61001187273446578,0.78852832153036589,0.61499844401795356,0.78463298926045455,0.61996054081223861,0.78070643172190946,0.62489796564562727,0.77674880517608558,0.62981052202827115,0.77276026712076029,0.63469801445998797,0.76874097628386651,0.63956024843804038,0.76469109261717461,0.64439703046487695,0.76061077728992865,0.64920816805583281,0.75650019268243118,0.65399346974678929,0.75235950237958127,0.65875274510179371,0.7481888711643655,0.66348580472063801,0.74398846501129889,0.66819246024639578,0.73975845107982086,0.67287252437291889,0.73549899770764215,0.67752581085229058,0.73121027440404651,0.68215213450223777,0.72689245184314377,0.68675131121350108,0.72254570185707878,0.69132315795716071,0.71817019742919275,0.69586749279192106,0.71376611268713896,0.70038413487135076,0.70933362289595348,0.70487290445107997,0,0.99992040875568378,0.012616503234503574,0.99968164769226753,0.025230998142624441,0.99928375481633147,0.03784147671767029,0.99872679346545379,0.050445931592278684,0.99801085229812836,0.06304235635795484,0.99713604527965205,0.0756287458844567,0.996102511663983,0.088203096638976519,0.99491041597157426,0.10076340700506825,0.99355994796318492,0.11330767760126984,0.99205132260967321,0.12583391159936969,0.99038478005777753,0.13834011504226681,0.98856058559188853,0.15082429716137383,0.98657902959182109,0.16328447069351246,0.98444042748659077,0.17571865219725105,0.98214511970420271,0.18812486236863374,0.9796934716174619,0.20050112635625097,0.97708587348581222,0.21284547407560123,0.97432274039321343,0.22515594052269397,0.97140451218206769,0.23743056608684393,0.96833165338320404,0.24966739686260681,0.96510465314193328,0.26186448496080672,0.96172402514018474,0.27401988881860612,0.95819030751473677,0.28613167350856861,0.9545040627715552,0.29819791104666543,0.95066587769625188,0.31021668069917685,0.94667636326067894,0.32218606928843935,0.94253615452567274,0.33410417149738975,0.93824591053996309,0.34596909017285876,0.9338063142352645,0.3577789366275641,0.92921807231756526,0.36953183094075687,0.92448191515463229,0.38122590225747155,0.91959859665974941,0.39285928908633383,0.91456889417170728,0.40443013959587698,0.90939360833106508,0.41593661190932124,0.90407356295270247,0.4273768743977685,0.89860960489468222,0.43874910597176509,0.89300260392344577,0.45005149637118796,0.8872534525753617,0.46128224645340565,0.88136306601464887,0.47243956847967095,0.87533238188769913,0.48352168639969723,0.86916236017381998,0.49452683613437476,0.86285398303242278,0.50545326585658079,0.85640825464668013,0.51629923627004037,0.84982620106367746,0.5270630208861915,0.84310887003108448,0.537742906299012,0.83625733083037179,0.54833719245776325,0.82927267410660055,0.55884419293760934,0.82215601169481001,0.56926223520806596,0.81490847644303388,0.57958966089923769,0.80753122203196992,0.58982482606580178,0.80002542279133448,0.59996610144869555,0.79239227351292996,0.61001187273446578,0.78463298926045455,0.61996054081223861,0.77674880517608558,0.62981052202827115,0.76874097628386651,0.63956024843804038,0.76061077728992865,0.64920816805583281,0.75235950237958127,0.65875274510179371,0.74398846501129889,0.66819246024639578,0.73549899770764215,0.67752581085229058,0.72689245184314377,0.68675131121350108,0.71817019742919275,0.69586749279192106,0.70933362289595348,0.70487290445107997,0.70038413487135076,0.71376611268713885,0.69132315795716071,0.72254570185707878,0.68215213450223788,0.73121027440404629,0.67287252437291889,0.73975845107982074,0.66348580472063801,0.74818887116436539,0.6539934697467894,0.75650019268243107,0.64439703046487717,0.76469109261717449,0.63469801445998808,0.77276026712076029,0.62489796564562727,0.78070643172190946,0.61499844401795367,0.78852832153036578,0.60500102540745615,0.79622469143824381,0.5949073012281092,0.80379431631822806,0.58471887822404711,0.81123599121859225,0.57443737821379903,0.81854853155500606,0.56406443783212334,0.82573077329910061,0.55360170826948452,0.83278157316376089,0.54305085500921224,0.83969980878511785,0.53241355756238562,0.8464843789012082,0.52169150920048457,0.85313420352727665,0.51088641668585055,0.85964822412769026,0.50000000000000011,0.8660254037844386,0.48903399206983328,0.87226472736219374,0.47799013849178318,0.87836520166990106,0.46687019725394596,0.88432585561887855,0.4556759384562416,0.89014574037739658,0.44440914402864401,0.89582392952171574,0.43307160744752876,0.90135951918355728,0.42166513345018403,0.90675162819398258,0.41019153774752731,0.9119993982236605,0.39865264673507583,0.91710199391949798,0.38705029720221712,0.92205860303761356,0.37538633603982408,0.92686843657263263,0.36366261994626137,0.93153072888328325,0.35188101513183306,0.93604473781427278,0.34004339702171382,0.94040974481442563,0.32815164995741336,0.94462505505106487,0.31620766689682411,0.94868999752061633,0.30421334911289333,0.95260392515542203,0.2921706058909756,0.95636621492674045,0.2800813542249071,0.95997626794392277,0.26794751851185333,0.96343350954974571,0.25577103024597997,0.9667373894118868,0.24355382771099215,0.96988738161052712,0.23129785567159317,0.97288298472206969,0.21900506506391304,0.97572372189895595,0.20667741268495315,0.97840914094557274,0.19431686088109773,0.98093881439023312,0.18192537723574426,0.98331233955322261,0.16950493425609678,0.9855293386108992,0.15705750905917895,0.98758945865583536,0.14458508305711087,0.98949237175299554,0.13208964164170245,0.99123777499193733,0.11957317386841491,0.99282539053502949,0.10703767213973756,0.99425496566167881,0.094485131888031357,0.99552627280855899,0.081917551257892449,0.99663910960583446,0.069336930788081869,0.99759329890937454,0.056745273093074089,0.99838868882895127,0.044144582544277222,0.99902515275241766,0.031536864950971542,0.99950258936586267,0.018924127241019079,0.99982092266973777,0.0063083771413974142,0.99998010199095555,0,0.99982092266973777,0.018924127241019009,0.99928375481633147,0.03784147671767029,0.99838868882895127,0.056745273093074006,0.99713604527965205,0.0756287458844567,0.99552627280855899,0.09448513188803126,0.99355994796318492,0.11330767760126985,0.99123777499193733,0.13208964164170234,0.98856058559188853,0.15082429716137383,0.9855293386108992,0.16950493425609667,0.98214511970420271,0.18812486236863377,0.97840914094557274,0.20667741268495302,0.97432274039321343,0.225155940522694,0.96988738161052723,0.24355382771099202,0.96510465314193328,0.26186448496080672,0.95997626794392277,0.28008135422490693,0.9545040627715552,0.29819791104666543,0.94868999752061645,0.31620766689682395,0.94253615452567274,0.3341041714973898,0.93604473781427278,0.35188101513183312,0.92921807231756526,0.36953183094075692,0.92205860303761356,0.38705029720221712,0.91456889417170728,0.40443013959587698,0.90675162819398258,0.42166513345018403,0.89860960489468222,0.43874910597176514,0.89014574037739658,0.4556759384562416,0.88136306601464887,0.472439568479671,0.87226472736219385,0.48903399206983322,0.86285398303242278,0.50545326585658079,0.85313420352727676,0.52169150920048446,0.84310887003108448,0.537742906299012,0.832781573163761,0.55360170826948452,0.82215601169481001,0.56926223520806596,0.81123599121859236,0.58471887822404711,0.80002542279133448,0.59996610144869567,0.78852832153036578,0.61499844401795367,0.77674880517608547,0.62981052202827126,0.76469109261717461,0.64439703046487706,0.75235950237958116,0.65875274510179382,0.73975845107982074,0.672872524372919,0.72689245184314366,0.68675131121350108,0.71376611268713896,0.70038413487135076,0.70038413487135076,0.71376611268713885,0.68675131121350108,0.72689245184314366,0.67287252437291889,0.73975845107982074,0.65875274510179371,0.75235950237958127,0.64439703046487706,0.76469109261717461,0.62981052202827126,0.77674880517608558,0.61499844401795356,0.78852832153036589,0.59996610144869555,0.80002542279133448,0.58471887822404711,0.81123599121859236,0.56926223520806596,0.82215601169481001,0.55360170826948452,0.832781573163761,0.537742906299012,0.84310887003108437,0.52169150920048457,0.85313420352727665,0.5054532658565809,0.86285398303242278,0.48903399206983328,0.87226472736219374,0.472439568479671,0.88136306601464887,0.4556759384562416,0.89014574037739658,0.43874910597176514,0.89860960489468211,0.42166513345018403,0.90675162819398258,0.40443013959587698,0.91456889417170728,0.38705029720221712,0.92205860303761356,0.36953183094075687,0.92921807231756526,0.35188101513183306,0.93604473781427278,0.33410417149738975,0.94253615452567274,0.31620766689682389,0.94868999752061645,0.29819791104666543,0.9545040627715552,0.28008135422490688,0.95997626794392277,0.26186448496080666,0.96510465314193328,0.24355382771099193,0.96988738161052723,0.22515594052269391,0.97432274039321343,0.20667741268495293,0.97840914094557274,0.18812486236863368,0.98214511970420271,0.16950493425609656,0.9855293386108992,0.15082429716137372,0.98856058559188853,0.13208964164170223,0.99123777499193744,0.11330767760126972,0.99355994796318492,0.094485131888031135,0.99552627280855899,0.075628745884456575,0.99713604527965205,0.056745273093073867,0.99838868882895127,0.037841476717670366,0.99928375481633147,0.018924127241019079,0.99982092266973777,6.123233995736766e-17,1,-0.018924127241018954,0.99982092266973777,-0.037841476717670242,0.99928375481633147,-0.056745273093073964,0.99838868882895127,-0.075628745884456672,0.99713604527965205,-0.094485131888031232,0.99552627280855899,-0.11330767760126982,0.99355994796318492,-0.13208964164170231,0.99123777499193733,-0.15082429716137383,0.98856058559188853,-0.16950493425609667,0.9855293386108992,-0.18812486236863377,0.98214511970420271,-0.20667741268495302,0.97840914094557274,-0.22515594052269403,0.97432274039321343,-0.24355382771099204,0.96988738161052723,-0.26186448496080678,0.96510465314193328,-0.28008135422490699,0.95997626794392277,-0.29819791104666549,0.9545040627715552,-0.316207666896824,0.94868999752061645,-0.3341041714973898,0.94253615452567263,-0.35188101513183317,0.93604473781427278,-0.36953183094075698,0.92921807231756515,-0.38705029720221723,0.92205860303761356,-0.40443013959587709,0.91456889417170717,-0.42166513345018392,0.90675162819398269,-0.43874910597176525,0.89860960489468211,-0.45567593845624149,0.89014574037739669,-0.47243956847967111,0.88136306601464875,-0.48903399206983322,0.87226472736219385,-0.5054532658565809,0.86285398303242278,-0.52169150920048446,0.85313420352727676,-0.53774290629901211,0.84310887003108437,-0.55360170826948452,0.832781573163761,-0.56926223520806618,0.8221560116948099,-0.58471887822404711,0.81123599121859236,-0.59996610144869578,0.80002542279133437,-0.61499844401795356,0.78852832153036589,-0.62981052202827137,0.77674880517608536,-0.64439703046487706,0.76469109261717461,-0.65875274510179394,0.75235950237958116,-0.67287252437291889,0.73975845107982086,-0.6867513112135013,0.72689245184314355,-0.70038413487135087,0.71376611268713896,0,0.99968164769226753,0.025230998142624441,0.99872679346545379,0.050445931592278684,0.99713604527965205,0.0756287458844567,0.99491041597157426,0.10076340700506825,0.99205132260967321,0.12583391159936969,0.98856058559188853,0.15082429716137383,0.98444042748659077,0.17571865219725105,0.9796934716174619,0.20050112635625097,0.97432274039321343,0.22515594052269397,0.96833165338320404,0.24966739686260681,0.96172402514018474,0.27401988881860612,0.9545040627715552,0.29819791104666543,0.94667636326067894,0.32218606928843935,0.93824591053996309,0.34596909017285876,0.92921807231756526,0.36953183094075687,0.91959859665974941,0.39285928908633383,0.90939360833106508,0.41593661190932124,0.89860960489468222,0.43874910597176509,0.8872534525753617,0.46128224645340565,0.87533238188769913,0.48352168639969723,0.86285398303242278,0.50545326585658079,0.84982620106367746,0.5270630208861915,0.83625733083037179,0.54833719245776325,0.82215601169481001,0.56926223520806596,0.80753122203196992,0.58982482606580178,0.79239227351292996,0.61001187273446578,0.77674880517608558,0.62981052202827115,0.76061077728992865,0.64920816805583281,0.74398846501129889,0.66819246024639578,0.72689245184314377,0.68675131121350108,0.70933362289595348,0.70487290445107997,0.69132315795716071,0.72254570185707878,0.67287252437291889,0.73975845107982074,0.6539934697467894,0.75650019268243107,0.63469801445998808,0.77276026712076029,0.61499844401795367,0.78852832153036578,0.5949073012281092,0.80379431631822806,0.57443737821379903,0.81854853155500606,0.55360170826948452,0.83278157316376089,0.53241355756238562,0.8464843789012082,0.51088641668585055,0.85964822412769026,0,0.99872679346545379,0.050445931592278684,0.99491041597157426,0.10076340700506825,0.98856058559188853,0.15082429716137383,0.9796934716174619,0.20050112635625097,0.96833165338320404,0.24966739686260681,0.9545040627715552,0.29819791104666543,0.93824591053996309,0.34596909017285876,0.91959859665974941,0.39285928908633383,0.89860960489468222,0.43874910597176509,0.87533238188769913,0.48352168639969723,0.84982620106367746,0.5270630208861915,0.82215601169481001,0.56926223520806596,0.79239227351292996,0.61001187273446578,0.76061077728992865,0.64920816805583281,0.72689245184314377,0.68675131121350108,0.69132315795716071,0.72254570185707878,0.6539934697467894,0.75650019268243107,0.61499844401795367,0.78852832153036578,0.57443737821379903,0.81854853155500606,0.53241355756238562,0.8464843789012082,0.48903399206983328,0.87226472736219374,0.44440914402864401,0.89582392952171574,0.39865264673507583,0.91710199391949798,0.35188101513183306,0.93604473781427278,0.30421334911289333,0.95260392515542203,0.25577103024597997,0.9667373894118868,0.20667741268495315,0.97840914094557274,0.15705750905917895,0.98758945865583536,0.10703767213973756,0.99425496566167881,0.056745273093074089,0.99838868882895127,0.0063083771413974142,0.99998010199095555,-0.044144582544277097,0.99902515275241766,-0.094485131888031232,0.99552627280855899,-0.14458508305711054,0.98949237175299565,-0.19431686088109762,0.98093881439023312,-0.24355382771099182,0.96988738161052723,-0.29217060589097549,0.95636621492674045,-0.34004339702171349,0.94040974481442574,-0.38705029720221701,0.92205860303761356,-0.43307160744752848,0.90135951918355739,-0.47799013849178307,0.87836520166990106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99991845569547733,0.012770354715973792,0.99967383608085636,0.025538626732559942,0.99926618105081,0.038302733690035347,0.99869555708922997,0.051060593907950605,0.99796205725838438,0.06381012672462838,0.99706580118374044,0.076549252836495635,0.99600693503445481,0.08927589463719432,0.99478563149953469,0.10198797655641534,0.99340208975967503,0.11468342539840043,0.9918565354547737,0.1273601706800567,0.99014922064713251,0.14001614496862902,0.98828042378034853,0.15264928421887447,0.9862504496339034,0.16525752810968491,0.98405962927345714,0.17783882038010165,0.98170831999685493,0.19039110916466834,0.97919690527585612,0.20291234732806676,0.97652579469359435,0.2154004927989813,0.97369542387777908,0.22785350890313755,0.97070625442964964,0.2402693646954607,0.9675587738486936,0.25264603529129942,0.96425349545314099,0.26498150219666167,0.96079095829624772,0.27727375363740786,0.95717172707838249,0.28952078488734861,0.95339639205493054,0.30172059859519229,0.94946556894002943,0.31387120511029076,0.94537989880615336,0.32597062280712835,0.94114004797956152,0.33801687840850275,0.93674670793162784,0.35000800730734355,0.93220059516606968,0.36194205388711792,0.92750245110209473,0.37381707184076873,0.92265304195348319,0.38563112448813569,0.91765315860362795,0.39738228509180523,0.91250361647654998,0.40906863717133984,0.90720525540391206,0.42068827481583415,0.90175893948805153,0.43223930299474694,0.8961655569610556,0.44371983786695968,0.89042602003990057,0.45512800708800877,0.88454126477767936,0.46646195011544428,0.87851225091094243,0.47771981851226286,0.87233996170317496,0.48889977624836689,0.86602540378443871,0.49999999999999994,0.8595696069872012,0.51101867944711032,0.85297362417838241,0.5219540175685935,0.84623853108764413,0.53280423093536566,0.83936542613194998,0.54356755000122114,0.83235543023642722,0.55424221939142471,0.82520968665155581,0.56482649818899344,0.81792936076671774,0.57531866021862055,0.81051563992013465,0.5857169943281948,0.80296973320522758,0.59601980466786975,0.79529287127342652,0.60622541096663796,0.78748630613346571,0.61633214880636367,0.77955131094719532,0.62633836989323055,0.77148917982194298,0.6362424423265598,0.76330122759945995,0.64604275086495433,0.75498878964148508,0.65573769718972652,0.74655322161196269,0.66532570016556536,0.73799589925594922,0.67480519609840206,0.729318218175245,0.68417463899043041,0.72052159360078705,0.69343250079224172,0.71160746016184151,0.70257727165203199,0,0.99967383608085636,0.025538626732559942,0.99869555708922997,0.051060593907950605,0.99706580118374044,0.076549252836495635,0.99478563149953469,0.10198797655641534,0.9918565354547737,0.1273601706800567,0.98828042378034853,0.15264928421887447,0.98405962927345714,0.17783882038010165,0.97919690527585612,0.20291234732806676,0.97369542387777908,0.22785350890313755,0.9675587738486936,0.25264603529129942,0.96079095829624772,0.27727375363740786,0.95339639205493054,0.30172059859519229,0.94537989880615336,0.32597062280712835,0.93674670793162784,0.35000800730734355,0.92750245110209473,0.37381707184076873,0.91765315860362795,0.39738228509180523,0.90720525540391206,0.42068827481583415,0.8961655569610556,0.44371983786695968,0.88454126477767936,0.46646195011544428,0.87233996170317496,0.48889977624836689,0.8595696069872012,0.51101867944711032,0.84623853108764413,0.53280423093536566,0.83235543023642722,0.55424221939142471,0.81792936076671774,0.57531866021862055,0.80296973320522758,0.59601980466786975,0.78748630613346571,0.61633214880636367,0.77148917982194298,0.6362424423265598,0.75498878964148508,0.65573769718972652,0.73799589925594922,0.67480519609840206,0.72052159360078705,0.69343250079224172,0.70257727165203199,0.71160746016184151,0.68417463899043041,0.72931821817524489,0.66532570016556547,0.74655322161196258,0.64604275086495444,0.76330122759945984,0.62633836989323066,0.7795513109471951,0.60622541096663807,0.7952928712734264,0.58571699432819491,0.81051563992013453,0.56482649818899355,0.82520968665155581,0.54356755000122126,0.83936542613194987,0.52195401756859361,0.85297362417838229,0.50000000000000011,0.8660254037844386,0.47771981851226297,0.87851225091094232,0.45512800708800882,0.89042602003990057,0.43223930299474717,0.90175893948805141,0.40906863717134001,0.91250361647654998,0.38563112448813575,0.92265304195348319,0.36194205388711792,0.93220059516606968,0.33801687840850292,0.94114004797956152,0.31387120511029087,0.94946556894002943,0.28952078488734867,0.95717172707838249,0.26498150219666189,0.96425349545314087,0.24026936469546087,0.97070625442964964,0.21540049279898141,0.97652579469359435,0.19039110916466842,0.98170831999685493,0.16525752810968514,0.9862504496339034,0.14001614496862919,0.99014922064713251,0.11468342539840053,0.99340208975967503,0.089275894637194375,0.9960069350344547,0.063810126724628602,0.99796205725838438,0.038302733690035493,0.99926618105081,0.012770354715973884,0.99991845569547733,0,0.99926618105081,0.038302733690035347,0.99706580118374044,0.076549252836495635,0.99340208975967503,0.11468342539840042,0.98828042378034853,0.15264928421887447,0.98170831999685493,0.19039110916466834,0.97369542387777908,0.22785350890313752,0.96425349545314099,0.26498150219666167,0.95339639205493054,0.30172059859519229,0.94114004797956163,0.3380168784085027,0.92750245110209473,0.37381707184076873,0.91250361647654998,0.40906863717133984,0.8961655569610556,0.44371983786695962,0.87851225091094243,0.47771981851226286,0.8595696069872012,0.51101867944711032,0.83936542613194998,0.54356755000122114,0.81792936076671774,0.57531866021862055,0.79529287127342652,0.60622541096663796,0.77148917982194298,0.63624244232655969,0.74655322161196269,0.66532570016556536,0.72052159360078705,0.69343250079224172,0.69343250079224172,0.72052159360078694,0.66532570016556547,0.74655322161196258,0.63624244232655991,0.77148917982194276,0.60622541096663818,0.79529287127342629,0.57531866021862066,0.81792936076671763,0.54356755000122126,0.83936542613194987,0.51101867944711044,0.85956960698720108,0.47771981851226297,0.87851225091094232,0.44371983786695984,0.89616555696105549,0.40906863717134001,0.91250361647654998,0.37381707184076901,0.92750245110209462,0.33801687840850292,0.94114004797956152,0.3017205985951924,0.95339639205493054,0.26498150219666189,0.96425349545314087,0.22785350890313771,0.97369542387777896,0.19039110916466864,0.98170831999685493,0.15264928421887466,0.98828042378034853,0.11468342539840053,0.99340208975967503,0.076549252836495885,0.99706580118374044,0.038302733690035493,0.99926618105081,2.8327694488239898e-16,1,-0.038302733690035153,0.99926618105081,-0.076549252836495538,0.99706580118374044,-0.11468342539840019,0.99340208975967514,-0.15264928421887433,0.98828042378034853,-0.19039110916466806,0.98170831999685504,-0.22785350890313735,0.97369542387777908,-0.26498150219666133,0.9642534954531411,-0.30172059859519207,0.95339639205493065,-0.33801687840850259,0.94114004797956163,-0.37381707184076851,0.92750245110209473,-0.40906863717133968,0.91250361647655009,-0.44371983786695934,0.89616555696105582,-0.47771981851226269,0.87851225091094254,-0.51101867944711021,0.85956960698720131,-0.54356755000122103,0.83936542613195009,-0.57531866021862021,0.81792936076671796,-0.60622541096663773,0.79529287127342663,-0.63624244232655958,0.77148917982194309,-0.66532570016556525,0.7465532216119628,-0.69343250079224161,0.72052159360078705,0,0.99869555708922997,0.051060593907950605,0.99478563149953469,0.10198797655641534,0.98828042378034853,0.15264928421887447,0.97919690527585612,0.20291234732806676,0.9675587738486936,0.25264603529129942,0.95339639205493054,0.30172059859519229,0.93674670793162784,0.35000800730734355,0.91765315860362795,0.39738228509180523,0.8961655569610556,0.44371983786695968,0.87233996170317496,0.48889977624836689,0.84623853108764413,0.53280423093536566,0.81792936076671774,0.57531866021862055,0.78748630613346571,0.61633214880636367,0.75498878964148508,0.65573769718972652,0.72052159360078705,0.69343250079224172,0.68417463899043041,0.72931821817524489,0.64604275086495444,0.76330122759945984,0.60622541096663807,0.7952928712734264,0.56482649818899355,0.82520968665155581,0.52195401756859361,0.85297362417838229,0,0.99478563149953469,0.10198797655641534,0.97919690527585612,0.20291234732806676,0.95339639205493054,0.30172059859519229,0.91765315860362795,0.39738228509180523,0.87233996170317496,0.48889977624836689,0.81792936076671774,0.57531866021862055,0.75498878964148508,0.65573769718972652,0.68417463899043041,0.72931821817524489,0.60622541096663807,0.7952928712734264,0.52195401756859361,0.85297362417838229,0.43223930299474717,0.90175893948805141,0.33801687840850292,0.94114004797956152,0.24026936469546087,0.97070625442964964,0.14001614496862919,0.99014922064713251,0.038302733690035493,0.99926618105081,-0.063810126724628255,0.99796205725838438,-0.1652575281096848,0.9862504496339034,-0.26498150219666156,0.96425349545314099,-0.36194205388711781,0.93220059516606979,-0.45512800708800849,0.89042602003990068,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99997530250445366,0.0070281136250343454,0.99990121123774722,0.014055880096458785,0.9997777298596181,0.021082952277811057,0.99960486446942798,0.028108983066923363,0.99938262360586116,0.03513362541306745,0.99911101824650306,0.042156532334097212,0.99879006180729812,0.049177356933587831,0.99841977014188688,0.05619575241797075,0.99800016154082261,0.063211372113663539,0.99753125673066856,0.070223869484193804,0.99701307887297363,0.077232898147316431,0.99644565356312842,0.084238111892122991,0.99582900882910119,0.091239164696142974,0.99516317513005303,0.098235710742435506,0.99444818535483348,0.10522740443667092,0.99368407482035626,0.11221390042420147,0.99287088126985434,0.11919485360712009,0.99200864487101592,0.12616991916130652,0.99109740821400027,0.1331387525534598,0.99013721630933382,0.14010100955811658,0.98912811658568733,0.14705634627465419,0.98807015888753247,0.15400441914427745,0.98696339547268053,0.16094488496698883,0.98580788100970029,0.16787740091854086,0.98460367257521864,0.17480162456736986,0.98335082965110021,0.18171721389151035,0.98204941412151014,0.18862382729548932,0.98069949026985703,0.19552112362719914,0.97930112477561748,0.20240876219474896,0.97785438671104263,0.20928640278329311,0.97635934753774611,0.21615370567183592,0.97481608110317475,0.22301033165001244,0.97322466363696036,0.22985594203484355,0.97158517374715447,0.23669019868746521,0.96989769241634549,0.24351276402983102,0.96816230299765871,0.25032330106138656,0.96637909121063925,0.25712147337571595,0.96454814513701725,0.26390694517715818,0.96266955521635766,0.27067938129739411,0.96074341424159304,0.27743844721200184,0.95876981735443956,0.28418380905698082,0.95674886204069798,0.29091513364524274,0.95468064812543796,0.29763208848306949,0.95256527776806743,0.30433434178653679,0.95040285545728631,0.3110215624979023,0.94819348800592551,0.31769342030195852,0.94593728454567039,0.32434958564234884,0.94363435652167094,0.33098972973784541,0.94128481768703642,0.33761352459858979,0.93888878409721654,0.34422064304229388,0.93644637410426923,0.35081075871040091,0.9339577083510141,0.3573835460842063,0.93142290976507414,0.36393868050093614,0.92884210355280283,0.37047583816978441,0.92621541719309997,0.37699469618790621,0.92354298043111505,0.3834949325563678,0.9208249252718379,0.38997622619605166,0.91806138597357911,0.39643825696351626,0.91525249904133765,0.40288070566680934,0.91239840322005838,0.40930325408123458,0.90949923948777922,0.41570558496507032,0.90655515104866669,0.42208738207523944,0.90356628332594302,0.42844833018293071,0.90053278395470293,0.43478811508916887,0.89745480277462064,0.44110642364033503,0.89433249182254926,0.44740294374363454,0.89116600532501045,0.45367736438251294,0.88795549969057652,0.4599293756320188,0.88470113350214463,0.46615866867411199,0.88140306750910369,0.47236493581291833,0.87806146461939405,0.47854787048992764,0.87467648989146085,0.48470716729913665,0.87124831052610041,0.49084252200213435,0.86777709585820195,0.49695363154312994,0.86426301734838329,0.50304019406392197,0.86070624857452083,0.50910190891880891,0.85710696522317664,0.51513847668943957,0.85346534508091987,0.52114959919960258,0.84978156802554483,0.52713497952995525,0.84605581601718649,0.53309432203268925,0.84228827308933207,0.53902733234613509,0.8384791253397309,0.54493371740930086,0.83462856092120219,0.55081318547634917,0.83073677003234114,0.5566654461310071,0.82680394490812392,0.56249021030091184,0.82283027981041257,0.56828719027188901,0.81881597101835923,0.57405609970216465,0.81476121681871083,0.57979665363650867,0.81066621749601508,0.58550856852031086,0.80653117532272689,0.59119156221358637,0.80235629454921786,0.59684535400491212,0.7981417813936863,0.60246966462529317,0.79388784403197199,0.60806421626195639,0.78959469258727322,0.61362873257207362,0.78526253911976729,0.61916293869641126,0.78089159761613613,0.62466656127290709,0.77648208397899632,0.63013932845017284,0.77203421601623479,0.63558096990092272,0.76754821343024993,0.64099121683532567,0.76302429780709946,0.64636980201428262,0.75846269260555521,0.65171645976262638,0.7538636231460657,0.65703092598224522,0.74922731659962583,0.6623129381651276,0.74455400197655597,0.66756223540632875,0.73984391011519057,0.67277855841685819,0.73509727367047506,0.6779616495364873,0.73031432710247424,0.68311125274647633,0.72549530666479145,0.68822711368222067,0.72064045039289804,0.69330897964581495,0.7157499980923766,0.69835659961853513,0.71082419132707475,0.70336972427323763,0.70586327340717381,0.70834810598667475,0.70086748937717036,0.71329149885172616,0.69583708600377192,0.71819965868954527,0.69077231176370835,0.72307234306162083,0.6856734168314581,0.72790931128175129,0.68054065306689093,0.73271032442793482,0.67537427400282746,0.73747514535416969,0.67017453483251532,0.74220353870216871,0.66494169239702461,0.74689527091298469,0.65967600517256075,0.75155011023854656,0.65437773325769744,0.75616782675310767,0.64904713836052863,0.76074819236460156,0.64368448378574161,0.76529098082590996,0.63829003442161159,0.76979596774603709,0.63286405672691681,0.77426293060119433,0.62740681871777704,0.778691648745791,0.62191858995441529,0.78308190342333406,0.61639964152784232,0.7874334777772326,0.61085024604646654,0.79174615686151029,0.60527067762262843,0.79601972765142215,0.59966121185906041,0.80025397905397699,0.59402212583527392,0.80444870191836471,0.58835369809387317,0.80860368904628654,0.58265620862679557,0.8127187352021904,0.57692993886148269,0.81679363712340813,0.57117517164697873,0.82082819353019565,0.56539219123995887,0.82482220513567506,0.5595812832906889,0.8287754746556788,0.55374273482891512,0.83268780681849408,0.54787683424968681,0.83655900837450858,0.54198387129911096,0.84038888810575596,0.53606413706003975,0.84417725683536093,0.53011792393769352,0.84792392743688372,0.52414552564521621,0.85162871484356373,0.51814723718916844,0.85529143605745961,0.51212335485495486,0.85891191015849,0.50607417619219008,0.8624899583133685,0.49999999999999989,0.86602540378443871,0.49390112631226352,0.8695180719384028,0.48777785638279231,0.87296779025494864,0.48163049267044966,0.8763743883352707,0.47545933882421176,0.87973769791048706,0.46926469966816758,0.88305755284995124,0.46304688118646331,0.88633378916945804,0.45680619050818716,0.88956624503934378,0.45054293589219996,0.89275476079247928,0.44425742671190732,0.89589917893215765,0.4379499734399796,0.89899934413987259,0.43162088763301476,0.90205510328299154,0.42527048191614969,0.9050663054223187,0.41889906996761855,0.90803280181955115,0.41250696650325747,0.91095444594462593,0.40609448726096048,0.91383109348295744,0.39966194898508223,0.91666260234256614,0.39320966941079399,0.91944883266109712,0.38673796724838744,0.92218964681272864,0.38024716216753368,0.92488490941497004,0.37373757478149139,0.92753448733534927,0.36720952663127204,0.9301382496979882,0.36066334016975554,0.93269606789006843,0.35409933874576371,0.93520781556818311,0.34751784658808882,0.93767336866457796,0.34091918878947691,0.94009260539327988,0.33430369129057169,0.94246540625611197,0.32767168086381271,0.944791654048597,0.32102348509729633,0.94707123386574565,0.31435943237859282,0.94930403310773359,0.30767985187852726,0.95148994148546184,0.30098507353491855,0.9536288510260057,0.29427542803628381,0.95572065607794721,0.28755124680550237,0.95776525331659479,0.28081286198344613,0.95976254174908604,0.27406060641257368,0.96171242271937629,0.2672948136204884,0.96361479991311272,0.26051581780346544,0.96546957936239064,0.25372395380994239,0.96727666945039581,0.24691955712398111,0.96903598091592913,0.24010296384869487,0.97074742685781679,0.23327451068964819,0.97241092273920149,0.22643453493822363,0.97402638639171901,0.21958337445496295,0.97559373801955673,0.21272136765287697,0.97711290020339492,0.20584885348073031,0.978583797904231,0.19896617140629977,0.98000635846708617,0.19207366139960466,0.98138051162459405,0.18517166391611578,0.98270618950047173,0.17826051987993694,0.98398332661287236,0.17134057066696667,0.9852118598776195,0.16441215808803425,0.98639172861132374,0.15747562437201779,0.98752287453437915,0.15053131214893795,0.98860524177384324,0.14357956443303554,0.98963877686619561,0.13662072460582686,0.99062342875997977,0.129655136399143,0.99155914881832419,0.1226831438781518,0.99244589082134482,0.11570509142436129,0.99328361096842843,0.10872132371861072,0.9940722678803956,0.10173218572404327,0.99481182260154544,0.094738022669068361,0.99550223860157894,0.087739180030307354,0.99614348177740408,0.080736003515530494,0.99673552045481972,0.073728839046578898,0.99727832539008066,0.06671803274227954,0.99777186977134213,0.059703930901347173,0.99821612921998371,0.052686879985279503,0.9986110817918139,0.045667226601244483,0.99895670797815384,0.038645317484958044,0.99925299070680129,0.031621499483558885,0.99949991534287352,0.024596119538474171,0.99969746968953022,0.017569524668284167,0.99984564398857612,0.010542061951579447,0.99994443092094321,0.003514078509818754,0.99999382560705186,0,0.99990121123774722,0.014055880096458785,0.99960486446942798,0.028108983066923363,0.99911101824650306,0.042156532334097212,0.99841977014188688,0.05619575241797075,0.99753125673066856,0.070223869484193804,0.99644565356312842,0.084238111892122991,0.99516317513005303,0.098235710742435506,0.99368407482035626,0.11221390042420147,0.99200864487101592,0.12616991916130652,0.99013721630933382,0.14010100955811658,0.98807015888753247,0.15400441914427745,0.98580788100970029,0.16787740091854086,0.98335082965110021,0.18171721389151035,0.98069949026985703,0.19552112362719914,0.97785438671104263,0.20928640278329311,0.97481608110317475,0.22301033165001244,0.97158517374715447,0.23669019868746521,0.96816230299765871,0.25032330106138656,0.96454814513701725,0.26390694517715818,0.96074341424159304,0.27743844721200184,0.95674886204069798,0.29091513364524274,0.95256527776806743,0.30433434178653679,0.94819348800592551,0.31769342030195852,0.94363435652167094,0.33098972973784541,0.93888878409721654,0.34422064304229388,0.9339577083510141,0.3573835460842063,0.92884210355280283,0.37047583816978441,0.92354298043111505,0.3834949325563678,0.91806138597357911,0.39643825696351626,0.91239840322005838,0.40930325408123458,0.90655515104866669,0.42208738207523944,0.90053278395470293,0.43478811508916887,0.89433249182254926,0.44740294374363454,0.88795549969057652,0.4599293756320188,0.88140306750910369,0.47236493581291833,0.87467648989146085,0.48470716729913665,0.86777709585820195,0.49695363154312994,0.86070624857452083,0.50910190891880891,0.85346534508091987,0.52114959919960258,0.84605581601718649,0.53309432203268925,0.8384791253397309,0.54493371740930086,0.83073677003234114,0.5566654461310071,0.82283027981041257,0.56828719027188901,0.81476121681871083,0.57979665363650867,0.80653117532272689,0.59119156221358637,0.7981417813936863,0.60246966462529317,0.78959469258727322,0.61362873257207362,0.78089159761613613,0.62466656127290709,0.77203421601623479,0.63558096990092272,0.76302429780709946,0.64636980201428262,0.7538636231460657,0.65703092598224522,0.74455400197655597,0.66756223540632875,0.73509727367047506,0.6779616495364873,0.72549530666479145,0.68822711368222067,0.7157499980923766,0.69835659961853513,0.70586327340717381,0.70834810598667475,0.69583708600377192,0.71819965868954527,0.6856734168314581,0.72790931128175129,0.67537427400282746,0.73747514535416969,0.66494169239702461,0.74689527091298469,0.65437773325769744,0.75616782675310767,0.64368448378574161,0.76529098082590996,0.63286405672691681,0.77426293060119433,0.62191858995441529,0.78308190342333406,0.61085024604646654,0.79174615686151029,0.59966121185906041,0.80025397905397699,0.58835369809387317,0.80860368904628654,0.57692993886148269,0.81679363712340813,0.56539219123995887,0.82482220513567506,0.55374273482891512,0.83268780681849408,0.54198387129911096,0.84038888810575596,0.53011792393769352,0.84792392743688372,0.51814723718916844,0.85529143605745961,0.50607417619219008,0.8624899583133685,0,0.99960486446942798,0.028108983066923363,0.99841977014188688,0.05619575241797075,0.99644565356312842,0.084238111892122991,0.99368407482035626,0.11221390042420147,0.99013721630933382,0.14010100955811658,0.98580788100970029,0.16787740091854086,0.98069949026985703,0.19552112362719914,0.97481608110317475,0.22301033165001244,0.96816230299765871,0.25032330106138656,0.96074341424159304,0.27743844721200184,0.95256527776806743,0.30433434178653679,0.94363435652167094,0.33098972973784541,0.9339577083510141,0.3573835460842063,0.92354298043111505,0.3834949325563678,0.91239840322005838,0.40930325408123458,0.90053278395470293,0.43478811508916887,0.88795549969057652,0.4599293756320188,0.87467648989146085,0.48470716729913665,0.86070624857452083,0.50910190891880891,0.84605581601718649,0.53309432203268925,0.83073677003234114,0.5566654461310071,0.81476121681871083,0.57979665363650867,0.7981417813936863,0.60246966462529317,0.78089159761613613,0.62466656127290709,0.76302429780709946,0.64636980201428262,0.74455400197655597,0.66756223540632875,0.72549530666479145,0.68822711368222067,0.70586327340717381,0.70834810598667475,0.6856734168314581,0.72790931128175129,0.66494169239702461,0.74689527091298469,0.64368448378574161,0.76529098082590996,0.62191858995441529,0.78308190342333406,0.59966121185906041,0.80025397905397699,0.57692993886148269,0.81679363712340813,0.55374273482891512,0.83268780681849408,0.53011792393769352,0.84792392743688372,0.50607417619219008,0.8624899583133685,0.48163049267044966,0.8763743883352707,0.45680619050818716,0.88956624503934378,0.43162088763301476,0.90205510328299154,0.40609448726096048,0.91383109348295744,0.38024716216753368,0.92488490941497004,0.35409933874576371,0.93520781556818311,0.32767168086381271,0.944791654048597,0.30098507353491855,0.9536288510260057,0.27406060641257368,0.96171242271937629,0.24691955712398111,0.96903598091592913,0.21958337445496295,0.97559373801955673,0.19207366139960466,0.98138051162459405,0.16441215808803425,0.98639172861132374,0.13662072460582686,0.99062342875997977,0.10872132371861072,0.9940722678803956,0.080736003515530494,0.99673552045481972,0.052686879985279503,0.9986110817918139,0.024596119538474171,0.99969746968953022,-0.0035140785098188537,0.99999382560705186,-0.03162149948355876,0.99949991534287352,-0.059703930901347048,0.99821612921998371,-0.087739180030307451,0.99614348177740408,-0.11570509142436139,0.99328361096842843,-0.14357956443303563,0.98963877686619561,-0.17134057066696654,0.9852118598776195,-0.19896617140629966,0.98000635846708617,-0.22643453493822374,0.97402638639171901,-0.2537239538099425,0.9672766694503957,-0.28081286198344624,0.95976254174908593,-0.30767985187852714,0.95148994148546184,-0.33430369129057158,0.94246540625611197,-0.36066334016975543,0.93269606789006854,-0.38673796724838755,0.92218964681272864,-0.41250696650325752,0.91095444594462593,-0.43794997343997949,0.8989993441398727,-0.4630468811864632,0.88633378916945815,-0.4877778563827922,0.87296779025494875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99984337477867258,0.017698189489176789,0.99937354817761037,0.035390835012661909,0.99859066737020408,0.053072394341413386,0.99749497759421313,0.070737328719144676,0.99608682207494481,0.088380104597342482,0.99436664191773905,0.10599519536865327,0.99233497596979137,0.12357708309809556,0.98999246065135937,0.14112026025155541,0.98733982975640344,0.15861923142102388,0.98437791422272558,0.17606851504603618,0.98110764187167798,0.19346264513077271,0.97753003711752207,0.21079617295628489,0.97364622064653072,0.22806366878730858,0.96945740906593281,0.24525972357313114,0.96496491452280997,0.26237895064197908,0.96017014429306657,0.27941598738839513,0.95507460034059943,0.2963654969530769,0.94967987884680738,0.31322216989465057,0.94398766971058612,0.32998072585285543,0.93799975601896746,0.34663591520261933,0.93171801348856575,0.36318252069850598,0.92514440987800939,0.37961535910901933,0.91828100437153914,0.39592928284025325,0.91112994693396809,0.41211918154837751,0.90369347763720387,0.42817998374045518,0.89597392595854564,0.44410665836309027,0.8879737100509737,0.45989421637840722,0.87969533598566263,0.4755377123268692,0.87114139696695259,0.49103224587644584,0.86231457252002786,0.50637296335764381,0.85321762765155351,0.52155505928392165,0.84385341198353647,0.53657377785700999,0.83422485886067987,0.55142441445666757,0.82433498443151154,0.56610231711440617,0.8141868867035742,0.58060288797072057,0,0.99937354817761037,0.035390835012661909,0.99749497759421313,0.070737328719144676,0.99436664191773905,0.10599519536865327,0.98999246065135937,0.14112026025155541,0.98437791422272558,0.17606851504603618,0.97753003711752207,0.21079617295628489,0.96945740906593281,0.24525972357313114,0.96017014429306657,0.27941598738839513,0.94967987884680738,0.31322216989465057,0.93799975601896746,0.34663591520261933,0.92514440987800939,0.37961535910901933,0.91112994693396809,0.41211918154837751,0.89597392595854564,0.44410665836309027,0.87969533598566263,0.4755377123268692,0.86231457252002786,0.50637296335764381,0.84385341198353647,0.53657377785700999,0.82433498443151154,0.56610231711440617,0.8037837445729733,0.59492158471537171,0.78222544113124537,0.62299547289448953,0.75968708458328493,0.65028880777493692,0.73619691331815862,0.67676739343796377,0.71178435825706066,0.70239805476708461,0.68648000597920544,0.72714867901330194,0.66031556039979089,0.75098825602928709,0.63332380304804703,0.77388691712210678,0.60553855199513884,0.79581597247581715,0.57699461948338149,0.81674794709703913,0.54772776830985559,0.83665661523847712,0.51777466701906727,0.85551703325725426,0.48717284396079663,0.87330557086689264,0.45596064027068983,0.88999994074378597,0.4241771618325122,0.90557922645106803,0.39186223028224254,0.92002390864489314,0.35905633311540069,0.93331588953029321,0.32580057296011772,0.94543851553597025,0,0.99859066737020408,0.053072394341413386,0.99436664191773905,0.10599519536865327,0.98733982975640344,0.15861923142102388,0.97753003711752207,0.21079617295628489,0.96496491452280997,0.26237895064197908,0.94967987884680738,0.31322216989465057,0.93171801348856575,0.36318252069850598,0.91112994693396809,0.41211918154837751,0.8879737100509737,0.45989421637840722,0.86231457252002786,0.50637296335764381,0.83422485886067987,0.55142441445666757,0.8037837445729733,0.59492158471537171,0.77107703296821428,0.6367418701710571,0.73619691331815862,0.67676739343796377,0.69924170100431415,0.71488533596416237,0.66031556039979089,0.75098825602928709,0.61952821126480084,0.78497439158678051,0.57699461948338149,0.81674794709703913,0.5328346730130531,0.84621936354297211,0.48717284396079663,0.87330557086689264,0.44013783773785126,0.89793022211720264,0.39186223028224254,0.92002390864489314,0.34248209437159083,0.93952435574329241,0.29213661607950164,0.95637659817961762,0.24096770245661464,0.9705331351235672,0.18911958154212929,0.98195406403626129,0.13673839583324257,0.99060719314214118,0.083971790358368603,0.99646813216680952,0.030968496515225548,0.99952036108504883,-0.022122087153186774,0.999755276685243,-0.075150316063070516,0.99717221681895074,-0.12796672138782017,0.99177846226728072,-0.18042243136061006,0.98358921621880646,-0.23236959089407253,0.97262756141686701,-0.28366177833429645,0.95892439509704019,0,0.99749497759421313,0.070737328719144676,0.98999246065135937,0.14112026025155541,0.97753003711752207,0.21079617295628489,0.96017014429306657,0.27941598738839513,0.93799975601896746,0.34663591520261933,0.91112994693396809,0.41211918154837751,0.87969533598566263,0.4755377123268692,0.84385341198353647,0.53657377785700999,0.8037837445729733,0.59492158471537171,0.75968708458328493,0.65028880777493692,0.71178435825706066,0.70239805476708461,0.66031556039979089,0.75098825602928709,0.60553855199513884,0.79581597247581715,0.54772776830985559,0.83665661523847712,0.48717284396079663,0.87330557086689264,0.4241771618325122,0.90557922645106803,0.35905633311540069,0.93331588953029321,0.29213661607950164,0.95637659817961762,0.22375328150594273,0.97464581721532173,0.15424893296530237,0.98803201703136401,0.083971790358368603,0.99646813216680952,0.01327394531883112,0.99991189730679408,-0.057490402781580095,0.99834605903364571,-0.12796672138782017,0.99177846226728072,-0.19780192098551708,0.98024201096180286,-0.26664612409526117,0.96379450325521909,-0.33415441817445551,0.94251834189817818,-0.39998858364461021,0.91652012141249717,-0.46381878838658791,0.88593009404783041,-0.52532524021429861,0.85090151721206231,-0.58419978904788517,0.81160988564482539,-0.64014747075942946,0.7682520521809918,-0.69288798495645343,0.72104524150914795,-0.74215709929944484,0.67022596186617089,-0.78770797331771802,0.61604882012036455,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} +{"lengths":[797,923,177,756,593,560,233,932,186,350],"offsets":[0,797,1720,1897,2653,3246,3806,4039,4971,5157],"cosines":[0.99999805780435924,0.99999223122498115,0.99998252028449841,0.99996892502063217,0.99995144548619175,0.99993008174907438,0.99990483389226548,0.99987570201383724,0.9998426862269495,0.99980578665984843,0.9997650034558665,0.99972033677342143,0.99967178678601609,0.99961935368223787,0.99956303766575727,0.99950283895532777,0.99943875778478475,0.99937079440304444,0.99929894907410344,0.99922322207703684,0.99914361370599813,0.99906012427021729,0.99897275409399999,0.99888150351672611,0.99878637289284866,0.99868736259189217,0.99858447299845143,0.99847770451218987,0.99836705754783805,0.99825253253519219,0.99813412991911199,0.99801185015951976,0.99788569373139779,0.9977556611247872,0.99762175284478538,0.99748396941154438,0.99734231136026918,0.99719677924121508,0.99704737361968554,0.99689409507603066,0.99673694420564418,0.99657592161896169,0.99641102794145775,0.996242263813644,0.9960696298910664,0.99589312684430265,0.99571275535895953,0.99552851613567062,0.99534040989009298,0.99514843735290504,0.99495259926980317,0.99475289640149911,0.994549329523717,0.99434189942719009,0.9941306069176582,0.99391545281586402,0.99369643795755036,0.99347356319345659,0.99324682938931541,0.99301623742584966,0.99278178819876883,0.99254348261876546,0.99230132161151163,0.99205530611765547,0.99180543709281732,0.99155171550758625,0.99129414234751634,0.99103271861312237,0.99076744531987648,0.99049832349820399,0.99022535419347923,0.98994853846602182,0.98966787739109241,0.98938337205888838,0.98909502357453993,0.98880283305810512,0.98850680164456639,0.98820693048382569,0.98790322074069969,0.98759567359491607,0.9872842902411082,0.98696907188881089,0.98665001976245559,0.9863271351013656,0.98600041915975112,0.98566987320670496,0.98533549852619673,0.98499729641706857,0.98465526819302984,0.98430941518265203,0.98395973872936349,0.98360624019144449,0.98324892094202154,0.98288778236906238,0.98252282587537076,0.98215405287858026,0.9817814648111497,0.98140506312035669,0.98102484926829292,0.98064082473185754,0.98025299100275232,0.97986134958747506,0.97946590200731432,0.97906664979834324,0.9786635945114136,0.97825673771214983,0.97784608098094294,0.97743162591294441,0.97701337411805989,0.97659132722094288,0.97616548686098881,0.97573585469232815,0.97530243238382042,0.97486522161904743,0.97442422409630691,0.97397944152860572,0.97353087564365348,0.97307852818385554,0.97262240090630636,0.972162495582783,0.97169881399973734,0.97123135795829041,0.97076012927422417,0.97028512977797532,0.96980636131462761,0.9693238257439053,0.96883752494016517,0.96834746079238998,0.96785363520418055,0.9673560500937487,0.96685470739390966,0.96634960905207468,0.9658407570302433,0.965328153304996,0.96481179986748611,0.96429169872343246,0.96376785189311143,0.963240261411349,0.96270892932751306,0.96217385770550545,0.96163504862375349,0.96109250417520264,0.96054622646730781,0.95999621762202536,0.95944247977580477,0.95888501507958068,0.95832382569876395,0.95775891381323364,0.95719028161732878,0.95661793131983919,0.95604186514399736,0.95546208532746979,0.95487859412234799,0.95429139379514027,0.95370048662676254,0.95310587491252918,0.95250756096214495,0.95190554709969522,0.95129983566363752,0.95069042900679201,0.95007732949633261,0.94946053951377762,0.94884006145498079,0.94821589773012172,0.94758805076369634,0.94695652299450805,0.9463213168756579,0.94568243487453485,0.94503987947280665,0.94439365316640989,0.94374375846554037,0.94309019789464343,0.94243297399240411,0.94177208931173706,0.94110754641977712,0.94043934789786887,0.93976749634155676,0.93909199436057522,0.93841284457883811,0.93773004963442896,0.93704361217959065,0.93635353488071471,0.9356598204183314,0.9349624714870991,0.93426149079579401,0.93355688106729928,0.93284864503859499,0.93213678546074685,0.93142130509889598,0.93070220673224824,0.92997949315406281,0.92925316717164219,0.92852323160632055,0.9277896892934534,0.92705254308240603,0.92631179583654277,0.92556745043321564,0.9248195097637536,0.92406797673345087,0.92331285426155563,0.92255414528125923,0.921791852739684,0.92102597959787269,0.92025652883077602,0.91948350342724205,0.91870690639000374,0.91792674073566805,0.9171430094947034,0.91635571571142871,0.91556486244400115,0.91477045276440416,0.91397248975843581,0.91317097652569668,0.91236591617957774,0.91155731184724842,0.91074516666964422,0.909929483801455,0.90911026641111192,0.90828751768077609,0.9074612408063254,0.90663143899734255,0.90579811547710243,0.90496127348255972,0.90412091626433611,0.90327704708670797,0.90242966922759316,0.90157878597853902,0.90072440064470904,0.89986651654487004,0.89900513701137952,0.89814026539017278,0.8972719050407495,0.89640005933616118,0.8955247316629974,0.89464592542137367,0.89376364402491704,0.89287789090075387,0.89198866948949573,0.89109598324522654,0.89019983563548899,0.88930023014127102,0.88839717025699239,0.88749065949049111,0.88658070136300959,0.88566729940918132,0.88475045717701672,0.88383017822789001,0.88290646613652457,0.8819793244909796,0.88104875689263618,0.88011476695618274,0.87917735830960175,0.87823653459415518,0.87729229946437048,0.8763446565880264,0.87539360964613855,0.8744391623329455,0.87348131835589404,0.87252008143562487,0.87155545530595835,0.87058744371387997,0.86961605041952528,0.86864127919616596,0.86766313383019511,0.86668161812111166,0.86569673588150697,0.86470849093704905,0.86371688712646766,0.86272192830154026,0.86172361832707611,0.86072196108090182,0.85971696045384605,0.85870862034972451,0.85769694468532465,0.85668193739039056,0.85566360240760786,0.85464194369258795,0.85361696521385311,0.85258867095282087,0.85155706490378835,0.85052215107391715,0.84948393348321749,0.84844241616453286,0.84739760316352397,0.84634949853865327,0.84529810636116931,0.84424343071509056,0.84318547569719027,0.84212424541697917,0.84105974399669126,0.83999197557126659,0.8389209442883353,0.83784665430820215,0.83676910980382968,0.83568831496082241,0.83460427397741033,0.833516991064433,0.83242647044532248,0.83133271635608752,0.83023573304529719,0.8291355247740636,0.82803209581602644,0.82692545045733545,0.82581559299663421,0.82470252774504327,0.8235862590261438,0.82246679117596,0.82134412854294314,0.82021827548795434,0.81908923638424724,0.81795701561745138,0.81682161758555549,0.81568304669888958,0.81454130738010844,0.81339640406417468,0.81224834119834033,0.81109712324213101,0.80994275466732768,0.80878523995794949,0.80762458361023659,0.80646079013263228,0.80529386404576586,0.80412380988243493,0.80295063218758744,0.8017743355183049,0.80059492444378366,0.79941240354531773,0.79822677741628112,0.79703805066210964,0.79584622790028303,0.79465131376030729,0.79345331288369658,0.79225222992395494,0.79104806954655849,0.78984083642893754,0.78863053526045768,0.78741717074240214,0.78620074758795377,0.78498127052217581,0.78375874428199455,0.78253317361618002,0.78130456328532849,0.78007291806184287,0.77883824272991553,0.77760054208550833,0.77635982093633482,0.77511608410184163,0.77386933641318911,0.77261958271323306,0.77136682785650601,0.77011107670919798,0.76885233414913767,0.76759060506577381,0.76632589436015586,0.76505820694491489,0.76378754774424507,0.76251392169388388,0.76123733374109304,0.75995778884463983,0.75867529197477734,0.75738984811322507,0.75610146225315022,0.75481013939914721,0.75351588456721952,0.75221870278475933,0.75091859909052816,0.74961557853463756,0.74830964617852924,0.74700080709495531,0.74568906636795884,0.74437442909285445,0.74305690037620731,0.7417364853358146,0.74041318910068521,0.73908701681101918,0.73775797361818873,0.73642606468471772,0.73509129518426153,0.73375367030158711,0.73241319523255299,0.73106987518408872,0.72972371537417513,0.72837472103182355,0.72702289739705583,0.72566824972088406,0.72431078326528975,0.72295050330320376,0.72158741511848556,0.72022152400590345,0.71885283527111254,0.71748135423063564,0.71610708621184171,0.71473003655292522,0.71335021060288628,0.71196761372150852,0.71058225127933916,0.70919412865766818,0.70780325124850696,0.70640962445456734,0.70501325368924139,0.70361414437657943,0.70221230195126938,0.70080773185861589,0.69940043955451869,0.69799043050545173,0.69657771018844195,0.69516228409104774,0.69374415771133791,0.69232333655787026,0.69089982614967016,0.6894736320162087,0.68804475969738221,0.68661321474349002,0.68517900271521248,0.68374212918359056,0.68230259973000318,0.68086041994614599,0.67941559543400953,0.67796813180585769,0.67651803468420546,0.67506530970179746,0.67360996250158611,0.67215199873670906,0.67069142407046822,0.66922824417630722,0.667762464737789,0.66629409144857465,0.66482313001240068,0.6633495861430565,0.66187346556436333,0.66039477401015101,0.65891351722423619,0.65742970096039965,0.65594333098236457,0.65445441306377339,0.65296295298816587,0.65146895654895665,0.64997242954941226,0.64847337780262926,0.64697180713151137,0.64546772336874636,0.64396113235678409,0.64245203994781375,0.6409404520037405,0.63942637439616345,0.63790981300635263,0.63639077372522557,0.63486926245332542,0.63334528510079746,0.63181884758736562,0.63028995584231073,0.62875861580444647,0.62722483342209678,0.62568861465307268,0.62414996546464874,0.62260889183354051,0.62106539974588115,0.61951949519719762,0.61797118419238817,0.61642047274569867,0.61486736688069898,0.61331187263025999,0.61175399603653025,0.61019374315091168,0.60863112003403719,0.60706613275574639,0.60549878739506213,0.60392909004016715,0.60235704678838009,0.6007826637461321,0.59920594702894292,0.59762690276139729,0.59604553707712093,0.5944618561187569,0.59287586603794185,0.59128757299528156,0.58969698316032781,0.588104102711554,0.58650893783633085,0.58491149473090309,0.58331177960036473,0.58170979865863515,0.58010555812843534,0.57849906424126318,0.57689032323736944,0.57527934136573355,0.57366612488403979,0.57205068005865189,0.57043301316458983,0.56881313048550464,0.56719103831365458,0.5655667429498803,0.56394025070358067,0.56231156789268766,0.56068070084364297,0.55904765589137217,0.55741243937926077,0.5557750576591296,0.55413551709121001,0.55249382404411895,0.55084998489483461,0.5492040060286717,0.54755589383925574,0.54590565472849972,0.54425329510657783,0.54259882139190152,0.54094224001109392,0.53928355739896539,0.5376227799984884,0.53595991426077183,0.53429496664503695,0.53262794361859211,0.53095885165680667,0.52928769724308677,0.52761448686885049,0.52593922703350138,0.52426192424440388,0.52258258501685884,0.52090121587407667,0.51921782334715283,0.5175324139750429,0.51584499430453612,0.51415557089023078,0.51246415029450854,0.51077073908750892,0.50907534384710318,0.5073779711588704,0.50567862761607008,0.50397731981961702,0.50227405437805706,0.50056883790753914,0.49886167703179141,0.49715257838209481,0.4954415485972572,0.4937285943235874,0.49201372221487061,0.49029693893234083,0.48857825114465586,0.48685766552787202,0.48513518876541678,0.48341082754806375,0.48168458857390695,0.47995647854833384,0.47822650418399976,0.47649467220080233,0.47476098932585453,0.47302546229345876,0.47128809784508152,0.46954890272932587,0.46780788370190601,0.46606504752562145,0.46432040097032962,0.46257395081292019,0.46082570383728938,0.45907566683431222,0.45732384660181702,0.45557024994455947,0.45381488367419487,0.45205775460925246,0.45029886957510951,0.44853823540396343,0.44677585893480615,0.4450117470133978,0.44324590649223911,0.44147834423054549,0.43970906709422075,0.43793808195582934,0.4361653956945703,0.43439101519625112,0.43261494735325973,0.43083719906453832,0.42905777723555732,0.42727668877828712,0.42549394061117202,0.42370953965910385,0.42192349285339387,0.42013580713174659,0.41834648943823322,0.41655554672326361,0.41476298594355981,0.41296881406212965,0.41117303804823863,0.40937566487738319,0.40757670153126441,0.40577615499775965,0.4039740322708959,0.40217034035082344,0.40036508624378725,0.39855827696210033,0.39674991952411742,0.39494002095420616,0.39312858828272057,0.39131562854597429,0.38950114878621217,0.38768515605158332,0.38586765739611451,0.38404865987968151,0.38222817056798208,0.38040619653250962,0.37858274485052384,0.37675782260502444,0.3749314368847238,0.37310359478401861,0.37127430340296247,0.36944356984723931,0.3676114012281344,0.36577780466250742,0.36394278727276513,0.36210635618683301,0.36026851853812775,0.35842928146553021,0.35658865211335666,0.35474663763133157,0.35290324517456029,0.35105848190350025,0.34921235498393355,0.34736487158693991,0.34551603888886762,0.34366586407130595,0.34181435432105833,0.33996151683011289,0.33810735879561521,0.33625188741984097,0.33439510991016685,0.33253703347904295,0.33067766534396564,0.32881701272744801,0.32695508285699276,0.32509188296506436,0.3232274202890601,0.32136170207128228,0.31949473555891089,0.31762652800397423,0.31575708666332114,0.31388641879859375,0.3120145316761978,0.31014143256727505,0.30826712874767576,0.3063916274979292,0.30451493610321606,0.30263706185333977,0.30075801204269914,0.29887779397025871,0.29699641493952089,0.29511388225849844,0.29323020323968468,0.29134538520002573,0.28945943546089281,0.28757236134805236,0.28568417019163855,0.28379486932612491,0.28190446609029512,0.2800129678272148,0.27812038188420374,0.2762267156128061,0.27433197636876233,0.27243617151198152,0.2705393084065113,0.26864139442050999,0.26674243692621852,0.26484244329993067,0.26294142092196482,0.26103937717663622,0.2591363194522267,0.25723225514095704,0.25532719163895834,0.25342113634624247,0.25151409666667379,0.2496060800079411,0.24769709378152735,0.24578714540268184,0.24387624229039184,0.24196439186735247,0.24005160155993871,0.23813787879817691,0.23622323101571488,0.23430766564979361,0.23239119014121887,0.23047381193433122,0.22855553847697768,0.22663637722048333,0.2247163356196212,0.22279542113258397,0.22087364122095551,0.21895100334968079,0.21702751498703735,0.21510318360460703,0.21317801667724567,0.21125202168305471,0.20932520610335273,0.20739757742264514,0.20546914312859577,0.20353991071199842,0.20160988766674645,0.19967908148980432,0.19774749968117916,0.1958151497438903,0.19388203918394073,0.19194817551028875,0.1900135662348173,0.18807821887230555,0.18614214094040038,0.18420533995958582,0.18226782345315448,0.18032959894717901,0.17839067397048161,0.17645105605460529,0.17451075273378541,0.17256977154491909,0.1706281200275365,0.16868580572377231,0.16674283617833502,0.1647992189384784,0.16285496155397275,0.16091007157707429,0.15896455656249645,0.15701842406738123,0.15507168165126853,0.15312433687606739,0.15117639730602728,0.14922787050770753,0.14727876404994836,0.14532908550384241,0.14337884244270374,0.14142804244203933,0.13947669307952007,0.13752480193495026,0.1355723765902386,0.13361942462936949,0.1316659536383723,0.12971197120529251,0.12775748492016287,0.12580250237497265,0.12384703116363879,0.12189107888197705,0.1199346531276712,0.11797776150024415,0.11602041160102913,0.11406261103313882,0.11210436740143642,0.1101456883125069,0.10818658137462597,0.10622705419773137,0.10426711439339378,0.1023067695747861,0.1003460273566544,0.098384895355289131,0.096423381188494098,0.094461492475557629,0.092499236837223553,0.090536621895660349,0.088573655274432173,0.086610344598469904,0.084646697494040177,0.082682721588716465,0.080718424511350098,0.078753813892039295,0.076788897362100206,0.074823682554037901,0.072858177101515417,0.070892388639324802,0.068926324803358044,0.066959993230576137,0.064993401558980105,0.063026557427581911,0.061059468476373543,0.059092142346297949,0.057124586679220032,0.055156809117895653,0.053188817305942597,0.051220618887811542,0.049252221508755044,0.047283632814798499,0.045314860452711103,0.043345912069974846,0.041376795314755424,0.039407517835873249,0.037438087282772363,0.035468511305491418,0.033498797554634606,0.031528953681340628,0.02955898733725363,0.027588906174494152,0.025618717845628063,0.023648430003637505,0.021678050301891839,0.019707586394116582,0.017737045934364332,0.015766436576985714,0.013795765976598316,0.011825041788057615,0.0098542716664279089,0.0078834632669512548,0.0059126242450183979,0.0039417622561396934,0.0019708849559140471,-1.6081226496766366e-16,0.99999855187433184,0.99999420750152135,0.99998696689415112,0.9999768300731916,0.99996379706800154,0.99994786791632795,0.9999290426643056,0.99990732136645721,0.99988270408569302,0.99985519089331087,0.99982478186899593,0.99979147710082028,0.999755276685243,0.99971618072710955,0.99967418933965169,0.99962930264448702,0.99958152077161866,0.99953084385943503,0.99947727205470904,0.99942080551259815,0.99936144439664365,0.99929918887877034,0.99923403913928577,0.99916599536688,0.99909505775862495,0.9990212265199736,0.99894450186475992,0.99886488401519768,0.99878237320188024,0.99869696966377974,0.99860867364824613,0.99851748541100704,0.99842340521616635,0.99832643333620397,0.99822657005197502,0.99812381565270847,0.99801817043600694,0.99790963470784555,0.99779820878257108,0.99768389298290094,0.99756668763992251,0.99744659309309192,0.99732360969023304,0.99719773778753673,0.99706897774955983,0.99693732994922357,0.99680279476781319,0.99666537259497634,0.99652506382872219,0.99638186887542013,0.99623578814979885,0.99608682207494481,0.99593497108230122,0.99578023561166662,0.99562261611119385,0.99546211303738863,0.99529872685510823,0.99513245803756012,0.99496330706630054,0.99479127443123316,0.99461636063060777,0.99443856617101878,0.99425789156740352,0.99407433734304107,0.99388790402955074,0.99369859216689005,0.99350640230335385,0.99331133499557234,0.99311339080850924,0.99291257031546098,0.99270887409805397,0.99250230274624374,0.99229285685831281,0.99208053704086907,0.99186534390884418,0.99164727808549147,0.9914263402023844,0.99120253089941457,0.99097585082479001,0.99074630063503322,0.99051388099497917,0.99027859257777351,0.9900404360648708,0.98979941214603195,0.98955552151932302,0.98930876489111241,0.98905914297606934,0.98880665649716182,0.9885513061856539,0.98829309278110433,0.98803201703136401,0.98776807969257407,0.98750128152916328,0.98723162331384617,0.9869591058276207,0.98668372985976605,0.98640549620784013,0.98612440567767767,0.98584045908338735,0.98555365724735,0.98526400100021583,0.98497149118090199,0.98467612863659049,0.98437791422272558,0.98407684880301105,0.98377293324940818,0.98346616844213264,0.9831565552696524,0.98284409462868516,0.98252878742419525,0.98221063456939184,0.98188963698572551,0.98156579560288582,0.98123911135879882,0.98090958519962423,0.98057721807975273,0.98024201096180286,0.97990396481661879,0.97956308062326702,0.97921935936903404,0.97887280204942284,0.97852340966815043,0.97817118323714525,0.97781612377654337,0.9774582323146862,0.9770975098881175,0.97673395754157999,0.97636757632801263,0.9759983673085475,0.97562633155250678,0.97525147013739955,0.97487378414891857,0.97449327468093738,0.97410994283550723,0.97372378972285323,0.9733348164613721,0.9729430241776279,0.97254841400634984,0.97215098709042791,0.97175074458091049,0.97134768763700052,0.97094181742605201,0.97053313512356731,0.97012164191319294,0.96970733898671679,0.96929022754406424,0.96887030879329472,0.9684475839505986,0.96802205424029319,0.96759372089481965,0.96716258515473885,0.96672864826872829,0.96629191149357829,0.96585237609418828,0.96541004334356317,0.96496491452280997,0.96451699092113341,0.9640662738358331,0.96361276457229872,0.96315646444400715,0.96269737477251838,0.96223549688747134,0.96177083212658054,0.96130338183563191,0.96083314736847891,0.9603601300870388,0.95988433136128859,0.95940575256926086,0.95892439509704008,0.95844026033875862,0.95795334969659218,0.9574636645807566,0.95697120640950284,0.95647597660911376,0.95597797661389905,0.95547720786619217,0.95497367181634507,0.95446736992272474,0.95395830365170875,0.95344647447768094,0.95293188388302719,0.95241453335813131,0.9518944244013704,0.95137155851911082,0.95084593722570332,0.95031756204347961,0.94978643450274669,0.94925255614178361,0.94871592850683628,0.94817655315211313,0.94763443163978078,0.94708956553995938,0.94654195643071815,0.94599160589807063,0.94543851553597025,0.94488268694630595,0.94432412173889668,0.94376282153148794,0.9431987879497461,0.94263202262725421,0.94206252720550698,0.94149030333390649,0.94091535266975668,0.94033767687825931,0.9397572776325086,0.9391741566134868,0.93858831551005861,0.93799975601896746,0.93740847984482933,0.93681448870012873,0.93621778430521341,0.93561836838828893,0.93501624268541483,0.93441140894049823,0.93380386890528977,0.93319362433937814,0.93258067701018477,0.9319650286929595,0.93134668117077424,0.93072563623451909,0.93010189568289625,0.92947546132241499,0.92884633496738667,0.92821451843991953,0.92758001356991282,0.92694282219505231,0.92630294616080411,0.92566038732041034,0.92501514753488268,0.92436722867299781,0.92371663261129155,0.92306336123405375,0.92240741643332236,0.92174880010887839,0.92108751416824031,0.92042356052665841,0.91975694110710926,0.91908765784029034,0.91841571266461408,0.91774110752620275,0.91706384437888222,0.91638392518417688,0.91570135191130364,0.91501612653716613,0.91432825104634929,0.91363772743111349,0.91294455769138871,0.91224874383476862,0.91155028787650505,0.91084919183950208,0.91014545775431011,0.90943908765911963,0.90873008359975627,0.90801844762967376,0.90730418180994898,0.90658728820927503,0.90586776890395604,0.90514562597790083,0.9044208615226168,0.90369347763720387,0.90296347642834862,0.90223086001031816,0.90149563050495352,0.90075779004166445,0.90001734075742212,0.89927428479675386,0.89852862431173652,0.89778036146199025,0.89702949841467217,0.8962760373444707,0.89551998043359815,0.89476132987178569,0.89400008785627572,0.8932362565918166,0.89246983829065563,0.89170083517253285,0.89092924946467444,0.89015508340178673,0.88937833922604914,0.88859901918710793,0.88781712554207004,0.88703266055549568,0.88624562649939287,0.88545602565320991,0.88466386030382937,0.88386913274556111,0.88307184528013594,0.88227200021669883,0.88146959987180207,0.88066464656939858,0.87985714264083559,0.87904709042484741,0.87823449226754891,0.87741935052242848,0.87660166755034152,0.87578144571950345,0.87495868740548277,0.87413339499119447,0.87330557086689276,0.87247521743016432,0.87164233708592143,0.87080693224639494,0.8699690053311272,0.86912855876696515,0.86828559498805324,0.86744011643582652,0.86659212555900333,0.86574162481357841,0.86488861666281569,0.86403310357724106,0.86317508803463561,0.86231457252002774,0.86145155952568697,0.86058605155111567,0.85971805110304245,0.8588475606954149,0.85797458284939188,0.85709912009333655,0.85622117496280947,0.85534075000056009,0.85445784775652045,0.8535724707877973,0.85268462165866499,0.85179430294055769,0.85090151721206209,0.85000626705891025,0.84910855507397143,0.84820838385724528,0.84730575601585378,0.84640067416403419,0.84549314092313088,0.84458315892158831,0.84367073079494304,0.84275585918581619,0.8418385467439059,0.84091879612597964,0.83999660999586634,0.83907199102444863,0.83814494188965571,0.83721546527645474,0.83628356387684366,0.83534924038984304,0.83441249752148861,0.83347333798482315,0.83253176449988875,0.83158777979371878,0.83064138660033027,0.82969258766071574,0.8287413857228354,0.8277877835416092,0.82683178387890877,0.82587338950354916,0.82491260319128157,0.82394942772478452,0.82298386589365635,0.82201592049440686,0.82104559433044899,0.82007289021209129,0.81909781095652945,0.818120359387838,0.81714053833696232,0.81615835064171049,0.81517379914674493,0.8141868867035742,0.81319761617054476,0.8122059904128327,0.81121201230243556,0.81021568471816374,0.80921701054563222,0.80821599267725253,0.80721263401222387,0.80620693745652527,0.80519890592290666,0.80418854233088066,0.80317584960671429,0.80216083068342015,0.80114348850074812,0.80012382600517684,0.79910184614990531,0.79807755189484397,0.79705094620660633,0.79602203205850064,0.79499081243052072,0.79395729030933804,0.79292146868829216,0.7918833505673829,0.79084293895326141,0.78980023685922107,0.7887552473051892,0.78770797331771836,0.78665841792997704,0.78560658418174145,0.78455247511938664,0.78349609379587715,0.78243744327075915,0.78137652661015045,0.78031334688673215,0.77924790717974024,0.77818021057495579,0.77711026016469642,0.77603805904780765,0.77496361032965333,0.77388691712210678,0.77280798254354244,0.77172680971882579,0.77064340177930524,0.76955776186280234,0.76846989311360336,0.76737979868244932,0.76628748172652783,0.76519294540946348,0.76409619290130826,0.76299722737853326,0.76189605202401878,0.76079267002704554,0.75968708458328493,0.75857929889479037,0.75746931616998769,0.7563571396236658,0.75524277247696736,0.75412621795738,0.75300747929872602,0.7518865597411537,0.75076346253112802,0.7496381909214207,0.74851074817110108,0.74738113754552682,0.7462493623163341,0.74511542576142853,0.74397933116497528,0.74284108181738995,0.7417006810153286,0.74055813206167886,0.73941343826554928,0.7382666029422611,0.73711762941333747,0.73596652100649462,0.73481328105563171,0.73365791290082161,0.73250041988830072,0.73134080537045998,0.73017907270583426,0.72901522525909335,0.7278492664010322,0.72668119950856047,0.72551102796469347,0.72433875515854218,0.72316438448530329,0.72198791934624951,0.72080936314871935,0.71962871930610794,0.71844599123785646,0.71726118236944292,0.71607429613237117,0.71488533596416248,0.7136943053083441,0.71250120761444014,0.71130604633796157,0.71010882494039562,0.70890954688919638,0.70770821565777475,0.70650483472548764,0.70529940757762888,0.70409193770541834,0.70288242860599226,0.70167088378239295,0.70045730674355888,0.69924170100431404,0.69802407008535827,0.69680441751325661,0.69558274682042953,0.69435906154514249,0.69313336523149549,0.69190566142941301,0.69067595369463408,0.68944424558870132,0.68821054067895071,0.68697484253850216,0.68573715474624775,0.68449748088684248,0.68325582455069345,0.68201218933394958,0.68076657883849079,0.67951899667191829,0.6782694464475435,0.67701793178437819,0.67576445630712312,0.67450902364615839,0.67325163743753247,0.67199230132295196,0.67073101894977061,0.66946779397097944,0.6682026300451952,0.66693553083665069,0.66566650001518379,0.66439554125622668,0.66312265824079519,0.66184785465547868,0.66057113419242863,0.65929250054934829,0.65801195742948226,0.65672950854160517,0.65544515760001132,0.65415890832450385,0.65287076444038383,0.65158072967843994,0.65028880777493692,0.64899500247160524,0.64769931751563059,0.64640175665964184,0.6451023236617015,0.64380102228529423,0.64249785629931577,0.64119282947806233,0.6398859456012197,0.63857720845385202,0.63726662182639093,0.63595418951462479,0.63463991531968733,0.63332380304804692,0.63200585651149566,0.63068607952713784,0.62936447591737943,0.62804104950991657,0.62671580413772465,0.62538874363904762,0.62405987185738598,0.62272919264148641,0.62139670984533057,0.62006242732812344,0.61872634895428236,0.61738847859342638,0.61604882012036422,0.61470737741508341,0.61336415436273928,0.61201915485364355,0.61067238278325253,0.60932384205215684,0.60797353656606934,0.60662147023581392,0.60526764697731483,0.60391207071158415,0.60255474536471176,0.60119567486785286,0.59983486315721712,0.59847231417405733,0.597108031864658,0.59574202018032318,0.59437428307736639,0.59300482451709802,0.59163364846581401,0.59026075889478502,0.58888615978024428,0.58750985510337628,0.58613184885030534,0.58475214501208383,0.58337074758468088,0.58198766056897067,0.58060288797072068,0.57921643380058052,0.57782830207406999,0.57643849681156734,0.57504702203829794,0.57365388178432253,0.57225908008452531,0.57086262097860263,0.56946450851105113,0.56806474673115581,0.56666333969297855,0.56526029145534651,0.56385560608183982,0.56244928764078062,0.56104134020522045,0.55963176785292879,0.55822057466638175,0.55680776473274929,0.55539334214388403,0.55397731099630954,0.55255967539120754,0.55114043943440738,0.54971960723637303,0.54829718291219143,0.54687317058156126,0.54544757436877989,0.5440203984027322,0.54259164681687877,0.54116132374924319,0.53972943334240042,0.53829597974346488,0.53686096710407882,0.53542439958039934,0.53398628133308701,0.53254661652729374,0.53110540933265071,0.52966266392325601,0.52821838447766312,0.52677257517886844,0.52532524021429883,0.52387638377580026,0.52242601005962508,0.5209741232664199,0.51952072760121415,0.51806582727340689,0.51660942649675501,0.51515152948936116,0.51369214047366152,0.5122312636764137,0.51076890332868385,0.50930506366583528,0.50783974892751538,0.50637296335764392,0.5049047112044005,0.50343499672021275,0.5019638241617429,0.5004911977898765,0.49901712186970959,0.49754160067053671,0.4960646384658377,0.49458623953326686,0.49310640815463874,0.49162514861591711,0.49014246520720173,0.4886583622227163,0.48717284396079646,0.48568591472387623,0.48419757881847642,0.48270784055519189,0.48121670424867907,0.4797241742176433,0.478230254784827,0.47673495027699625,0.47523826502492861,0.47374020336340078,0.47224076963117589,0.47073996817099067,0.46923780332954373,0.46773427945748181,0.46622940090938791,0.46472317204376862,0.46321559722304123,0.46170668081352112,0.46019642718540993,0.45868484071278148,0.45717192577357013,0.45565768674955781,0.45414212802636111,0.45262525399341941,0.45110706904398096,0.44958757757509094,0.44806678398757854,0.44654469268604419,0.44502130807884671,0.44349663457809124,0.44197067659961514,0.4404434385629763,0.43891492489143991,0.43738514001196577,0.43585408835519518,0.43432177435543884,0.43278820245066318,0.4312533770824778,0.42971730269612268,0.42817998374045518,0.42664142466793775,0.42510162993462397,0.42356060400014639,0.42201835132770343,0.42047487638404646,0.41893018363946666,0.41738427756778285,0.41583716264632736,0.4142888433559338,0.41273932418092402,0.41118860960909503,0.40963670413170572,0.4080836122434649,0.40652933844251671,0.40497388723042876,0.40341726311217879,0.40185947059614113,0.40030051419407497,0.39874039842110959,0.39717912779573245,0.39561670683977562,0.39405314007840292,0.39248843204009642,0.39092258725664436,0.38935561026312654,0.38778750559790215,0.38621827780259643,0.38464793142208747,0.38307647100449294,0.38150390110115751,0.37993022626663864,0.37835545105869428,0.37677958003826911,0.37520261776948155,0.37362456881961104,0.37204543775908383,0.3704652291614603,0.36888394760342169,0.3673015976647569,0.36571818392834876,0.36413371098016195,0.36254818340922806,0.36096160580763348,0.3593739827705057,0.35778531889600002,0.35619561878528616,0.35460488704253557,0.35301312827490705,0.35142034709253395,0.34982654810851099,0.34823173593888035,0.34663591520261933,0.34503909052162562,0.34344126652070495,0.34184244782755713,0.34024263907276292,0.33864184488977045,0.33704006991488233,0.33543731878724131,0.33383359614881747,0.33222890664439469,0.33062325492155703,0.32901664563067523,0.32740908342489411,0.3258005729601175,0.32419111889499608,0.32258072589091336,0.32096939861197216,0.31935714172498109,0.31774395989944171,0.31612985780753383,0.3145148401241028,0.31289891152664578,0.31128207669529789,0.30966434031281959,0.30804570706458179,0.30642618163855329,0.30480576872528664,0.30318447301790508,0.3015622992120881,0.2999392520060592,0.29831533610057093,0.29669055619889173,0.29506491700679272,0.29343842323253344,0.2918110795868486,0.29018289078293469,0.28855386153643553,0.28692399656542933,0.28529330059041463,0.28366177833429662,0.28202943452237422,0.28039627388232519,0.2787623011441932,0.27712752104037403,0.27549193830560165,0.27385555767693459,0.27221838389374287,0.27058042169769297,0.26894167583273515,0.26730215104508931,0.26566185208323123,0.26402078369787885,0.26237895064197908,0.26073635767069286,0.25909300954138231,0.25744891101359657,0.2558040668490581,0.25415848181164935,0.25251216066739801,0.25086510818446389,0.24921732913312494,0.24756882828576343,0.24591961041685195,0.24426968030294036,0.24261904272264076,0.24096770245661442,0.23931566428755782,0.23766293300018873,0.23600951338123211,0.23435541021940717,0.23270062830541219,0.2310451724319115,0.22938904739352139,0.22773225798679603,0.22607480901021432,0.22441670526416491,0.22275795155093295,0.22109855267468612,0.21943851344146065,0.21777783865914715,0.21611653313747761,0.21445460168801017,0.21279204912411598,0.21112888026096516,0.20946509991551271,0.20780071290648452,0.20613572405436406,0.20447013818137735,0.20280396011147966,0.2011371946703415,0.19946984668533424,0.19780192098551719,0.19613342240162213,0.19446435576604032,0.19279472591280827,0.19112453767759363,0.1894537958976811,0.18778250541195926,0.18611067106090515,0.18443829768657127,0.18276539013257126,0.1810919532440658,0.17941799186774854,0.17774351085183279,0.17606851504603618,0.17439300930156759,0.17271699847111274,0.17104048740882027,0.16936348097028733,0.16768598401254653,0.16600800139405045,0.16432953797465846,0.1626505986156225,0.16097118817957273,0.1592913115305043,0.15761097353376197,0.15593017905602691,0.15424893296530237,0.15256724013089959,0.15088510542342348,0.14920253371475939,0.14751952987805761,0.14583609878772028,0.14415224531938695,0.14246797434992048,0.14078329075739265,0.13909819942107107,0.13741270522140353,0.13572681304000486,0.13404052775964254,0.13235385426422233,0.13066679743877507,0.12897936216944109,0.12729155334345707,0.12560337584914158,0.12391483457588091,0.12222593441411479,0.12053668025532301,0.11884707699200996,0.11715712951769133,0.11546684272687978,0.11377622151507066,0.11208527077872772,0.11039399541526972,0.10870240032305496,0.10701049040136801,0.10531827055040521,0.10362574567126037,0.10193292066591138,0.10023980043720467,0.098546389888841998,0.096852693925365912,0.095158717452145603,0.093464465375362488,0.091769942601996848,0.090075154039812311,0.08838010459734251,0.086684799183876657,0.084989242709445328,0.083293440084805992,0.081597396221429724,0.079901116031485614,0.078204604427827409,0.076507866323979115,0.074810906634120516,0.073113730273073829,0.071416342156288129,0.069718747199826028,0.068020950320349161,0.066322956435104038,0.064624770461907483,0.06292639731913334,0.061227841925696865,0.059529109201041382,0.057830204065123826,0.056131131438400469,0.054431896241812439,0.052732503396772407,0.051032957825148939,0.049333264449253164,0.047633428191824305,0.045933453976015171,0.044233346725378785,0.042533111363852842,0.040832752815746269,0.039132276005724782,0.037431685858796623,0.035730987300298049,0.034030185255879974,0.032329284651492374,0.030628290413370902,0.028927207468022388,0.027226040742210588,0.02552479516294168,0.023823475657450893,0.022122087153186896,0.020420634577798417,0.018719122859119752,0.017017556925156493,0.015315941704071023,0.013614282124169147,0.011912583113884476,0.01021084960176504,0.0085090865164588001,0.006807298786699144,0.0051054913412915013,0.0034036691090977389,0.0017018370190227704,6.123233995736766e-17,0.99996062139062203,0.99984248866383785,0.99964561112345263,0.99937000427499356,0.99901568982448985,0.99858269567676194,0.99807105593322476,0.99748081088920149,0.99681200703075012,0.99606469703100253,0.99523893974601585,0.99433480021013709,0.99335234963088159,0.99229166538332458,0.9911528310040072,0.98993593618435782,0.98864107676362811,0.98726835472134455,0.98581787816927746,0.9842897613429259,0.98268412459252097,0.98100109437354754,0.97924080323678475,0.97740338981786667,0.97548899882636386,0.97349778103438656,0.97142989326470996,0.96928549837842337,0.96706476526210416,0.96476786881451593,0.96239498993283479,0.95994631549840204,0.95742203836200546,0.95482235732869192,0.95214747714210923,0.94939760846838128,0.94657296787951684,0.94367377783635276,0.94070026667103324,0.93765266856902785,0.93453122355068685,0.93133617745233843,0.92806778190692707,0.92472629432419573,0.92131197787041297,0.91782510144764662,0.91426593967258585,0.91063477285491312,0.90693188697522797,0.90315757366252369,0.89931213017121925,0.89539585935774901,0.8914090696567103,0.88735207505657154,0.88322519507494412,0.87902875473341735,0.87476308453196128,0.87042852042289709,0.86602540378443871,0.86155408139380607,0.85701490539991521,0.85240823329564253,0.84773442788967102,0.84299385727791509,0.83818689481453168,0.83331391908251495,0.82837531386388075,0.82337146810944051,0.81830277590816902,0.8131696364561668,0.80797245402522044,0.80271163793096367,0.79738760250064045,0.79200076704047384,0.78655155580264247,0.78104039795186808,0.77546772753161486,0.76983398342990628,0.76413960934475889,0.75838505374923848,0.75257076985613847,0.74669721558228763,0.74076485351248489,0.7347741508630673,0.72872557944511396,0.72261961562728727,0.71645674029831519,0.71023743882911827,0.70396220103458285,0.69763152113498472,0.69124589771706546,0.68480583369476555,0.67831183626961611,0.6717644168907928,0.66516409121483588,0.65851137906503854,0.65180680439050709,0.64505089522489556,0.63824418364482005,0.63138720572795359,0.62448050151080592,0.61752461494619193,0.61052009386039141,0.60346748991000387,0.59636735853850142,0.58922025893248353,0.5820267539776377,0.57478741021440682,0.56750279779337165,0.56017349043034614,0.55280006536119342,0.54538310329636475,0.53792318837516395,0.53042090811974252,0.52287685338882761,0.51529161833118764,0.50766580033884001,0.50000000000000011,0.49229482105178207,0.48455087033265021,0.47676875773462501,0.4689490961552511,0.4610925014493259,0.45319959238039714,0.4452709905720314,0.43730732045885545,0.42930920923737842,0.42127728681659571,0.41321218576837826,0.40511454127765345,0.39698499109238022,0.38882417547332071,0.38063273714361567,0.37241132123816595,0.36416057525282231,0.35588114899339091,0.34757369452445741,0.33923886611803017,0.33087732020201382,0.32248971530850895,0.31407671202194876,0.30563897292707387,0.29717716255674792,0.28869194733962095,0.2801839955476445,0.27165397724343882,0.26310256422752121,0.25453042998539771,0.2459382496345198,0.23732669987111477,0.22869645891689158,0.22004820646562478,0.21138262362962429,0.20270039288609362,0.19400219802337848,0.1852887240871143,0.17656065732627438,0.16781868513912152,0.15906349601907205,0.15029577950047049,0.14151622610428452,0.13272552728372197,0.12392437536977263,0.11511346351668289,0.10629348564736542,0.097465136398746488,0.088629111067058911,0.079786105553083103,0.070936816307338571,0.062081940275234046,0.053222174842178692,0.044358217778656624,0.035490767185273123,0.026620521437774818,0.017748179132046016,0.0088744390290910122,6.123233995736766e-17,0.99999784143062498,0.9999913657318189,0.99998057293153819,0.9999654630763769,0.9999460362315663,0.99992229248097486,0.99989423192710747,0.99986185469110567,0.99982516091274642,0.9997841507504418,0.99973882438123829,0.99968918200081625,0.99963522382348868,0.9995769500822006,0.99951436102852764,0.99944745693267556,0.99937623808347864,0.9993007047883985,0.99922085737352295,0.99913669618356415,0.9990482215818578,0.9989554339503609,0.99885833368965071,0.99875692121892234,0.9986511969759877,0.99854116141727278,0.9984268150178166,0.99830815827126818,0.9981851916898854,0.99805791580453185,0.99792633116467533,0.99779043833838499,0.99765023791232887,0.99750573049177182,0.99735691670057225,0.99720379718118013,0.99704637259463358,0.9968846436205564,0.99671861095715508,0.99654827532121548,0.99637363744810037,0.99619469809174555,0.99601145802465707,0.99582391803790782,0.99563207894113381,0.99543594156253112,0.99523550674885208,0.99503077536540141,0.99482174829603309,0.99460842644314584,0.99439081072767976,0.99416890208911213,0.99394270148545327,0.9937122098932426,0.99347742830754426,0.99323835774194302,0.99299499922853951,0.99274735381794643,0.99249542257928325,0.99223920660017206,0.99197870698673285,0.99171392486357857,0.99144486137381038,0.99117151767901279,0.99089389495924829,0.9906119944130527,0.99032581725742996,0.99003536472784648,0.98974063807822599,0.98944163858094447,0.98913836752682427,0.98883082622512852,0.98851901600355574,0.98820293820823391,0.98788259420371471,0.98755798537296757,0.98722911311737405,0.9868959788567212,0.98655858402919583,0.98621693009137823,0.98587101851823589,0.98552085080311702,0.98516642845774427,0.98480775301220802,0.98444482601496008,0.98407764903280648,0.98370622365090132,0.9833305514727394,0.98295063412014971,0.98256647323328827,0.98217807047063066,0.9817854275089658,0.98138854604338766,0.98098742778728865,0.98058207447235179,0.98017248784854383,0.97975866968410696,0.97934062176555148,0.97891834589764848,0.97849184390342125,0.97806111762413828,0.97762616891930454,0.97718699966665401,0.9767436117621412,0.97629600711993336,0.97584418767240177,0.97538815537011359,0.97492791218182362,0.97446346009446561,0.97399480111314352,0.97352193726112335,0.97304487057982381,0.97256360312880819,0.97207813698577461,0.97158847424654782,0.97109461702506994,0.97059656745339096,0.97009432768166004,0.969587899878116,0.96907728622907796,0.96856248893893582,0.9680435102301409,0.96752035234319622,0.96699301753664724,0.96646150808707121,0.96592582628906831,0.96538597445525109,0.96484195491623492,0.96429377002062766,0.96374142213501945,0.96318491364397274,0.96262424695001203,0.96205942447361326,0.96149044865319322,0.9609173219450996,0.96034004682359986,0.9597586257808709,0.95917306132698787,0.95858335598991395,0.9579895123154889,0.95739153286741807,0.95678942022726188,0.95618317699442401,0.95557280578614068,0.95495830923746916,0.95433969000127628,0.95371695074822693,0.95309009416677304,0.9524591229631415,0.95182403986132236,0.95118484760305766,0.95054154894782905,0.949894146672846,0.9492426435730339,0.94858704246102221,0.94792734616713181,0.94726355753936309,0.94659567944338363,0.94592371476251602,0.94524766639772484,0.94456753726760478,0.94388333030836757,0.94319504847382973,0.94250269473539927,0.94180627208206347,0.94110578352037555,0.94040123207444171,0.93969262078590843,0.93897995271394885,0.93826323093524999,0.9375424585439992,0.93681763865187095,0.93608877438801319,0.9353558688990341,0.93461892534898838,0.93387794691936366,0.9331329368090665,0.93238389823440904,0.93163083442909467,0.93087374864420425,0.93011264414818229,0.92934752422682243,0.92857839218325355,0.92780525133792546,0.92702810502859434,0.92624695661030876,0.9254618094553948,0.92467266695344152,0.92387953251128674,0.92308240955300191,0.92228130151987731,0.92147621187040762,0.9206671440802765,0.91985410164234194,0.91903708806662077,0.918216106880274,0.91739116162759149,0.91656225586997619,0.91572939318592939,0.91489257717103467,0.91405181143794312,0.91320709961635682,0.91235844535301414,0.91150585231167314,0.9106493241730963,0.9097888646350345,0.90892447741221083,0.90805616623630503,0.90718393485593674,0.90630778703664994,0.90542772656089643,0.90454375722801916,0.9036558828542367,0.90276410727262557,0.90186843433310504,0.90096886790241915,0.90006541186412115,0.89915807011855609,0.89824684658284426,0.89733174519086401,0.89641276989323493,0.89548992465730104,0.89456321346711321,0.89363264032341228,0.89269820924361154,0.89175992426177964,0.89081778942862311,0.88987180881146866,0.88892198649424581,0.88796832657746949,0.88701083317822171,0.88604951043013436,0.88508436248337119,0.88411539350460977,0.88314260767702368,0.88216600920026411,0.8811856022904424,0.88020139118011109,0.87921338011824623,0.87822157337022855,0.87722597521782542,0.87622658995917224,0.87522342190875368,0.87421647539738567,0.87320575477219575,0.87219126439660533,0.87117300865030989,0.87015099192926093,0.8691252186456464,0.86809569322787206,0.86706242012054158,0.86602540378443871,0.8649846486965066,0.8639401593498296,0.86289194025361293,0.86183999593316396,0.86078433092987228,0.8597249498011903,0.85866185712061316,0.85759505747765952,0.85652455547785145,0.85545035574269468,0.8543724629096584,0.85329088163215572,0.85220561657952287,0.85111667243699973,0.85002405390570934,0.84892776570263739,0.84782781256061224,0.84672419922828424,0.84561693047010511,0.84450601106630785,0.84339144581288572,0.8422732395215714,0.84115139701981678,0.8400259231507714,0.83889682277326239,0.83776410076177243,0.83662776200641975,0.83548781141293649,0.83434425390264733,0.83319709441244894,0.83204633789478788,0.83089198931763975,0.82973405366448749,0.82857253593430003,0.82740744114151055,0.82623877431599491,0.82506654050304984,0.82389074476337165,0.82271139217303346,0.82152848782346399,0.82034203682142559,0.8191520442889918,0.81795851536352548,0.81676145519765675,0.81556086895926017,0.81435676183143335,0.81314913901247365,0.8119380057158565,0.81072336717021232,0.80950522861930418,0.80828359532200522,0.80705847255227614,0.8058298655991416,0.80459777976666835,0.803362220373942,0.80212319275504385,0.80088070225902797,0.79963475424989827,0.79838535410658518,0.7971325072229225,0.79587621900762406,0.79461649488426034,0.79335334029123517,0.7920867606817622,0.7908167615238415,0.78954334830023543,0.78826652650844564,0.78698630166068895,0.78570267928387372,0.78441566491957571,0.78312526412401473,0.7818314824680298,0.78053432553705604,0.7792337989310999,0.77792990826471498,0.77662265916697837,0.77531205728146579,0.7739981082662275,0.77268081779376352,0.77136019155099977,0.7700362352392629,0.76870895457425592,0.76737835528603371,0.76604444311897801,0.76470722383177281,0.7633667031973792,0.7620228870030108,0.76067578105010858,0.75932539115431574,0.75797172314545291,0.75661478286749284,0.75525457617853486,0.75389110895077993,0.75252438707050529,0.75115441643803893,0.74978120296773421,0.74840475258794414,0.74702507124099604,0.74564216488316559,0.74425603948465158,0.74286670102954966,0.74147415551582663,0.74007840895529475,0.73867946737358559,0.73727733681012408,0.73587202331810231,0.73446353296445366,0.73305187182982634,0.7316370460085575,0.73021906160864636,0.72879792475172844,0.72737364157304873,0.72594621822143524,0.72451566085927266,0.72308197566247567,0.72164516882046204,0.7202052465361265,0.71876221502581317,0.71731608051928941,0.71586684925971844,0.71441452750363277,0.71295912152090679,0.71150063759473015,0.71003908202158039,0.7085744611111956,0.70710678118654757,0.70563604858381401,0.70416226965235185,0.70268545075466915,0.70120559826639783,0.69972271857626667,0.69823681808607285,0.69674790321065505,0.69525598037786529,0.69376105602854166,0.69226313661647965,0.69076222860840542,0.68925833848394713,0.68775147273560699,0.6862416378687336,0.68472884040149351,0.68321308686484328,0.68169438380250136,0.68017273777091936,0.6786481553392546,0.67712064308934083,0.67559020761566024,0.67405685552531536,0.67252059343799986,0.67098142798597016,0.66943936581401731,0.66789441357943757,0.66634657795200392,0.66479586561393789,0.66324228325987944,0.66168583759685939,0.66012653534426957,0.65856438323383415,0.65699938800958058,0.65543155642781026,0.6538608952570697,0.65228741127812118,0.65071111128391335,0.64913200207955191,0.64755009048227052,0.64596538332140097,0.6443778874383439,0.64278760968653936,0.64119455693143701,0.63959873605046669,0.63800015393300857,0.63639881748036342,0.63479473360572303,0.63318790923413981,0.63157835130249762,0.62996606675948141,0.62835106256554718,0.62673334569289219,0.62511292312542466,0.62348980185873359,0.62186398890005867,0.62023549126826005,0.61860431599378807,0.61697047011865258,0.6153339606963929,0.61369479479204747,0.61205297948212267,0.61040852185456318,0.60876142900872066,0.60711170805532355,0.60545936611644591,0.60380441032547738,0.6021468478270916,0.60048668577721598,0.59882393134300027,0.59715859170278618,0.59549067404607592,0.59382018557350158,0.5921471334967936,0.59047152503875,0.58879336743320476,0.58711266792499728,0.58542943376994061,0.58374367223478996,0.58205539059721179,0.58036459614575231,0.57867129617980573,0.57697549800958292,0.57527720895607992,0.57357643635104605,0.57187318753695282,0.57016746986696165,0.56845929070489243,0.56674865742519143,0.56503557741289989,0.56332005806362206,0.56160210678349298,0.55988173098914662,0.55815893810768391,0.556433735576641,0.55470613084395637,0.55297613136793944,0.55124374461723802,0.54950897807080601,0.54777183921787131,0.54603233555790343,0.54429047460058111,0.54254626386575944,0.54079971088343848,0.53905082319372966,0.53729960834682389,0.5355460739029585,0.53379022743238513,0.53203207651533657,0.53027162874199429,0.52850889171245552,0.52674387303670067,0.52497658033456018,0.52320702123568197,0.521435203379498,0.51966113441519213,0.51788482200166586,0.51610627380750662,0.51432549751095358,0.51254250079986519,0.51075729137168546,0.50896987693341167,0.50718026520155934,0.50538846390213088,0.50359448077058122,0.50179832355178433,0.50000000000000011,0.49819951787884093,0.49639688496123791,0.49459210902940748,0.49278519787481773,0.4909761592981548,0.48916500110928929,0.48735173112724239,0.48553635718015214,0.4837188871052398,0.48189932874877589,0.48007768996604622,0.47825397862131824,0.47642820258780683,0.47460036974764042,0.47277048799182703,0.4709385652202201,0.4691046093414844,0.46726862827306198,0.46543062994113776,0.4635906222806056,0.46174861323503391,0.45990461075663142,0.4580586228062124,0.45621065735316307,0.45436072237540681,0.45250882585936947,0.45065497579994529,0.44879918020046228,0.44694144707264744,0.44508178443659252,0.44322020032071907,0.44135670276174405,0.43949129980464502,0.43762399950262526,0.43575480991707943,0.43388373911755818,0.4320107951817338,0.43013598619536514,0.42825932025226277,0.42638080545425383,0.42450044991114749,0.42261826174069944,0.4207342490685772,0.41884842002832484,0.41696078276132803,0.41507134541677876,0.41318011615164019,0.41128710313061151,0.4093923145260927,0.40749575851814873,0.40559744329447522,0.40369737705036235,0.40179556798865979,0.39989202431974108,0.3979867542614684,0.3960797660391569,0.39417106788553941,0.39226066804073062,0.3903485747521917,0.38843479627469479,0.386519340870287,0.38460221680825518,0.38268343236508984,0.38076299582444961,0.37884091547712562,0.37691719962100534,0.37499185656103706,0.3730648946091939,0.37113632208443798,0.36920614731268442,0.36727437862676565,0.36534102436639498,0.36340609287813108,0.36146959251534166,0.35953153163816748,0.35759191861348644,0.35565076181487665,0.35370806962258156,0.35176385042347297,0.34981811261101486,0.34787086458522737,0.34592211475265039,0.34397187152630732,0.34202014332566882,0.3400669385766163,0.33811226571140568,0.33615613316863091,0.33419854939318761,0.33223952283623648,0.33027906195516715,0.32831717521356107,0.32635387108115566,0.32438915803380713,0.32242304455345444,0.32045553912808222,0.31848665025168443,0.31651638642422747,0.31454475615161365,0.31257176794564445,0.31059743032398374,0.30862175181012097,0.30664474093333433,0.30466640622865437,0.30268675623682606,0.30070579950427329,0.29872354458306111,0.2967400000308591,0.29475517441090432,0.29276907629196436,0.29078171424830029,0.28879309685962989,0.28680323271109032,0.28481213039320119,0.28281979850182754,0.28082624563814246,0.27883148040859035,0.27683551142484941,0.27483834730379481,0.27283999666746106,0.27084046814300516,0.26883977036266915,0.26683791196374301,0.26483490158852718,0.26283074788429533,0.26082545950325714,0.25881904510252074,0.2568115133440555,0.25480287289465459,0.25279313242589746,0.25078230061411283,0.24877038614034025,0.24675739769029378,0.24474334395432393,0.24272823362738008,0.24071207540897313,0.23869487800313785,0.23667665011839534,0.23465740046771535,0.23263713776847889,0.23061587074244025,0.22859360811568971,0.22657035861861555,0.22454613098586662,0.22252093395631445,0.22049477627301564,0.21846766668317399,0.2164396139381029,0.21441062679318745,0.21238071400784669,0.21034988434549573,0.208318146573508,0.20628550946317739,0.20425198178968032,0.20221757233203791,0.20018228987307807,0.19814614319939755,0.19610914110132427,0.19407129237287854,0.19203260581173623,0.18999309021919011,0.187952754400112,0.18591160716291472,0.18386965731951405,0.18182691368529086,0.17978338507905278,0.1777390803229964,0.17569400824266898,0.17364817766693041,0.17160159742791523,0.16955427636099418,0.16750622330473647,0.16545744710087126,0.1634079565942497,0.16135776063280666,0.15930686806752262,0.15725528775238529,0.15520302854435156,0.1531500993033092,0.15109650889203857,0.14904226617617444,0.14698738002416759,0.1449318593072467,0.14287571289937989,0.14081894967723671,0.13876157852014895,0.13670360831007353,0.13464504793155344,0.1325859062716794,0.13052619222005171,0.12846591466874172,0.12640508251225346,0.12434370464748527,0.12228178997369146,0.12021934739244373,0.11815638580759288,0.1160929141252303,0.11402894125364955,0.11196447610330791,0.10989952758678787,0.10783410461875867,0.10576821611593785,0.10370187099705273,0.10163507818280189,0.099567846595816661,0.097500185160622657,0.095432102803601149,0.09336360845295065,0.091294711038648266,0.089225419492411182,0.087155742747658138,0.085085689739471004,0.08301526940455542,0.080944490681203435,0.078873362509254141,0.076801893830055229,0.074730093586424393,0.072657970722610737,0.070585534184256185,0.06851279291835681,0.066439755873224274,0.064366431998447118,0.062292830244852174,0.060218959564465942,0.058144828910475899,0.056070447237191845,0.053995823500007305,0.051920966655360792,0.049845885660697198,0.047770589474429088,0.045695087055898059,0.043619387365336007,0.041543499363826522,0.039467432013266114,0.037391194276325604,0.035314795116411384,0.033238243497626711,0.031161548384733055,0.029084718743111582,0.02700776353872357,0.024930691738073035,0.022853512308167134,0.020776234216477674,0.018698866430902402,0.016621417919726277,0.014543897651582776,0.012466314595415145,0.010388677720437705,0.0083109959960971196,0.0062332783920336669,0.0041555338780425288,0.0020777714240350592,6.123233995736766e-17,0.99999649167258042,0.99998596671493845,0.99996842520092399,0.99994386725361994,0.99991229304534079,0.99987370279763199,0.99982809678126783,0.99977547531625011,0.99971583877180548,0.99964918756638299,0.999575522167651,0.99949484309249437,0.99940715090701027,0.9993124462265045,0.99921072971548708,0.99910200208766764,0.99898626410595048,0.99886351658242911,0.99873376037838035,0.99859699640425892,0.9984532256196903,0.99830244903346443,0.99814466770352861,0.99797988273698002,0.99780809529005787,0.99762930656813531,0.99744351782571117,0.99725073036640099,0.99705094554292761,0.99684416475711235,0.9966303894598646,0.99640962115117182,0.99618186138008902,0.99594711174472794,0.99570537389224567,0.99545664951883328,0.99520094036970386,0.99493824823908039,0.99466857497018268,0.99439192245521502,0.99410829263535272,0.9938176875007283,0.99352010909041755,0.99321555949242568,0.9929040408436719,0.99258555532997517,0.99226010518603835,0.99192769269543279,0.9915883201905823,0.99124199005274638,0.99088870471200419,0.99052846664723715,0.99016127838611112,0.98978714250505972,0.98940606162926514,0.98901803843264025,0.98862307563781004,0.98822117601609205,0.98781234238747728,0.98739657762061006,0.98697388463276836,0.98654426638984294,0.98610772590631668,0.98566426624524361,0.98521389051822694,0.98475660188539782,0.98429240355539271,0.98382129878533109,0.98334329088079242,0.98285838319579333,0.98236657913276348,0.98186788214252241,0.98136229572425471,0.98084982342548577,0.98033046884205677,0.97980423561809971,0.9792711274460113,0.97873114806642769,0.97818430126819778,0.9776305908883568,0.97707002081209937,0.97650259497275227,0.97592831735174668,0.97534719197859043,0.97475922293083983,0.97416441433407053,0.97356277036184935,0.97295429523570431,0.97233899322509543,0.97171686864738427,0.97108792586780457,0.97045216929943057,0.96980960340314659,0.96916023268761597,0.96850406170924863,0.96784109507217009,0.96717133742818828,0.96649479347676137,0.96581146796496486,0.96512136568745788,0.96442449148645004,0.96372085025166698,0.96301044692031645,0.96229328647705348,0.96156937395394515,0.96083871443043589,0.96010131303331148,0.95935717493666284,0.95860630536185021,0.95784870957746626,0.95708439289929903,0.95631336069029493,0.95553561836052081,0.95475117136712617,0.95396002521430479,0.95316218545325604,0.95235765768214631,0.95154644754606921,0.95072856073700629,0.94990400299378686,0.94907278010204821,0.94823489789419435,0.94739036224935547,0.94653917909334684,0.94568135439862666,0.94481689418425496,0.94394580451585053,0.94306809150554904,0.94218376131195958,0.94129282014012194,0.94039527424146274,0.93949112991375194,0.93858039350105804,0.93766307139370419,0.93673917002822293,0.9358086958873113,0.93487165549978513,0.93392805544053348,0.93297790233047218,0.9320212028364977,0.93105796367144011,0.93008819159401623,0.92911189340878197,0.92812907596608463,0.92713974616201511,0.92614391093835924,0.92514157728254875,0.92413275222761326,0.92311744285212982,0.92209565628017387,0.92106739968126916,0.92003268027033724,0.91899150530764717,0.91794388209876432,0.91688981799449898,0.91582932039085529,0.91476239672897885,0.91368905449510462,0.91260930122050488,0.91152314448143534,0.91043059189908315,0.90933165113951264,0.90822632991361174,0.90711463597703801,0.90599657713016413,0.90487216121802305,0.90374139613025306,0.90260428980104268,0.90146085020907452,0.90031108537746929,0.89915500337373011,0.89799261230968552,0.8968239203414321,0.89564893566927817,0.89446766653768572,0.89328012123521228,0.89208630809445355,0.89088623549198409,0.88967991184829931,0.88846734562775576,0.88724854533851216,0.88602351953246927,0.88479227680521055,0.88355482579594113,0.88231117518742752,0.88106133370593709,0.8798053101211758,0.8785431132462278,0.87727475193749271,0.87600023509462432,0.87471957166046721,0.87343277062099489,0.87213984100524578,0.87084079188526087,0.86953563237601939,0.86822437163537525,0.86690701886399246,0.86558358330528062,0.86425407424533029,0.86291850101284773,0.86157687297908914,0.86022919955779553,0.8588754902051261,0.85751575441959205,0.85615000174199007,0.85477824175533534,0.8534004840847943,0.85201673839761682,0.85062701440306887,0.84923132185236394,0.84782967053859504,0.8464220702966655,0.84500853100322049,0.8435890625765774,0.84216367497665601,0.84073237820490931,0.8392951823042526,0.83785209735899357,0.83640313349476114,0.83494830087843452,0.83348760971807212,0.83202107026283967,0.83054869280293819,0.82907048766953229,0.82758646523467705,0.82609663591124582,0.82460101015285647,0.82309959845379899,0.82159241134896088,0.82007945941375382,0.81856075326403943,0.81703630355605461,0.81550612098633657,0.81397021629164834,0.81242860024890307,0.81088128367508849,0.80932827742719071,0.80776959240211876,0.80620523953662737,0.80463522980724067,0.80305957423017493,0.80147828386126152,0.79989136979586928,0.79829884316882627,0.79670071515434238,0.79509699696593006,0.79348769985632639,0.79187283511741369,0.79025241408014057,0.78862644811444194,0.78699494862915997,0.78535792707196339,0.78371539492926723,0.78206736372615271,0.78041384502628597,0.77875485043183712,0.77709039158339832,0.77542048015990306,0.77374512787854333,0.7720643464946878,0.77037814780179925,0.76868654363135192,0.76698954585274859,0.76528716637323668,0.76357941713782551,0.76186631012920203,0.76014785736764678,0.75842407091094965,0.75669496285432525,0.75496054533032797,0.75322083050876698,0.7514758305966206,0.74972555783795103,0.747970024513818,0.74620924294219293,0.74444322547787234,0.74267198451239125,0.74089553247393614,0.73911388182725779,0.73732704507358382,0.73553503475053106,0.7337378634320173,0.73193554372817349,0.73012808828525466,0.72831550978555215,0.72649782094730353,0.7246750345246038,0.72284716330731624,0.72101422012098237,0.7191762178267318,0.71733316932119218,0.71548508753639883,0.71363198543970363,0.71177387603368447,0.7099107723560536,0.70804268747956656,0.70616963451193004,0.70429162659571032,0.70240867690824071,0.70052079866152916,0.69862800510216583,0.69673030951122961,0.69482772520419567,0.6929202655308413,0.69100794387515263,0.68909077365523075,0.68716876832319718,0.68524194136510008,0.68331030630081913,0.68137387668397087,0.67943266610181352,0.67748668817515167,0.67553595655824072,0.67358048493869127,0.67162028703737253,0.66965537660831675,0.66768576743862207,0.66571147334835634,0.66373250819045959,0.66174888585064739,0.65976062024731308,0.65776772533142991,0.65577021508645383,0.65376810352822468,0.65176140470486821,0.64975013269669746,0.64773430161611389,0.6457139256075084,0.64368901884716201,0.64165959554314678,0.63962566993522529,0.63758725629475166,0.63554436892457078,0.63349702215891812,0.63144523036331934,0.62938900793448938,0.62732836930023117,0.62526332891933478,0.62319390128147567,0.62112010090711356,0.61904194234738963,0.61695944018402538,0.61487260902921959,0.61278146352554608,0.61068601834585134,0.60858628819315075,0.60648228780052593,0.60437403193102168,0.60226153537754168,0.60014481296274491,0.5980238795389422,0.59589874998799108,0.5937694392211923,0.59163596217918446,0.58949833383183958,0.58735656917815793,0.58521068324616288,0.58306069109279535,0.58090660780380809,0.57874844849366014,0.5765862283054104,0.57441996241061155,0.57224966600920391,0.57007535432940792,0.56789704262761842,0.56571474618829654,0.56352848032386327,0.56133826037459156,0.55914410170849882,0.55694601972123903,0.5547440298359948,0.55253814750336905,0.55032838820127694,0.54811476743483656,0.54589730073626097,0.54367600366474833,0.54145089180637374,0.53922198077397887,0.53698928620706343,0.53475282377167421,0.53251260916029641,0.53026865809174262,0.52802098631104299,0.52576960958933483,0.52351454372375106,0.52125580453731069,0.51899340787880688,0.51672736962269628,0.51445770566898719,0.5121844319431279,0.5099075643958958,0.5076271190032845,0.50534311176639213,0.50305555871130914,0.50076447588900574,0.4984698793752193,0.49617178527034161,0.49387020969930578,0.49156516881147311,0.48925667878051998,0.48694475580432411,0.484629416104851,0.48231067592804017,0.47998855154369119,0.47766305924534924,0.47533421535019116,0.47300203619891074,0.47066653815560405,0.46832773760765484,0.46598565096561922,0.4636402946631108,0.46129168515668523,0.45893983892572471,0.45658477247232249,0.45422650232116707,0.45186504501942604,0.44950041713663025,0.44713263526455738,0.44476171601711556,0.44238767603022672,0.44001053196171014,0.43763030049116514,0.43524699831985447,0.43286064217058684,0.43047124878759963,0.4280788349364415,0.42568341740385468,0.4232850129976572,0.42088363854662492,0.41847931090037349,0.41607204692924016,0.41366186352416534,0.41124877759657402,0.40883280607825734,0.40641396592125345,0.40399227409772887,0.4015677475998593,0.3991404034397103,0.39671025864911796,0.39427733027956957,0.39184163540208367,0.3894031911070906,0.38696201450431222,0.38451812272264224,0.38207153291002571,0.37962226223333889,0.37717032787826871,0.37471574704919225,0.37225853696905592,0.36979871487925481,0.3673362980395114,0.36487130372775478,0.36240374923999918,0.35993365189022275,0.35746102901024601,0.35498589794961027,0.35250827607545582,0.35002818077240028,0.34754562944241624,0.34506063950470955,0.3425732283955969,0.34008341356838345,0.33759121249324048,0.33509664265708267,0.33259972156344564,0.33010046673236276,0.32759889570024264,0.32509502601974566,0.32258887525966118,0.32008046100478404,0.31756980085579134,0.31505691242911865,0.31254181335683678,0.31002452128652774,0.30750505388116123,0.30498342881897028,0.30245966379332767,0.29993377651262149,0.2974057847001309,0.2948757060939019,0.2923435584466228,0.28980935952549958,0.28727312711213149,0.28473487900238587,0.28219463300627357,0.27965240694782406,0.27710821866496005,0.2745620860093726,0.2720140268463957,0.26946405905488102,0.26691220052707237,0.26435846916848027,0.26180288289775622,0.25924545964656698,0.25668621735946878,0.25412517399378137,0.25156234751946216,0.24899775591897988,0.24643141718718858,0.24386334933120135,0.24129357037026397,0.23872209833562838,0.23614895127042629,0.23357414722954251,0.23099770427948829,0.22841964049827448,0.22583997397528482,0.22325872281114892,0.2206759051176152,0.21809153901742395,0.2155056426441801,0.21291823414222591,0.2103293316665138,0.20773895338247883,0.20514711746591133,0.20255384210282931,0.19995914548935093,0.19736304583156672,0.1947655613454119,0.19216671025653856,0.1895665108001878,0.18696498122106167,0.18436213977319532,0.18175800471982878,0.17915259433327888,0.17654592689481097,0.17393802069451081,0.17132889403115603,0.16871856521208783,0.16610705255308261,0.16349437437822328,0.16088054901977081,0.15826559481803551,0.15564953012124846,0.15303237328543268,0.15041414267427433,0.14779485665899394,0.14517453361821736,0.14255319193784693,0.13993085001093247,0.13730752623754214,0.13468323902463336,0.13205800678592375,0.12943184794176177,0.12680478091899758,0.12417682415085374,0.12154799607679581,0.11891831514240302,0.11628779979923883,0.11365646850472143,0.11102433972199431,0.10839143191979661,0.1057577635723336,0.10312335315914706,0.10048821916498554,0.097852380079674742,0.095215854397987729,0.092578660619515196,0.089940817248535629,0.087302342793885476,0.084663255768829285,0.082023574690929815,0.07938331808191805,0.076742504467563338,0.074101152377543278,0.071459280345313791,0.068816906907979078,0.066174050606161494,0.063530729983871506,0.06088696358837753,0.058242769970075853,0.055598167682360422,0.052953175281492675,0.050307811326471344,0.047662094378902217,0.045016043002867927,0.042369675764797658,0.039723011233336901,0.037076067979217156,0.034428864575125596,0.031781419595574817,0.029133751616772438,0.026485879216490794,0.023837820973936573,0.021189595469620466,0.018541221285226762,0.015892717003483006,0.013244101208029581,0.010595392483289324,0.0079466094143371274,0.0052977705867695282,0.002648894586574304,6.123233995736766e-17,0.99999606600847823,0.99998426406486529,0.99996459426201889,0.99993705675470057,0.99990165175957502,0.99985837955520818,0.99980724048206482,0.99974823494250653,0.99968136340078784,0.99960662638305287,0.99952402447733124,0.99943355833353331,0.99933522866344515,0.9992290362407229,0.99911498190088688,0.9989930665413147,0.99886329112123418,0.9987256566617162,0.99858016424566631,0.9984268150178166,0.99826561018471593,0.99809655101472128,0.99791963883798729,0.99773487504645608,0.99754226109384603,0.99734179849564031,0.99713348882907527,0.99691733373312796,0.99669333490850298,0.9964614941176192,0.99622181318459602,0.99597429399523907,0.99571893849702497,0.99545574869908671,0.99518472667219693,0.99490587454875234,0.99461919452275693,0.99432468884980407,0.99402235984705944,0.9937122098932426,0.99339424142860799,0.99306845695492629,0.9927348590354641,0.99239345029496417,0.99204423341962467,0.99168721115707814,0.9913223863163696,0.99094976176793481,0.99056934044357725,0.99018112533644564,0.98978511950100967,0.98938132605303664,0.98896974816956662,0.98855038908888726,0.98812325211050878,0.98768834059513777,0.98724565796465047,0.98679520770206641,0.9863369933515207,0.98587101851823589,0.98539728686849415,0.98491580212960816,0.9844265680898916,0.98392958859862967,0.98342486756604841,0.98291240896328458,0.98239221682235356,0.9818642952361184,0.98132864835825717,0.98078528040323043,0.98023419564624803,0.97967539842323559,0.97910889313079996,0.97853468422619538,0.97795277622728771,0.97736317371251924,0.97676588132087239,0.97616090375183384,0.9755482457653567,0.97492791218182362,0.97429990788200871,0.97366423780703915,0.97302090695835641,0.97236992039767656,0.971711283246951,0.97104500068832544,0.97037107796409983,0.96968952037668688,0.96900033328856994,0.96830352212226145,0.96759909236025976,0.96688704954500637,0.9661673992788421,0.96544014722396299,0.9647052991023759,0.96396286069585324,0.96321283784588807,0.96245523645364728,0.96169006247992583,0.9609173219450996,0.96013702092907782,0.95934916557125594,0.95855376207046639,0.95775081668493045,0.95694033573220882,0.95612232558915189,0.95529679269184964,0.95446374353558083,0.95362318467476204,0.95277512272289633,0.95191956435252056,0.95105651629515353,0.95018598534124288,0.94930797834011116,0.94842250219990276,0.94752956388752885,0.94662917042861283,0.94572132890743532,0.94480604646687805,0.94388333030836757,0.94295318769181913,0.94201562593557886,0.941070652416367,0.94011827456921904,0.93915849988742783,0.93819133592248416,0.93721679028401772,0.9362348706397372,0.93524558471536956,0.93424894029459982,0.93324494521900936,0.93223360738801431,0.93121493475880357,0.93018893534627622,0.92915561722297813,0.92811498851903895,0.92706705742210749,0.92601183217728789,0.92494932108707462,0.92387953251128674,0.92280247486700273,0.92171815662849388,0.92062658632715766,0.91952777255145068,0.91842172394682109,0.91730844921564059,0.91618795711713596,0.91506025646731981,0.91392535613892201,0.9127832650613189,0.91163399222046382,0.91047754665881597,0.90931393747526934,0.90814317382508125,0.90696526491980045,0.90578022002719405,0.90458804847117524,0.9033887596317296,0.90218236294484133,0.90096886790241915,0.89974828405222151,0.89852062099778141,0.8972858883983309,0.89604409596872514,0.89479525347936606,0.893539370756125,0.89227645768026609,0.8910065241883679,0.88972958027224558,0.88844563597887227,0.88715470141029995,0.88585678672357981,0.88455190213068269,0.88324005789841842,0.88192126434835505,0.880595531856738,0.87926287085440802,0.87792329182671924,0.87657680531345683,0.87522342190875368,0.87386315226100764,0.87249600707279718,0.8711219971007973,0.86974113315569546,0.86835342610210553,0.8669588868584831,0.86555752639703942,0.8641493557436547,0.86273438597779184,0.86131262823240895,0.85988409369387186,0.8584487936018661,0.85700673924930848,0.85555794198225821,0.85410241319982749,0.85264016435409229,0.85117120695000148,0.84969555254528728,0.84821321275037342,0.84672419922828424,0.84522852369455281,0.84372619791712899,0.84221723371628654,0.84070164296453009,0.83917943758650215,0.83765062955888869,0.83611523091032536,0.83457325372130264,0.83302471012407098,0.83146961230254524,0.8299079724922086,0.82833980298001653,0.82676511610430026,0.82518392425466947,0.82359623987191477,0.82200207544790993,0.82040144352551359,0.81879435669847067,0.81718082761131305,0.81556086895926017,0.8139344934881193,0.81230171399418505,0.81066254332413867,0.80901699437494745,0.8073650800937624,0.80570681347781714,0.80404220757432543,0.80237127548037801,0.80069403034284048,0.79901048535824903,0.79732065377270711,0.79562454888178102,0.79392218403039516,0.79221357261272751,0.79049872807210353,0.7887776639008911,0.78705039364039386,0.78531693088074495,0.78357728926080006,0.7818314824680298,0.78007952423841254,0.77832142835632601,0.77655720865443856,0.77478687901360099,0.77301045336273699,0.77122794567873332,0.76943936998633033,0.76764474035801111,0.76584407091389128,0.76403737582160747,0.76222466929620591,0.76040596560003093,0.7585812790426123,0.75675062398055304,0.75491401481741593,0.75307146600361097,0.75122299203628073,0.74936860745918721,0.74750832686259683,0.74564216488316559,0.74377013620382448,0.74189225555366345,0.74000853770781549,0.73811899748734067,0.73622364975910948,0.73432250943568556,0.73241559147520896,0.73050291088127761,0.72858448270283027,0.72666032203402708,0.72473044401413167,0.72279486382739155,0.72085359670291882,0.71890665791457031,0.71695406278082729,0.71499582666467532,0.71303196497348298,0.71106249315888048,0.70908742671663894,0.70710678118654757,0.70512057215229174,0.70312881524133053,0.70113152612477347,0.6991287205172575,0.69712041417682324,0.69510662290479086,0.69308736254563585,0.69106264898686465,0.68903249815888923,0.68699692603490159,0.68495594863074905,0.682909582004807,0.6808578422578534,0.67880074553294178,0.67673830801527424,0.67467054593207432,0.67259747555245908,0.67051911318731083,0.6684354751891497,0.66634657795200392,0.66425243791128175,0.66215307154364134,0.66004849536686172,0.65793872593971259,0.65582377986182405,0.65370367377355598,0.65157842435586699,0.64944804833018366,0.64731256245826829,0.64517198354208771,0.64302632842368024,0.64087561398502413,0.63871985714790414,0.63655907487377861,0.63439328416364549,0.63222250205790975,0.63004674563624785,0.62786603201747471,0.62568037835940793,0.62348980185873359,0.62129431975087024,0.61909394930983397,0.61688870784810224,0.61467861271647728,0.61246368130395012,0.61024393103756369,0.60801937938227535,0.60579004384081991,0.60355594195357143,0.60131709129840583,0.59907350949056204,0.59682521418250367,0.5945722230637801,0.59231455386088727,0.59005222433712823,0.58778525229247314,0.58551365556341972,0.5832374520228526,0.5809566595799025,0.57867129617980573,0.57638137980376281,0.57408692846879694,0.57178796022761225,0.56948449316845207,0.56717654541495588,0.56486413512601763,0.5625472804956424,0.56022599975280285,0.55790031116129668,0.55557023301960229,0.55323578366073489,0.55089698145210253,0.5485538447953614,0.54620639212627076,0.54385464191454869,0.54149861266372579,0.53913832291100039,0.5367737912270919,0.53440503621609581,0.53203207651533657,0.52965493079522064,0.52727361775908999,0.52488815614307549,0.52249856471594891,0.52010486227897479,0.51770706766576313,0.51530519974212141,0.51289927740590613,0.51048931958687316,0.50807534524652953,0.50565737337798455,0.50323542300580015,0.50080951318584055,0.49837966300512304,0.49594589158166763,0.49350821806434686,0.49106666163273455,0.48862124149695496,0.48617197689753255,0.4837188871052398,0.48126199142094545,0.47880130917546287,0.47633685972939838,0.47386866247299869,0.47139673682599781,0.46892110223746453,0.46644177818565002,0.46395878417783409,0.46147213975017132,0.45898186446753775,0.45648797792337714,0.45399049973954686,0.4514894495661626,0.44898484708144459,0.44647671199156297,0.44396506403048214,0.44144992295980556,0.43893130856862039,0.43640924067334202,0.43388373911755818,0.43135482377187201,0.42882251453374648,0.42628683132734779,0.42374779410338875,0.42120542283897094,0.41865973753742813,0.41611075822816934,0.41355850496652069,0.41100299783356747,0.40844425693599617,0.40588230240593703,0.40331715440080512,0.40074883310314113,0.39817735872045329,0.39560275148505875,0.39302503165392366,0.39044421950850383,0.3878603353545852,0.38527339952212469,0.38268343236508984,0.38009045426129801,0.37749448561225679,0.37489554684300375,0.37229365840194523,0.36968884076069508,0.36708111441391428,0.36447049987914959,0.36185701769667217,0.35924068842931528,0.35662153266231306,0.35399957100313884,0.35137482408134274,0.34874731254838881,0.34611705707749302,0.34348407836346101,0.34084839712252496,0.33821003409217981,0.33556901003102108,0.33292534571858146,0.33027906195516715,0.32763017956169366,0.32497871937952261,0.32232470227029797,0.31966814911578151,0.31700908081768819,0.31434751829752217,0.31168348249641237,0.30901699437494745,0.30634807491301064,0.30367674510961479,0.30100302598273765,0.29832693856915615,0.2956485039242806,0.29296774312198903,0.29028467725446233,0.28759932743201733,0.28491171478294069,0.28222186045332304,0.27952978560689279,0.27683551142484941,0.2741390591056963,0.27144044986507432,0.2687397049355954,0.26603684556667517,0.26333189302436499,0.26062486859118544,0.25791579356595912,0.25520468926364248,0.25249157701515812,0.2497764781672269,0.24705941408220078,0.24434040613789407,0.24161947572741502,0.23889664425899773,0.23617193315583421,0.23344536385590547,0.23071695781181228,0.22798673649060694,0.22525472137362473,0.22252093395631445,0.21978539574806896,0.21704812827205627,0.21430915306505069,0.21156849167726291,0.20882616567217005,0.20608219662634639,0.20333660612929408,0.20058941578327283,0.19784064720312944,0.19509032201612833,0.19233846186178158,0.18958508839167851,0.18683022326931464,0.18407388816992185,0.18131610478029814,0.17855689479863671,0.17579627993435468,0.17303428190792275,0.17027092245069483,0.16750622330473647,0.16474020622265342,0.16197289296742101,0.15920430531221319,0.15643446504023092,0.15366339394453027,0.15089111382785145,0.14811764650244758,0.14534301378991277,0.14256723752100994,0.13979033953549955,0.13701234168196799,0.13423326581765554,0.13145313380828375,0.12867196752788387,0.12588978885862534,0.12310661969064289,0.12032248192186418,0.1175373974578377,0.11475138821156104,0.11196447610330791,0.10917668306045532,0.10638803101731142,0.10359854191494344,0.10080823770100455,0.09801714032956077,0.095225271760918662,0.092432653961453032,0.089639308903433551,0.086845258564851591,0.084050524929247597,0.08125512998553866,0.078459095727844999,0.075662444155316547,0.072865197271960211,0.070067377086467264,0.067269005612039717,0.06447010486621664,0.061670696870701446,0.058870803651188984,0.056070447237191845,0.053269649661866599,0.050468432961840851,0.047666819177040319,0.044864830350514986,0.042062488528265198,0.039259815759068666,0.036456834094307451,0.033653565587793983,0.030850032295597112,0.028046256275869017,0.025242259588672111,0.022438064295804999,0.019633692460628474,0.016829166147892365,0.014024507423562363,0.011219738354645981,0.0084148810090184708,0.0056099574552496458,0.0028049897624306866,6.123233995736766e-17,0.99997727539874437,0.99990910262779253,0.99979548478554248,0.99963642703583455,0.99943193660771668,0.9991820227951157,0.99888669695641508,0.99854597251393873,0.99815986495334075,0.99772839182290196,0.99725157273273191,0.99672942935387809,0.99616198541734069,0.99554926671299404,0.99489130108841461,0.99418811844761534,0.99343975074968638,0.99264623200734292,0.99180759828537901,0.99092388769902828,0.98999514041223236,0.98902139863581473,0.98800270662556244,0.98693911068021511,0.98583065913936019,0.98467740238123624,0.98347939282044328,0.98223668490556026,0.98094933511667104,0.9796174019627969,0.97824094597923728,0.97682002972481907,0.97535471777905292,0.97384507673919807,0.97229117521723596,0.97069308383675146,0.96905087522972333,0.96736462403322332,0.96563440688602331,0.96386030242511289,0.96204239128212499,0.96018075607967135,0.95827548142758723,0.95632665391908611,0.95433436212682421,0.95229869659887445,0.95021974985461177,0.94809761638050782,0.9459323926258365,0.94372417699829081,0.94147306985950996,0.93917917352051816,0.93684259223707456,0.93446343220493533,0.93204180155502647,0.92957781034852982,0.92707157057188061,0.92452319613167799,0.92193280284950807,0.91930050845667977,0.91662643258887389,0.91391069678070602,0.91115342446020298,0.90835474094319291,0.90551477342760966,0.90263365098771187,0.89971150456821691,0.8967484669783492,0.89374467288580406,0.89070025881062753,0.88761536311901157,0.88449012601700505,0.88132468954414211,0.87811919756698575,0.87487379577259028,0.87158863166187894,0.86826385454294064,0.86489961552424399,0.86149606750776953,0.85805336518206021,0.85457166501519133,0.85105112524765869,0.84749190588518741,0.84389416869145883,0.84025807718075918,0.83658379661054816,0.83287149397394744,0.82912133799215115,0.82533349910675802,0.82150814947202477,0.81764546294704132,0.81374561508783017,0.80980878313936622,0.80583514602752193,0.80182488435093524,0.79777818037280102,0.79369521801258802,0.78957618283767927,0.78542126205493878,0.78123064450220259,0.77700452063969627,0.77274308254137924,0.76844652388621471,0.76411503994936691,0.75974882759332663,0.75534808525896324,0.75091301295650659,0.74644381225645573,0.74194068628041832,0.73740383969187884,0.73283347868689652,0.72822981098473438,0.7235930458184181,0.71892339392522675,0.71422106753711467,0.70948628037106642,0.70471924761938254,0.69992018593990002,0.695089313446145,0.69022684969741988,0.68533301568882399,0.68040803384121062,0.67545212799107679,0.67046552338039123,0.66544844664635672,0.66040112581110977,0.65532379027135723,0.6502166707879502,0.6450799994753964,0.63991400979131041,0.63471893652580369,0.62949501579081291,0.62424248500936974,0.61896158290480929,0.61365254948992065,0.60831562605603873,0.60295105516207748,0.59755908062350571,0.5921399475012662,0.58669390209063776,0.58122119191004118,0.57572206568978956,0.57019677336078423,0.56464556604315519,0.55906869603484777,0.55346641680015674,0.54783898295820543,0.54218665027137403,0.53650967563367558,0.53080831705907994,0.5250828336697877,0.51933348568445281,0.51356053440635618,0.50776424221152949,0.50194487253683029,0.49610268986797001,0.49023795972749146,0.48435094866270262,0.47844192423356147,0.47251115500051588,0.46655891051229792,0.46058546129367267,0.45459107883314331,0.44857603557061226,0.44254060488499886,0.43648506108181456,0.43040967938069608,0.42431473590289659,0.41820050765873634,0.41206727253501341,0.40591530928237279,0.39974489750263814,0.39355631763610405,0.38734985094879015,0.38112577951965781,0.3748843862277898,0.3686259547395338,0.36235076949560996,0.35605911569818316,0.34975127929790106,0.34342754698089756,0.33708820615576318,0.33073354494048329,0.3243638521493421,0.31797941727979728,0.31158053049932211,0.30516748263221771,0.2987405651463953,0.29230007014012921,0.28584629032878128,0.2793795190314971,0.27290005015787494,0.26640817819460788,0.25990419819209937,0.2533884057510537,0.2468610970090408,0.24032256862703805,0.23377311777594573,0.22721304212308191,0.22064263981865345,0.21406220948220525,0.2074720501890483,0.20087246145666687,0.19426374323110579,0.18764619587333797,0.18102012014561347,0.17438581719778984,0.1677435885536453,0.16109373609717439,0.15443656205886855,0.14777236900197854,0.14110145980876418,0.13442413766672837,0.12774070605483731,0.12105146872972786,0.11435672971190181,0.10765679327190857,0.10095196391651619,0.094242546374871866,0.087528845584652182,0.080811166678203927,0.074089814968676157,0.067365095936143635,0.060637315213723939,0.053906778573685359,0.047173791913550651,0.040438661242194043,0.033701692665933349,0.026963192374617712,0.020223466627711493,0.013482821740375029,0.0067415640695428648,6.123233995736766e-17,0.99999857970737849,0.99999431883354828,0.9999872173906128,0.99997727539874437,0.99996449288618394,0.99994886988924148,0.99993040645229536,0.99990910262779253,0.99988495847624825,0.99985797406624621,0.99982814947443788,0.99979548478554248,0.99975998009234679,0.99972163549570514,0.9996804511045384,0.99963642703583455,0.99958956341464755,0.99953986037409748,0.99948731805537028,0.99943193660771668,0.9993737161884525,0.99931265696295768,0.99924875910467637,0.9991820227951157,0.99911244822384593,0.99904003558849952,0.99896478509477071,0.99888669695641508,0.99880577139524851,0.99872200864114702,0.99863540893204583,0.99854597251393873,0.9984536996408776,0.99835859057497134,0.99826064558638539,0.99815986495334075,0.99805624896211353,0.99794979790703375,0.99784051209048463,0.99772839182290196,0.99761343742277286,0.99749564921663503,0.99737502753907603,0.99725157273273191,0.99712528514828669,0.99699616514447098,0.99686421308806106,0.99672942935387809,0.99659181432478683,0.99645136839169435,0.9963080919535493,0.99616198541734069,0.99601304919809663,0.99586128371888305,0.99570668941080276,0.99554926671299404,0.99538901607262953,0.99522593794491487,0.9950600327930873,0.99489130108841461,0.99471974331019353,0.99454535994574855,0.99436815149043056,0.99418811844761534,0.99400526132870182,0.99381958065311149,0.99363107694828612,0.99343975074968638,0.99324560260079087,0.99304863305309377,0.99284884266610385,0.99264623200734292,0.99244080165234372,0.99223255218464879,0.99202148419580827,0.99180759828537901,0.99159089506092202,0.99137137513800122,0.99114903914018193,0.99092388769902828,0.99069592145410224,0.99046514105296135,0.99023154715115691,0.98999514041223236,0.98975592150772129,0.98951389111714527,0.98926904992801235,0.98902139863581473,0.98877093794402704,0.98851766856410417,0.98826159121547952,0.98800270662556244,0.98774101552973681,0.98747651867135855,0.98720921680175333,0.98693911068021511,0.98666620107400327,0.98639048875834068,0.98611197451641186,0.98583065913936019,0.985546543426286,0.98525962818424406,0.98496991422824176,0.98467740238123624,0.9843820934741323,0.98408398834578004,0.98378308784297253,0.98347939282044328,0.98317290414086389,0.98286362267484151,0.9825515493009167,0.98223668490556026,0.98191903038317152,0.98159858663607513,0.98127535457451887,0.98094933511667104,0.98062052918861764,0.98028893772435999,0.97995456166581174,0.9796174019627969,0.97927745957304602,0.97893473546219456,0.97858923060377967,0.97824094597923728,0.97788988257789955,0.97753604139699191,0.97717942344163056,0.97682002972481907,0.97645786126744605,0.97609291909828177,0.97572520425397558,0.97535471777905292,0.97498146072591207,0.9746054341548217,0.97422663913391716,0.97384507673919807,0.97346074805452498,0.97307365417161618,0.97268379619004486,0.97229117521723596,0.97189579236846269,0.97149764876684375,0.97109674554334013,0.97069308383675146,0.97028666479371317,0.96987748956869346,0.96946555932398915,0.96905087522972333,0.96863343846384165,0.96821325021210858,0.96779031166810481,0.96736462403322332,0.96693618851666607,0.96650500633544068,0.96607107871435693,0.96563440688602331,0.96519499209084314,0.96475283557701175,0.96430793860051245,0.96386030242511289,0.96340992832236183,0.96295681757158547,0.96250097145988323,0.96204239128212499,0.96158107834094697,0.96111703394674763,0.96065025941768489,0.96018075607967135,0.95970852526637151,0.95923356831919704,0.95875588658730371,0.95827548142758723,0.95779235420467945,0.95730650629094427,0.95681793906647428,0.95632665391908611,0.95583265224431735,0.95533593544542172,0.95483650493336569,0.95433436212682421,0.95382950845217662,0.9533219453435029,0.95281167424257929,0.95229869659887445,0.951783013869545,0.95126462751943164,0.95074353902105524,0.95021974985461177,0.94969326150796918,0.94916407547666259,0.94863219326388981,0.94809761638050782,0.94756034634502762,0.94702038468361072,0.9464777329300641,0.9459323926258365,0.94538436532001335,0.94483365256931306,0.94428025593808207,0.94372417699829081,0.94316541732952874,0.94260397851900035,0.94203986216152058,0.94147306985950996,0.94090360322299027,0.94033146386958011,0.93975665342449,0.93917917352051816,0.93859902579804533,0.93801621190503059,0.93743073349700656,0.93684259223707456,0.93625178979589996,0.93565832785170744,0.93506220809027629,0.93446343220493533,0.93386200189655877,0.93325791887356047,0.9326511848518898,0.93204180155502647,0.9314297707139757,0.93081509406726337,0.93019777336093068,0.92957781034852982,0.92895520679111854,0.92832996445725535,0.92770208512299446,0.92707157057188061,0.92643842259494402,0.92580264299069559,0.92516423356512145,0.92452319613167799,0.92387953251128674,0.92323324453232902,0.922584334030641,0.92193280284950807,0.92127865283966037,0.92062188585926663,0.91996250377392941,0.91930050845667977,0.91863590178797183,0.91796868565567746,0.91729886195508104,0.91662643258887389,0.91595139946714876,0.91527376450739506,0.91459352963449236,0.91391069678070602,0.91322526788568092,0.91253724489643617,0.91184662976735986,0.91115342446020298,0.9104576309440745,0.90975925119543499,0.90905828719809179,0.90835474094319291,0.9076486144292214,0.90693990966198978,0.90622862865463438,0.90551477342760966,0.90479834600868203,0.90407934843292481,0.90335778274271172,0.90263365098771187,0.90190695522488307,0.90117769751846655,0.90044587993998115,0.89971150456821691,0.89897457348922982,0.89823508879633529,0.8974930525901027,0.8967484669783492,0.89600133407613358,0.89525165600575052,0.89449943489672468,0.89374467288580406,0.89298737211695445,0.89222753474135352,0.89146516291738376,0.89070025881062753,0.88993282459386014,0.88916286244704379,0.88839037455732173,0.88761536311901157,0.88683783033359942,0.88605777840973332,0.88527520956321737,0.88449012601700505,0.88370253000119314,0.88291242375301526,0.88211980951683544,0.88132468954414211,0.88052706609354126,0.87972694143075025,0.87892431782859148,0.87811919756698575,0.87731158293294575,0.87650147622056962,0.8756888797310346,0.87487379577259028,0.87405622666055205,0.87323617471729487,0.87241364227224594,0.87158863166187894,0.87076114522970671,0.86993118532627511,0.86909875430915595,0.86826385454294064,0.86742648839923286,0.86658665825664261,0.86574436650077924,0.86489961552424399,0.86405240772662406,0.86320274551448561,0.86235063130136635,0.86149606750776953,0.86063905656115625,0.8597796008959393,0.8589177029534758,0.85805336518206021,0.85718659003691766,0.85631737998019697,0.8554457374809632,0.85457166501519133,0.8536951650657586,0.85281624012243784,0.85193489268189038,0.85105112524765869,0.85016494033015955,0.84927634044667666,0.8483853281213537,0.84749190588518741,0.8465960762760194,0.84569784183853047,0.84479720512423173,0.84389416869145883,0.84298873510536343,0.84208090693790716,0.84117068676785312,0.84025807718075918,0.83934308076897102,0.83842570013161355,0.83750593787458494,0.83658379661054816,0.83565927895892422,0.83473238754588408,0.83380312500434206,0.83287149397394744,0.83193749710107767,0.83100113703883038,0.83006241644701617,0.82912133799215115,0.82817790434744853,0.82723211819281228,0.82628398221482835,0.82533349910675802,0.82438067156852946,0.82342550230673062,0.82246799403460102,0.82150814947202477,0.82054597134552187,0.8195814623882417,0.81861462533995377,0.81764546294704132,0.81667397796249286,0.81570017314589416,0.81472405126342085,0.81374561508783017,0.81276486739845377,0.81178181098118884,0.8107964486284911,0.80980878313936622,0.80881881731936223,0.80782655398056136,0.8068319959415724,0.80583514602752193,0.80483600707004743,0.80383458190728807,0.80283087338387749,0.80182488435093524,0.80081661766605894,0.79980607619331612,0.79879326280323582,0.79777818037280102,0.79676083178543977,0.79574121993101754,0.79471934770582853,0.79369521801258802,0.79266883376042374,0.79164019786486772,0.79060931324784767,0.78957618283767927,0.78854080956905781,0.787503196383049,0.78646334622708169,0.78542126205493878,0.78437694682674941,0.78333040350897964,0.78228163507442539,0.78123064450220259,0.78017743477773949,0.77912200889276817,0.7780643698453158,0.77700452063969627,0.7759424642865016,0.77487820380259342,0.77381174221109417,0.77274308254137924,0.7716722278290673,0.77059918111601244,0.76952394545029534,0.76844652388621471,0.76736691948427804,0.76628513531119402,0.76520117443986246,0.76411503994936691,0.76302673492496476,0.76193626245807933,0.76084362564629071,0.75974882759332663,0.75865187140905443,0.75755276020947171,0.75645149711669746,0.75534808525896324,0.75424252777060485,0.75313482779205221,0.7520249884698218,0.75091301295650659,0.74979890441076802,0.74868266599732625,0.74756430088695169,0.74644381225645573,0.74532120328868179,0.7441964771724966,0.74306963710278029,0.74194068628041832,0.74080962791229155,0.73967646521126784,0.73854120139619239,0.73740383969187884,0.73626438332909994,0.73512283554457891,0.73397919958097924,0.73283347868689652,0.73168567611684865,0.73053579513126654,0.72938383899648529,0.72822981098473438,0.72707371437412882,0.72591555244865957,0.72475532849818436,0.7235930458184181,0.72242870771092393,0.72126231748310343,0.7200938784481874,0.71892339392522675,0.71775086723908232,0.7165763017204162,0.71539970070568171,0.71422106753711467,0.71304040556272275,0.71185771813627718,0.7106730086173022,0.70948628037106642,0.70829753676857232,0.70710678118654757,0.70591401700743484,0.70471924761938254,0.70352247641623489,0.70232370679752265,0.70112294216845283,0.69992018593990002,0.69871544152839571,0.697508712356119,0.69630000185088703,0.695089313446145,0.69387665058095671,0.69266201669999417,0.69144541525352854,0.69022684969741988,0.68900632349310764,0.68778384010760041,0.68655940301346663,0.68533301568882399,0.68410468161733062,0.6828744042881737,0.68164218719606107,0.68040803384121062,0.67917194772933975,0.67793393237165678,0.67669399128484964,0.67545212799107679,0.67420834601795665,0.67296264889855817,0.67171504017139005,0.67046552338039123,0.66921410207492071,0.66796077980974733,0.66670556014503979,0.66544844664635672,0.66418944288463611,0.6629285524361852,0.6616657788826712,0.66040112581110977,0.659134596813856,0.65786619548859304,0.65659592543832346,0.65532379027135723,0.65404979360130311,0.65277393904705683,0.65149623023279235,0.6502166707879502,0.64893526434722826,0.64765201455057075,0.64636692504315796,0.6450799994753964,0.64379124150290756,0.64250065478651863,0.64120824299225088,0.63991400979131041,0.63861795886007677,0.63732009388009336,0.63602041853805613,0.63471893652580369,0.63341565154030655,0.63211056728365689,0.63080368746305793,0.62949501579081291,0.62818455598431555,0.62687231176603841,0.62555828686352333,0.62424248500936974,0.62292490994122518,0.62160556540177392,0.62028445513872654,0.61896158290480929,0.61763695245775363,0.61631056756028524,0.61498243198011349,0.61365254948992065,0.61232092386735137,0.61098755889500178,0.60965245836040849,0.60831562605603873,0.60697706577927835,0.60563678133242216,0.60429477652266206,0.60295105516207748,0.60160562106762316,0.60025847806111954,0.59890962996924102,0.59755908062350571,0.59620683386026407,0.59485289352068826,0.59349726345076148,0.5921399475012662,0.59078094952777427,0.58942027339063519,0.58805792295496551,0.58669390209063776,0.5853282146722697,0.58396086457921248,0.58259185569554084,0.58122119191004118,0.57984887711620081,0.57847491521219685,0.57709931010088522,0.57572206568978956,0.5743431858910899,0.57296267462161199,0.57158053580281565,0.57019677336078423,0.5688113912262126,0.56742439333439698,0.566035783625223,0.56464556604315519,0.56325374453722465,0.56186032306101952,0.56046530557267182,0.55906869603484777,0.55767049841473615,0.55627071668403605,0.55486935481894706,0.55346641680015674,0.5520619066128305,0.55065582824659898,0.54924818569554779,0.54783898295820543,0.54642822403753255,0.54501591294091001,0.54360205368012793,0.54218665027137403,0.54076970673522229,0.53935122709662175,0.53793121538488486,0.53650967563367558,0.53508661188099882,0.53366202816918862,0.53223592854489665,0.53080831705907994,0.52937919776699094,0.5279485747281647,0.52651645200640818,0.5250828336697877,0.52364772379061841,0.52221112644545242,0.52077304571506688,0.51933348568445281,0.51789245044280285,0.51644994408350064,0.51500597070410858,0.51356053440635618,0.51211363929612808,0.51066528948345336,0.50921548908249326,0.50776424221152949,0.50631155299295205,0.50485742555324886,0.5034018640229927,0.50194487253683029,0.50048645523347035,0.49902661625567107,0.49756535975022975,0.49610268986797001,0.49463861076373056,0.49317312659635254,0.49170624152866882,0.49023795972749146,0.48876828536360034,0.48729722261173025,0.48582477565056065,0.48435094866270262,0.48287574583468751,0.48139917135695431,0.47992122942383897,0.47844192423356147,0.47696125998821426,0.47547924089375065,0.47399587115997172,0.47251115500051588,0.47102509663284597,0.46953770027823766,0.46804897016176666,0.46655891051229792,0.46506752556247299,0.46357481954869806,0.4620807967111315,0.46058546129367267,0.45908881754394926,0.45759086971330554,0.45609162205679005,0.45459107883314331,0.45308924430478636,0.45158612273780824,0.4500817184019541,0.44857603557061226,0.44706907852080335,0.44556085153316738,0.44405135889195185,0.44254060488499886,0.44102859380373416,0.43951532994315412,0.4380008176018137,0.43648506108181456,0.4349680646887919,0.43344983273190346,0.43193036952381653,0.43040967938069608,0.42888776662219169,0.42736463557142651,0.42584029055498407,0.42431473590289659,0.42278797594863166,0.42126001502908128,0.41973085748454875,0.41820050765873634,0.41666896989873342,0.41513624855500314,0.41360234798137135,0.41206727253501341,0.41053102657644214,0.40899361446949467,0.40745504058132148,0.40591530928237279,0.40437442494638676,0.40283239195037635,0.40128921467461798,0.39974489750263814,0.39819944482120145,0.39665286102029823,0.39510515049313111,0.39355631763610405,0.3920063668488088,0.39045530253401289,0.38890312909764629,0.38734985094879015,0.38579547249966356,0.38423999816561105,0.38268343236508984,0.38112577951965781,0.37956704405396069,0.37800723039571954,0.37644634297571811,0.3748843862277898,0.3733213645888061,0.37175728249866319,0.37019214440026982,0.3686259547395338,0.3670587179653505,0.36549043852958957,0.36392112088708267,0.36235076949560996,0.36077938881588856,0.35920698331155926,0.35763355744917397,0.35605911569818316,0.35448366253092245,0.35290720242260099,0.35132973985128818,0.34975127929790106,0.348171825246191,0.34659138218273211,0.34500995459690759,0.34342754698089756,0.34184416382966526,0.34025980964094577,0.33867448891523222,0.33708820615576318,0.33550096586851036,0.33391277256216462,0.33232363074812465,0.33073354494048329,0.32914251965601493,0.32755055941416222,0.32595766873702403,0.3243638521493421,0.32276911417848864,0.3211734593544523,0.31957689220982682,0.31797941727979728,0.31638103910212767,0.31478176221714693,0.31318159116773764,0.31158053049932211,0.30997858475984957,0.30837575849978371,0.3067720562720887,0.30516748263221771,0.30356204213809884,0.30195573935012288,0.30034857883112948,0.2987405651463953,0.29713170286362017,0.29552199655291489,0.29391145078678699,0.29230007014012921,0.29068785919020562,0.28907482251663885,0.28746096470139731,0.28584629032878128,0.28423080398541112,0.2826145102602135,0.28099741374440884,0.2793795190314971,0.27776083071724633,0.27614135339967877,0.27452109167905792,0.27290005015787494,0.27127823344083662,0.26965564613485166,0.26803229284901753,0.26640817819460788,0.26478330678505835,0.26315768323595501,0.26153131216502007,0.25990419819209937,0.25827634593914844,0.25664776003022061,0.25501844509145294,0.2533884057510537,0.25175764663928801,0.25012617238846652,0.24849398763293079,0.2468610970090408,0.24522750515516178,0.24359321671165018,0.24195823632084187,0.24032256862703805,0.23868621827649239,0.23704918991739715,0.23541148819987115,0.23377311777594573,0.2321340832995519,0.23049438942650644,0.22885404081449975,0.22721304212308191,0.22557139801364956,0.22392911314943298,0.22228619219548187,0.22064263981865345,0.21899846068759837,0.21735365947274782,0.21570824084629941,0.21406220948220525,0.21241557005615774,0.21076832724557673,0.20912048572959541,0.2074720501890483,0.20582302530645707,0.20417341576601747,0.20252322625358624,0.20087246145666687,0.19922112606439779,0.19756922476753788,0.19591676225845381,0.19426374323110579,0.19261017238103548,0.19095605440535182,0.18930139400271817,0.18764619587333797,0.18599046471894287,0.18433420524277835,0.1826774221495906,0.18102012014561347,0.17936230393855412,0.17770397823758105,0.17604514775330973,0.17438581719778984,0.17272599128449076,0.17106567472828976,0.16940487224545753,0.1677435885536453,0.16608182837187058,0.16441959642050505,0.16275689742126023,0.16109373609717439,0.15943011717259928,0.15776604537318578,0.15610152542587194,0.15443656205886855,0.1527711600016462,0.15110532398492096,0.14943905874064226,0.14777236900197854,0.14610525950330433,0.14443773498018581,0.14276980016936874,0.14110145980876418,0.13943271863743512,0.13776358139558328,0.13609405282453488,0.13442413766672837,0.13275384066570006,0.13108316656607122,0.12941212011353362,0.12774070605483731,0.12606892913777645,0.1243967941111761,0.12272430572487789,0.12105146872972786,0.11937828787756209,0.11770476792119366,0.11603091361439821,0.11435672971190181,0.11268222096936653,0.11100739214337721,0.10933224799142811,0.10765679327190857,0.10598103274409072,0.10430497116811521,0.10262861330497805,0.10095196391651619,0.09927502776539536,0.097597809615095663,0.09592031422989844,0.094242546374871866,0.0925645108158588,0.09088621231946227,0.089207655653032222,0.087528845584652182,0.085849786883124793,0.084170484317959676,0.082490942659358898,0.080811166678203927,0.079131161146041198,0.077450930835069848,0.075770480518127306,0.074089814968676157,0.072408938960789732,0.070727857269139827,0.069046574668982272,0.067365095936143635,0.065683425847007801,0.064001569178501569,0.062319530708082403,0.060637315213723939,0.058954927473902928,0.057272372267584699,0.05558965437421097,0.053906778573685359,0.05222374964636025,0.050540572373022334,0.048857251534880353,0.047173791913550651,0.045490198291043775,0.04380647544975115,0.042122628172430586,0.040438661242194043,0.038754579442493116,0.037070387557105948,0.035386090370122705,0.033701692665933349,0.032017199229213138,0.030332614844909494,0.028647944298227514,0.026963192374617712,0.025278363859761548,0.023593463539558032,0.021908496200110376,0.020223466627711493,0.018538379608831743,0.016853239930104444,0.015168052378312724,0.013482821740375029,0.011797552803332863,0.010112250354336301,0.0084269191806308277,0.0067415640695428648,0.00505618980846749,0.0033708011848539591,0.0016854029861923248,6.123233995736766e-17,0.99996434000410983,0.99985736255970981,0.99967907529643052,0.999429490929718,0.99910862725992733,0.99871650717105276,0.9982531586290958,0.99771861468007073,0.99711291344764741,0.99643609813043299,0.99568821699889021,0.99486932339189516,0.99397947571293321,0.99301873742593361,0.99198717705074302,0.99088486815823884,0.98971188936508236,0.98846832432811138,0.98715426173837417,0.9857697953148038,0.98431502379753411,0.98279005094085803,0.98119498550582684,0.97952994125249448,0.97779503693180336,0.97599039627711537,0.97411614799538704,0.97217242575799068,0.97015936819117998,0.96807711886620429,0.96592582628906831,0.96370564388994084,0.96141673001221251,0.95905924790120212,0.95663336569251456,0.95413925640004882,0.95157709790365941,0.94894707293646907,0.94624936907183688,0.94348417870998025,0.94065169906425306,0.93775213214708042,0.93478568475555102,0.93175256845666843,0.92865299957226222,0.92548719916355959,0.9222553930154197,0.9189578116202306,0.91559469016147021,0.91216626849693339,0.90867279114162491,0.90511450725032117,0.90149167059980007,0.89780453957074169,0.89405337712930066,0.89023845080835162,0.88636003268840824,0.88241839937821909,0.87841383199503942,0.87434661614458209,0.87021704190064819,0.86602540378443871,0.86177200074354965,0.857457136130651,0.85308111768185158,0.84864425749475092,0.84414687200618144,0.83958928196963889,0.83497181243240737,0.83029479271237638,0.82555855637455378,0.82076344120727629,0.8159097891981183,0.81099794650950119,0.80602826345400502,0.80100109446938461,0.79591679809329063,0.79077573693769854,0.78557827766304811,0.78032479095209184,0.77501565148345875,0.76965123790493228,0.76423193280644464,0.75875812269279097,0.7532301979560635,0.74764855284780896,0.74201358545091078,0.73632569765119738,0.73058529510877968,0.72479278722911999,0.71894858713383258,0.71305311163122032,0.70710678118654757,0.70111001989205268,0.69506325543670189,0.68896691907568663,0.68282144559966584,0.67662727330375738,0.67038484395627851,0.66409460276723908,0.65775699835658874,0.65137248272222226,0.64494151120774201,0.63846454246998352,0.63194203844630403,0.6253744643216369,0.61876228849531456,0.61210598254766291,0.60540602120636711,0.598662882312615,0.59187704678701725,0.58504899859530768,0.5781792247138271,0.57126821509479231,0.56431646263135249,0.55732446312243644,0.55029271523739143,0.54322172048041872,0.53611198315480668,0.52896401032696239,0.52177831179024969,0.51455540002862887,0.5072957901801074,0.50000000000000011,0.4926685498240026,0.48530196253108099,0.47790076350618088,0.47046548060275561,0.46299664410512087,0.45549478669063415,0.44796044339170443,0.44039415155763428,0.43279645081629492,0.42516788303564074,0.41750899228506322,0.40982032479658764,0.40210242892591597,0.39435585511331855,0.38658115584437597,0.3787788856105761,0.37094960086976786,0.3630938600064747,0.35521222329207014,0.34730525284482028,0.33937351258979226,0.33141756821863583,0.32343798714923822,0.31543533848525562,0.3074101929755248,0.29936312297335799,0.29129470239572131,0.28320550668230415,0.27509611275447821,0.26696709897415183,0.25881904510252074,0.25065253225872053,0.24246814287837995,0.23426646067208223,0.22604807058373497,0.2178135587488515,0.2095635124527486,0.20129852008866012,0.19301917111577349,0.18472605601718942,0.17641976625780859,0.16810089424214814,0.15977003327209227,0.1514277775045767,0.14307472190921416,0.13471146222586108,0.12633859492212934,0.11795671715084598,0.10956642670746519,0.10116832198743222,0.092763001943506673,0.084351066043044987,0.075933114225246442,0.067509746858365277,0.059081564696893303,0.050649168838712767,0.042213160682226969,0.033774141883468292,0.025332714313188093,0.016889480013931084,0.0084450411570985272,6.123233995736766e-17,0.99998992899200523,0.99995971617087109,0.99990936214514492,0.99983886792905818,0.99974823494250653,0.99963746501102113,0.9995065603657316,0.99935552364332136,0.99918435788597459,0.9989930665413147,0.99878165346233494,0.99855012290732093,0.99829847953976492,0.99802672842827156,0.99773487504645608,0.99742292527283405,0.99709088539070267,0.9967387620880146,0.99636656245724309,0.99597429399523907,0.99556196460308,0.99512958258591122,0.99467715665277834,0.99420469591645155,0.9937122098932426,0.99319970850281292,0.99266720206797354,0.99211470131447788,0.99154221737080461,0.99094976176793481,0.99033734643911842,0.98970498371963489,0.98905268634654431,0.98838046745843078,0.98768834059513777,0.98697631969749566,0.98624441910704086,0.98549265356572668,0.98472103821562673,0.98392958859862967,0.98311832065612637,0.98228725072868872,0.98143639555574036,0.98056577227522002,0.97967539842323559,0.97876529193371142,0.97783547113802693,0.97688595476464768,0.97591676193874743,0.97492791218182362,0.97391942541130394,0.97289132194014494,0.9718436224764232,0.97077634812291813,0.96968952037668688,0.96858316112863119,0.96745729266305658,0.96631193765722401,0.96514711918089213,0.96396286069585324,0.96275918605546096,0.96153611950414886,0.96029368567694307,0.95903190959896567,0.95775081668493045,0.95645043273863162,0.95513078395242312,0.95379189690669208,0.95243379856932275,0.95105651629515353,0.94966007782542616,0.94824451128722631,0.94680984519291811,0.94535610843956897,0.94388333030836757,0.94239154046403484,0.94088076895422545,0.93935104620892351,0.93780240303982898,0.9362348706397372,0.93464848058191097,0.93304326481944422,0.93141925568461836,0.92977648588825146,0.92811498851903895,0.92643479704288745,0.92473594530224057,0.92301846751539729,0.92128239827582248,0.91952777255145068,0.91775462568398114,0.91596299338816656,0.91415291175109326,0.91232441723145441,0.91047754665881597,0.90861233723287449,0.90672882652270803,0.90482705246601958,0.9029070533683724,0.90096886790241915,0.89901253510712242,0.89703809438696869,0.89504558551117441,0.89303504861288541,0.8910065241883679,0.8889600530961933,0.88689567655641499,0.88481343614973851,0.88271337381668302,0.880595531856738,0.87845995292750989,0.87630668004386358,0.87413575657705611,0.87194722625386245,0.86974113315569546,0.86751752171771757,0.86527643672794596,0.8630179233263503,0.86074202700394364,0.8584487936018661,0.85613826931046166,0.85381050066834729,0.85146553456147633,0.8491034182221936,0.84672419922828424,0.84432792550201519,0.84191464530917004,0.83948440725807727,0.83703726029863035,0.83457325372130264,0.832092437156154,0.82959486057183118,0.82708057427456183,0.82454962890714079,0.82200207544790993,0.81943796520973189,0.81685734983895608,0.81426028131437866,0.81164681194619515,0.80901699437494745,0.80637088157046322,0.80370852683078875,0.8010299837811159,0.79833530637270156,0.79562454888178102,0.79289776590847527,0.79015501237569041,0.78739634352801202,0.78462181493059202,0.7818314824680298,0.77902540234324669,0.77620363107635304,0.7733662255035112,0.77051324277578925,0.76764474035801111,0.7647607760275984,0.76186140787340662,0.75894669429455563,0.75601669399925275,0.75307146600361097,0.75011106963045959,0.74713556450814966,0.744145010569353,0.74113946804985487,0.73811899748734078,0.73508365972017686,0.73203351588618515,0.72896862742141155,0.72588905605888854,0.72279486382739166,0.71968611305019026,0.71656286634379229,0.71342518661668275,0.71027313706805706,0.70710678118654768,0.70392618274894503,0.70073140581891391,0.69752251474570237,0.69429957416284571,0.69106264898686476,0.68781180441595802,0.68454710592868873,0.68126861928266624,0.67797641051322088,0.67467054593207443,0.67135109212600408,0.66801811595550131,0.66467168455342573,0.66131186532365194,0.6579387259397127,0.6545523343434354,0.65115275874357359,0.64774006761443348,0.64431432969449431,0.64087561398502424,0.63742398974868975,0.63395952650816167,0.63048229404471379,0.6269923623968181,0.62348980185873359,0.61997468297909075,0.61644707655947006,0.6129070536529766,0.60935468556280825,0.60579004384082002,0.60221320028608227,0.5986242269434352,0.59502319610203724,0.59141018029390913,0.58778525229247325,0.58414848511108708,0.58049995200157356,0.57683972645274473,0.57316788218892234,0.56948449316845207,0.56578963358221457,0.56208337785213069,0.55836580062966257,0.55463697679431012,0.55089698145210264,0.54714588993408608,0.54338377779480573,0.53961072081078454,0.53582679497899677,0.53203207651533657,0.52822664185308443,0.52441056764136595,0.52058393074360865,0.5167468082359945,0.51289927740590613,0.50904141575037143,0.50517330097450119,0.50129501098992502,0.49740662391322216,0.49350821806434686,0.4895998719650525,0.48568166433730853,0.48175367410171532,0.47781598037591555,0.47386866247299869,0.46991179989990556,0.46594547235582506,0.4619697597305899,0.45798474210306767,0.45399049973954686,0.44998711309212125,0.44597466279706865,0.44195322967322681,0.43792289472036644,0.43388373911755818,0.42983584422153914,0.42577929156507283,0.42171416285530761,0.4176405399721313,0.41355850496652069,0.40946814005889065,0.40536952763743628,0.40126275025647429,0.39714789063478079,0.39302503165392366,0.38889425635659486,0.38475564794493622,0.38060928977886432,0.37645526537439217,0.37229365840194523,0.36812455268467809,0.36394803219678462,0.35976418106180702,0.35557308355094219,0.35137482408134274,0.34716948721441854,0.34295715765413171,0.33873792024529148,0.33451185997184552,0.33027906195516715,0.32603961145234195,0.32179359385444967,0.31754109468484443,0.31328219959743281,0.30901699437494745,0.30474556492722055,0.30046799728945212,0.29618437762047767,0.29189479220103348,0.28759932743201733,0.28329806983274958,0.2789911060392295,0.2746785228023903,0.27036040698635311,0.26603684556667517,0.26170792562860018,0.25737373436530259,0.25303435907613192,0.24868988716485496,0.24434040613789407,0.23998600360256606,0.2356267672653162,0.23126278492995225,0.22689414449587667,0.22252093395631445,0.2181432413965427,0.21376115499211468,0.20937476300708463,0.20498415379223051,0.20058941578327283,0.19619063749909532,0.19178790753996028,0.18738131458572474,0.18297094739405484,0.17855689479863671,0.17413924570738867,0.16971808910066918,0.16529351402948508,0.16086560961369861,0.15643446504023092,0.15200016956126727,0.1475628124924579,0.14312248321111959,0.13867927115443618,0.13423326581765554,0.12978455675228867,0.12533323356430448,0.12087938591232558,0.11642310350582305,0.11196447610330813,0.10750359351052506,0.10304054557864276,0.098575422202443613,0.094108313318514505,0.089639308903433773,0.085168498971959591,0.080695973575217517,0.076221822798885175,0.071746136761379475,0.067269005612039939,0.062790519529313527,0.058310768718938977,0.053829843412128306,0.049347833863751127,0.044864830350515209,0.040380923169148777,0.035896202634582416,0.031410759078128396,0.026924682845663007,0.022438064295805221,0.017950993798097389,0.013463561731185668,0.0089758584809980588,0.0044879744389256255,2.8327694488239898e-16],"twiddles":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9999768300731916,0.0068072987866992394,0.99990732136645721,0.013614282124169177,0.99979147710082028,0.020420634577798379,0.99962930264448702,0.027226040742210484,0.99942080551259815,0.034030185255880023,0.99916599536688,0.040832752815746255,0.99886488401519768,0.047633428191824229,0.99851748541100704,0.054431896241812522,0.99812381565270847,0.061227841925696871,0.99768389298290094,0.068020950320349105,0.99719773778753673,0.074810906634120627,0.99666537259497634,0.081597396221429766,0.99608682207494481,0.088380104597342482,0.99546211303738863,0.095158717452145519,0.99479127443123316,0.10193292066591143,0.99407433734304107,0.10870240032305496,0.99331133499557234,0.1154668427268797,0.99250230274624374,0.12222593441411488,0.99164727808549147,0.12897936216944111,0.99074630063503322,0.13572681304000481,0.98979941214603195,0.14246797434992034,0.98880665649716182,0.14920253371475944,0.98776807969257407,0.15593017905602688,0.98668372985976605,0.16265059861562242,0.98555365724735,0.16936348097028742,0.98437791422272558,0.17606851504603618,0.9831565552696524,0.18276539013257118,0.98188963698572551,0.18945379589768122,0.98057721807975273,0.19613342240162215,0.97921935936903404,0.20280396011147964,0.97781612377654337,0.2094650999155126,0.97636757632801263,0.21611653313747767,0.97487378414891857,0.22275795155093295,0.9733348164613721,0.22938904739352131,0.97175074458091049,0.23600951338123219,0,0.99990732136645721,0.013614282124169177,0.99962930264448702,0.027226040742210484,0.99916599536688,0.040832752815746255,0.99851748541100704,0.054431896241812522,0.99768389298290094,0.068020950320349105,0.99666537259497634,0.081597396221429766,0.99546211303738863,0.095158717452145519,0.99407433734304107,0.10870240032305496,0.99250230274624374,0.12222593441411488,0.99074630063503322,0.13572681304000481,0.98880665649716182,0.14920253371475944,0.98668372985976605,0.16265059861562242,0.98437791422272558,0.17606851504603618,0.98188963698572551,0.18945379589768122,0.97921935936903404,0.20280396011147964,0.97636757632801263,0.21611653313747767,0.9733348164613721,0.22938904739352131,0.97012164191319294,0.24261904272264073,0.96672864826872829,0.25580406684905821,0.96315646444400715,0.26894167583273509,0.95940575256926086,0.28202943452237422,0.95547720786619217,0.29506491700679266,0.95137155851911082,0.30804570706458179,0.94708956553995938,0.32096939861197205,0.94263202262725421,0.33383359614881747,0.93799975601896746,0.34663591520261933,0.93319362433937814,0.35937398277050558,0.92821451843991953,0.37204543775908389,0.92306336123405375,0.38464793142208742,0.91774110752620275,0.39717912779573245,0.91224874383476862,0.40963670413170578,0.90658728820927503,0.42201835132770338,0.90075779004166445,0.43432177435543889,0.89476132987178569,0.44654469268604408,0.88859901918710793,0.45868484071278148,0,0.99979147710082028,0.020420634577798379,0.99916599536688,0.040832752815746255,0.99812381565270847,0.061227841925696871,0.99666537259497634,0.081597396221429766,0.99479127443123316,0.10193292066591143,0.99250230274624374,0.12222593441411488,0.98979941214603195,0.14246797434992034,0.98668372985976605,0.16265059861562242,0.9831565552696524,0.18276539013257118,0.97921935936903404,0.20280396011147964,0.97487378414891857,0.22275795155093295,0.97012164191319294,0.24261904272264073,0.96496491452280997,0.26237895064197914,0.95940575256926086,0.28202943452237422,0.95344647447768094,0.30156229921208816,0.94708956553995938,0.32096939861197205,0.94033767687825931,0.34024263907276281,0.93319362433937814,0.35937398277050558,0.92566038732041034,0.37835545105869423,0.91774110752620275,0.39717912779573245,0.90943908765911963,0.41583716264632731,0.90075779004166445,0.43432177435543889,0.89170083517253285,0.45262525399341946,0.88227200021669883,0.47073996817099073,0.87247521743016432,0.48865836222271636,0.86231457252002774,0.50637296335764392,0.85179430294055769,0.52387638377580026,0.84091879612597964,0.54116132374924308,0.82969258766071574,0.55822057466638175,0.818120359387838,0.57504702203829805,0.80620693745652527,0.59163364846581401,0.79395729030933804,0.60797353656606923,0.78137652661015045,0.62405987185738598,0.76846989311360336,0.6398859456012197,0.75524277247696736,0.65544515760001132,0,0.99962930264448702,0.027226040742210484,0.99851748541100704,0.054431896241812522,0.99666537259497634,0.081597396221429766,0.99407433734304107,0.10870240032305496,0.99074630063503322,0.13572681304000481,0.98668372985976605,0.16265059861562242,0.98188963698572551,0.18945379589768122,0.97636757632801263,0.21611653313747767,0.97012164191319294,0.24261904272264073,0.96315646444400715,0.26894167583273509,0.95547720786619217,0.29506491700679266,0.94708956553995938,0.32096939861197205,0.93799975601896746,0.34663591520261933,0.92821451843991953,0.37204543775908389,0.91774110752620275,0.39717912779573245,0.90658728820927503,0.42201835132770338,0.89476132987178569,0.44654469268604408,0.88227200021669883,0.47073996817099073,0.86912855876696515,0.49458623953326686,0.85534075000056009,0.51806582727340678,0.84091879612597964,0.54116132374924308,0.82587338950354916,0.56385560608183993,0.81021568471816374,0.58613184885030523,0.79395729030933804,0.60797353656606923,0.77711026016469642,0.62936447591737954,0.75968708458328493,0.65028880777493692,0.7417006810153286,0.67073101894977072,0.72316438448530329,0.69067595369463419,0.70409193770541834,0.71010882494039551,0.68449748088684248,0.72901522525909346,0.66439554125622668,0.74738113754552682,0.64380102228529423,0.76519294540946348,0.62272919264148641,0.78243744327075915,0.60119567486785286,0.79910184614990531,0.57921643380058052,0.81517379914674493,0,0.99942080551259815,0.034030185255880023,0.99768389298290094,0.068020950320349105,0.99479127443123316,0.10193292066591142,0.99074630063503322,0.13572681304000481,0.98555365724735,0.16936348097028739,0.97921935936903404,0.20280396011147961,0.97175074458091049,0.23600951338123216,0.96315646444400715,0.26894167583273509,0.95344647447768094,0.3015622992120881,0.94263202262725421,0.33383359614881741,0.93072563623451909,0.36571818392834882,0.91774110752620275,0.39717912779573239,0.90369347763720387,0.42817998374045518,0.88859901918710804,0.45868484071278143,0.87247521743016432,0.48865836222271636,0.85534075000056009,0.51806582727340678,0.83721546527645485,0.54687317058156115,0.81812035938783811,0.57504702203829794,0.79807755189484397,0.60255474536471176,0.77711026016469653,0.62936447591737943,0.75524277247696747,0.65544515760001121,0.73250041988830084,0.68076657883849068,0.7089095468891965,0.70529940757762877,0.68449748088684259,0.72901522525909335,0.6592925005493484,0.7518865597411537,0.63332380304804703,0.77388691712210678,0.60662147023581403,0.79499081243052072,0.57921643380058063,0.81517379914674482,0.55114043943440749,0.83441249752148861,0.52242601005962508,0.85268462165866488,0.49310640815463896,0.86996900533112709,0.46321559722304123,0.88624562649939276,0.43278820245066318,0.90149563050495352,0.40185947059614135,0.91570135191130353,0.37046522916146046,0.92884633496738656,0,0.99916599536688,0.040832752815746255,0.99666537259497634,0.081597396221429766,0.99250230274624374,0.12222593441411488,0.98668372985976605,0.16265059861562242,0.97921935936903404,0.20280396011147964,0.97012164191319294,0.24261904272264073,0.95940575256926086,0.28202943452237422,0.94708956553995938,0.32096939861197205,0.93319362433937814,0.35937398277050558,0.91774110752620275,0.39717912779573245,0.90075779004166445,0.43432177435543889,0.88227200021669883,0.47073996817099073,0.86231457252002774,0.50637296335764392,0.84091879612597964,0.54116132374924308,0.818120359387838,0.57504702203829805,0.79395729030933804,0.60797353656606923,0.76846989311360336,0.6398859456012197,0.7417006810153286,0.67073101894977072,0.7136943053083441,0.70045730674355888,0.68449748088684248,0.72901522525909346,0.65415890832450385,0.7563571396236658,0.62272919264148641,0.78243744327075915,0.59026075889478502,0.80721263401222387,0.55680776473274929,0.83064138660033027,0.52242601005962508,0.85268462165866488,0.48717284396079646,0.87330557086689276,0.45110706904398096,0.89246983829065563,0.4142888433559338,0.91014545775430999,0.37677958003826911,0.92630294616080411,0.33864184488977045,0.94091535266975668,0.2999392520060592,0.95395830365170875,0.26073635767069286,0.96541004334356317,0.22109855267468612,0.97525147013739955,0.1810919532440658,0.98346616844213253,0.14078329075739265,0.9900404360648708,0,0.99886488401519768,0.047633428191824229,0.99546211303738863,0.095158717452145519,0.98979941214603195,0.14246797434992034,0.98188963698572551,0.18945379589768122,0.97175074458091049,0.23600951338123222,0.95940575256926086,0.28202943452237422,0.94488268694630595,0.32740908342489411,0.92821451843991953,0.37204543775908389,0.90943908765911963,0.41583716264632736,0.88859901918710793,0.45868484071278154,0.86574162481357841,0.5004911977898765,0.84091879612597964,0.54116132374924308,0.8141868867035742,0.58060288797072068,0.78560658418174145,0.61872634895428236,0.75524277247696736,0.65544515760001132,0.72316438448530329,0.69067595369463419,0.68944424558870121,0.72433875515854229,0.65415890832450374,0.7563571396236658,0.61738847859342627,0.78665841792997704,0.57921643380058052,0.81517379914674504,0.5397294333424002,0.84183854674390601,0.49901712186970942,0.86659212555900345,0.45717192577356996,0.88937833922604914,0.4142888433559338,0.91014545775430999,0.3704652291614603,0.92884633496738667,0.3258005729601175,0.94543851553597025,0.28039627388232519,0.95988433136128859,0.23435541021940717,0.97215098709042791,0.18778250541195926,0.98221063456939184,0.14078329075739265,0.9900404360648708,0.093464465375362488,0.99562261611119385,0.045933453976015171,0.99894450186475992,-0.00170183701902287,0.99999855187433184,-0.049333264449253268,0.99878237320188024,-0.09685269392536601,0.99529872685510823,0,0.99851748541100704,0.054431896241812522,0.99407433734304107,0.10870240032305496,0.98668372985976605,0.16265059861562242,0.97636757632801263,0.21611653313747767,0.96315646444400715,0.26894167583273509,0.94708956553995938,0.32096939861197205,0.92821451843991953,0.37204543775908389,0.90658728820927503,0.42201835132770338,0.88227200021669883,0.47073996817099073,0.85534075000056009,0.51806582727340678,0.82587338950354916,0.56385560608183993,0.79395729030933804,0.60797353656606923,0.75968708458328493,0.65028880777493692,0.72316438448530329,0.69067595369463419,0.68449748088684248,0.72901522525909346,0.64380102228529423,0.76519294540946348,0.60119567486785286,0.79910184614990531,0.55680776473274929,0.83064138660033027,0.51076890332868385,0.85971805110304245,0.46321559722304123,0.88624562649939276,0.4142888433559338,0.91014545775430999,0.36413371098016195,0.93134668117077424,0.31289891152664578,0.94978643450274669,0.26073635767069286,0.96541004334356317,0.20780071290648452,0.97817118323714525,0.15424893296530237,0.98803201703136401,0.10023980043720467,0.99496330706630054,0.045933453976015171,0.99894450186475992,-0.0085090865164586787,0.99996379706800154,-0.062926397319133437,0.99801817043600694,-0.11715712951769121,0.99311339080850936,-0.17104048740882016,0.98526400100021583,-0.22441670526416499,0.97449327468093738,-0.27712752104037386,0.96083314736847891,-0.32901664563067534,0.94432412173889668,0,0.99812381565270847,0.061227841925696871,0.99250230274624374,0.12222593441411488,0.9831565552696524,0.18276539013257118,0.97012164191319294,0.24261904272264073,0.95344647447768094,0.3015622992120881,0.93319362433937814,0.35937398277050558,0.90943908765911963,0.41583716264632731,0.88227200021669883,0.47073996817099073,0.85179430294055769,0.52387638377580026,0.81812035938783811,0.57504702203829794,0.78137652661015045,0.62405987185738598,0.7417006810153286,0.67073101894977072,0.69924170100431415,0.71488533596416237,0.65415890832450385,0.7563571396236658,0.60662147023581403,0.79499081243052072,0.55680776473274929,0.83064138660033027,0.50490471120440072,0.8631750880346355,0.45110706904398096,0.89246983829065563,0.39561670683977562,0.91841571266461408,0.33864184488977062,0.94091535266975668,0.28039627388232519,0.95988433136128859,0.22109855267468612,0.97525147013739955,0.16097118817957295,0.9869591058276207,0.10023980043720467,0.99496330706630054,0.039132276005724782,0.99923403913928577,-0.022122087153186774,0.999755276685243,-0.083293440084805867,0.99652506382872219,-0.14415224531938683,0.98955552151932302,-0.20447013818137724,0.97887280204942284,-0.26402078369787874,0.96451699092113352,-0.32258072589091324,0.94654195643071815,-0.37993022626663853,0.92501514753488268,-0.43585408835519507,0.90001734075742224,-0.49014246520720145,0.87164233708592165,-0.54259164681687855,0.83999660999586645,0,0.99768389298290094,0.068020950320349105,0.99074630063503322,0.13572681304000481,0.97921935936903404,0.20280396011147961,0.96315646444400715,0.26894167583273509,0.94263202262725421,0.33383359614881741,0.91774110752620275,0.39717912779573239,0.88859901918710804,0.45868484071278143,0.85534075000056009,0.51806582727340678,0.81812035938783811,0.57504702203829794,0.77711026016469653,0.62936447591737943,0.73250041988830084,0.68076657883849068,0.68449748088684259,0.72901522525909335,0.63332380304804703,0.77388691712210678,0.57921643380058063,0.81517379914674482,0.52242601005962508,0.85268462165866488,0.46321559722304123,0.88624562649939276,0.40185947059614135,0.91570135191130353,0.33864184488977062,0.94091535266975668,0.27385555767693481,0.96177083212658043,0.20780071290648472,0.97817118323714525,0.14078329075739288,0.99004043606487069,0.073113730273074051,0.99732360969023293,0.0051054913412917234,0.99998696689415112,-0.062926397319133215,0.99801817043600694,-0.13066679743877493,0.9914263402023844,-0.19780192098551708,0.98024201096180286,-0.26402078369787874,0.96451699092113352,-0.32901664563067512,0.94432412173889679,-0.39248843204009631,0.91975694110710937,-0.454142128026361,0.89092924946467456,-0.5136921404736613,0.85797458284939199,-0.57086262097860252,0.8210455943304491,-0.62538874363904762,0.78031334688673215,-0.67701793178437808,0.73596652100649473,-0.72551102796469313,0.68821054067895115,0,0.99719773778753673,0.074810906634120627,0.98880665649716182,0.14920253371475944,0.97487378414891857,0.22275795155093295,0.95547720786619217,0.29506491700679266,0.93072563623451909,0.36571818392834887,0.90075779004166445,0.43432177435543889,0.86574162481357841,0.50049119778987639,0.82587338950354916,0.56385560608183993,0.78137652661015033,0.62405987185738598,0.73250041988830072,0.68076657883849079,0.67951899667191829,0.73365791290082161,0.62272919264148641,0.78243744327075915,0.5624492876407805,0.82683178387890877,0.49901712186970959,0.86659212555900333,0.43278820245066318,0.90149563050495352,0.36413371098016195,0.93134668117077424,0.29343842323253327,0.95597797661389916,0.22109855267468592,0.97525147013739955,0.14751952987805761,0.98905914297606934,0.073113730273073829,0.99732360969023304,-0.00170183701902287,0.99999855187433184,-0.07650786632397899,0.99706897774955983,-0.15088510542342359,0.9885513061856539,-0.22441670526416499,0.97449327468093738,-0.29669055619889184,0.95497367181634496,-0.36730159766475695,0.93010189568289614,-0.43585408835519546,0.90001734075742201,-0.50196382416174279,0.86488861666281569,-0.5652602914553464,0.82491260319128157,-0.62538874363904762,0.78031334688673215,-0.68201218933394958,0.73134080537045998,-0.73481328105563182,0.6782694464475435,-0.78349609379587737,0.62139670984533046,-0.82778778354160942,0.56104134020522023,-0.86744011643582664,0.49754160067053638,0,0.99666537259497634,0.081597396221429766,0.98668372985976605,0.16265059861562242,0.97012164191319294,0.24261904272264073,0.94708956553995938,0.32096939861197205,0.91774110752620275,0.39717912779573245,0.88227200021669883,0.47073996817099073,0.84091879612597964,0.54116132374924308,0.79395729030933804,0.60797353656606923,0.7417006810153286,0.67073101894977072,0.68449748088684248,0.72901522525909346,0.62272919264148641,0.78243744327075915,0.55680776473274929,0.83064138660033027,0.48717284396079646,0.87330557086689276,0.4142888433559338,0.91014545775430999,0.33864184488977045,0.94091535266975668,0.26073635767069286,0.96541004334356317,0.1810919532440658,0.98346616844213253,0.10023980043720467,0.99496330706630054,0.018719122859119752,0.99982478186899593,-0.062926397319133437,0.99801817043600694,-0.14415224531938683,0.98955552151932302,-0.22441670526416499,0.97449327468093738,-0.30318447301790491,0.95293188388302719,-0.37993022626663853,0.92501514753488268,-0.454142128026361,0.89092924946467456,-0.52532524021429894,0.85090151721206209,-0.59300482451709802,0.80519890592290666,-0.65672950854160517,0.75412621795738,-0.71607429613237106,0.69802407008535838,-0.77064340177930535,0.63726662182639082,-0.8200728902120914,0.57225908008452531,-0.86403310357724106,0.50343499672021275,-0.90223086001031805,0.43125337708247785,-0.93441140894049823,0.35619561878528644,-0.96036013008703891,0.27876230114419304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99937000427499356,0.03549076718527315,0.99748081088920149,0.07093681630733846,0.99433480021013709,0.10629348564736542,0.98993593618435782,0.1415162261042846,0.9842897613429259,0.17656065732627432,0.97740338981786667,0.21138262362962434,0.96928549837842337,0.24593824963451971,0.95994631549840204,0.2801839955476445,0.94939760846838128,0.31407671202194881,0.93765266856902785,0.34757369452445736,0.92472629432419573,0.38063273714361573,0.91063477285491312,0.4132121857683782,0.89539585935774901,0.44527099057203134,0.87902875473341735,0.47676875773462513,0.86155408139380607,0.5076658003388399,0.84299385727791509,0.53792318837516395,0.82337146810944051,0.56750279779337176,0.80271163793096367,0.59636735853850142,0.78104039795186808,0.62448050151080592,0.75838505374923848,0.65180680439050709,0.7347741508630673,0.67831183626961611,0.71023743882911827,0.70396220103458285,0.68480583369476555,0.72872557944511396,0.65851137906503854,0.75257076985613858,0.63138720572795359,0.77546772753161475,0.60346748991000387,0.79738760250064045,0.57478741021440682,0.81830277590816902,0.54538310329636475,0.83818689481453168,0.51529161833118764,0.85701490539991521,0,0.99748081088920149,0.07093681630733846,0.98993593618435782,0.1415162261042846,0.97740338981786667,0.21138262362962434,0.95994631549840204,0.2801839955476445,0.93765266856902785,0.34757369452445736,0.91063477285491312,0.4132121857683782,0.87902875473341735,0.47676875773462513,0.84299385727791509,0.53792318837516395,0.80271163793096367,0.59636735853850142,0.75838505374923848,0.65180680439050709,0.71023743882911827,0.70396220103458285,0.65851137906503854,0.75257076985613858,0.60346748991000387,0.79738760250064045,0.54538310329636475,0.83818689481453168,0.48455087033265021,0.87476308453196128,0.42127728681659571,0.90693188697522797,0.35588114899339091,0.93453122355068685,0.28869194733962095,0.95742203836200546,0.22004820646562478,0.97548899882636386,0.15029577950047049,0.98864107676362811,0.079786105553083103,0.99681200703075012,0.0088744390290910122,0.99996062139062203,-0.062081940275234143,0.99807105593322476,-0.13272552728372208,0.9911528310040072,-0.20270039288609348,0.97924080323678475,-0.27165397724343865,0.9623949899328349,-0.33923886611803028,0.94070026667103324,-0.40511454127765356,0.91426593967258585,-0.46894909615525121,0.88322519507494401,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.9999654630763769,0.0083109959960970241,0.99986185469110567,0.016621417919726152,0.99968918200081625,0.024930691738072875,0.99944745693267556,0.033238243497626739,0.99913669618356415,0.041543499363826515,0.99875692121892234,0.049845885660697163,0.99830815827126818,0.058144828910475829,0.99779043833838499,0.066439755873224177,0.99720379718118013,0.074730093586424254,0.99654827532121548,0.083015269404555239,0.99582391803790782,0.091294711038648294,0.99503077536540141,0.099567846595816661,0.99416890208911213,0.10783410461875863,0.99323835774194302,0.11609291412523023,0.99223920660017206,0.12434370464748516,0.99117151767901279,0.13258590627167927,0.99003536472784648,0.14081894967723654,0.98883082622512852,0.14904226617617444,0.98755798537296757,0.15725528775238523,0.98621693009137823,0.16545744710087118,0.98480775301220802,0.17364817766693033,0.9833305514727394,0.18182691368529075,0.9817854275089658,0.18999309021918998,0.98017248784854383,0.19814614319939758,0.97849184390342125,0.20628550946317739,0.9767436117621412,0.21441062679318743,0.97492791218182362,0.22252093395631439,0.97304487057982381,0.23061587074244017,0.97109461702506994,0.23869487800313774,0.96907728622907796,0.24675739769029362,0.96699301753664724,0.25480287289465464,0.96484195491623492,0.26283074788429533,0.96262424695001203,0.27084046814300511,0.96034004682359986,0.27883148040859029,0.9579895123154889,0.28680323271109021,0.95557280578614068,0.29475517441090421,0.95309009416677304,0.30268675623682589,0.95054154894782905,0.31059743032398374,0.94792734616713181,0.31848665025168443,0.94524766639772484,0.3263538710811556,0.94250269473539927,0.33419854939318755,0.93969262078590843,0.34202014332566871,0.93681763865187095,0.3498181126110147,0.93387794691936366,0.35759191861348627,0.93087374864420425,0.36534102436639498,0.92780525133792546,0.3730648946091939,0.92467266695344152,0.38076299582444956,0.92147621187040762,0.38843479627469474,0.918216106880274,0.39607976603915679,0.91489257717103467,0.40369737705036218,0.91150585231167314,0.41128710313061156,0.90805616623630503,0.41884842002832484,0.90454375722801916,0.42638080545425383,0.90096886790241915,0.43388373911755812,0.89733174519086401,0.44135670276174394,0.89363264032341228,0.44879918020046217,0.88987180881146866,0.45621065735316296,0.88604951043013436,0.46359062228060566,0.88216600920026411,0.4709385652202201,0.87822157337022855,0.47825397862131819,0.87421647539738567,0.48553635718015209,0.87015099192926093,0.49278519787481767,0.86602540378443871,0.49999999999999994,0.86183999593316396,0.50718026520155923,0.85759505747765952,0.51432549751095358,0.85329088163215572,0.521435203379498,0.84892776570263739,0.52850889171245541,0.84450601106630785,0.5355460739029585,0.8400259231507714,0.54254626386575944,0.83548781141293649,0.54950897807080601,0.83089198931763975,0.556433735576641,0.82623877431599491,0.56332005806362206,0.82152848782346399,0.57016746986696165,0.81676145519765675,0.57697549800958292,0.8119380057158565,0.58374367223478985,0.80705847255227614,0.59047152503874989,0.80212319275504385,0.59715859170278618,0.7971325072229225,0.60380441032547738,0.7920867606817622,0.61040852185456318,0.78698630166068895,0.61697047011865247,0.7818314824680298,0.62348980185873348,0.77662265916697837,0.6299660667594813,0.77136019155099977,0.63639881748036342,0.76604444311897801,0.64278760968653925,0.76067578105010858,0.64913200207955191,0.75525457617853486,0.65543155642781015,0.74978120296773421,0.66168583759685939,0.74425603948465158,0.66789441357943746,0.73867946737358559,0.67405685552531536,0.73305187182982634,0.68017273777091936,0.72737364157304873,0.6862416378687336,0.72164516882046204,0.69226313661647965,0.71586684925971844,0.69823681808607274,0.71003908202158039,0.70416226965235185,0,0.99986185469110567,0.016621417919726152,0.99944745693267556,0.033238243497626739,0.99875692121892234,0.049845885660697163,0.99779043833838499,0.066439755873224177,0.99654827532121548,0.083015269404555239,0.99503077536540141,0.099567846595816661,0.99323835774194302,0.11609291412523023,0.99117151767901279,0.13258590627167927,0.98883082622512852,0.14904226617617444,0.98621693009137823,0.16545744710087118,0.9833305514727394,0.18182691368529075,0.98017248784854383,0.19814614319939758,0.9767436117621412,0.21441062679318743,0.97304487057982381,0.23061587074244017,0.96907728622907796,0.24675739769029362,0.96484195491623492,0.26283074788429533,0.96034004682359986,0.27883148040859029,0.95557280578614068,0.29475517441090421,0.95054154894782905,0.31059743032398374,0.94524766639772484,0.3263538710811556,0.93969262078590843,0.34202014332566871,0.93387794691936366,0.35759191861348627,0.92780525133792546,0.3730648946091939,0.92147621187040762,0.38843479627469474,0.91489257717103467,0.40369737705036218,0.90805616623630503,0.41884842002832484,0.90096886790241915,0.43388373911755812,0.89363264032341228,0.44879918020046217,0.88604951043013436,0.46359062228060566,0.87822157337022855,0.47825397862131819,0.87015099192926093,0.49278519787481767,0.86183999593316396,0.50718026520155923,0.85329088163215572,0.521435203379498,0.84450601106630785,0.5355460739029585,0.83548781141293649,0.54950897807080601,0.82623877431599491,0.56332005806362206,0.81676145519765675,0.57697549800958292,0.80705847255227614,0.59047152503874989,0.7971325072229225,0.60380441032547738,0.78698630166068895,0.61697047011865247,0.77662265916697837,0.6299660667594813,0.76604444311897801,0.64278760968653925,0.75525457617853486,0.65543155642781015,0.74425603948465158,0.66789441357943746,0.73305187182982634,0.68017273777091936,0.72164516882046204,0.69226313661647965,0.71003908202158039,0.70416226965235185,0.69823681808607285,0.71586684925971844,0.6862416378687336,0.72737364157304873,0.67405685552531536,0.73867946737358559,0.66168583759685939,0.74978120296773421,0.64913200207955191,0.76067578105010847,0.63639881748036342,0.77136019155099977,0.62348980185873359,0.7818314824680298,0.61040852185456318,0.7920867606817622,0.59715859170278618,0.80212319275504373,0.58374367223478996,0.8119380057158565,0.57016746986696165,0.82152848782346399,0.556433735576641,0.83089198931763975,0.54254626386575944,0.8400259231507714,0.52850889171245552,0.84892776570263739,0.51432549751095358,0.85759505747765952,0.50000000000000011,0.8660254037844386,0.48553635718015214,0.87421647539738556,0.4709385652202201,0.88216600920026411,0.45621065735316307,0.88987180881146855,0.44135670276174405,0.89733174519086389,0.42638080545425383,0.90454375722801916,0.41128710313061151,0.91150585231167314,0.3960797660391569,0.918216106880274,0.38076299582444961,0.92467266695344152,0.36534102436639498,0.93087374864420425,0.34981811261101486,0.93681763865187084,0.33419854939318761,0.94250269473539927,0.31848665025168443,0.94792734616713181,0.30268675623682606,0.95309009416677304,0.28680323271109032,0.9579895123154889,0.27084046814300516,0.96262424695001203,0.25480287289465459,0.96699301753664724,0.23869487800313785,0.97109461702506983,0.22252093395631445,0.97492791218182362,0.20628550946317739,0.97849184390342125,0.18999309021919011,0.9817854275089658,0.17364817766693041,0.98480775301220802,0.15725528775238529,0.98755798537296757,0.14081894967723671,0.99003536472784637,0.12434370464748527,0.99223920660017206,0.10783410461875867,0.99416890208911213,0.091294711038648266,0.99582391803790782,0.074730093586424393,0.99720379718118013,0.058144828910475899,0.99830815827126818,0.041543499363826522,0.99913669618356415,0.024930691738073035,0.99968918200081625,0.0083109959960971196,0.9999654630763769,0,0.99968918200081625,0.024930691738072875,0.99875692121892234,0.049845885660697163,0.99720379718118013,0.074730093586424254,0.99503077536540141,0.099567846595816661,0.99223920660017206,0.12434370464748518,0.98883082622512852,0.14904226617617444,0.98480775301220802,0.17364817766693036,0.98017248784854383,0.19814614319939758,0.97492791218182362,0.22252093395631439,0.96907728622907796,0.24675739769029365,0.96262424695001203,0.27084046814300511,0.95557280578614068,0.29475517441090421,0.94792734616713181,0.31848665025168443,0.93969262078590832,0.34202014332566877,0.93087374864420425,0.36534102436639504,0.92147621187040762,0.38843479627469474,0.91150585231167314,0.41128710313061156,0.90096886790241915,0.43388373911755812,0.88987180881146855,0.45621065735316302,0.87822157337022855,0.47825397862131824,0.8660254037844386,0.5,0.85329088163215561,0.52143520337949811,0.8400259231507714,0.54254626386575944,0.82623877431599491,0.56332005806362206,0.8119380057158565,0.58374367223478985,0.7971325072229225,0.60380441032547738,0.7818314824680298,0.62348980185873348,0.76604444311897801,0.64278760968653936,0.74978120296773421,0.66168583759685951,0.73305187182982634,0.68017273777091947,0.71586684925971844,0.69823681808607285,0.69823681808607285,0.71586684925971844,0.68017273777091936,0.73305187182982634,0.66168583759685939,0.74978120296773421,0.64278760968653936,0.76604444311897801,0.62348980185873359,0.7818314824680298,0.60380441032547727,0.7971325072229225,0.58374367223478985,0.8119380057158565,0.56332005806362195,0.82623877431599491,0.54254626386575944,0.84002592315077151,0.521435203379498,0.85329088163215572,0.49999999999999989,0.86602540378443871,0.47825397862131824,0.87822157337022855,0.45621065735316291,0.88987180881146866,0.43388373911755818,0.90096886790241915,0.41128710313061151,0.91150585231167314,0.38843479627469479,0.92147621187040762,0.36534102436639498,0.93087374864420425,0.3420201433256686,0.93969262078590843,0.31848665025168443,0.94792734616713181,0.2947551744109041,0.95557280578614079,0.27084046814300516,0.96262424695001203,0.24675739769029356,0.96907728622907796,0.22252093395631445,0.97492791218182362,0.19814614319939755,0.98017248784854383,0.17364817766693022,0.98480775301220813,0.14904226617617444,0.98883082622512852,0.12434370464748506,0.99223920660017206,0.099567846595816661,0.99503077536540141,0.074730093586424171,0.99720379718118013,0.049845885660697198,0.99875692121892234,0.024930691738072813,0.99968918200081625,6.123233995736766e-17,1,-0.024930691738072913,0.99968918200081625,-0.049845885660697295,0.99875692121892234,-0.074730093586424268,0.99720379718118013,-0.099567846595816759,0.99503077536540141,-0.12434370464748516,0.99223920660017206,-0.14904226617617453,0.98883082622512852,-0.1736481776669303,0.98480775301220802,-0.19814614319939763,0.98017248784854383,-0.22252093395631434,0.97492791218182362,-0.24675739769029367,0.96907728622907796,-0.27084046814300522,0.96262424695001203,-0.29475517441090421,0.95557280578614068,-0.31848665025168454,0.9479273461671317,-0.34202014332566871,0.93969262078590843,-0.3653410243663951,0.93087374864420425,-0.38843479627469468,0.92147621187040762,-0.41128710313061156,0.91150585231167314,-0.43388373911755806,0.90096886790241915,-0.45621065735316296,0.88987180881146855,-0.4782539786213183,0.87822157337022844,-0.50000000000000022,0.8660254037844386,-0.521435203379498,0.85329088163215572,-0.54254626386575944,0.84002592315077151,-0.56332005806362206,0.82623877431599491,-0.58374367223478996,0.81193800571585639,-0.6038044103254776,0.79713250722292239,-0.62348980185873348,0.78183148246802991,-0.64278760968653936,0.76604444311897801,-0.66168583759685951,0.7497812029677341,-0.68017273777091958,0.73305187182982623,-0.69823681808607274,0.71586684925971855,0,0.99944745693267556,0.033238243497626739,0.99779043833838499,0.066439755873224177,0.99503077536540141,0.099567846595816661,0.99117151767901279,0.13258590627167927,0.98621693009137823,0.16545744710087118,0.98017248784854383,0.19814614319939758,0.97304487057982381,0.23061587074244017,0.96484195491623492,0.26283074788429533,0.95557280578614068,0.29475517441090421,0.94524766639772484,0.3263538710811556,0.93387794691936366,0.35759191861348627,0.92147621187040762,0.38843479627469474,0.90805616623630503,0.41884842002832484,0.89363264032341228,0.44879918020046217,0.87822157337022855,0.47825397862131819,0.86183999593316396,0.50718026520155923,0.84450601106630785,0.5355460739029585,0.82623877431599491,0.56332005806362206,0.80705847255227614,0.59047152503874989,0.78698630166068895,0.61697047011865247,0.76604444311897801,0.64278760968653925,0.74425603948465158,0.66789441357943746,0.72164516882046204,0.69226313661647965,0.69823681808607285,0.71586684925971844,0.67405685552531536,0.73867946737358559,0.64913200207955191,0.76067578105010847,0.62348980185873359,0.7818314824680298,0.59715859170278618,0.80212319275504373,0.57016746986696165,0.82152848782346399,0.54254626386575944,0.8400259231507714,0.51432549751095358,0.85759505747765952,0,0.99779043833838499,0.066439755873224177,0.99117151767901279,0.13258590627167927,0.98017248784854383,0.19814614319939758,0.96484195491623492,0.26283074788429533,0.94524766639772484,0.3263538710811556,0.92147621187040762,0.38843479627469474,0.89363264032341228,0.44879918020046217,0.86183999593316396,0.50718026520155923,0.82623877431599491,0.56332005806362206,0.78698630166068895,0.61697047011865247,0.74425603948465158,0.66789441357943746,0.69823681808607285,0.71586684925971844,0.64913200207955191,0.76067578105010847,0.59715859170278618,0.80212319275504373,0.54254626386575944,0.8400259231507714,0.48553635718015214,0.87421647539738556,0.42638080545425383,0.90454375722801916,0.36534102436639498,0.93087374864420425,0.30268675623682606,0.95309009416677304,0.23869487800313785,0.97109461702506983,0.17364817766693041,0.98480775301220802,0.10783410461875867,0.99416890208911213,0.041543499363826522,0.99913669618356415,-0.024930691738072913,0.99968918200081625,-0.091294711038648141,0.99582391803790782,-0.15725528775238515,0.98755798537296757,-0.22252093395631434,0.97492791218182362,-0.28680323271109021,0.9579895123154889,-0.34981811261101475,0.93681763865187095,-0.4112871031306114,0.91150585231167325,-0.47093856522022021,0.88216600920026411,0,0.99503077536540141,0.099567846595816661,0.98017248784854383,0.19814614319939758,0.95557280578614068,0.29475517441090421,0.92147621187040762,0.38843479627469474,0.87822157337022855,0.47825397862131824,0.82623877431599491,0.56332005806362206,0.76604444311897801,0.64278760968653936,0.69823681808607285,0.71586684925971844,0.62348980185873359,0.7818314824680298,0.54254626386575944,0.84002592315077151,0,0.98017248784854383,0.19814614319939758,0.92147621187040762,0.38843479627469474,0.82623877431599491,0.56332005806362206,0.69823681808607285,0.71586684925971844,0.54254626386575944,0.84002592315077151,0.36534102436639498,0.93087374864420425,0.17364817766693022,0.98480775301220813,-0.024930691738072913,0.99968918200081625,-0.22252093395631434,0.97492791218182362,-0.41128710313061156,0.91150585231167314,0,0.95557280578614068,0.29475517441090421,0.82623877431599491,0.56332005806362206,0.62348980185873359,0.7818314824680298,0,0.82623877431599491,0.56332005806362206,0.36534102436639498,0.93087374864420425,-0.22252093395631434,0.97492791218182362,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99993705675470057,0.01121973835464592,0.99974823494250653,0.022438064295804937,0.99943355833353331,0.033653565587793921,0.9989930665413147,0.044864830350514924,0.9984268150178166,0.056070447237191789,0.99773487504645608,0.067269005612039648,0.99691733373312796,0.078459095727844944,0.99597429399523907,0.089639308903433496,0.99490587454875234,0.10080823770100449,0.9937122098932426,0.11196447610330786,0.99239345029496417,0.12310661969064284,0.99094976176793481,0.13423326581765546,0.98938132605303664,0.14534301378991271,0.98768834059513777,0.15643446504023087,0.98587101851823589,0.16750622330473641,0.98392958859862967,0.17855689479863665,0.9818642952361184,0.18958508839167845,0.97967539842323559,0.20058941578327277,0.97736317371251924,0.21156849167726285,0.97492791218182362,0.22252093395631439,0.97236992039767656,0.23344536385590539,0.96968952037668688,0.24434040613789401,0.96688704954500637,0.25520468926364243,0.96396286069585324,0.26603684556667512,0.9609173219450996,0.27683551142484936,0.95775081668493045,0.28759932743201727,0.95446374353558083,0.2983269385691561,0.95105651629515353,0.3090169943749474,0.94752956388752885,0.31966814911578145,0.94388333030836757,0.33027906195516704,0.94011827456921904,0.3408483971225249,0.9362348706397372,0.35137482408134268,0.93223360738801431,0.36185701769667211,0.92811498851903895,0.37229365840194517,0.92387953251128674,0.38268343236508978,0.91952777255145068,0.39302503165392361,0.91506025646731981,0.40331715440080507,0.91047754665881597,0.41355850496652063,0.90578022002719405,0.4237477941033887,0.90096886790241915,0.43388373911755812,0.89604409596872514,0.44396506403048208,0.8910065241883679,0.45399049973954675,0.88585678672357981,0.46395878417783404,0.880595531856738,0.47386866247299864,0.87522342190875368,0.4837188871052398,0.86974113315569546,0.49350821806434686,0.8641493557436547,0.50323542300580004,0.8584487936018661,0.51289927740590613,0.85264016435409229,0.5224985647159488,0.84672419922828424,0.53203207651533657,0.84070164296453009,0.54149861266372568,0.83457325372130264,0.55089698145210253,0.82833980298001653,0.56022599975280274,0.82200207544790993,0.56948449316845196,0.81556086895926017,0.57867129617980573,0.80901699437494745,0.58778525229247314,0.80237127548037801,0.59682521418250367,0.79562454888178102,0.6057900438408198,0.7887776639008911,0.61467861271647717,0.7818314824680298,0.62348980185873348,0.77478687901360099,0.63222250205790964,0.76764474035801111,0.64087561398502413,0.76040596560003093,0.64944804833018366,0.75307146600361097,0.65793872593971259,0.74564216488316559,0.66634657795200392,0.73811899748734067,0.67467054593207432,0.73050291088127761,0.682909582004807,0.72279486382739155,0.69106264898686465,0.71499582666467532,0.6991287205172575,0,0,0.99974823494250653,0.022438064295804937,0.9989930665413147,0.044864830350514924,0.99773487504645608,0.067269005612039648,0.99597429399523907,0.089639308903433496,0.9937122098932426,0.11196447610330786,0.99094976176793481,0.13423326581765546,0.98768834059513777,0.15643446504023087,0.98392958859862967,0.17855689479863665,0.97967539842323559,0.20058941578327277,0.97492791218182362,0.22252093395631439,0.96968952037668688,0.24434040613789401,0.96396286069585324,0.26603684556667512,0.95775081668493045,0.28759932743201727,0.95105651629515353,0.3090169943749474,0.94388333030836757,0.33027906195516704,0.9362348706397372,0.35137482408134268,0.92811498851903895,0.37229365840194517,0.91952777255145068,0.39302503165392361,0.91047754665881597,0.41355850496652063,0.90096886790241915,0.43388373911755812,0.8910065241883679,0.45399049973954675,0.880595531856738,0.47386866247299864,0.86974113315569546,0.49350821806434686,0.8584487936018661,0.51289927740590613,0.84672419922828424,0.53203207651533657,0.83457325372130264,0.55089698145210253,0.82200207544790993,0.56948449316845196,0.80901699437494745,0.58778525229247314,0.79562454888178102,0.6057900438408198,0.7818314824680298,0.62348980185873348,0.76764474035801111,0.64087561398502413,0.75307146600361097,0.65793872593971259,0.73811899748734067,0.67467054593207432,0.72279486382739155,0.69106264898686465,0.70710678118654757,0.70710678118654746,0.69106264898686465,0.72279486382739155,0.67467054593207432,0.73811899748734056,0.65793872593971259,0.75307146600361086,0.64087561398502413,0.76764474035801111,0.62348980185873359,0.7818314824680298,0.60579004384081991,0.79562454888178102,0.58778525229247314,0.80901699437494745,0.56948449316845207,0.82200207544790993,0.55089698145210253,0.83457325372130264,0.53203207651533657,0.84672419922828412,0.51289927740590613,0.8584487936018661,0.49350821806434686,0.86974113315569535,0.47386866247299869,0.880595531856738,0.45399049973954686,0.8910065241883679,0.43388373911755818,0.90096886790241915,0.41355850496652069,0.91047754665881586,0.39302503165392366,0.91952777255145057,0.37229365840194523,0.92811498851903895,0.35137482408134274,0.9362348706397372,0.33027906195516715,0.94388333030836757,0.30901699437494745,0.95105651629515353,0.28759932743201733,0.95775081668493045,0.26603684556667517,0.96396286069585324,0.24434040613789407,0.96968952037668688,0.22252093395631445,0.97492791218182362,0.20058941578327283,0.97967539842323559,0.17855689479863671,0.98392958859862967,0.15643446504023092,0.98768834059513777,0.13423326581765554,0.9909497617679347,0.11196447610330791,0.9937122098932426,0.089639308903433551,0.99597429399523907,0.067269005612039717,0.99773487504645608,0.044864830350514986,0.99899306654131459,0.022438064295804999,0.99974823494250653,0,0,0.99943355833353331,0.033653565587793921,0.99773487504645608,0.067269005612039648,0.99490587454875234,0.10080823770100449,0.99094976176793481,0.13423326581765546,0.98587101851823589,0.16750622330473641,0.97967539842323559,0.20058941578327277,0.97236992039767656,0.23344536385590539,0.96396286069585324,0.26603684556667512,0.95446374353558083,0.2983269385691561,0.94388333030836757,0.33027906195516704,0.93223360738801431,0.36185701769667211,0.91952777255145068,0.39302503165392361,0.90578022002719405,0.4237477941033887,0.8910065241883679,0.45399049973954675,0.87522342190875368,0.4837188871052398,0.8584487936018661,0.51289927740590613,0.84070164296453009,0.54149861266372568,0.82200207544790993,0.56948449316845196,0.80237127548037801,0.59682521418250367,0.7818314824680298,0.62348980185873348,0.76040596560003093,0.64944804833018366,0.73811899748734067,0.67467054593207432,0.71499582666467532,0.6991287205172575,0.69106264898686465,0.72279486382739155,0.66634657795200392,0.74564216488316559,0.64087561398502413,0.76764474035801111,0.61467861271647728,0.78877766390089099,0.58778525229247314,0.80901699437494745,0.56022599975280285,0.82833980298001653,0.53203207651533657,0.84672419922828412,0.50323542300580015,0.8641493557436547,0.47386866247299869,0.880595531856738,0.44396506403048214,0.89604409596872514,0.41355850496652069,0.91047754665881586,0.38268343236508984,0.92387953251128674,0.35137482408134274,0.9362348706397372,0.31966814911578151,0.94752956388752874,0.28759932743201733,0.95775081668493045,0.25520468926364248,0.96688704954500637,0.22252093395631445,0.97492791218182362,0.18958508839167851,0.9818642952361184,0.15643446504023092,0.98768834059513777,0.12310661969064289,0.99239345029496406,0.089639308903433551,0.99597429399523907,0.056070447237191845,0.9984268150178166,0.022438064295804999,0.99974823494250653,-0.011219738354645859,0.99993705675470057,-0.044864830350514862,0.9989930665413147,-0.078459095727844874,0.99691733373312796,-0.1119644761033078,0.9937122098932426,-0.14534301378991266,0.98938132605303664,-0.1785568947986366,0.98392958859862967,-0.2115684916772628,0.97736317371251924,-0.24434040613789396,0.96968952037668688,-0.2768355114248493,0.9609173219450996,-0.30901699437494734,0.95105651629515364,-0.34084839712252479,0.94011827456921904,-0.37229365840194512,0.92811498851903895,-0.40331715440080496,0.91506025646731992,-0.43388373911755806,0.90096886790241915,-0.46395878417783398,0.88585678672357981,-0.4935082180643468,0.86974113315569546,-0.5224985647159488,0.85264016435409229,-0.55089698145210242,0.83457325372130275,-0.57867129617980573,0.81556086895926017,-0.6057900438408198,0.79562454888178102,-0.63222250205790964,0.77478687901360099,-0.65793872593971259,0.75307146600361097,-0.68290958200480689,0.73050291088127772,0,0,0.9989930665413147,0.044864830350514924,0.99597429399523907,0.089639308903433496,0.99094976176793481,0.13423326581765546,0.98392958859862967,0.17855689479863665,0.97492791218182362,0.22252093395631439,0.96396286069585324,0.26603684556667512,0.95105651629515353,0.3090169943749474,0.9362348706397372,0.35137482408134268,0.91952777255145068,0.39302503165392361,0.90096886790241915,0.43388373911755812,0.880595531856738,0.47386866247299864,0.8584487936018661,0.51289927740590613,0.83457325372130264,0.55089698145210253,0.80901699437494745,0.58778525229247314,0.7818314824680298,0.62348980185873348,0.75307146600361097,0.65793872593971259,0.72279486382739155,0.69106264898686465,0,0.99597429399523907,0.089639308903433496,0.98392958859862967,0.17855689479863665,0.96396286069585324,0.26603684556667512,0.9362348706397372,0.35137482408134268,0.90096886790241915,0.43388373911755812,0.8584487936018661,0.51289927740590613,0.80901699437494745,0.58778525229247314,0.75307146600361097,0.65793872593971259,0.69106264898686465,0.72279486382739155,0.62348980185873359,0.7818314824680298,0.55089698145210253,0.83457325372130264,0.47386866247299869,0.880595531856738,0.39302503165392366,0.91952777255145057,0.30901699437494745,0.95105651629515353,0.22252093395631445,0.97492791218182362,0.13423326581765554,0.9909497617679347,0.044864830350514986,0.99899306654131459,0,0.99094976176793481,0.13423326581765546,0.96396286069585324,0.26603684556667512,0.91952777255145068,0.39302503165392361,0.8584487936018661,0.51289927740590613,0.7818314824680298,0.62348980185873348,0.69106264898686465,0.72279486382739155,0.58778525229247314,0.80901699437494745,0.47386866247299869,0.880595531856738,0.35137482408134274,0.9362348706397372,0.22252093395631445,0.97492791218182362,0.089639308903433551,0.99597429399523907,-0.044864830350514862,0.9989930665413147,-0.1785568947986366,0.98392958859862967,-0.30901699437494734,0.95105651629515364,-0.43388373911755806,0.90096886790241915,-0.55089698145210242,0.83457325372130275,-0.65793872593971259,0.75307146600361097,0,0.98392958859862967,0.17855689479863665,0.9362348706397372,0.35137482408134268,0.8584487936018661,0.51289927740590613,0,0.9362348706397372,0.35137482408134268,0.75307146600361097,0.65793872593971259,0.47386866247299869,0.880595531856738,0,0.8584487936018661,0.51289927740590613,0.47386866247299869,0.880595531856738,-0.044864830350514862,0.9989930665413147,0,0.75307146600361097,0.65793872593971259,0.13423326581765554,0.9909497617679347,-0.55089698145210242,0.83457325372130275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99997727539874437,0.0067415640695428205,0.99990910262779253,0.013482821740375002,0.99979548478554248,0.020223466627711479,0.99963642703583455,0.026963192374617719,0.99943193660771668,0.033701692665933369,0.9991820227951157,0.040438661242194078,0.99888669695641508,0.047173791913550707,0.99854597251393873,0.053906778573685428,0.99815986495334075,0.060637315213724029,0.99772839182290196,0.067365095936143746,0.99725157273273191,0.07408981496867606,0.99672942935387809,0.080811166678203844,0.99616198541734069,0.087528845584652099,0.99554926671299404,0.094242546374871825,0.99489130108841461,0.10095196391651616,0.99418811844761534,0.10765679327190854,0.99343975074968638,0.11435672971190181,0.99264623200734292,0.12105146872972786,0.99180759828537901,0.12774070605483734,0.99092388769902828,0.13442413766672839,0.98999514041223236,0.14110145980876423,0.98902139863581473,0.1477723690019786,0.98800270662556244,0.15443656205886866,0.98693911068021511,0.16109373609717451,0.98583065913936019,0.16774358855364521,0.98467740238123624,0.17438581719778976,0.98347939282044328,0.18102012014561342,0.98223668490556026,0.18764619587333795,0.98094933511667104,0.19426374323110576,0.9796174019627969,0.20087246145666687,0.97824094597923728,0.2074720501890483,0.97682002972481907,0.21406220948220528,0.97535471777905292,0.22064263981865351,0.97384507673919807,0.22721304212308197,0.97229117521723596,0.23377311777594578,0.97069308383675146,0.24032256862703813,0.96905087522972333,0.24686109700904091,0.96736462403322332,0.25338840575105354,0.96563440688602331,0.25990419819209931,0.96386030242511289,0.26640817819460783,0.96204239128212499,0.27290005015787488,0.96018075607967135,0.27937951903149705,0.95827548142758723,0.28584629032878123,0.95632665391908611,0.29230007014012921,0.95433436212682421,0.29874056514639524,0.95229869659887445,0.30516748263221771,0.95021974985461177,0.31158053049932216,0.94809761638050782,0.31797941727979734,0.9459323926258365,0.32436385214934221,0.94372417699829081,0.3307335449404834,0.94147306985950996,0.33708820615576329,0.93917917352051816,0.34342754698089745,0.93684259223707456,0.34975127929790101,0.93446343220493533,0.3560591156981831,0.93204180155502647,0.36235076949560985,0.92957781034852982,0.3686259547395338,0.92707157057188061,0.37488438622778975,0.92452319613167799,0.38112577951965781,0.92193280284950807,0.38734985094879021,0.91930050845667977,0.3935563176361041,0.91662643258887389,0.3997448975026382,0.91391069678070602,0.40591530928237279,0.91115342446020298,0.41206727253501352,0.90835474094319291,0.41820050765873645,0.90551477342760966,0.42431473590289648,0.90263365098771187,0.43040967938069602,0.89971150456821691,0.43648506108181451,0.8967484669783492,0.4425406048849988,0.89374467288580406,0.44857603557061221,0.89070025881062753,0.45459107883314331,0.88761536311901157,0.46058546129367267,0.88449012601700505,0.46655891051229792,0.88132468954414211,0.47251115500051594,0.87811919756698575,0.47844192423356147,0.87487379577259028,0.48435094866270267,0.87158863166187894,0.49023795972749151,0.86826385454294064,0.49610268986797007,0.86489961552424399,0.50194487253683051,0.86149606750776953,0.50776424221152938,0.85805336518206021,0.51356053440635607,0.85457166501519133,0.5193334856844527,0.85105112524765869,0.5250828336697877,0.84749190588518741,0.53080831705907994,0.84389416869145883,0.53650967563367546,0.84025807718075918,0.54218665027137403,0.83658379661054816,0.54783898295820543,0.83287149397394744,0.55346641680015685,0.82912133799215115,0.55906869603484788,0.82533349910675802,0.56464556604315508,0.82150814947202477,0.57019677336078423,0.81764546294704132,0.57572206568978956,0.81374561508783017,0.58122119191004118,0.80980878313936622,0.58669390209063788,0.80583514602752193,0.59213994750126631,0.80182488435093524,0.59755908062350571,0.79777818037280102,0.60295105516207737,0.79369521801258802,0.60831562605603873,0.78957618283767927,0.61365254948992076,0.78542126205493878,0.61896158290480929,0.78123064450220259,0.62424248500936974,0.77700452063969627,0.62949501579081302,0.77274308254137924,0.63471893652580358,0.76844652388621471,0.63991400979131041,0.76411503994936691,0.6450799994753964,0.75974882759332663,0.65021667078795031,0.75534808525896324,0.65532379027135734,0.75091301295650659,0.66040112581110988,0.74644381225645573,0.66544844664635672,0.74194068628041832,0.67046552338039123,0.73740383969187884,0.67545212799107679,0.73283347868689652,0.68040803384121051,0.72822981098473438,0.6853330156888241,0.7235930458184181,0.69022684969741988,0.71892339392522675,0.69508931344614511,0.71422106753711467,0.69992018593990002,0.70948628037106642,0.70471924761938254,0,0.99990910262779253,0.013482821740375002,0.99963642703583455,0.026963192374617719,0.9991820227951157,0.040438661242194078,0.99854597251393873,0.053906778573685428,0.99772839182290196,0.067365095936143746,0.99672942935387809,0.080811166678203844,0.99554926671299404,0.094242546374871825,0.99418811844761534,0.10765679327190854,0.99264623200734292,0.12105146872972786,0.99092388769902828,0.13442413766672839,0.98902139863581473,0.1477723690019786,0.98693911068021511,0.16109373609717451,0.98467740238123624,0.17438581719778976,0.98223668490556026,0.18764619587333795,0.9796174019627969,0.20087246145666687,0.97682002972481907,0.21406220948220528,0.97384507673919807,0.22721304212308197,0.97069308383675146,0.24032256862703813,0.96736462403322332,0.25338840575105354,0.96386030242511289,0.26640817819460783,0.96018075607967135,0.27937951903149705,0.95632665391908611,0.29230007014012921,0.95229869659887445,0.30516748263221771,0.94809761638050782,0.31797941727979734,0.94372417699829081,0.3307335449404834,0.93917917352051816,0.34342754698089745,0.93446343220493533,0.3560591156981831,0.92957781034852982,0.3686259547395338,0.92452319613167799,0.38112577951965781,0.91930050845667977,0.3935563176361041,0.91391069678070602,0.40591530928237279,0.90835474094319291,0.41820050765873645,0.90263365098771187,0.43040967938069602,0.8967484669783492,0.4425406048849988,0.89070025881062753,0.45459107883314331,0.88449012601700505,0.46655891051229792,0.87811919756698575,0.47844192423356147,0.87158863166187894,0.49023795972749151,0.86489961552424399,0.50194487253683051,0.85805336518206021,0.51356053440635607,0.85105112524765869,0.5250828336697877,0.84389416869145883,0.53650967563367546,0.83658379661054816,0.54783898295820543,0.82912133799215115,0.55906869603484788,0.82150814947202477,0.57019677336078423,0.81374561508783017,0.58122119191004118,0.80583514602752193,0.59213994750126631,0.79777818037280102,0.60295105516207737,0.78957618283767927,0.61365254948992076,0.78123064450220259,0.62424248500936974,0.77274308254137924,0.63471893652580358,0.76411503994936691,0.6450799994753964,0.75534808525896324,0.65532379027135734,0.74644381225645573,0.66544844664635672,0.73740383969187884,0.67545212799107679,0.72822981098473438,0.6853330156888241,0.71892339392522675,0.69508931344614511,0.70948628037106642,0.70471924761938254,0.69992018593990002,0.71422106753711478,0.69022684969741988,0.7235930458184181,0.68040803384121062,0.73283347868689652,0.67046552338039123,0.74194068628041832,0.66040112581110977,0.7509130129565067,0.6502166707879502,0.75974882759332663,0.63991400979131041,0.76844652388621471,0.62949501579081291,0.77700452063969627,0.61896158290480929,0.78542126205493878,0.60831562605603873,0.79369521801258802,0.59755908062350571,0.80182488435093513,0.58669390209063776,0.80980878313936622,0.57572206568978956,0.81764546294704143,0.56464556604315519,0.82533349910675802,0.55346641680015674,0.83287149397394744,0.54218665027137403,0.84025807718075929,0.53080831705907994,0.8474919058851873,0.51933348568445281,0.85457166501519122,0.50776424221152949,0.86149606750776941,0.49610268986797001,0.86826385454294064,0.48435094866270262,0.87487379577259028,0.47251115500051588,0.88132468954414211,0.46058546129367267,0.88761536311901157,0.44857603557061226,0.89374467288580406,0.43648506108181456,0.89971150456821691,0.42431473590289659,0.90551477342760955,0.41206727253501341,0.91115342446020309,0.39974489750263814,0.91662643258887389,0.38734985094879015,0.92193280284950818,0.3748843862277898,0.92707157057188061,0.36235076949560996,0.93204180155502647,0.34975127929790106,0.93684259223707456,0.33708820615576318,0.94147306985950996,0.3243638521493421,0.9459323926258365,0.31158053049932211,0.95021974985461177,0.2987405651463953,0.95433436212682421,0.28584629032878128,0.95827548142758723,0.27290005015787494,0.96204239128212499,0.25990419819209937,0.96563440688602331,0.2468610970090408,0.96905087522972344,0.23377311777594573,0.97229117521723596,0.22064263981865345,0.97535471777905292,0.2074720501890483,0.97824094597923728,0.19426374323110579,0.98094933511667104,0.18102012014561347,0.98347939282044317,0.1677435885536453,0.98583065913936019,0.15443656205886855,0.98800270662556244,0.14110145980876418,0.98999514041223236,0.12774070605483731,0.99180759828537901,0.11435672971190181,0.99343975074968638,0.10095196391651619,0.99489130108841461,0.087528845584652182,0.99616198541734069,0.074089814968676157,0.99725157273273191,0.060637315213723939,0.99815986495334075,0.047173791913550651,0.99888669695641508,0.033701692665933349,0.99943193660771668,0.020223466627711493,0.99979548478554248,0.0067415640695428648,0.99997727539874437,0,0.99979548478554248,0.020223466627711479,0.9991820227951157,0.040438661242194078,0.99815986495334075,0.060637315213724029,0.99672942935387809,0.080811166678203844,0.99489130108841461,0.10095196391651616,0.99264623200734292,0.12105146872972786,0.98999514041223236,0.14110145980876423,0.98693911068021511,0.16109373609717451,0.98347939282044328,0.18102012014561342,0.9796174019627969,0.20087246145666687,0.97535471777905292,0.22064263981865348,0.97069308383675146,0.24032256862703813,0.96563440688602331,0.25990419819209926,0.96018075607967135,0.27937951903149705,0.95433436212682421,0.29874056514639524,0.94809761638050782,0.31797941727979734,0.94147306985950996,0.33708820615576329,0.93446343220493533,0.3560591156981831,0.92707157057188061,0.37488438622778975,0.91930050845667977,0.3935563176361041,0.91115342446020309,0.41206727253501346,0.90263365098771187,0.43040967938069596,0.89374467288580406,0.44857603557061221,0.88449012601700505,0.46655891051229792,0.87487379577259028,0.48435094866270267,0.86489961552424399,0.5019448725368304,0.85457166501519133,0.5193334856844527,0.84389416869145883,0.53650967563367546,0.83287149397394744,0.55346641680015685,0.82150814947202477,0.57019677336078423,0.80980878313936622,0.58669390209063788,0.79777818037280102,0.60295105516207737,0.7854212620549389,0.61896158290480918,0.77274308254137924,0.63471893652580358,0.75974882759332663,0.6502166707879502,0.74644381225645573,0.66544844664635672,0.73283347868689652,0.68040803384121051,0.71892339392522675,0.69508931344614511,0.70471924761938254,0.70948628037106631,0.69022684969741988,0.7235930458184181,0.67545212799107679,0.73740383969187873,0.66040112581110988,0.75091301295650659,0.6450799994753964,0.76411503994936691,0.62949501579081302,0.77700452063969616,0.61365254948992065,0.78957618283767939,0.59755908062350571,0.80182488435093513,0.58122119191004118,0.81374561508783017,0.56464556604315519,0.82533349910675802,0.54783898295820554,0.83658379661054816,0.53080831705907994,0.8474919058851873,0.51356053440635618,0.85805336518206021,0.49610268986797018,0.86826385454294053,0.47844192423356147,0.87811919756698575,0.46058546129367267,0.88761536311901157,0.44254060488499886,0.89674846697834909,0.42431473590289659,0.90551477342760955,0.40591530928237296,0.91391069678070602,0.38734985094879015,0.92193280284950818,0.3686259547395338,0.92957781034852982,0.34975127929790106,0.93684259223707456,0.33073354494048351,0.9437241769982907,0.31158053049932211,0.95021974985461177,0.29230007014012921,0.95632665391908611,0.27290005015787494,0.96204239128212499,0.2533884057510537,0.96736462403322321,0.23377311777594595,0.97229117521723585,0.21406220948220525,0.97682002972481907,0.19426374323110579,0.98094933511667104,0.17438581719778984,0.98467740238123624,0.15443656205886877,0.98800270662556244,0.13442413766672837,0.99092388769902828,0.11435672971190181,0.99343975074968638,0.094242546374871866,0.99554926671299404,0.074089814968676157,0.99725157273273191,0.053906778573685581,0.99854597251393873,0.033701692665933349,0.99943193660771668,0.013482821740375029,0.99990910262779253,-0.0067415640695427425,0.99997727539874437,-0.026963192374617591,0.99963642703583455,-0.047173791913550749,0.99888669695641508,-0.067365095936143732,0.99772839182290196,-0.087528845584652057,0.99616198541734069,-0.10765679327190844,0.99418811844761534,-0.1277407060548372,0.99180759828537901,-0.14777236900197863,0.98902139863581473,-0.16774358855364518,0.98583065913936019,-0.18764619587333786,0.98223668490556026,-0.20747205018904818,0.97824094597923728,-0.2272130421230818,0.97384507673919807,-0.24686109700904091,0.96905087522972333,-0.26640817819460771,0.96386030242511289,-0.28584629032878112,0.95827548142758723,-0.30516748263221755,0.95229869659887445,-0.32436385214934221,0.9459323926258365,-0.34342754698089745,0.93917917352051816,-0.36235076949560979,0.93204180155502647,-0.3811257795196577,0.9245231961316781,-0.39974489750263803,0.91662643258887389,-0.41820050765873623,0.90835474094319302,-0.43648506108181445,0.89971150456821691,-0.45459107883314337,0.89070025881062753,-0.47251115500051577,0.88132468954414211,-0.49023795972749157,0.87158863166187883,-0.50776424221152916,0.86149606750776964,-0.52508283366978759,0.8510511252476588,-0.54218665027137414,0.84025807718075918,-0.55906869603484777,0.82912133799215126,-0.57572206568978956,0.81764546294704143,-0.59213994750126608,0.80583514602752215,-0.60831562605603873,0.79369521801258813,-0.62424248500936985,0.78123064450220248,-0.6399140097913103,0.76844652388621482,-0.65532379027135734,0.75534808525896335,-0.670465523380391,0.74194068628041854,-0.68533301568882399,0.72822981098473449,-0.69992018593990013,0.71422106753711467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.999429490929718,0.03377414188346816,0.99771861468007073,0.067509746858365305,0.99486932339189516,0.10116832198743217,0.99088486815823884,0.13471146222586097,0.9857697953148038,0.16810089424214819,0.97952994125249448,0.20129852008866006,0.97217242575799068,0.23426646067208212,0.96370564388994084,0.26696709897415166,0.95413925640004882,0.29936312297335793,0.94348417870998025,0.33141756821863577,0.93175256845666843,0.36309386000647453,0.9189578116202306,0.39435585511331855,0.90511450725032117,0.42516788303564068,0.89023845080835162,0.45549478669063398,0.87434661614458209,0.48530196253108104,0.857457136130651,0.51455540002862876,0.83958928196963889,0.54322172048041872,0.82076344120727629,0.57126821509479231,0.80100109446938461,0.598662882312615,0.78032479095209184,0.6253744643216369,0.75875812269279097,0.65137248272222226,0.73632569765119738,0.67662727330375727,0.71305311163122032,0.70111001989205268,0.68896691907568663,0.72479278722911999,0.66409460276723908,0.74764855284780896,0.63846454246998352,0.76965123790493228,0.61210598254766291,0.79077573693769854,0.58504899859530768,0.81099794650950119,0.55732446312243644,0.83029479271237638,0.52896401032696239,0.84864425749475092,0.50000000000000011,0.8660254037844386,0.47046548060275561,0.88241839937821909,0.44039415155763428,0.89780453957074169,0.40982032479658764,0.91216626849693327,0.3787788856105761,0.92548719916355959,0.34730525284482028,0.93775213214708042,0.31543533848525562,0.94894707293646896,0.28320550668230415,0.95905924790120212,0.25065253225872053,0.96807711886620429,0.2178135587488515,0.97599039627711537,0.18472605601718942,0.98279005094085792,0.1514277775045767,0.98846832432811138,0.11795671715084598,0.99301873742593361,0.084351066043044987,0.99643609813043299,0.050649168838712767,0.99871650717105276,0.016889480013931084,0.99985736255970981,0,0.99771861468007073,0.067509746858365305,0.99088486815823884,0.13471146222586097,0.97952994125249448,0.20129852008866006,0.96370564388994084,0.26696709897415166,0.94348417870998025,0.33141756821863577,0.9189578116202306,0.39435585511331855,0.89023845080835162,0.45549478669063398,0.857457136130651,0.51455540002862876,0.82076344120727629,0.57126821509479231,0.78032479095209184,0.6253744643216369,0.73632569765119738,0.67662727330375727,0.68896691907568663,0.72479278722911999,0.63846454246998352,0.76965123790493228,0.58504899859530768,0.81099794650950119,0.52896401032696239,0.84864425749475092,0,0.99088486815823884,0.13471146222586097,0.96370564388994084,0.26696709897415166,0.9189578116202306,0.39435585511331855,0.857457136130651,0.51455540002862876,0.78032479095209184,0.6253744643216369,0.68896691907568663,0.72479278722911999,0.58504899859530768,0.81099794650950119,0.47046548060275561,0.88241839937821909,0.34730525284482028,0.93775213214708042,0.2178135587488515,0.97599039627711537,0.084351066043044987,0.99643609813043299,-0.050649168838712642,0.99871650717105276,-0.18472605601718931,0.98279005094085803,-0.31543533848525529,0.94894707293646907,-0.44039415155763439,0.89780453957074158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99983886792905818,0.017950993798097236,0.99935552364332136,0.035896202634582174,0.99855012290732093,0.053829843412128195,0.99742292527283405,0.071746136761379281,0.99597429399523907,0.089639308903433496,0.99420469591645155,0.10750359351052489,0.99211470131447788,0.12533323356430423,0.98970498371963489,0.14312248321111948,0.98697631969749566,0.16086560961369842,0.98392958859862967,0.17855689479863665,0.98056577227522002,0.19619063749909516,0.97688595476464768,0.21376115499211443,0.97289132194014494,0.23126278492995214,0.96858316112863119,0.24868988716485474,0.96396286069585324,0.26603684556667512,0.95903190959896567,0.28329806983274941,0.95379189690669208,0.30046799728945184,0.94824451128722631,0.31754109468484432,0.94239154046403484,0.33451185997184535,0.9362348706397372,0.35137482408134268,0.92977648588825146,0.36812455268467792,0.92301846751539729,0.38475564794493594,0.91596299338816656,0.40126275025647418,0.90861233723287449,0.41764053997213108,0.90096886790241915,0.43388373911755806,0.89303504861288541,0.44998711309212114,0.88481343614973851,0.46594547235582484,0.87630668004386358,0.48175367410171521,0.86751752171771757,0.49740662391322193,0.8584487936018661,0.51289927740590613,0.8491034182221936,0.52822664185308432,0.83948440725807727,0.54338377779480562,0.82959486057183118,0.55836580062966246,0.81943796520973189,0.57316788218892212,0.80901699437494745,0.58778525229247314,0.79833530637270156,0.60221320028608205,0.78739634352801202,0.61644707655946995,0.77620363107635304,0.63048229404471368,0.7647607760275984,0.6443143296944942,0.75307146600361097,0.65793872593971259,0.74113946804985487,0.67135109212600397,0.72896862742141155,0.68454710592868862,0.71656286634379229,0.69752251474570226,0.70392618274894503,0.71027313706805695,0.69106264898686476,0.72279486382739144,0.67797641051322088,0.73508365972017675,0.66467168455342573,0.74713556450814955,0.65115275874357359,0.75894669429455552,0.63742398974868975,0.77051324277578914,0.62348980185873359,0.78183148246802969,0.60935468556280825,0.79289776590847516,0.59502319610203724,0.80370852683078864,0.58049995200157356,0.81426028131437855,0.56578963358221457,0.82454962890714067,0.55089698145210264,0.83457325372130253,0.53582679497899677,0.84432792550201496,0.52058393074360865,0.85381050066834718,0.50517330097450119,0.86301792332635019,0.4895998719650525,0.87194722625386234,0.47386866247299869,0.880595531856738,0.45798474210306767,0.88896005309619319,0.44195322967322681,0.89703809438696858,0.42577929156507283,0.90482705246601947,0.40946814005889065,0.9123244172314543,0.39302503165392366,0.91952777255145057,0.37645526537439217,0.92643479704288745,0.35976418106180702,0.93304326481944411,0.34295715765413171,0.9393510462089234,0.32603961145234195,0.94535610843956885,0.30901699437494745,0.95105651629515353,0.29189479220103348,0.95645043273863151,0.2746785228023903,0.96153611950414886,0.25737373436530259,0.9663119376572239,0.23998600360256606,0.97077634812291813,0.22252093395631445,0.97492791218182362,0.20498415379223051,0.97876529193371131,0.18738131458572474,0.98228725072868861,0.16971808910066918,0.98549265356572668,0.15200016956126727,0.98838046745843067,0.13423326581765554,0.9909497617679347,0.11642310350582305,0.99319970850281281,0.098575422202443613,0.99512958258591122,0.080695973575217517,0.9967387620880146,0.062790519529313527,0.99802672842827156,0.044864830350515209,0.99899306654131459,0.026924682845663007,0.99963746501102113,0.0089758584809980588,0.99995971617087109,0,0.99935552364332136,0.035896202634582174,0.99742292527283405,0.071746136761379281,0.99420469591645155,0.10750359351052489,0.98970498371963489,0.14312248321111948,0.98392958859862967,0.17855689479863665,0.97688595476464768,0.21376115499211443,0.96858316112863119,0.24868988716485474,0.95903190959896567,0.28329806983274941,0.94824451128722631,0.31754109468484432,0.9362348706397372,0.35137482408134268,0.92301846751539729,0.38475564794493594,0.90861233723287449,0.41764053997213108,0.89303504861288541,0.44998711309212114,0.87630668004386358,0.48175367410171521,0.8584487936018661,0.51289927740590613,0.83948440725807727,0.54338377779480562,0.81943796520973189,0.57316788218892212,0,0.99742292527283405,0.071746136761379281,0.98970498371963489,0.14312248321111948,0.97688595476464768,0.21376115499211443,0.95903190959896567,0.28329806983274941,0.9362348706397372,0.35137482408134268,0.90861233723287449,0.41764053997213108,0.87630668004386358,0.48175367410171521,0.83948440725807727,0.54338377779480562,0.79833530637270156,0.60221320028608205,0.75307146600361097,0.65793872593971259,0.70392618274894503,0.71027313706805695,0.65115275874357359,0.75894669429455552,0.59502319610203724,0.80370852683078864,0.53582679497899677,0.84432792550201496,0.47386866247299869,0.880595531856738,0.40946814005889065,0.9123244172314543,0.34295715765413171,0.9393510462089234,0,0.99420469591645155,0.10750359351052489,0.97688595476464768,0.21376115499211443,0.94824451128722631,0.31754109468484432,0.90861233723287449,0.41764053997213108,0.8584487936018661,0.51289927740590613,0.79833530637270156,0.60221320028608205,0.72896862742141155,0.68454710592868862,0.65115275874357359,0.75894669429455552,0.56578963358221457,0.82454962890714067,0.47386866247299869,0.880595531856738,0.37645526537439217,0.92643479704288745,0.2746785228023903,0.96153611950414886,0.16971808910066918,0.98549265356572668,0.062790519529313527,0.99802672842827156,-0.04486483035051464,0.9989930665413147,-0.15200016956126694,0.98838046745843078,-0.25737373436530225,0.96631193765722401,0,0.98970498371963489,0.14312248321111948,0.95903190959896567,0.28329806983274941,0.90861233723287449,0.41764053997213108,0.83948440725807727,0.54338377779480562,0.75307146600361097,0.65793872593971259,0.65115275874357359,0.75894669429455552,0.53582679497899677,0.84432792550201496,0.40946814005889065,0.9123244172314543,0.2746785228023903,0.96153611950414886,0.13423326581765554,0.9909497617679347,-0.0089758584809977136,0.99995971617087109,-0.15200016956126694,0.98838046745843078,-0.29189479220103315,0.95645043273863162,-0.42577929156507233,0.90482705246601969,-0.55089698145210242,0.83457325372130275,-0.66467168455342551,0.74713556450814977,-0.76476077602759807,0.64431432969449465,0,0.98392958859862967,0.17855689479863665,0.9362348706397372,0.35137482408134268,0.8584487936018661,0.51289927740590613,0,0.9362348706397372,0.35137482408134268,0.75307146600361097,0.65793872593971259,0.47386866247299869,0.880595531856738,0,0.8584487936018661,0.51289927740590613,0.47386866247299869,0.880595531856738,-0.044864830350514862,0.9989930665413147,0,0.75307146600361097,0.65793872593971259,0.13423326581765554,0.9909497617679347,-0.55089698145210242,0.83457325372130275,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/medium.json b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/medium.json index c17b5e118a8e..f87f8df28cfd 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/medium.json +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/medium.json @@ -1 +1 @@ -{"lengths":[73,48,120,120,124,71,106,28,78,116],"offsets":[0,73,121,241,361,485,556,662,690,768],"cosines":[0.99976850197989087,0.99907411510222999,0.99791716086539217,0.99629817493460782,0.99421790689395195,0.99167731989928998,0.98867759023234036,0.98522010675606064,0.98130647027160933,0.9769384927771817,0.97211819662906129,0.9668478136052775,0.96112978387230075,0.95496675485525517,0.94836158001217152,0.94131731751284708,0.93383722882292519,0.9259247771938498,0.9175836260593937,0.90881763733950294,0.89963086965224337,0.89002757643467667,0.88001220397353563,0.86958938934661101,0.85876395827580299,0.84754092289283112,0.83592547941863693,0.82392300575755417,0.81153905900736101,0.79877937288636491,0.78564985507871432,0.77215658449916424,0.75830580847856255,0.7441039398713607,0.72955755408648759,0.71467338604296093,0.69945832705164712,0.68391942162461061,0.66806386421353348,0.65189899587871258,0.63543230089017755,0.61867140326250347,0.60162406322492257,0.58429817362836844,0.56670175629111763,0.5488429582847193,0.53073004816193325,0.51237141212842352,0.49377555015997721,0.47495107206705023,0.45590669350845875,0.43665123195606387,0.41719360261231681,0.39754281428255589,0.37770796520396482,0.35769823883312546,0.3375228995941133,0.317191288589106,0.29671281927349025,0.27609697309746883,0.25535329511618704,0.23449138957040977,0.21352091543979607,0.19245158197082998,0.17129314418147762,0.1500553983446527,0.12874817745258083,0.10738134666416309,0.085964798737446516,0.064508449449316357,0.043022233004530529,0.021516097436222254,6.123233995736766e-17,0.99946458747636568,0.99785892323860348,0.99518472667219693,0.99144486137381038,0.98664333208487898,0.98078528040323043,0.97387697927733363,0.96592582628906831,0.95694033573220882,0.94693012949510569,0.93590592675732576,0.92387953251128674,0.91086382492117579,0.89687274153268837,0.88192126434835505,0.86602540378443871,0.849202181526579,0.83146961230254524,0.81284668459161524,0.79335334029123528,0.77301045336273699,0.7518398074789775,0.72986407269783571,0.70710678118654757,0.68359230202287136,0.65934581510006895,0.6343932841636456,0.60876142900872066,0.58247769686780226,0.5555702330196024,0.5280678506503681,0.50000000000000011,0.47139673682599781,0.44228869021900147,0.41270702980439494,0.38268343236508984,0.3522500479212336,0.3214394653031617,0.2902846772544625,0.25881904510252096,0.22707626303437345,0.19509032201612833,0.16289547339458882,0.13052619222005171,0.09801714032956077,0.06540312923014327,0.032719082821776387,6.123233995736766e-17,0.999914327574007,0.99965732497555726,0.9992290362407229,0.99862953475457383,0.99785892323860348,0.99691733373312796,0.99580492757466177,0.99452189536827329,0.99306845695492629,0.99144486137381038,0.98965138681967024,0.98768834059513777,0.98555605905807775,0.98325490756395462,0.98078528040323043,0.97814760073380569,0.97534232050851266,0.97236992039767656,0.96923090970675441,0.96592582628906831,0.96245523645364728,0.95881973486819305,0.95501994445718663,0.95105651629515353,0.94693012949510569,0.94264149109217843,0.93819133592248416,0.93358042649720174,0.92880955287192424,0.92387953251128674,0.91879121014889831,0.91354545764260087,0.90814317382508125,0.90258528434986063,0.89687274153268837,0.8910065241883679,0.88498763746304188,0.87881711266196538,0.87249600707279718,0.86602540378443871,0.85940641150145269,0.85264016435409229,0.84572782170397331,0.83867056794542405,0.83146961230254524,0.8241261886220157,0.81664155516167891,0.80901699437494745,0.80125381269106066,0.79335334029123528,0.78531693088074495,0.7771459614569709,0.76884183207345957,0.76040596560003093,0.7518398074789775,0.74314482547739436,0.73432250943568556,0.72537437101228774,0.71630194342465436,0.70710678118654757,0.6977904598416802,0.68835457569375402,0.67880074553294178,0.66913060635885824,0.65934581510006895,0.64944804833018366,0.63943900198058479,0.6293203910498375,0.61909394930983397,0.60876142900872066,0.59832460057065917,0.58778525229247314,0.57714519003723375,0.56640623692483294,0.55557023301960229,0.54463903501502708,0.5336145159156116,0.52249856471594891,0.51129308607705226,0.50000000000000011,0.48862124149695496,0.47715876025960857,0.46561452032511152,0.45399049973954686,0.44228869021900147,0.43051109680829525,0.41865973753742813,0.40673664307580037,0.39474385638426734,0.38268343236508984,0.37055743750983638,0.35836794954530038,0.34611705707749302,0.33380685923377112,0.3214394653031617,0.30901699437494745,0.29654157497557115,0.28401534470392276,0.27144044986507432,0.25881904510252096,0.24615329302899316,0.23344536385590547,0.2206974350215013,0.20791169081775945,0.19509032201612833,0.18223552549214767,0.16934950384902475,0.15643446504023092,0.14349262199117951,0.13052619222005171,0.1175373974578377,0.10452846326765368,0.09150161866340252,0.078459095727844999,0.06540312923014327,0.052335956242943966,0.039259815759068666,0.026176948307873361,0.013089595571344575,6.123233995736766e-17,0.999914327574007,0.99965732497555726,0.9992290362407229,0.99862953475457383,0.99785892323860348,0.99691733373312796,0.99580492757466177,0.99452189536827329,0.99306845695492629,0.99144486137381038,0.98965138681967024,0.98768834059513777,0.98555605905807775,0.98325490756395462,0.98078528040323043,0.97814760073380569,0.97534232050851266,0.97236992039767656,0.96923090970675441,0.96592582628906831,0.96245523645364728,0.95881973486819305,0.95501994445718663,0.95105651629515353,0.94693012949510569,0.94264149109217843,0.93819133592248416,0.93358042649720174,0.92880955287192424,0.92387953251128674,0.91879121014889831,0.91354545764260087,0.90814317382508125,0.90258528434986063,0.89687274153268837,0.8910065241883679,0.88498763746304188,0.87881711266196538,0.87249600707279718,0.86602540378443871,0.85940641150145269,0.85264016435409229,0.84572782170397331,0.83867056794542405,0.83146961230254524,0.8241261886220157,0.81664155516167891,0.80901699437494745,0.80125381269106066,0.79335334029123528,0.78531693088074495,0.7771459614569709,0.76884183207345957,0.76040596560003093,0.7518398074789775,0.74314482547739436,0.73432250943568556,0.72537437101228774,0.71630194342465436,0.70710678118654757,0.6977904598416802,0.68835457569375402,0.67880074553294178,0.66913060635885824,0.65934581510006895,0.64944804833018366,0.63943900198058479,0.6293203910498375,0.61909394930983397,0.60876142900872066,0.59832460057065917,0.58778525229247314,0.57714519003723375,0.56640623692483294,0.55557023301960229,0.54463903501502708,0.5336145159156116,0.52249856471594891,0.51129308607705226,0.50000000000000011,0.48862124149695496,0.47715876025960857,0.46561452032511152,0.45399049973954686,0.44228869021900147,0.43051109680829525,0.41865973753742813,0.40673664307580037,0.39474385638426734,0.38268343236508984,0.37055743750983638,0.35836794954530038,0.34611705707749302,0.33380685923377112,0.3214394653031617,0.30901699437494745,0.29654157497557115,0.28401534470392276,0.27144044986507432,0.25881904510252096,0.24615329302899316,0.23344536385590547,0.2206974350215013,0.20791169081775945,0.19509032201612833,0.18223552549214767,0.16934950384902475,0.15643446504023092,0.14349262199117951,0.13052619222005171,0.1175373974578377,0.10452846326765368,0.09150161866340252,0.078459095727844999,0.06540312923014327,0.052335956242943966,0.039259815759068666,0.026176948307873361,0.013089595571344575,6.123233995736766e-17,0.99991976560532858,0.99967907529643052,0.99927796769658828,0.99871650717105276,0.99799478381671491,0.99711291344764741,0.99607103757652093,0.99486932339189516,0.99350796373139028,0.99198717705074302,0.99030720738875078,0.98846832432811138,0.98647082295216337,0.98431502379753411,0.98200127280270422,0.97952994125249448,0.97690142571848693,0.97411614799538704,0.97117455503333905,0.96807711886620429,0.96482433653581456,0.96141673001221251,0.95785484610989136,0.95413925640004882,0.95027055711886732,0.94624936907183688,0.942076337534135,0.93775213214708042,0.9332774468106767,0.92865299957226222,0.92387953251128674,0.9189578116202306,0.91388862668168669,0.90867279114162491,0.90331114197885987,0.89780453957074169,0.89215386755509196,0.88636003268840824,0.88042396470035711,0.87434661614458209,0.86812896224584846,0.86177200074354965,0.855276751731602,0.84864425749475092,0.84187558234131699,0.83497181243240737,0.82793405560762134,0.82076344120727629,0.81346111989118397,0.80602826345400502,0.7984660646372137,0.79077573693769854,0.78295851441303543,0.77501565148345875,0.76694842273056685,0.75875812269279097,0.75044606565766248,0.74201358545091078,0.73346203522242603,0.72479278722911999,0.71600723261472299,0.70710678118654757,0.69809286118925906,0.68896691907568663,0.67973041927471278,0.67038484395627851,0.6609316927935408,0.65137248272222226,0.64170874769718989,0.63194203844630403,0.62207392222157376,0.61210598254766291,0.60203981896778302,0.59187704678701725,0.58161929681311375,0.57126821509479231,0.56082546265760447,0.55029271523739143,0.53967166301138003,0.52896401032696239,0.51817147542820186,0.5072957901801074,0.49633869979072398,0.48530196253108099,0.47418734945304514,0.46299664410512087,0.45173164224624723,0.44039415155763428,0.42898599135268745,0.41750899228506322,0.40596499605490721,0.39435585511331855,0.38268343236508984,0.37094960086976786,0.35915624354108716,0.34730525284482028,0.33539853049509721,0.32343798714923822,0.3114255421011537,0.29936312297335799,0.28725266540764482,0.27509611275447821,0.26289541576114478,0.25065253225872053,0.23836942684789908,0.22604807058373497,0.21369044065935081,0.20129852008866012,0.18887429738815428,0.17641976625780859,0.16393692526115516,0.1514277775045767,0.1388943303158692,0.12633859492212934,0.11376258612701483,0.10116832198743222,0.088557823489700455,0.075933114225246442,0.063296220065881467,0.050649168838712767,0.037993990000739289,0.025332714313188093,0.012667373515640071,6.123233995736766e-17,0.999755276685243,0.9990212265199736,0.99779820878257108,0.99608682207494481,0.99388790402955074,0.99120253089941457,0.98803201703136401,0.98437791422272558,0.98024201096180286,0.97562633155250678,0.97053313512356731,0.96496491452280997,0.95892439509704008,0.95241453335813131,0.94543851553597025,0.93799975601896746,0.93010189568289625,0.92174880010887839,0.91294455769138871,0.90369347763720387,0.89400008785627572,0.88386913274556111,0.87330557086689276,0.86231457252002774,0.85090151721206209,0.83907199102444863,0.82683178387890877,0.8141868867035742,0.80114348850074812,0.78770797331771836,0.77388691712210689,0.75968708458328493,0.74511542576142853,0.73017907270583426,0.71488533596416248,0.69924170100431415,0.68325582455069345,0.6669355308366508,0.65028880777493692,0.63332380304804703,0.61604882012036422,0.59847231417405733,0.58060288797072068,0.56244928764078062,0.54402039840273231,0.52532524021429883,0.50637296335764392,0.48717284396079646,0.46773427945748181,0.44806678398757854,0.42817998374045535,0.4080836122434649,0.38778750559790215,0.3673015976647569,0.34663591520261949,0.3258005729601175,0.30480576872528664,0.28366177833429679,0.26237895064197908,0.24096770245661442,0.21943851344146065,0.19780192098551741,0.17606851504603618,0.15424893296530237,0.13235385426422255,0.11039399541526972,0.08838010459734251,0.066322956435104038,0.044233346725379007,0.022122087153186896,6.123233995736766e-17,0.99989020309951893,0.99956083650879435,0.99901197255468788,0.99824373176432146,0.99725628283861012,0.9960498426152169,0.99462467602093607,0.99298109601351692,0.99111946351294067,0.98904018732216403,0.98674372403734889,0.98423057794759683,0.98150130092421006,0.97855649229950403,0.97539679873519769,0.97202291408041075,0.96843557921929857,0.96463558190835863,0.96062375660344412,0.95640098427652243,0.95196819222221951,0.94732635385419139,0.94247648849136878,0.9374196611341209,0.9321569822303879,0.92668960743183348,0.92101873734007089,0.91514561724301846,0.90907153684144182,0.90279782996574354,0.89632587428306265,0.88965709099474732,0.88279294452426738,0.87573494219563686,0.86848463390241415,0.86104361176735555,0.85341350979279473,0.84559600350182607,0.83759280957036997,0.82940568545020188,0.82103642898302598,0.81248687800568131,0.80375890994656352,0.79485444141335326,0.78577542777214149,0.77652386271804241,0.76710177783739131,0.75751124216162014,0.74775436171291099,0.73783327904172735,0.72775017275632248,0.71750725704433116,0.70710678118654757,0.69655102906299704,0.68584231865141043,0.67498300151821056,0.66397546230212234,0.65282211819052161,0.64152541838863519,0.63008784358171099,0.61851190539027479,0.60680014581859332,0.59495513669646738,0.58297947911447212,0.57087580285277506,0.55864676580365247,0.54629505338783169,0.53382337796479062,0.52123447823713986,0.50853111864922051,0.49571608878004925,0.48279220273074486,0.46976229850656792,0.45662923739371297,0.44339590333098849,0.43006520227652051,0.41664006156962302,0.40312342928797218,0.38951827360022723,0.37582758211423822,0.36205436122098611,0.3482016354343988,0.33427244672718515,0.32026985386283752,0.3061969317239468,0.29205677063697588,0.2778524756936438,0.26358716606906762,0.24926397433680947,0.23488604578098377,0.22045653770557183,0.20597861874109838,0.19145546814881864,0.17689027512257288,0.16228623808845993,0.14764656400248127,0.1329744676463141,0.11827317092136577,0.10354590214126295,0.088795895322934901,0.074026389476442814,0.059240627893714301,0.044441857436335226,0.029633327822559667,0.014818290913692614,6.123233995736766e-17,0.9984268150178166,0.9937122098932426,0.98587101851823589,0.97492791218182362,0.9609173219450996,0.94388333030836757,0.92387953251128674,0.90096886790241915,0.87522342190875368,0.84672419922828424,0.81556086895926017,0.7818314824680298,0.74564216488316559,0.70710678118654757,0.66634657795200392,0.62348980185873359,0.57867129617980573,0.53203207651533657,0.4837188871052398,0.43388373911755818,0.38268343236508984,0.33027906195516715,0.27683551142484941,0.22252093395631445,0.16750622330473647,0.11196447610330791,0.056070447237191845,6.123233995736766e-17,0.99979722898485013,0.99918899817156959,0.9981755542233175,0.99675730813421004,0.99493483506264557,0.99270887409805397,0.99008032796116408,0.98705026263791285,0.98361990694714363,0.97979065204226767,0.97556405084709386,0.97094181742605201,0.96592582628906831,0.96051811163137235,0.9547208665085456,0.94853644194714548,0.94196734599126486,0.93501624268541483,0.92768595099414286,0.91997944365882423,0.91189984599209006,0.90345043461038232,0.89463463610514737,0.88545602565320991,0.87591832556688787,0.86602540378443871,0.85578127230144752,0.84519008554379482,0.8342561386828613,0.82298386589365646,0.81137783855657308,0.79944276340350118,0.78718348060905019,0.77460496182765459,0.76171230817735924,0.74851074817110119,0.73500563559632859,0.72120244734381456,0.70710678118654757,0.69272435350959949,0.67806099699189093,0.6631226582407953,0.64791539538053877,0.63244537559537728,0.61671887262854308,0.60074226423797905,0.58452202960988886,0.56806474673115581,0.55137708972169175,0.53446582612780125,0.51733781417765679,0.50000000000000011,0.48245941480719334,0.46472317204376862,0.44679846450162591,0.42869256140305423,0.41041280545275693,0.39196660986007509,0.37336145533262105,0.35460488704253579,0.33570451156660486,0.31666799380147265,0.29750305385520298,0.27821746391645275,0.25881904510252096,0.23931566428755782,0.21971523091221723,0.20002569377604446,0.18025503781390587,0.16041128085776046,0.14050247038509278,0.12053668025532323,0.10052200743551712,0.080466568716726014,0.060378497422286286,0.040265940109415241,0.020137053265440522,6.123233995736766e-17,0.99990831735296715,0.99963328622328396,0.99917495704211445,0.99853341385112382,0.99770877428706795,0.9967011895602228,0.99551084442665816,0.9941379571543596,0.9925827794832055,0.99084559657880678,0.98892672698021755,0.98682652254152614,0.98454536836733697,0.98208368274215596,0.97944191705369177,0.97662055571008666,0.97362011605109311,0.97044114825321137,0.96708423522880671,0.96354999251922291,0.95983906818191378,0.95595214267161166,0.95188992871555567,0.94765317118280246,0.94324264694764293,0.9386591647471505,0.93390356503288663,0.92897671981679142,0.92387953251128674,0.91861293776362174,0.91317790128449117,0.90757541967095701,0.90180652022370811,0.89587226075868798,0.88977372941312838,0.88351204444602294,0.87708835403307694,0.8705038360561721,0.86375969788738327,0.85685717616758927,0.8497975365797148,0.84258207361664905,0.8352121103438801,0.82768899815689057,0.82001411653335898,0.81218887278021112,0.80421470177556897,0.79609306570564375,0.78782545379662161,0.77941338204159161,0.77085839292256464,0.76216205512763646,0.753325963263344,0.74435173756227035,0.73524102358595012,0.72599549192313084,0.71661683788344466,0.70710678118654757,0.69746706564678218,0.68769945885342332,0.67780575184656278,0.66778775878869556,0.65764731663206444,0.64738628478182758,0.63700654475510754,0.62650999983598665,0.61589857472651066,0.60517421519376513,0.59433888771308974,0.58339457910749393,0.57234329618334379,0.56118706536238228,0.54992793231015491,0.53856796156090425,0.52710923613900784,0.51555385717702173,0.50390394353040768,0.49216163138900726,0.48032907388533946,0.46840844069979015,0.45640191766276905,0.44431170635390349,0.43214002369834564,0.4198891015602646,0.40756118633360089,0.39515853853015553,0.38268343236508984,0.37013815533991434,0.35752500782303998,0.3448463026279705,0.33210436458921194,0.31930153013597995,0.30644014686377891,0.29352257310393481,0.28055117749115838,0.26752833852922075,0.25445644415481805,0.2413378912997057,0.22817508545118598,0.21497044021102399,0.2017263768528775,0.1884453238783183,0.17512971657153087,0.16178199655276462,0.14840461133062616,0.13500001385329011,0.12157066205871496,0.10811901842394187,0.094647549513561136,0.081158725527431252,0.067655019847729023,0.05413890858541761,0.040612870126212806,0.027079384676134455,0.013540933806721845,6.123233995736766e-17],"twiddles":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99144486137381038,0.13052619222005157,0.96592582628906831,0.25881904510252074,0.92387953251128674,0.38268343236508978,0.86602540378443871,0.49999999999999994,0.79335334029123528,0.60876142900872054,0,0,0.96592582628906831,0.25881904510252074,0.86602540378443871,0.49999999999999994,0.70710678118654757,0.70710678118654746,0.50000000000000011,0.8660254037844386,0.25881904510252096,0.9659258262890682,0,0,0.92387953251128674,0.38268343236508978,0.70710678118654757,0.70710678118654746,0.38268343236508984,0.92387953251128674,6.123233995736766e-17,1,-0.38268343236508973,0.92387953251128674,0,0,0.86602540378443871,0.49999999999999994,0,0.50000000000000011,0.8660254037844386,0,6.123233995736766e-17,1,0,0,0,0,0.99862953475457383,0.052335956242943828,0.99452189536827329,0.10452846326765346,0.98768834059513777,0.15643446504023087,0.97814760073380569,0.20791169081775931,0.96592582628906831,0.25881904510252074,0.95105651629515353,0.3090169943749474,0.93358042649720174,0.35836794954530021,0.91354545764260087,0.40673664307580015,0.8910065241883679,0.45399049973954675,0.86602540378443871,0.49999999999999994,0.83867056794542405,0.54463903501502697,0.80901699437494745,0.58778525229247314,0.7771459614569709,0.62932039104983739,0.74314482547739436,0.66913060635885813,0.70710678118654757,0.70710678118654746,0.66913060635885824,0.74314482547739424,0.6293203910498375,0.77714596145697079,0.58778525229247314,0.80901699437494745,0.54463903501502708,0.83867056794542394,0.50000000000000011,0.8660254037844386,0.45399049973954686,0.8910065241883679,0.40673664307580037,0.91354545764260076,0.35836794954530038,0.93358042649720174,0.30901699437494745,0.95105651629515353,0.25881904510252096,0.9659258262890682,0.20791169081775945,0.97814760073380558,0.15643446504023092,0.98768834059513777,0.10452846326765368,0.99452189536827329,0.052335956242943966,0.99862953475457383,0,0,0.99452189536827329,0.10452846326765346,0.97814760073380569,0.20791169081775931,0.95105651629515353,0.3090169943749474,0.91354545764260087,0.40673664307580015,0.86602540378443871,0.49999999999999994,0.80901699437494745,0.58778525229247314,0.74314482547739436,0.66913060635885813,0,0.97814760073380569,0.20791169081775931,0.91354545764260087,0.40673664307580015,0.80901699437494745,0.58778525229247314,0.66913060635885824,0.74314482547739424,0.50000000000000011,0.8660254037844386,0.30901699437494745,0.95105651629515353,0.10452846326765368,0.99452189536827329,0,0.95105651629515353,0.3090169943749474,0.80901699437494745,0.58778525229247314,0.58778525229247314,0.80901699437494745,0.30901699437494745,0.95105651629515353,6.123233995736766e-17,1,-0.30901699437494734,0.95105651629515364,-0.58778525229247303,0.80901699437494745,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0.99862953475457383,0.052335956242943828,0.99452189536827329,0.10452846326765346,0.98768834059513777,0.15643446504023087,0.97814760073380569,0.20791169081775931,0.96592582628906831,0.25881904510252074,0.95105651629515353,0.3090169943749474,0.93358042649720174,0.35836794954530021,0.91354545764260087,0.40673664307580015,0.8910065241883679,0.45399049973954675,0.86602540378443871,0.49999999999999994,0.83867056794542405,0.54463903501502697,0.80901699437494745,0.58778525229247314,0.7771459614569709,0.62932039104983739,0.74314482547739436,0.66913060635885813,0.70710678118654757,0.70710678118654746,0.66913060635885824,0.74314482547739424,0.6293203910498375,0.77714596145697079,0.58778525229247314,0.80901699437494745,0.54463903501502708,0.83867056794542394,0.50000000000000011,0.8660254037844386,0.45399049973954686,0.8910065241883679,0.40673664307580037,0.91354545764260076,0.35836794954530038,0.93358042649720174,0.30901699437494745,0.95105651629515353,0.25881904510252096,0.9659258262890682,0.20791169081775945,0.97814760073380558,0.15643446504023092,0.98768834059513777,0.10452846326765368,0.99452189536827329,0.052335956242943966,0.99862953475457383,0,0,0.99452189536827329,0.10452846326765346,0.97814760073380569,0.20791169081775931,0.95105651629515353,0.3090169943749474,0.91354545764260087,0.40673664307580015,0.86602540378443871,0.49999999999999994,0.80901699437494745,0.58778525229247314,0.74314482547739436,0.66913060635885813,0,0.97814760073380569,0.20791169081775931,0.91354545764260087,0.40673664307580015,0.80901699437494745,0.58778525229247314,0.66913060635885824,0.74314482547739424,0.50000000000000011,0.8660254037844386,0.30901699437494745,0.95105651629515353,0.10452846326765368,0.99452189536827329,0,0.95105651629515353,0.3090169943749474,0.80901699437494745,0.58778525229247314,0.58778525229247314,0.80901699437494745,0.30901699437494745,0.95105651629515353,6.123233995736766e-17,1,-0.30901699437494734,0.95105651629515364,-0.58778525229247303,0.80901699437494745,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0.99871650717105276,0.050649168838712712,0.99486932339189516,0.10116832198743217,0.98846832432811138,0.15142777750457667,0.97952994125249448,0.20129852008866006,0.96807711886620429,0.25065253225872053,0.95413925640004882,0.29936312297335793,0.93775213214708042,0.34730525284482028,0.9189578116202306,0.39435585511331855,0.89780453957074169,0.44039415155763428,0.87434661614458209,0.48530196253108104,0.84864425749475092,0.5289640103269625,0.82076344120727629,0.57126821509479231,0.79077573693769854,0.6121059825476628,0.75875812269279097,0.65137248272222226,0.72479278722911999,0.68896691907568652,0,0.99486932339189516,0.10116832198743217,0.97952994125249448,0.20129852008866006,0.95413925640004882,0.29936312297335793,0.9189578116202306,0.39435585511331855,0.87434661614458209,0.48530196253108104,0.82076344120727629,0.57126821509479231,0.75875812269279097,0.65137248272222226,0.68896691907568663,0.72479278722911999,0.61210598254766291,0.79077573693769854,0.52896401032696239,0.84864425749475092,0.44039415155763428,0.89780453957074169,0.34730525284482028,0.93775213214708042,0.25065253225872053,0.96807711886620429,0.1514277775045767,0.98846832432811138,0.050649168838712767,0.99871650717105276,0,0.98846832432811138,0.15142777750457667,0.95413925640004882,0.29936312297335793,0.89780453957074169,0.44039415155763434,0.82076344120727629,0.57126821509479231,0.72479278722911999,0.68896691907568652,0.6121059825476628,0.79077573693769865,0.48530196253108099,0.87434661614458209,0.34730525284482028,0.93775213214708042,0.20129852008866012,0.97952994125249448,0.050649168838712767,0.99871650717105276,-0.1011683219874321,0.99486932339189516,-0.25065253225872064,0.96807711886620429,-0.39435585511331867,0.9189578116202306,-0.5289640103269625,0.84864425749475092,-0.65137248272222203,0.75875812269279108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99824373176432146,0.059240627893714287,0.99298109601351692,0.1182731709213658,0.98423057794759683,0.17689027512257297,0.97202291408041075,0.23488604578098368,0.95640098427652243,0.29205677063697583,0.9374196611341209,0.34820163543439875,0.91514561724301846,0.40312342928797223,0.88965709099474732,0.45662923739371308,0.86104361176735555,0.50853111864922051,0.82940568545020188,0.55864676580365247,0.79485444141335326,0.60680014581859343,0.75751124216162014,0.65282211819052161,0.71750725704433116,0.69655102906299704,0.67498300151821056,0.73783327904172724,0.63008784358171099,0.77652386271804241,0.58297947911447212,0.81248687800568131,0.53382337796479062,0.84559600350182607,0.48279220273074486,0.87573494219563686,0.43006520227652051,0.90279782996574354,0.37582758211423822,0.92668960743183337,0.32026985386283752,0.94732635385419139,0.26358716606906762,0.96463558190835863,0.20597861874109838,0.97855649229950403,0.14764656400248127,0.98904018732216392,0.088795895322934901,0.9960498426152169,0.029633327822559667,0.99956083650879435,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.97492791218182362,0.22252093395631439,0.90096886790241915,0.43388373911755812,0.7818314824680298,0.62348980185873348,0,0.90096886790241915,0.43388373911755812,0.62348980185873359,0.7818314824680298,0.22252093395631445,0.97492791218182362,0,0.7818314824680298,0.62348980185873348,0.22252093395631445,0.97492791218182362,-0.43388373911755806,0.90096886790241915,0,0,0,0,0,0,0,0,0.99675730813421004,0.080466568716725875,0.98705026263791285,0.16041128085776024,0.97094181742605201,0.23931566428755774,0.94853644194714548,0.31666799380147248,0.91997944365882423,0.39196660986007503,0.88545602565320991,0.46472317204376851,0.84519008554379482,0.53446582612780102,0.79944276340350118,0.60074226423797883,0.74851074817110119,0.66312265824079519,0.69272435350959949,0.72120244734381445,0.63244537559537728,0.77460496182765459,0.56806474673115581,0.82298386589365635,0.50000000000000011,0.8660254037844386,0.42869256140305423,0.90345043461038221,0.35460488704253579,0.93501624268541472,0.27821746391645275,0.96051811163137224,0.20002569377604446,0.97979065204226767,0.12053668025532323,0.99270887409805397,0.040265940109415241,0.99918899817156959,0,0.98705026263791285,0.16041128085776024,0.94853644194714548,0.31666799380147248,0.88545602565320991,0.46472317204376851,0.79944276340350118,0.60074226423797883,0.69272435350959949,0.72120244734381445,0.56806474673115581,0.82298386589365635,0,0.94853644194714548,0.31666799380147248,0.79944276340350118,0.60074226423797883,0.56806474673115581,0.82298386589365635,0.27821746391645275,0.96051811163137224,-0.040265940109414901,0.9991889981715697,-0.35460488704253545,0.93501624268541483,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99853341385112382,0.054138908585417526,0.9941379571543596,0.10811901842394177,0.98682652254152614,0.16178199655276473,0.97662055571008666,0.21497044021102407,0.96354999251922291,0.26752833852922081,0.94765317118280246,0.31930153013598001,0.92897671981679142,0.37013815533991434,0.90757541967095701,0.4198891015602646,0.88351204444602294,0.46840844069979015,0.85685717616758927,0.51555385717702173,0.82768899815689057,0.56118706536238239,0.79609306570564375,0.60517421519376513,0.76216205512763646,0.64738628478182769,0.72599549192313084,0.68769945885342332,0,0.9941379571543596,0.10811901842394177,0.97662055571008666,0.21497044021102407,0.94765317118280246,0.31930153013598001,0.90757541967095701,0.4198891015602646,0.85685717616758927,0.51555385717702173,0.79609306570564375,0.60517421519376513,0.72599549192313084,0.68769945885342332,0.64738628478182758,0.76216205512763646,0.56118706536238228,0.82768899815689057,0.46840844069979015,0.88351204444602294,0.37013815533991434,0.92897671981679142,0.26752833852922075,0.96354999251922302,0.16178199655276462,0.98682652254152614,0.05413890858541761,0.99853341385112382,0,0.98682652254152614,0.16178199655276473,0.94765317118280246,0.31930153013598001,0.88351204444602294,0.46840844069979015,0.79609306570564375,0.60517421519376513,0.68769945885342321,0.72599549192313095,0.56118706536238228,0.82768899815689057,0.4198891015602646,0.90757541967095701,0.26752833852922075,0.96354999251922302,0.10811901842394164,0.9941379571543596,-0.054138908585417707,0.99853341385112382,-0.2149704402110241,0.97662055571008666,-0.37013815533991445,0.92897671981679142,-0.51555385717702185,0.85685717616758916,-0.64738628478182769,0.76216205512763646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} +{"lengths":[67,125,52,39,121,103,69,113,91,80],"offsets":[0,67,192,244,283,404,507,576,689,780],"cosines":[0.99972518510981589,0.99890089148571148,0.99752757218401011,0.99560598202189809,0.99313717716255423,0.99012251453465094,0.98656365108654653,0.98246254287557611,0.97782144399294513,0.97264290532481301,0.96692977315025064,0.96068518757684018,0.95391258081477903,0.94661567529043411,0.93879848160038637,0.93046529630708663,0.92162069957733739,0.91226955266489673,0.90241699523858843,0.89206844255738649,0.8812295824940285,0.86990637240879032,0.85810503587514431,0.84583205925909744,0.83309418815409153,0.81989842367342458,0.80625201860222984,0.79216247341112933,0.77763753213375197,0.76268517811038194,0.74731362960007708,0.73153133526366898,0.71534696952012755,0.69876942777884166,0.68180782155043773,0.66447147343882174,0.64676991201719869,0.62871286659088488,0.61031026184979209,0.59157221241352231,0.57250901727207193,0.55313115412519953,0.53344927362357031,0.51347419351484191,0.49321689269790742,0.47268850518856531,0.4519003139999338,0.43086374494097046,0.40959036033650642,0.38809185267224972,0.3663800381682461,0.34446685028433299,0.32236433316115376,0.30008463500034066,0.2776400013875005,0.25504276856167651,0.23230535663498325,0.20944026276614436,0.18646005429168128,0.16337736181853024,0.14020487228188572,0.11695532197208237,0.09364148953435085,0.070276188945293,0.046872262469940029,0.023442573603260568,6.123233995736766e-17,0.99992104420381611,0.99968418928329994,0.9992894726405892,0.99873695660601747,0.99802672842827156,0.99715890026061393,0.9961336091431725,0.99495101698130017,0.9936113105200084,0.99211470131447788,0.99046142569665119,0.98865174473791406,0.98668594420786804,0.98456433452920533,0.98228725072868872,0.97985505238424686,0.97726812356819348,0.97452687278657713,0.97163173291467397,0.96858316112863108,0.96538163883327388,0.96202767158608593,0.95852178901737584,0.95486454474664295,0.95105651629515353,0.94709830499474434,0.94299053589286441,0.93873385765387407,0.93432894245661202,0.92977648588825135,0.92507720683445804,0.92023184736587038,0.91524117262091753,0.91010597068499566,0.90482705246601958,0.89940525156637108,0.89384142415126377,0.88813644881354448,0.88229122643495328,0.87630668004386358,0.87018375466952569,0.86392341719283527,0.85752665619365231,0.85099448179469184,0.84432792550201508,0.83752804004214176,0.83059589919581267,0.82353259762842745,0.81633925071718394,0.80901699437494745,0.80156698487087663,0.79399039864783538,0.78628843213661892,0.77846230156702334,0.77051324277578914,0.76244251101144789,0.75425138073610376,0.74594114542418211,0.73751311735817393,0.72896862742141155,0.72030902488790682,0.71153567720928534,0.70264996979884919,0.69365330581280493,0.68454710592868862,0.67533280812102447,0.66601186743425156,0.65658575575295641,0.64705596156944434,0.63742398974868975,0.62769136129070047,0.61785961309033433,0.60793029769460538,0.59790498305751894,0.58778525229247303,0.57757270342226752,0.56726894912675641,0.55687561648818795,0.54639434673426901,0.53582679497899655,0.52517462996129571,0.51443953378150642,0.50362320163576091,0.49272734154829156,0.48175367410171532,0.47070393216533257,0.45957986062148776,0.44838321609003223,0.43711576665093282,0.42577929156507266,0.41437558099328403,0.40290643571366269,0.39137366683720232,0.37977909552180111,0.36812455268467786,0.35641187871325075,0.344642923174517,0.33281954452298668,0.32094360980720943,0.30901699437494745,0.29704158157703486,0.28501926246997616,0.27295193551732516,0.260841506289897,0.24868988716485474,0.23649899702372476,0.22427076094938117,0.21200710992205452,0.199709980514407,0.18738131458572452,0.17502305897527604,0.1626371651948835,0.15022558912075706,0.13779029068463797,0.12533323356430426,0.1128563848734816,0.10036171485121491,0.087851196550743096,0.07532680552793275,0.062790519529313304,0.050244318179769598,0.037690182669934472,0.025130095443337531,0.012566039883352554,6.123233995736766e-17,0.9995437844895334,0.9981755542233175,0.99589655761709095,0.99270887409805397,0.98861541220753424,0.98361990694714363,0.97772691637084685,0.97094181742605201,0.96327080104751628,0.9547208665085456,0.94529981503464022,0.93501624268541483,0.92387953251128674,0.91189984599209006,0.89908811376542597,0.88545602565320991,0.87101601999551559,0.85578127230144752,0.83976568322739797,0.82298386589365646,0.80545113255094591,0.78718348060905019,0.76819757804028055,0.74851074817110119,0.72814095387578848,0.70710678118654757,0.68542742233503984,0.6631226582407953,0.64021284046248805,0.61671887262854308,0.59266219136401688,0.56806474673115581,0.5429489822014788,0.51733781417765679,0.49125461108387752,0.46472317204376862,0.43776770516534047,0.41041280545275693,0.38268343236508984,0.35460488704253579,0.32620278922086943,0.29750305385520298,0.26853186747437691,0.23931566428755782,0.20988110206484778,0.18025503781390587,0.15046450327478306,0.12053668025532323,0.09049887582963792,0.060378497422286286,0.030203027800888991,6.123233995736766e-17,0.99918899817156959,0.99675730813421004,0.99270887409805397,0.98705026263791285,0.97979065204226767,0.97094181742605201,0.96051811163137235,0.94853644194714548,0.93501624268541483,0.91997944365882423,0.90345043461038232,0.88545602565320991,0.86602540378443871,0.84519008554379482,0.82298386589365646,0.79944276340350118,0.77460496182765459,0.74851074817110119,0.72120244734381456,0.69272435350959949,0.6631226582407953,0.63244537559537728,0.60074226423797905,0.56806474673115581,0.53446582612780125,0.50000000000000011,0.46472317204376862,0.42869256140305423,0.39196660986007509,0.35460488704253579,0.31666799380147265,0.27821746391645275,0.23931566428755782,0.20002569377604446,0.16041128085776046,0.12053668025532323,0.080466568716726014,0.040265940109415241,6.123233995736766e-17,0.99991573777581688,0.9996629653035124,0.99924172518142806,0.99865208839882302,0.99789415432391082,0.99696805068711336,0.99587393355953502,0.99461198732666134,0.99318242465728501,0.99158548646766631,0.98982144188093268,0.98789058818172515,0.98579325076609803,0.98352978308668237,0.98110056659312039,0.97850601066778153,0.9757465525567719,0.97282265729624728,0.96973481763404379,0.96648355394663699,0.96306941415144631,0.95949297361449737,0.95575483505345882,0.95185562843606963,0.94779601087397392,0.94357666651198202,0.93919830641277491,0.9346616684370731,0.92996751711928893,0.92511664353868373,0.92010986518605187,0.91494802582595314,0.90963199535451833,0.90416266965285019,0.89854097043604553,0.89276784509786367,0.88684426655106763,0.88077123306346428,0.87454976808967211,0.86818092009864389,0.8616657623969739,0.85500539294802003,0.84820093418686937,0.84125353283118121,0.83416435968793645,0.82693460945612862,0.81956550052542743,0.81205827477085002,0.80441419734347563,0.79663455645723602,0.7887206631718201,0.78067385117172805,0.7724954765415134,0.7641869175372491,0.75574957435425827,0.74718486889114633,0.73849424451017709,0.72967916579402992,0.72074111829898324,0.71168160830456018,0.70250216255968523,0.693204328025389,0.6837896716141072,0.67425977992561803,0.66461625897966137,0.65486073394528499,0.6449948488669639,0.63502026638753839,0.62493866746801852,0.61475175110430091,0.60446123404084628,0.59406885048136626,0.58357635179656719,0.57298550622900202,0.56229809859507784,0.55151592998427057,0.54064081745559767,0.52967459373139858,0.51861910688847745,0.5074762200466556,0.49624781105479165,0.48493577217431655,0.47354200976034294,0.4620684439403962,0.4505170082908268,0.43888964951095577,0.42718832709500709,0.41541501300188644,0.40357169132285664,0.39166035794717019,0.37968302022571399,0.36764169663272006,0.35553841642560485,0.34337521930298859,0.33115415506095641,0.31887728324761866,0.30654667281602482,0.29416440177549641,0.28173255684142978,0.26925323308363447,0.25672853357326314,0.24416056902839128,0.23155145745831138,0.21890332380659488,0.20621829959298815,0.19349852255419972,0.18074613628363795,0.16796328987016487,0.15515213753592064,0.14231483827328512,0.12945355548103549,0.11657045659975915,0.10366771274658876,0.090747498349314365,0.077811990779939819,0.06486336998774303,0.051903818131899662,0.038935519213737745,0.025960658708678471,0.012981423197930875,6.123233995736766e-17,0.99988371414463784,0.99953488362335152,0.99895358956425229,0.99813996715989384,0.99709420563583062,0.99581654820660925,0.99430729201920387,0.99256678808390786,0.99059544119269904,0.98839370982509611,0.98596210604153001,0.98330119536425242,0.98041159664581168,0.97729398192512484,0.97394907627118121,0.97037765761441064,0.96658055656576003,0.962558656223516,0.95831289196792147,0.9538442512436327,0.94915377333006756,0.94424254909969862,0.93911172076434679,0.93376248160953546,0.92819607571696594,0.92241379767517928,0.91641699227847151,0.91020705421413273,0.9037854277380819,0.89715360633897423,0.89031313239085774,0.88326559679446082,0.87601263860719336,0.86855594466194885,0.86089724917479438,0.85303833334164159,0.84498102492398997,0.83672719782384208,0.82827877164788677,0.81963771126105256,0.81080602632953613,0.80178577085341063,0.79257904268892332,0.78318798306059356,0.7736147760632246,0.76386164815394497,0.75393086763439732,0.7438247441231961,0.73354562801877499,0.72309590995275119,0.71247802023393192,0.70169442828309325,0.69074764205866301,0.67964020747344034,0.66837470780248853,0.65695376308233822,0.64538002950164097,0.63365619878341528,0.62178499755902727,0.60976918673405434,0.5976115608461755,0.58531494741524215,0.57288220628567577,0.56031622896135003,0.54761993793310804,0.53479628599907425,0.52184825557791659,0.50877885801522071,0.49559113288313555,0.48228814727345615,0.4688729950843033,0.45534879630057123,0.44171869626830718,0.42798586496319291,0.4141534962532985,0.40022480715627801,0.38620303709118281,0.37209144712506437,0.35789331921454187,0.34361195544251311,0.3292506772501817,0.31481282466458504,0.300301755521798,0.2857208446859959,0.27107348326455555,0.25636307781938034,0.24159304957463013,0.22676683362104103,0.21188787811702131,0.19695964348670617,0.18198560161516167,0.16696923504092231,0.15191403614605092,0.13682350634391022,0.12170115526483183,0.10655049993987634,0.091375063982871305,0.076178376770918002,0.060963972623559098,0.045735389980794579,0.030496170580141577,0.015249858632925991,6.123233995736766e-17,0.99974088484134915,0.99896367364672756,0.99766876919053915,0.99585684253153128,0.99352883266503123,0.99068594603633076,0.98732965591546962,0.98346170163374214,0.97908408768232291,0.9741990826734791,0.96880921816490639,0.96291728734779936,0.95652634359933475,0.9496396989003193,0.94226092211882051,0.93439383716067115,0.92604252098780526,0.91721130150545305,0.90790475531928894,0.89812770536369613,0.88788521840237522,0.87718260240259427,0.86602540378443871,0.85441940454648857,0.84237061926941159,0.82988529199902517,0.81696989301044209,0.80363111545497823,0.78987587189155861,0.77571129070441991,0.76114471240896475,0.74618368584768557,0.73083596427812414,0.71510950135489937,0.69901244700788212,0.68255314321865412,0.66574011969744062,0.64858208946275597,0.63108794432605286,0.61326675028371636,0.59512774281878977,0.57668032211486708,0.55793404818463344,0.53889863591557563,0.51958395003543356,0.50000000000000011,0.48015693480591559,0.4600650377311522,0.43973472100590599,0.41917652041666414,0.39840108984624156,0.3774191957526144,0.35624171158941687,0.33487961217098627,0.31334396798488223,0.29164593945482503,0.26979677115702444,0.24780778599289993,0.22569037932121072,0.20345601305263397,0.18111620970985581,0.15868254645625143,0.13616664909624659,0.11358018605047492,0.09093486230884712,0.068242413364671003,0.045514599132963712,0.022763197856105661,6.123233995736766e-17,0.99990338470638107,0.99961355749455405,0.99913057436800123,0.99845452865383599,0.99758555098476864,0.9965238092738643,0.9952695086820974,0.99382289157870785,0.9921842374943679,0.99035386306716877,0.98833212198143583,0.98611940489938621,0.98371613938564106,0.9811227898246071,0.97833985733074269,0.975367879651728,0.97220743106455521,0.96885912226456061,0.96532360024742003,0.96160154818412902,0.95769368528899346,0.9536007666806553,0.94932358323618105,0.94486296143823911,0.94021976321539902,0.93539488577558016,0.93038926143268352,0.92520385742644029,0.91983967573551173,0.91429775288387605,0.90857915974054027,0.90268500131261564,0.89661641653179647,0.89037457803428377,0.88396069193419569,0.87737599759050977,0.87062176736758112,0.86369930638928183,0.8566099522868118,0.84935507494022766,0.84193607621373923,0.83435438968482722,0.82661148036723175,0.8187088444278674,0.81064800889771726,0.80243053137676457,0.79405799973301627,0.78553203179567854,0.77685427504254267,0.76802640628164209,0.75905013132724153,0.74992718467022146,0.74065932914292176,0.73124835557850854,0.72169608246493022,0.71200435559352981,0.70217504770238204,0.69221005811442282,0.6821113123704422,0.67188076185701062,0.66152038342941155,0.65103217902965238,0.64041817529962863,0.62968042318951389,0.61882099756145403,0.60784199678864015,0.59674554234983879,0.58553377841945764,0.57420887145322486,0.56277300976956379,0.55122840312674337,0.53957728229588453,0.52782189862990736,0.51596452362850098,0.50400744849919987,0.4919529837146529,0.47980345856616935,0.46756122071362805,0.45522863573183869,0.4428080866534394,0.43030197350842236,0.41771271286037459,0.40504273733952406,0.39229449517268095,0.37947044971016541,0.36657307894981289,0.35360487505814908,0.34056834388882778,0.32746600449842223,0.31430038865966692,0.30107404037224184,0.28778951537119346,0.27444938063308905,0.26105621387999778,0.24761260308139635,0.23412114595409397,0.22058444946027386,0.2070051293037492,0.1933858094245279,0.17972912149178802,0.1660377043953585,0.15231420373580504,0.13856127131321905,0.12478156461480873,0.11097774630139143,0.097152483692885747,0.083308448252904677,0.069448315072545827,0.055574762353482812,0.041690470890454627,0.027798123553254055,0.01390040476831517,6.123233995736766e-17,0.99985102404084947,0.99940414055107041,0.99865948268045612,0.99761727230124764,0.99627781994202647,0.99464152469519274,0.99270887409805397,0.99048044398756319,0.98795689832874645,0.9851389890168738,0.98202755565343036,0.97862352529595531,0.97492791218182362,0.97094181742605201,0.9666664286932195,0.96210301984360058,0.95725295055361581,0.95211766591071412,0.94669869598280598,0.94099765536237645,0.93501624268541483,0.92875624012530233,0.92221951286181036,0.91540800852536641,0.90832375661675402,0.90096886790241915,0.89334553378556314,0.88545602565320991,0.87730269419944207,0.86888796872500662,0.86021435641350075,0.85128444158435124,0.84210088492281177,0.83266642268720636,0.82298386589365635,0.81305609947853252,0.80288608143888252,0.79247684195109047,0.7818314824680298,0.7709531747949796,0.75984516014457881,0.74851074817110119,0.73695331598433678,0.72517630714337655,0.7131832306305963,0.70097765980614946,0.68856323134327702,0.67594364414475439,0.6631226582407953,0.65010409366874433,0.6368918293348893,0.62348980185873359,0.60990200440007281,0.59613248546922537,0.5821853477207708,0.56806474673115581,0.55377488976053313,0.5393200344991993,0.52470448779900813,0.50993260439013599,0.49500878558358147,0.47993747795978642,0.46472317204376862,0.44937040096716135,0.43388373911755818,0.41826780077556519,0.40252723873996754,0.38666674294141884,0.37069103904506751,0.35460488704253557,0.33841307983367058,0.32212044179849075,0.30573182735975302,0.28925211953656776,0.27268622848949386,0.25603909005754721,0.23931566428755782,0.22252093395631445,0.20565990308593662,0.18873759545291671,0.17175905309127604,0.15472933479028123,0.13765351458716818,0.12053668025532323,0.10338393178837031,0.086200379880619543,0.06899114440432505,0.051761352884209494,0.034516138969708218,0.017260640905388574,6.123233995736766e-17,0.99980724048206482,0.9992290362407229,0.99826561018471593,0.99691733373312796,0.99518472667219693,0.99306845695492629,0.99056934044357725,0.98768834059513777,0.9844265680898916,0.98078528040323043,0.97676588132087239,0.97236992039767656,0.96759909236025976,0.96245523645364728,0.95694033573220882,0.95105651629515353,0.94480604646687805,0.93819133592248416,0.93121493475880357,0.92387953251128674,0.91618795711713596,0.90814317382508125,0.89974828405222151,0.8910065241883679,0.88192126434835505,0.87249600707279718,0.86273438597779184,0.85264016435409229,0.84221723371628654,0.83146961230254524,0.82040144352551359,0.80901699437494745,0.79732065377270711,0.78531693088074495,0.77301045336273699,0.76040596560003093,0.74750832686259683,0.73432250943568556,0.72085359670291882,0.70710678118654757,0.69308736254563585,0.67880074553294178,0.66425243791128175,0.64944804833018366,0.63439328416364549,0.61909394930983397,0.60355594195357143,0.58778525229247314,0.57178796022761225,0.55557023301960229,0.53913832291100039,0.52249856471594891,0.50565737337798455,0.48862124149695496,0.47139673682599781,0.45399049973954686,0.43640924067334202,0.41865973753742813,0.40074883310314113,0.38268343236508984,0.36447049987914959,0.34611705707749302,0.32763017956169366,0.30901699437494745,0.29028467725446233,0.27144044986507432,0.25249157701515812,0.23344536385590547,0.21430915306505069,0.19509032201612833,0.17579627993435468,0.15643446504023092,0.13701234168196799,0.1175373974578377,0.09801714032956077,0.078459095727844999,0.058870803651188984,0.039259815759068666,0.019633692460628474,6.123233995736766e-17],"twiddles":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99873695660601747,0.050244318179769556,0.99495101698130017,0.10036171485121489,0.98865174473791406,0.15022558912075706,0.97985505238424686,0.19970998051440703,0.96858316112863108,0.24868988716485479,0.95486454474664295,0.29704158157703492,0.93873385765387407,0.34464292317451706,0.92023184736587038,0.39137366683720243,0.89940525156637108,0.43711576665093288,0.87630668004386358,0.48175367410171532,0.85099448179469184,0.52517462996129571,0.82353259762842745,0.56726894912675652,0,0.99495101698130017,0.10036171485121489,0.97985505238424686,0.19970998051440703,0.95486454474664295,0.29704158157703492,0.92023184736587038,0.39137366683720243,0.87630668004386358,0.48175367410171532,0.82353259762842745,0.56726894912675652,0.76244251101144789,0.64705596156944434,0.69365330581280493,0.72030902488790682,0.61785961309033433,0.78628843213661892,0.53582679497899655,0.84432792550201508,0.44838321609003223,0.89384142415126377,0.35641187871325075,0.93432894245661202,0,0.98865174473791406,0.15022558912075706,0.95486454474664295,0.29704158157703492,0.89940525156637108,0.43711576665093288,0.82353259762842745,0.56726894912675652,0.72896862742141155,0.68454710592868862,0.61785961309033433,0.78628843213661892,0.49272734154829156,0.87018375466952569,0.35641187871325075,0.93432894245661202,0.21200710992205474,0.97726812356819348,0.062790519529313527,0.99802672842827156,-0.087851196550743194,0.9961336091431725,-0.23649899702372465,0.97163173291467397,0,0.97985505238424686,0.19970998051440703,0.92023184736587038,0.39137366683720243,0.82353259762842745,0.56726894912675652,0.69365330581280493,0.72030902488790682,0.53582679497899655,0.84432792550201508,0.35641187871325075,0.93432894245661202,0.1626371651948835,0.98668594420786804,-0.037690182669934576,0.9992894726405892,-0.23649899702372465,0.97163173291467397,-0.42577929156507272,0.90482705246601947,-0.59790498305751894,0.80156698487087652,-0.74594114542418211,0.66601186743425167,0,0.96858316112863108,0.24868988716485479,0.87630668004386358,0.48175367410171532,0,0.87630668004386358,0.48175367410171532,0.53582679497899655,0.84432792550201508,0,0.72896862742141155,0.68454710592868873,0.062790519529313304,0.99802672842827156,0,0.53582679497899655,0.84432792550201508,-0.42577929156507272,0.90482705246601947,0,0,0,0,0,0,0.99270887409805397,0.12053668025532305,0.97094181742605201,0.23931566428755774,0.93501624268541483,0.35460488704253557,0.88545602565320991,0.46472317204376851,0.82298386589365646,0.5680647467311557,0.74851074817110119,0.66312265824079519,0,0.97094181742605201,0.23931566428755774,0.88545602565320991,0.46472317204376851,0.74851074817110119,0.66312265824079519,0.56806474673115581,0.82298386589365635,0.35460488704253579,0.93501624268541472,0.12053668025532323,0.99270887409805397,0,0.93501624268541483,0.35460488704253557,0.74851074817110119,0.66312265824079519,0.46472317204376862,0.8854560256532098,0.12053668025532323,0.99270887409805397,-0.23931566428755749,0.97094181742605212,-0.5680647467311557,0.82298386589365646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.98705026263791285,0.16041128085776024,0.94853644194714548,0.31666799380147248,0.88545602565320991,0.46472317204376851,0.79944276340350118,0.60074226423797883,0.69272435350959949,0.72120244734381445,0.56806474673115581,0.82298386589365635,0,0.94853644194714548,0.31666799380147248,0.79944276340350118,0.60074226423797883,0.56806474673115581,0.82298386589365635,0.27821746391645275,0.96051811163137224,-0.040265940109414901,0.9991889981715697,-0.35460488704253545,0.93501624268541483,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99865208839882302,0.051903818131899739,0.99461198732666134,0.10366771274658874,0.98789058818172515,0.15515213753592053,0.97850601066778153,0.20621829959298818,0.96648355394663699,0.25672853357326308,0,0.99461198732666134,0.10366771274658874,0.97850601066778153,0.20621829959298818,0.95185562843606963,0.30654667281602488,0.91494802582595314,0.40357169132285653,0.86818092009864389,0.49624781105479165,0,0.98789058818172515,0.15515213753592053,0.95185562843606963,0.30654667281602488,0.89276784509786367,0.4505170082908268,0.81205827477085002,0.58357635179656708,0.71168160830456018,0.70250216255968534,0,0.97850601066778153,0.20621829959298818,0.91494802582595314,0.40357169132285653,0.81205827477085002,0.58357635179656708,0.67425977992561803,0.73849424451017698,0.5074762200466556,0.8616657623969739,0,0.96648355394663699,0.25672853357326308,0.86818092009864389,0.49624781105479165,0.71168160830456018,0.70250216255968534,0.5074762200466556,0.8616657623969739,0.26925323308363447,0.96306941415144631,0,0.95185562843606963,0.30654667281602488,0.81205827477085002,0.58357635179656708,0.59406885048136626,0.80441419734347563,0.31887728324761866,0.94779601087397392,0.012981423197930875,0.99991573777581688,0,0.9346616684370731,0.35553841642560485,0.74718486889114633,0.66461625897966148,0.46206844394039598,0.88684426655106763,0.11657045659975915,0.99318242465728501,-0.24416056902839139,0.96973481763404379,0,0.91494802582595314,0.40357169132285653,0.67425977992561803,0.73849424451017698,0.31887728324761866,0.94779601087397392,-0.09074749834931424,0.99587393355953502,-0.48493577217431666,0.87454976808967211,0,0.89276784509786367,0.4505170082908268,0.59406885048136626,0.80441419734347563,0.16796328987016487,0.98579325076609803,-0.2941644017754963,0.95575483505345893,-0.693204328025389,0.72074111829898313,0,0.86818092009864389,0.49624781105479165,0.5074762200466556,0.8616657623969739,0.012981423197930875,0.99991573777581688,-0.48493577217431666,0.87454976808967211,-0.85500539294802003,0.51861910688847734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99585684253153128,0.090934862308846953,0.98346170163374214,0.18111620970985573,0.96291728734779936,0.26979677115702427,0.93439383716067115,0.35624171158941681,0.89812770536369613,0.43973472100590583,0.85441940454648857,0.51958395003543356,0.80363111545497823,0.59512774281878966,0.74618368584768557,0.66574011969744062,0.68255314321865412,0.73083596427812403,0.61326675028371636,0.78987587189155861,0.53889863591557563,0.84237061926941148,0,0.98346170163374214,0.18111620970985573,0.93439383716067115,0.35624171158941681,0.85441940454648857,0.51958395003543356,0.74618368584768557,0.66574011969744062,0.61326675028371636,0.78987587189155861,0.4600650377311522,0.88788521840237522,0.29164593945482503,0.95652634359933475,0.11358018605047492,0.99352883266503111,-0.068242413364670879,0.99766876919053915,-0.24780778599289982,0.96880921816490639,-0.41917652041666381,0.90790475531928916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99761727230124764,0.068991144404324925,0.99048044398756319,0.13765351458716821,0.97862352529595531,0.20565990308593657,0.96210301984360058,0.27268622848949375,0.94099765536237645,0.33841307983367042,0.91540800852536641,0.40252723873996749,0,0.99048044398756319,0.13765351458716821,0.96210301984360058,0.27268622848949375,0.91540800852536641,0.40252723873996749,0.85128444158435124,0.52470448779900802,0.7709531747949796,0.63689182933488919,0.67594364414475439,0.73695331598433667,0,0.97862352529595531,0.20565990308593657,0.91540800852536641,0.40252723873996749,0.81305609947853252,0.58218534772077069,0.67594364414475439,0.73695331598433667,0.50993260439013599,0.86021435641350064,0.32212044179849075,0.94669869598280587,0,0.96210301984360058,0.27268622848949375,0.85128444158435124,0.52470448779900802,0.67594364414475439,0.73695331598433667,0.44937040096716135,0.89334553378556314,0.18873759545291671,0.98202755565343036,-0.086200379880619196,0.99627781994202647,0,0.94099765536237645,0.33841307983367042,0.7709531747949796,0.63689182933488919,0.50993260439013577,0.86021435641350075,0.18873759545291671,0.98202755565343036,-0.15472933479028111,0.98795689832874645,-0.47993747795978653,0.87730269419944185,0,0.91540800852536641,0.40252723873996749,0.67594364414475439,0.73695331598433667,0.32212044179849075,0.94669869598280587,-0.086200379880619196,0.99627781994202647,-0.47993747795978614,0.87730269419944207,-0.79247684195109025,0.60990200440007303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99691733373312796,0.078459095727844944,0.98768834059513777,0.15643446504023087,0.97236992039767656,0.23344536385590539,0.95105651629515353,0.3090169943749474,0.92387953251128674,0.38268343236508978,0.8910065241883679,0.45399049973954675,0.85264016435409229,0.5224985647159488,0.80901699437494745,0.58778525229247314,0.76040596560003093,0.64944804833018366,0,0,0.98768834059513777,0.15643446504023087,0.95105651629515353,0.3090169943749474,0.8910065241883679,0.45399049973954675,0.80901699437494745,0.58778525229247314,0.70710678118654757,0.70710678118654746,0.58778525229247314,0.80901699437494745,0.45399049973954686,0.8910065241883679,0.30901699437494745,0.95105651629515353,0.15643446504023092,0.98768834059513777,0,0,0.97236992039767656,0.23344536385590539,0.8910065241883679,0.45399049973954675,0.76040596560003093,0.64944804833018366,0.58778525229247314,0.80901699437494745,0.38268343236508984,0.92387953251128674,0.15643446504023092,0.98768834059513777,-0.078459095727844874,0.99691733373312796,-0.30901699437494734,0.95105651629515364,-0.5224985647159488,0.85264016435409229,0,0,0.95105651629515353,0.3090169943749474,0.80901699437494745,0.58778525229247314,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0.58778525229247314,0.80901699437494745,-0.30901699437494734,0.95105651629515364,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/small.json b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/small.json index e43dbbea66f5..3146cddf05bd 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/small.json +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/fixtures/c/fftpack/small.json @@ -1 +1 @@ -{"lengths":[8,12,9,15,4,4,2,13,3,8],"offsets":[0,8,20,29,44,48,52,54,67,70],"cosines":[0.98078528040323043,0.92387953251128674,0.83146961230254524,0.70710678118654757,0.55557023301960229,0.38268343236508984,0.19509032201612833,6.123233995736766e-17,0.99144486137381038,0.96592582628906831,0.92387953251128674,0.86602540378443871,0.79335334029123528,0.70710678118654757,0.60876142900872066,0.50000000000000011,0.38268343236508984,0.25881904510252096,0.13052619222005171,6.123233995736766e-17,0.98480775301220802,0.93969262078590843,0.86602540378443871,0.76604444311897801,0.64278760968653936,0.50000000000000011,0.34202014332566882,0.17364817766693041,6.123233995736766e-17,0.99452189536827329,0.97814760073380569,0.95105651629515353,0.91354545764260087,0.86602540378443871,0.80901699437494745,0.74314482547739436,0.66913060635885824,0.58778525229247314,0.50000000000000011,0.40673664307580037,0.30901699437494745,0.20791169081775945,0.10452846326765368,6.123233995736766e-17,0.92387953251128674,0.70710678118654757,0.38268343236508984,6.123233995736766e-17,0.92387953251128674,0.70710678118654757,0.38268343236508984,6.123233995736766e-17,0.70710678118654757,6.123233995736766e-17,0.99270887409805397,0.97094181742605201,0.93501624268541483,0.88545602565320991,0.82298386589365646,0.74851074817110119,0.6631226582407953,0.56806474673115581,0.46472317204376862,0.35460488704253579,0.23931566428755782,0.12053668025532323,6.123233995736766e-17,0.86602540378443871,0.50000000000000011,6.123233995736766e-17,0.98078528040323043,0.92387953251128674,0.83146961230254524,0.70710678118654757,0.55557023301960229,0.38268343236508984,0.19509032201612833,6.123233995736766e-17],"twiddles":[0.70710678118654757,0.70710678118654746,0,0,0,0,0,0,0.86602540378443871,0.49999999999999994,0,0.50000000000000011,0.8660254037844386,0,6.123233995736766e-17,1,0,0,0,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.70710678118654757,0.70710678118654746,0,0,0,0,0,0]} +{"lengths":[2,2,15,8,8,4,9,6,15,15],"offsets":[0,2,4,19,27,35,39,48,54,69],"cosines":[0.70710678118654757,6.123233995736766e-17,0.70710678118654757,6.123233995736766e-17,0.99452189536827329,0.97814760073380569,0.95105651629515353,0.91354545764260087,0.86602540378443871,0.80901699437494745,0.74314482547739436,0.66913060635885824,0.58778525229247314,0.50000000000000011,0.40673664307580037,0.30901699437494745,0.20791169081775945,0.10452846326765368,6.123233995736766e-17,0.98078528040323043,0.92387953251128674,0.83146961230254524,0.70710678118654757,0.55557023301960229,0.38268343236508984,0.19509032201612833,6.123233995736766e-17,0.98078528040323043,0.92387953251128674,0.83146961230254524,0.70710678118654757,0.55557023301960229,0.38268343236508984,0.19509032201612833,6.123233995736766e-17,0.92387953251128674,0.70710678118654757,0.38268343236508984,6.123233995736766e-17,0.98480775301220802,0.93969262078590843,0.86602540378443871,0.76604444311897801,0.64278760968653936,0.50000000000000011,0.34202014332566882,0.17364817766693041,6.123233995736766e-17,0.96592582628906831,0.86602540378443871,0.70710678118654757,0.50000000000000011,0.25881904510252096,6.123233995736766e-17,0.99452189536827329,0.97814760073380569,0.95105651629515353,0.91354545764260087,0.86602540378443871,0.80901699437494745,0.74314482547739436,0.66913060635885824,0.58778525229247314,0.50000000000000011,0.40673664307580037,0.30901699437494745,0.20791169081775945,0.10452846326765368,6.123233995736766e-17,0.99452189536827329,0.97814760073380569,0.95105651629515353,0.91354545764260087,0.86602540378443871,0.80901699437494745,0.74314482547739436,0.66913060635885824,0.58778525229247314,0.50000000000000011,0.40673664307580037,0.30901699437494745,0.20791169081775945,0.10452846326765368,6.123233995736766e-17],"twiddles":[0,0,0,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0.70710678118654757,0.70710678118654746,0,0,0,0,0,0,0.70710678118654757,0.70710678118654746,0,0,0,0,0,0,0,0,0,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0,0.50000000000000011,0.8660254037844386,0,0,0,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0,0.91354545764260087,0.40673664307580015,0.66913060635885824,0.74314482547739424,0,0.66913060635885824,0.74314482547739424,-0.10452846326765333,0.9945218953682734,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/test.js b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/test.js index a6f7eca690a1..61f26b47c8dc 100644 --- a/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/test.js +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinqi/test/test.js @@ -117,9 +117,9 @@ tape( 'the function correctly initializes twiddle factors (small sequence length workspace = new Float64Array( ( 3*N ) + 34 ); sinqi( N, workspace, 1, 0 ); - t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); - for ( i = 0; i < N-1; i++ ) { - y = workspace[ (2*N) + i + 1 ]; + t.strictEqual( workspace[ (2*N) - 1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ (2*N) + i ]; e = expected[ off+i ]; t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); } @@ -185,9 +185,9 @@ tape( 'the function correctly initializes twiddle factors (medium sequence lengt workspace = new Float64Array( ( 3*N ) + 34 ); sinqi( N, workspace, 1, 0 ); - t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); - for ( i = 0; i < N-1; i++ ) { - y = workspace[ (2*N) + i + 1 ]; + t.strictEqual( workspace[ (2*N) - 1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ (2*N) + i ]; e = expected[ off+i ]; t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); } @@ -253,9 +253,9 @@ tape( 'the function correctly initializes twiddle factors (large sequence length workspace = new Float64Array( ( 3*N ) + 34 ); sinqi( N, workspace, 1, 0 ); - t.strictEqual( workspace[ N ], 0.0, 'returns expected value' ); - for ( i = 0; i < N-1; i++ ) { - y = workspace[ (2*N) + i + 1 ]; + t.strictEqual( workspace[ (2*N) - 1 ], 0.0, 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + y = workspace[ (2*N) + i ]; e = expected[ off+i ]; t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); } @@ -307,8 +307,8 @@ tape( 'the function correctly handles stride and offset parameters', function te expected = new Float64Array( ( 3*N ) + 34 ); sinqi( N, expected, 1, 0 ); - for ( i = 0; i < N-1; i++ ) { - t.strictEqual( workspace[ offset + ( ( (2*N)+i+1 ) * stride ) ], expected[ (2*N)+i+1 ], 'returns expected value' ); + for ( i = 0; i < N; i++ ) { + t.strictEqual( workspace[ offset + ( ( (2*N)+i ) * stride ) ], expected[ (2*N)+i ], 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/README.md b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/README.md new file mode 100644 index 000000000000..3b63a5e9b1a6 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/README.md @@ -0,0 +1,175 @@ + + +# sinti + +> Initialize a workspace array for performing a sine transform. + + + +
+ +
+ + + + + +
+ +## Usage + +```javascript +var sinti = require( '@stdlib/fft/base/fftpack/sinti' ); +``` + +#### sinti( N, workspace, strideW, offsetW ) + +Initializes a workspace array for performing a sine transform. + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); +var floor = require( '@stdlib/math/base/special/floor' ); + +var N = 7; +var workspace = new Float64Array( floor( 2.5*N ) + 34 ); + +var out = sinti( N, workspace, 1, 0 ); +// returns + +var bool = ( out === workspace ); +// returns true + +var sineTable = workspace.slice( 0, floor( N/2 ) ); +// returns [ ~0.765, ~1.414, ~1.848 ] + +var twiddleFactors = workspace.slice( floor( 3*N/2 ) + 1, floor( 5*N/2 ) + 2 ); +// returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] + +var factors = workspace.slice( floor( 5*N/2 ) + 2, floor( 5*N/2 ) + 2 + 4 ); +// returns [ 8, 2, 2, 4 ] +``` + +The function accepts the following arguments: + +- **N**: length of the sequence to transform. +- **workspace**: workspace array. +- **strideW**: stride length for `workspace`. +- **offsetW**: starting index for `workspace`. + +
+ + + + + +
+ +## Notes + +- The workspace array is divided into four sections: + + ```text + size = N/2 N+1 N+1 2+ceil(log2(N+1)/2) + ↓ ↓ ↓ ↓ + | sine table | scratch/workspace | twiddle factors | radix factor table | + ↑ ↑ ↑ ↑ + i = 0 ... N/2 ... (3N/2)+1 ... (5N/2)+2 ... + ``` + + - **sine table**: a table of precomputed sine coefficients used by sine transforms. + - **scratch/workspace**: used as a scratch space when performing transforms. This section is not updated during initialization. + - **twiddle factors**: a table of reusable complex-exponential constants stored as cosine/sine pairs. + - **radix factor table**: a table containing the sequence length `N+1`, the number of factors into which `N+1` was decomposed, and the individual integer radix factors. + +- In general, a workspace array should have `2.5N + 34` indexed elements (as `log2(N+1)/2 ≤ 32` for all `2^64`). During initialization, only the sections for storing the sine coefficients, twiddle factors, and the factorization of `N+1` are updated. + +- The radix factor table is comprised as follows: + + ```text + | sequence_length | number_of_factors | integer_factors | + ``` + +
+ + + +
+ +## Examples + + + +```javascript +var Float64Array = require( '@stdlib/array/float64' ); +var zeroTo = require( '@stdlib/array/zero-to' ); +var logEach = require( '@stdlib/console/log-each' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var sinti = require( '@stdlib/fft/base/fftpack/sinti' ); + +var N = 7; +var workspace = new Float64Array( floor( 2.5*N ) + 34 ); + +sinti( N, workspace, 1, 0 ); +console.log( 'Sequence length: %d', N ); + +console.log( 'Sine table:' ); +var idx = zeroTo( floor( N/2 ), 'generic' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( 0, floor( N/2 ) ) ); + +console.log( 'Twiddle factors:' ); +idx = zeroTo( N+1, 'generic' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( floor( 3*N/2 ) + 1, floor( 5*N/2 ) + 2 ) ); + +console.log( 'Factorization:' ); +var nf = workspace[ floor( 5*N/2 ) + 3 ]; + +console.log( ' number of factors: %d', nf ); +idx = zeroTo( nf, 'generic' ); +logEach( ' factor[ %d ]: %d', idx, workspace.slice( floor( 5*N/2 ) + 4, floor( 5*N/2 ) + 4 + nf ) ); +``` + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/benchmark/benchmark.js b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/benchmark/benchmark.js new file mode 100644 index 000000000000..a4e586b1414e --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/benchmark/benchmark.js @@ -0,0 +1,102 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var format = require( '@stdlib/string/format' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var Float64Array = require( '@stdlib/array/float64' ); +var pkg = require( './../package.json' ).name; +var sinti = require( './../lib' ); + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} N - sequence length +* @returns {Function} benchmark function +*/ +function createBenchmark( N ) { + var workspace = new Float64Array( floor( 2.5*N ) + 34 ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + sinti( N, workspace, 1, 0 ); + if ( isnan( workspace[ floor( 3*N/2 ) + 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnan( workspace[ floor( 3*N/2 ) + 1 ] ) ) { + b.fail( 'should not return NaN' ); + } + b.pass( 'benchmark finished' ); + b.end(); + } +} + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var lengths; + var N; + var f; + var i; + + lengths = [ + 7, + 15, + 31, + 63, + 127, + 255, + 511, + 1023 + ]; + + for ( i = 0; i < lengths.length; i++ ) { + N = lengths[ i ]; + f = createBenchmark( N ); + bench( format( '%s:N=%d', pkg, N ), f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/docs/repl.txt b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/docs/repl.txt new file mode 100644 index 000000000000..387fdf2987d4 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/docs/repl.txt @@ -0,0 +1,64 @@ + +{{alias}}( N, workspace, strideW, offsetW ) + Initializes a workspace array for performing a sine transform. + + The workspace array is divided into four sections: + + 1. sine table: the section ranges from indices 0 to N/2 and is used to + store a table of precomputed sine coefficients used by sine transforms. + + 2. scratch/workspace: the section ranges from indices N/2 to 3N/2 and is + used while performing transforms. This section is not updated during + initialization. + + 3. twiddle factors: the section ranges from indices (3N/2)+1 to (5N/2)+1 + and stores a table of reusable complex exponential constants as cosine/sine + pairs. + + 4. radix factor table: the section starts at index (5N/2)+2 and stores the + sequence length N+1, the number of factors into which N+1 was decomposed, + and the individual integer radix factors. + + Any remaining array space remains as unused storage. + + Parameters + ---------- + N: integer + Length of the sequence. + + workspace: ArrayLikeObject + Workspace array. + + strideW: integer + Stride length for `workspace`. + + offsetW: integer + Starting index for `workspace`. + + Returns + ------- + out: ArrayLikeObject + Workspace array. + + Examples + -------- + > var N = 7; + > var len = {{alias:@stdlib/math/base/special/floor}}( 2.5*N ) + 34; + > var workspace = new {{alias:@stdlib/array/float64}}( len ); + > var out = {{alias}}( N, workspace, 1, 0 ) + + > var bool = ( out === workspace ) + true + > var ns2 = {{alias:@stdlib/math/base/special/floor}}( N/2 ); + > var sineTable = workspace.slice( 0, ns2 ) + [ ~0.765, ~1.414, ~1.848 ] + > var iw = ns2 + N + 1; + > var twiddleFactors = workspace.slice( iw, iw + (N+1) ) + [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] + > var fw = ns2 + 2*(N+1); + > var factors = workspace.slice( fw, fw + 4 ) + [ 8, 2, 2, 4 ] + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/docs/types/index.d.ts b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/docs/types/index.d.ts new file mode 100644 index 000000000000..58cd8e06ba3d --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/docs/types/index.d.ts @@ -0,0 +1,65 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { Collection } from '@stdlib/types/array'; + +/** +* Initializes a workspace array for performing a sine transform. +* +* ## Notes +* +* - The workspace array should have a length of at least `( 2.5*N ) + 34` elements. +* +* @param N - length of the sequence +* @param workspace - workspace array +* @param strideW - stride length for `workspace` +* @param offsetW - starting index for `workspace` +* @returns workspace array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var floor = require( '@stdlib/math/base/special/floor' ); +* +* var N = 7; +* var workspace = new Float64Array( floor( 2.5*N ) + 34 ); +* +* var out = sinti( N, workspace, 1, 0 ); +* // returns +* +* var bool = ( out === workspace ); +* // returns true +* +* var sineTable = workspace.slice( 0, floor( N/2 ) ); +* // returns [ ~0.765, ~1.414, ~1.848 ] +* +* var twiddleFactors = workspace.slice( floor( 3*N/2 ) + 1, floor( 5*N/2 ) + 2 ); +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] +* +* var factors = workspace.slice( floor( 5*N/2 ) + 2, floor( 5*N/2 ) + 2 + 4 ); +* // returns [ 8, 2, 2, 4 ] +*/ +declare function sinti>( N: number, workspace: T, strideW: number, offsetW: number ): T; + + +// EXPORTS // + +export = sinti; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/docs/types/test.ts b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/docs/types/test.ts new file mode 100644 index 000000000000..1cf202c7bbcb --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/docs/types/test.ts @@ -0,0 +1,95 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +import floor = require( '@stdlib/math/base/special/floor' ); +import sinti = require( './index' ); + + +// TESTS // + +// The function returns a collection... +{ + const workspace = new Float64Array( floor( 2.5*7 ) + 34 ); + + sinti( 7, workspace, 1, 0 ); // $ExpectType Float64Array +} + +// The compiler throws an error if the function is provided a first argument which is not a number... +{ + const workspace = new Float64Array( floor( 2.5*7 ) + 34 ); + + sinti( '7', workspace, 1, 0 ); // $ExpectError + sinti( true, workspace, 1, 0 ); // $ExpectError + sinti( false, workspace, 1, 0 ); // $ExpectError + sinti( null, workspace, 1, 0 ); // $ExpectError + sinti( void 0, workspace, 1, 0 ); // $ExpectError + sinti( [], workspace, 1, 0 ); // $ExpectError + sinti( {}, workspace, 1, 0 ); // $ExpectError + sinti( ( x: number ): number => x, workspace, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a second argument which is not a collection... +{ + sinti( 7, '50', 1, 0 ); // $ExpectError + sinti( 7, 50, 1, 0 ); // $ExpectError + sinti( 7, true, 1, 0 ); // $ExpectError + sinti( 7, false, 1, 0 ); // $ExpectError + sinti( 7, null, 1, 0 ); // $ExpectError + sinti( 7, void 0, 1, 0 ); // $ExpectError + sinti( 7, {}, 1, 0 ); // $ExpectError + sinti( 7, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a third argument which is not a number... +{ + const workspace = new Float64Array( floor( 2.5*7 ) + 34 ); + + sinti( 7, workspace, '1', 0 ); // $ExpectError + sinti( 7, workspace, true, 0 ); // $ExpectError + sinti( 7, workspace, false, 0 ); // $ExpectError + sinti( 7, workspace, null, 0 ); // $ExpectError + sinti( 7, workspace, void 0, 0 ); // $ExpectError + sinti( 7, workspace, [], 0 ); // $ExpectError + sinti( 7, workspace, {}, 0 ); // $ExpectError + sinti( 7, workspace, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the function is provided a fourth argument which is not a number... +{ + const workspace = new Float64Array( floor( 2.5*7 ) + 34 ); + + sinti( 7, workspace, 1, '0' ); // $ExpectError + sinti( 7, workspace, 1, true ); // $ExpectError + sinti( 7, workspace, 1, false ); // $ExpectError + sinti( 7, workspace, 1, null ); // $ExpectError + sinti( 7, workspace, 1, void 0 ); // $ExpectError + sinti( 7, workspace, 1, [] ); // $ExpectError + sinti( 7, workspace, 1, {} ); // $ExpectError + sinti( 7, workspace, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the function is provided an unsupported number of arguments... +{ + const workspace = new Float64Array( floor( 2.5*7 ) + 34 ); + + sinti(); // $ExpectError + sinti( 7 ); // $ExpectError + sinti( 7, workspace ); // $ExpectError + sinti( 7, workspace, 1 ); // $ExpectError + sinti( 7, workspace, 1, 0, 123 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/examples/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/examples/index.js new file mode 100644 index 000000000000..e006767c0961 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/examples/index.js @@ -0,0 +1,46 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var Float64Array = require( '@stdlib/array/float64' ); +var zeroTo = require( '@stdlib/array/zero-to' ); +var logEach = require( '@stdlib/console/log-each' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var sinti = require( './../lib' ); + +var N = 7; +var workspace = new Float64Array( floor( 2.5*N ) + 34 ); + +sinti( N, workspace, 1, 0 ); +console.log( 'Sequence length: %d', N ); + +console.log( 'Sine table:' ); +var idx = zeroTo( floor( N/2 ), 'generic' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( 0, floor( N/2 ) ) ); + +console.log( 'Twiddle factors:' ); +idx = zeroTo( N+1, 'generic' ); +logEach( ' workspace[ %d ] = %0.4f', idx, workspace.slice( floor( 3*N/2 ) + 1, floor( 5*N/2 ) + 2 ) ); + +console.log( 'Factorization:' ); +var nf = workspace[ floor( 5*N/2 ) + 3 ]; + +console.log( ' number of factors: %d', nf ); +idx = zeroTo( nf, 'generic' ); +logEach( ' factor[ %d ]: %d', idx, workspace.slice( floor( 5*N/2 ) + 4, floor( 5*N/2 ) + 4 + nf ) ); diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/lib/index.js b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/lib/index.js new file mode 100644 index 000000000000..409ddc984fe1 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/lib/index.js @@ -0,0 +1,57 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Initialize a workspace array for performing a sine transform. +* +* @module @stdlib/fft/base/fftpack/sinti +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var floor = require( '@stdlib/math/base/special/floor' ); +* var sinti = require( '@stdlib/fft/base/fftpack/sinti' ); +* +* var N = 7; +* var workspace = new Float64Array( floor( 2.5*N ) + 34 ); +* +* var out = sinti( N, workspace, 1, 0 ); +* // returns +* +* var bool = ( out === workspace ); +* // returns true +* +* var sineTable = workspace.slice( 0, floor( N/2 ) ); +* // returns [ ~0.765, ~1.414, ~1.848 ] +* +* var twiddleFactors = workspace.slice( floor( 3*N/2 ) + 1, floor( 5*N/2 ) + 2 ); +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] +* +* var factors = workspace.slice( floor( 5*N/2 ) + 2, floor( 5*N/2 ) + 2 + 4 ); +* // returns [ 8, 2, 2, 4 ] +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/lib/main.js b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/lib/main.js new file mode 100644 index 000000000000..45262315d789 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/lib/main.js @@ -0,0 +1,200 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +* +* ## Notice +* +* The original C code and copyright notice are from the [PFFFT library]{@link https://github.com/marton78/pffft/blob/0b4ee12c4ba45a4a8e567550c16d96d1679f50ce/src/fftpack.c}. The implementation follows the original, but has been modified for JavaScript. +* +* ```text +* Copyright (c) 2004 the University Corporation for Atmospheric +* Research ("UCAR"). All rights reserved. Developed by NCAR's +* Computational and Information Systems Laboratory, UCAR, +* www.cisl.ucar.edu. +* +* Redistribution and use of the Software in source and binary forms, +* with or without modification, is permitted provided that the +* following conditions are met: +* +* - Neither the names of NCAR's Computational and Information Systems +* Laboratory, the University Corporation for Atmospheric Research, +* nor the names of its sponsors or contributors may be used to +* endorse or promote products derived from this Software without +* specific prior written permission. +* +* - Redistributions of source code must retain the above copyright +* notices, this list of conditions, and the disclaimer below. +* +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions, and the disclaimer below in the +* documentation and/or other materials provided with the +* distribution. +* +* THIS 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 AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT +* HOLDERS BE LIABLE FOR ANY CLAIM, INDIRECT, INCIDENTAL, SPECIAL, +* EXEMPLARY, OR CONSEQUENTIAL DAMAGES OR OTHER LIABILITY, WHETHER IN AN +* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +* SOFTWARE. +* ``` +*/ + +'use strict'; + +// MODULES // + +var sin = require( '@stdlib/math/base/special/sin' ); +var PI = require( '@stdlib/constants/float64/pi' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var rffti = require( '@stdlib/fft/base/fftpack/rffti' ); + + +// MAIN // + +/** +* Initializes a workspace array for performing a sine transform. +* +* ## Notes +* +* The workspace array is divided into four sections: +* +* ```text +* size = N/2 N+1 N+1 2+ceil(log2(N+1)/2) +* ↓ ↓ ↓ ↓ +* | sine table | scratch/workspace | twiddle factors | radix factor table | +* ↑ ↑ ↑ ↑ +* i = 0 ... N/2 ... (3N/2)+1 ... (5N/2)+2 ... +* ``` +* +* where +* +* - **sine table**: a table of precomputed sine coefficients used by sine transforms. +* - **scratch/workspace**: used as a scratch space when performing transforms. This section is not updated during initialization. +* - **twiddle factors**: a table of reusable complex-exponential constants stored as cosine/sine pairs. +* - **radix factor table**: a table containing the radix factorization of `N+1`. +* +* In general, a workspace array should have `2.5N + 34` indexed elements (as `log2(N+1)/2 ≤ 32` for all `2^64`). During initialization, only the sections for storing the sine coefficients, twiddle factors, and the factorization of `N+1` are updated. +* +* > Note: FFTPACK only requires `2.5N+15`, but we increase that number here to accommodate larger workspace arrays, where `N` may exceed `2^30` indexed elements. +* +* The factorization section is comprised as follows: +* +* ```text +* | sequence_length | number_of_factors | integer_factors | +* ``` +* +* The sequence length and number of factors (`nf`) comprise a single element each. Only the first `nf` elements in the integer factors section are written to, with the rest being unused. +* +* As for twiddle factors, these are small, reusable complex-exponential constants that appear inside each "butterfly" stage of a Cooley–Tukey–style FFT. Every arithmetic step in an FFT multiplies one intermediate value by some +* +* ```tex +* W_N^k +* ``` +* +* where `W_N^k` is an N-th root of unity. Formally, in a forward FFT, +* +* ```tex +* W_N^k = e^{-2\pi ik/N} +* ``` +* +* In a backward FFT, +* +* ```tex +* W_N^k = e^{+2\pi ik/N} +* ``` +* +* As may be observed, `W_N^k` for forward and backward FFTs is the same, except the sign of the exponent is flipped. As a consequence, both forward and backward FFT callers can reuse the same set of twiddle factors, with those performing a forward transform multiplying with `(cos,-sin)` and those performing a backward transform multiplying with `(cos,+sin)`. +* +* Because these constants only depend on the transform length `N` (and **not** on the input data), we can pre-compute and store them once, then "twiddle" them (i.e., reuse them with different indices) as we proceed through the factorization. +* +* > As a quick aside regarding the name "twiddle", early FFT papers (notably Gentleman & Sande, 1966) described how you "twiddle" one branch of each butterfly by a complex rotation before adding/subtracting. The coefficients themselves inherited the nickname "twiddle factors," and the term stuck. +* +* By reusing the workspace array when computing multiple transforms of the same length `N`, every subsequent `*f` (forward) or `*b` (backward) call can simply look up the pre-stored twiddle factors instead of recomputing sine and cosine on-the-fly. +* +* In short, twiddle factors are cached roots of unity that allow each stage of the algorithm to rotate data quickly and predictably. +* +* During initialization, `sinti` first writes the sine table, and then initializes the remaining three sections using `rffti`. +* +* @param {PositiveInteger} N - length of the sequence to transform +* @param {Collection} workspace - workspace array +* @param {integer} strideW - stride length for `workspace` +* @param {NonNegativeInteger} offsetW - starting index for `workspace` +* @returns {Collection} workspace array +* +* @example +* var Float64Array = require( '@stdlib/array/float64' ); +* var floor = require( '@stdlib/math/base/special/floor' ); +* +* var N = 7; +* var workspace = new Float64Array( floor( 2.5*N ) + 34 ); +* +* var out = sinti( N, workspace, 1, 0 ); +* // returns +* +* var bool = ( out === workspace ); +* // returns true +* +* var sineTable = workspace.slice( 0, floor( N/2 ) ); +* // returns [ ~0.765, ~1.414, ~1.848 ] +* +* var twiddleFactors = workspace.slice( floor( 3*N/2 ) + 1, floor( 5*N/2 ) + 2 ); +* // returns [ ~0.707, ~0.707, 0, 0, 0, 0, 0, 0 ] +* +* var factors = workspace.slice( floor( 5*N/2 ) + 2, floor( 5*N/2 ) + 2 + 4 ); +* // returns [ 8, 2, 2, 4 ] +*/ +function sinti( N, workspace, strideW, offsetW ) { + var offsetR; + var ns2; + var dt; + var fk; + var iw; + var i; + + if ( N <= 1 ) { + return workspace; + } + + // Compute the number of sine values to store: + ns2 = floor( N / 2 ); + + // Compute the angular increment: + dt = PI / ( N + 1 ); + + // Compute and store the sine table: + fk = 0.0; + iw = offsetW; + for ( i = 0; i < ns2; i++ ) { + fk += 1.0; + workspace[ iw+(i*strideW) ] = sin( fk*dt ) * 2.0; + } + // Resolve the starting index for the `rffti` workspace: + offsetR = offsetW + (ns2*strideW); + + // Initialize the real FFT workspace for a sequence of length N+1: + rffti( N+1, workspace, strideW, offsetR ); + + return workspace; +} + + +// EXPORTS // + +module.exports = sinti; diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/package.json b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/package.json new file mode 100644 index 000000000000..a88dc20f43a2 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/package.json @@ -0,0 +1,64 @@ +{ + "name": "@stdlib/fft/base/fftpack/sinti", + "version": "0.0.0", + "description": "Initialize a workspace array for performing a sine transform.", + "license": "Apache-2.0", + "author": { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + }, + "contributors": [ + { + "name": "The Stdlib Authors", + "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" + } + ], + "main": "./lib", + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "fft", + "fftpack", + "sinti", + "fourier", + "transform", + "twiddle", + "workspace", + "initialization", + "sine" + ], + "__stdlib__": {} +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/Makefile b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/Makefile new file mode 100644 index 000000000000..7ce16281940d --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/Makefile @@ -0,0 +1,137 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2026 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +# VARIABLES # + +ifndef VERBOSE + QUIET := @ +endif + +# Specify the path to FFTPACK: +FFTPACK ?= + +# Specify a list of FFTPACK source files: +FFTPACK_SRC ?= + +# Determine the OS: +# +# [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 +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]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options +# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option +ifeq ($(OS), WINNT) + fPIC ?= +else + fPIC ?= -fPIC +endif + +# List of C targets: +c_targets := runner.out + + +# RULES # + +#/ +# Compiles C source files. +# +# @param {string} [C_COMPILER] - C compiler +# @param {string} [CFLAGS] - C compiler flags +# @param {(string|void)} [fPIC] - flag indicating whether to generate position independent code +# +# @example +# make +# +# @example +# make all +#/ +all: $(c_targets) + +.PHONY: all + +#/ +# Compiles C source files. +# +# @private +# @param {string} CC - C compiler +# @param {string} CFLAGS - C compiler flags +# @param {(string|void)} fPIC - flag indicating whether to generate position independent code +#/ +$(c_targets): %.out: %.c + $(QUIET) $(CC) $(CFLAGS) -DFFTPACK_DOUBLE_PRECISION $(fPIC) -o $@ $(FFTPACK_SRC) $< -lm + +#/ +# Generates test fixtures. +# +# @example +# make run +#/ +run: $(c_targets) + $(QUIET) ./$< + +.PHONY: run + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: + $(QUIET) -rm -f *.o *.out + +.PHONY: clean + +#/ +# Removes generated test fixtures. +# +# @example +# make clean-fixtures +#/ +clean-fixtures: + $(QUIET) -rm -f *.json + +.PHONY: clean-fixtures diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/large.json b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/large.json new file mode 100644 index 000000000000..867e4abd85b0 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/large.json @@ -0,0 +1 @@ +{"lengths":[419,396,152,478,671,757,345,777,323,568],"offsets":[0,420,817,970,1449,2121,2879,3225,4003,4327],"sines":[0.014959825515465829,0.029918814030527239,0.044876128591609873,0.059830932338796911,0.074782388552651249,0.089729660701029848,0.10467191248588767,0.11960830789006834,0.1345380112240793,0.14946018717284851,0.16437400084246018,0.17927861780686699,0.19417320415457626,0.20905692653530694,0.22392895220661571,0.23878844908048869,0.25363458576989661,0.26846653163531092,0.28328345683117812,0.29808453235234889,0.31286893008046174,0.32763582283027542,0.34238438439595004,0.3571137895972733,0.37182321432582921,0.38651183559110652,0.40117883156654555,0.41582338163551869,0.43044466643724411,0.44504186791262879,0.45961416935003907,0.47416075543099501,0.48868081227578802,0.503173527489017,0.51763809020504159,0.53207369113335024,0.54647952260384003,0.56085477861200561,0.57519865486403454,0.58951034882180842,0.60378905974780417,0.61803398874989479,0.63224433882604869,0.64641931490892002,0.66055812391033408,0.67465997476565998,0.68872407847807016,0.70274964816268537,0.71673589909060054,0.73068204873279008,0.74458731680389034,0.75845092530585678,0.7722720985714927,0.78605006330784721,0.79978404863948194,0.81347328615160042,0.82711700993304127,0.84071445661913102,0.85426486543439362,0.86776747823511624,0.88122153955176752,0.89462629663126525,0.90798099947909361,0.92128490090126458,0.93453725654612396,0.94773732494599727,0.96088436755867535,0.97397764880873461,0.98701643612869372,1,1.0129276139938459,1.0257985548118123,1.0386121023263379,1.0513675396210094,1.0640641530306731,1.0767012321813647,1.0892780700300542,1.1017939629042051,1.1142482105411449,1.1266401161272441,1.1389689863369039,1.1512341313713472,1.1634348649972115,1.1755705045849463,1.1876403711470034,1.1996437893758274,1.2115800876816396,1.2234485982300127,1.2352486569792356,1.246979603717467,1.258640782099675,1.2702315396843575,1.2817512279700483,1.2931992024315995,1.3045748225562424,1.3158774518794252,1.3271064580204226,1.3382612127177165,1.3493410918641486,1.3603454755418389,1.3712737480568684,1.3821252979737293,1.3928995181495338,1.4035958057679827,1.4142135623730949,1.4247521939026897,1.4352111107216237,1.4455897276547831,1.4558874640198221,1.4661037436596527,1.4762379949746811,1.4862896509547885,1.496258149211054,1.5061429320072217,1.515943446290906,1.525659143724533,1.5352894807160222,1.544833918449199,1.5542919229139418,1.5636629649360596,1.5729465202069,1.5821420693126824,1.591249097763562,1.6002670960224126,1.6091955595333367,1.6180339887498949,1.6267818891630557,1.6354387713288627,1.6440041508958199,1.6524775486319898,1.6608584904518076,1.6691465074426053,1.6773411358908481,1.6854419173080784,1.6934483984565682,1.7013601313746791,1.7091766734019234,1.7168975872037322,1.724522440795925,1.7320508075688774,1.7394822663113907,1.7468164012342595,1.7540528019935333,1.761191063713476,1.7682307870092195,1.7751715780091082,1.7820130483767358,1.7887548153326738,1.7953965016758868,1.8019377358048383,1.80837815173828,1.8147173891357298,1.8209550933176317,1.8270909152852017,1.8331245117399524,1.8390555451029011,1.8448836835334586,1.8506086009479934,1.8562299770380779,1.8617474972884085,1.8671608529944035,1.8724697412794744,1.8776738651119722,1.8827729333218064,1.8877666606167351,1.8926547675983285,1.8974369807775995,1.9021130325903071,1.9066826614119254,1.9111456115722816,1.9155016333698609,1.9197504830857781,1.9238919229974119,1.9279257213917065,1.9318516525781366,1.9356694969013331,1.9393790407533738,1.9429800765857348,1.9464724029209028,1.9498558243636472,1.9531301516119528,1.9562952014676114,1.9593507968464712,1.9622967667883453,1.9651329464665765,1.9678591771972593,1.9704753064481184,1.9729811878470429,1.9753766811902755,1.977661652450257,1.9798359737831259,1.9818995235358694,1.9838521862531324,1.9856938526836747,1.9874244197864852,1.9890437907365466,1.9905518749302529,1.9919485879904781,1.9932338517712975,1.9944075943623603,1.9954697500929122,1.9964202595354703,1.9972590695091477,1.9979861330826292,1.9986014095767972,1.9991048645670066,1.9994964698850131,1.9997762036205469,1.9999440501225396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.015826498063018463,0.031652005062964277,0.04747552999882565,0.063296081993708606,0.079112670356886197,0.094924304645836038,0.11072999472826232,0.12652875084409831,0.14231958366748573,0.15810150436872675,0.17387352467620495,0.18963465693827145,0.20538391418509211,0.22112031019045214,0.23684285953351392,0.25255057766052458,0.26824248094646935,0.28391758675666662,0.29957491350830084,0.31521348073188987,0.33083230913268236,0.34643042065198193,0.3620068385283931,0.3775605873589874,0.39309069316038281,0.40859618342973558,0.4240760872056385,0.43952943512892323,0.45495525950336191,0.47035259435626492,0.48572047549897024,0.50105794058722175,0.51636402918143165,0.5316377828068235,0.5468782450134525,0.5620844614360988,0.57725547985403036,0.59239035025063158,0.60748812487289328,0.62254785829076242,0.63756860745634447,0.65254943176295799,0.66748939310403599,0.68238755593187006,0.69724298731619538,0.71205475700261123,0.72682193747083357,0.7415436039927773,0.7562188346904628,0.77084671059374466,0.78542631569785781,0.7999567370207783,0.814437064660395,0.82886639185148747,0.84324381502250823,0.85756843385216552,0.87183935132580104,0.88605567379156147,0.90021651101636024,0.91432097624162356,0.92836818623881956,0.94235726136476727,0.95628732561671981,0.97015750668722001,0.98396693601872509,0.99771474885799583,1.011400084310248,1.0250220853930618,1.0385798990900477,1.0520726764042598,1.0654995724113645,1.0788597463125469,1.0921523614871631,1.1053765855451299,1.1185315903790496,1.1316165522160662,1.14463065166945,1.1575730737899093,1.1704430081166217,1.1832396487279861,1.1959621942920899,1.2086098481168888,1.2211818182000953,1.2336773172787756,1.2460955628786479,1.2584357773630801,1.2706971879817879,1.2828790269192234,1.2949805313426561,1.3070009434499426,1.3189395105169797,1.3307954849448413,1.3425681243065923,1.3542566913937808,1.3658604542626021,1.3773786862797321,1.3888106661678321,1.4001556780507134,1.4114130114981658,1.4225819615704469,1.4336618288624241,1.4446519195473717,1.45555154542042,1.4663600239416499,1.477076678278834,1.4877008373498204,1.4982318358645561,1.5086690143667485,1.5190117192751591,1.5292593029245329,1.539411123606155,1.5494665456080339,1.5594249392547108,1.5692856809466906,1.5790481531994909,1.5887117446823105,1.5982758502563099,1.6077398710125061,1.6171032143092769,1.6263652938094715,1.635525529517128,1.6445833478137928,1.6535381814944403,1.6623894698029931,1.6711366584674348,1.6797791997345199,1.6883165524040751,1.6967481818628878,1.705073560118185,1.7132921658306961,1.7214034843473001,1.7294070077332517,1.7373022348039906,1.7450886711565246,1.7527658292003891,1.7603332281881816,1.7677903942456652,1.7751368604014428,1.7823721666162,1.7894958598115125,1.7965074938982175,1.8034066298043487,1.8101928355026313,1.8168656860375354,1.8234247635518872,1.8298696573130349,1.8361999637385695,1.8424152864215972,1.8485152361555628,1.8544994309586211,1.8603674960975585,1.8661190641112568,1.8717537748337054,1.8772712754165553,1.8826712203512126,1.8879532714904768,1.8931170980697143,1.8981623767275715,1.9030887915262238,1.9078960339711599,1.9125838030304996,1.9171518051538445,1.9215997542906611,1.9259273719081922,1.9301343870088994,1.9342205361474336,1.9381855634471314,1.9420292206160377,1.9457512669624553,1.949351469410016,1.9528296025122764,1.9561854484668355,1.9594187971289734,1.9625294460248102,1.9655172003639867,1.9683818730518601,1.9711232847012214,1.9737412636435285,1.9762356459396555,1.9786062753901597,1.9808530035450616,1.9829756897131419,1.9849742009707518,1.9868484121701357,1.9885982059472691,1.990223472729207,1.9917241107409465,1.9931000260117988,1.9943511323812748,1.9954773515044801,1.9964786128570207,1.9973548537394192,1.9981060192810418,1.9987320624435341,1.9992329440237657,1.9996086326562865,1.9998591048152903,1.9999843448160872,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.041063684976780777,0.082110057463206612,0.12312181226788566,0.16408165879427511,0.20497232833041376,0.2457765813294282,0.28647721467774295,0.32705706894792996,0.36749903563314062,0.40778606436006892,0.44790117007740593,0.48782744021675423,0.52754804182298365,0.56704622865102161,0.60630534822608695,0.64530884886438966,0.68404028665133743,0.72248333237430573,0.76062177840705125,0.79843954554286178,0.83592068977356671,0.8730494090115466,0.90981004975190871,0.94618711367202002,0.98216526416561634,1.0177293328087298,1.0528643257547114,1.0875554300556531,1.1217880199075394,1.155547662816502,1.1888201256835735,1.2215913808053755,1.2538476117882129,1.2855752193730785,1.3167608271691154,1.3473912872931142,1.3774536859126771,1.4069353486906995,1.4358238461288837,1.4641069988080293,1.4917728825228866,1.5188098333094142,1.5452064523623177,1.5709516108407975,1.5960344545604788,1.6204444085695469,1.6441711816071565,1.6672047704422388,1.6895354640908729,1.7111538479104462,1.7320508075688772,1.7522175328872269,1.7716455215540796,1.7903265827101247,1.8082528404014317,1.8254167368999608,1.8418110358899071,1.8574288255185405,1.8722635213102476,1.8863088689425549,1.8995589468829555,1.9120081688854353,1.9236512863456381,1.9344833905136831,1.944499914563699,1.9536966355192014,1.962069676033505,1.969615506024416,1.9763309441625188,1.982213159212427,1.9872596712264354,1.9914683525900689,1.9948374289190862,1.997365479807562,1.9990514394267318,1.9998945969743462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0131172030504425,0.026233841854996595,0.039349352192045314,0.052463169888513538,0.065574730844136273,0.078683471055723875,0.091788826641423016,0.10489023386497247,0.11798712915995264,0.13107894915402779,0.14416513069317982,0.15724511086593293,0.17031832702756744,0.18338421682432243,0.19644221821758592,0.20949176950807125,0.22253230935997889,0.23556327682514283,0.24858411136716022,0.26159425288550303,0.27459314173961147,0.28758021877296691,0.30055492533714495,0.31351670331584558,0.32646499514890126,0.33939924385626064,0.35231889306194741,0.36522338701799339,0.37811217062834435,0.39098468947273762,0.40384038983055143,0.41667871870462297,0.42949912384503636,0.44230105377287798,0.45508395780395872,0.46784728607250198,0.48059048955479677,0.49331302009281397,0.50601433041778621,0.51869387417374857,0.53135110594104096,0.5439854812597692,0.55659645665322566,0.56918348965126742,0.58174603881365083,0.59428356375332192,0.60679552515966151,0.61928138482168427,0.63174060565118995,0.64417265170586691,0.65657698821234589,0.66895308158920364,0.68130039946991527,0.69361841072575492,0.70590658548864171,0.71816439517393316,0.73039131250316214,0.74258681152671857,0.75475036764647319,0.76688145763834348,0.77897955967480115,0.79104415334731804,0.80307471968875233,0.81507074119567235,0.82703170185061714,0.83895708714429351,0.85084638409770774,0.86269908128423212,0.874514668851604,0.88629263854385776,0.89803248372318756,0.90973369939174065,0.92139578221334051,0.9330182305351381,0.94460054440919072,0.95614222561396767,0.96764277767578177,0.97910170589014522,0.99051851734305008,1.0018927209321706,1.0132238273879894,1.0245113492948432,1.0357548011118884,1.0469536991939894,1.0581075618125197,1.0692159091760869,1.0802782634511692,1.0912941487826708,1.1022630913143909,1.1131846192094061,1.1240582626703688,1.1348835539597133,1.1456600274197783,1.1563872194928357,1.1670646687410324,1.1776919158662373,1.1882685037298009,1.1987939773722172,1.2092678840326954,1.2196897731686358,1.2300591964750085,1.2403757079036408,1.2506388636824004,1.2608482223342876,1.2710033446964246,1.2811037939389462,1.2911491355837907,1.3011389375233893,1.311072770039253,1.3209502058204583,1.3307708199820276,1.3405341900832051,1.3502398961456301,1.3598875206714021,1.3694766486610386,1.3790068676313283,1.3884777676330728,1.3978889412687228,1.4072399837099001,1.4165304927148139,1.4257600686455623,1.4349283144853227,1.4440348358554314,1.4530792410323456,1.4620611409644966,1.4709801492890218,1.4798358823483881,1.4886279592068918,1.4973560016670471,1.5060196342858534,1.5146184843909456,1.523152182096625,1.5316203603197696,1.5400226547956253,1.5483587040934748,1.5566281496321843,1.5648306356956281,1.5729658094479908,1.5810333209489444,1.5890328231687005,1.5969639720029396,1.6048264262876109,1.6126198478136096,1.6203439013413243,1.627998254615058,1.6355825783773199,1.6430965463829887,1.6505398354133465,1.6579121252899818,1.6652130988885634,1.6724424421524802,1.6795998441063513,1.6866849968694033,1.6936975956687133,1.7006373388523184,1.7075039279021935,1.7142970674470899,1.7210164652752429,1.7276618323469397,1.7342328828069538,1.7407293339968417,1.7471509064670998,1.7534973239891876,1.7597683135674071,1.7659636054506487,1.7720829331439922,1.7781260334201727,1.784092646330901,1.7899825152180475,1.7957953867246816,1.8015310108059706,1.8071891407399343,1.8127695331380596,1.8182719479557683,1.8236961485027445,1.8290419014531152,1.8343089768554866,1.8394971481428357,1.8446061921422574,1.849635889084563,1.854586022613735,1.8594563797962316,1.8642467511301493,1.8689569305542326,1.8735867154567385,1.8781359066841519,1.8826043085497521,1.8869917288420313,1.8912979788329618,1.8955228732861147,1.8996662304646275,1.9037278721390221,1.9077076235948718,1.9116053136403159,1.9154207746134242,1.919153842389409,1.9228043563876847,1.9263721595787762,1.9298570984910726,1.9332590232174292,1.9365777874216166,1.9398132483446144,1.9429652668107524,1.9460337072336982,1.9490184376222874,1.9519193295862045,1.9547362583415027,1.957469102715973,1.9601177451543563,1.9626820717234006,1.9651619721167606,1.9675573396597443,1.9698680713139005,1.9720940676814507,1.9742352330095667,1.9762914751944876,1.978262705785482,1.980148839988654,1.981949796670589,1.9836654983618449,1.9852958712602842,1.9868408452342483,1.9883003538255748,1.9896743342524557,1.9909627274121384,1.9921654778834679,1.993282533929271,1.9943138474985813,1.9952593742287068,1.9961190734471375,1.9968929081732953,1.9975808451201256,1.9981828546955271,1.9986989110036268,1.9991289918458928,1.9994730787220896,1.9997311568310734,1.9999032150714295,1.9999892460419495,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.009349944077611097,0.018699683807678551,0.028049014847124826,0.037397732861804533,0.046745633530970221,0.056092512551737916,0.065438165643552287,0.074782388552651249,0.084124977056530048,0.093465726968404675,0.10280443414167441,0.11214089447438358,0.12147490391368231,0.13080625846028615,0.14013475417293461,0.14946018717284851,0.15878235364818558,0.16810104985849508,0.17741607213917066,0.18672721690590136,0.19603428065912121,0.2053370599884568,0.21463535157717281,0.22392895220661571,0.23321765876065514,0.24250126823012308,0.25177957771725074,0.2610523844401032,0.27031948573701081,0.27958067907099893,0.2888357620342144,0.29808453235234889,0.3073267878890602,0.31656232665038986,0.32579094678917747,0.33501244660947282,0.3442266245709435,0.35343327929327989,0.36263220956059639,0.37182321432582921,0.38100609271512997,0.3901806440322565,0.39934666776295868,0.4085039635793607,0.41765233134433977,0.42679157111589999,0.43592148315154206,0.44504186791262879,0.45415252606874645,0.46325325850206062,0.47234386631166858,0.48142415081794604,0.49049391356688954,0.49955295633445368,0.50860108113088354,0.51763809020504159,0.52666378604872965,0.53567797140100615,0.54468044925249637,0.55367102284969871,0.56264949569928535,0.57161567157239546,0.58056935450892466,0.58951034882180842,0.59843845910129745,0.60735349021922946,0.61625524733329373,0.62514353589128902,0.63401816163537605,0.64287893060632317,0.65172564914774467,0.66055812391033408,0.66937616185608984,0.67817957026253339,0.68696815672692213,0.69574172917045451,0.70450009584246709,0.713243065324626,0.72197044653511089,0.73068204873279008,0.73937768152138994,0.7480571548536562,0.75672027903550709,0.76536686473017956,0.7739967229623671,0.78260966512235008,0.7912055029701176,0.79978404863948194,0.80834511464218428,0.81688851387199224,0.82541405960878944,0.83392156552265617,0.84241084567794156,0.85088171453732786,0.85933398696588492,0.86776747823511624,0.8761820040269972,0.8845773804380026,0.89295342398312605,0.90130995159989036,0.90964678065234872,0.91796372893507538,0.92626061467714882,0.93453725654612396,0.9427934736519954,0.9510290855511504,0.95924391225031358,0.9674377742104795,0.97561049235083808,0.98376188805268672,0.99189178316333537,1,1.0080863613536855,1.0161506904930588,1.0241928111683121,1.0322125476150132,1.0402097245579491,1.0481841672149554,1.056135701300736,1.0640641530306731,1.0719693491246252,1.079851116810713,1.0877092838290974,1.0955436784357429,1.1033541294061713,1.1111404660392044,1.1189025181606949,1.1266401161272441,1.1343530908299118,1.1420412736979104,1.1497044967022902,1.1573425923596115,1.1649553937356043,1.172542734448818,1.1801044486742562,1.1876403711470034,1.1951503371658332,1.2026341825968117,1.2100917438768823,1.2175228580174413,1.2249273626079002,1.2323050958192352,1.2396558964075231,1.246979603717467,1.2542760576859069,1.2615450988453165,1.268786568327291,1.2760003078660174,1.2831861598017336,1.2903439670841752,1.2974735732760072,1.3045748225562424,1.3116475597236481,1.3186916302001379,1.3257068800341487,1.3326931559040078,1.3396503051212818,1.346578175634114,1.3534766160305485,1.3603454755418389,1.3671846040457425,1.3739938520698032,1.3807730707946166,1.3875221120570831,1.3942408283536465,1.4009290728435169,1.4075866993518806,1.4142135623730949,1.4208095170738684,1.4273744192964244,1.4339081255616546,1.4404104930722532,1.4468813797158373,1.4533206440680542,1.4597281453956712,1.4661037436596527,1.4724472995182187,1.4787586743298926,1.4850377301565292,1.4912843297663312,1.4974983366368468,1.5036796149579548,1.5098280296348319,1.515943446290906,1.5220257312707921,1.5280747516432149,1.5340903752039121,1.5400724704785256,1.546020906725474,1.55193555393881,1.557816282851062,1.5636629649360596,1.5694754724117421,1.5752536782429507,1.5809974561442071,1.5867066805824703,1.5923812267798834,1.5980209707164981,1.603625789132987,1.6091955595333367,1.6147301601875248,1.6202294701341811,1.6256933691832305,1.6311217379185203,1.6365144577004302,1.6418714106684646,1.6471924797438295,1.6524775486319898,1.6577265018252125,1.6629392246050905,1.6681156030450497,1.6732555240128395,1.6783588751730043,1.6834255449893401,1.6884554227273303,1.6934483984565682,1.6984043630531578,1.7033232082020988,1.708204826399655,1.7130491109557029,1.7178559559960638,1.7226252564648179,1.7273569081265998,1.7320508075688774,1.7367068522042111,1.7413249402724964,1.7459049708431886,1.7504468438175074,1.7549504599306252,1.7594157207538368,1.7638425286967101,1.7682307870092195,1.7725803997838605,1.7768912719577445,1.7811633093146786,1.7853964184872231,1.7895905069587321,1.7937454830653767,1.7978612559981471,1.8019377358048383,1.8059748333920149,1.80997246052696,1.8139305298396009,1.8178489548244217,1.8217276498423516,1.8255665301226378,1.8293655117646976,1.8331245117399524,1.8368434478936422,1.8405222389466211,1.844160804497134,1.8477590650225735,1.8513169418812176,1.8548343573139499,1.8583112344459565,1.8617474972884085,1.8651430707401222,1.8684978805891996,1.8718118535146515,1.8750849170879984,1.8783169997748557,1.8815080309364947,1.8846579408313886,1.8877666606167351,1.8908341223499621,1.8938602589902114,1.8968450043998055,1.899788293345692,1.9026900615008691,1.9055502454457924,1.9083687826697608,1.9111456115722816,1.9138806714644176,1.9165739025701147,1.9192252460275057,1.921834643890199,1.9244020391285441,1.926927375630878,1.9294105982047518,1.9318516525781366,1.9342504854006102,1.9366070442445229,1.9389212776061429,1.9411931349067819,1.943422566493902,1.9456095236421986,1.9477539585546673,1.9498558243636472,1.9519150751318459,1.9539316658533434,1.9559055524545754,1.957836691795297,1.9597250416695249,1.9615705608064609,1.9633732088713929,1.9651329464665765,1.9668497351320968,1.9685235373467087,1.9701543165286557,1.9717420370364718,1.973286664169758,1.9747881641699425,1.9762465042210176,1.977661652450257,1.979033577928913,1.9803622506728911,1.9816476416434072,1.9828897227476208,1.9840884668392493,1.9852438477191616,1.9863558401359507,1.9874244197864852,1.9884495633164407,1.9894312483208101,1.9903694533443939,1.9912641578822676,1.9921153423802318,1.9929229882352384,1.9936870777957967,1.9944075943623603,1.9950845221876921,1.995717846477207,1.9963075533892971,1.9968536300356332,1.9973560644814459,1.9978148457457883,1.9982299638017738,1.9986014095767972,1.9989291749527314,1.9992132527661057,1.9994536368082627,1.9996503218254928,1.99980330351915,1.9999125785457454,1.9999781445170208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0082891389431425707,0.016578135499353337,0.024866847284146346,0.033155131917927322,0.041442847028439381,0.049729850253208641,0.058015999241989677,0.066301151659210703,0.074585165186418584,0.082867897524723511,0.09114920639724329,0.099428949551547421,0.10770698476210053,0.11598316983270551,0.1242573625989461,0.13252942093062889,0.14079920273422478,0.14906656595530979,0.15733136858100527,0.16559346864241722,0.17385272421707501,0.18210899343136933,0.19036213446298908,0.19861200554335767,0.20685846496006821,0.2151013710593177,0.22334058224834041,0.23157595699784003,0.23980735384442078,0.24803463139301743,0.25625764831932418,0.26447626337222208,0.27269033537620557,0.28089972323380746,0.28910428592802262,0.29730388252473022,0.30549837217511483,0.31368761411808566,0.32187146768269465,0.33004979229055276,0.33822244745824465,0.34638929279974212,0.35455018802881533,0.36270499296144265,0.37085356751821891,0.37899577172676108,0.38713146572411322,0.39526050975914861,0.40338276419497066,0.411498089511311,0.41960634630692673,0.42770739530199448,0.4358010973405031,0.44388731339264409,0.4519659045571997,0.46003673206392887,0.46809965727595093,0.47615454169212729,0.48420124694944028,0.49223963482536992,0.50026956724026839,0.50829090625973172,0.5163035140969694,0.5243072531151709,0.53230198582987009,0.54028757491130697,0.54826388318678654,0.5562307736430353,0.56418810942855424,0.57213575385597026,0.5800735704043839,0.58800142272171418,0.59591917462704114,0.60382669011294487,0.61172383334784197,0.61961046867831859,0.62748646063146074,0.6353516739171815,0.64320597343054442,0.65104922425408529,0.65888129166012865,0.66670204111310272,0.67451133827185006,0.68230904899193567,0.69009503932795047,0.69786917553581296,0.70563132407506635,0.71338135161117211,0.72111912501780073,0.72884451137911832,0.73655737799207011,0.74425759236865918,0.75194502223822335,0.75961953554970618,0.767281000473926,0.77492928540584027,0.78256425896680626,0.79018579000683742,0.79779374760685662,0.80538800108094499,0.8129684199785866,0.82053487408690928,0.82808723343292179,0.83562536828574574,0.84314914915884442,0.85065844681224734,0.85815313225476963,0.86563307674622825,0.87309815179965322,0.88054822918349485,0.88798318092382633,0.89540287930654205,0.90280719687955135,0.91019600645496801,0.91756918111129493,0.92492659419560397,0.93226811932571219,0.93959363039235244,0.94690300156133944,0.95419610727573168,0.96147282225798802,0.96873302151211904,0.97597658032583567,0.98320337427268967,0.99041327921421241,0.9976061713020461,1.0047819269800724,1.0119404229865334,1.0190815363561503,1.0262051444222349,1.0333111248187969,1.0403993554826458,1.0474697146554874,1.0545220808860161,1.0615563330319999,1.068572350262363,1.0755700120592593,1.0825491982201445,1.08950978885984,1.0964516644125919,1.1033747056341254,1.1102787936036937,1.117163809726119,1.1240296357338313,1.1308761536888992,1.1377032459850562,1.1445107953497202,1.1512986848460087,1.1580667978747472,1.1648150181764723,1.1715432298334274,1.1782513172715563,1.1849391652624865,1.1916066589255097,1.1982536837295537,1.204880125495152,1.2114858703964027,1.2180708049629259,1.224634816081811,1.2311777909995614,1.2376996173240293,1.2442001830263489,1.2506793764428581,1.257137086277019,1.2635732016013275,1.2699876118592206,1.2763802068669745,1.2827508768155975,1.2890995122727162,1.2954260041844556,1.3017302438773115,1.3080121230600186,1.3142715338254094,1.3205083686522685,1.3267225204071795,1.3329138823463651,1.33908234811752,1.3452278117616401,1.3513501677148394,1.357449310810166,1.3635251362794067,1.3695775397548886,1.3756064172712699,1.3816116652673269,1.3875931805877331,1.3935508604848299,1.3994846026203933,1.4053943050673905,1.411279866311731,1.4171411852540108,1.4229781612112486,1.4287906939186155,1.4345786835311576,1.4403420306255101,1.4460806362016063,1.4517944016843776,1.4574832289254467,1.4631470202048131,1.4687856782325341,1.4743991061503918,1.4799872075335614,1.4855498863922636,1.491087047173417,1.4965985947622762,1.5020844344840685,1.5075444721056175,1.5129786138369643,1.5183867663329769,1.5237688366949542,1.5291247324722219,1.5344543616637201,1.5397576327195843,1.5450344545427175,1.5502847364903551,1.5555083883756224,1.5607053204690828,1.5658754435002802,1.5710186686592718,1.5761349075981537,1.5812240724325783,1.5862860757432655,1.5913208305775015,1.5963282504506353,1.6013082493475619,1.6062607417242021,1.6111856425089695,1.6160828671042342,1.6209523313877741,1.6257939517142215,1.6306076449164981,1.6353933283072453,1.640150919680244,1.6448803373118259,1.6495814999622784,1.6542543268772398,1.658898737789086,1.66351465291831,1.6681019929748917,1.6726606791596603,1.6771906331656476,1.6816917771794335,1.6861640338824821,1.6906073264524704,1.6950215785646072,1.6994067143929452,1.7037626586116832,1.7080893363964587,1.7123866734256348,1.7166545958815767,1.7208930304519185,1.725101904330824,1.7292811452202363,1.7334306813311202,1.7375504413846956,1.7416403546136603,1.7457003507634083,1.7497303600932343,1.7537303133775326,1.7577001419069862,1.761639777489747,1.7655491524526068,1.7694281996421608,1.7732768524259601,1.777095044693656,1.7808827108581371,1.7846397858566545,1.7883662051519409,1.7920619047333166,1.7957268211177919,1.7993608913511565,1.8029640530090605,1.8065362441980861,1.810077403556813,1.8135874702568706,1.8170663840039833,1.820514085039006,1.8239305141389512,1.8273156126180063,1.8306693223285408,1.8339915856621061,1.8372823455504246,1.8405415454663696,1.8437691294249379,1.846965041984209,1.8501292282462996,1.8532616338583059,1.8563622050132367,1.8594308884509385,1.8624676314590096,1.8654723818737067,1.8684450880808396,1.8713856990166586,1.8742941641687316,1.8771704335768113,1.8800144578336944,1.8828261880860691,1.8856055760353547,1.8883525739385323,1.8910671346089629,1.8937492114171997,1.8963987582917878,1.8990157297200572,1.9016000807489029,1.9041517669855577,1.9066707445983548,1.9091569703174815,1.9116104014357214,1.9140309958091875,1.916418711858048,1.9187735085672393,1.9210953454871702,1.923384182734418,1.9256399809924125,1.9278627015121115,1.9300523061126669,1.9322087571820805,1.9343320176778496,1.9364220511276031,1.93847882162973,1.9405022938539926,1.9424924330421367,1.9444492050084869,1.9463725761405344,1.9482625133995142,1.9501189843209721,1.951941957015324,1.9537314001684016,1.9554872830419918,1.9572095754743641,1.9588982478807888,1.9605532712540452,1.9621746171649197,1.9637622577626948,1.9653161657756264,1.9668363145114134,1.9683226778576555,1.9697752302823015,1.9711939468340893,1.9725788031429727,1.9739297754205412,1.9752468404604278,1.9765299756387087,1.9777791589142912,1.9789943688292921,1.9801755845094067,1.9813227856642674,1.9824359525877921,1.9835150661585228,1.984560107839954,1.9855710596808507,1.9865479043155576,1.9874906249642972,1.9883992054334565,1.9892736301158682,1.9901138839910757,1.9909199526255934,1.9916918221731528,1.9924294793749417,1.993132911559832,1.9938021066445957,1.9944370531341147,1.9950377401215764,1.9956041572886623,1.9961362949057246,1.9966341438319535,1.997097695515534,1.9975269419937933,1.9979218758933375,1.9982824904301772,1.9986087794098459,1.9989007372275047,1.9991583588680395,1.999381639906147,1.99957057650641,1.999725165423365,1.9998454040015561,1.9999312901755812,1.9999828224701284,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.018159245591526024,0.036316994112159981,0.054471748614430215,0.072622012397695668,0.090766289131535768,0.10890308297910978,0.12703089872047546,0.1451482418758569,0.16325361882885114,0.18134553694956404,0.19942250471766432,0.21748303184534645,0.23552562940019189,0.25354880992791839,0.27155108757500779,0.28953097821120144,0.30748699955185382,0.32541767128013405,0.34332151516906489,0.36119705520338963,0.37904281770125675,0.39685733143571222,0.41463912775598877,0.43238674070858391,0.45009870715811445,0.46777356690793959,0.48540986282054127,0.50300614093765206,0.52056095060012209,0.53807284456751203,0.55554037913740661,0.57296211426443455,0.5903366136789876,0.60766244500562927,0.62493817988118017,0.64216239407247588,0.65933366759378054,0.67645058482385423,0.69351173462265692,0.71051571044768558,0.72746111046993078,0.7443465376894457,0.76117060005051629,0.77793191055642374,0.79462908738379112,0.81126075399650144,0.82782553925918234,0.84432207755024291,0.86074900887445815,0.87710497897508832,0.89338863944552549,0.90959864784045819,0.92573366778654387,0.94179236909258146,0.95777342785917385,0.97367552658787193,0.98949735428979091,1.0052376065936894,1.0208949858535039,1.0364682012553286,1.0519559689238303,1.0673570120280946,1.0826700608868878,1.0978938530733329,1.113027133518983,1.1280686546172929,1.1430171763264727,1.1578714662717184,1.1726302998468101,1.1872924603150701,1.2018567389096728,1.2163219349332963,1.2306868558571098,1.244950317419087,1.259111143721638,1.2731681673285518,1.2871202293612416,1.3009661795942837,1.314704876550244,1.3283351875937821,1.3418559890250279,1.3552661661722205,1.3685646134836034,1.3817502346185666,1.3948219425380322,1.4077786595940691,1.4206193176187369,1.433342858012147,1.4459482318297345,1.4584343998687344,1.470800332753855,1.4830450110221416,1.4951674252070208,1.5071665759215229,1.5190414739406735,1.5307911402830447,1.5424146062914657,1.553910913712877,1.5652791147773339,1.5765182722761386,1.5876274596391065,1.5986057610109525,1.6094522713267976,1.620166096386781,1.6307463529297805,1.6411921687062294,1.6515026825500256,1.6616770444495272,1.6717144156176289,1.6816139685609126,1.6913748871478664,1.7009963666761683,1.7104776139390261,1.719817847290571,1.7290162967102973,1.7380722038665437,1.746984822179011,1.7557534168803111,1.7643772650765435,1.7728556558068884,1.7811878901022233,1.7893732810427434,1.7974111538145938,1.8053008457655024,1.8130417064594078,1.8206330977300846,1.8280743937337529,1.8353649810006736,1.8425042584857252,1.8494916376179529,1.8563265423490918,1.8630084092010575,1.8695366873123995,1.8759108384837146,1.8821303372220177,1.8881946707840624,1.8941033392186146,1.899855855407667,1.9054517451065982,1.9108905469832713,1.9161718126560647,1.921295106730839,1.9262600068368303,1.9310661036614716,1.9357130009841363,1.9402003157088041,1.9445276778956435,1.9486947307915095,1.952701130859356,1.9565465478065562,1.960230664612133,1.9637531775528949,1.9671137962284744,1.9703122435852694,1.9733482559392841,1.9762215829978678,1.9789319878803477,1.9814792471375597,1.9838631507702682,1.98608350224648,1.988140118517645,1.9900328300337493,1.9917614807572905,1.9933259281761435,1.9947260433153089,1.9959617107475454,1.9970328286028862,1.9979393085770374,1.9986810759386573,1.999258069535518,1.9996702417995467,1.9999175587507467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0080760517119036028,0.016151971737975081,0.024227628394529539,0.032302890002176524,0.04037762488796711,0.048451701387540985,0.056524987847273278,0.0645973526264213,0.072668664099270988,0.08073879065728326,0.088807600711239859,0.096874962693389091,0.10494074505959118,0.11300481629146301,0.12106704489852285,0.12912729942033421,0.13718544842864952,0.14524136052955311,0.1532949043656037,0.1613459486179763,0.16939436200860333,0.17744001330231546,0.18548277130898116,0.19352250488564621,0.20155908293867175,0.20959237442587203,0.21762224835865121,0.22564857380413902,0.23367121988732592,0.24169005579319691,0.24970495076886479,0.25771577412570201,0.26572239524147168,0.27372468356245744,0.28172250860559234,0.28971573996058642,0.29770424729205303,0.30568790034163401,0.31366656893012401,0.32164012295959277,0.32960843241550652,0.33757136736884819,0.34552879797823582,0.35348059449203956,0.36142662725049768,0.36936676668783069,0.37730088333435385,0.38522884781858824,0.39315053086937068,0.40106580331796099,0.40897453610014861,0.41687660025835688,0.42477186694374597,0.43266020741831357,0.4405414930569943,0.44841559534975695,0.45628238590370002,0.464141736445145,0.47199351882172813,0.4798376050044903,0.48767386708996413,0.49550217730225971,0.50332240799514849,0.51113443165414385,0.51893812089858093,0.52673334848369391,0.53451998730268968,0.54229791038882158,0.55006699091745936,0.55782710220815657,0.56557811772671718,0.57331991108725766,0.58105235605426897,0.58877532654467413,0.59648869662988413,0.60419234053785176,0.61188613265512204,0.61956994752888028,0.62724365986899833,0.63490714455007691,0.64256027661348591,0.65020293126940243,0.65783498389884509,0.66545631005570605,0.67306678546878063,0.68066628604379287,0.68825468786541988,0.69583186719931178,0.70339770049410932,0.71095206438345859,0.71849483568802297,0.72602589141749052,0.73354510877258083,0.74105236514704653,0.74854753812967256,0.75603050550627215,0.76350114526168023,0.77095933558174168,0.77840495485529893,0.7858378816761743,0.79325799484514947,0.80066517337194221,0.80805929647717867,0.81544024359436307,0.82280789437184398,0.83016212867477579,0.83750282658707853,0.84482986841339269,0.85214313468103109,0.85944250614192697,0.86672786377457811,0.87399908878598831,0.88125606261360367,0.88849866692724611,0.89572678363104274,0.90294029486535188,0.91013908300868396,0.91732303067962051,0.92449202073872749,0.93164593629046544,0.93878466068509558,0.94590807752058204,0.95301607064448923,0.96010852415587689,0.96718532240718913,0.97424635000614002,0.98129149181759556,0.98832063296545147,0.9953336588345052,1.0023304550723253,1.0093109075911171,1.016274902569581,1.0232223264547695,1.0301530659639395,1.0370670080863977,1.0439640400853452,1.050844049499714,1.057706924146002,1.0645525521201018,1.0713808217991252,1.0781916218432239,1.0849848411974041,1.091760369093338,1.0985180950511697,1.1052579088813168,1.1119797006862671,1.1186833608623701,1.125368780101625,1.1320358493934621,1.1386844600265216,1.1453145035904244,1.1519258719775416,1.1585184573847562,1.1650921523152211,1.171646849580112,1.1781824423003757,1.1846988239084717,1.1911958881501106,1.1976735290859872,1.2041316410935063,1.2105701188685067,1.2169888574269772,1.2233877521067684,1.2297666985693001,1.2361255928012622,1.2424643311163102,1.2487828101567566,1.2550809268952556,1.2613585786364843,1.2676156630188149,1.2738520780159863,1.2800677219387662,1.2862624934366098,1.2924362914993117,1.2985890154586539,1.3047205649900471,1.3108308401141651,1.3169197411985776,1.3229871689593726,1.3290330244627762,1.3350572091267658,1.3410596247226776,1.3470401733768071,1.3529987575720079,1.358935280149278,1.3648496443093467,1.370741753614253,1.376611511988916,1.3824588237227031,1.3882835934709914,1.3940857262567201,1.3998651274719407,1.4056217028793596,1.4113553586138738,1.4170660011841028,1.4227535374739118,1.4284178747439307,1.4340589206330658,1.4396765831600065,1.4452707707247248,1.4508413921099685,1.4563883564827491,1.4619115733958226,1.4674109527891646,1.4728864049914383,1.4783378407214576,1.4837651710896411,1.4891683075994637,1.4945471621488986,1.4999016470318529,1.5052316749395993,1.5105371589621992,1.5158180125899194,1.5210741497146429,1.5263054846312736,1.5315119320391324,1.5366934070433496,1.5418498251562485,1.5469811022987225,1.5520871548016075,1.5571678994070441,1.5622232532698375,1.5672531339588065,1.5722574594581284,1.577236148168677,1.5821891189093511,1.5871162909184007,1.5920175838547419,1.5968929177992679,1.6017422132561523,1.6065653911541444,1.6113623728478597,1.6161330801190605,1.6208774351779343,1.6255953606643587,1.6302867796491649,1.6349516156353927,1.6395897925595353,1.6442012347927821,1.6487858671422506,1.6533436148522125,1.657874403605313,1.662378159523783,1.6668548091706425,1.671304279550899,1.6757264981127376,1.6801213927487038,1.6844888917968792,1.6888289240420509,1.693141418716871,1.6974263055030119,1.7016835145323126,1.7059129763879175,1.7101146221054095,1.7142883831739326,1.7184341915373103,1.7225519795951556,1.7266416802039721,1.7307032266782498,1.7347365527915519,1.7387415927775955,1.7427182813313222,1.7466665536099655,1.7505863452341053,1.7544775922887201,1.7583402313242276,1.76217419935752,1.7659794338729911,1.7697558728235547,1.7735034546316577,1.7772221181902832,1.7809118028639463,1.7845724484896857,1.7882039953780404,1.7918063843140271,1.7953795565581026,1.798923453847123,1.8024380183952946,1.8059231928951143,1.8093789205183048,1.8128051449167419,1.8162018102233721,1.8195688610531247,1.8229062425038138,1.8262139001570341,1.8294917800790489,1.8327398288216683,1.8359579934231212,1.8391462214089187,1.8423044607927108,1.845432660077132,1.8485307682546437,1.8515987348083631,1.854636509712889,1.8576440434351165,1.8606212869350449,1.8635681916665776,1.8664847095783135,1.8693707931143297,1.8722263952149589,1.8750514693175544,1.8778459693572511,1.8806098497677155,1.8833430654818899,1.8860455719327263,1.8887173250539124,1.8913582812805925,1.8939683975500756,1.8965476313025382,1.8990959404817189,1.9016132835356039,1.9040996194171036,1.9065549075847232,1.9089791080032235,1.9113721811442723,1.913734087987091,1.9160647900190899,1.9183642492364956,1.920632428144972,1.9228692897602302,1.9250747976086326,1.9272489157277874,1.9293916086671352,1.931502841488526,1.9335825797667903,1.9356307895902993,1.9376474375615189,1.9396324907975531,1.9415859169306813,1.9435076841088854,1.9453977609963691,1.9472561167740692,1.949082721140158,1.9508775443105379,1.9526405570193255,1.9543717305193311,1.9560710365825251,1.9577384475005002,1.9593739360849216,1.9609774756679721,1.962549040102785,1.9640886037638721,1.9655961415475403,1.9670716288723016,1.9685150416792743,1.9699263564325737,1.9713055501196983,1.9726526002519025,1.9739674848645654,1.9752501825175472,1.9765006722955405,1.9777189338084096,1.9789049471915243,1.9800586931060837,1.9811801527394304,1.9822693078053586,1.9833261405444114,1.984350633724171,1.985342770639539,1.9863025351130097,1.9872299114949328,1.9881248846637691,1.9889874400263379,1.9898175635180533,1.9906152416031546,1.9913804612749268,1.9921132100559129,1.9928134759981171,1.9934812476831993,1.994116514222662,1.9947192652580275,1.9952894909610059,1.9958271820336577,1.9963323297085431,1.9968049257488656,1.9972449624486071,1.9976524326326526,1.9980273296569075,1.9983696474084067,1.9986793803054124,1.9989565232975073,1.9992010718656754,1.9994130220223767,1.999592370311611,1.9997391138089757,1.9998532501217126,1.9999347773887466,1.9999836942807176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.019392243371956792,0.038782663543648739,0.058169437486222803,0.077550742513633419,0.096924756454005917,0.11628965782095164,0.13564362598481869,0.15498484134386187,0.17431148549531633,0.19362174140635818,0.21291379358493651,0.23218582825046044,0.25143603350432536,0.27066259950026217,0.28986371861449345,0.30903758561568095,0.32818239783464792,0.34729635533386066,0.36637766107665326,0.38542452109617936,0.40443514466407587,0.42340774445882146,0.44234053673377555,0.46123174148488028,0.48007958261801176,0.49888228811596252,0.51763809020504148,0.53634522552127462,0.55500193527619146,0.57360646542218041,0.59215706681739977,0.61065199539022619,0.62908951230322729,0.64746788411664202,0.66578538295135314,0.68404028665133743,0.70223087894557756,0.72035544960942077,0.73841229462536884,0.75639971634328496,0.77431602364000118,0.79215953207831358,0.80992856406534719,0.82762144901027823,0.84523652348139888,0.86277213136250686,0.88022662400860963,0.89759836040092422,0.91488570730116148,0.93208703940507753,0.94920073949528072,0.96622519859327682,0.98315881611074107,0.99999999999999989,1.0167471669037111,1.0333987423037256,1.0499531606691204,1.0664088656033823,1.0827643099907391,1.099017956141612,1.1151682759371855,1.1312137509730771,1.1471528727020921,1.1629841425760532,1.1787060721866895,1.1943171834055724,1.2098160085230834,1.2252010903864057,1.2404709825365201,1.2556242493441971,1.2706594661449702,1.2855752193730785,1.3003701066943669,1.3150427371381272,1.3295917312278756,1.3440157211110448,1.3583133506875864,1.3724832757374672,1.3865241640470485,1.400434695534337,1.4142135623730949,1.427859469115798,1.4413711328154291,1.4547472831460975,1.4679866625224705,1.4810880262180091,1.4940501424819919,1.5068717926553215,1.5195517712850988,1.532088886237956,1.5444819588121381,1.55672982384832,1.5688313298391514,1.5807853390375186,1.5925907275635114,1.6042463855100875,1.6157512170474222,1.627104140525935,1.6383040885779834,1.6493500082182133,1.6602408609425574,1.6709756228258728,1.6815532846182062,1.6919728518396819,1.7022333448739995,1.712333799060533,1.7222732647850274,1.7320508075688772,1.7416655081569841,1.7511164626041815,1.7604027823602222,1.7695235943533154,1.7784780410722123,1.7872652806468243,1.7958844869273762,1.8043348495620752,1.8126155740732999,1.8207258819322933,1.8286650106323588,1.836432213760548,1.8440267610678369,1.8514479385377807,1.8586950484536449,1.8657674094640009,1.8726643566467862,1.8793852415718166,1.8859294323617519,1.8922963137515008,1.8984852871460676,1.9044957706768306,1.9103271992562461,1.9159790246309778,1.9214507154334408,1.9267417572317607,1.9318516525781364,1.9367799210556118,1.9415260993232399,1.9460897411596476,1.9504704175049861,1.9546677165012709,1.958681243531103,1.9625106212547694,1.9661554896457198,1.969615506024416,1.9728903450905477,1.975979698953618,1.9788832771618889,1.9816008067296906,1.9841320321630846,1.986476715483886,1.9886346362520368,1.9906055915863317,1.9923893961834911,1.993985882335584,1.9953948999457953,1.9966163165425364,1.9976500172919007,1.9984959050084601,1.9991539001644012,1.9996239408970029,1.9999059830144523,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.011042448829909478,0.022084561040137427,0.033126000021263882,0.044166429184391696,0.055205511971407183,0.066242911865239743,0.077278292400120421,0.088311317171838627,0.099341649847997274,0.11036895417826548,0.12139289400462894,0.1324131332716374,0.14342933603664898,0.15444116648007122,0.16544828891559807,0.17645036780044318,0.18744706774556852,0.19843805352590849,0.20942299009058898,0.22040154257314104,0.23137337630170904,0.24233815680925294,0.25329554984374408,0.26424522137835466,0.27518683762164031,0.28612006502771525,0.29704457030642045,0.30796002043348342,0.31886608266067035,0.32976242452592941,0.34064871386352608,0.3515246188141683,0.36238980783512342,0.37324394971032482,0.38408671356046853,0.39491776885310031,0.40573678541269109,0.4165434334307026,0.42733738347564088,0.43811830650309908,0.44888587386578765,0.4596397573235535,0.47037962905338543,0.48110516165940809,0.49181602818286208,0.5025119021120712,0.51319245739239538,0.52385736843617103,0.53450631013263572,0.54513895785783884,0.55575498748453767,0.56635407539207827,0.5769358984762607,0.58750013415918834,0.59804646039910137,0.6085745557001947,0.61908409912241746,0.62957477029125741,0.64004624940750654,0.65049821725701062,0.66093035522039956,0.67134234528280101,0.68173387004353347,0.69210461272578361,0.70245425718626153,0.71278248792483923,0.72308899009416738,0.73337344950927397,0.74363555265714132,0.75387498670626407,0.76409143951618463,0.77428459964700924,0.78445415636890148,0.79459979967155514,0.80472122027364423,0.81481810963225076,0.82489015995227144,0.83493706419579983,0.84495851609148631,0.85495421014387429,0.8649238416427133,0.87486710667224787,0.88478370212048174,0.8946733256884184,0.90453567589927575,0.91437045210767753,0.92417735450881711,0.93395608414759734,0.94370634292774358,0.95342783362089156,0.96312025987564753,0.97278332622662256,0.98241673810343899,0.99202020183971162,1.001593424681998,1.0111361147987239,1.0206479812890796,1.030128734191887,1.0395780844944402,1.0489957441413138,1.0583814260431457,1.0677348440853882,1.0770557131370302,1.0863437490592882,1.09559866871427,1.1048201899736034,1.1140080317270389,1.1231619138910176,1.13228155741721,1.1413666843010231,1.150417017590073,1.1594322813926303,1.1684122008860287,1.1773565023250427,1.1862649130502343,1.1951371614962618,1.2039729772001608,1.2127720908095883,1.2215342340910327,1.2302591399379925,1.2389465423791168,1.2475961765863148,1.2562077788828283,1.2647810867512692,1.2733158388416228,1.2818117749792146,1.2902686361726412,1.2986861646216665,1.3070641037250788,1.3154021980885142,1.3237001935322423,1.331957837098914,1.3401748770612729,1.348351062929829,1.3564861454604948,1.3645798766621831,1.3726320098043667,1.3806422994246004,1.3886105013360028,1.3965363726347007,1.4044196717072337,1.4122601582379202,1.4200575932161812,1.4278117389438292,1.4355223590423118,1.4431892184599193,1.4508120834789484,1.458390721722828,1.4659249021632033,1.4734143951269765,1.480858972303311,1.4882584067505895,1.4956124729033318,1.5029209465790727,1.5101836049851942,1.5174002267257178,1.524570591808055,1.5316944816497104,1.5387716790849482,1.5458019683714106,1.5527851351966946,1.5597209666848861,1.5666092514030479,1.5734497793676661,1.580242342051051,1.5869867323876932,1.5936827447805775,1.6003301751074479,1.6069288207270327,1.6134784804852198,1.6199789547211898,1.6264300452735021,1.6328315554861361,1.6391832902144854,1.645485055831307,1.651736660232624,1.6579379128435818,1.6640886246242572,1.6701886080754209,1.6762376772442547,1.6822356477300178,1.6881823366896702,1.6940775628434459,1.6999211464803785,1.7057129094637797,1.7114526752366699,1.7171402688271611,1.7227755168537886,1.728358247530799,1.7338882906733859,1.739365477702876,1.7447896416518716,1.750160617169338,1.7554782405256439,1.7607423496175543,1.765952783973171,1.7711093847568247,1.7762119947739161,1.7812604584757092,1.7862546219640729,1.7911943329961706,1.7960794409891041,1.800909797024502,1.8056852538530594,1.8104056658990277,1.8150708892646519,1.8196807817345562,1.8242352027800812,1.8287340135635664,1.8331770769425828,1.8375642574741138,1.841895421418684,1.8461704367444365,1.8503891731311564,1.8545515019742458,1.8586572963886419,1.8627064312126864,1.8666987830119401,1.8706342300829473,1.8745126524569429,1.8783339319035126,1.8820979519341954,1.8858045978060349,1.8894537565250773,1.8930453168498158,1.8965791692945821,1.900055206132883,1.9034733214006856,1.906833410899647,1.9101353722002896,1.9133791046451258,1.916564509351725,1.9196914892157275,1.9227599489138059,1.9257697949065706,1.9287209354414205,1.931613280555341,1.9344467420776459,1.9372212336326651,1.9399366706423782,1.9425929703289924,1.9451900517174658,1.9477278356379766,1.9502062447283355,1.9526252034363445,1.9549846380221003,1.957284476560242,1.9595246489421434,1.9617050868780503,1.963825723899163,1.9658864953596613,1.9678873384386764,1.9698281921422045,1.9717089973049682,1.9735296965922178,1.9752902345014804,1.9769905573642526,1.9786306133476346,1.9802103524559111,1.9817297265320766,1.9831886892593016,1.9845871961623454,1.985925204608912,1.9872026738109494,1.9884195648258929,1.9895758405578527,1.9906714657587448,1.991706407029364,1.9926806328204045,1.9935941134334196,1.9944468210217281,1.9952387295912626,1.9959698150013627,1.9966400549655101,1.997249429052008,1.9977979186846047,1.9982855071430592,1.9987121795636513,1.999077922939634,1.9993827261216313,1.9996265798179762,1.9998094765949965,1.9999314108772386,1.9999923789476397,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"twiddles":[0.99988810181027343,0.014959407015263619,0.99955243228350332,0.029915466169398455,0.9989930665413147,0.044864830350514924,0.99821012976773515,0.059804153945034168,0.99720379718118013,0.074730093586424254,0.99597429399523907,0.089639308903433496,0.99452189536827329,0.10452846326765347,0.99284692634183735,0.11939422454024434,0.99094976176793481,0.13423326581765546,0.98883082622512852,0.14904226617617444,0.98649059392352145,0.16381791141513771,0.98392958859862967,0.17855689479863665,0.98114838339417265,0.19325591779555326,0.97814760073380569,0.20791169081775934,0.97492791218182362,0.22252093395631439,0.9714900382928674,0.2370803777154975,0.96783474845066653,0.2515867637445085,0.96396286069585324,0.26603684556667512,0.95987524154288906,0.28042738930600281,0.95557280578614068,0.29475517441090421,0.95105651629515353,0.3090169943749474,0.94632738379916415,0.32320965745446001,0.9413864666609032,0.33732998738282999,0.9362348706397372,0.35137482408134268,0.93087374864420425,0.36534102436639504,0.9253043004739967,0.37922546265292839,0.91952777255145068,0.39302503165392361,0.91354545764260087,0.40673664307580021,0.90735869456786489,0.42035722830956551,0.90096886790241915,0.43388373911755812,0.89437740766633678,0.44731314831563262,0.88758578900455409,0.46064245045063229,0.880595531856738,0.47386866247299864,0.87340820061712976,0.4869888244043673,0.8660254037844386,0.5,0.8584487936018661,0.51289927740590613,0.85068006568733956,0.52568376981050469,0.84272095865403918,0.53835061609068235,0.83457325372130264,0.55089698145210253,0.82623877431599491,0.56332005806362206,0.81771938566443125,0.57561706568567361,0.80901699437494745,0.58778525229247314,0.80013354801120629,0.59982189468791369,0.79107103465634121,0.61172429911500636,0.7818314824680298,0.62348980185873348,0.77241695922459952,0.63511576984217877,0.76282957186226652,0.64659960121579974,0.75307146600361097,0.65793872593971259,0.74314482547739424,0.66913060635885824,0.73305187182982634,0.68017273777091947,0.72279486382739155,0.69106264898686465,0.71237609695134474,0.70179790288399135,0,0.99955243228350332,0.029915466169398455,0.99821012976773515,0.059804153945034168,0.99597429399523907,0.089639308903433496,0.99284692634183735,0.11939422454024434,0.98883082622512852,0.14904226617617444,0.98392958859862967,0.17855689479863665,0.97814760073380569,0.20791169081775934,0.9714900382928674,0.2370803777154975,0.96396286069585324,0.26603684556667512,0.95557280578614068,0.29475517441090421,0.94632738379916415,0.32320965745446001,0.9362348706397372,0.35137482408134268,0.9253043004739967,0.37922546265292839,0.91354545764260087,0.40673664307580021,0.90096886790241915,0.43388373911755812,0.88758578900455409,0.46064245045063229,0.87340820061712976,0.4869888244043673,0.8584487936018661,0.51289927740590613,0.84272095865403918,0.53835061609068235,0.82623877431599491,0.56332005806362206,0.80901699437494745,0.58778525229247314,0.79107103465634121,0.61172429911500636,0.77241695922459952,0.63511576984217877,0.75307146600361097,0.65793872593971259,0.73305187182982634,0.68017273777091947,0.71237609695134474,0.70179790288399135,0.69106264898686465,0.72279486382739155,0.66913060635885824,0.74314482547739424,0.64659960121579962,0.76282957186226652,0.62348980185873359,0.7818314824680298,0.59982189468791369,0.80013354801120629,0.5756170656856735,0.81771938566443136,0.55089698145210253,0.83457325372130264,0.52568376981050469,0.85068006568733956,0.49999999999999989,0.86602540378443871,0.47386866247299869,0.880595531856738,0.44731314831563262,0.89437740766633689,0.4203572283095654,0.90735869456786489,0.39302503165392366,0.91952777255145057,0.36534102436639498,0.93087374864420425,0.33732998738282988,0.9413864666609032,0.30901699437494745,0.95105651629515353,0.28042738930600275,0.95987524154288906,0.25158676374450839,0.96783474845066653,0.22252093395631445,0.97492791218182362,0.19325591779555323,0.98114838339417265,0.1638179114151376,0.98649059392352145,0.13423326581765554,0.9909497617679347,0.10452846326765346,0.99452189536827329,0.074730093586424171,0.99720379718118013,0.044864830350514986,0.99899306654131459,0.014959407015263606,0.99988810181027343,0,0.9989930665413147,0.044864830350514924,0.99597429399523907,0.089639308903433496,0.99094976176793481,0.13423326581765546,0.98392958859862967,0.17855689479863665,0.97492791218182362,0.22252093395631439,0.96396286069585324,0.26603684556667512,0.95105651629515353,0.3090169943749474,0.9362348706397372,0.35137482408134268,0.91952777255145068,0.39302503165392361,0.90096886790241915,0.43388373911755812,0.880595531856738,0.47386866247299864,0.8584487936018661,0.51289927740590613,0.83457325372130264,0.55089698145210253,0.80901699437494745,0.58778525229247314,0.7818314824680298,0.62348980185873348,0.75307146600361097,0.65793872593971259,0.72279486382739155,0.69106264898686465,0.69106264898686465,0.72279486382739155,0.65793872593971259,0.75307146600361086,0.62348980185873359,0.7818314824680298,0.58778525229247314,0.80901699437494745,0.55089698145210253,0.83457325372130264,0.51289927740590613,0.8584487936018661,0.47386866247299869,0.880595531856738,0.43388373911755818,0.90096886790241915,0.39302503165392366,0.91952777255145057,0.35137482408134274,0.9362348706397372,0.30901699437494745,0.95105651629515353,0.26603684556667517,0.96396286069585324,0.22252093395631445,0.97492791218182362,0.17855689479863671,0.98392958859862967,0.13423326581765554,0.9909497617679347,0.089639308903433551,0.99597429399523907,0.044864830350514986,0.99899306654131459,6.123233995736766e-17,1,-0.044864830350514862,0.9989930665413147,-0.08963930890343344,0.99597429399523907,-0.13423326581765541,0.99094976176793481,-0.1785568947986366,0.98392958859862967,-0.22252093395631434,0.97492791218182362,-0.26603684556667506,0.96396286069585335,-0.30901699437494734,0.95105651629515364,-0.35137482408134263,0.9362348706397372,-0.39302503165392355,0.91952777255145068,-0.43388373911755806,0.90096886790241915,-0.47386866247299858,0.880595531856738,-0.51289927740590613,0.85844879360186621,-0.55089698145210242,0.83457325372130275,-0.58778525229247303,0.80901699437494745,-0.62348980185873348,0.78183148246802991,-0.65793872593971259,0.75307146600361097,-0.69106264898686465,0.72279486382739155,0,0.99821012976773515,0.059804153945034168,0.99284692634183735,0.11939422454024434,0.98392958859862967,0.17855689479863665,0.9714900382928674,0.2370803777154975,0.95557280578614068,0.29475517441090421,0.9362348706397372,0.35137482408134268,0.91354545764260087,0.40673664307580021,0.88758578900455409,0.46064245045063229,0.8584487936018661,0.51289927740590613,0.82623877431599491,0.56332005806362206,0.79107103465634121,0.61172429911500636,0.75307146600361097,0.65793872593971259,0.71237609695134474,0.70179790288399135,0.66913060635885824,0.74314482547739424,0.62348980185873359,0.7818314824680298,0.5756170656856735,0.81771938566443136,0.52568376981050469,0.85068006568733956,0,0.99284692634183735,0.11939422454024434,0.9714900382928674,0.2370803777154975,0.9362348706397372,0.35137482408134268,0.88758578900455409,0.46064245045063229,0.82623877431599491,0.56332005806362206,0.75307146600361097,0.65793872593971259,0.66913060635885824,0.74314482547739424,0.5756170656856735,0.81771938566443136,0.47386866247299869,0.880595531856738,0.36534102436639498,0.93087374864420425,0.25158676374450839,0.96783474845066653,0.13423326581765554,0.9909497617679347,0.014959407015263606,0.99988810181027343,-0.10452846326765355,0.99452189536827329,-0.22252093395631434,0.97492791218182362,-0.33732998738282999,0.9413864666609032,-0.44731314831563268,0.89437740766633678,0,0.98392958859862967,0.17855689479863665,0.9362348706397372,0.35137482408134268,0.8584487936018661,0.51289927740590613,0,0.9362348706397372,0.35137482408134268,0.75307146600361097,0.65793872593971259,0.47386866247299869,0.880595531856738,0,0.8584487936018661,0.51289927740590613,0.47386866247299869,0.880595531856738,-0.044864830350514862,0.9989930665413147,0,0.75307146600361097,0.65793872593971259,0.13423326581765554,0.9909497617679347,-0.55089698145210242,0.83457325372130275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99915688688806381,0.041055028731603306,0.99662896923169442,0.082040829397137555,0.99242050967193574,0.1228882906647141,0.9865386046236595,0.16352853447396498,0.97899317230940452,0.20389303218003446,0.96979693603500949,0.24391372010837711,0.95896540273524122,0.28352311432551081,0.94651683682559451,0.32265442443219483,0.93247222940435581,0.36124166618715287,0.91685526285686281,0.39921977277143089,0.89969227092164539,0.4365247045057733,0.88101219428578459,0.47309355683601001,0.86084653178436776,0.5088646664043649,0.83922928728632662,0.54377771502782657,0.81619691235622172,0.577773831408251,0.79178824478865817,0.61079569040268777,0.76604444311897801,0.64278760968653925,0.7390089172206592,0.6736956436465571,0.7107272551064473,0.70346767434534963,0.68124714605665415,0.73205349940401465,0.65061830020424227,0.75940491665470711,0.61889236471229458,0.78547580542039874,0.5861228366852147,0.81022220428477343,0.55236497296050591,0.8336023852211194,0.51767569693324256,0.85557692395522311,0,0.99662896923169442,0.082040829397137555,0.9865386046236595,0.16352853447396498,0.96979693603500949,0.24391372010837711,0.94651683682559451,0.32265442443219483,0.91685526285686281,0.39921977277143089,0.88101219428578459,0.47309355683601001,0.83922928728632662,0.54377771502782657,0.79178824478865817,0.61079569040268777,0.7390089172206592,0.6736956436465571,0.68124714605665415,0.73205349940401465,0.61889236471229458,0.78547580542039874,0.55236497296050591,0.8336023852211194,0.48211350257034896,0.87610876644361346,0.4086115932782316,0.91270836844998038,0.33235479947965985,0.94315443447127745,0.25385724917100799,0.96724169525684156,0.17364817766693041,0.98480775301220802,0.092268359463302238,0.99573417629503447,0.010266462302290088,0.99994729848717312,-0.071804651979327394,0.99741871445954311,-0.15339165487868509,0.98816547208125949,-0.23394448180164831,0.97224995728184949,-0.31292004063215423,0.94977947344147784,-0.38978587329267905,0.92090551794495379,-0.46402374560936321,0.88582276077703992,0,0.99242050967193574,0.1228882906647141,0.96979693603500949,0.24391372010837711,0.93247222940435581,0.36124166618715287,0.88101219428578459,0.47309355683601001,0.81619691235622172,0.577773831408251,0.7390089172206592,0.6736956436465571,0.65061830020424227,0.75940491665470711,0.55236497296050591,0.8336023852211194,0,0.96979693603500949,0.24391372010837711,0.88101219428578459,0.47309355683601001,0.7390089172206592,0.6736956436465571,0.55236497296050591,0.8336023852211194,0.33235479947965985,0.94315443447127745,0.092268359463302238,0.99573417629503447,-0.15339165487868509,0.98816547208125949,-0.38978587329267905,0.92090551794495379,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99995628927287272,0.0093498419038392754,0.99982516091274642,0.018698866430902267,0.99960662638305287,0.028046256275868958,0.9993007047883985,0.037391194276325625,0.99890742287289414,0.046732863484202337,0.9984268150178166,0.056070447237191789,0.99785892323860348,0.065403129230143076,0.99720379718118013,0.074730093586424254,0.9964614941176192,0.084050524929247541,0.99563207894113381,0.093363608452950678,0.99471562416040504,0.1026685299942284,0.9937122098932426,0.11196447610330786,0.99262192385958081,0.12125063411506154,0.99144486137381038,0.1305261922200516,0.99018112533644564,0.13979033953549946,0.98883082622512852,0.14904226617617444,0.98739408208497126,0.15828116332519493,0.98587101851823589,0.16750622330473641,0.98426176867335424,0.17671663964663994,0.98256647323328827,0.1859116071629146,0.98078528040323043,0.19509032201612825,0.97891834589764848,0.20425198178968035,0.97696583292667172,0.21339578555795,0.97492791218182362,0.22252093395631439,0.97280476182109932,0.23162662925103031,0.97059656745339096,0.24071207540897302,0.96830352212226145,0.24977647816722684,0.96592582628906831,0.25881904510252079,0.96346368781543901,0.26783898570050307,0.9609173219450996,0.27683551142484936,0.95828695128505736,0.28580783578619773,0.95557280578614068,0.29475517441090421,0.95277512272289633,0.30367674510961473,0.94989414667284588,0.31257176794564451,0.94693012949510569,0.32143946530316159,0.94388333030836757,0.33027906195516704,0.94075401546824733,0.3390897851312667,0.9375424585439992,0.34787086458522726,0.93424894029459982,0.356621532662313,0.93087374864420425,0.36534102436639504,0.92741717865697493,0.3740285774268281,0.92387953251128674,0.38268343236508978,0.92026111947331057,0.39130483256117504,0.91656225586997619,0.39989202431974097,0.9127832650613189,0.40844425693599612,0.90892447741221083,0.41696078276132809,0.90498623026347991,0.42544085726866393,0.90096886790241915,0.43388373911755812,0.89687274153268826,0.4422886902190013,0.89269820924361154,0.45065497579994518,0.88844563597887227,0.45898186446753769,0.88411539350460977,0.46726862827306198,0.87970786037691839,0.4755145427755752,0.87522342190875368,0.4837188871052398,0.8706624701362482,0.49188094402634336,0.8660254037844386,0.5,0.86131262823240895,0.50807534524652942,0.85652455547785145,0.51610627380750662,0.85166160410104941,0.52409208360747772,0.84672419922828424,0.53203207651533657,0.84171277249466991,0.5399255584053565,0.83662776200641975,0.54777183921787143,0.83146961230254524,0.55557023301960218,0.82623877431599491,0.56332005806362206,0.82093570533423232,0.57102063684895521,0.81556086895926017,0.57867129617980573,0.81011473506709053,0.58627136722440898,0.80459777976666824,0.59382018557350169,0.79901048535824903,0.60131709129840583,0.79335334029123517,0.60876142900872066,0.78762683912147535,0.61615254790961749,0.7818314824680298,0.62348980185873348,0.775967776969405,0.63077254942265826,0.77003623523926279,0.63800015393300868,0.76403737582160747,0.6451719835420876,0.75797172314545291,0.65228741127812118,0.75183980747897738,0.65934581510006895,0.74564216488316559,0.66634657795200392,0.7393793371649463,0.67328908781705699,0.73305187182982634,0.68017273777091947,0.72666032203402708,0.68699692603490159,0.7202052465361265,0.69376105602854155,0.71368720964821208,0.70046453642175843,0.70710678118654757,0.70710678118654746,0.70046453642175832,0.7136872096482122,0.69376105602854155,0.72020524653612661,0.68699692603490159,0.72666032203402708,0.68017273777091936,0.73305187182982634,0.67328908781705699,0.7393793371649463,0.66634657795200392,0.74564216488316559,0.65934581510006884,0.75183980747897738,0.65228741127812118,0.75797172314545302,0.64517198354208771,0.76403737582160747,0.63800015393300857,0.77003623523926279,0.63077254942265826,0.775967776969405,0.62348980185873359,0.7818314824680298,0.61615254790961749,0.78762683912147535,0.60876142900872066,0.79335334029123517,0.60131709129840571,0.79901048535824903,0.59382018557350158,0.80459777976666835,0.58627136722440887,0.81011473506709053,0.57867129617980562,0.81556086895926017,0.57102063684895521,0.82093570533423232,0.56332005806362195,0.82623877431599491,0.55557023301960218,0.83146961230254524,0.54777183921787131,0.83662776200641975,0.53992555840535639,0.84171277249467003,0.53203207651533657,0.84672419922828412,0.52409208360747761,0.85166160410104941,0.51610627380750662,0.85652455547785145,0.50807534524652953,0.86131262823240895,0.49999999999999989,0.86602540378443871,0.4918809440263433,0.8706624701362482,0.4837188871052398,0.87522342190875368,0.47551454277557509,0.87970786037691839,0.46726862827306198,0.88411539350460977,0.45898186446753775,0.88844563597887227,0.45065497579994512,0.89269820924361154,0.44228869021900125,0.89687274153268837,0.43388373911755818,0.90096886790241915,0.42544085726866387,0.90498623026348002,0.41696078276132803,0.90892447741221083,0.40844425693599617,0.9127832650613189,0.39989202431974086,0.91656225586997619,0.39130483256117499,0.92026111947331057,0.38268343236508984,0.92387953251128674,0.37402857742682799,0.92741717865697493,0.36534102436639498,0.93087374864420425,0.35662153266231306,0.93424894029459982,0.34787086458522715,0.9375424585439992,0.33908978513126664,0.94075401546824733,0.33027906195516715,0.94388333030836757,0.32143946530316148,0.94693012949510569,0.31257176794564445,0.949894146672846,0.30367674510961479,0.95277512272289622,0.2947551744109041,0.95557280578614079,0.28580783578619767,0.95828695128505736,0.27683551142484941,0.96091732194509949,0.26783898570050296,0.96346368781543901,0.25881904510252074,0.96592582628906831,0.2497764781672269,0.96830352212226145,0.24071207540897291,0.97059656745339096,0.23162662925103028,0.97280476182109932,0.22252093395631445,0.97492791218182362,0.21339578555794991,0.97696583292667172,0.20425198178968032,0.97891834589764848,0.19509032201612833,0.98078528040323043,0.18591160716291449,0.98256647323328827,0.17671663964663992,0.98426176867335435,0.16750622330473647,0.98587101851823589,0.15828116332519482,0.98739408208497126,0.14904226617617444,0.98883082622512852,0.13979033953549955,0.99018112533644553,0.13052619222005149,0.99144486137381038,0.12125063411506151,0.99262192385958081,0.11196447610330791,0.9937122098932426,0.10266852999422831,0.99471562416040504,0.09336360845295065,0.99563207894113381,0.084050524929247597,0.9964614941176192,0.074730093586424171,0.99720379718118013,0.065403129230143048,0.99785892323860348,0.056070447237191845,0.9984268150178166,0.046732863484202247,0.99890742287289414,0.037391194276325604,0.99930070478839861,0.028046256275869017,0.99960662638305287,0.01869886643090218,0.99982516091274642,0.0093498419038392615,0.99995628927287272,0,0,0.99982516091274642,0.018698866430902267,0.9993007047883985,0.037391194276325625,0.9984268150178166,0.056070447237191789,0.99720379718118013,0.074730093586424254,0.99563207894113381,0.093363608452950678,0.9937122098932426,0.11196447610330786,0.99144486137381038,0.1305261922200516,0.98883082622512852,0.14904226617617444,0.98587101851823589,0.16750622330473641,0.98256647323328827,0.1859116071629146,0.97891834589764848,0.20425198178968035,0.97492791218182362,0.22252093395631439,0.97059656745339096,0.24071207540897302,0.96592582628906831,0.25881904510252079,0.9609173219450996,0.27683551142484936,0.95557280578614068,0.29475517441090421,0.94989414667284588,0.31257176794564451,0.94388333030836757,0.33027906195516704,0.9375424585439992,0.34787086458522726,0.93087374864420425,0.36534102436639504,0.92387953251128674,0.38268343236508978,0.91656225586997619,0.39989202431974097,0.90892447741221083,0.41696078276132809,0.90096886790241915,0.43388373911755812,0.89269820924361154,0.45065497579994518,0.88411539350460977,0.46726862827306198,0.87522342190875368,0.4837188871052398,0.8660254037844386,0.5,0.85652455547785145,0.51610627380750662,0.84672419922828424,0.53203207651533657,0.83662776200641975,0.54777183921787143,0.82623877431599491,0.56332005806362206,0.81556086895926017,0.57867129617980573,0.80459777976666824,0.59382018557350169,0.79335334029123517,0.60876142900872066,0.7818314824680298,0.62348980185873348,0.77003623523926279,0.63800015393300868,0.75797172314545291,0.65228741127812118,0.74564216488316559,0.66634657795200392,0.73305187182982634,0.68017273777091947,0.7202052465361265,0.69376105602854155,0,0,0.9993007047883985,0.037391194276325625,0.99720379718118013,0.074730093586424254,0.9937122098932426,0.11196447610330786,0.98883082622512852,0.14904226617617444,0.98256647323328827,0.1859116071629146,0.97492791218182362,0.22252093395631439,0.96592582628906831,0.25881904510252079,0.95557280578614068,0.29475517441090421,0.94388333030836757,0.33027906195516704,0.93087374864420425,0.36534102436639504,0.91656225586997619,0.39989202431974097,0.90096886790241915,0.43388373911755812,0.88411539350460977,0.46726862827306198,0.8660254037844386,0.5,0.84672419922828424,0.53203207651533657,0.82623877431599491,0.56332005806362206,0.80459777976666824,0.59382018557350169,0.7818314824680298,0.62348980185873348,0.75797172314545291,0.65228741127812118,0.73305187182982634,0.68017273777091947,0.70710678118654757,0.70710678118654746,0.68017273777091936,0.73305187182982634,0.65228741127812118,0.75797172314545302,0.62348980185873359,0.7818314824680298,0.59382018557350158,0.80459777976666835,0.56332005806362195,0.82623877431599491,0.53203207651533657,0.84672419922828412,0.49999999999999989,0.86602540378443871,0.46726862827306198,0.88411539350460977,0.43388373911755818,0.90096886790241915,0.39989202431974086,0.91656225586997619,0.36534102436639498,0.93087374864420425,0.33027906195516715,0.94388333030836757,0.2947551744109041,0.95557280578614079,0.25881904510252074,0.96592582628906831,0.22252093395631445,0.97492791218182362,0.18591160716291449,0.98256647323328827,0.14904226617617444,0.98883082622512852,0.11196447610330791,0.9937122098932426,0.074730093586424171,0.99720379718118013,0.037391194276325604,0.99930070478839861,0,0,0.9984268150178166,0.056070447237191789,0.9937122098932426,0.11196447610330786,0.98587101851823589,0.16750622330473641,0.97492791218182362,0.22252093395631439,0.9609173219450996,0.27683551142484936,0.94388333030836757,0.33027906195516704,0.92387953251128674,0.38268343236508978,0.90096886790241915,0.43388373911755812,0.87522342190875368,0.4837188871052398,0.84672419922828424,0.53203207651533657,0.81556086895926017,0.57867129617980573,0.7818314824680298,0.62348980185873348,0.74564216488316559,0.66634657795200392,0.70710678118654757,0.70710678118654746,0.66634657795200392,0.74564216488316559,0.62348980185873359,0.7818314824680298,0.57867129617980573,0.81556086895926017,0.53203207651533657,0.84672419922828412,0.4837188871052398,0.87522342190875368,0.43388373911755818,0.90096886790241915,0.38268343236508984,0.92387953251128674,0.33027906195516715,0.94388333030836757,0.27683551142484941,0.96091732194509949,0.22252093395631445,0.97492791218182362,0.16750622330473647,0.98587101851823589,0.11196447610330791,0.9937122098932426,0.056070447237191845,0.9984268150178166,6.123233995736766e-17,1,-0.056070447237191727,0.9984268150178166,-0.1119644761033078,0.9937122098932426,-0.16750622330473633,0.98587101851823589,-0.22252093395631434,0.97492791218182362,-0.2768355114248493,0.9609173219450996,-0.33027906195516699,0.94388333030836757,-0.38268343236508973,0.92387953251128674,-0.43388373911755806,0.90096886790241915,-0.48371888710523975,0.87522342190875368,-0.53203207651533646,0.84672419922828424,-0.57867129617980573,0.81556086895926017,-0.62348980185873348,0.78183148246802991,-0.66634657795200392,0.7456421648831657,0,0,0.99720379718118013,0.074730093586424254,0.98883082622512852,0.14904226617617444,0.97492791218182362,0.22252093395631439,0.95557280578614068,0.29475517441090421,0.93087374864420425,0.36534102436639504,0.90096886790241915,0.43388373911755812,0.8660254037844386,0.5,0.82623877431599491,0.56332005806362206,0.7818314824680298,0.62348980185873348,0.73305187182982634,0.68017273777091947,0,0.98883082622512852,0.14904226617617444,0.95557280578614068,0.29475517441090421,0.90096886790241915,0.43388373911755812,0.82623877431599491,0.56332005806362206,0.73305187182982634,0.68017273777091947,0.62348980185873359,0.7818314824680298,0.49999999999999989,0.86602540378443871,0.36534102436639498,0.93087374864420425,0.22252093395631445,0.97492791218182362,0.074730093586424171,0.99720379718118013,0,0.97492791218182362,0.22252093395631439,0.90096886790241915,0.43388373911755812,0.7818314824680298,0.62348980185873348,0.62348980185873359,0.7818314824680298,0.43388373911755818,0.90096886790241915,0.22252093395631445,0.97492791218182362,6.123233995736766e-17,1,-0.22252093395631434,0.97492791218182362,-0.43388373911755806,0.90096886790241915,-0.62348980185873348,0.78183148246802991,0,0.95557280578614068,0.29475517441090421,0.82623877431599491,0.56332005806362206,0.62348980185873359,0.7818314824680298,0,0.82623877431599491,0.56332005806362206,0.36534102436639498,0.93087374864420425,-0.22252093395631434,0.97492791218182362,0,0,0,0,0,0,0,0,0.99996564508779062,0.0082890677496766686,0.99986258271168249,0.016577565958963661,0.99969081995307352,0.02486492512660432,0.99945036861375247,0.033150575829605351,0.99914124521508874,0.041433948762361755,0.99876347099689677,0.049714474775773711,0.99831707191597674,0.057991584916352756,0.99780207864433113,0.066264710465314444,0.99721852656705734,0.074533282977654894,0.99656645577991598,0.082796734321208612,0.99584591108657639,0.091054496715684663,0.99505694199553796,0.099306002771678836,0.99419960271672836,0.10755068552965885,0.99327395215777892,0.11578797849892002,0.99228005391997698,0.12401731569650871,0.99121797629389607,0.13223813168611104,0.99008779225470334,0.14044986161690373,0.98888957945714562,0.14865194126236511,0.98762342023021388,0.15684380705904283,0.98628940157148637,0.16502489614527638,0.98488761514115086,0.17319464639987106,0.98341815725570669,0.18135249648072133,0.98188112888134749,0.18949788586338054,0.98027663562702261,0.19763025487957431,0.97860478773718207,0.2057490447556555,0.97686570008420082,0.21385369765099724,0.97505949216048615,0.22194365669632204,0.9731862880702673,0.23001836603196443,0.97124621652106835,0.23807727084606364,0.96923941081486498,0.24611981741268496,0.96716600883892478,0.25414545312986586,0.96502615305633355,0.26215362655758545,0.96281999049620626,0.27014378745565348,0.96054767274358521,0.27811538682151765,0.95820935592902412,0.28606787692798513,0.95580520071786068,0.29400071136085709,0.95333537229917753,0.30191334505647244,0.95080004037445154,0.3098052343391593,0.94819937914589403,0.31767583695859075,0.94553356730448146,0.32552461212704265,0.94280278801767747,0.33335102055655136,0.94000722891684729,0.34115452449596784,0.93714708208436581,0.34893458776790648,0.93422254404041993,0.35669067580558605,0.93123381572950492,0.36442225568955916,0.92818110250661845,0.37212879618432959,0.92506461412314989,0.37980976777485309,0.92188456471246905,0.38746464270292014,0.9186411727752124,0.39509289500341871,0.91533466116427054,0.4026940005404725,0.91196525706947573,0.41026743704345464,0.90853319200199167,0.41781268414287287,0.90503870177840673,0.42532922340612367,0.90148202650453024,0.43281653837311412,0.89786341055889618,0.44027411459174742,0.89418310257597045,0.44770143965327103,0.89044135542906866,0.455098003227484,0.88663842621298006,0.46246329709780198,0.88277457622630362,0.46979681519617622,0.87885007095349321,0.47709805363786584,0.87486518004661729,0.48436651075605952,0.87082017730683026,0.49160168713634483,0.86671534066556022,0.49880308565102305,0.86255095216541211,0.50597021149326671,0.85832729794078844,0.51310257221111755,0.85404466819822944,0.52019967774132292,0.84970335719647283,0.52726104044300803,0.84530366322623518,0.53428617513118148,0.84084588858971687,0.54127459911007225,0.83633033957983027,0.54822583220629595,0.83175732645915512,0.55513939680184687,0.82712716343862003,0.56201481786691565,0.82244016865591307,0.56885162299252812,0.81769666415362274,0.57564934242300436,0.81289697585711085,0.58240750908823613,0.80804143355211711,0.58912565863577815,0.80313037086210104,0.59580332946275483,0.79816412522531777,0.602440062747576,0.79314303787163287,0.60903540248146293,0.78806745379907683,0.61558889549978069,0.7829377217501402,0.62210009151317447,0.77775419418781133,0.62856854313850952,0.77251722727135885,0.6349938059296103,0.76722718083186014,0.64137543840779876,0.76188441834747722,0.64771300209222782,0.75648930691848226,0.65400606153000929,0.75104221724203435,0.66025418432613425,0.74554352358670861,0.66645694117318255,0.73999360376678081,0.67261390588082004,0.73439283911626718,0.67872465540508298,0.72874161446272334,0.6847887698774443,0.72304031810080338,0.69080583263366346,0.7172893417655789,0.69677543024241495,0.71148908060562432,0.70269715253369525,0.7056399331558656,0.70857059262700539,0.69974230131019688,0.71439534695930773,0.69379659029386664,0.72017101531275507,0.68780320863563515,0.72589720084218878,0.6817625681397036,0.73157351010240657,0.67567508385741992,0.73719955307519591,0.66954117405876024,0.7427749431961318,0.66336126020358999,0.7482992973811381,0.65713576691270481,0.75377223605280874,0.65086512193865587,0.75919338316648843,0.64454975613635834,0.76456236623611096,0.63819010343348748,0.76987881635979216,0.63178660080066396,0.77514236824517757,0.62533968822142927,0.78035266023454142,0.61884980866201489,0.78550933432963588,0.61231740804090573,0.79061203621628917,0.60574293519820155,0.79566041528875076,0.59912684186477705,0.80065412467378094,0.5924695826312435,0.80559282125448473,0.58577161491671392,0.81047616569388703,0.57903339893737382,0.81530382245824906,0.57225539767486033,0.82007545984012198,0.5654380768444498,0.82479074998113922,0.5585819048630597,0.82944936889454302,0.55168735281706294,0.83405099648744585,0.5447548944299202,0.83859531658282382,0.53778500602962975,0.84308201694124107,0.53077816651600018,0.84751078928230361,0.52373485732774383,0.85188132930584159,0.51665556240939869,0.85619333671281739,0.50954076817807525,0.86044651522595927,0.50239096349003631,0.86464057261011817,0.49520663960710626,0.8687752206923478,0.487988290162918,0.87285017538170417,0.48073641112899423,0.8768651566887663,0.47345150078066994,0.88081988874487349,0.46613405966285637,0.8847140998210804,0.45878459055564763,0.88854752234682799,0.45140359843977601,0.89231989292832725,0.44399159046191339,0.89603095236665831,0.43654907589982689,0.89968044567557826,0.42907656612738504,0.90326812209904306,0.42157457457942255,0.90679373512843531,0.41404361671646112,0.91025704251950301,0.40648420998929358,0.91365780630900317,0.39889687380342853,0.91699579283105304,0.39128212948340346,0.92027077273318481,0.38364050023696317,0.92348252099210448,0.3759725111191119,0.92663081692915295,0.36827868899603522,0.92971544422546926,0.36055956250890059,0.93273619093685334,0.35281566203753334,0.93569284950832932,0.34504751966397551,0.93858521678840567,0.3372556691359252,0.94141309404303453,0.3294406458300646,0.94417628696926614,0.32160298671527238,0.94687460570859983,0.31374323031573065,0.94950786486002858,0.30586191667392115,0.95207588349277883,0.29795958731352085,0.95457848515874077,0.29003678520219212,0.95701549790459373,0.2820940547142774,0.95938675428361964,0.27413194159339344,0.96169209136720901,0.26615099291493527,0.96393135075605574,0.25815175704848486,0.96610437859104026,0.25013478362013447,0.96821102556380156,0.24210062347472031,0.97025114692699632,0.23404982863797574,0.97222460250424347,0.22598295227860002,0.97413125669975709,0.21790054867025183,0.97597097850766201,0.20980317315346353,0.97774364152099591,0.20169138209748561,0.97944912394039441,0.19356573286205675,0.98108730858245985,0.1854267837591097,0.9826580828878132,0.1772750940144078,0.98416133892882773,0.16911122372912257,0.98559697341704466,0.16093573384134749,0.98696488771027058,0.15274918608755766,0.98826498781935435,0.14455214296401145,0.98949718441464607,0.13634516768810304,0.99066139283213372,0.12812882415966223,0.9917575330792614,0.11990367692221064,0.99278552984042534,0.11167029112417036,0.99374531248214859,0.10342923248003436,0.99463681505793411,0.095181067231494679,0.9954599763127967,0.086926362108537755,0.99621473968747087,0.07866568429050276,0.99690105332229784,0.070399601367112624,0.99751887006078821,0.06212868129947318,0.99806814745286232,0.053853492381050506,0.99854884775776698,0.04557460319862177,0.99896093794666874,0.037292582593209528,0.99930438970492297,0.029007999620994963,0.99957917943401975,0.020721423514219923,0.99978528825320501,0.012433423642073293,0.99992270200077804,0.0041445694715715143,0.99999141123506419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99983512089977333,0.01815849705607999,0.99934053796932865,0.036311006198847834,0.99851641430144311,0.054451541489554889,0.99736302165765445,0.072574120937928449,0.99588074037864527,0.09067276847478202,0.99407005925882252,0.10874151592267323,0.9919315753851341,0.1267744049639592,0.98946599394017387,0.14476548910560072,0.98667412796964205,0.16270883564006702,0.98355689811423719,0.18059852760169481,0.98011533230606662,0.19842866571785611,0.97635056542967802,0.21619337035429195,0.97226383894782176,0.23388678345396979,0.96785650049206817,0.25150307046882603,0.96313000341841526,0.26903642228375602,0.95808590632803237,0.28648105713221728,0.9527258725532991,0.30383122250281464,0.94705166960930731,0.32108119703623794,0.94106516861100875,0.33822529241192711,0.93476834365619976,0.35525785522384279,0.92816327117454589,0.37217326884472285,0.92125212924286259,0.38896595527821187,0.91403719686687646,0.40563037699825072,0.90652085322970388,0.42216103877512146,0.89870557690729702,0.43855248948754416,0.89059394505111167,0.45479932392022909,0.88218863253827162,0.47089618454629073,0.87349241108950548,0.48683776329393597,0.86450814835514866,0.50261880329684472,0.85523880696951304,0.51823410062766428,0.84568744357393322,0.53367850601404732,0.83585720780881456,0.54894692653666644,0.82575134127501282,0.56403432730864644,0.81537317646489027,0.57893573313585922,0.80472613566339879,0.59364623015753504,0.79381372981955312,0.60816096746664816,0.78263955738866708,0.62247515870954351,0.77120730314573283,0.63658408366427588,0.75952073697033673,0.65048308979714187,0.74758371260351031,0.66416759379689105,0.73540016637692762,0.67763308308611025,0.72297411591486727,0.6908751173092833,0.71030965880936847,0.70388932979703456,0.69741097126901619,0.7166714290060735,0.68428230674180157,0.72921719993436718,0.67092799451251395,0.7415225055110708,0.65735243827512191,0.75358328796076146,0.6435601146806208,0.76539557014152237,0.62955557186081901,0.77695545685643852,0.6153434279285549,0.78825913613806931,0.60092836945483641,0.79930288050547627,0.58631514992340505,0.8100830481933905,0.57150858816323646,0.82059608435311471,0.55651356675949137,0.83083852222476362,0.541335030443444,0.8408069842804563,0.52597798446191513,0.85049818333808413,0.51044749292675207,0.85990892364528548,0.4947486771448954,0.86903610193327185,0.47888671392958704,0.87787670844015553,0.46286683389327199,0.88642782790344421,0.44669431972276274,0.8946866405213717,0.43037450443722902,0.90265042288275121,0.41391276962959123,0.91031654886504232,0.39731454369189556,0.91768249050033679,0.38058530002525809,0.92474581880897644,0.3637305552349655,0.93150420460052874,0.34675586731132851,0.93795541924185732,0.32966683379689027,0.94409733539203122,0.31246908994059008,0.9499279277038335,0.29516830683949391,0.95544527349163566,0.27777018956870336,0.96064755336541952,0.26028047530006099,0.96553305183073579,0.24270493141027075,0.97010015785440207,0.22504935357905728,0.97434736539575473,0.20731956387799441,0.97827327390327812,0.18952140885062835,0.98187658877644746,0.17166075758453253,0.98515612179263468,0.15374349977592697,0.98811079149893388,0.13577554378750387,0.99073962356877987,0.11776281470009585,0.99304175112324,0.099711252358832228,0.99501641501687466,0.081626809414425586,0.99666296408807176,0.063515449360237689,0.99798085537377268,0.045383144565767988,0.99896965428851869,0.027235874307215153,0.99962903476775899,0.0090796227957629927,0.99995877937537336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99996738869437329,0.0080759858689875407,0.99986955690448787,0.016151445001088262,0.99970651101118835,0.024225850693770493,0.99947826164875364,0.03229867631321065,0.99918482370420336,0.04036939532864163,0.99882621631632629,0.048437481346694546,0.99840246287443279,0.056502408145731507,0.99791359101682886,0.064563649710167106,0.99735963262901361,0.072620680264776555,0.99674062384159967,0.080672974308988149,0.99605660502795645,0.088720006651157729,0.9953076208015772,0.096761252442823104,0.99449372001316894,0.10479618721293602,0.99361495574746639,0.11282428690206951,0.99267138531976951,0.12084502789659846,0.99166307027220568,0.12885788706285101,0.99059007636971519,0.13686234178122872,0.98945247359576216,0.14485786998029321,0.98825033614777025,0.15284395017081701,0.98698374243228271,0.16082006147979638,0.98565277505984916,0.16878568368442409,0.98425752083963702,0.17674029724601978,0.98279807077377013,0.18468338334391535,0.98127452005139248,0.19261442390929412,0.9796869680424608,0.20053290165898049,0.97803551829126256,0.20843830012917844,0.97632027850966274,0.21633010370915678,0.97454136057007901,0.22420779767487847,0.97269888049818454,0.2320708682225725,0.97079295846534064,0.23991880250224515,0.96882371878075946,0.24775108865112985,0.96679128988339502,0.25556721582707193,0.96469580433356761,0.26336667424184695,0.96253739880431632,0.27114895519441079,0.96031621407248602,0.27891355110407828,0.95803239500954496,0.28665995554362883,0.95568609057213605,0.29438766327233706,0.95327745379236162,0.30209617026892588,0.95080664176780183,0.30978497376444014,0.948273815651269,0.31745357227503845,0.94567914064029623,0.32510146563470121,0.94302278596636302,0.33272815502785302,0.94030492488385775,0.34033314302189643,0.9375257346587772,0.34791593359965589,0.93468539655716487,0.3554760321917293,0.93178409583328881,0.36301294570874526,0.92882202171755812,0.37052618257352327,0.92579936740418145,0.37801525275313608,0.92271633003856601,0.38547966779087084,0.91957311070445935,0.39291894083808715,0.91636991441083415,0.4003325866859711,0.91310695007851705,0.40772012179718153,0.90978443052656233,0.41508106433738789,0.90640257245837097,0.42241493420669635,0.90296159644755714,0.42972125307096348,0.89946172692356152,0.43699954439299415,0.89590319215701353,0.44424933346362305,0.89228622424484283,0.45147014743267594,0.88861105909514149,0.45866151533981026,0.88487793641177737,0.46582296814523272,0.88108709967875998,0.47295403876029102,0.87723879614435996,0.48005426207793844,0.87333327680498263,0.48712317500307001,0.86937079638879766,0.49416031648272574,0.86535161333912491,0.50116522753616266,0.86127598979757769,0.50813745128479049,0.8571441915869662,0.51507653298196976,0.85295648819395875,0.52198202004267258,0.84871315275150583,0.52885346207300099,0.84441446202102544,0.5356904108995626,0.84006069637435177,0.54249242059870206,0.8356521397754495,0.54925904752558485,0.83118907976189149,0.55598985034313353,0.82667180742610613,0.5626843900508125,0.82210061739639106,0.56934223001326079,0.81747580781769624,0.5759629359887708,0.81279768033217925,0.58254607615761056,0.80806654005953027,0.58909122115018786,0.80328269557707221,0.59559794407505529,0.79844645889963395,0.60206582054675317,0.79355814545920023,0.60849442871348858,0.78861807408433837,0.61488334928465005,0.78362656697940314,0.62123216555815508,0.77858394970352196,0.62754046344762782,0.77349055114936116,0.63380783150940745,0.76834670352167478,0.64003386096938308,0.76315274231563668,0.64621814574965586,0.75790900629495961,0.65236028249502354,0.75261583746979965,0.65845987059928879,0.7472735810744493,0.66451651223138808,0.74188258554482045,0.6705298123613388,0.73644320249571915,0.67649937878600386,0.73095578669791128,0.68242482215467337,0.72542069605498416,0.68830575599445798,0.71983829158000323,0.6941417967354957,0.71420893737196522,0.69993256373597035,0.70853300059205138,0.70567767930693692,0.7028108514396797,0.71137676873695588,0.69704286312835995,0.71702946031653292,0.69122941186135156,0.72263538536236238,0.68537087680712638,0.72819417824137456,0.67946764007463889,0.73370547639458228,0.67352008668840357,0.73916892036072879,0.66752860456338292,0.74458415379973186,0.6614935844796862,0.74995082351592646,0.65541542005708242,0.7552685794810996,0.64929450772932695,0.76053707485732147,0.64313124671830479,0.76575596601956619,0.63692603900799305,0.77092491257812423,0.63067928931824191,0.77604357740080376,0.6243914050783782,0.78111162663491873,0.61806279640063111,0.78612872972906422,0.6116938760533841,0.79109455945467555,0.60528505943425326,0.79600879192737095,0.5988367645429935,0.80087110662807615,0.59234941195423574,0.80568118642392983,0.585823424790056,0.81043871758896713,0.579259228692378,0.81514338982458245,0.5726572517952121,0.81979489627976765,0.56601792469673096,0.82439293357112531,0.55934168043118493,0.82893720180265651,0.55262895444065829,0.83342740458532127,0.54588018454666887,0.83786324905636878,0.53909581092161196,0.84224444589843961,0.53227627606005079,0.84657070935843548,0.52542202474985689,0.8508417572661563,0.51853350404319887,0.85505731105270477,0.51161116322738465,0.85921709576865513,0.50465545379555843,0.86332084010198606,0.49766682941725254,0.86736827639577596,0.49064574590879773,0.87135914066566111,0.4835926612035944,0.87529317261705264,0.47650803532224462,0.87917011566211378,0.46939233034254774,0.88298971693649553,0.46224601036936364,0.88675172731582885,0.45506954150434198,0.89045590143197317,0.44786339181552132,0.89410199768902021,0.44062803130680173,0.89768977827905128,0.43336393188728906,0.9012190091976473,0.42607156734051549,0.90468946025915242,0.41875141329353915,0.90810090511168606,0.41140394718592183,0.91145312125190692,0.40402964823858928,0.91474589003952445,0.39662899742257463,0.91797899671156058,0.3892024774276493,0.92115223039635541,0.38175057263084006,0.92426538412732184,0.37427376906483617,0.92731825485644448,0.36677255438629025,0.93031064346752246,0.35924741784401143,0.93324235478915674,0.35169885024705455,0.93611319760747946,0.34412734393270977,0.93892298467862556,0.33653339273439026,0.94167153274094495,0.32891749194942244,0.94435866252695622,0.32128013830674279,0.94698419877503781,0.31362182993449916,0.94954797024085946,0.30594306632756091,0.9520498097085518,0.2982443483149419,0.95448955400161173,0.29052617802713449,0.9568670439935455,0.28278905886335848,0.95918212461824781,0.27503349545872952,0.9614346448801151,0.26725999365134484,0.96362445786389372,0.25946906044929047,0.96575142074426301,0.25166120399757408,0.96781539479514966,0.24383693354498207,0.96981624539877653,0.23599675941086404,0.97175384205444271,0.22814119295184987,0.97362805838703459,0.22027074652849696,0.97543877215526897,0.21238593347187293,0.97718586525966555,0.20448726805007419,0.97886922375025009,0.19657526543468515,0.98048873783398605,0.18865044166717687,0.98204430188193603,0.18071331362524873,0.98353581443615079,0.17276439898911772,0.98496317821628687,0.16480421620775323,0.98632630012595124,0.1568332844650619,0.98762509125877362,0.14885212364602632,0.98885946690420479,0.14086125430279617,0.99002934655304187,0.13286119762073573,0.9911346539026793,0.12485247538443223,0.99217531686208549,0.11683560994366293,0.99315126755650485,0.10881112417932552,0.99406244233188457,0.10077954146933571,0.99490878175902664,0.092741385654490582,0.99569023063746342,0.084697181004301583,0.99640673799905854,0.076647452182801709,0.997058257111331,0.06859272421432476,0.99764474548050297,0.060533522449261357,0.99816616485427156,0.052470372529795445,0.99862248122430353,0.044403800355619936,0.99901366482845377,0.036334332049635432,0.99933969015270618,0.028262493923636507,0.99960053593283771,0.020188812443983573,0.99979618515580548,0.012113814197264716,0.99992662506085628,0.0040380258559516765,0.99999184714035882,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99981197044850145,0.01939133177182437,0.99924795250423004,0.03877537125681671,0.99830815827126818,0.058144828910475822,0.99699294116779202,0.077492420671930934,0.99530279579316583,0.096810870703179092,0.99323835774194302,0.11609291412523022,0.99080040336484532,0.13533129975013108,0.98798984947680901,0.15451879280784048,0.98480775301220802,0.17364817766693033,0.98125531062738469,0.19271226054808968,0.97733385825063557,0.21170387222941073,0.97304487057982381,0.23061587074244014,0.9683899605278059,0.24944114405798126,0.96337087861588033,0.26817261276063731,0.9579895123154889,0.28680323271109021,0.95224788533841531,0.30532599769511309,0.94614815687575049,0.32373394205832101,0.93969262078590843,0.34202014332566871,0.93288370473200055,0.36017772480471039,0.92572396926889045,0.37819985817164248,0.918216106880274,0.39607976603915679,0.91036294096614667,0.41381072450513912,0.90216742478103773,0.43138606568125343,0.89363264032341228,0.44879918020046211,0.88476179717665782,0.46604351970253877,0.87555823130209087,0.48311259929663841,0.86602540378443871,0.49999999999999994,0.85616689953026648,0.51669937115186282,0.84598642591984108,0.53320443280169116,0.83548781141293649,0.54950897807080601,0.82467500410910677,0.56560687548653854,0.81355207026296761,0.5814920712880266,0.80212319275504385,0.59715859170278618,0.79039266951875931,0.61260054519320284,0.77836491192416002,0.62781212467209857,0.76604444311897801,0.64278760968653925,0.75343589632766073,0.65752136856906362,0.74054401310900464,0.67200786055552242,0.72737364157304873,0.6862416378687336,0.7139297345578991,0.70021734776716849,0,0.99924795250423004,0.03877537125681671,0.99699294116779202,0.077492420671930934,0.99323835774194302,0.11609291412523022,0.98798984947680901,0.15451879280784048,0.98125531062738469,0.19271226054808968,0.97304487057982381,0.23061587074244014,0.96337087861588033,0.26817261276063731,0.95224788533841531,0.30532599769511309,0.93969262078590843,0.34202014332566871,0.92572396926889045,0.37819985817164248,0.91036294096614667,0.41381072450513912,0.89363264032341228,0.44879918020046211,0.87555823130209087,0.48311259929663841,0.85616689953026648,0.51669937115186282,0.83548781141293649,0.54950897807080601,0.81355207026296761,0.5814920712880266,0.79039266951875931,0.61260054519320284,0.76604444311897801,0.64278760968653925,0.74054401310900464,0.67200786055552242,0.7139297345578991,0.70021734776716849,0.6862416378687336,0.72737364157304873,0.65752136856906362,0.75343589632766073,0.62781212467209857,0.77836491192416002,0.59715859170278629,0.80212319275504373,0.56560687548653865,0.82467500410910666,0.53320443280169139,0.84598642591984097,0.50000000000000011,0.8660254037844386,0.46604351970253893,0.8847617971766577,0.43138606568125354,0.90216742478103762,0.3960797660391569,0.918216106880274,0.3601777248047105,0.93288370473200044,0.32373394205832112,0.94614815687575038,0.28680323271109032,0.9579895123154889,0.24944114405798137,0.9683899605278059,0.21170387222941084,0.97733385825063546,0.17364817766693041,0.98480775301220802,0.13533129975013117,0.99080040336484532,0.096810870703179161,0.99530279579316583,0.058144828910475899,0.99830815827126818,0.019391331771824435,0.99981197044850145,0,0.99830815827126818,0.058144828910475822,0.99323835774194302,0.11609291412523022,0.98480775301220802,0.1736481776669303,0.97304487057982381,0.23061587074244014,0.9579895123154889,0.28680323271109021,0.93969262078590843,0.34202014332566866,0.918216106880274,0.39607976603915673,0.89363264032341228,0.44879918020046211,0.86602540378443871,0.49999999999999994,0.83548781141293649,0.54950897807080601,0.80212319275504385,0.59715859170278618,0.76604444311897812,0.64278760968653925,0.72737364157304885,0.68624163786873349,0.68624163786873371,0.72737364157304862,0.64278760968653947,0.76604444311897801,0.59715859170278629,0.80212319275504373,0.54950897807080612,0.83548781141293638,0.50000000000000011,0.8660254037844386,0.44879918020046228,0.89363264032341216,0.3960797660391569,0.918216106880274,0.34202014332566882,0.93969262078590832,0.28680323271109032,0.9579895123154889,0.23061587074244025,0.97304487057982381,0.17364817766693064,0.98480775301220802,0.11609291412523053,0.99323835774194291,0.058144828910476121,0.99830815827126818,2.8327694488239898e-16,1,-0.058144828910475552,0.99830815827126818,-0.11609291412522996,0.99323835774194302,-0.17364817766693008,0.98480775301220813,-0.23061587074243992,0.97304487057982392,-0.28680323271108998,0.9579895123154889,-0.34202014332566849,0.93969262078590843,-0.39607976603915662,0.91821610688027411,-0.44879918020046178,0.8936326403234125,-0.49999999999999983,0.86602540378443871,-0.54950897807080568,0.8354878114129366,-0.59715859170278596,0.80212319275504396,-0.64278760968653903,0.76604444311897835,-0.68624163786873349,0.72737364157304885,0,0.99699294116779202,0.077492420671930934,0.98798984947680901,0.15451879280784048,0.97304487057982381,0.23061587074244014,0.95224788533841531,0.30532599769511309,0.92572396926889045,0.37819985817164248,0.89363264032341228,0.44879918020046211,0.85616689953026648,0.51669937115186282,0.81355207026296761,0.5814920712880266,0.76604444311897801,0.64278760968653925,0.7139297345578991,0.70021734776716849,0.65752136856906362,0.75343589632766073,0.59715859170278629,0.80212319275504373,0.53320443280169139,0.84598642591984097,0,0.98798984947680901,0.15451879280784048,0.95224788533841531,0.30532599769511309,0.89363264032341228,0.44879918020046211,0.81355207026296761,0.5814920712880266,0.7139297345578991,0.70021734776716849,0.59715859170278629,0.80212319275504373,0.46604351970253893,0.8847617971766577,0.32373394205832112,0.94614815687575038,0.17364817766693041,0.98480775301220802,0.019391331771824435,0.99981197044850145,-0.13533129975013106,0.99080040336484532,-0.28680323271108998,0.9579895123154889,-0.43138606568125326,0.90216742478103773,0,0.97304487057982381,0.23061587074244014,0.89363264032341228,0.44879918020046211,0.76604444311897812,0.64278760968653925,0.59715859170278629,0.80212319275504373,0,0.89363264032341228,0.44879918020046211,0.59715859170278629,0.80212319275504373,0.17364817766693064,0.98480775301220802,-0.28680323271108998,0.9579895123154889,0,0.76604444311897801,0.64278760968653925,0,0.17364817766693041,0.98480775301220802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/medium.json b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/medium.json new file mode 100644 index 000000000000..5b71d20d3c92 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/medium.json @@ -0,0 +1 @@ +{"lengths":[93,90,82,46,115,67,62,84,109,94],"offsets":[0,94,185,268,315,431,499,562,647,757],"sines":[0.066829954015349136,0.1335852674902431,0.20019138324819669,0.26657391074755765,0.33265870916626006,0.39837197020767218,0.4636403005350565,0.52839080374257197,0.59255116177126799,0.65604971567913828,0.71881554567502559,0.78077855032698962,0.84186952485666999,0.90202023843220358,0.96116351037336756,1.0192332851838348,1.0761647063267454,1.1318941886611904,1.1863594894587104,1.2394997779204899,1.2912557031176046,1.3415694602784469,1.3903848553492846,1.4376473677558588,1.4833042112959152,1.5273043930946641,1.569598770557322,1.6101401062551257,1.6488831206835206,1.685784542833594,1.7208031585202788,1.753899856413343,1.7850376717197625,1.8141818274686814,1.8412997733528575,1.8663612220832051,1.8893381832158376,1.9102049944138249,1.9289383501087531,1.9455173275300743,1.9599234100731735,1.9721405079800571,1.9821549763095601,1.9899556301770081,1.9955337572463063,1.9988831274605092,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.069032277939416256,0.13798228880864985,0.20676786357674029,0.27530702917433642,0.34351810618255207,0.41131980617187314,0.47863132857511548,0.54537245697898751,0.6114636547195057,0.67682615966734094,0.74138207809013501,0.80505447747993497,0.86776747823511624,0.92944634408753701,0.99001757116716271,1.049408975598016,1.1075497795210663,1.1643706954415414,1.2198040088001456,1.2737836586697784,1.3262453164815904,1.377126462686554,1.4263664612611924,1.4739066319686733,1.5196903202891576,1.5636629649360596,1.605772162877765,1.6459677317873127,1.6842017698456233,1.7204287128270013,1.7546053883988839,1.7866910675711263,1.8166475132335078,1.8444390257236207,1.8700324853708297,1.8933973919656117,1.9145059011072314,1.933332857386439,1.9498558243636472,1.9640551113068607,1.9759137966574929,1.9854177481961079,1.9925556398840529,1.9973189653609122,1.9997020480816987,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.07568295343534058,0.1512574917689134,0.2266153552025397,0.30164859432274765,0.37624972473726753,0.450311881045388,0.52372896992161344,0.59639582209333086,0.6682083429947796,0.73906366188151384,0.80886027919175396,0.87749821194353028,0.944879136959342,1.0109065317131616,1.075485812598024,1.1385244704161319,1.1999322028973913,1.2596210440565425,1.3175054902035876,1.3735026224270022,1.4275322253742777,1.4795169021596415,1.5293821852343492,1.5770566430607318,1.6224719824371847,1.665563146327522,1.7062684070545533,1.7445294547243875,1.7802914807547932,1.8135032563879652,1.8441172060752271,1.8720894756285456,1.8973799950412329,1.9199525358878455,1.9397747632210545,1.9568182818911455,1.9710586772217984,1.9824755499838749,1.991052545617118,1.9967773776579025,1.9996418453394755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.1335852674902431,0.26657391074755765,0.39837197020767218,0.52839080374257197,0.65604971567913828,0.78077855032698962,0.90202023843220358,1.0192332851838348,1.1318941886611904,1.2394997779204899,1.3415694602784469,1.4376473677558588,1.5273043930946641,1.6101401062551257,1.685784542833594,1.753899856413343,1.8141818274686814,1.8663612220832051,1.9102049944138249,1.9455173275300743,1.9721405079800571,1.9899556301770081,1.9988831274605092,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.054158769352268987,0.10827781717083505,0.16231745105486256,0.21623803684788354,0.27000002770658021,0.32356399310552947,0.37689064775663655,0.42994088042204814,0.4826757825994113,0.53505667705844162,0.58704514620786952,0.63860306027196001,0.68969260525594089,0.74027631067982869,0.79031707706031085,0.8397782031205292,0.88862341270780709,0.9368168813995803,0.98432326277801463,1.0311077143540435,1.0771359231218087,1.1223741307247648,1.1667891582149879,1.2103484303875305,1.2530199996719733,1.2947725695636554,1.3355755175773911,1.3753989177068466,1.4142135623730949,1.4519909838462617,1.4887034751245405,1.5243241102552729,1.5588267640831832,1.5921861314112875,1.6243777455604222,1.6553779963137811,1.6851641472332983,1.7137143523351785,1.7410076721123442,1.7670240888920459,1.791744521517376,1.815150839341914,1.8372258755272435,1.8579534396335828,1.877318329494301,1.8953063423656049,1.9119042853432231,1.927099985038446,1.9408822965064227,1.9532411114201733,1.9641673654843119,1.9736530450830523,1.9816911931576136,1.9882759143087192,1.9934023791204456,1.9970668277022476,1.9992665724465679,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.092366917291479181,0.18453671892660398,0.27631270990376439,0.36749903563314068,0.45790109990026817,0.54732598014416567,0.63558283916380331,0.72248333237430584,0.80784200974378984,0.89147671155307651,0.97320895713371258,1.0528643257547114,1.1302728288451838,1.2052692727585128,1.2776936113039226,1.3473912872931144,1.4142135623730949,1.4780178344413182,1.5386679419657578,1.596034454560479,1.6499949491966046,1.7004342714592282,1.7472447812927392,1.7903265827101247,1.829587736976042,1.8649444588087116,1.8963212951819317,1.9236512863456381,1.9468761087213857,1.9659461993678036,1.9808208617504104,1.9914683525900689,1.9978659496047448,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.099691771321394326,0.19913569319163332,0.29808453235234889,0.39629228639879516,0.49351479538058729,0.58951034882180842,0.68404028665133754,0.77686959254938948,0.86776747823511624,0.95650795724263649,1.0428704067589962,1.1266401161272441,1.2076088206509548,1.2855752193730787,1.3603454755418389,1.4317336985194369,1.4995624059354684,1.5636629649360596,1.623876011431713,1.680051846301543,1.7320508075688774,1.7797436176229373,1.8230117046233463,1.8617474972884085,1.8958546923342636,1.9252484939000241,1.9498558243636472,1.9696155060244163,1.9844784132003441,1.9944075943623603,1.9993783640016325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.073902998778289777,0.14770505494974792,0.22130536378300167,0.294603396109275,0.36749903563314068,0.43989271567933719,0.51168555518887116,0.58277949377864924,0.65307742568016658,0.72248333237430584,0.79090241374108505,0.85824121754521787,0.92440776708062633,0.98931168679955761,1.0528643257547114,1.1149788786857711,1.1755705045849463,1.2345564425795859,1.2918561249735747,1.3473912872931144,1.4010860751865819,1.4528671480324482,1.5026637791137465,1.5504079522222596,1.5960344545604788,1.639480965814442,1.6806881432757854,1.7195997028967447,1.7561624961673958,1.7903265827101247,1.8220452984921767,1.8512753195631124,1.8779767212301131,1.9021130325903071,1.9236512863456381,1.9425620638322276,1.9588195352027318,1.9724014947068051,1.9832893910214855,1.9914683525900689,1.9969272079348679,1.9996585009161054,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.057112101587392501,0.11417762172553596,0.17115001695767948,0.22798281978108123,0.28462967654657029,0.34104438526524755,0.3971809332914909,0.45299353485152871,0.50843666838697388,0.56346511368285934,0.61803398874989479,0.67209878643086018,0.72561541070128199,0.7785402126347829,0.83083002600377276,0.88244220248644256,0.93333464645134734,0.98346584929120751,1.0327949232779237,1.0812816349111951,1.1288864377335381,1.1755705045849463,1.2212957592708762,1.2660249076177408,1.30972146789057,1.3523498005480388,1.3938751373105867,1.4342636095179269,1.4734822757528097,1.5114991487085165,1.5482832212781648,1.5838044918445502,1.6180339887498949,1.6509437939255478,1.6825070656623622,1.7126980605031779,1.7414921542395543,1.7688658619956286,1.7947968573827167,1.8192639907090367,1.8422473062297002,1.8637280584229046,1.8836887272790492,1.9021130325903071,1.9189859472289947,1.9342937094039141,1.9480238338846669,1.9601651221847869,1.970707671695386,1.9796428837618654,1.9869634706971004,1.9926634617253827,1.9967382078522713,1.9991843856563785,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.066126738634616433,0.13218116865139889,0.1980910605009254,0.26378434268413781,0.32918918056146784,0.39423405490296065,0.45884784009350316,0.52295988190763953,0.58650007476892951,0.64939893840936702,0.71158769384503295,0.77299833858490452,0.83356372099058085,0.89321761370561314,0.95189478607414724,1.0095310754696876,1.0660634574559875,1.1214301147033454,1.1755705045849465,1.2284254253793356,1.2799370810066331,1.3300491442276965,1.3787068182371318,1.425856896582794,1.4714478213462634,1.5154297395206695,1.5577545575242249,1.5983759937898496,1.6372496293733849,1.6743329565250573,1.709585425171078,1.7429684872545546,1.7744456388872238,1.803982460265918,1.831546653310115,1.8571080769794142,1.8806387802323226,1.9021130325903073,1.9215073522736963,1.938800531878661,1.9539736615671985,1.9670101497447647,1.977895741202937,1.9866185327072763,1.9931689860133397,1.9975399382966097,1.999726609984938,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"twiddles":[0.99776687862315316,0.066792633745121552,0.99107748815478014,0.13328695537377883,0.97996170503658686,0.19918598510383609,0.96446917505437657,0.26419540187128598,0.94466909160791879,0.32802485783956914,0.92064988667642877,0.39038927516349481,0.89251883585988123,0.45101011921610179,0.86040157926013938,0.50961664259191741,0.8244415603417603,0.5659470943305952,0.78479938527866089,0.61974988896024497,0.74165210564795758,0.67078473013922346,0.69519242767464229,0.71882368387792939,0.64562785155880242,0.76365219654733207,0.59317974472935531,0.80507005312756286,0.53808235316337272,0.84289227141679701,0.48058175518668378,0.8769499282066715,0.420934762428335,0.9070909137343407,0.3594077728375128,0.93318061104160255,0.29627558088563394,0.95510249720691243,0.2318201502675282,0.97275866376503717,0.16632935458313017,0.98607025399002857,0.10009569162409844,0.99497781508850403,0.033414977007674644,0.99944156373025461,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99761727230124764,0.068991144404324925,0.99048044398756319,0.13765351458716821,0.97862352529595531,0.20565990308593657,0.96210301984360058,0.27268622848949375,0.94099765536237645,0.33841307983367042,0.91540800852536641,0.40252723873996749,0,0.99048044398756319,0.13765351458716821,0.96210301984360058,0.27268622848949375,0.91540800852536641,0.40252723873996749,0.85128444158435124,0.52470448779900802,0.7709531747949796,0.63689182933488919,0.67594364414475439,0.73695331598433667,0,0.97862352529595531,0.20565990308593657,0.91540800852536641,0.40252723873996749,0.81305609947853252,0.58218534772077069,0.67594364414475439,0.73695331598433667,0.50993260439013599,0.86021435641350064,0.32212044179849075,0.94669869598280587,0,0.96210301984360058,0.27268622848949375,0.85128444158435124,0.52470448779900802,0.67594364414475439,0.73695331598433667,0.44937040096716135,0.89334553378556314,0.18873759545291671,0.98202755565343036,-0.086200379880619196,0.99627781994202647,0,0.94099765536237645,0.33841307983367042,0.7709531747949796,0.63689182933488919,0.50993260439013577,0.86021435641350075,0.18873759545291671,0.98202755565343036,-0.15472933479028111,0.98795689832874645,-0.47993747795978653,0.87730269419944185,0,0.91540800852536641,0.40252723873996749,0.67594364414475439,0.73695331598433667,0.32212044179849075,0.94669869598280587,-0.086200379880619196,0.99627781994202647,-0.47993747795978614,0.87730269419944207,-0.79247684195109025,0.60990200440007303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99853341385112382,0.054138908585417526,0.9941379571543596,0.10811901842394177,0.98682652254152614,0.16178199655276473,0.97662055571008666,0.21497044021102407,0.96354999251922291,0.26752833852922081,0.94765317118280246,0.31930153013598001,0.92897671981679142,0.37013815533991434,0.90757541967095701,0.4198891015602646,0.88351204444602294,0.46840844069979015,0.85685717616758927,0.51555385717702173,0.82768899815689057,0.56118706536238239,0.79609306570564375,0.60517421519376513,0.76216205512763646,0.64738628478182769,0.72599549192313084,0.68769945885342332,0,0.9941379571543596,0.10811901842394177,0.97662055571008666,0.21497044021102407,0.94765317118280246,0.31930153013598001,0.90757541967095701,0.4198891015602646,0.85685717616758927,0.51555385717702173,0.79609306570564375,0.60517421519376513,0.72599549192313084,0.68769945885342332,0.64738628478182758,0.76216205512763646,0.56118706536238228,0.82768899815689057,0.46840844069979015,0.88351204444602294,0.37013815533991434,0.92897671981679142,0.26752833852922075,0.96354999251922302,0.16178199655276462,0.98682652254152614,0.05413890858541761,0.99853341385112382,0,0.98682652254152614,0.16178199655276473,0.94765317118280246,0.31930153013598001,0.88351204444602294,0.46840844069979015,0.79609306570564375,0.60517421519376513,0.68769945885342321,0.72599549192313095,0.56118706536238228,0.82768899815689057,0.4198891015602646,0.90757541967095701,0.26752833852922075,0.96354999251922302,0.10811901842394164,0.9941379571543596,-0.054138908585417707,0.99853341385112382,-0.2149704402110241,0.97662055571008666,-0.37013815533991445,0.92897671981679142,-0.51555385717702185,0.85685717616758916,-0.64738628478182769,0.76216205512763646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99573417629503447,0.092268359463301988,0.98297309968390179,0.18374951781657034,0.96182564317281904,0.27366299007208283,0.93247222940435581,0.36124166618715292,0.89516329135506234,0.44573835577653825,0.85021713572961422,0.52643216287735572,0.79801722728023949,0.60263463637925641,0.73900891722065909,0.67369564364655721,0,0.98297309968390179,0.18374951781657034,0.93247222940435581,0.36124166618715292,0.85021713572961422,0.52643216287735572,0.73900891722065909,0.67369564364655721,0.60263463637925641,0.79801722728023949,0.44573835577653831,0.89516329135506234,0.27366299007208278,0.96182564317281904,0.092268359463302016,0.99573417629503447,0,0.96182564317281904,0.27366299007208283,0.85021713572961422,0.52643216287735572,0.67369564364655721,0.73900891722065909,0.44573835577653831,0.89516329135506234,0.18374951781657031,0.98297309968390179,-0.092268359463301891,0.99573417629503458,-0.36124166618715275,0.93247222940435592,-0.60263463637925629,0.7980172272802396,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99503077536540141,0.099567846595816661,0.98017248784854383,0.19814614319939758,0.95557280578614068,0.29475517441090421,0.92147621187040762,0.38843479627469474,0.87822157337022855,0.47825397862131824,0.82623877431599491,0.56332005806362206,0.76604444311897801,0.64278760968653936,0.69823681808607285,0.71586684925971844,0.62348980185873359,0.7818314824680298,0.54254626386575944,0.84002592315077151,0,0.98017248784854383,0.19814614319939758,0.92147621187040762,0.38843479627469474,0.82623877431599491,0.56332005806362206,0.69823681808607285,0.71586684925971844,0.54254626386575944,0.84002592315077151,0.36534102436639498,0.93087374864420425,0.17364817766693022,0.98480775301220813,-0.024930691738072913,0.99968918200081625,-0.22252093395631434,0.97492791218182362,-0.41128710313061156,0.91150585231167314,0,0.95557280578614068,0.29475517441090421,0.82623877431599491,0.56332005806362206,0.62348980185873359,0.7818314824680298,0,0.82623877431599491,0.56332005806362206,0.36534102436639498,0.93087374864420425,-0.22252093395631434,0.97492791218182362,0,0,0,0,0,0,0,0,0.99726917338578802,0.073852527474873961,0.98909160837114596,0.1473016980546375,0.9755119679804366,0.21994635783966859,0.95660441950044084,0.29138974688932462,0.93247222940435581,0.36124166618715292,0.90324719934612885,0.42912060877260894,0.86908894630552835,0.49465584339977881,0.8301840308155507,0.55748943934288553,0,0.98909160837114596,0.1473016980546375,0.95660441950044084,0.29138974688932462,0.90324719934612885,0.42912060877260894,0.8301840308155507,0.55748943934288553,0.73900891722065909,0.67369564364655721,0.63171100625325105,0.77520397611112979,0.51063119318090699,0.85979985144837234,0.37841105004231035,0.92563765978155621,0,0.9755119679804366,0.21994635783966859,0.90324719934612885,0.42912060877260894,0.78674493803348333,0.61727822128979282,0.63171100625325105,0.77520397611112979,0.44573835577653831,0.89516329135506234,0.23793519504261904,0.97128103191611381,0.018478904959130137,0.99982925045805271,-0.20188240915701006,0.97940976760136589,0,0.95660441950044084,0.29138974688932462,0.8301840308155507,0.55748943934288553,0.63171100625325105,0.77520397611112979,0.37841105004231035,0.92563765978155621,0.092268359463302016,0.99573417629503447,-0.20188240915701006,0.97940976760136589,-0.47851156910128639,0.87808124808369803,-0.71361015441175224,0.70054303759329106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.99836910392613565,0.057088810862767979,0.99348173534855022,0.11399140989054062,0.98535383584769298,0.17052219263262378,0.97401191694233347,0.22649676742576436,0.95949297361449737,0.28173255684142967,0.94184436363952473,0.33604939321543009,0.92112365311485012,0.38927010631739145,0.89739842869135844,0.44122110124322128,0.87074607711977714,0.49173292464560375,0.84125353283118121,0.54064081745559756,0.80901699437494745,0.58778525229247314,0.77414161063908249,0.63301245380887039,0.73674113787640494,0.67617490027401939,0.69693756865529344,0.71713180475896343,0.6548607339452851,0.75574957435425827,0.61064787963543821,0.79190224592227509,0.56444321886676929,0.8254718969627739,0.51639746163896194,0.85634903025158893,0.46666732322567384,0.88443293099781428,0.41541501300188644,0.90963199535451833,0.36280770535064116,0.93186402921145228,0.30901699437494745,0.95105651629515353,0.25421833419348711,0.96714685470195705,0.19859046664574553,0.98008256109239345,0.14231483827328534,0.98982144188093268,0.085575008478839837,0.99633173086269133,0.028556050793696476,0.99959219282818923,0,0.99348173534855022,0.11399140989054062,0.97401191694233347,0.22649676742576436,0.94184436363952473,0.33604939321543009,0.89739842869135844,0.44122110124322128,0.84125353283118121,0.54064081745559756,0,0.97401191694233347,0.22649676742576436,0.89739842869135844,0.44122110124322128,0.77414161063908249,0.63301245380887039,0.61064787963543821,0.79190224592227509,0.41541501300188644,0.90963199535451833,0,0.94184436363952473,0.33604939321543009,0.77414161063908249,0.63301245380887039,0.51639746163896194,0.85634903025158893,0.19859046664574553,0.98008256109239345,-0.142314838273285,0.9898214418809328,0,0.89739842869135844,0.44122110124322128,0.61064787963543821,0.79190224592227509,0.19859046664574553,0.98008256109239345,-0.25421833419348677,0.96714685470195716,-0.6548607339452851,0.75574957435425827,0,0,0,0,0,0,0,0,0,0,0,0,0.99781362721877453,0.066090584325699447,0.99126406932697519,0.1318921713420689,0.98037996587480936,0.19711702745148033,0.96520891027734868,0.26147994095381977,0.94581724170063464,0.32469946920468351,0.92228975497738475,0.38649916929245226,0.89472932982076347,0.44660880685280657,0.86325648095757379,0.50476553773484378,0.82800883114802004,0.56071505735167271,0,0.99126406932697519,0.1318921713420689,0.96520891027734868,0.26147994095381977,0.92228975497738475,0.38649916929245226,0.86325648095757379,0.50476553773484378,0.78914050939639357,0.61421271268966782,0.70123678427248859,0.71292844829139701,0.60108114728302509,0.79918799689492481,0.49042350383050809,0.87148424362727728,0.37119724891822076,0.92855403848970708,0,0.98037996587480936,0.19711702745148033,0.92228975497738475,0.38649916929245226,0.82800883114802004,0.56071505735167271,0.70123678427248859,0.71292844829139701,0.54694815812242692,0.83716647826252855,0.37119724891822076,0.92855403848970708,0.18088053433210999,0.98350507487238237,-0.016533944766358447,0.999863304992469,-0.21329963074374692,0.97698683078359927,0,0.96520891027734868,0.26147994095381977,0.86325648095757379,0.50476553773484378,0.70123678427248859,0.71292844829139701,0.49042350383050809,0.87148424362727728,0.24548548714079901,0.96940026593933049,-0.016533944766358447,0.999863304992469,-0.27740290876184465,0.96075367613684814,-0.51896957378121522,0.85479271258553891,-0.72442520479108896,0.68935340911856591,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/runner.c b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/runner.c new file mode 100644 index 000000000000..1844165535d8 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/runner.c @@ -0,0 +1,304 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/** +* Generate FFTPACK test fixtures. +* +* ## Notes +* +* - Run this script from the directory in which fixtures should be written. +* +*/ + +#include +#include +#include + +/** +* Define prototypes for external functions. +*/ +extern void sinti( int n, double *wsave ); + +/** +* Generates a random number on the interval [0,1]. +* +* @return random number +*/ +double rand_double( void ) { + int r = rand(); + return (double)r / ( (double)RAND_MAX + 1.0 ); +} + +/** +* Generates an array of pseudorandom integers drawn from a uniform distribution. +* +* ## Notes +* +* - WARNING: the method used here is not particularly robust, as some integer values may be sampled more frequently than others. +* +* +* @param out output array +* @param len array length +* @param a lower bound (inclusive) +* @param b upper bound (exclusive) +*/ +void rand_array_i32( int *out, const unsigned int len, const int a, const int b ) { + unsigned int i; + unsigned int r; + double delta; + + delta = (double)b - (double)a; + + for ( i = 0; i < len; i++ ) { + r = (unsigned int)( delta * rand_double() ); // truncation + out[ i ] = (int)( a + r ); + } +} + +/** +* Writes an array of doubles to a file as a series of comma-separated values. +* +* @param f file to write to +* @param x array of doubles +* @param len array length +*/ +void write_array_f64( FILE *f, const double *x, const unsigned int len ) { + unsigned int i; + + for ( i = 0; i < len; i++ ) { + fprintf( f, "%.17g", x[ i ] ); + if ( i < len-1 ) { + fprintf( f, "," ); + } + } +} + +/** +* Writes an array of integers to a file as a series of comma-separated values. +* +* @param f file to write to +* @param x array of integers +* @param len array length +*/ +void write_array_i32( FILE *f, const int *x, const unsigned int len ) { + unsigned int i; + + for ( i = 0; i < len; i++ ) { + fprintf( f, "%d", x[ i ] ); + if ( i < len-1 ) { + fprintf( f, "," ); + } + } +} + +/** +* Writes a named array of doubles to a file as JSON. +* +* @param f file to write to +* @param name array name +* @param x data +* @param len array length +*/ +void write_named_array_f64( FILE *f, const char *name, const double *x, const unsigned int len ) { + fprintf( f, "\"%s\":[", name ); + write_array_f64( f, x, len ); + fprintf( f, "]" ); +} + +/** +* Writes a named array of integers to a file as JSON. +* +* @param f file to write to +* @param name array name +* @param x data +* @param len array length +*/ +void write_named_array_i32( FILE *f, const char *name, const int *x, const unsigned int len ) { + fprintf( f, "\"%s\":[", name ); + write_array_i32( f, x, len ); + fprintf( f, "]" ); +} + +/** +* Writes data to a file as JSON. +* +* ## Notes +* +* - This function SHOULD be tailored to the input data (e.g., input types, output types, number of arguments, etc) and may vary from use case to use case. +* +* +* @param f file to write to +* @param lengths sequence lengths +* @param offsets sine and twiddle offsets +* @param sines sine values +* @param twiddles twiddle factors +* @param num number of sequence lengths +* @param total total number of sine and twiddle values +*/ +void write_data_as_json( FILE *f, const int *lengths, const int *offsets, const double *sines, const double *twiddles, const unsigned int num, const unsigned int total ) { + fprintf( f, "{" ); + write_named_array_i32( f, "lengths", lengths, num ); + fprintf( f, "," ); + write_named_array_i32( f, "offsets", offsets, num ); + fprintf( f, "," ); + write_named_array_f64( f, "sines", sines, total ); + fprintf( f, "," ); + write_named_array_f64( f, "twiddles", twiddles, total ); + fprintf( f, "}\n" ); +} + +/** +* Generates test fixtures. +* +* @param lengths sequence lengths +* @param offsets sine and twiddle offsets into flat output array +* @param num number of sequence lengths +* @param total total number of sine and twiddle values +* @param name output filename +*/ +void generate( const int *lengths, const int *offsets, const unsigned int num, const unsigned int total, const char *name ) { + unsigned int i; + unsigned int j; + double *sines; + double *twiddles; + double *wsave; + FILE *f; + int off; + int n; + + // Allocate an output array for sine values: + sines = (double*) calloc( total, sizeof(double) ); + if ( sines == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + + // Allocate an output array for twiddle factors: + twiddles = (double*) calloc( total, sizeof(double) ); + if ( twiddles == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + + // Generate fixture data: + for ( i = 0; i < num; i++ ) { + n = lengths[ i ]; + wsave = (double*) calloc( (int)(2.5*n) + 15, sizeof(double) ); + if ( wsave == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + sinti( n, wsave ); + + // Copy sine region into flat array (N/2 values starting at wsave[0]): + off = offsets[ i ]; + for ( j = 0; j < (unsigned int)(n/2); j++ ) { + sines[ off + j ] = wsave[ j ]; + } + + // Copy twiddle region into flat array (N+1 values starting at wsave[(n/2)+n+1]): + off = offsets[ i ]; + for ( j = 0; j < (unsigned int)( n + 1 ); j++ ) { + twiddles[ off + j ] = wsave[ ( n/2 ) + n + 1 + j ]; + } + free( wsave ); + } + // Open a new file: + f = fopen( name, "w" ); + if ( f == NULL ) { + printf( "Error opening file.\n" ); + exit( 1 ); + } + + // Write data as JSON: + write_data_as_json( f, lengths, offsets, sines, twiddles, num, total ); + + // Close the file: + fclose( f ); + + // Free allocated memory: + free( sines ); + free( twiddles ); +} + +/** +* Computes offsets into flat sine and twiddle arrays for each sequence length. +* +* @param offsets output array of offsets +* @param lengths sequence lengths +* @param num number of sequence lengths +* @return total number of sine and twiddle values +*/ +unsigned int compute_offsets( int *offsets, const int *lengths, const unsigned int num ) { + unsigned int total; + unsigned int i; + + total = 0; + for ( i = 0; i < num; i++ ) { + offsets[ i ] = total; + total += lengths[ i ] + 1; + } + return total; +} + +/** +* Main execution sequence. +*/ +int main( void ) { + unsigned int total; + unsigned int num; + int *lengths; + int *offsets; + + // Use the current time to seed the random number generator: + srand( time( NULL ) ); + + // Define the number of sequence lengths per range: + num = 10; + + // Allocate arrays: + lengths = (int*) malloc( num * sizeof(int) ); + if ( lengths == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + offsets = (int*) malloc( num * sizeof(int) ); + if ( offsets == NULL ) { + printf( "Error allocating memory.\n" ); + exit( 1 ); + } + + // Generate fixture data: + rand_array_i32( lengths, num, 2, 16 ); + total = compute_offsets( offsets, lengths, num ); + generate( lengths, offsets, num, total, "small.json" ); + + rand_array_i32( lengths, num, 16, 128 ); + total = compute_offsets( offsets, lengths, num ); + generate( lengths, offsets, num, total, "medium.json" ); + + rand_array_i32( lengths, num, 128, 1024 ); + total = compute_offsets( offsets, lengths, num ); + generate( lengths, offsets, num, total, "large.json" ); + + // Free allocated memory: + free( lengths ); + free( offsets ); + + return 0; +} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/small.json b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/small.json new file mode 100644 index 000000000000..dc1e4ec8bbb5 --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/fixtures/c/fftpack/small.json @@ -0,0 +1 @@ +{"lengths":[5,3,6,7,9,7,15,9,11,9],"offsets":[0,6,10,17,25,35,43,59,69,81],"sines":[0.99999999999999989,1.7320508075688772,0,0,0,0,1.4142135623730949,0,0,0,0.86776747823511624,1.5636629649360596,1.9498558243636472,0,0,0,0,0.76536686473017956,1.4142135623730949,1.8477590650225735,0,0,0,0,0,0.61803398874989479,1.1755705045849463,1.6180339887498949,1.9021130325903071,0,0,0,0,0,0,0.76536686473017956,1.4142135623730949,1.8477590650225735,0,0,0,0,0,0.3901806440322565,0.76536686473017956,1.1111404660392044,1.4142135623730949,1.6629392246050905,1.8477590650225735,1.9615705608064609,0,0,0,0,0,0,0,0,0,0.61803398874989479,1.1755705045849463,1.6180339887498949,1.9021130325903071,0,0,0,0,0,0,0.51763809020504148,0.99999999999999989,1.4142135623730949,1.7320508075688772,1.9318516525781364,0,0,0,0,0,0,0,0.61803398874989479,1.1755705045849463,1.6180339887498949,1.9021130325903071,0,0,0,0,0,0],"twiddles":[0.50000000000000011,0.8660254037844386,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.70710678118654757,0.70710678118654746,0,0,0,0,0,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0,0,0,0,0,0.70710678118654757,0.70710678118654746,0,0,0,0,0,0,0.92387953251128674,0.38268343236508978,0,0,0.70710678118654757,0.70710678118654746,0,0,0.38268343236508984,0.92387953251128674,0,0,0,0,0,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0,0,0,0,0,0.86602540378443871,0.49999999999999994,0,0.50000000000000011,0.8660254037844386,0,6.123233995736766e-17,1,0,0,0,0,0.80901699437494745,0.58778525229247314,0.30901699437494745,0.95105651629515353,0,0,0,0,0,0]} diff --git a/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/test.js b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/test.js new file mode 100644 index 000000000000..a6960135d70d --- /dev/null +++ b/lib/node_modules/@stdlib/fft/base/fftpack/sinti/test/test.js @@ -0,0 +1,335 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2026 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var tape = require( 'tape' ); +var Float64Array = require( '@stdlib/array/float64' ); +var isAlmostSameValue = require( '@stdlib/number/float64/base/assert/is-almost-same-value' ); +var floor = require( '@stdlib/math/base/special/floor' ); +var sinti = require( './../lib' ); + + +// FIXTURES // + +var small = require( './fixtures/c/fftpack/small.json' ); +var medium = require( './fixtures/c/fftpack/medium.json' ); +var large = require( './fixtures/c/fftpack/large.json' ); + + +// TESTS // + +tape( 'main export is a function', function test( t ) { + t.ok( true, __filename ); + t.strictEqual( typeof sinti, 'function', 'main export is a function' ); + t.end(); +}); + +tape( 'the function has an arity of 4', function test( t ) { + t.strictEqual( sinti.length, 4, 'returns expected value' ); + t.end(); +}); + +tape( 'the function returns a reference to the workspace array', function test( t ) { + var workspace; + var out; + var N; + + N = 8; + workspace = new Float64Array( floor( 2.5*N ) + 34 ); + out = sinti( N, workspace, 1, 0 ); + + t.strictEqual( out, workspace, 'same reference' ); + t.end(); +}); + +tape( 'the function correctly initializes sine values (small sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var ns2; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = small.lengths; + offsets = small.offsets; + expected = small.sines; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + ns2 = floor( N / 2 ); + workspace = new Float64Array( floor( 2.5*N ) + 34 ); + sinti( N, workspace, 1, 0 ); + + for ( i = 0; i < ns2; i++ ) { + y = workspace[ i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes twiddle factors (small sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var ns2; + var off; + var iw; + var y; + var e; + var N; + var i; + var k; + + lengths = small.lengths; + offsets = small.offsets; + expected = small.twiddles; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + ns2 = floor( N / 2 ); + iw = ns2 + N + 1; + workspace = new Float64Array( floor( 2.5*N ) + 34 ); + sinti( N, workspace, 1, 0 ); + + for ( i = 0; i < N+1; i++ ) { + y = workspace[ iw + i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes sine values (medium sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var ns2; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = medium.lengths; + offsets = medium.offsets; + expected = medium.sines; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + ns2 = floor( N / 2 ); + workspace = new Float64Array( floor( 2.5*N ) + 34 ); + sinti( N, workspace, 1, 0 ); + + for ( i = 0; i < ns2; i++ ) { + y = workspace[ i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes twiddle factors (medium sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var ns2; + var off; + var iw; + var y; + var e; + var N; + var i; + var k; + + lengths = medium.lengths; + offsets = medium.offsets; + expected = medium.twiddles; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + ns2 = floor( N / 2 ); + iw = ns2 + N + 1; + workspace = new Float64Array( floor( 2.5*N ) + 34 ); + sinti( N, workspace, 1, 0 ); + + for ( i = 0; i < N+1; i++ ) { + y = workspace[ iw + i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes sine values (large sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var ns2; + var off; + var y; + var e; + var N; + var i; + var k; + + lengths = large.lengths; + offsets = large.offsets; + expected = large.sines; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + ns2 = floor( N / 2 ); + workspace = new Float64Array( floor( 2.5*N ) + 34 ); + sinti( N, workspace, 1, 0 ); + + for ( i = 0; i < ns2; i++ ) { + y = workspace[ i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function correctly initializes twiddle factors (large sequence lengths)', function test( t ) { + var workspace; + var expected; + var lengths; + var offsets; + var ulps; + var ns2; + var off; + var iw; + var y; + var e; + var N; + var i; + var k; + + lengths = large.lengths; + offsets = large.offsets; + expected = large.twiddles; + + ulps = 1; + for ( k = 0; k < lengths.length; k++ ) { + N = lengths[ k ]; + off = offsets[ k ]; + ns2 = floor( N / 2 ); + iw = ns2 + N + 1; + workspace = new Float64Array( floor( 2.5*N ) + 34 ); + sinti( N, workspace, 1, 0 ); + + for ( i = 0; i < N+1; i++ ) { + y = workspace[ iw + i ]; + e = expected[ off+i ]; + t.strictEqual( isAlmostSameValue( y, e, ulps ), true, 'within '+ulps+' ULPs. N: '+N+'. y: '+y+'. E: '+e ); + } + } + t.end(); +}); + +tape( 'the function does not modify the scratch region of the workspace', function test( t ) { + var workspace; + var ns2; + var N; + var i; + + N = 8; + ns2 = floor( N / 2 ); + workspace = new Float64Array( floor( 2.5*N ) + 34 ); + + for ( i = 0; i < workspace.length; i++ ) { + workspace[ i ] = i + 1.0; + } + sinti( N, workspace, 1, 0 ); + for ( i = ns2; i < ns2 + N + 1; i++ ) { + t.strictEqual( workspace[ i ], i + 1.0, 'returns expected value' ); + } + t.end(); +}); + +tape( 'the function correctly handles stride and offset parameters', function test( t ) { + var workspace; + var expected; + var stride; + var offset; + var ns2; + var nf; + var iw; + var fw; + var N; + var i; + + N = 9; + ns2 = floor( N / 2 ); + stride = 2; + offset = 3; + workspace = new Float64Array( offset + ( ( floor( 2.5*N ) + 34 ) * stride ) ); + + sinti( N, workspace, stride, offset ); + + fw = ns2 + ( 2 * ( N+1 ) ); + t.strictEqual( workspace[ offset + ( fw * stride ) ], N+1, 'returns expected value' ); + + nf = workspace[ offset + ( ( fw+1 ) * stride ) ]; + t.strictEqual( nf, 2, 'returns expected value' ); + t.strictEqual( workspace[ offset + ( ( fw+2 ) * stride ) ], 2, 'returns expected value' ); + t.strictEqual( workspace[ offset + ( ( fw+3 ) * stride ) ], 5, 'returns expected value' ); + + expected = new Float64Array( floor( 2.5*N ) + 34 ); + sinti( N, expected, 1, 0 ); + + iw = ns2 + N + 1; + for ( i = 0; i < N+1; i++ ) { + t.strictEqual( workspace[ offset + ( ( iw+i ) * stride ) ], expected[ iw+i ], 'returns expected value' ); + } + t.end(); +}); diff --git a/lib/node_modules/@stdlib/fs/append-file/lib/index.js b/lib/node_modules/@stdlib/fs/append-file/lib/index.js index cc1adb27a525..218ecf91b7ee 100644 --- a/lib/node_modules/@stdlib/fs/append-file/lib/index.js +++ b/lib/node_modules/@stdlib/fs/append-file/lib/index.js @@ -39,7 +39,7 @@ * * var err = appendFileSync( './beep/boop.txt', 'data to append\n' ); * if ( err instanceof Error ) { -* throw err; +* console.error( err.message ); * } */ diff --git a/lib/node_modules/@stdlib/fs/append-file/lib/sync.js b/lib/node_modules/@stdlib/fs/append-file/lib/sync.js index 436f3402cccd..2f3cabbb4c49 100644 --- a/lib/node_modules/@stdlib/fs/append-file/lib/sync.js +++ b/lib/node_modules/@stdlib/fs/append-file/lib/sync.js @@ -36,7 +36,7 @@ var appendFile = require( 'fs' ).appendFileSync; * @example * var err = appendFileSync( './beep/boop.txt', 'data to append\n' ); * if ( err instanceof Error ) { -* throw err; +* console.error( err.message ); * } */ function appendFileSync( path, data, options ) { diff --git a/lib/node_modules/@stdlib/fs/close/lib/index.js b/lib/node_modules/@stdlib/fs/close/lib/index.js index fd77462c5319..c87068ac6b46 100644 --- a/lib/node_modules/@stdlib/fs/close/lib/index.js +++ b/lib/node_modules/@stdlib/fs/close/lib/index.js @@ -29,7 +29,7 @@ * * function done( error ) { * if ( error ) { -* throw error; +* console.error( error.message ); * } * } * @@ -52,7 +52,7 @@ * * var err = closeSync( fd ); * if ( err instanceof Error ) { -* throw err; +* console.error( err.message ); * } */ diff --git a/lib/node_modules/@stdlib/fs/close/lib/main.js b/lib/node_modules/@stdlib/fs/close/lib/main.js index 5dccf1db43c3..5b8972e8122f 100644 --- a/lib/node_modules/@stdlib/fs/close/lib/main.js +++ b/lib/node_modules/@stdlib/fs/close/lib/main.js @@ -41,7 +41,7 @@ var format = require( '@stdlib/string/format' ); * * function done( error ) { * if ( error ) { -* throw error; +* console.error( error.message ); * } * } * diff --git a/lib/node_modules/@stdlib/fs/close/lib/sync.js b/lib/node_modules/@stdlib/fs/close/lib/sync.js index 7277d465e83f..75f391da8f8a 100644 --- a/lib/node_modules/@stdlib/fs/close/lib/sync.js +++ b/lib/node_modules/@stdlib/fs/close/lib/sync.js @@ -45,7 +45,7 @@ var format = require( '@stdlib/string/format' ); * * var err = closeSync( fd ); * if ( err instanceof Error ) { -* throw err; +* console.error( err.message ); * } */ function closeSync( fd ) { diff --git a/lib/node_modules/@stdlib/fs/open/lib/index.js b/lib/node_modules/@stdlib/fs/open/lib/index.js index a8f35e692354..c185f87d107b 100644 --- a/lib/node_modules/@stdlib/fs/open/lib/index.js +++ b/lib/node_modules/@stdlib/fs/open/lib/index.js @@ -29,7 +29,8 @@ * * function onOpen( error, fd ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * closeSync( fd ); * } diff --git a/lib/node_modules/@stdlib/fs/open/lib/main.js b/lib/node_modules/@stdlib/fs/open/lib/main.js index 49e87365d138..70786d371fba 100644 --- a/lib/node_modules/@stdlib/fs/open/lib/main.js +++ b/lib/node_modules/@stdlib/fs/open/lib/main.js @@ -41,7 +41,8 @@ var defaults = require( './defaults.json' ); * * function onOpen( error, fd ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * closeSync( fd ); * } diff --git a/lib/node_modules/@stdlib/fs/read-file-list/lib/index.js b/lib/node_modules/@stdlib/fs/read-file-list/lib/index.js index 141c05de2ff4..273c1fe6a73b 100644 --- a/lib/node_modules/@stdlib/fs/read-file-list/lib/index.js +++ b/lib/node_modules/@stdlib/fs/read-file-list/lib/index.js @@ -32,7 +32,8 @@ * * function onFiles( error, files ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.dir( files ); * } diff --git a/lib/node_modules/@stdlib/fs/read-file/lib/index.js b/lib/node_modules/@stdlib/fs/read-file/lib/index.js index 43d43a38bd1f..fb3f814ad212 100644 --- a/lib/node_modules/@stdlib/fs/read-file/lib/index.js +++ b/lib/node_modules/@stdlib/fs/read-file/lib/index.js @@ -28,7 +28,8 @@ * * function onFile( error, data ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.log( data ); * } diff --git a/lib/node_modules/@stdlib/fs/read-file/lib/main.js b/lib/node_modules/@stdlib/fs/read-file/lib/main.js index f83ce1821e87..212ef5cc9191 100644 --- a/lib/node_modules/@stdlib/fs/read-file/lib/main.js +++ b/lib/node_modules/@stdlib/fs/read-file/lib/main.js @@ -37,7 +37,8 @@ var readfile = require( 'fs' ).readFile; * @example * function onFile( error, data ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.log( data ); * } diff --git a/lib/node_modules/@stdlib/fs/read-json/lib/async.js b/lib/node_modules/@stdlib/fs/read-json/lib/async.js index 8d01b124132c..0b986501f39d 100644 --- a/lib/node_modules/@stdlib/fs/read-json/lib/async.js +++ b/lib/node_modules/@stdlib/fs/read-json/lib/async.js @@ -51,7 +51,8 @@ var format = require( '@stdlib/string/format' ); * * function onJSON( error, data ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.dir( data ); * } diff --git a/lib/node_modules/@stdlib/fs/read-json/lib/index.js b/lib/node_modules/@stdlib/fs/read-json/lib/index.js index c585761e66d3..32e14e9dfe12 100644 --- a/lib/node_modules/@stdlib/fs/read-json/lib/index.js +++ b/lib/node_modules/@stdlib/fs/read-json/lib/index.js @@ -29,7 +29,8 @@ * * function onJSON( error, data ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.dir( data ); * } diff --git a/lib/node_modules/@stdlib/fs/read-ndjson/lib/async.js b/lib/node_modules/@stdlib/fs/read-ndjson/lib/async.js index a362c8fb4fcd..91afbf46c7af 100644 --- a/lib/node_modules/@stdlib/fs/read-ndjson/lib/async.js +++ b/lib/node_modules/@stdlib/fs/read-ndjson/lib/async.js @@ -51,7 +51,8 @@ var format = require( '@stdlib/string/format' ); * * function onNDJSON( error, data ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.dir( data ); * } diff --git a/lib/node_modules/@stdlib/fs/read-ndjson/lib/index.js b/lib/node_modules/@stdlib/fs/read-ndjson/lib/index.js index 0d5d4e075d01..a82f87028502 100644 --- a/lib/node_modules/@stdlib/fs/read-ndjson/lib/index.js +++ b/lib/node_modules/@stdlib/fs/read-ndjson/lib/index.js @@ -29,7 +29,8 @@ * * function clbk( error, data ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.log( data ); * } diff --git a/lib/node_modules/@stdlib/fs/read-wasm/lib/async.js b/lib/node_modules/@stdlib/fs/read-wasm/lib/async.js index 7439f6270cc0..36031bf795fc 100644 --- a/lib/node_modules/@stdlib/fs/read-wasm/lib/async.js +++ b/lib/node_modules/@stdlib/fs/read-wasm/lib/async.js @@ -49,7 +49,8 @@ var format = require( '@stdlib/string/format' ); * * function onRead( error, buf ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.log( buf ); * } diff --git a/lib/node_modules/@stdlib/fs/read-wasm/lib/index.js b/lib/node_modules/@stdlib/fs/read-wasm/lib/index.js index 18031698b765..85321c250ce6 100644 --- a/lib/node_modules/@stdlib/fs/read-wasm/lib/index.js +++ b/lib/node_modules/@stdlib/fs/read-wasm/lib/index.js @@ -32,9 +32,10 @@ * * function onRead( error, buf ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } -* console.log( out ); +* console.log( buf ); * } * * @example diff --git a/lib/node_modules/@stdlib/fs/rename/lib/index.js b/lib/node_modules/@stdlib/fs/rename/lib/index.js index 9c67b5f2f1ea..c5d8f6311f17 100644 --- a/lib/node_modules/@stdlib/fs/rename/lib/index.js +++ b/lib/node_modules/@stdlib/fs/rename/lib/index.js @@ -28,7 +28,7 @@ * * function done( error ) { * if ( error ) { -* throw error; +* console.error( error.message ); * } * } * @@ -39,7 +39,7 @@ * * var err = renameSync( './beep/boop.txt', './beep/foo.txt' ); * if ( err instanceof Error ) { -* throw err; +* console.error( err.message ); * } */ diff --git a/lib/node_modules/@stdlib/fs/rename/lib/main.js b/lib/node_modules/@stdlib/fs/rename/lib/main.js index 5d265744c6fb..ec4ac7895750 100644 --- a/lib/node_modules/@stdlib/fs/rename/lib/main.js +++ b/lib/node_modules/@stdlib/fs/rename/lib/main.js @@ -35,7 +35,7 @@ var native = require( 'fs' ).rename; * @example * function done( error ) { * if ( error ) { -* throw error; +* console.error( error.message ); * } * } * diff --git a/lib/node_modules/@stdlib/fs/rename/lib/sync.js b/lib/node_modules/@stdlib/fs/rename/lib/sync.js index 910b9f166b73..25ac6595ac1d 100644 --- a/lib/node_modules/@stdlib/fs/rename/lib/sync.js +++ b/lib/node_modules/@stdlib/fs/rename/lib/sync.js @@ -35,7 +35,7 @@ var rename = require( 'fs' ).renameSync; * @example * var err = renameSync( './beep/boop.txt', './beep/foo.txt' ); * if ( err instanceof Error ) { -* throw err; +* console.error( err.message ); * } */ function renameSync( oldPath, newPath ) { diff --git a/lib/node_modules/@stdlib/fs/resolve-parent-path-by/lib/async.js b/lib/node_modules/@stdlib/fs/resolve-parent-path-by/lib/async.js index 8fea7d50951a..d96fafea6675 100644 --- a/lib/node_modules/@stdlib/fs/resolve-parent-path-by/lib/async.js +++ b/lib/node_modules/@stdlib/fs/resolve-parent-path-by/lib/async.js @@ -54,7 +54,8 @@ var validate = require( './validate.js' ); * * function onPath( error, path ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.log( path ); * } diff --git a/lib/node_modules/@stdlib/fs/resolve-parent-path-by/lib/index.js b/lib/node_modules/@stdlib/fs/resolve-parent-path-by/lib/index.js index 60ce87745104..808a34e18a2a 100644 --- a/lib/node_modules/@stdlib/fs/resolve-parent-path-by/lib/index.js +++ b/lib/node_modules/@stdlib/fs/resolve-parent-path-by/lib/index.js @@ -34,7 +34,8 @@ * * function onPath( error, path ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.log( path ); * } diff --git a/lib/node_modules/@stdlib/fs/resolve-parent-path/lib/index.js b/lib/node_modules/@stdlib/fs/resolve-parent-path/lib/index.js index 3216262b91e0..710f454d9995 100644 --- a/lib/node_modules/@stdlib/fs/resolve-parent-path/lib/index.js +++ b/lib/node_modules/@stdlib/fs/resolve-parent-path/lib/index.js @@ -30,7 +30,8 @@ * * function onPath( error, path ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.log( path ); * } diff --git a/lib/node_modules/@stdlib/fs/resolve-parent-paths/lib/index.js b/lib/node_modules/@stdlib/fs/resolve-parent-paths/lib/index.js index a118ad53b2d3..cc0fccdffa9d 100644 --- a/lib/node_modules/@stdlib/fs/resolve-parent-paths/lib/index.js +++ b/lib/node_modules/@stdlib/fs/resolve-parent-paths/lib/index.js @@ -30,7 +30,8 @@ * * function onPaths( error, paths ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.log( paths ); * } diff --git a/lib/node_modules/@stdlib/fs/resolve-parent-paths/lib/main.js b/lib/node_modules/@stdlib/fs/resolve-parent-paths/lib/main.js index 3a637720560b..3ea1abe164f1 100644 --- a/lib/node_modules/@stdlib/fs/resolve-parent-paths/lib/main.js +++ b/lib/node_modules/@stdlib/fs/resolve-parent-paths/lib/main.js @@ -366,7 +366,8 @@ function each( paths, dir, done ) { * * function onPaths( error, paths ) { * if ( error ) { -* throw error; +* console.error( error.message ); +* return; * } * console.log( paths ); * } diff --git a/lib/node_modules/@stdlib/fs/unlink/lib/main.js b/lib/node_modules/@stdlib/fs/unlink/lib/main.js index 145a061a5448..80ebe543788a 100644 --- a/lib/node_modules/@stdlib/fs/unlink/lib/main.js +++ b/lib/node_modules/@stdlib/fs/unlink/lib/main.js @@ -34,7 +34,7 @@ var remove = require( 'fs' ).unlink; * @example * function done( error ) { * if ( error ) { -* throw error; +* console.error( error.message ); * } * } * diff --git a/lib/node_modules/@stdlib/fs/write-file/lib/index.js b/lib/node_modules/@stdlib/fs/write-file/lib/index.js index c622cfa1cdf3..b0a6b382a252 100644 --- a/lib/node_modules/@stdlib/fs/write-file/lib/index.js +++ b/lib/node_modules/@stdlib/fs/write-file/lib/index.js @@ -28,7 +28,7 @@ * * function onWrite( error ) { * if ( error ) { -* throw error; +* console.error( error.message ); * } * } * @@ -39,7 +39,7 @@ * * var err = writeFileSync( './beep/boop.txt', 'beep boop\n' ); * if ( err instanceof Error ) { -* throw err; +* console.error( err.message ); * } */ diff --git a/lib/node_modules/@stdlib/fs/write-file/lib/main.js b/lib/node_modules/@stdlib/fs/write-file/lib/main.js index 01737c4fd8b2..55d3ad5eef7a 100644 --- a/lib/node_modules/@stdlib/fs/write-file/lib/main.js +++ b/lib/node_modules/@stdlib/fs/write-file/lib/main.js @@ -36,7 +36,7 @@ var write = require( 'fs' ).writeFile; * @example * function onWrite( error ) { * if ( error ) { -* throw error; +* console.error( error.message ); * } * } * diff --git a/lib/node_modules/@stdlib/fs/write-file/lib/sync.js b/lib/node_modules/@stdlib/fs/write-file/lib/sync.js index 33cc33c88b8e..8e0c8bdb6a5e 100644 --- a/lib/node_modules/@stdlib/fs/write-file/lib/sync.js +++ b/lib/node_modules/@stdlib/fs/write-file/lib/sync.js @@ -36,7 +36,7 @@ var writeFile = require( 'fs' ).writeFileSync; * @example * var err = writeFileSync( './beep/boop.txt', 'beep boop\n' ); * if ( err instanceof Error ) { -* throw err; +* console.error( err.message ); * } */ function writeFileSync( file, data, options ) { diff --git a/lib/node_modules/@stdlib/lapack/base/clacgv/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/clacgv/lib/ndarray.js index ffadb6887658..78222d27edca 100644 --- a/lib/node_modules/@stdlib/lapack/base/clacgv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/clacgv/lib/ndarray.js @@ -26,7 +26,7 @@ var reinterpret = require( '@stdlib/strided/base/reinterpret-complex64' ); // MAIN // /** -* Conjugates each element in a single-precision complex floating-point vector. +* Conjugates each element in a single-precision complex floating-point vector using alternative indexing semantics. * * @param {PositiveInteger} N - number of indexed elements * @param {Complex64Array} cx - input array diff --git a/lib/node_modules/@stdlib/lapack/base/claset/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/claset/lib/ndarray.js index 230989aeb9c0..bdb6d6c99769 100644 --- a/lib/node_modules/@stdlib/lapack/base/claset/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/claset/lib/ndarray.js @@ -26,7 +26,7 @@ var base = require( './base.js' ); // MAIN // /** -* Sets the off-diagonal elements and the diagonal elements of a single-precision complex floating-point matrix to specified values. +* Sets the off-diagonal elements and the diagonal elements of a single-precision complex floating-point matrix to specified values using alternative indexing semantics. * * @param {string} uplo - specifies whether to set the upper or lower triangular/trapezoidal part of matrix `A` * @param {NonNegativeInteger} M - number of rows in matrix `A` diff --git a/lib/node_modules/@stdlib/lapack/base/claswp/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/claswp/lib/ndarray.js index d5d373062cb8..d171c9f7777b 100644 --- a/lib/node_modules/@stdlib/lapack/base/claswp/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/claswp/lib/ndarray.js @@ -26,7 +26,7 @@ var base = require( './base.js' ); // MAIN // /** -* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV`. +* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV` and alternative indexing semantics. * * @param {PositiveInteger} N - number of columns in `A` * @param {Complex64Array} A - input matrix diff --git a/lib/node_modules/@stdlib/lapack/base/crot/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/crot/lib/ndarray.js index b93b00a917d8..e8b4ce0b6ccc 100644 --- a/lib/node_modules/@stdlib/lapack/base/crot/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/crot/lib/ndarray.js @@ -29,7 +29,7 @@ var imagf = require( '@stdlib/complex/float32/imag' ); // MAIN // /** -* Applies a plane rotation with real cosine and complex sine. +* Applies a plane rotation with real cosine and complex sine using alternative indexing semantics. * * @param {PositiveInteger} N - number of indexed elements * @param {Complex64Array} cx - first input array diff --git a/lib/node_modules/@stdlib/lapack/base/dgttrf/README.md b/lib/node_modules/@stdlib/lapack/base/dgttrf/README.md index ec6ea4c7dcc1..abdee2ccf4c5 100644 --- a/lib/node_modules/@stdlib/lapack/base/dgttrf/README.md +++ b/lib/node_modules/@stdlib/lapack/base/dgttrf/README.md @@ -32,6 +32,11 @@ The `dgttrf` routine computes an LU factorization of a real N-by-N tridiagonal m A = L U ``` + + where `L` is a product of permutation and unit lower bidiagonal matrices and `U` is upper triangular with non-zeros in only the main diagonal and first two superdiagonals. @@ -41,17 +46,14 @@ For a 5-by-5 tridiagonal matrix `A`, elements are stored in three arrays: ```math -A = \left[ -\begin{array}{rrrrr} - d_1 & du_1 & 0 & 0 & 0 \\ - dl_1 & d_2 & du_2 & 0 & 0 \\ - 0 & dl_2 & d_3 & du_3 & 0 \\ - 0 & 0 & dl_3 & d_4 & du_4 \\ - 0 & 0 & 0 & dl_4 & d_5 - \end{array} -\right] +A = \left[\begin{array}{rrrrr}d_1 & du_1 & 0 & 0 & 0 \\dl_1 & d_2 & du_2 & 0 & 0 \\0 & dl_2 & d_3 & du_3 & 0 \\0 & 0 & dl_3 & d_4 & du_4 \\0 & 0 & 0 & dl_4 & d_5\end{array}\right] ``` + + where: @@ -71,33 +73,27 @@ The resulting `L` and `U` matrices have the following structure: ```math -L = \left[ - \begin{array}{rrrrr} - 1 & 0 & 0 & 0 & 0 \\ - l_1 & 1 & 0 & 0 & 0 \\ - 0 & l_2 & 1 & 0 & 0 \\ - 0 & 0 & l_3 & 1 & 0 \\ - 0 & 0 & 0 & l_4 & 1 - \end{array} -\right] +L = \left[\begin{array}{rrrrr}1 & 0 & 0 & 0 & 0 \\l_1 & 1 & 0 & 0 & 0 \\0 & l_2 & 1 & 0 & 0 \\0 & 0 & l_3 & 1 & 0 \\0 & 0 & 0 & l_4 & 1\end{array}\right] ``` + + ```math -U = \left[ - \begin{array}{rrrrr} - u_{1,1} & u_{1,2} & u_{1,3} & 0 & 0 \\ - 0 & u_{2,2} & u_{2,3} & u_{2,4} & 0 \\ - 0 & 0 & u_{3,3} & u_{3,4} & u_{3,5} \\ - 0 & 0 & 0 & u_{4,4} & u_{4,5} \\ - 0 & 0 & 0 & 0 & u_{5,5} - \end{array} -\right] +U = \left[\begin{array}{rrrrr}u_{1,1} & u_{1,2} & u_{1,3} & 0 & 0 \\0 & u_{2,2} & u_{2,3} & u_{2,4} & 0 \\0 & 0 & u_{3,3} & u_{3,4} & u_{3,5} \\0 & 0 & 0 & u_{4,4} & u_{4,5} \\0 & 0 & 0 & 0 & u_{5,5}\end{array}\right] ``` + + where the `l(i)` values are stored in `DL`, the diagonal elements `u(i,i)` are stored in `D`, and the superdiagonal elements `u(i,i+1)` and `u(i,i+2)` are stored in `DU` and `DU2`, respectively. @@ -241,8 +237,6 @@ The function has the following additional parameters: While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, - - ```javascript var Float64Array = require( '@stdlib/array/float64' ); var Int32Array = require( '@stdlib/array/int32' ); diff --git a/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_lu_decomposition.svg b/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_lu_decomposition.svg new file mode 100644 index 000000000000..98f2c6e39275 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_lu_decomposition.svg @@ -0,0 +1,15 @@ + +upper A equals upper L upper U + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_matrix_a.svg b/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_matrix_a.svg new file mode 100644 index 000000000000..f002c029f19a --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_matrix_a.svg @@ -0,0 +1,144 @@ + +upper A equals Start 5 By 5 Matrix 1st Row 1st Column d 1 2nd Column d u 1 3rd Column 0 4th Column 0 5th Column 0 2nd Row 1st Column d l 1 2nd Column d 2 3rd Column d u 2 4th Column 0 5th Column 0 3rd Row 1st Column 0 2nd Column d l 2 3rd Column d 3 4th Column d u 3 5th Column 0 4th Row 1st Column 0 2nd Column 0 3rd Column d l 3 4th Column d 4 5th Column d u 4 5th Row 1st Column 0 2nd Column 0 3rd Column 0 4th Column d l 4 5th Column d 5 EndMatrix + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_matrix_l.svg b/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_matrix_l.svg new file mode 100644 index 000000000000..43f238843285 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_matrix_l.svg @@ -0,0 +1,90 @@ + +upper L equals Start 5 By 5 Matrix 1st Row 1st Column 1 2nd Column 0 3rd Column 0 4th Column 0 5th Column 0 2nd Row 1st Column l 1 2nd Column 1 3rd Column 0 4th Column 0 5th Column 0 3rd Row 1st Column 0 2nd Column l 2 3rd Column 1 4th Column 0 5th Column 0 4th Row 1st Column 0 2nd Column 0 3rd Column l 3 4th Column 1 5th Column 0 5th Row 1st Column 0 2nd Column 0 3rd Column 0 4th Column l 4 5th Column 1 EndMatrix + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_matrix_u.svg b/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_matrix_u.svg new file mode 100644 index 000000000000..05f494fc5798 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dgttrf/docs/img/equation_matrix_u.svg @@ -0,0 +1,164 @@ + +upper U equals Start 5 By 5 Matrix 1st Row 1st Column u Subscript 1 comma 1 Baseline 2nd Column u Subscript 1 comma 2 Baseline 3rd Column u Subscript 1 comma 3 Baseline 4th Column 0 5th Column 0 2nd Row 1st Column 0 2nd Column u Subscript 2 comma 2 Baseline 3rd Column u Subscript 2 comma 3 Baseline 4th Column u Subscript 2 comma 4 Baseline 5th Column 0 3rd Row 1st Column 0 2nd Column 0 3rd Column u Subscript 3 comma 3 Baseline 4th Column u Subscript 3 comma 4 Baseline 5th Column u Subscript 3 comma 5 Baseline 4th Row 1st Column 0 2nd Column 0 3rd Column 0 4th Column u Subscript 4 comma 4 Baseline 5th Column u Subscript 4 comma 5 Baseline 5th Row 1st Column 0 2nd Column 0 3rd Column 0 4th Column 0 5th Column u Subscript 5 comma 5 EndMatrix + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/lapack/base/dladiv/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/dladiv/lib/ndarray.js index 75ad6e5dcac0..d80a86e59eb4 100644 --- a/lib/node_modules/@stdlib/lapack/base/dladiv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dladiv/lib/ndarray.js @@ -26,7 +26,7 @@ var base = require( './base.js' ); // MAIN // /** -* Divides two double-precision complex floating-point numbers in real arithmetic. +* Divides two double-precision complex floating-point numbers in real arithmetic using alternative indexing semantics. * * @param {number} a - real component of numerator * @param {number} b - imaginary component of numerator diff --git a/lib/node_modules/@stdlib/lapack/base/dlarf/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlarf/lib/ndarray.js index 98c017be6491..2e18bb48ab5c 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlarf/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlarf/lib/ndarray.js @@ -32,7 +32,7 @@ var base = require( './base.js' ); // MAIN // /** -* Applies a real elementary reflector `H = I - tau * v * v^T` to a real M by N matrix `C`. +* Applies a real elementary reflector `H = I - tau * v * v^T` to a real M by N matrix `C` using alternative indexing semantics. * * ## Notes * diff --git a/lib/node_modules/@stdlib/lapack/base/dlarf1f/lib/base.js b/lib/node_modules/@stdlib/lapack/base/dlarf1f/lib/base.js index 5ab4295edda4..13df105fc02c 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlarf1f/lib/base.js +++ b/lib/node_modules/@stdlib/lapack/base/dlarf1f/lib/base.js @@ -108,16 +108,17 @@ function dlarf1f( side, M, N, V, strideV, offsetV, tau, C, strideC1, strideC2, o i = offsetV + ( ( lastv-1 ) * strideV ); // Move `i` to the last non-zero element in `V`, where we assume that V[0] = 1, and it is not stored, so we shouldn't access it... - while ( lastv > 0 && V[ i ] === 0.0 ) { + while ( lastv > 1 && V[ i ] === 0.0 ) { // `lastv` should be greater than 1 as it represents the last one-based index with a zero value lastv -= 1; i -= strideV; } + if ( isLeftSide( side ) ) { // Scan for the last non-zero column in `C`: - lastc = iladlc( lastv + 1, N, C, strideC1, strideC2, offsetC ) + 1; // adjust by `+1` to account for the difference between zero-based and one-based indexing + lastc = iladlc( lastv, N, C, strideC1, strideC2, offsetC ) + 1; // adjust by `+1` to account for the difference between zero-based and one-based indexing } else { // Scan for the last non-zero row in `C`: - lastc = iladlr( M, lastv + 1, C, strideC1, strideC2, offsetC ) + 1; // // adjust by `+1` to account for the difference between zero-based and one-based indexing + lastc = iladlr( M, lastv, C, strideC1, strideC2, offsetC ) + 1; // adjust by `+1` to account for the difference between zero-based and one-based indexing } // Return `C` unchanged if all elements in `C` are zero... if ( lastc === 0 ) { @@ -127,7 +128,7 @@ function dlarf1f( side, M, N, V, strideV, offsetV, tau, C, strideC1, strideC2, o // Form: H*C // If `lastv = 1`, this means `V = 1`, so we just need to compute `C = H*C = (1-tau)*C`... - if ( lastv === 0 ) { + if ( lastv === 1 ) { // C[0,0:lastc] = (1-tau)*C[0,0:lastc] dscal( lastc, 1.0-tau, C, strideC2, offsetC ); // scale the first row } else { @@ -154,7 +155,7 @@ function dlarf1f( side, M, N, V, strideV, offsetV, tau, C, strideC1, strideC2, o // Form: C*H // If `N = 1`, then `V = 1`, so we just need to compute `C = CH = C*(1-tau)`... - if ( lastv === 0 ) { + if ( lastv === 1 ) { // C[0:lastc,0] = ( 1-tau ) * C[0:lastc,0] dscal( lastc, 1.0-tau, C, strideC1, offsetC ); // scale the first column return C; diff --git a/lib/node_modules/@stdlib/lapack/base/dlarf1f/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlarf1f/lib/ndarray.js index 4dfa0851e489..f89920029c34 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlarf1f/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlarf1f/lib/ndarray.js @@ -32,7 +32,7 @@ var base = require( './base.js' ); // MAIN // /** -* Applies a real elementary reflector `H = I - tau * v * v^T` to a real M by N matrix `C`. +* Applies a real elementary reflector `H = I - tau * v * v^T` to a real M by N matrix `C` using alternative indexing semantics. * * ## Notes * diff --git a/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/fixtures/indexing.json b/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/fixtures/indexing.json new file mode 100644 index 000000000000..c3ea94c81a63 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/fixtures/indexing.json @@ -0,0 +1,36 @@ +{ + "order": "column-major", + + "side": "left", + + "M": 3, + "N": 1, + + "V": [ 1.0, 0.0, 0.0, 0.0, -1.0, 0.0 ], + "strideV": 1, + "offsetV": 0, + + "tau": 2.0, + + "C": [ 1.0, 0.0, 0.0, 0.0, -1.0, 0.0 ], + "strideC1": 1, + "strideC2": 3, + "offsetC": 0, + "LDC": 3, + "C_mat": [ + [ 1.0, 0.0 ], + [ 0.0, -1.0 ], + [ 0.0, 0.0 ] + ], + + "work": [ 64.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ], + "strideWork": 1, + "offsetWork": 0, + + "C_out": [ -1.0, 0.0, 0.0, -0.0, -1.0, -0.0 ], + "C_out_mat": [ + [ -1.0, 0.0 ], + [ 0.0, -1.0 ], + [ 0.0, 0.0 ] + ] +} diff --git a/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/test.dlarf1f.js b/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/test.dlarf1f.js index 3ac015122405..77164fcfba76 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/test.dlarf1f.js +++ b/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/test.dlarf1f.js @@ -38,6 +38,7 @@ var RIGHT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/right_lastv_eq_zero_row var RIGHT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/right_lastv_eq_zero_col_major.json' ); var RIGHT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/right_lastv_gt_zero_row_major.json' ); var RIGHT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/right_lastv_gt_zero_col_major.json' ); +var INDEXING = require( './fixtures/indexing.json' ); // TESTS // @@ -367,3 +368,24 @@ tape( 'the function applies an elementary refactor (side=right, lastv > 0, colum t.deepEqual( out, expectedC, 'returns expected value' ); t.end(); }); + +tape( 'the function follows consistent indexing with LAPACK', function test( t ) { + var expectedC; + var data; + var work; + var out; + var V; + var C; + + data = INDEXING; + + V = new Float64Array( data.V ); + C = new Float64Array( data.C ); + work = new Float64Array( data.work ); + + out = dlarf1f( data.order, data.side, data.M, data.N, V, data.strideV, data.tau, C, data.LDC, work ); + expectedC = new Float64Array( data.C_out ); + + t.deepEqual( out, expectedC, 'returns expected value' ); + t.end(); +}); diff --git a/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/test.ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/test.ndarray.js index 52b6148a923c..1635f21a6443 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlarf1f/test/test.ndarray.js @@ -38,46 +38,39 @@ var RIGHT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/right_lastv_eq_zero_row var RIGHT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/right_lastv_eq_zero_col_major.json' ); var RIGHT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/right_lastv_gt_zero_row_major.json' ); var RIGHT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/right_lastv_gt_zero_col_major.json' ); - var MIXED_STRIDES_RIGHT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/mixed_strides/right_lastv_gt_zero_row_major.json' ); var NEGATIVE_STRIDES_RIGHT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/negative_strides/right_lastv_gt_zero_row_major.json' ); var LARGE_STRIDES_RIGHT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/large_strides/right_lastv_gt_zero_row_major.json' ); var OFFSETS_RIGHT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/offsets/right_lastv_gt_zero_row_major.json' ); - var NEGATIVE_STRIDES_RIGHT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/negative_strides/right_lastv_gt_zero_col_major.json' ); var MIXED_STRIDES_RIGHT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/mixed_strides/right_lastv_gt_zero_col_major.json' ); var LARGE_STRIDES_RIGHT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/large_strides/right_lastv_gt_zero_col_major.json' ); var OFFSETS_RIGHT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/offsets/right_lastv_gt_zero_col_major.json' ); - var MIXED_STRIDES_RIGHT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/mixed_strides/right_lastv_eq_zero_row_major.json' ); var NEGATIVE_STRIDES_RIGHT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/negative_strides/right_lastv_eq_zero_row_major.json' ); var LARGE_STRIDES_RIGHT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/large_strides/right_lastv_eq_zero_row_major.json' ); var OFFSETS_RIGHT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/offsets/right_lastv_eq_zero_row_major.json' ); - var NEGATIVE_STRIDES_RIGHT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/negative_strides/right_lastv_eq_zero_col_major.json' ); var MIXED_STRIDES_RIGHT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/mixed_strides/right_lastv_eq_zero_col_major.json' ); var LARGE_STRIDES_RIGHT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/large_strides/right_lastv_eq_zero_col_major.json' ); var OFFSETS_RIGHT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/offsets/right_lastv_eq_zero_col_major.json' ); - var NEGATIVE_STRIDES_LEFT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/negative_strides/left_lastv_gt_zero_row_major.json' ); var MIXED_STRIDES_LEFT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/mixed_strides/left_lastv_gt_zero_row_major.json' ); var LARGE_STRIDES_LEFT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/large_strides/left_lastv_gt_zero_row_major.json' ); var OFFSETS_LEFT_LASTV_GT_ZERO_ROW_MAJOR = require( './fixtures/offsets/left_lastv_gt_zero_row_major.json' ); - var MIXED_STRIDES_LEFT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/mixed_strides/left_lastv_gt_zero_col_major.json' ); var LARGE_STRIDES_LEFT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/large_strides/left_lastv_gt_zero_col_major.json' ); var OFFSETS_LEFT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/offsets/left_lastv_gt_zero_col_major.json' ); var NEGATIVE_STRIDES_LEFT_LASTV_GT_ZERO_COL_MAJOR = require( './fixtures/negative_strides/left_lastv_gt_zero_col_major.json' ); - var MIXED_STRIDES_LEFT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/mixed_strides/left_lastv_eq_zero_row_major.json' ); var LARGE_STRIDES_LEFT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/large_strides/left_lastv_eq_zero_row_major.json' ); var OFFSETS_LEFT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/offsets/left_lastv_eq_zero_row_major.json' ); var NEGATIVE_STRIDES_LEFT_LASTV_EQ_ZERO_ROW_MAJOR = require( './fixtures/negative_strides/left_lastv_eq_zero_row_major.json' ); - var MIXED_STRIDES_LEFT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/mixed_strides/left_lastv_eq_zero_col_major.json' ); var LARGE_STRIDES_LEFT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/large_strides/left_lastv_eq_zero_col_major.json' ); var OFFSETS_LEFT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/offsets/left_lastv_eq_zero_col_major.json' ); var NEGATIVE_STRIDES_LEFT_LASTV_EQ_ZERO_COL_MAJOR = require( './fixtures/negative_strides/left_lastv_eq_zero_col_major.json' ); +var INDEXING = require( './fixtures/indexing.json' ); // TESTS // @@ -340,6 +333,27 @@ tape( 'the function applies an elementary reflector (side=right, lastv > 0, colu t.end(); }); +tape( 'the function follows indexing consistent with LAPACK', function test( t ) { + var expectedC; + var data; + var work; + var out; + var V; + var C; + + data = INDEXING; + + V = new Float64Array( data.V ); + C = new Float64Array( data.C ); + work = new Float64Array( data.work ); + + out = dlarf1f( data.side, data.M, data.N, V, data.strideV, data.offsetV, data.tau, C, data.strideC1, data.strideC2, data.offsetC, work, data.strideWork, data.offsetWork ); + expectedC = new Float64Array( data.C_out ); + + t.deepEqual( out, expectedC, 'returns expected value' ); + t.end(); +}); + tape( 'the function applies an elementary reflector (side=right, lastv > 0, row-major, mixed strides)', function test( t ) { var expectedC; var data; diff --git a/lib/node_modules/@stdlib/lapack/base/dlassq/README.md b/lib/node_modules/@stdlib/lapack/base/dlassq/README.md index 63826edd883a..dc610bce913e 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlassq/README.md +++ b/lib/node_modules/@stdlib/lapack/base/dlassq/README.md @@ -28,10 +28,14 @@ This routine returns the values $s_{textrm{out}}$ and $\\textrm{ss}_{\\textrm{ou -
- Sum of squares represented in scaled form +```math +s_{\textrm{out}}^2 \cdot \textrm{ss}_{\textrm{out}} = x_0^2 + \ldots + x_{N-1}^2 + s_{\textrm{in}}^2 \cdot \textrm{ss}_{\textrm{in}} +``` + + @@ -113,8 +117,6 @@ The function has the following additional parameters: While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, - - ```javascript var Float64Array = require( '@stdlib/array/float64' ); diff --git a/lib/node_modules/@stdlib/lapack/base/dlassq/docs/img/equation_sum_of_squares.svg b/lib/node_modules/@stdlib/lapack/base/dlassq/docs/img/equation_sum_of_squares.svg new file mode 100644 index 000000000000..4cf5dac35ec3 --- /dev/null +++ b/lib/node_modules/@stdlib/lapack/base/dlassq/docs/img/equation_sum_of_squares.svg @@ -0,0 +1,77 @@ + +s Subscript out Superscript 2 Baseline dot ss Subscript out Baseline equals x 0 squared plus ellipsis plus x Subscript upper N minus 1 Superscript 2 Baseline plus s Subscript in Superscript 2 Baseline dot ss Subscript in + + + \ No newline at end of file diff --git a/lib/node_modules/@stdlib/lapack/base/dlaswp/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/dlaswp/lib/ndarray.js index 4b1cfd7610dd..b3875fde724c 100644 --- a/lib/node_modules/@stdlib/lapack/base/dlaswp/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/dlaswp/lib/ndarray.js @@ -26,7 +26,7 @@ var base = require( './base.js' ); // MAIN // /** -* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV`. +* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV` and alternative indexing semantics. * * @param {PositiveInteger} N - number of columns in `A` * @param {Float64Array} A - input matrix diff --git a/lib/node_modules/@stdlib/lapack/base/dpttrf/README.md b/lib/node_modules/@stdlib/lapack/base/dpttrf/README.md index 89026cde78f3..86a70e04b82a 100644 --- a/lib/node_modules/@stdlib/lapack/base/dpttrf/README.md +++ b/lib/node_modules/@stdlib/lapack/base/dpttrf/README.md @@ -95,8 +95,6 @@ The function has the following additional parameters: While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, - - ```javascript var Float64Array = require( '@stdlib/array/float64' ); diff --git a/lib/node_modules/@stdlib/lapack/base/iladlr/lib/iladlr.js b/lib/node_modules/@stdlib/lapack/base/iladlr/lib/iladlr.js index 937b6fe597c7..e5fd5893b18f 100644 --- a/lib/node_modules/@stdlib/lapack/base/iladlr/lib/iladlr.js +++ b/lib/node_modules/@stdlib/lapack/base/iladlr/lib/iladlr.js @@ -33,6 +33,10 @@ var base = require( './base.js' ); /** * Returns the index of the last non-zero row in a matrix `A`. * +* ## Notes +* +* - If provided an empty matrix or a matrix containing only zeros, the function returns `-1` (i.e., an invalid index). +* * @param {string} order - storage layout * @param {PositiveInteger} M - number of rows in `A` * @param {PositiveInteger} N - number of columns in `A` diff --git a/lib/node_modules/@stdlib/lapack/base/slaswp/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/slaswp/lib/ndarray.js index aede91e37164..4628de109f7a 100644 --- a/lib/node_modules/@stdlib/lapack/base/slaswp/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/slaswp/lib/ndarray.js @@ -26,7 +26,7 @@ var base = require( './base.js' ); // MAIN // /** -* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV`. +* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV` and alternative indexing semantics. * * @param {PositiveInteger} N - number of columns in `A` * @param {Float32Array} A - input matrix diff --git a/lib/node_modules/@stdlib/lapack/base/spttrf/README.md b/lib/node_modules/@stdlib/lapack/base/spttrf/README.md index b267ad710e3f..47c1e7e2ac11 100644 --- a/lib/node_modules/@stdlib/lapack/base/spttrf/README.md +++ b/lib/node_modules/@stdlib/lapack/base/spttrf/README.md @@ -95,8 +95,6 @@ The function has the following additional parameters: While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameters support indexing semantics based on starting indices. For example, - - ```javascript var Float32Array = require( '@stdlib/array/float32' ); diff --git a/lib/node_modules/@stdlib/lapack/base/zlacgv/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/zlacgv/lib/ndarray.js index e3e14b95a140..81abde0564a1 100644 --- a/lib/node_modules/@stdlib/lapack/base/zlacgv/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/zlacgv/lib/ndarray.js @@ -26,7 +26,7 @@ var reinterpret = require( '@stdlib/strided/base/reinterpret-complex128' ); // MAIN // /** -* Conjugates each element in a double-precision complex floating-point vector. +* Conjugates each element in a double-precision complex floating-point vector using alternative indexing semantics. * * @param {PositiveInteger} N - number of indexed elements * @param {Complex128Array} zx - input array diff --git a/lib/node_modules/@stdlib/lapack/base/zlaset/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/zlaset/lib/ndarray.js index 4bd206ea4798..859146403916 100644 --- a/lib/node_modules/@stdlib/lapack/base/zlaset/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/zlaset/lib/ndarray.js @@ -26,7 +26,7 @@ var base = require( './base.js' ); // MAIN // /** -* Sets the off-diagonal elements and the diagonal elements of a double-precision complex floating-point matrix to specified values. +* Sets the off-diagonal elements and the diagonal elements of a double-precision complex floating-point matrix to specified values using alternative indexing semantics. * * @param {string} uplo - specifies whether to set the upper or lower triangular/trapezoidal part of matrix `A` * @param {NonNegativeInteger} M - number of rows in matrix `A` diff --git a/lib/node_modules/@stdlib/lapack/base/zlaswp/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/zlaswp/lib/ndarray.js index ba712704ae18..bd7345905686 100644 --- a/lib/node_modules/@stdlib/lapack/base/zlaswp/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/zlaswp/lib/ndarray.js @@ -26,7 +26,7 @@ var base = require( './base.js' ); // MAIN // /** -* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV`. +* Performs a series of row interchanges on a matrix `A` using pivot indices stored in `IPIV` and alternative indexing semantics. * * @param {PositiveInteger} N - number of columns in `A` * @param {Complex128Array} A - input matrix diff --git a/lib/node_modules/@stdlib/lapack/base/zrot/lib/ndarray.js b/lib/node_modules/@stdlib/lapack/base/zrot/lib/ndarray.js index c783ee636b4e..0efd72a191e9 100644 --- a/lib/node_modules/@stdlib/lapack/base/zrot/lib/ndarray.js +++ b/lib/node_modules/@stdlib/lapack/base/zrot/lib/ndarray.js @@ -28,7 +28,7 @@ var imag = require( '@stdlib/complex/float64/imag' ); // MAIN // /** -* Applies a plane rotation with real cosine and complex sine. +* Applies a plane rotation with real cosine and complex sine using alternative indexing semantics. * * @param {PositiveInteger} N - number of indexed elements * @param {Complex128Array} zx - first input array diff --git a/lib/node_modules/@stdlib/math/base/special/README.md b/lib/node_modules/@stdlib/math/base/special/README.md index c1e91989e287..59fbd65ea53e 100644 --- a/lib/node_modules/@stdlib/math/base/special/README.md +++ b/lib/node_modules/@stdlib/math/base/special/README.md @@ -348,7 +348,7 @@ var fcns = special; - [`gamma( x )`][@stdlib/math/base/special/gamma]: gamma function. - [`gamma1pm1( x )`][@stdlib/math/base/special/gamma1pm1]: compute `gamma(x+1) - 1`. - [`gammainc( x, s[, regularized[, upper ]] )`][@stdlib/math/base/special/gammainc]: incomplete gamma function. -- [`gammaincinv( p, s[, upper ] )`][@stdlib/math/base/special/gammaincinv]: inverse of incomplete gamma function. +- [`gammaincinv( p, a[, upper ] )`][@stdlib/math/base/special/gammaincinv]: inverse of incomplete gamma function. - [`gammaln( x )`][@stdlib/math/base/special/gammaln]: natural logarithm of the gamma function. - [`gammasgn( x )`][@stdlib/math/base/special/gammasgn]: sign of the gamma function. - [`gammasgnf( x )`][@stdlib/math/base/special/gammasgnf]: sign of the gamma function for a single-precision floating-point number. diff --git a/lib/node_modules/@stdlib/math/base/special/acos/manifest.json b/lib/node_modules/@stdlib/math/base/special/acos/manifest.json index 3c6a30c2270f..761fd6920af4 100644 --- a/lib/node_modules/@stdlib/math/base/special/acos/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/acos/manifest.json @@ -40,7 +40,8 @@ "@stdlib/math/base/special/asin", "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/sqrt", - "@stdlib/constants/float64/fourth-pi" + "@stdlib/constants/float64/fourth-pi", + "@stdlib/constants/float64/nan" ] }, { @@ -57,7 +58,8 @@ "@stdlib/math/base/special/asin", "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/sqrt", - "@stdlib/constants/float64/fourth-pi" + "@stdlib/constants/float64/fourth-pi", + "@stdlib/constants/float64/nan" ] }, { @@ -74,7 +76,8 @@ "@stdlib/math/base/special/asin", "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/sqrt", - "@stdlib/constants/float64/fourth-pi" + "@stdlib/constants/float64/fourth-pi", + "@stdlib/constants/float64/nan" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/acos/src/main.c b/lib/node_modules/@stdlib/math/base/special/acos/src/main.c index b22d65d97279..94793e19b1e9 100644 --- a/lib/node_modules/@stdlib/math/base/special/acos/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/acos/src/main.c @@ -35,6 +35,7 @@ #include "stdlib/math/base/special/asin.h" #include "stdlib/math/base/special/sqrt.h" #include "stdlib/constants/float64/fourth_pi.h" +#include "stdlib/constants/float64/nan.h" #include static const double MOREBITS = 6.123233995736765886130e-17; // pi/2 = PIO2 + MOREBITS. @@ -81,10 +82,10 @@ static const double MOREBITS = 6.123233995736765886130e-17; // pi/2 = PIO2 + MOR double stdlib_base_acos( const double x ) { double z; if ( stdlib_base_is_nan( x ) ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( x < -1.0 || x > 1.0 ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( x > 0.5 ) { return 2.0 * stdlib_base_asin( stdlib_base_sqrt( 0.5 - ( 0.5 * x ) ) ); diff --git a/lib/node_modules/@stdlib/math/base/special/acosh/manifest.json b/lib/node_modules/@stdlib/math/base/special/acosh/manifest.json index c8420422370f..c046f462b2c5 100644 --- a/lib/node_modules/@stdlib/math/base/special/acosh/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/acosh/manifest.json @@ -41,7 +41,8 @@ "@stdlib/math/base/special/log1p", "@stdlib/math/base/special/sqrt", "@stdlib/math/base/special/ln", - "@stdlib/constants/float64/ln-two" + "@stdlib/constants/float64/ln-two", + "@stdlib/constants/float64/nan" ] }, { @@ -59,7 +60,8 @@ "@stdlib/math/base/special/log1p", "@stdlib/math/base/special/sqrt", "@stdlib/math/base/special/ln", - "@stdlib/constants/float64/ln-two" + "@stdlib/constants/float64/ln-two", + "@stdlib/constants/float64/nan" ] }, { @@ -77,7 +79,8 @@ "@stdlib/math/base/special/log1p", "@stdlib/math/base/special/sqrt", "@stdlib/math/base/special/ln", - "@stdlib/constants/float64/ln-two" + "@stdlib/constants/float64/ln-two", + "@stdlib/constants/float64/nan" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/acosh/src/main.c b/lib/node_modules/@stdlib/math/base/special/acosh/src/main.c index e998e6aeb888..d53894439ba4 100644 --- a/lib/node_modules/@stdlib/math/base/special/acosh/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/acosh/src/main.c @@ -36,6 +36,7 @@ #include "stdlib/math/base/special/sqrt.h" #include "stdlib/math/base/special/ln.h" #include "stdlib/constants/float64/ln_two.h" +#include "stdlib/constants/float64/nan.h" #include static const double HUGE = 1 << 28; // 2**28 @@ -79,7 +80,7 @@ static const double HUGE = 1 << 28; // 2**28 double stdlib_base_acosh( const double x ) { double t; if ( stdlib_base_is_nan( x ) || x < 1.0 ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( x == 1.0 ) { return 0.0; diff --git a/lib/node_modules/@stdlib/math/base/special/asin/manifest.json b/lib/node_modules/@stdlib/math/base/special/asin/manifest.json index c470fe9c8dbd..e0a2eb81c3ea 100644 --- a/lib/node_modules/@stdlib/math/base/special/asin/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/asin/manifest.json @@ -39,7 +39,8 @@ "@stdlib/math/base/napi/unary", "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/sqrt", - "@stdlib/constants/float64/fourth-pi" + "@stdlib/constants/float64/fourth-pi", + "@stdlib/constants/float64/nan" ] }, { @@ -55,7 +56,8 @@ "dependencies": [ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/sqrt", - "@stdlib/constants/float64/fourth-pi" + "@stdlib/constants/float64/fourth-pi", + "@stdlib/constants/float64/nan" ] }, { @@ -71,7 +73,8 @@ "dependencies": [ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/sqrt", - "@stdlib/constants/float64/fourth-pi" + "@stdlib/constants/float64/fourth-pi", + "@stdlib/constants/float64/nan" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/asin/src/main.c b/lib/node_modules/@stdlib/math/base/special/asin/src/main.c index 836f08fa3587..e04fef739967 100644 --- a/lib/node_modules/@stdlib/math/base/special/asin/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/asin/src/main.c @@ -34,6 +34,7 @@ #include "stdlib/math/base/assert/is_nan.h" #include "stdlib/math/base/special/sqrt.h" #include "stdlib/constants/float64/fourth_pi.h" +#include "stdlib/constants/float64/nan.h" #include static const double MOREBITS = 6.123233995736765886130e-17; // pi/2 = PIO2 + MOREBITS @@ -165,7 +166,7 @@ double stdlib_base_asin( const double x ) { double z; if ( stdlib_base_is_nan( x ) ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( x > 0.0 ) { sgn = 0; @@ -175,7 +176,7 @@ double stdlib_base_asin( const double x ) { a = -x; } if ( a > 1.0 ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( a > 0.625 ) { // arcsin(1-x) = pi/2 - sqrt(2x)(1+R(x)) diff --git a/lib/node_modules/@stdlib/math/base/special/asin/test/test.js b/lib/node_modules/@stdlib/math/base/special/asin/test/test.js index a896e206c6bc..c6db08cd3815 100644 --- a/lib/node_modules/@stdlib/math/base/special/asin/test/test.js +++ b/lib/node_modules/@stdlib/math/base/special/asin/test/test.js @@ -24,7 +24,7 @@ var tape = require( 'tape' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var randu = require( '@stdlib/random/base/randu' ); var EPS = require( '@stdlib/constants/float64/eps' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var isNegativeZero = require( '@stdlib/assert/is-negative-zero' ); var isPositiveZero = require( '@stdlib/assert/is-positive-zero' ); var asin = require( './../lib' ); @@ -47,8 +47,6 @@ tape( 'main export is a function', function test( t ) { tape( 'the function computes the arcsine', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -58,21 +56,13 @@ tape( 'the function computes the arcsine', function test( t ) { for ( i = 0; i < x.length; i++ ) { y = asin( x[i] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function computes the arcsine (small negative values)', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -82,21 +72,13 @@ tape( 'the function computes the arcsine (small negative values)', function test for ( i = 0; i < x.length; i++ ) { y = asin( x[i] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function computes the arcsine (small positive values)', function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -106,13 +88,7 @@ tape( 'the function computes the arcsine (small positive values)', function test for ( i = 0; i < x.length; i++ ) { y = asin( x[i] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/asin/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/asin/test/test.native.js index aa90cce3e475..3429912504ab 100644 --- a/lib/node_modules/@stdlib/math/base/special/asin/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/asin/test/test.native.js @@ -26,7 +26,7 @@ var isnan = require( '@stdlib/math/base/assert/is-nan' ); var randu = require( '@stdlib/random/base/randu' ); var tryRequire = require( '@stdlib/utils/try-require' ); var EPS = require( '@stdlib/constants/float64/eps' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var isNegativeZero = require( '@stdlib/assert/is-negative-zero' ); var isPositiveZero = require( '@stdlib/assert/is-positive-zero' ); @@ -56,8 +56,6 @@ tape( 'main export is a function', opts, function test( t ) { tape( 'the function computes the arcsine', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -67,21 +65,13 @@ tape( 'the function computes the arcsine', opts, function test( t ) { for ( i = 0; i < x.length; i++ ) { y = asin( x[i] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function computes the arcsine (small negative values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -91,21 +81,13 @@ tape( 'the function computes the arcsine (small negative values)', opts, functio for ( i = 0; i < x.length; i++ ) { y = asin( x[i] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); tape( 'the function computes the arcsine (small positive values)', opts, function test( t ) { var expected; - var delta; - var tol; var x; var y; var i; @@ -115,13 +97,7 @@ tape( 'the function computes the arcsine (small positive values)', opts, functio for ( i = 0; i < x.length; i++ ) { y = asin( x[i] ); - if ( y === expected[ i ] ) { - t.strictEqual( y, expected[ i ], 'x: '+x[i]+'. E: '+expected[i] ); - } else { - delta = abs( y - expected[i] ); - tol = EPS * abs( expected[i] ); - t.ok( delta <= tol, 'within tolerance. x: '+x[i]+'. y: '+y+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); - } + t.strictEqual( isAlmostSameValue( y, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/atan2/manifest.json b/lib/node_modules/@stdlib/math/base/special/atan2/manifest.json index be476ede25fb..b37fe7cd3617 100755 --- a/lib/node_modules/@stdlib/math/base/special/atan2/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/atan2/manifest.json @@ -43,7 +43,8 @@ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/atan", "@stdlib/constants/float64/pinf", - "@stdlib/constants/float64/pi" + "@stdlib/constants/float64/pi", + "@stdlib/constants/float64/nan" ] }, { @@ -63,7 +64,8 @@ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/atan", "@stdlib/constants/float64/pinf", - "@stdlib/constants/float64/pi" + "@stdlib/constants/float64/pi", + "@stdlib/constants/float64/nan" ] }, { @@ -83,7 +85,8 @@ "@stdlib/math/base/assert/is-nan", "@stdlib/math/base/special/atan", "@stdlib/constants/float64/pinf", - "@stdlib/constants/float64/pi" + "@stdlib/constants/float64/pi", + "@stdlib/constants/float64/nan" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/atan2/src/main.c b/lib/node_modules/@stdlib/math/base/special/atan2/src/main.c index 228c30752179..5b742c377182 100755 --- a/lib/node_modules/@stdlib/math/base/special/atan2/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/atan2/src/main.c @@ -37,6 +37,7 @@ #include "stdlib/math/base/special/atan.h" #include "stdlib/constants/float64/pinf.h" #include "stdlib/constants/float64/pi.h" +#include "stdlib/constants/float64/nan.h" #include /** @@ -81,7 +82,7 @@ double stdlib_base_atan2( const double y, const double x ) { double q; if ( stdlib_base_is_nan( x ) || stdlib_base_is_nan( y ) ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( stdlib_base_is_infinite( x ) ) { if ( x == STDLIB_CONSTANT_FLOAT64_PINF ) { diff --git a/lib/node_modules/@stdlib/math/base/special/atan2/test/test.native.js b/lib/node_modules/@stdlib/math/base/special/atan2/test/test.native.js index 4bdd9899b0e6..2f3a3db1f619 100755 --- a/lib/node_modules/@stdlib/math/base/special/atan2/test/test.native.js +++ b/lib/node_modules/@stdlib/math/base/special/atan2/test/test.native.js @@ -25,9 +25,8 @@ var tape = require( 'tape' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' ); var isPositiveZero = require( '@stdlib/math/base/assert/is-positive-zero' ); -var abs = require( '@stdlib/math/base/special/abs' ); +var isAlmostSameValue = require( '@stdlib/assert/is-almost-same-value' ); var tryRequire = require( '@stdlib/utils/try-require' ); -var EPS = require( '@stdlib/constants/float64/eps' ); var PINF = require( '@stdlib/constants/float64/pinf' ); var NINF = require( '@stdlib/constants/float64/ninf' ); var PI = require( '@stdlib/constants/float64/pi' ); @@ -196,8 +195,6 @@ tape( 'the function returns `-PI/2` if provided a negative `y` and `x=-0`', opts tape( 'the function evaluates the `atan2` function (when x and y are positive)', opts, function test( t ) { var expected; var actual; - var delta; - var tol; var x; var y; var i; @@ -207,9 +204,7 @@ tape( 'the function evaluates the `atan2` function (when x and y are positive)', expected = positivePositive.expected; for ( i = 0; i < x.length; i++ ) { actual = atan2( y[i], x[i] ); - delta = abs( actual - expected[i] ); - tol = EPS * abs( expected[i] ); - t.strictEqual( delta <= tol, true, 'within tolerance. y: '+y[i]+'. x: '+x[i]+'. Actual: '+actual+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); + t.strictEqual( isAlmostSameValue( actual, expected[ i ], 1 ), true, 'returns expected value' ); } t.end(); }); @@ -217,8 +212,6 @@ tape( 'the function evaluates the `atan2` function (when x and y are positive)', tape( 'the function evaluates the `atan2` function (when x is negative and y is positive)', opts, function test( t ) { var expected; var actual; - var delta; - var tol; var x; var y; var i; @@ -228,9 +221,7 @@ tape( 'the function evaluates the `atan2` function (when x is negative and y is expected = negativePositive.expected; for ( i = 0; i < x.length; i++ ) { actual = atan2( y[i], x[i] ); - delta = abs( actual - expected[i] ); - tol = 2.0 * EPS * abs( expected[i] ); - t.strictEqual( delta <= tol, true, 'within tolerance. y: '+y[i]+'. x: '+x[i]+'. Actual: '+actual+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); + t.strictEqual( isAlmostSameValue( actual, expected[ i ], 2 ), true, 'returns expected value' ); } t.end(); }); @@ -238,8 +229,6 @@ tape( 'the function evaluates the `atan2` function (when x is negative and y is tape( 'the function evaluates the `atan2` function (when x and y are negative)', opts, function test( t ) { var expected; var actual; - var delta; - var tol; var x; var y; var i; @@ -249,9 +238,7 @@ tape( 'the function evaluates the `atan2` function (when x and y are negative)', expected = negativeNegative.expected; for ( i = 0; i < x.length; i++ ) { actual = atan2( y[i], x[i] ); - delta = abs( actual - expected[i] ); - tol = 2.0 * EPS * abs( expected[i] ); - t.strictEqual( delta <= tol, true, 'within tolerance. y: '+y[i]+'. x: '+x[i]+'. Actual: '+actual+'. E: '+expected[i]+'. tol: '+tol+'. Δ: '+delta+'.' ); + t.strictEqual( isAlmostSameValue( actual, expected[ i ], 2 ), true, 'returns expected value' ); } t.end(); }); diff --git a/lib/node_modules/@stdlib/math/base/special/atanh/manifest.json b/lib/node_modules/@stdlib/math/base/special/atanh/manifest.json index 4678a491a177..b306081da595 100644 --- a/lib/node_modules/@stdlib/math/base/special/atanh/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/atanh/manifest.json @@ -40,7 +40,8 @@ "@stdlib/math/base/special/log1p", "@stdlib/math/base/assert/is-nan", "@stdlib/constants/float64/pinf", - "@stdlib/constants/float64/ninf" + "@stdlib/constants/float64/ninf", + "@stdlib/constants/float64/nan" ] }, { @@ -57,7 +58,8 @@ "@stdlib/math/base/special/log1p", "@stdlib/math/base/assert/is-nan", "@stdlib/constants/float64/pinf", - "@stdlib/constants/float64/ninf" + "@stdlib/constants/float64/ninf", + "@stdlib/constants/float64/nan" ] }, { @@ -74,7 +76,8 @@ "@stdlib/math/base/special/log1p", "@stdlib/math/base/assert/is-nan", "@stdlib/constants/float64/pinf", - "@stdlib/constants/float64/ninf" + "@stdlib/constants/float64/ninf", + "@stdlib/constants/float64/nan" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/atanh/src/main.c b/lib/node_modules/@stdlib/math/base/special/atanh/src/main.c index 954b9f671f17..6dc9e0ab3b9d 100644 --- a/lib/node_modules/@stdlib/math/base/special/atanh/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/atanh/src/main.c @@ -35,6 +35,7 @@ #include "stdlib/math/base/special/log1p.h" #include "stdlib/constants/float64/pinf.h" #include "stdlib/constants/float64/ninf.h" +#include "stdlib/constants/float64/nan.h" #include static const double NEAR_ZERO = 1.0 / (1 << 28); // 2**-28 @@ -83,7 +84,7 @@ double stdlib_base_atanh( const double x ) { double ax; double t; if ( stdlib_base_is_nan( x ) || x < -1.0 || x > 1.0 ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( x == 1.0 ) { return STDLIB_CONSTANT_FLOAT64_PINF; diff --git a/lib/node_modules/@stdlib/math/base/special/bernoulli/manifest.json b/lib/node_modules/@stdlib/math/base/special/bernoulli/manifest.json index e8352697c730..3180f59fe901 100644 --- a/lib/node_modules/@stdlib/math/base/special/bernoulli/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/bernoulli/manifest.json @@ -40,7 +40,8 @@ "@stdlib/math/base/assert/is-odd", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/pinf", - "@stdlib/math/base/assert/is-nonnegative-integer" + "@stdlib/math/base/assert/is-nonnegative-integer", + "@stdlib/constants/float64/nan" ] }, { @@ -57,7 +58,8 @@ "@stdlib/math/base/assert/is-odd", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/pinf", - "@stdlib/math/base/assert/is-nonnegative-integer" + "@stdlib/math/base/assert/is-nonnegative-integer", + "@stdlib/constants/float64/nan" ] }, { @@ -74,7 +76,8 @@ "@stdlib/math/base/assert/is-odd", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/pinf", - "@stdlib/math/base/assert/is-nonnegative-integer" + "@stdlib/math/base/assert/is-nonnegative-integer", + "@stdlib/constants/float64/nan" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/bernoulli/src/main.c b/lib/node_modules/@stdlib/math/base/special/bernoulli/src/main.c index b1eb3203f5bd..c8aeaa89e989 100644 --- a/lib/node_modules/@stdlib/math/base/special/bernoulli/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/bernoulli/src/main.c @@ -20,6 +20,7 @@ #include "stdlib/math/base/assert/is_odd.h" #include "stdlib/constants/float64/ninf.h" #include "stdlib/constants/float64/pinf.h" +#include "stdlib/constants/float64/nan.h" #include "stdlib/math/base/special/bernoulli.h" #include #include @@ -172,7 +173,7 @@ int32_t MAX_BERNOULLI = 258; */ double stdlib_base_bernoulli( const double n ) { if ( !stdlib_base_is_nonnegative_integer( n ) ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( n == 1.0 ) { return 0.5; diff --git a/lib/node_modules/@stdlib/math/base/special/bessely0/manifest.json b/lib/node_modules/@stdlib/math/base/special/bessely0/manifest.json index 0f5c4b1295c2..4795c8012d8c 100644 --- a/lib/node_modules/@stdlib/math/base/special/bessely0/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/bessely0/manifest.json @@ -44,7 +44,8 @@ "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/pi", - "@stdlib/constants/float64/sqrt-pi" + "@stdlib/constants/float64/sqrt-pi", + "@stdlib/constants/float64/nan" ] }, { @@ -65,7 +66,8 @@ "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/pi", - "@stdlib/constants/float64/sqrt-pi" + "@stdlib/constants/float64/sqrt-pi", + "@stdlib/constants/float64/nan" ] }, { @@ -86,7 +88,8 @@ "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/pi", - "@stdlib/constants/float64/sqrt-pi" + "@stdlib/constants/float64/sqrt-pi", + "@stdlib/constants/float64/nan" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/bessely0/src/main.c b/lib/node_modules/@stdlib/math/base/special/bessely0/src/main.c index 9eb39650b1f1..51db37ff3fa0 100644 --- a/lib/node_modules/@stdlib/math/base/special/bessely0/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/bessely0/src/main.c @@ -38,6 +38,7 @@ #include "stdlib/constants/float64/ninf.h" #include "stdlib/constants/float64/pi.h" #include "stdlib/constants/float64/sqrt_pi.h" +#include "stdlib/constants/float64/nan.h" static const double ONE_DIV_SQRT_PI = 1.0 / STDLIB_CONSTANT_FLOAT64_SQRT_PI; static const double TWO_DIV_PI = 2.0 / STDLIB_CONSTANT_FLOAT64_PI; @@ -287,7 +288,7 @@ double stdlib_base_bessely0( const double x ) { double z; if ( x < 0.0 ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( x == 0.0 ) { return STDLIB_CONSTANT_FLOAT64_NINF; diff --git a/lib/node_modules/@stdlib/math/base/special/bessely1/manifest.json b/lib/node_modules/@stdlib/math/base/special/bessely1/manifest.json index aae8696944f8..524dcf064741 100644 --- a/lib/node_modules/@stdlib/math/base/special/bessely1/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/bessely1/manifest.json @@ -44,7 +44,8 @@ "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/pi", - "@stdlib/constants/float64/sqrt-pi" + "@stdlib/constants/float64/sqrt-pi", + "@stdlib/constants/float64/nan" ] }, { @@ -65,7 +66,8 @@ "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/pi", - "@stdlib/constants/float64/sqrt-pi" + "@stdlib/constants/float64/sqrt-pi", + "@stdlib/constants/float64/nan" ] }, { @@ -86,7 +88,8 @@ "@stdlib/constants/float64/pinf", "@stdlib/constants/float64/ninf", "@stdlib/constants/float64/pi", - "@stdlib/constants/float64/sqrt-pi" + "@stdlib/constants/float64/sqrt-pi", + "@stdlib/constants/float64/nan" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/bessely1/src/main.c b/lib/node_modules/@stdlib/math/base/special/bessely1/src/main.c index 62fcc640dc1b..0560893abc62 100644 --- a/lib/node_modules/@stdlib/math/base/special/bessely1/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/bessely1/src/main.c @@ -40,6 +40,7 @@ #include "stdlib/constants/float64/ninf.h" #include "stdlib/constants/float64/pi.h" #include "stdlib/constants/float64/sqrt_pi.h" +#include "stdlib/constants/float64/nan.h" static const double ONE_DIV_SQRT_PI = 1.0 / STDLIB_CONSTANT_FLOAT64_SQRT_PI; static const double TWO_DIV_PI = 2.0 / STDLIB_CONSTANT_FLOAT64_PI; @@ -244,7 +245,7 @@ double stdlib_base_bessely1( double x ) { double f; if ( x < 0.0 ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( x == 0.0 ) { return STDLIB_CONSTANT_FLOAT64_NINF; diff --git a/lib/node_modules/@stdlib/math/base/special/beta/manifest.json b/lib/node_modules/@stdlib/math/base/special/beta/manifest.json index 64b2a1183de5..e2631db7f4aa 100644 --- a/lib/node_modules/@stdlib/math/base/special/beta/manifest.json +++ b/lib/node_modules/@stdlib/math/base/special/beta/manifest.json @@ -44,7 +44,8 @@ "@stdlib/math/base/special/exp", "@stdlib/math/base/special/pow", "@stdlib/constants/float64/e", - "@stdlib/constants/float64/eps" + "@stdlib/constants/float64/eps", + "@stdlib/constants/float64/nan" ] }, { @@ -65,7 +66,8 @@ "@stdlib/math/base/special/exp", "@stdlib/math/base/special/pow", "@stdlib/constants/float64/e", - "@stdlib/constants/float64/eps" + "@stdlib/constants/float64/eps", + "@stdlib/constants/float64/nan" ] }, { @@ -86,7 +88,8 @@ "@stdlib/math/base/special/exp", "@stdlib/math/base/special/pow", "@stdlib/constants/float64/e", - "@stdlib/constants/float64/eps" + "@stdlib/constants/float64/eps", + "@stdlib/constants/float64/nan" ] } ] diff --git a/lib/node_modules/@stdlib/math/base/special/beta/src/main.c b/lib/node_modules/@stdlib/math/base/special/beta/src/main.c index cd7f2ae5de8f..20c10aa455fe 100644 --- a/lib/node_modules/@stdlib/math/base/special/beta/src/main.c +++ b/lib/node_modules/@stdlib/math/base/special/beta/src/main.c @@ -38,6 +38,7 @@ #include "stdlib/math/base/special/pow.h" #include "stdlib/constants/float64/e.h" #include "stdlib/constants/float64/eps.h" +#include "stdlib/constants/float64/nan.h" static const double G = 10.90051099999999983936049829935654997826; @@ -109,10 +110,10 @@ double stdlib_base_beta( const double a, const double b ) { double c; if ( stdlib_base_is_nan( a ) || stdlib_base_is_nan( b ) ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( a < 0.0 || b < 0.0 ) { - return 0.0 / 0.0; // NaN + return STDLIB_CONSTANT_FLOAT64_NAN; } if ( b == 1.0 ) { return 1.0 / a; diff --git a/lib/node_modules/@stdlib/math/base/special/betainc/README.md b/lib/node_modules/@stdlib/math/base/special/betainc/README.md index 73b777db6387..5d3a7fcb828c 100644 --- a/lib/node_modules/@stdlib/math/base/special/betainc/README.md +++ b/lib/node_modules/@stdlib/math/base/special/betainc/README.md @@ -120,6 +120,106 @@ logEachMap( 'x: %0.4f, \t a: %0.4f, \t b: %0.4f, \t f(x,a,b): %0.4f', x, a, b, b + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/betainc.h" +``` + +#### stdlib_base_betainc( x, a, b, regularized, upper ) + +Evaluates the incomplete beta function. + +```c +double y = stdlib_base_betainc( 0.5, 2.0, 2.0, true, false ); +// returns 0.5 +``` + +The function accepts the following arguments: + +- **x**: `[in] double` function parameter. +- **a**: `[in] double` function parameter. +- **b**: `[in] double` function parameter. +- **regularized**: `[in] bool` indicating if the function should evaluate the regularized incomplete beta function. +- **upper**: `[in] bool` indicating if the function should return the upper tail of the incomplete beta function. + +```c +double stdlib_base_betainc( const double x, const double a, const double b, const bool regularized, const bool upper ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/betainc.h" +#include +#include + +static double random_uniform( const double min, const double max ) { + double v = (double)rand() / ( (double)RAND_MAX + 1.0 ); + return min + ( v*(max-min) ); +} + +int main( void ) { + double x; + double a; + double b; + double v; + int i; + + for ( i = 0; i < 100; i++ ) { + x = random_uniform( 0.0, 1.0 ); + a = random_uniform( 0.0, 10.0 ); + b = random_uniform( 0.0, 10.0 ); + v = stdlib_base_betainc( x, a, b, true, false ); + printf( "x: %lf, a: %lf, b: %lf, f(x,a,b): %lf\n", x, a, b, v ); + } +} +``` + +
+ + + +
+ + +