From 82638fc48df4a5c55a05c363eba80c84a5d6ea96 Mon Sep 17 00:00:00 2001 From: aman-095 Date: Tue, 17 Dec 2024 13:12:18 +0530 Subject: [PATCH 1/6] feat: add wasm support for isamax --- .../@stdlib/blas/base/isamax-wasm/README.md | 298 +++++++++++ .../base/isamax-wasm/benchmark/benchmark.js | 106 ++++ .../isamax-wasm/benchmark/benchmark.module.js | 66 +++ .../benchmark/benchmark.module.main.js | 130 +++++ .../benchmark/benchmark.module.ndarray.js | 130 +++++ .../benchmark/benchmark.ndarray.js | 106 ++++ .../blas/base/isamax-wasm/docs/repl.txt | 496 ++++++++++++++++++ .../base/isamax-wasm/docs/types/index.d.ts | 316 +++++++++++ .../blas/base/isamax-wasm/docs/types/test.ts | 347 ++++++++++++ .../blas/base/isamax-wasm/examples/index.js | 43 ++ .../examples/little_endian_arrays.js | 65 +++ .../blas/base/isamax-wasm/examples/module.js | 63 +++ .../base/isamax-wasm/lib/binary.browser.js | 33 ++ .../blas/base/isamax-wasm/lib/binary.js | 34 ++ .../blas/base/isamax-wasm/lib/index.js | 99 ++++ .../@stdlib/blas/base/isamax-wasm/lib/main.js | 60 +++ .../blas/base/isamax-wasm/lib/module.js | 198 +++++++ .../blas/base/isamax-wasm/lib/routine.js | 166 ++++++ .../blas/base/isamax-wasm/manifest.json | 36 ++ .../blas/base/isamax-wasm/package.json | 84 +++ .../blas/base/isamax-wasm/scripts/build.js | 63 +++ .../base/isamax-wasm/scripts/template.txt | 33 ++ .../blas/base/isamax-wasm/src/Makefile | 243 +++++++++ .../blas/base/isamax-wasm/src/exports.json | 4 + .../blas/base/isamax-wasm/src/main.wasm | Bin 0 -> 299 bytes .../blas/base/isamax-wasm/src/main.wat | 107 ++++ .../blas/base/isamax-wasm/test/test.js | 53 ++ .../blas/base/isamax-wasm/test/test.main.js | 163 ++++++ .../blas/base/isamax-wasm/test/test.module.js | 154 ++++++ .../base/isamax-wasm/test/test.module.main.js | 184 +++++++ .../isamax-wasm/test/test.module.ndarray.js | 243 +++++++++ .../base/isamax-wasm/test/test.ndarray.js | 185 +++++++ .../base/isamax-wasm/test/test.routine.js | 71 +++ 33 files changed, 4379 insertions(+) create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/repl.txt create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/manifest.json create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/package.json create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/src/exports.json create mode 100755 lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wasm create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wat create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.main.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.main.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.ndarray.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.ndarray.js create mode 100644 lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.routine.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md b/lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md new file mode 100644 index 000000000000..ed77f37bbe70 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md @@ -0,0 +1,298 @@ + + +# isamax + +> Find the index of the first element having the maximum absolute value. + +
+ +## Usage + +```javascript +var isamax = require( '@stdlib/blas/base/isamax-wasm' ); +``` + +#### isamax.main( N, x, strideX ) + +Finds the index of the first element having the maximum absolute value. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); + +var idx = isamax.main( 3, x, 1 ); +// returns 1 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **x**: input [`Float32Array`][@stdlib/array/float32]. +- **strideX**: index increment for `x`. + +The `N` and stride parameters determine which elements in the input strided array are accessed at runtime. For example, to traverse every other value, + +```javascript +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 idx = isamax.main( 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 Float32Array = require( '@stdlib/array/float32' ); + +// Initial array: +var x0 = new Float32Array( [ 1.0, -2.0, 3.0, -4.0, 5.0, -6.0 ] ); + +// Create an offset view: +var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +// Find index of element having the maximum absolute value: +var idx = isamax.main( 3, x1, 2 ); +// returns 2 +``` + +#### isamax.ndarray( N, x, strideX, offsetX ) + +Finds the index of the first element having the maximum absolute value using alternative indexing semantics. + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); + +var idx = isamax.ndarray( 3, x, 1, 0 ); +// returns 1 +``` + +The function has the following additional parameters: + +- **offsetX**: starting index for `x`. + +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to start from the second index, + +```javascript +var Float32Array = require( '@stdlib/array/float32' ); + +var x = new Float32Array( [ 1.0, -2.0, 3.0, -4.0, 5.0, -6.0 ] ); + +var idx = isamax.ndarray( 5, x, 1, 1 ); +// returns 4 +``` + +* * * + +### Module + +#### isamax.Module( memory ) + +Returns a new WebAssembly [module wrapper][@stdlib/wasm/module-wrapper] instance which uses the provided WebAssembly [memory][@stdlib/wasm/memory] instance as its underlying memory. + + + +```javascript +var Memory = require( '@stdlib/wasm/memory' ); + +// Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): +var mem = new Memory({ + 'initial': 10, + 'maximum': 100 +}); + +// Create a BLAS routine: +var mod = new isamax.Module( mem ); +// returns + +// Initialize the routine: +mod.initializeSync(); +``` + +#### isamax.Module.prototype.main( N, xp, sx ) + +Finds the index of the first element having the maximum absolute value. + + + +```javascript +var Memory = require( '@stdlib/wasm/memory' ); +var oneTo = require( '@stdlib/array/one-to' ); + +// Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): +var mem = new Memory({ + 'initial': 10, + 'maximum': 100 +}); + +// Create a BLAS routine: +var mod = new isamax.Module( mem ); +// returns + +// Initialize the routine: +mod.initializeSync(); + +// Define a vector data type: +var dtype = 'float32'; + +// Specify a vector length: +var N = 5; + +// Define a pointer (i.e., byte offset) to the first vector element: +var xptr = 0; + +// Write vector values to module memory: +mod.write( xptr, oneTo( N, dtype ) ); + +// Perform computation: +var idx = mod.main( N, xptr, 1 ); +// returns 4 +``` + +The function has the following parameters: + +- **N**: number of indexed elements. +- **xp**: input [`Float32Array`][@stdlib/array/float32] pointer (i.e., byte offset). +- **sx**: index increment for `x`. + +#### isamax.Module.prototype.ndarray( N, xp, sx, ox ) + +Finds the index of the first element having the maximum absolute value using alternative indexing semantics. + + + +```javascript +var Memory = require( '@stdlib/wasm/memory' ); +var oneTo = require( '@stdlib/array/one-to' ); + +// Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): +var mem = new Memory({ + 'initial': 10, + 'maximum': 100 +}); + +// Create a BLAS routine: +var mod = new isamax.Module( mem ); +// returns + +// Initialize the routine: +mod.initializeSync(); + +// Define a vector data type: +var dtype = 'float32'; + +// Specify a vector length: +var N = 5; + +// Define a pointer (i.e., byte offset) to the first vector element: +var xptr = 0; + +// Write vector values to module memory: +mod.write( xptr, oneTo( N, dtype ) ); + +// Perform computation: +var idx = mod.ndarray( N, xptr, 1, 0 ); +// returns 4 +``` + +The function has the following additional parameters: + +- **ox**: starting index for `x`. + +
+ + + +
+ +* * * + +## Notes + +- If `N < 1`, both `main` and `ndarray` methods return `-1`. +- This package implements routines using WebAssembly. When provided arrays which are not allocated on a `isamax` module memory instance, data must be explicitly copied to module memory prior to computation. Data movement may entail a performance cost, and, thus, if you are using arrays external to module memory, you should prefer using [`@stdlib/blas/base/isamax`][@stdlib/blas/base/isamax]. However, if working with arrays which are allocated and explicitly managed on module memory, you can achieve better performance when compared to the pure JavaScript implementations found in [`@stdlib/blas/base/isamax`][@stdlib/blas/base/isamax]. Beware that such performance gains may come at the cost of additional complexity when having to perform manual memory management. Choosing between implementations depends heavily on the particular needs and constraints of your application, with no one choice universally better than the other. +- `isamax()` corresponds to the [BLAS][blas] level 1 function [`isamax`][isamax]. + +
+ + + +
+ +* * * + +## Examples + + + +```javascript +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var isamax = require( '@stdlib/blas/base/isamax-wasm' ); + +var opts = { + 'dtype': 'float32' +}; +var x = discreteUniform( 10, 0, 100, opts ); +console.log( x ); + +var idx = isamax.ndarray( x.length, x, 1, 0 ); +console.log( idx ); +``` + +
+ + + + + + + + + + + + + + diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js new file mode 100644 index 000000000000..71a6f7110a95 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); +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 pkg = require( './../package.json' ).name; +var isamax = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': !hasWebAssemblySupport() +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100.0, 100.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var idx; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + idx = isamax.main( x.length, x, 1 ); + if ( isnanf( idx ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( idx ) ) { + 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( pkg+':len='+len, opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js new file mode 100644 index 000000000000..4c0fd897728c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js @@ -0,0 +1,66 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); +var Memory = require( '@stdlib/wasm/memory' ); +var pkg = require( './../package.json' ).name; +var isamax = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': !hasWebAssemblySupport() +}; + + +// MAIN // + +bench( pkg+':Module:constructor', opts, function benchmark( b ) { + var values; + var o; + var v; + var i; + + o = { + 'initial': 0 + }; + values = [ + new Memory( o ), + new Memory( o ) + ]; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + v = new isamax.Module( values[ i%values.length ] ); + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + } + b.toc(); + if ( typeof v !== 'object' ) { + b.fail( 'should return an object' ); + } + b.pass( 'benchmark finished' ); + b.end(); +}); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js new file mode 100644 index 000000000000..fc82a029937f --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js @@ -0,0 +1,130 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); +var Memory = require( '@stdlib/wasm/memory' ); +var bytesPerElement = require( '@stdlib/ndarray/base/bytes-per-element' ); +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 pkg = require( './../package.json' ).name; +var isamax = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': !hasWebAssemblySupport() +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var xptr; + var idx; + var mod; + var mem; + var nb; + var i; + + // Create a new BLAS routine interface: + mem = new Memory({ + 'initial': 0 + }); + mod = new isamax.Module( mem ); + + // Initialize the module: + mod.initializeSync(); // eslint-disable-line node/no-sync + + // Reallocate the underlying memory to allow storing one vector: + nb = bytesPerElement( options.dtype ); + mod.realloc( len*nb ); + + // Define a pointer (i.e., byte offset) to the first vector element: + xptr = 0; + + // Write random values to module memory: + mod.write( xptr, uniform( len, -100.0, 100.0, options ) ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + idx = mod.main( len, xptr, 1 ); + if ( isnanf( idx ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( idx ) ) { + 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( pkg+'::module,pointers:len='+len, opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js new file mode 100644 index 000000000000..db611f268d0e --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js @@ -0,0 +1,130 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); +var Memory = require( '@stdlib/wasm/memory' ); +var bytesPerElement = require( '@stdlib/ndarray/base/bytes-per-element' ); +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 pkg = require( './../package.json' ).name; +var isamax = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': !hasWebAssemblySupport() +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var xptr; + var idx; + var mod; + var mem; + var nb; + var i; + + // Create a new BLAS routine interface: + mem = new Memory({ + 'initial': 0 + }); + mod = new isamax.Module( mem ); + + // Initialize the module: + mod.initializeSync(); // eslint-disable-line node/no-sync + + // Reallocate the underlying memory to allow storing one vector: + nb = bytesPerElement( options.dtype ); + mod.realloc( len*nb ); + + // Define a pointer (i.e., byte offset) to the first vector element: + xptr = 0; + + // Write random values to module memory: + mod.write( xptr, uniform( len, -100.0, 100.0, options ) ); + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + idx = mod.ndarray( len, xptr, 1, 0 ); + if ( isnanf( idx ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( idx ) ) { + 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( pkg+'::module,pointers:ndarray:len='+len, opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js new file mode 100644 index 000000000000..552f8a21e4ea --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js @@ -0,0 +1,106 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var bench = require( '@stdlib/bench' ); +var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); +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 pkg = require( './../package.json' ).name; +var isamax = require( './../lib' ); + + +// VARIABLES // + +var opts = { + 'skip': !hasWebAssemblySupport() +}; +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // + +/** +* Creates a benchmark function. +* +* @private +* @param {PositiveInteger} len - array length +* @returns {Function} benchmark function +*/ +function createBenchmark( len ) { + var x = uniform( len, -100.0, 100.0, options ); + return benchmark; + + /** + * Benchmark function. + * + * @private + * @param {Benchmark} b - benchmark instance + */ + function benchmark( b ) { + var idx; + var i; + + b.tic(); + for ( i = 0; i < b.iterations; i++ ) { + idx = isamax.ndarray( x.length, x, 1, 0 ); + if ( isnanf( idx ) ) { + b.fail( 'should not return NaN' ); + } + } + b.toc(); + if ( isnanf( idx ) ) { + 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( pkg+':ndarray:len='+len, opts, f ); + } +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/repl.txt new file mode 100644 index 000000000000..6e1bc0ade623 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/repl.txt @@ -0,0 +1,496 @@ + +{{alias}}.main( N, x, strideX ) + Finds the index of the first element having the maximum absolute value. + + 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 < 1`, the function returns `-1`. + + Parameters + ---------- + N: integer + Number of indexed elements. + + x: Float32Array + Input array. + + strideX: integer + Index increment for `x`. + + Returns + ------- + idx: integer + Index value. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 2.0 ] ); + > var idx = {{alias}}.main( x.length, x, 1 ) + 1 + + // Using `N` and stride parameters: + > x = new {{alias:@stdlib/array/float32}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0 ] ); + > idx = {{alias}}.main( 6, x, -1 ) + 2 + + // Using view offsets: + > var x0 = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); + > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); + > idx = {{alias}}.main( 3, x1, 2 ) + 0 + + +{{alias}}.ndarray( N, x, strideX, offsetX ) + Finds the index of the first element having the maximum absolute value 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 + Index increment for `x`. + + offsetX: integer + Starting index for `x`. + + Returns + ------- + idx: integer + Index value. + + Examples + -------- + // Standard Usage: + > var x = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 2.0 ] ); + > var idx = {{alias}}.ndarray( x.length, x, 1, 0 ) + 1 + + // Using offset parameter: + > x = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); + > idx = {{alias}}.ndarray( 4, x, 1, 1 ) + 3 + + +{{alias}}.Module( memory ) + Returns a new WebAssembly module wrapper which uses the provided WebAssembly + memory instance as its underlying memory. + + Parameters + ---------- + memory: Memory + WebAssembly memory instance. + + Returns + ------- + mod: Module + WebAssembly module wrapper. + + Examples + -------- + // Create a new memory instance: + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + + // Create a new routine: + > var mod = new {{alias}}.Module( mem ); + + // Initialize the routine: + > mod.initializeSync(); + + +{{alias}}.Module.prototype.binary + Read-only property which returns WebAssembly binary code. + + Returns + ------- + out: Uint8Array + WebAssembly binary code. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.binary + + + +{{alias}}.Module.prototype.memory + Read-only property which returns WebAssembly memory. + + Returns + ------- + mem: Memory|null + WebAssembly memory. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.memory + + + +{{alias}}.Module.prototype.buffer + Read-only property which returns a WebAssembly memory buffer as a + Uint8Array. + + Returns + ------- + buf: Uint8Array|null + WebAssembly memory buffer. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.buffer + + + +{{alias}}.Module.prototype.view + Read-only property which returns a WebAsssembly memory buffer as a DataView. + + Returns + ------- + view: DataView|null + WebAssembly memory view. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.view + + + +{{alias}}.Module.prototype.exports + Read-only property which returns "raw" WebAssembly module exports. + + Returns + ------- + out: Object|null + WebAssembly module exports. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.exports + {...} + + +{{alias}}.Module.prototype.initialize() + Asynchronously initializes a WebAssembly module instance. + + Returns + ------- + p: Promise + Promise which resolves upon initializing a WebAssembly module instance. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initialize(); + + +{{alias}}.Module.prototype.initializeAsync( clbk ) + Asynchronously initializes a WebAssembly module instance. + + Parameters + ---------- + clbk: Function + Callback to invoke upon initializing a WebAssembly module instance. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > function clbk() { console.log( 'done' ) }; + > mod.initializeAsync( clbk ); + + +{{alias}}.Module.prototype.initializeSync() + Synchronously initializes a WebAssembly module instance. + + In web browsers, JavaScript engines may raise an exception when attempting + to synchronously compile large WebAssembly binaries due to concerns about + blocking the main thread. Hence, to initialize WebAssembly modules having + large binaries (e.g., >4KiB), consider using asynchronous initialization + methods in browser contexts. + + Returns + ------- + mod: Module + Module wrapper instance. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + + +{{alias}}.Module.prototype.realloc( nbytes ) + Reallocates the underlying WebAssembly memory instance to a specified number + of bytes. + + WebAssembly memory can only *grow*, not shrink. Hence, if provided a number + of bytes which is less than or equal to the size of the current memory, the + function does nothing. + + When non-shared memory is resized, the underlying the `ArrayBuffer` is + detached, consequently invalidating any associated typed array views. Before + resizing non-shared memory, ensure that associated typed array views no + longer need byte access and can be garbage collected. + + Parameters + ---------- + nbytes: integer + Memory size (in bytes). + + Returns + ------- + bool: boolean + Boolean indicating whether the resize operation was successful. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.realloc( 100 ) + + + +{{alias}}.Module.prototype.hasCapacity( byteOffset, values ) + Returns a boolean indicating whether the underlying WebAssembly memory + instance has the capacity to store a provided list of values starting from a + specified byte offset. + + Parameters + ---------- + byteOffset: integer + Byte offset at which to start writing values. + + values: ArrayLikeObject + Input array containing values to write. + + Returns + ------- + bool: boolean + Boolean indicating whether the underlying WebAssembly memory instance + has enough capacity. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.realloc( 100 ); + > mod.hasCapacity( 0, [ 1, 2, 3, 4 ] ) + true + + +{{alias}}.Module.prototype.isView( values ) + Returns a boolean indicating whether a provided list of values is a view of + the underlying memory of the WebAssembly module. + + Parameters + ---------- + values: ArrayLikeObject + Input array. + + Returns + ------- + bool: boolean + Boolean indicating whether the list is a memory view. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.realloc( 100 ); + > mod.isView( [ 1, 2, 3, 4 ] ) + false + + +{{alias}}.Module.prototype.write( byteOffset, values ) + Writes values to the underlying WebAssembly memory instance. + + The function infers element size (i.e., number of bytes per element) from + the data type of the input array. For example, if provided a Float32Array, + the function writes each element as a single-precision floating-point number + to the underlying WebAssembly memory instance. + + In order to write elements as a different data type, you need to perform an + explicit cast *before* calling this method. For example, in order to write + single-precision floating-point numbers contained in a Float32Array as + signed 32-bit integers, you must first convert the Float32Array to an + Int32Array before passing the values to this method. + + If provided an array having an unknown or "generic" data type, elements are + written as double-precision floating-point numbers. + + Parameters + ---------- + byteOffset: integer + Byte offset at which to start writing values. + + values: ArrayLikeObject + Input array containing values to write. + + Returns + ------- + mod: Module + Module wrapper instance. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.realloc( 100 ); + > mod.write( 0, [ 1, 2, 3, 4 ] ); + + +{{alias}}.Module.prototype.read( byteOffset, out ) + Reads values from the underlying WebAssembly memory instance. + + The function infers element size (i.e., number of bytes per element) from + the data type of the output array. For example, if provided a Float32Array, + the function reads each element as a single-precision floating-point number + from the underlying WebAssembly memory instance. + + In order to read elements as a different data type, you need to perform an + explicit cast *after* calling this method. For example, in order to read + single-precision floating-point numbers contained in a Float32Array as + signed 32-bit integers, you must convert the Float32Array to an Int32Array + after reading memory values using this method. + + If provided an output array having an unknown or "generic" data type, + elements are read as double-precision floating-point numbers. + + Parameters + ---------- + byteOffset: integer + Byte offset at which to start reading values. + + out: ArrayLikeObject + Output array for storing read values. + + Returns + ------- + mod: Module + Module wrapper instance. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 0 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + > mod.realloc( 100 ); + > mod.write( 0, [ 1, 2, 3, 4 ] ); + > var out = [ 0, 0, 0, 0 ]; + > mod.read( 0, out ); + > out + [ 1, 2, 3, 4 ] + + +{{alias}}.Module.prototype.main( N, xp, sx ) + Finds the index of the first element having the maximum absolute value. + + Parameters + ---------- + N: integer + Number of indexed elements. + + xp: integer + Input array pointer (i.e., byte offset). + + sx: integer + Index increment for `x`. + + Returns + ------- + idx: integer + Index value. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 1 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + + // Define a "pointer" (i.e., byte offset) into module memory: + > var xptr = 0; + + // Write data to module memory: + > mod.write( xptr, {{alias:@stdlib/array/one-to}}( 5, 'float32' ) ); + + // Perform computation: + > var idx = mod.main( 5, xptr, 1 ) + 4 + + +{{alias}}.Module.prototype.ndarray( N, xp, sx, ox ) + Finds the index of the first element having the maximum absolute value using + alternative indexing semantics. + + Parameters + ---------- + N: integer + Number of indexed elements. + + xp: integer + Input array pointer (i.e., byte offset). + + sx: integer + Index increment for `x`. + + ox: integer + Starting index for `x`. + + Returns + ------- + idx: integer + Index value. + + Examples + -------- + > var mem = new {{alias:@stdlib/wasm/memory}}( { 'initial': 1 } ); + > var mod = new {{alias}}.Module( mem ); + > mod.initializeSync(); + + // Define a "pointer" (i.e., byte offset) into module memory: + > var xptr = 0; + + // Write data to module memory: + > mod.write( xptr, {{alias:@stdlib/array/one-to}}( 5, 'float32' ) ); + + // Perform computation: + > var out = mod.ndarray( 5, xptr, 1, 0 ) + 4 + + See Also + -------- + diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts new file mode 100644 index 000000000000..785535739ef1 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts @@ -0,0 +1,316 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// TypeScript Version: 4.1 + +/// + +import { ModuleWrapper, Memory } from '@stdlib/types/wasm'; + +/** +* Interface defining a module constructor which is both "newable" and "callable". +*/ +interface ModuleConstructor { + /** + * Returns a new WebAssembly module wrapper instance which uses the provided WebAssembly memory instance as its underlying memory. + * + * @param mem - WebAssembly memory instance + * @returns module wrapper instance + * + * @example + * var Memory = require( '@stdlib/wasm/memory' ); + * var oneTo = require( '@stdlib/array/one-to' ); + * + * // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): + * var mem = new Memory({ + * 'initial': 10, + * 'maximum': 100 + * }); + * + * // Create a BLAS routine: + * var mod = new isamax.Module( mem ); + * // returns + * + * // Initialize the routine: + * mod.initializeSync(); + * + * // Define a vector data type: + * var dtype = 'float32'; + * + * // Specify a vector length: + * var N = 5; + * + * // Define pointer (i.e., byte offsets) for storing two vectors: + * var xptr = 0; + * + * // Write vector values to module memory: + * mod.write( xptr, oneTo( N, dtype ) ); + * + * // Perform computation: + * var idx = mod.main( N, xptr, 1 ); + * // returns 4 + */ + new( mem: Memory ): Module; // newable + + /** + * Returns a new WebAssembly module wrapper instance which uses the provided WebAssembly memory instance as its underlying memory. + * + * @param mem - WebAssembly memory instance + * @returns module wrapper instance + * + * @example + * var Memory = require( '@stdlib/wasm/memory' ); + * var oneTo = require( '@stdlib/array/one-to' ); + * + * // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): + * var mem = new Memory({ + * 'initial': 10, + * 'maximum': 100 + * }); + * + * // Create a BLAS routine: + * var mod = isamax.Module( mem ); + * // returns + * + * // Initialize the routine: + * mod.initializeSync(); + * + * // Define a vector data type: + * var dtype = 'float32'; + * + * // Specify a vector length: + * var N = 5; + * + * // Define pointer (i.e., byte offsets) for storing two vectors: + * var xptr = 0; + * + * // Write vector values to module memory: + * mod.write( xptr, oneTo( N, dtype ) ); + * + * // Perform computation: + * var idx = mod.main( N, xptr, 1 ); + * // returns 4 + */ + ( mem: Memory ): Module; // callable +} + +/** +* Interface describing an `isamax` WebAssembly module. +*/ +interface Module extends ModuleWrapper { + /** + * Finds the index of the first element having the maximum absolute value. + * + * @param N - number of indexed elements + * @param xptr - input array pointer (i.e., byte offset) + * @param strideX - `x` stride length + * @returns index value + * + * @example + * var Memory = require( '@stdlib/wasm/memory' ); + * var oneTo = require( '@stdlib/array/one-to' ); + * + * // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): + * var mem = new Memory({ + * 'initial': 10, + * 'maximum': 100 + * }); + * + * // Create a BLAS routine: + * var mod = new isamax.Module( mem ); + * // returns + * + * // Initialize the routine: + * mod.initializeSync(); + * + * // Define a vector data type: + * var dtype = 'float32'; + * + * // Specify a vector length: + * var N = 5; + * + * // Define pointer (i.e., byte offsets) for storing the input vector: + * var xptr = 0; + * + * // Write vector values to module memory: + * mod.write( xptr, oneTo( N, dtype ) ); + * + * // Perform computation: + * var idx = mod.main( N, xptr, 1 ); + * // returns 4 + */ + main( N: number, xptr: number, strideX: number ): number; + + /** + * Finds the index of the first element having the maximum absolute value using alternative indexing semantics. + * + * @param N - number of indexed elements + * @param xptr - input array pointer (i.e., byte offset) + * @param strideX - `x` stride length + * @param offsetX - starting index for `x` + * @returns index value + * + * @example + * var Memory = require( '@stdlib/wasm/memory' ); + * var oneTo = require( '@stdlib/array/one-to' ); + * + * // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): + * var mem = new Memory({ + * 'initial': 10, + * 'maximum': 100 + * }); + * + * // Create a BLAS routine: + * var mod = new isamax.Module( mem ); + * // returns + * + * // Initialize the routine: + * mod.initializeSync(); + * + * // Define a vector data type: + * var dtype = 'float32'; + * + * // Specify a vector length: + * var N = 5; + * + * // Define pointer (i.e., byte offsets) for storing the input vector: + * var xptr = 0; + * + * // Write vector values to module memory: + * mod.write( xptr, oneTo( N, dtype ) ); + * + * // Perform computation: + * var idx = mod.ndarray( N, xptr, 1, 0 ); + * // returns 4 + */ + ndarray( N: number, xptr: number, strideX: number, offsetX: number ): number; +} + +/** +* Interface describing `isamax`. +*/ +interface Routine extends ModuleWrapper { + /** + * Finds the index of the first element having the maximum absolute value. + * + * @param N - number of indexed elements + * @param x - input array + * @param strideX - `x` stride length + * @returns index value + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, -5.0 ] ); + * + * var idx = isamax.main( x.length, x, 1 ); + * // returns 4 + */ + main( N: number, x: Float32Array, strideX: number ): number; + + /** + * Finds the index of the first element having the maximum absolute value 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` + * @returns index value + * + * @example + * var Float32Array = require( '@stdlib/array/float32' ); + * + * var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, -5.0 ] ); + * + * var idx = isamax.ndarray( x.length, x, 1, 0 ); + * // returns 4 + */ + ndarray( N: number, x: Float32Array, strideX: number, offsetX: number ): number; + + /** + * Returns a new WebAssembly module wrapper instance which uses the provided WebAssembly memory instance as its underlying memory. + * + * @param mem - WebAssembly memory instance + * @returns module wrapper instance + * + * @example + * var Memory = require( '@stdlib/wasm/memory' ); + * var oneTo = require( '@stdlib/array/one-to' ); + * + * // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): + * var mem = new Memory({ + * 'initial': 10, + * 'maximum': 100 + * }); + * + * // Create a BLAS routine: + * var mod = new isamax.Module( mem ); + * // returns + * + * // Initialize the routine: + * mod.initializeSync(); + * + * // Define a vector data type: + * var dtype = 'float32'; + * + * // Specify a vector length: + * var N = 5; + * + * // Define pointer (i.e., byte offsets) for storing the input vector: + * var xptr = 0; + * + * // Write vector values to module memory: + * mod.write( xptr, oneTo( N, dtype ) ); + * + * // Perform computation: + * var idx = mod.main( N, xptr, 1 ); + * // returns 4 + */ + Module: ModuleConstructor; +} + +/** +* Finds the index of the first element having the maximum absolute value. +* +* @param N - number of indexed elements +* @param x - input array +* @param strideX - `x` stride length +* @returns index value +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0, -5.0, 4.0 ] ); +* +* var idx = isamax.main( x.length, x, 1 ); +* // returns 3 +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* +* var idx = isamax.ndarray( x.length, x, -1, 4 ); +* // returns 0 +*/ +declare var isamax: Routine; + + +// EXPORTS // + +export = isamax; diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts new file mode 100644 index 000000000000..18b2e62ccb8c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts @@ -0,0 +1,347 @@ +/* +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable space-in-parens */ + +import Memory = require( '@stdlib/wasm/memory' ); +import isamax = require( './index' ); + + +// TESTS // + +// Attached to the main export is a `main` method which returns a number... +{ + const x = new Float32Array( 10 ); + + isamax.main( x.length, x, 1 ); // $ExpectType number +} + +// The compiler throws an error if the `main` method is provided a first argument which is not a number... +{ + const x = new Float32Array( 10 ); + + isamax.main( '10', x, 1 ); // $ExpectError + isamax.main( true, x, 1 ); // $ExpectError + isamax.main( false, x, 1 ); // $ExpectError + isamax.main( null, x, 1 ); // $ExpectError + isamax.main( undefined, x, 1 ); // $ExpectError + isamax.main( [], x, 1 ); // $ExpectError + isamax.main( {}, x, 1 ); // $ExpectError + isamax.main( ( x: number ): number => x, x, 1 ); // $ExpectError +} + +// The compiler throws an error if the `main` method is provided a second argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + isamax.main( x.length, 10, 1 ); // $ExpectError + isamax.main( x.length, '10', 1 ); // $ExpectError + isamax.main( x.length, true, 1 ); // $ExpectError + isamax.main( x.length, false, 1 ); // $ExpectError + isamax.main( x.length, null, 1 ); // $ExpectError + isamax.main( x.length, undefined, 1 ); // $ExpectError + isamax.main( x.length, [], 1 ); // $ExpectError + isamax.main( x.length, {}, 1 ); // $ExpectError + isamax.main( x.length, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the `main` method is provided a third argument which is not a number... +{ + const x = new Float32Array( 10 ); + + isamax.main( x.length, x, '10' ); // $ExpectError + isamax.main( x.length, x, true ); // $ExpectError + isamax.main( x.length, x, false ); // $ExpectError + isamax.main( x.length, x, null ); // $ExpectError + isamax.main( x.length, x, undefined ); // $ExpectError + isamax.main( x.length, x, [] ); // $ExpectError + isamax.main( x.length, x, {} ); // $ExpectError + isamax.main( x.length, x, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `main` method is provided an unsupported number of arguments... +{ + const x = new Float32Array( 10 ); + + isamax.main(); // $ExpectError + isamax.main( x.length ); // $ExpectError + isamax.main( x.length, x ); // $ExpectError + isamax.main( x.length, x, 1, 10 ); // $ExpectError +} + +// Attached to main export is an `ndarray` method which returns a number... +{ + const x = new Float32Array( 10 ); + + isamax.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... +{ + const x = new Float32Array( 10 ); + + isamax.ndarray( '10', x, 1, 0 ); // $ExpectError + isamax.ndarray( true, x, 1, 0 ); // $ExpectError + isamax.ndarray( false, x, 1, 0 ); // $ExpectError + isamax.ndarray( null, x, 1, 0 ); // $ExpectError + isamax.ndarray( undefined, x, 1, 0 ); // $ExpectError + isamax.ndarray( [], x, 1, 0 ); // $ExpectError + isamax.ndarray( {}, x, 1, 0 ); // $ExpectError + isamax.ndarray( ( x: number ): number => x, x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method is provided a second argument which is not a Float32Array... +{ + const x = new Float32Array( 10 ); + + isamax.ndarray( x.length, 10, 1, 0 ); // $ExpectError + isamax.ndarray( x.length, '10', 1, 0 ); // $ExpectError + isamax.ndarray( x.length, true, 1, 0 ); // $ExpectError + isamax.ndarray( x.length, false, 1, 0 ); // $ExpectError + isamax.ndarray( x.length, null, 1, 0 ); // $ExpectError + isamax.ndarray( x.length, undefined, 1, 0 ); // $ExpectError + isamax.ndarray( x.length, [], 1, 0 ); // $ExpectError + isamax.ndarray( x.length, {}, 1, 0 ); // $ExpectError + isamax.ndarray( x.length, ( x: number ): number => 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 ); + + isamax.ndarray( x.length, x, '10', 0 ); // $ExpectError + isamax.ndarray( x.length, x, true, 0 ); // $ExpectError + isamax.ndarray( x.length, x, false, 0 ); // $ExpectError + isamax.ndarray( x.length, x, null, 0 ); // $ExpectError + isamax.ndarray( x.length, x, undefined, 0 ); // $ExpectError + isamax.ndarray( x.length, x, [], 0 ); // $ExpectError + isamax.ndarray( x.length, x, {}, 0 ); // $ExpectError + isamax.ndarray( x.length, x, ( x: number ): number => x, 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 ); + + isamax.ndarray( x.length, x, 1, '10' ); // $ExpectError + isamax.ndarray( x.length, x, 1, true ); // $ExpectError + isamax.ndarray( x.length, x, 1, false ); // $ExpectError + isamax.ndarray( x.length, x, 1, null ); // $ExpectError + isamax.ndarray( x.length, x, 1, undefined ); // $ExpectError + isamax.ndarray( x.length, x, 1, [] ); // $ExpectError + isamax.ndarray( x.length, x, 1, {} ); // $ExpectError + isamax.ndarray( x.length, 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 ); + + isamax.ndarray(); // $ExpectError + isamax.ndarray( x.length ); // $ExpectError + isamax.ndarray( x.length, x ); // $ExpectError + isamax.ndarray( x.length, x, 1 ); // $ExpectError + isamax.ndarray( x.length, x, 1, 0, 10 ); // $ExpectError +} + +// Attached to the main export is a `Module` constructor which returns a module... +{ + const mem = new Memory({ + 'initial': 0 + }); + + isamax.Module( mem ); // $ExpectType Module +} + +// The compiler throws an error if the `Module` constructor is not provided a WebAssembly memory instance... +{ + isamax.Module( '10' ); // $ExpectError + isamax.Module( true ); // $ExpectError + isamax.Module( false ); // $ExpectError + isamax.Module( null ); // $ExpectError + isamax.Module( undefined ); // $ExpectError + isamax.Module( [] ); // $ExpectError + isamax.Module( {} ); // $ExpectError + isamax.Module( ( x: number ): number => x ); // $ExpectError +} + +// The `Module` constructor returns a module instance having a `main` method which returns a number... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.main( 10, 0, 1 ); // $ExpectType number +} + +// The compiler throws an error if the `main` method of a module instance is provided a first argument which is not a number... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.main( '10', 0, 10 ); // $ExpectError + mod.main( true, 0, 10 ); // $ExpectError + mod.main( false, 0, 10 ); // $ExpectError + mod.main( null, 0, 10 ); // $ExpectError + mod.main( undefined, 0, 10 ); // $ExpectError + mod.main( [], 0, 10 ); // $ExpectError + mod.main( {}, 0, 10 ); // $ExpectError + mod.main( ( x: number ): number => x, 0, 10 ); // $ExpectError +} + +// The compiler throws an error if the `main` method of a module instance is provided a second argument which is not a number... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.main( 10, '10', 1 ); // $ExpectError + mod.main( 10, true, 1 ); // $ExpectError + mod.main( 10, false, 1 ); // $ExpectError + mod.main( 10, null, 1 ); // $ExpectError + mod.main( 10, undefined, 1 ); // $ExpectError + mod.main( 10, [], 1 ); // $ExpectError + mod.main( 10, {}, 1 ); // $ExpectError + mod.main( 10, ( x: number ): number => x, 1 ); // $ExpectError +} + +// The compiler throws an error if the `main` method of a module instance is provided a third argument which is not a number... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.main( 10, 0, '10' ); // $ExpectError + mod.main( 10, 0, true ); // $ExpectError + mod.main( 10, 0, false ); // $ExpectError + mod.main( 10, 0, null ); // $ExpectError + mod.main( 10, 0, undefined ); // $ExpectError + mod.main( 10, 0, [] ); // $ExpectError + mod.main( 10, 0, {} ); // $ExpectError + mod.main( 10, 0, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `main` method of a module instance is provided an unsupported number of arguments... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.main(); // $ExpectError + mod.main( 10 ); // $ExpectError + mod.main( 10, 0 ); // $ExpectError + mod.main( 10, 0, 1, 10 ); // $ExpectError +} + +// The `Module` constructor returns a module instance having an `ndarray` method which returns a number... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.ndarray( 10, 0, 1, 0 ); // $ExpectType number +} + +// The compiler throws an error if the `ndarray` method of a module instance is provided a first argument which is not a number... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.ndarray( '10', 0, 1, 0 ); // $ExpectError + mod.ndarray( true, 0, 1, 0 ); // $ExpectError + mod.ndarray( false, 0, 1, 0 ); // $ExpectError + mod.ndarray( null, 0, 1, 0 ); // $ExpectError + mod.ndarray( undefined, 0, 1, 0 ); // $ExpectError + mod.ndarray( [], 0, 1, 0 ); // $ExpectError + mod.ndarray( {}, 0, 1, 0 ); // $ExpectError + mod.ndarray( ( x: number ): number => x, 0, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method of a module instance is provided a second argument which is not a number... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.ndarray( 10, '10', 1, 0 ); // $ExpectError + mod.ndarray( 10, true, 1, 0 ); // $ExpectError + mod.ndarray( 10, false, 1, 0 ); // $ExpectError + mod.ndarray( 10, null, 1, 0 ); // $ExpectError + mod.ndarray( 10, undefined, 1, 0 ); // $ExpectError + mod.ndarray( 10, [], 1, 0 ); // $ExpectError + mod.ndarray( 10, {}, 1, 0 ); // $ExpectError + mod.ndarray( 10, ( x: number ): number => x, 1, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method of a module instance is provided a third argument which is not a number... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.ndarray( 10, 0, '10', 0 ); // $ExpectError + mod.ndarray( 10, 0, true, 0 ); // $ExpectError + mod.ndarray( 10, 0, false, 0 ); // $ExpectError + mod.ndarray( 10, 0, null, 0 ); // $ExpectError + mod.ndarray( 10, 0, undefined, 0 ); // $ExpectError + mod.ndarray( 10, 0, [], 0 ); // $ExpectError + mod.ndarray( 10, 0, {}, 0 ); // $ExpectError + mod.ndarray( 10, 0, ( x: number ): number => x, 0 ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method of a module instance is provided a fourth argument which is not a number... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.ndarray( 10, 0, 1, '10' ); // $ExpectError + mod.ndarray( 10, 0, 1, true ); // $ExpectError + mod.ndarray( 10, 0, 1, false ); // $ExpectError + mod.ndarray( 10, 0, 1, null ); // $ExpectError + mod.ndarray( 10, 0, 1, undefined ); // $ExpectError + mod.ndarray( 10, 0, 1, [] ); // $ExpectError + mod.ndarray( 10, 0, 1, {} ); // $ExpectError + mod.ndarray( 10, 0, 1, ( x: number ): number => x ); // $ExpectError +} + +// The compiler throws an error if the `ndarray` method of a module instance is provided an unsupported number of arguments... +{ + const mem = new Memory({ + 'initial': 1 + }); + const mod = isamax.Module( mem ); + + mod.ndarray(); // $ExpectError + mod.ndarray( 10 ); // $ExpectError + mod.ndarray( 10, 0 ); // $ExpectError + mod.ndarray( 10, 0, 1 ); // $ExpectError + mod.ndarray( 10, 0, 1, 0, 10 ); // $ExpectError +} diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js new file mode 100644 index 000000000000..a98192de124c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js @@ -0,0 +1,43 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); +var oneTo = require( '@stdlib/array/one-to' ); +var isamax = require( './../lib' ); + +function main() { + if ( !hasWebAssemblySupport() ) { + console.error( 'Environment does not support WebAssembly.' ); + return; + } + // Specify a vector length: + var N = 5; + + // Create an input array: + var x = oneTo( N, 'float32' ); + + // Perform computation: + var idx = isamax.ndarray( N, x, 1, 0 ); + + // Print the result: + console.log( idx ); +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js new file mode 100644 index 000000000000..fd39d19b163b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js @@ -0,0 +1,65 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); +var Memory = require( '@stdlib/wasm/memory' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var gfillBy = require( '@stdlib/blas/ext/base/gfill-by' ); +var Float32ArrayLE = require( '@stdlib/array/little-endian-float32' ); +var isamax = require( './../lib' ); + +function main() { + if ( !hasWebAssemblySupport() ) { + console.error( 'Environment does not support WebAssembly.' ); + return; + } + // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): + var mem = new Memory({ + 'initial': 10, + 'maximum': 100 + }); + + // Create a BLAS routine: + var mod = new isamax.Module( mem ); + // returns + + // Initialize the routine: + mod.initializeSync(); // eslint-disable-line node/no-sync + + // Specify a vector length: + var N = 5; + + // Define a pointer (i.e., byte offset) for storing an input vector: + var xptr = 0; + + // Create a typed array view over module memory: + var x = new Float32ArrayLE( mod.memory.buffer, xptr, N ); + + // Write values to module memory: + gfillBy( N, x, 1, discreteUniform( -10.0, 10.0 ) ); + + // Perform computation: + var idx = mod.ndarray( N, xptr, 1, 0 ); + + // Print the result: + console.log( idx ); +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js new file mode 100644 index 000000000000..0a75d7085b12 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js @@ -0,0 +1,63 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); +var Memory = require( '@stdlib/wasm/memory' ); +var oneTo = require( '@stdlib/array/one-to' ); +var isamax = require( './../lib' ); + +function main() { + if ( !hasWebAssemblySupport() ) { + console.error( 'Environment does not support WebAssembly.' ); + return; + } + // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): + var mem = new Memory({ + 'initial': 10, + 'maximum': 100 + }); + + // Create a BLAS routine: + var mod = new isamax.Module( mem ); + // returns + + // Initialize the routine: + mod.initializeSync(); // eslint-disable-line node/no-sync + + // Define a vector data type: + var dtype = 'float32'; + + // Specify a vector length: + var N = 5; + + // Define a pointer (i.e., byte offset) for storing the input vector: + var xptr = 0; + + // Write vector values to module memory: + mod.write( xptr, oneTo( N, dtype ) ); + + // Perform computation: + var idx = mod.ndarray( N, xptr, 1, 0 ); + + // Print the result: + console.log( idx ); +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js new file mode 100644 index 000000000000..b240e1697746 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js @@ -0,0 +1,33 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var base64ToUint8Array = require( '@stdlib/string/base/base64-to-uint8array' ); + + +// MAIN // + +var wasm = base64ToUint8Array( 'AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAETA2AAAGADf39/AX9gBH9/f38BfwIPAQNlbnYGbWVtb3J5AgAAAwQDAAECB04EEV9fd2FzbV9jYWxsX2N0b3JzAAAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAIY19pc2FtYXgAARBjX2lzYW1heF9uZGFycmF5AAIKkwEDAwABCxoAIAAgASACQQEgAGsgAmxBACACQQBMGxACC3ICA38CfQJAIABBAEwEQEF/IQQMAQsgAEEBRgRAQQAPCyABIANBAnRqKgIAiyEHQQEhBQNAIAAgBUYNASABIAIgA2oiA0ECdGoqAgCLIgggByAHIAhdIgYbIQcgBSAEIAYbIQQgBUEBaiEFDAALAAsgBAs=' ); + + +// EXPORTS // + +module.exports = wasm; diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js new file mode 100644 index 000000000000..6f02393f96e5 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js @@ -0,0 +1,34 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var readWASM = require( '@stdlib/fs/read-wasm' ).sync; + + +// MAIN // + +var wasm = readWASM( resolve( __dirname, '..', 'src', 'main.wasm' ) ); + + +// EXPORTS // + +module.exports = wasm; diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js new file mode 100644 index 000000000000..e604717792ea --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js @@ -0,0 +1,99 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* WebAssembly routine to find the index of the first element having the maximum absolute value. +* +* @module @stdlib/blas/base/isamax-wasm +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var isamax = require( '@stdlib/blas/base/isamax-wasm' ); +* +* // Define a strided array: +* var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); +* +* // Perform operation: +* var idx = isamax.main( x.length, x, 1 ); +* // returns 3 +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* var isamax = require( '@stdlib/blas/base/isamax-wasm' ); +* +* // Define a strided array: +* var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); +* +* // Perform operation: +* var idx = isamax.ndarray( x.length, x, 1, 0 ); +* // returns 3 +* +* @example +* var Memory = require( '@stdlib/wasm/memory' ); +* var oneTo = require( '@stdlib/array/one-to' ); +* var isamax = require( '@stdlib/blas/base/isamax-wasm' ); +* +* // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): +* var mem = new Memory({ +* 'initial': 10, +* 'maximum': 100 +* }); +* +* // Create a BLAS routine: +* var mod = new isamax.Module( mem ); +* // returns +* +* // Initialize the routine: +* mod.initializeSync(); +* +* // Define a vector data type: +* var dtype = 'float32'; +* +* // Specify a vector length: +* var N = 5; +* +* // Define a pointer (i.e., byte offset) to the first vector element: +* var xptr = 0; +* +* // Write vector values to module memory: +* mod.write( xptr, oneTo( N, dtype ) ); +* +* // Perform computation: +* var idx = mod.main( N, xptr, 1 ); +* // returns 4 +*/ + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var main = require( './main.js' ); +var Module = require( './module.js' ); + + +// MAIN // + +setReadOnly( main, 'Module', Module ); + + +// EXPORTS // + +module.exports = main; + +// exports: { "Module": "main.Module" } diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js new file mode 100644 index 000000000000..5a5a82005b27 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js @@ -0,0 +1,60 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var Routine = require( './routine.js' ); + + +// MAIN // + +/** +* WebAssembly module to find the index of the first element having the maximum absolute value. +* +* @name isamax +* @type {Routine} +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* // Define a strided array: +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* +* // Perform operation: +* var idx = isamax.main( x.length, x, 1 ); +* // returns 4 +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* // Define a strided array: +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] ); +* +* // Perform operation: +* var idx = isamax.ndarray( x.length, x, 1, 0 ); +* // returns 4 +*/ +var isamax = new Routine(); +isamax.initializeSync(); // eslint-disable-line node/no-sync + + +// EXPORTS // + +module.exports = isamax; diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js new file mode 100644 index 000000000000..c64afe443fa7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js @@ -0,0 +1,198 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable no-restricted-syntax, no-invalid-this */ + +'use strict'; + +// MODULES // + +var isWebAssemblyMemory = require( '@stdlib/assert/is-wasm-memory' ); +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var inherits = require( '@stdlib/utils/inherit' ); +var WasmModule = require( '@stdlib/wasm/module-wrapper' ); +var format = require( '@stdlib/string/format' ); +var wasmBinary = require( './binary.js' ); + + +// MAIN // + +/** +* BLAS routine WebAssembly module wrapper constructor. +* +* @constructor +* @param {Object} memory - WebAssembly memory instance +* @throws {TypeError} must provide a WebAssembly memory instance +* @returns {Module} module instance +* +* @example +* var Memory = require( '@stdlib/wasm/memory' ); +* var oneTo = require( '@stdlib/array/one-to' ); +* +* // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): +* var mem = new Memory({ +* 'initial': 10, +* 'maximum': 100 +* }); +* +* // Create a BLAS routine: +* var isamax = new Module( mem ); +* // returns +* +* // Initialize the routine: +* isamax.initializeSync(); +* +* // Define a vector data type: +* var dtype = 'float32'; +* +* // Specify a vector length: +* var N = 5; +* +* // Define a pointer (i.e., byte offset) to the first vector element: +* var xptr = 0; +* +* // Write vector values to module memory: +* isamax.write( xptr, oneTo( N, dtype ) ); +* +* // Perform computation: +* var idx = isamax.main( N, xptr, 1 ); +* // returns 4 +*/ +function Module( memory ) { + if ( !( this instanceof Module ) ) { + return new Module( memory ); + } + if ( !isWebAssemblyMemory( memory ) ) { + throw new TypeError( format( 'invalid argument. Must provide a WebAssembly memory instance. Value: `%s`.', memory ) ); + } + // Call the parent constructor: + WasmModule.call( this, wasmBinary, memory, { + 'env': { + 'memory': memory + } + }); + + return this; +} + +// Inherit from the parent constructor: +inherits( Module, WasmModule ); + +/** +* Finds the index of the first element having the maximum absolute value. +* +* @name main +* @memberof Module.prototype +* @readonly +* @type {Function} +* @param {PositiveInteger} N - number of indexed elements +* @param {NonNegativeInteger} xptr - input array pointer (i.e., byte offset) +* @param {integer} strideX - `x` stride length +* @returns {integer} index value +* +* @example +* var Memory = require( '@stdlib/wasm/memory' ); +* var oneTo = require( '@stdlib/array/one-to' ); +* +* // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): +* var mem = new Memory({ +* 'initial': 10, +* 'maximum': 100 +* }); +* +* // Create a BLAS routine: +* var isamax = new Module( mem ); +* // returns +* +* // Initialize the routine: +* isamax.initializeSync(); +* +* // Define a vector data type: +* var dtype = 'float32'; +* +* // Specify a vector length: +* var N = 5; +* +* // Define a pointer (i.e., byte offset) to the first vector element: +* var xptr = 0; +* +* // Write vector values to module memory: +* isamax.write( xptr, oneTo( N, dtype ) ); +* +* // Perform computation: +* var idx = isamax.main( N, xptr, 1 ); +* // returns 4 +*/ +setReadOnly( Module.prototype, 'main', function isamax( N, xptr, strideX ) { + return this._instance.exports.c_isamax( N, xptr, strideX ); +}); + +/** +* Finds the index of the first element having the maximum absolute value using alternative indexing semantics. +* +* @name ndarray +* @memberof Module.prototype +* @readonly +* @type {Function} +* @param {PositiveInteger} N - number of indexed elements +* @param {NonNegativeInteger} xptr - input array pointer (i.e., byte offset) +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @returns {integer} index value +* +* @example +* var Memory = require( '@stdlib/wasm/memory' ); +* var oneTo = require( '@stdlib/array/one-to' ); +* +* // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): +* var mem = new Memory({ +* 'initial': 10, +* 'maximum': 100 +* }); +* +* // Create a BLAS routine: +* var isamax = new Module( mem ); +* // returns +* +* // Initialize the routine: +* isamax.initializeSync(); +* +* // Define a vector data type: +* var dtype = 'float32'; +* +* // Specify a vector length: +* var N = 5; +* +* // Define a pointer (i.e., byte offset) to the first vector element: +* var xptr = 0; +* +* // Write vector values to module memory: +* isamax.write( xptr, oneTo( N, dtype ) ); +* +* // Perform computation: +* var idx = isamax.ndarray( N, xptr, 1, 0 ); +* // returns 4 +*/ +setReadOnly( Module.prototype, 'ndarray', function isamax( N, xptr, strideX, offsetX ) { + return this._instance.exports.c_isamax_ndarray( N, xptr, strideX, offsetX ); +}); + + +// EXPORTS // + +module.exports = Module; diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js new file mode 100644 index 000000000000..6ae08810e3d7 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js @@ -0,0 +1,166 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* eslint-disable no-restricted-syntax, no-invalid-this */ + +'use strict'; + +// MODULES // + +var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); +var inherits = require( '@stdlib/utils/inherit' ); +var stride2offset = require( '@stdlib/strided/base/stride2offset' ); +var Memory = require( '@stdlib/wasm/memory' ); +var arrays2ptrs = require( '@stdlib/wasm/base/arrays2ptrs' ); +var strided2object = require( '@stdlib/wasm/base/strided2object' ); +var Module = require( './module.js' ); + + +// MAIN // + +/** +* Routine constructor. +* +* @private +* @constructor +* @returns {Routine} routine instance +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* // Create a new routine: +* var isamax = new Routine(); +* +* // Initialize the module: +* isamax.initializeSync(); +* +* // Define a strided array: +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, -5.0 ] ); +* +* // Perform operation: +* var idx = isamax.main( x.length, x, 1 ); +* // returns 4 +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* // Create a new routine: +* var isamax = new Routine(); +* +* // Initialize the module: +* isamax.initializeSync(); +* +* // Define a strided array: +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, -5.0 ] ); +* +* // Perform operation: +* var idx = isamax.ndarray( x.length, x, 1, 0 ); +* // returns 4 +*/ +function Routine() { + if ( !( this instanceof Routine ) ) { + return new Routine(); + } + Module.call( this, new Memory({ + 'initial': 0 + })); + return this; +} + +// Inherit from the parent constructor: +inherits( Routine, Module ); + +/** +* Finds the index of the first element having the maximum absolute value. +* +* @name main +* @memberof Routine.prototype +* @readonly +* @type {Function} +* @param {PositiveInteger} N - number of indexed elements +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @returns {integer} index value +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* // Create a new routine: +* var isamax = new Routine(); +* +* // Initialize the module: +* isamax.initializeSync(); +* +* // Define a strided array: +* var x = new Float32Array( [ 1.0, 2.0, 3.0, 4.0, -5.0 ] ); +* +* // Perform operation: +* var idx = isamax.main( x.length, x, 1 ); +* // returns 4 +*/ +setReadOnly( Routine.prototype, 'main', function isamax( N, x, strideX ) { + return this.ndarray( N, x, strideX, stride2offset( N, strideX ) ); +}); + +/** +* Finds the index of the first element having the maximum absolute value using alternative indexing semantics. +* +* @name ndarray +* @memberof Routine.prototype +* @readonly +* @type {Function} +* @param {PositiveInteger} N - number of indexed elements +* @param {Float32Array} x - input array +* @param {integer} strideX - `x` stride length +* @param {NonNegativeInteger} offsetX - starting index for `x` +* @returns {integer} index value +* +* @example +* var Float32Array = require( '@stdlib/array/float32' ); +* +* // Create a new routine: +* var isamax = new Routine(); +* +* // Initialize the module: +* isamax.initializeSync(); +* +* // Define a strided array: +* var x = new Float32Array( [ 1.0, 2.0, -3.0, 4.0, -5.0 ] ); +* +* // Perform operation: +* var idx = isamax.ndarray( x.length, x, 1, 0 ); +* // returns 4 +*/ +setReadOnly( Routine.prototype, 'ndarray', function isamax( N, x, strideX, offsetX ) { + var ptrs; + var p0; + + // Convert the input array to "pointers" in the module's memory: + ptrs = arrays2ptrs( this, [ + strided2object( N, x, strideX, offsetX ) + ]); + p0 = ptrs[ 0 ]; + + // Perform computation by calling the corresponding parent method: + return Module.prototype.ndarray.call( this, N, p0.ptr, p0.stride, p0.offset ); // eslint-disable-line max-len +}); + + +// EXPORTS // + +module.exports = Routine; diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/manifest.json b/lib/node_modules/@stdlib/blas/base/isamax-wasm/manifest.json new file mode 100644 index 000000000000..5802c169051d --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/manifest.json @@ -0,0 +1,36 @@ +{ + "options": {}, + "fields": [ + { + "field": "src", + "resolve": true, + "relative": true + }, + { + "field": "include", + "resolve": true, + "relative": true + }, + { + "field": "libraries", + "resolve": false, + "relative": false + }, + { + "field": "libpath", + "resolve": true, + "relative": false + } + ], + "confs": [ + { + "src": [], + "include": [], + "libraries": [], + "libpath": [], + "dependencies": [ + "@stdlib/blas/base/isamax" + ] + } + ] +} diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/package.json b/lib/node_modules/@stdlib/blas/base/isamax-wasm/package.json new file mode 100644 index 000000000000..c53e74701907 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/package.json @@ -0,0 +1,84 @@ +{ + "name": "@stdlib/blas/base/isamax-wasm", + "version": "0.0.0", + "description": "Find the index of the first element having the maximum absolute value.", + "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/binary.js": "./lib/binary.browser.js" + }, + "directories": { + "benchmark": "./benchmark", + "doc": "./docs", + "example": "./examples", + "lib": "./lib", + "scripts": "./scripts", + "src": "./src", + "test": "./test" + }, + "types": "./docs/types", + "scripts": {}, + "homepage": "https://github.com/stdlib-js/stdlib", + "repository": { + "type": "git", + "url": "git://github.com/stdlib-js/stdlib.git" + }, + "bugs": { + "url": "https://github.com/stdlib-js/stdlib/issues" + }, + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.10.0", + "npm": ">2.7.0" + }, + "os": [ + "aix", + "darwin", + "freebsd", + "linux", + "macos", + "openbsd", + "sunos", + "win32", + "windows" + ], + "keywords": [ + "stdlib", + "stdmath", + "mathematics", + "math", + "blas", + "level 1", + "isamax", + "maximum", + "abs", + "absolute", + "find", + "index", + "linear", + "algebra", + "subroutines", + "vector", + "array", + "ndarray", + "float32", + "single", + "float32array", + "webassembly", + "wasm" + ], + "__stdlib__": { + "wasm": true + } +} diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js new file mode 100644 index 000000000000..348354d7029c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js @@ -0,0 +1,63 @@ +#!/usr/bin/env node + +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var resolve = require( 'path' ).resolve; +var readFile = require( '@stdlib/fs/read-file' ).sync; +var writeFile = require( '@stdlib/fs/write-file' ).sync; +var replace = require( '@stdlib/string/replace' ); + + +// VARIABLES // + +var wpath = resolve( __dirname, '..', 'src', 'main.wasm' ); +var tpath = resolve( __dirname, 'template.txt' ); +var opath = resolve( __dirname, '..', 'lib', 'binary.browser.js' ); + +var opts = { + 'encoding': 'utf8' +}; + +var PLACEHOLDER = '{{WASM_BASE64}}'; + + +// MAIN // + +/** +* Main execution sequence. +* +* @private +*/ +function main() { + var wasm; + var tmpl; + + wasm = readFile( wpath ); + tmpl = readFile( tpath, opts ); + + tmpl = replace( tmpl, PLACEHOLDER, wasm.toString( 'base64' ) ); + + writeFile( opath, tmpl, opts ); +} + +main(); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt b/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt new file mode 100644 index 000000000000..12996dd89e3b --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt @@ -0,0 +1,33 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var base64ToUint8Array = require( '@stdlib/string/base/base64-to-uint8array' ); + + +// MAIN // + +var wasm = base64ToUint8Array( '{{WASM_BASE64}}' ); + + +// EXPORTS // + +module.exports = wasm; diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile b/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile new file mode 100644 index 000000000000..eb51121eec4c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile @@ -0,0 +1,243 @@ +#/ +# @license Apache-2.0 +# +# Copyright (c) 2024 The Stdlib Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#/ + +#/ +# To compile targets listed in this Makefile, use top-level project `make` +# commands rather than commands listed in this Makefile. The top-level project +# `make` commands will ensure that various environment variables and flags are +# appropriately set. +#/ + +# 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 to WebAssembly: +ifdef EMCC_COMPILER + EMCC := $(EMCC_COMPILER) +else + EMCC := emcc +endif + +# Define the program used for compiling WebAssembly files to the WebAssembly text format: +ifdef WASM2WAT + WASM_TO_WAT := $(WASM2WAT) +else + WASM_TO_WAT := wasm2wat +endif + +# Define the program used for compiling WebAssembly files to JavaScript: +ifdef WASM2JS + WASM_TO_JS := $(WASM2JS) +else + WASM_TO_JS := wasm2js +endif + +# Define the path to the Node.js executable: +ifdef NODE + NODEJS := $(NODE) +else + NODEJS := node +endif + +# Define the integer size: +ifdef CBLAS_INT + INT_TYPE := $(CBLAS_INT) +else + INT_TYPE := int32_t +endif + +# Define the command-line options when compiling C files: +CFLAGS ?= \ + -std=c99 \ + -O3 \ + -flto \ + -Wall \ + -pedantic \ + -D CBLAS_INT=$(INT_TYPE) + +# Define the command-line options when compiling C files to WebAssembly and asm.js: +EMCCFLAGS ?= $(CFLAGS) + +# Define shared `emcc` flags: +EMCC_SHARED_FLAGS := \ + -Oz \ + -fwasm-exceptions \ + -s SUPPORT_LONGJMP=1 \ + -s SIDE_MODULE=2 \ + -s EXPORTED_FUNCTIONS="$(shell cat exports.json | tr -d ' \t\n' | sed s/\"/\'/g)" + +# Define WebAssembly `emcc` flags: +EMCC_WASM_FLAGS := $(EMCC_SHARED_FLAGS) \ + -s WASM=1 \ + -s WASM_BIGINT=0 + +# 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 WebAssembly targets: +wasm_targets := main.wasm + +# List of WebAssembly WAT targets: +wat_targets := main.wat + +# List of WebAssembly JavaScript targets: +wasm_js_targets := main.wasm.js + +# List of other JavaScript targets: +browser_js_targets := ./../lib/binary.browser.js + + +# RULES # + +#/ +# Compiles source files. +# +# @param {string} [EMCC_COMPILER] - EMCC compiler (e.g., `emcc`) +# @param {string} [EMCCFLAGS] - EMCC compiler options +# @param {string} [WASM2WAT] - WebAssembly text format compiler (e.g., `wasm2wat`) +# @param {string} [WASM2JS] - WebAssembly JavaScript compiler (e.g., `wasm2js`) +# @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: wasm + +.PHONY: all + +#/ +# Compiles source files to WebAssembly. +# +# @param {string} [EMCC_COMPILER] - EMCC compiler (e.g., `emcc`) +# @param {string} [EMCCFLAGS] - EMCC compiler options +# @param {string} [WASM2WAT] - WebAssembly text format compiler (e.g., `wasm2wat`) +# @param {string} [WASM2JS] - WebAssembly JavaScript compiler (e.g., `wasm2js`) +# @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 wasm +#/ +wasm: $(wasm_targets) $(wat_targets) $(browser_js_targets) + +.PHONY: wasm + +#/ +# Compiles C source files to WebAssembly binaries. +# +# @private +# @param {string} EMCC - EMCC compiler (e.g., `emcc`) +# @param {string} EMCCFLAGS - EMCC compiler options +# @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`) +#/ +$(wasm_targets): + $(QUIET) $(EMCC) $(EMCCFLAGS) $(EMCC_WASM_FLAGS) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) $(LIBRARIES) + +#/ +# Compiles WebAssembly binary files to the WebAssembly text format. +# +# @private +# @param {string} WASM2WAT - WAT compiler (e.g., `wasm2wat`) +#/ +$(wat_targets): %.wat: %.wasm + $(QUIET) $(WASM_TO_WAT) -o $@ $(wasm_targets) + +#/ +# Compiles WebAssembly binary files to JavaScript. +# +# @private +# @param {string} WASM2JS - JavaScript compiler (e.g., `wasm2js`) +#/ +$(wasm_js_targets): %.wasm.js: %.wasm + $(QUIET) $(WASM_TO_JS) -o $@ $(wasm_targets) + +#/ +# Generates an inline WebAssembly build for use in bundlers. +# +# @private +# @param {string} NODE - Node.js executable +#/ +$(browser_js_targets): $(wasm_targets) + $(QUIET) $(NODEJS) ./../scripts/build.js + +#/ +# Removes generated WebAssembly files. +# +# @example +# make clean-wasm +#/ +clean-wasm: + $(QUIET) -rm -f *.wasm *.wat *.wasm.js $(browser_js_targets) + +.PHONY: clean-wasm + +#/ +# Removes generated files. +# +# @example +# make clean +#/ +clean: clean-wasm + +.PHONY: clean diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/exports.json b/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/exports.json new file mode 100644 index 000000000000..25a20aa7d89c --- /dev/null +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/exports.json @@ -0,0 +1,4 @@ +[ + "_c_isamax", + "_c_isamax_ndarray" +] diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wasm b/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wasm new file mode 100755 index 0000000000000000000000000000000000000000..ca90ba228c603d376a255c01e0322dc1d5244297 GIT binary patch literal 299 zcmX|3y-veG47PojCgO@x#DeJJWMn`*LT~AWcms4fB^jC~O?8QY4Co$!kr&350DJiU z><|1jAjsrdv-F44@$m`uMdPii04fz@#8_zoLCR6Jr?=J64r5pdKxqX?>5IN`?p>-} z?fc%<^B5+8yI;?r&;8;WKYJJ2eykXMkb34 zN2cC_aCqKs$OKZ6K554whThp&=rtNqxEBSvkw0Z=?j8ufiqv9}C^_b2e~p()R$cj@ cml>zB*=xDl7AYsJS%~JuVpk+ Date: Tue, 17 Dec 2024 18:34:10 +0530 Subject: [PATCH 2/6] docs: update description --- .../@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts index 785535739ef1..f45b7a0affd6 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts @@ -55,7 +55,7 @@ interface ModuleConstructor { * // Specify a vector length: * var N = 5; * - * // Define pointer (i.e., byte offsets) for storing two vectors: + * // Define pointer (i.e., byte offsets) for storing the input vector: * var xptr = 0; * * // Write vector values to module memory: @@ -96,7 +96,7 @@ interface ModuleConstructor { * // Specify a vector length: * var N = 5; * - * // Define pointer (i.e., byte offsets) for storing two vectors: + * // Define pointer (i.e., byte offsets) for storing the input vector: * var xptr = 0; * * // Write vector values to module memory: From 2237fedd928c26a8bbc8921c4200f5d497c10a98 Mon Sep 17 00:00:00 2001 From: stdlib-bot <82920195+stdlib-bot@users.noreply.github.com> Date: Fri, 7 Feb 2025 10:40:13 +0000 Subject: [PATCH 3/6] chore: update copyright years --- lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md | 2 +- .../@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js | 2 +- .../@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js | 2 +- .../blas/base/isamax-wasm/benchmark/benchmark.module.main.js | 2 +- .../blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js | 2 +- .../blas/base/isamax-wasm/benchmark/benchmark.ndarray.js | 2 +- .../@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts | 2 +- .../@stdlib/blas/base/isamax-wasm/docs/types/test.ts | 2 +- .../@stdlib/blas/base/isamax-wasm/examples/index.js | 2 +- .../blas/base/isamax-wasm/examples/little_endian_arrays.js | 2 +- .../@stdlib/blas/base/isamax-wasm/examples/module.js | 2 +- .../@stdlib/blas/base/isamax-wasm/lib/binary.browser.js | 2 +- lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js | 2 +- lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js | 2 +- lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js | 2 +- lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js | 2 +- lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js | 2 +- lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js | 2 +- .../@stdlib/blas/base/isamax-wasm/scripts/template.txt | 2 +- lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile | 2 +- lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wat | 2 +- lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.js | 2 +- .../@stdlib/blas/base/isamax-wasm/test/test.main.js | 2 +- .../@stdlib/blas/base/isamax-wasm/test/test.module.js | 2 +- .../@stdlib/blas/base/isamax-wasm/test/test.module.main.js | 2 +- .../@stdlib/blas/base/isamax-wasm/test/test.module.ndarray.js | 2 +- .../@stdlib/blas/base/isamax-wasm/test/test.ndarray.js | 2 +- .../@stdlib/blas/base/isamax-wasm/test/test.routine.js | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md b/lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md index ed77f37bbe70..9f7515edad30 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md @@ -2,7 +2,7 @@ @license Apache-2.0 -Copyright (c) 2024 The Stdlib Authors. +Copyright (c) 2025 The Stdlib Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js index 71a6f7110a95..d00ed48ba6d9 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js index 4c0fd897728c..82b4db3d09e3 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js index fc82a029937f..4a982d2e1873 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js index db611f268d0e..864ae05f1a0a 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js index 552f8a21e4ea..1f287209c726 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts index f45b7a0affd6..f8c3daecfe1d 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts @@ -1,7 +1,7 @@ /* * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts index 18b2e62ccb8c..6862160b0734 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts @@ -1,7 +1,7 @@ /* * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js index a98192de124c..0082179929a0 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js index fd39d19b163b..696f208b7f46 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js index 0a75d7085b12..816c542ed4ec 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js index b240e1697746..5611e3a70ab5 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js index 6f02393f96e5..2b83fe651780 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js index e604717792ea..968e90964065 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js index 5a5a82005b27..8439f2adbce8 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js index c64afe443fa7..5d62ab803239 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js index 6ae08810e3d7..072f09e44258 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js index 348354d7029c..9a7b4afb94bd 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js @@ -3,7 +3,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt b/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt index 12996dd89e3b..554d4b2abe02 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile b/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile index eb51121eec4c..1b1f35347760 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile @@ -1,7 +1,7 @@ #/ # @license Apache-2.0 # -# Copyright (c) 2024 The Stdlib Authors. +# Copyright (c) 2025 The Stdlib Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wat b/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wat index d3553d02a2c4..078e9561758c 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wat +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wat @@ -1,6 +1,6 @@ ;; @license Apache-2.0 ;; -;; Copyright (c) 2024 The Stdlib Authors. +;; Copyright (c) 2025 The Stdlib Authors. ;; ;; Licensed under the Apache License, Version 2.0 (the "License"); ;; you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.js index f244856bac4d..72d7e308bd0d 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.main.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.main.js index d6d855bc58ff..2f982896f78b 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.main.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.main.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.js index 9adcb07e22fa..0cdcd97ef151 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.main.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.main.js index 6132ad656dde..2e025fa0dfd3 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.main.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.main.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.ndarray.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.ndarray.js index 3311d06fda71..df0c4d22d516 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.ndarray.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.ndarray.js index 882d2e585f97..9505aaf6690d 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.ndarray.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.routine.js b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.routine.js index 56a4b67daaf0..d90a5804a8e1 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.routine.js +++ b/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.routine.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2024 The Stdlib Authors. +* Copyright (c) 2025 The Stdlib Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 96684a1b2ba8ff4987d41afc3ab8fd3ff249e706 Mon Sep 17 00:00:00 2001 From: aman-095 Date: Fri, 7 Feb 2025 17:08:47 +0530 Subject: [PATCH 4/6] refactor: update path and name --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: passed - task: lint_repl_help status: passed - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: passed - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: passed - task: lint_license_headers status: passed --- --- type: pre_push_report description: Results of running various checks prior to pushing changes. report: - task: run_javascript_examples status: passed - task: run_c_examples status: na - task: run_cpp_examples status: na - task: run_javascript_readme_examples status: passed - task: run_c_benchmarks status: na - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: passed - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: passed --- --- .../base/{isamax-wasm => wasm/isamax}/README.md | 4 ++-- .../isamax}/benchmark/benchmark.js | 0 .../isamax}/benchmark/benchmark.module.js | 0 .../isamax}/benchmark/benchmark.module.main.js | 0 .../isamax}/benchmark/benchmark.module.ndarray.js | 0 .../isamax}/benchmark/benchmark.ndarray.js | 0 .../base/{isamax-wasm => wasm/isamax}/docs/repl.txt | 0 .../isamax}/docs/types/index.d.ts | 0 .../{isamax-wasm => wasm/isamax}/docs/types/test.ts | 0 .../{isamax-wasm => wasm/isamax}/examples/index.js | 0 .../isamax}/examples/little_endian_arrays.js | 0 .../{isamax-wasm => wasm/isamax}/examples/module.js | 0 .../isamax}/lib/binary.browser.js | 0 .../base/{isamax-wasm => wasm/isamax}/lib/binary.js | 0 .../base/{isamax-wasm => wasm/isamax}/lib/index.js | 8 ++++---- .../base/{isamax-wasm => wasm/isamax}/lib/main.js | 0 .../base/{isamax-wasm => wasm/isamax}/lib/module.js | 0 .../{isamax-wasm => wasm/isamax}/lib/routine.js | 0 .../base/{isamax-wasm => wasm/isamax}/manifest.json | 0 .../base/{isamax-wasm => wasm/isamax}/package.json | 2 +- .../{isamax-wasm => wasm/isamax}/scripts/build.js | 0 .../isamax}/scripts/template.txt | 0 .../base/{isamax-wasm => wasm/isamax}/src/Makefile | 0 .../{isamax-wasm => wasm/isamax}/src/exports.json | 0 .../base/{isamax-wasm => wasm/isamax}/src/main.wasm | Bin .../base/{isamax-wasm => wasm/isamax}/src/main.wat | 2 +- .../base/{isamax-wasm => wasm/isamax}/test/test.js | 0 .../{isamax-wasm => wasm/isamax}/test/test.main.js | 12 ++++++------ .../isamax}/test/test.module.js | 0 .../isamax}/test/test.module.main.js | 0 .../isamax}/test/test.module.ndarray.js | 0 .../isamax}/test/test.ndarray.js | 12 ++++++------ .../isamax}/test/test.routine.js | 0 33 files changed, 20 insertions(+), 20 deletions(-) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/README.md (98%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/benchmark/benchmark.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/benchmark/benchmark.module.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/benchmark/benchmark.module.main.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/benchmark/benchmark.module.ndarray.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/benchmark/benchmark.ndarray.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/docs/repl.txt (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/docs/types/index.d.ts (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/docs/types/test.ts (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/examples/index.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/examples/little_endian_arrays.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/examples/module.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/lib/binary.browser.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/lib/binary.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/lib/index.js (91%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/lib/main.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/lib/module.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/lib/routine.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/manifest.json (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/package.json (97%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/scripts/build.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/scripts/template.txt (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/src/Makefile (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/src/exports.json (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/src/main.wasm (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/src/main.wat (98%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/test/test.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/test/test.main.js (97%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/test/test.module.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/test/test.module.main.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/test/test.module.ndarray.js (100%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/test/test.ndarray.js (97%) rename lib/node_modules/@stdlib/blas/base/{isamax-wasm => wasm/isamax}/test/test.routine.js (100%) diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md b/lib/node_modules/@stdlib/blas/base/wasm/isamax/README.md similarity index 98% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/README.md index 9f7515edad30..cec244a05996 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/README.md +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/README.md @@ -27,7 +27,7 @@ limitations under the License. ## Usage ```javascript -var isamax = require( '@stdlib/blas/base/isamax-wasm' ); +var isamax = require( '@stdlib/blas/base/wasm/isamax' ); ``` #### isamax.main( N, x, strideX ) @@ -251,7 +251,7 @@ The function has the following additional parameters: ```javascript var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); -var isamax = require( '@stdlib/blas/base/isamax-wasm' ); +var isamax = require( '@stdlib/blas/base/wasm/isamax' ); var opts = { 'dtype': 'float32' diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.main.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.main.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.main.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.ndarray.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.module.ndarray.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.ndarray.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.ndarray.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/benchmark/benchmark.ndarray.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.ndarray.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/repl.txt b/lib/node_modules/@stdlib/blas/base/wasm/isamax/docs/repl.txt similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/repl.txt rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/docs/repl.txt diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts b/lib/node_modules/@stdlib/blas/base/wasm/isamax/docs/types/index.d.ts similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/index.d.ts rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/docs/types/index.d.ts diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts b/lib/node_modules/@stdlib/blas/base/wasm/isamax/docs/types/test.ts similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/docs/types/test.ts rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/docs/types/test.ts diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/examples/index.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/index.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/examples/index.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/examples/little_endian_arrays.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/little_endian_arrays.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/examples/little_endian_arrays.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/examples/module.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/examples/module.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/examples/module.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/binary.browser.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.browser.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/binary.browser.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/binary.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/binary.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/binary.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/index.js similarity index 91% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/index.js index 968e90964065..8e2c77f32cb8 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/index.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/index.js @@ -21,11 +21,11 @@ /** * WebAssembly routine to find the index of the first element having the maximum absolute value. * -* @module @stdlib/blas/base/isamax-wasm +* @module @stdlib/blas/base/wasm/isamax * * @example * var Float32Array = require( '@stdlib/array/float32' ); -* var isamax = require( '@stdlib/blas/base/isamax-wasm' ); +* var isamax = require( '@stdlib/blas/base/wasm/isamax' ); * * // Define a strided array: * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); @@ -36,7 +36,7 @@ * * @example * var Float32Array = require( '@stdlib/array/float32' ); -* var isamax = require( '@stdlib/blas/base/isamax-wasm' ); +* var isamax = require( '@stdlib/blas/base/wasm/isamax' ); * * // Define a strided array: * var x = new Float32Array( [ -2.0, 1.0, 3.0, -5.0, 4.0, 0.0, -1.0, -3.0 ] ); @@ -48,7 +48,7 @@ * @example * var Memory = require( '@stdlib/wasm/memory' ); * var oneTo = require( '@stdlib/array/one-to' ); -* var isamax = require( '@stdlib/blas/base/isamax-wasm' ); +* var isamax = require( '@stdlib/blas/base/wasm/isamax' ); * * // Create a new memory instance with an initial size of 10 pages (640KiB) and a maximum size of 100 pages (6.4MiB): * var mem = new Memory({ diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/main.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/main.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/main.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/module.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/module.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/module.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/routine.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/lib/routine.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/lib/routine.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/manifest.json b/lib/node_modules/@stdlib/blas/base/wasm/isamax/manifest.json similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/manifest.json rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/manifest.json diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/package.json b/lib/node_modules/@stdlib/blas/base/wasm/isamax/package.json similarity index 97% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/package.json rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/package.json index c53e74701907..fe197d095d0d 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/package.json +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/package.json @@ -1,5 +1,5 @@ { - "name": "@stdlib/blas/base/isamax-wasm", + "name": "@stdlib/blas/base/wasm/isamax", "version": "0.0.0", "description": "Find the index of the first element having the maximum absolute value.", "license": "Apache-2.0", diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/scripts/build.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/build.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/scripts/build.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt b/lib/node_modules/@stdlib/blas/base/wasm/isamax/scripts/template.txt similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/scripts/template.txt rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/scripts/template.txt diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile b/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/Makefile similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/src/Makefile rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/src/Makefile diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/exports.json b/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/exports.json similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/src/exports.json rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/src/exports.json diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wasm b/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wasm similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wasm rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wasm diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wat b/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wat similarity index 98% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wat rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wat index 078e9561758c..d3553d02a2c4 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/src/main.wat +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wat @@ -1,6 +1,6 @@ ;; @license Apache-2.0 ;; -;; Copyright (c) 2025 The Stdlib Authors. +;; Copyright (c) 2024 The Stdlib Authors. ;; ;; Licensed under the Apache License, Version 2.0 (the "License"); ;; you may not use this file except in compliance with the License. diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.main.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.main.js similarity index 97% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.main.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.main.js index 2f982896f78b..07dadb84a384 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.main.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.main.js @@ -56,13 +56,13 @@ tape( 'the `main` method finds the index of the element with the maximum absolut t.strictEqual( idx, 2, 'returns expected value' ); // Short datasets: - x = new Float32Array( [ + x = new Float32Array([ 0.2, // 1 -0.6, // 2 0.3, // 3 5.0, 5.0 - ] ); + ]); idx = isamax.main( 3, x, 1 ); t.strictEqual( idx, 1, 'returns expected value' ); @@ -94,11 +94,11 @@ tape( 'if provided an `N` parameter less than `1`, the `main` method returns `-1 var idx; var x; - x = new Float32Array( [ + x = new Float32Array([ 1.0, 2.0, 3.0 - ] ); + ]); idx = isamax.main( 0, x, 1 ); t.strictEqual( idx, -1, 'returns expected value' ); @@ -113,11 +113,11 @@ tape( 'if provided an `N` parameter equal to `1`, the `main` method returns `0`' var idx; var x; - x = new Float32Array( [ + x = new Float32Array([ 1.0, 2.0, 3.0 - ] ); + ]); idx = isamax.main( 1, x, 1 ); t.strictEqual( idx, 0, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.module.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.module.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.main.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.module.main.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.main.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.module.main.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.ndarray.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.module.ndarray.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.module.ndarray.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.module.ndarray.js diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.ndarray.js similarity index 97% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.ndarray.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.ndarray.js index 9505aaf6690d..4db172787b74 100644 --- a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.ndarray.js @@ -56,13 +56,13 @@ tape( 'the `ndarray` method finds the index of the element with the maximum abso t.strictEqual( idx, 2, 'returns expected value' ); // Short datasets: - x = new Float32Array( [ + x = new Float32Array([ 0.2, // 1 -0.6, // 2 0.3, // 3 5.0, 5.0 - ] ); + ]); idx = isamax.ndarray( 3, x, 1, 0 ); t.strictEqual( idx, 1, 'returns expected value' ); @@ -135,11 +135,11 @@ tape( 'if provided an `N` parameter less than `1`, the `ndarray` method returns var idx; var x; - x = new Float32Array( [ + x = new Float32Array([ 1.0, 2.0, 3.0 - ] ); + ]); idx = isamax.ndarray( 0, x, 1, 0 ); t.strictEqual( idx, -1, 'returns expected value' ); @@ -154,11 +154,11 @@ tape( 'if provided an `N` parameter equal to `1`, the `ndarray` method returns ` var idx; var x; - x = new Float32Array( [ + x = new Float32Array([ 1.0, 2.0, 3.0 - ] ); + ]); idx = isamax.ndarray( 1, x, 1, 1 ); t.strictEqual( idx, 0, 'returns expected value' ); diff --git a/lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.routine.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.routine.js similarity index 100% rename from lib/node_modules/@stdlib/blas/base/isamax-wasm/test/test.routine.js rename to lib/node_modules/@stdlib/blas/base/wasm/isamax/test/test.routine.js From ce89c6a26e413fb1b27b55efdb69fa0ff0d54d5d Mon Sep 17 00:00:00 2001 From: Aman Bhansali <92033532+aman-095@users.noreply.github.com> Date: Fri, 7 Feb 2025 17:18:36 +0530 Subject: [PATCH 5/6] Update main.wat Signed-off-by: Aman Bhansali <92033532+aman-095@users.noreply.github.com> --- lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wat b/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wat index d3553d02a2c4..078e9561758c 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wat +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/src/main.wat @@ -1,6 +1,6 @@ ;; @license Apache-2.0 ;; -;; Copyright (c) 2024 The Stdlib Authors. +;; Copyright (c) 2025 The Stdlib Authors. ;; ;; Licensed under the Apache License, Version 2.0 (the "License"); ;; you may not use this file except in compliance with the License. From a87a091bc367ecef3efc534a5251faa12cab5ee7 Mon Sep 17 00:00:00 2001 From: Athan Reines Date: Sat, 8 Feb 2025 00:19:19 -0800 Subject: [PATCH 6/6] bench: update assertions --- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: passed - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed --- --- type: pre_push_report description: Results of running various checks prior to pushing changes. report: - task: run_javascript_examples status: na - task: run_c_examples status: na - task: run_cpp_examples status: na - task: run_javascript_readme_examples status: na - task: run_c_benchmarks status: na - task: run_cpp_benchmarks status: na - task: run_fortran_benchmarks status: na - task: run_javascript_benchmarks status: na - task: run_julia_benchmarks status: na - task: run_python_benchmarks status: na - task: run_r_benchmarks status: na - task: run_javascript_tests status: na --- --- .../@stdlib/blas/base/wasm/isamax/benchmark/benchmark.js | 6 +++--- .../base/wasm/isamax/benchmark/benchmark.module.main.js | 6 +++--- .../base/wasm/isamax/benchmark/benchmark.module.ndarray.js | 6 +++--- .../blas/base/wasm/isamax/benchmark/benchmark.ndarray.js | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.js index d00ed48ba6d9..369c60e6fe28 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.js @@ -23,7 +23,7 @@ var bench = require( '@stdlib/bench' ); var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var isamax = require( './../lib' ); @@ -65,12 +65,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { idx = isamax.main( x.length, x, 1 ); - if ( isnanf( idx ) ) { + if ( isnan( idx ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnanf( idx ) ) { + if ( isnan( idx ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.main.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.main.js index 4a982d2e1873..acdf26980367 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.main.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.main.js @@ -25,7 +25,7 @@ var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); var Memory = require( '@stdlib/wasm/memory' ); var bytesPerElement = require( '@stdlib/ndarray/base/bytes-per-element' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var isamax = require( './../lib' ); @@ -89,12 +89,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { idx = mod.main( len, xptr, 1 ); - if ( isnanf( idx ) ) { + if ( isnan( idx ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnanf( idx ) ) { + if ( isnan( idx ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.ndarray.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.ndarray.js index 864ae05f1a0a..7cc34bd632f2 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.module.ndarray.js @@ -25,7 +25,7 @@ var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); var Memory = require( '@stdlib/wasm/memory' ); var bytesPerElement = require( '@stdlib/ndarray/base/bytes-per-element' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var isamax = require( './../lib' ); @@ -89,12 +89,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { idx = mod.ndarray( len, xptr, 1, 0 ); - if ( isnanf( idx ) ) { + if ( isnan( idx ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnanf( idx ) ) { + if ( isnan( idx ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' ); diff --git a/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.ndarray.js index 1f287209c726..874f4d070708 100644 --- a/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/base/wasm/isamax/benchmark/benchmark.ndarray.js @@ -23,7 +23,7 @@ var bench = require( '@stdlib/bench' ); var hasWebAssemblySupport = require( '@stdlib/assert/has-wasm-support' ); var uniform = require( '@stdlib/random/array/uniform' ); -var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); +var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var isamax = require( './../lib' ); @@ -65,12 +65,12 @@ function createBenchmark( len ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { idx = isamax.ndarray( x.length, x, 1, 0 ); - if ( isnanf( idx ) ) { + if ( isnan( idx ) ) { b.fail( 'should not return NaN' ); } } b.toc(); - if ( isnanf( idx ) ) { + if ( isnan( idx ) ) { b.fail( 'should not return NaN' ); } b.pass( 'benchmark finished' );