From d6d6098d66df4c9085460f8887ad3d0e92c97149 Mon Sep 17 00:00:00 2001 From: AuenKr Date: Wed, 13 Mar 2024 21:55:51 +0530 Subject: [PATCH 1/7] refactor: update blas/ext/base/scusum to follow current project conventions --- .../@stdlib/blas/ext/base/scusum/README.md | 34 ++++-------- .../ext/base/scusum/benchmark/benchmark.js | 21 ++++---- .../base/scusum/benchmark/benchmark.native.js | 15 ++---- .../scusum/benchmark/benchmark.ndarray.js | 19 ++++--- .../benchmark/benchmark.ndarray.native.js | 15 ++---- .../blas/ext/base/scusum/docs/repl.txt | 5 +- .../blas/ext/base/scusum/examples/index.js | 14 ++--- .../@stdlib/blas/ext/base/scusum/include.gypi | 2 +- .../@stdlib/blas/ext/base/scusum/lib/index.js | 4 +- .../blas/ext/base/scusum/lib/ndarray.js | 4 +- .../ext/base/scusum/lib/ndarray.native.js | 20 +++---- .../blas/ext/base/scusum/lib/scusum.js | 3 +- .../blas/ext/base/scusum/lib/scusum.native.js | 3 +- .../@stdlib/blas/ext/base/scusum/package.json | 4 +- .../@stdlib/blas/ext/base/scusum/src/addon.c | 54 +++++++++++++++++++ .../blas/ext/base/scusum/test/test.ndarray.js | 25 +++------ .../base/scusum/test/test.ndarray.native.js | 25 +++------ .../blas/ext/base/scusum/test/test.scusum.js | 24 +++------ .../base/scusum/test/test.scusum.native.js | 24 +++------ 19 files changed, 139 insertions(+), 176 deletions(-) create mode 100644 lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/README.md b/lib/node_modules/@stdlib/blas/ext/base/scusum/README.md index 198ec8975cf3..bbbc9f811d18 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/README.md @@ -65,18 +65,15 @@ The function has the following parameters: - **y**: output [`Float32Array`][@stdlib/array/float32]. - **strideY**: index increment for `y`. -The `N` and `stride` parameters determine which elements in `x` and `y` are accessed at runtime. For example, to compute the cumulative sum of every other element in `x`, +The `N` and `stride` parameters determine which elements in the strided input and output array are accessed at runtime. For example, to compute the cumulative sum of every other element in the strided input array, ```javascript var Float32Array = require( '@stdlib/array/float32' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float32Array( [ 1.0, 2.0, 2.0, -7.0, -2.0, 3.0, 4.0, 2.0 ] ); var y = new Float32Array( x.length ); -var N = floor( x.length / 2 ); - -var v = scusum( N, 0.0, x, 2, y, 1 ); +var v = scusum( 4, 0.0, x, 2, y, 1 ); // y => [ 1.0, 3.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] ``` @@ -86,7 +83,6 @@ Note that indexing is relative to the first index. To introduce an offset, use [ ```javascript var Float32Array = require( '@stdlib/array/float32' ); -var floor = require( '@stdlib/math/base/special/floor' ); // Initial arrays... var x0 = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); @@ -96,9 +92,7 @@ var y0 = new Float32Array( x0.length ); var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element var y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // start at 4th element -var N = floor( x0.length / 2 ); - -scusum( N, 0.0, x1, -2, y1, 1 ); +scusum( 4, 0.0, x1, -2, y1, 1 ); // y0 => [ 0.0, 0.0, 0.0, 4.0, 6.0, 4.0, 5.0, 0.0 ] ``` @@ -121,18 +115,15 @@ The function has the following additional parameters: - **offsetX**: starting index for `x`. - **offsetY**: starting index for `y`. -While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying `buffer`, `offsetX` and `offsetY` parameters support indexing semantics based on a starting indices. For example, to calculate the cumulative sum of every other value in `x` starting from the second value and to store in the last `N` elements of `y` starting from the last element +While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying `buffer`, offsetX and offsetY parameters support indexing semantics based on a starting indices. For example, to calculate the cumulative sum of every other value in the strided input array starting from the second value and to store in the last `N` elements of the strided output array starting from the last element ```javascript var Float32Array = require( '@stdlib/array/float32' ); -var floor = require( '@stdlib/math/base/special/floor' ); var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); var y = new Float32Array( x.length ); -var N = floor( x.length / 2 ); - -scusum.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 ); +scusum.ndarray( 4, 0.0, x, 2, 1, y, -1, y.length-1 ); // y => [ 0.0, 0.0, 0.0, 0.0, 5.0, 1.0, -1.0, 1.0 ] ``` @@ -157,20 +148,13 @@ scusum.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 ); ```javascript -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var Float32Array = require( '@stdlib/array/float32' ); var scusum = require( '@stdlib/blas/ext/base/scusum' ); -var y; -var x; -var i; - -x = new Float32Array( 10 ); -y = new Float32Array( x.length ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} +var x = filledarrayBy( 10, 'float32', discreteUniform( 0, 100 ) ); +var y = new Float32Array( x.length ); console.log( x ); console.log( y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.js index 962e406fa06b..69c251af827c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.js @@ -21,14 +21,20 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); +var Float32Array = require( '@stdlib/array/float32' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float32Array = require( '@stdlib/array/float32' ); var pkg = require( './../package.json' ).name; var scusum = require( './../lib/scusum.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,15 +45,8 @@ var scusum = require( './../lib/scusum.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var y; - var x; - var i; - - x = new Float32Array( len ); - y = new Float32Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float32', rand ); + var y = new Float32Array( len ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.native.js index 02c902ea4406..942a4ddda88a 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.native.js @@ -22,7 +22,8 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Float32Array = require( '@stdlib/array/float32' ); @@ -36,6 +37,7 @@ var scusum = tryRequire( resolve( __dirname, './../lib/scusum.native.js' ) ); var opts = { 'skip': ( scusum instanceof Error ) }; +var rand = uniform( -10.0, 10.0 ); // FUNCTIONS // @@ -48,15 +50,8 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var y; - var i; - - x = new Float32Array( len ); - y = new Float32Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float32', rand ); + var y = new Float32Array( len ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.ndarray.js index 125ca2e4786d..00e014a1fe5e 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.ndarray.js @@ -21,7 +21,8 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Float32Array = require( '@stdlib/array/float32' ); @@ -29,6 +30,11 @@ var pkg = require( './../package.json' ).name; var scusum = require( './../lib/ndarray.js' ); +// VARIABLES // + +var rand = uniform( -10.0, 10.0 ); + + // FUNCTIONS // /** @@ -39,15 +45,8 @@ var scusum = require( './../lib/ndarray.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var y; - var i; - - x = new Float32Array( len ); - y = new Float32Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float32', rand ); + var y = new Float32Array( len ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.ndarray.native.js index df723354c058..0a920dce4110 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/benchmark/benchmark.ndarray.native.js @@ -22,7 +22,8 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/base/uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var pow = require( '@stdlib/math/base/special/pow' ); var Float32Array = require( '@stdlib/array/float32' ); @@ -36,6 +37,7 @@ var scusum = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); var opts = { 'skip': ( scusum instanceof Error ) }; +var rand = uniform( -10.0, 10.0 ); // FUNCTIONS // @@ -48,15 +50,8 @@ var opts = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var y; - var i; - - x = new Float32Array( len ); - y = new Float32Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = filledarrayBy( len, 'float32', rand ); + var y = new Float32Array( len ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt index 568765828a01..7d97be498e82 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt @@ -3,8 +3,8 @@ Computes the cumulative sum of single-precision floating-point strided array elements. - The `N` and `stride` parameters determine which elements in `x` and `y` are - accessed at runtime. + The `N` and `stride` parameters determine which elements in the strided + input and output array are accessed at runtime. Indexing is relative to the first index. To introduce an offset, use a typed array view. @@ -62,6 +62,7 @@ > y0 [ 0.0, 0.0, 0.0, -2.0, 0.0, -1.0 ] + {{alias}}.ndarray( N, sum, x, strideX, offsetX, y, strideY, offsetY ) Computes the cumulative sum of single-precision floating-point strided array elements using alternative indexing semantics. diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/examples/index.js index 15f6a4e1c3ef..db6a5c98da87 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/examples/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/examples/index.js @@ -18,20 +18,14 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); +var discreteUniform = require( '@stdlib/random/base/discrete-uniform' ).factory; +var filledarrayBy = require( '@stdlib/array/filled-by' ); var Float32Array = require( '@stdlib/array/float32' ); var scusum = require( './../lib' ); -var y; -var x; -var i; +var x = filledarrayBy( 10, 'float32', discreteUniform( 0, 100 )); +var y = new Float32Array( x.length ); -x = new Float32Array( 10 ); -y = new Float32Array( x.length ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( randu()*100.0 ); -} console.log( x ); console.log( y ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/include.gypi b/lib/node_modules/@stdlib/blas/ext/base/scusum/include.gypi index 868c5c12e852..26476a8c2655 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/include.gypi +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/include.gypi @@ -36,7 +36,7 @@ # Source files: 'src_files': [ - '<(src_dir)/addon.cpp', + '<(src_dir)/addon.c', ' [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] */ diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/ndarray.js index 0b13094e661b..fc8c631d22b0 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/ndarray.js @@ -40,13 +40,11 @@ var scusumkbn = require( '@stdlib/blas/ext/base/scusumkbn' ).ndarray; * * @example * var Float32Array = require( '@stdlib/array/float32' ); -* var floor = require( '@stdlib/math/base/special/floor' ); * * var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); * var y = new Float32Array( x.length ); -* var N = floor( x.length / 2 ); * -* var v = scusum( N, 0.0, x, 2, 1, y, 1, 0 ); +* var v = scusum( 4, 0.0, x, 2, 1, y, 1, 0 ); * // returns [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] */ function scusum( N, sum, x, strideX, offsetX, y, strideY, offsetY ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/ndarray.native.js index a5595b017394..3f05e52ab35a 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/ndarray.native.js @@ -20,7 +20,8 @@ // MODULES // -var Float32Array = require( '@stdlib/array/float32' ); +var minViewBufferIndex = require( '@stdlib/strided/base/min-view-buffer-index' ); +var offsetView = require( '@stdlib/strided/base/offset-view' ); var addon = require( './scusum.native.js' ); @@ -41,26 +42,21 @@ var addon = require( './scusum.native.js' ); * * @example * var Float32Array = require( '@stdlib/array/float32' ); -* var floor = require( '@stdlib/math/base/special/floor' ); * * var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); * var y = new Float32Array( x.length ); -* var N = floor( x.length / 2 ); * -* var v = scusum( N, 0.0, x, 2, 1, y, 1, 0 ); +* var v = scusum( 4, 0.0, x, 2, 1, y, 1, 0 ); * // returns [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] */ function scusum( N, sum, x, strideX, offsetX, y, strideY, offsetY ) { var viewX; var viewY; - if ( strideX < 0 ) { - offsetX += (N-1) * strideX; - } - if ( strideY < 0 ) { - offsetY += (N-1) * strideY; - } - viewX = new Float32Array( x.buffer, x.byteOffset+(x.BYTES_PER_ELEMENT*offsetX), x.length-offsetX ); // eslint-disable-line max-len - viewY = new Float32Array( y.buffer, y.byteOffset+(y.BYTES_PER_ELEMENT*offsetY), y.length-offsetY ); // eslint-disable-line max-len + + offsetX = minViewBufferIndex( N, strideX, offsetX ); + viewX = offsetView( x, offsetX ); + offsetY = minViewBufferIndex( N, strideY, offsetY ); + viewY = offsetView( y, offsetY ); addon( N, sum, viewX, strideX, viewY, strideY ); return y; } diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/scusum.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/scusum.js index 8e1e046d9304..6c0613927f8e 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/scusum.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/scusum.js @@ -41,9 +41,8 @@ var scusumkbn = require( '@stdlib/blas/ext/base/scusumkbn' ); * * var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); * var y = new Float32Array( x.length ); -* var N = x.length; * -* var v = scusum( N, 0.0, x, 1, y, 1 ); +* var v = scusum( 3, 0.0, x, 1, y, 1 ); * // returns [ 1.0, -1.0, 1.0 ] */ function scusum( N, sum, x, strideX, y, strideY ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/scusum.native.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/scusum.native.js index 804e5fb5590a..96b9f767476f 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/scusum.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/scusum.native.js @@ -41,9 +41,8 @@ var addon = require( './../src/addon.node' ); * * var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); * var y = new Float32Array( x.length ); -* var N = x.length; * -* var v = scusum( N, 0.0, x, 1, y, 1 ); +* var v = scusum( 3, 0.0, x, 1, y, 1 ); * // returns [ 1.0, -1.0, 1.0 ] */ function scusum( N, sum, x, strideX, y, strideY ) { diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/package.json b/lib/node_modules/@stdlib/blas/ext/base/scusum/package.json index 0dcc765d7ae8..bb44b07c32ff 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/package.json +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/package.json @@ -75,5 +75,7 @@ "single", "float32array" ], - "__stdlib__": {} + "__stdlib__": { + "wasm": false + } } diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c new file mode 100644 index 000000000000..7196d3130f05 --- /dev/null +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c @@ -0,0 +1,54 @@ +/** +* @license Apache-2.0 +* +* Copyright (c) 2020 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdlib/blas/ext/base/scusum.h" +#include "stdlib/napi/export.h" +#include "stdlib/napi/argv.h" +#include "stdlib/napi/argv_int64.h" +#include "stdlib/napi/argv_double.h" +#include "stdlib/napi/argv_strided_float32array.h" +#include +#include + +/** +* Receives JavaScript callback invocation data. +* +* @private +* @param env environment under which the function is invoked +* @param info callback data +* @return Node-API value +*/ +static napi_value addon( napi_env env, napi_callback_info info ) { + STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); + STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); + STDLIB_NAPI_ARGV_DOUBLE( env, N, argv, 1 ); + STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); + STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); + STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideY, argv, 4 ); + + napi_value Init( napi_env env, napi_value exports ) { + napi_status status; + napi_value fcn; + status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, node_scusum, NULL, &fcn ); + assert( status == napi_ok ); + return fcn; + } +} + +STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.ndarray.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.ndarray.js index ffcae20fc948..da0034ad3831 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.ndarray.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var Float32Array = require( '@stdlib/array/float32' ); var scusum = require( './../lib/ndarray.js' ); @@ -164,7 +163,6 @@ tape( 'the function supports an `x` stride', function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -180,9 +178,8 @@ tape( 'the function supports an `x` stride', function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, 2, 0, y, 1, 0 ); + scusum( 3, 0.0, x, 2, 0, y, 1, 0 ); expected = new Float32Array( [ 1.0, 4.0, 9.0, 0.0, 0.0 ] ); @@ -194,7 +191,6 @@ tape( 'the function supports a `y` stride', function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -210,9 +206,8 @@ tape( 'the function supports a `y` stride', function test( t ) { 0.0, 0.0 // 2 ]); - N = 3; - scusum( N, 0.0, x, 1, 0, y, 2, 0 ); + scusum( 3, 0.0, x, 1, 0, y, 2, 0 ); expected = new Float32Array( [ 1.0, 0.0, 3.0, 0.0, 6.0 ] ); @@ -224,7 +219,6 @@ tape( 'the function supports negative strides', function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 2 @@ -240,9 +234,8 @@ tape( 'the function supports negative strides', function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, -2, x.length-1, y, -1, 2 ); + scusum( 3, 0.0, x, -2, x.length-1, y, -1, 2 ); expected = new Float32Array( [ 9.0, 8.0, 5.0, 0.0, 0.0 ] ); @@ -252,7 +245,6 @@ tape( 'the function supports negative strides', function test( t ) { tape( 'the function supports an `x` offset', function test( t ) { var expected; - var N; var x; var y; @@ -276,9 +268,8 @@ tape( 'the function supports an `x` offset', function test( t ) { 0.0, 0.0 ]); - N = floor( x.length / 2 ); - scusum( N, 0.0, x, 2, 1, y, 1, 0 ); + scusum( 4, 0.0, x, 2, 1, y, 1, 0 ); expected = new Float32Array( [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] ); @@ -288,7 +279,6 @@ tape( 'the function supports an `x` offset', function test( t ) { tape( 'the function supports a `y` offset', function test( t ) { var expected; - var N; var x; var y; @@ -312,9 +302,8 @@ tape( 'the function supports a `y` offset', function test( t ) { 0.0, 0.0 // 3 ]); - N = floor( x.length / 2 ); - scusum( N, 0.0, x, 1, 0, y, 2, 1 ); + scusum( 4, 0.0, x, 1, 0, y, 2, 1 ); expected = new Float32Array( [ 0.0, 2.0, 0.0, 3.0, 0.0, 5.0, 0.0, 3.0 ] ); @@ -326,7 +315,6 @@ tape( 'the function supports complex access patterns', function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -344,9 +332,8 @@ tape( 'the function supports complex access patterns', function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, 2, 0, y, -1, 2 ); + scusum( 3, 0.0, x, 2, 0, y, -1, 2 ); expected = new Float32Array( [ 9.0, 4.0, 1.0, 0.0, 0.0, 0.0 ] ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.ndarray.native.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.ndarray.native.js index ad957b847d10..3ae5cb53505c 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.ndarray.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var Float32Array = require( '@stdlib/array/float32' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -173,7 +172,6 @@ tape( 'the function supports an `x` stride', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -189,9 +187,8 @@ tape( 'the function supports an `x` stride', opts, function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, 2, 0, y, 1, 0 ); + scusum( 3, 0.0, x, 2, 0, y, 1, 0 ); expected = new Float32Array( [ 1.0, 4.0, 9.0, 0.0, 0.0 ] ); @@ -203,7 +200,6 @@ tape( 'the function supports a `y` stride', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -219,9 +215,8 @@ tape( 'the function supports a `y` stride', opts, function test( t ) { 0.0, 0.0 // 2 ]); - N = 3; - scusum( N, 0.0, x, 1, 0, y, 2, 0 ); + scusum( 3, 0.0, x, 1, 0, y, 2, 0 ); expected = new Float32Array( [ 1.0, 0.0, 3.0, 0.0, 6.0 ] ); @@ -233,7 +228,6 @@ tape( 'the function supports negative strides', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 2 @@ -249,9 +243,8 @@ tape( 'the function supports negative strides', opts, function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, -2, x.length-1, y, -1, 2 ); + scusum( 3, 0.0, x, -2, x.length-1, y, -1, 2 ); expected = new Float32Array( [ 9.0, 8.0, 5.0, 0.0, 0.0 ] ); @@ -261,7 +254,6 @@ tape( 'the function supports negative strides', opts, function test( t ) { tape( 'the function supports an `x` offset', opts, function test( t ) { var expected; - var N; var x; var y; @@ -285,9 +277,8 @@ tape( 'the function supports an `x` offset', opts, function test( t ) { 0.0, 0.0 ]); - N = floor( x.length / 2 ); - scusum( N, 0.0, x, 2, 1, y, 1, 0 ); + scusum( 3, 0.0, x, 2, 1, y, 1, 0 ); expected = new Float32Array( [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ] ); @@ -297,7 +288,6 @@ tape( 'the function supports an `x` offset', opts, function test( t ) { tape( 'the function supports a `y` offset', opts, function test( t ) { var expected; - var N; var x; var y; @@ -321,9 +311,8 @@ tape( 'the function supports a `y` offset', opts, function test( t ) { 0.0, 0.0 // 3 ]); - N = floor( x.length / 2 ); - scusum( N, 0.0, x, 1, 0, y, 2, 1 ); + scusum( 3, 0.0, x, 1, 0, y, 2, 1 ); expected = new Float32Array( [ 0.0, 2.0, 0.0, 3.0, 0.0, 5.0, 0.0, 3.0 ] ); @@ -335,7 +324,6 @@ tape( 'the function supports complex access patterns', opts, function test( t ) var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -353,9 +341,8 @@ tape( 'the function supports complex access patterns', opts, function test( t ) 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, 2, 0, y, -1, 2 ); + scusum( 3, 0.0, x, 2, 0, y, -1, 2 ); expected = new Float32Array( [ 9.0, 4.0, 1.0, 0.0, 0.0, 0.0 ] ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.scusum.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.scusum.js index b1973a63519a..85badd1053d9 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.scusum.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.scusum.js @@ -21,7 +21,6 @@ // MODULES // var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var Float32Array = require( '@stdlib/array/float32' ); var scusum = require( './../lib/scusum.js' ); @@ -36,7 +35,7 @@ tape( 'main export is a function', function test( t ) { }); tape( 'the function has an arity of 6', function test( t ) { - t.strictEqual( scusum.length, 6, 'has expected arity' ); + t.strictEqual( scusum.length, 6, 'returns expected value' ); t.end(); }); @@ -164,7 +163,6 @@ tape( 'the function supports an `x` stride', function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -180,9 +178,8 @@ tape( 'the function supports an `x` stride', function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, 2, y, 1 ); + scusum( 3, 0.0, x, 2, y, 1 ); expected = new Float32Array( [ 1.0, 4.0, 9.0, 0.0, 0.0 ] ); @@ -194,7 +191,6 @@ tape( 'the function supports a `y` stride', function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -210,9 +206,8 @@ tape( 'the function supports a `y` stride', function test( t ) { 0.0, 0.0 // 2 ]); - N = 3; - scusum( N, 0.0, x, 1, y, 2 ); + scusum( 3, 0.0, x, 1, y, 2 ); expected = new Float32Array( [ 1.0, 0.0, 3.0, 0.0, 6.0 ] ); @@ -224,7 +219,6 @@ tape( 'the function supports negative strides', function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 2 @@ -240,9 +234,8 @@ tape( 'the function supports negative strides', function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, -2, y, -1 ); + scusum( 3, 0.0, x, -2, y, -1 ); expected = new Float32Array( [ 9.0, 8.0, 5.0, 0.0, 0.0 ] ); @@ -254,7 +247,6 @@ tape( 'the function supports complex access patterns', function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -272,9 +264,8 @@ tape( 'the function supports complex access patterns', function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, 2, y, -1 ); + scusum( 3, 0.0, x, 2, y, -1 ); expected = new Float32Array( [ 9.0, 4.0, 1.0, 0.0, 0.0, 0.0 ] ); @@ -288,7 +279,6 @@ tape( 'the function supports view offsets', function test( t ) { var y0; var x1; var y1; - var N; // Initial arrays... x0 = new Float32Array([ @@ -312,9 +302,7 @@ tape( 'the function supports view offsets', function test( t ) { x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at the 4th element - N = floor( x0.length / 2 ); - - scusum( N, 0.0, x1, -2, y1, 1 ); + scusum( 3, 0.0, x1, -2, y1, 1 ); expected = new Float32Array( [ 0.0, 0.0, 0.0, 6.0, 10.0, 12.0 ] ); t.deepEqual( y0, expected, 'deep equal' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.scusum.native.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.scusum.native.js index e5b184951519..ac0a872c7e72 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.scusum.native.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/test/test.scusum.native.js @@ -22,7 +22,6 @@ var resolve = require( 'path' ).resolve; var tape = require( 'tape' ); -var floor = require( '@stdlib/math/base/special/floor' ); var isnanf = require( '@stdlib/math/base/assert/is-nanf' ); var Float32Array = require( '@stdlib/array/float32' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -45,7 +44,7 @@ tape( 'main export is a function', opts, function test( t ) { }); tape( 'the function has an arity of 6', opts, function test( t ) { - t.strictEqual( scusum.length, 6, 'has expected arity' ); + t.strictEqual( scusum.length, 6, 'returns expected value' ); t.end(); }); @@ -173,7 +172,6 @@ tape( 'the function supports an `x` stride', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -189,9 +187,8 @@ tape( 'the function supports an `x` stride', opts, function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, 2, y, 1 ); + scusum( 3, 0.0, x, 2, y, 1 ); expected = new Float32Array( [ 1.0, 4.0, 9.0, 0.0, 0.0 ] ); @@ -203,7 +200,6 @@ tape( 'the function supports a `y` stride', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -219,9 +215,8 @@ tape( 'the function supports a `y` stride', opts, function test( t ) { 0.0, 0.0 // 2 ]); - N = 3; - scusum( N, 0.0, x, 1, y, 2 ); + scusum( 3, 0.0, x, 1, y, 2 ); expected = new Float32Array( [ 1.0, 0.0, 3.0, 0.0, 6.0 ] ); @@ -233,7 +228,6 @@ tape( 'the function supports negative strides', opts, function test( t ) { var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 2 @@ -249,9 +243,8 @@ tape( 'the function supports negative strides', opts, function test( t ) { 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, -2, y, -1 ); + scusum( 3, 0.0, x, -2, y, -1 ); expected = new Float32Array( [ 9.0, 8.0, 5.0, 0.0, 0.0 ] ); @@ -263,7 +256,6 @@ tape( 'the function supports complex access patterns', opts, function test( t ) var expected; var x; var y; - var N; x = new Float32Array([ 1.0, // 0 @@ -281,9 +273,8 @@ tape( 'the function supports complex access patterns', opts, function test( t ) 0.0, 0.0 ]); - N = 3; - scusum( N, 0.0, x, 2, y, -1 ); + scusum( 3, 0.0, x, 2, y, -1 ); expected = new Float32Array( [ 9.0, 4.0, 1.0, 0.0, 0.0, 0.0 ] ); @@ -297,7 +288,6 @@ tape( 'the function supports view offsets', opts, function test( t ) { var y0; var x1; var y1; - var N; // Initial arrays... x0 = new Float32Array([ @@ -321,9 +311,7 @@ tape( 'the function supports view offsets', opts, function test( t ) { x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // begin at 2nd element y1 = new Float32Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // begin at the 4th element - N = floor( x0.length / 2 ); - - scusum( N, 0.0, x1, -2, y1, 1 ); + scusum( 3, 0.0, x1, -2, y1, 1 ); expected = new Float32Array( [ 0.0, 0.0, 0.0, 6.0, 10.0, 12.0 ] ); t.deepEqual( y0, expected, 'deep equal' ); From 62c32b6ebab3a961604508128b26cd50abf11d8d Mon Sep 17 00:00:00 2001 From: AuenKr Date: Wed, 13 Mar 2024 21:59:54 +0530 Subject: [PATCH 2/7] fix: remove addon.cpp file --- .../blas/ext/base/scusum/src/addon.cpp | 164 ------------------ 1 file changed, 164 deletions(-) delete mode 100644 lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.cpp diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.cpp b/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.cpp deleted file mode 100644 index 6a1382842289..000000000000 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2020 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "stdlib/blas/ext/base/scusum.h" -#include -#include -#include -#include -#include - -/** -* Add-on namespace. -*/ -namespace stdlib_blas_ext_base_scusum { - - /** - * Computes the cumulative sum of single-precision floating-point strided array elements. - * - * ## Notes - * - * - When called from JavaScript, the function expects six arguments: - * - * - `N`: number of indexed elements - * - `sum`: initial sum - * - `X`: input array - * - `strideX`: `X` stride length - * - `Y`: output array - * - `strideY`: `Y` stride length - */ - napi_value node_scusum( napi_env env, napi_callback_info info ) { - napi_status status; - - size_t argc = 6; - napi_value argv[ 6 ]; - status = napi_get_cb_info( env, info, &argc, argv, nullptr, nullptr ); - assert( status == napi_ok ); - - if ( argc < 6 ) { - napi_throw_error( env, nullptr, "invalid invocation. Must provide 6 arguments." ); - return nullptr; - } - - napi_valuetype vtype0; - status = napi_typeof( env, argv[ 0 ], &vtype0 ); - assert( status == napi_ok ); - if ( vtype0 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. First argument must be a number." ); - return nullptr; - } - - napi_valuetype vtype1; - status = napi_typeof( env, argv[ 1 ], &vtype1 ); - assert( status == napi_ok ); - if ( vtype1 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Second argument must be a number." ); - return nullptr; - } - - bool res2; - status = napi_is_typedarray( env, argv[ 2 ], &res2 ); - assert( status == napi_ok ); - if ( res2 == false ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a Float32Array." ); - return nullptr; - } - - napi_valuetype vtype3; - status = napi_typeof( env, argv[ 3 ], &vtype3 ); - assert( status == napi_ok ); - if ( vtype3 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Fourth argument must be a number." ); - return nullptr; - } - - bool res4; - status = napi_is_typedarray( env, argv[ 4 ], &res4 ); - assert( status == napi_ok ); - if ( res4 == false ) { - napi_throw_type_error( env, nullptr, "invalid argument. Fifth argument must be a Float32Array." ); - return nullptr; - } - - napi_valuetype vtype5; - status = napi_typeof( env, argv[ 5 ], &vtype5 ); - assert( status == napi_ok ); - if ( vtype5 != napi_number ) { - napi_throw_type_error( env, nullptr, "invalid argument. Sixth argument must be a number." ); - return nullptr; - } - - int64_t N; - status = napi_get_value_int64( env, argv[ 0 ], &N ); - assert( status == napi_ok ); - - double sum; - status = napi_get_value_double( env, argv[ 1 ], &sum ); - assert( status == napi_ok ); - - int64_t strideX; - status = napi_get_value_int64( env, argv[ 3 ], &strideX ); - assert( status == napi_ok ); - - int64_t strideY; - status = napi_get_value_int64( env, argv[ 5 ], &strideY ); - assert( status == napi_ok ); - - napi_typedarray_type vtype2; - size_t xlen; - void *X; - status = napi_get_typedarray_info( env, argv[ 2 ], &vtype2, &xlen, &X, nullptr, nullptr ); - assert( status == napi_ok ); - if ( vtype2 != napi_float32_array ) { - napi_throw_type_error( env, nullptr, "invalid argument. Third argument must be a Float32Array." ); - return nullptr; - } - if ( (N-1)*llabs(strideX) >= (int64_t)xlen ) { - napi_throw_range_error( env, nullptr, "invalid argument. Third argument has insufficient elements based on the associated stride and the number of indexed elements." ); - return nullptr; - } - - napi_typedarray_type vtype4; - size_t ylen; - void *Y; - status = napi_get_typedarray_info( env, argv[ 4 ], &vtype4, &ylen, &Y, nullptr, nullptr ); - assert( status == napi_ok ); - if ( vtype4 != napi_float32_array ) { - napi_throw_type_error( env, nullptr, "invalid argument. Fifth argument must be a Float32Array." ); - return nullptr; - } - if ( (N-1)*llabs(strideY) >= (int64_t)ylen ) { - napi_throw_range_error( env, nullptr, "invalid argument. Fifth argument has insufficient elements based on the associated stride and the number of indexed elements." ); - return nullptr; - } - - stdlib_strided_scusum( N, (float)sum, (float *)X, strideX, (float *)Y, strideY ); - - return nullptr; - } - - napi_value Init( napi_env env, napi_value exports ) { - napi_status status; - napi_value fcn; - status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, node_scusum, NULL, &fcn ); - assert( status == napi_ok ); - return fcn; - } - - NAPI_MODULE( NODE_GYP_MODULE_NAME, Init ) -} // end namespace stdlib_blas_ext_base_scusum From d67288b6651331ae38f30cb845d4ac107ce5f80f Mon Sep 17 00:00:00 2001 From: AuenKr Date: Thu, 14 Mar 2024 00:27:11 +0530 Subject: [PATCH 3/7] fix: resolve addon.c --- .../@stdlib/blas/ext/base/scusum/docs/repl.txt | 9 +++------ .../@stdlib/blas/ext/base/scusum/lib/index.js | 3 +-- .../@stdlib/blas/ext/base/scusum/src/addon.c | 11 ++++------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt index 7d97be498e82..4558f0c24e1a 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt @@ -47,8 +47,7 @@ // Using `N` and `stride` parameters: > x = new {{alias:@stdlib/array/float32}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0 ] ); > y = new {{alias:@stdlib/array/float32}}( x.length ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > {{alias}}( N, 0.0, x, 2, y, 2 ) + > {{alias}}( 3, 0.0, x, 2, y, 2 ) [ -2.0, 0.0, -1.0, 0.0, 1.0, 0.0 ] // Using view offsets: @@ -56,8 +55,7 @@ > var y0 = new {{alias:@stdlib/array/float32}}( x0.length ); > var x1 = new {{alias:@stdlib/array/float32}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); > var y1 = new {{alias:@stdlib/array/float32}}( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); - > N = {{alias:@stdlib/math/base/special/floor}}( x0.length / 2 ); - > {{alias}}( N, 0.0, x1, 2, y1, 1 ) + > {{alias}}( 3, 0.0, x1, 2, y1, 1 ) [ -2.0, 0.0, -1.0 ] > y0 [ 0.0, 0.0, 0.0, -2.0, 0.0, -1.0 ] @@ -113,8 +111,7 @@ // Advanced indexing: > x = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); > y = new {{alias:@stdlib/array/float32}}( x.length ); - > var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 ); - > {{alias}}.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 ) + > {{alias}}.ndarray( 3, 0.0, x, 2, 1, y, -1, y.length-1 ) [ 0.0, 0.0, 0.0, -1.0, 0.0, -2.0 ] See Also diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/index.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/index.js index 082da9ea0f11..049a178966a9 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/lib/index.js @@ -29,9 +29,8 @@ * * var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); * var y = new Float32Array( x.length ); -* var N = x.length; * -* scusum( N, 0.0, x, 1, y, 1 ); +* scusum( 3, 0.0, x, 1, y, 1 ); * // y => [ 1.0, -1.0, 1.0 ] * * @example diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c index 7196d3130f05..e4344d928af5 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c @@ -42,13 +42,10 @@ static napi_value addon( napi_env env, napi_callback_info info ) { STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideY, argv, 4 ); - napi_value Init( napi_env env, napi_value exports ) { - napi_status status; - napi_value fcn; - status = napi_create_function( env, "exports", NAPI_AUTO_LENGTH, node_scusum, NULL, &fcn ); - assert( status == napi_ok ); - return fcn; - } + napi_value v; + status = napi_create_double( env, stdlib_strided_scusum( N, (float)sum, (float *)X, strideX, (float *)Y, strideY ), &v ); + assert( status == napi_ok ); + return v; } STDLIB_NAPI_MODULE_EXPORT_FCN( addon ) From c313f6f84d3882229754646eefdb478c32a27fbb Mon Sep 17 00:00:00 2001 From: AuenKr Date: Thu, 14 Mar 2024 17:40:53 +0530 Subject: [PATCH 4/7] fix: apply suggestions from code review --- .../@stdlib/blas/ext/base/scusum/README.md | 2 +- .../blas/ext/base/scusum/docs/repl.txt | 2 +- .../blas/ext/base/scusum/examples/index.js | 2 +- .../blas/ext/base/scusum/manifest.json | 31 ++++++++++++++++++- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/README.md b/lib/node_modules/@stdlib/blas/ext/base/scusum/README.md index bbbc9f811d18..fc090f8e6bf8 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/README.md +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/README.md @@ -65,7 +65,7 @@ The function has the following parameters: - **y**: output [`Float32Array`][@stdlib/array/float32]. - **strideY**: index increment for `y`. -The `N` and `stride` parameters determine which elements in the strided input and output array are accessed at runtime. For example, to compute the cumulative sum of every other element in the strided input array, +The `N` and `stride` parameters determine which elements in the strided arrays are accessed at runtime. For example, to compute the cumulative sum of every other element in the strided input array, ```javascript var Float32Array = require( '@stdlib/array/float32' ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt b/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt index 4558f0c24e1a..d6e5e3124514 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/docs/repl.txt @@ -4,7 +4,7 @@ elements. The `N` and `stride` parameters determine which elements in the strided - input and output array are accessed at runtime. + arrays are accessed at runtime. Indexing is relative to the first index. To introduce an offset, use a typed array view. diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/examples/index.js b/lib/node_modules/@stdlib/blas/ext/base/scusum/examples/index.js index db6a5c98da87..6a92d6ab1267 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/examples/index.js +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/examples/index.js @@ -23,7 +23,7 @@ var filledarrayBy = require( '@stdlib/array/filled-by' ); var Float32Array = require( '@stdlib/array/float32' ); var scusum = require( './../lib' ); -var x = filledarrayBy( 10, 'float32', discreteUniform( 0, 100 )); +var x = filledarrayBy( 10, 'float32', discreteUniform( 0, 100 ) ); var y = new Float32Array( x.length ); console.log( x ); diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json index 0c7e02a28ec0..58e9c87905f4 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json @@ -24,6 +24,7 @@ ], "confs": [ { + "task": "build", "src": [ "./src/scusum.c" ], @@ -37,6 +38,34 @@ "dependencies": [ "@stdlib/blas/ext/base/scusumkbn" ] - } + }, + { + "task": "benchmark", + "src": [ + "./src/scusum.c" + ], + "include": [ + "./include" + ], + "libraries": [ + "-lm" + ], + "libpath": [], + "dependencies": [] + }, + { + "task": "examples", + "src": [ + "./src/scusum.c" + ], + "include": [ + "./include" + ], + "libraries": [ + "-lm" + ], + "libpath": [], + "dependencies": [] + } ] } From 4d6b33aabb0c8021ddd37ffe993de195e7503528 Mon Sep 17 00:00:00 2001 From: AuenKr Date: Fri, 15 Mar 2024 21:46:43 +0530 Subject: [PATCH 5/7] fix: fixed indentation issue --- .../blas/ext/base/scusum/manifest.json | 85 ++++++++++--------- 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json index 58e9c87905f4..3ce3075600e0 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json @@ -1,44 +1,49 @@ { - "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": [ - { + "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": [ + { "task": "build", - "src": [ - "./src/scusum.c" - ], - "include": [ - "./include" - ], - "libraries": [ - "-lm" - ], - "libpath": [], - "dependencies": [ - "@stdlib/blas/ext/base/scusumkbn" - ] - }, + "src": [ + "./src/scusum.c" + ], + "include": [ + "./include" + ], + "libraries": [ + "-lm" + ], + "libpath": [], + "dependencies": [ + "@stdlib/blas/ext/base/scusumkbn", + "stdlib/napi/export", + "stdlib/napi/argv", + "stdlib/napi/argv-int64", + "stdlib/napi/argv-double", + "stdlib/napi/argv-strided-float32array" + ] + }, { "task": "benchmark", "src": [ @@ -67,5 +72,5 @@ "libpath": [], "dependencies": [] } - ] + ] } From 7729fb09055ddb72aa882a59045b12c30bb2d6dd Mon Sep 17 00:00:00 2001 From: AuenKr Date: Tue, 19 Mar 2024 19:57:09 +0530 Subject: [PATCH 6/7] fix: applied all suggestions --- lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json | 6 ++++-- lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json b/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json index 3ce3075600e0..9f852154bd20 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/manifest.json @@ -1,5 +1,7 @@ { - "options": {}, + "options": { + "task": "build" + }, "fields": [ { "field": "src", @@ -40,7 +42,7 @@ "stdlib/napi/export", "stdlib/napi/argv", "stdlib/napi/argv-int64", - "stdlib/napi/argv-double", + "stdlib/napi/argv-float", "stdlib/napi/argv-strided-float32array" ] }, diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c index e4344d928af5..685a9995d3cd 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c @@ -20,7 +20,7 @@ #include "stdlib/napi/export.h" #include "stdlib/napi/argv.h" #include "stdlib/napi/argv_int64.h" -#include "stdlib/napi/argv_double.h" +#include "stdlib/napi/argv_float.h" #include "stdlib/napi/argv_strided_float32array.h" #include #include @@ -36,14 +36,14 @@ static napi_value addon( napi_env env, napi_callback_info info ) { STDLIB_NAPI_ARGV( env, info, argv, argc, 6 ); STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); - STDLIB_NAPI_ARGV_DOUBLE( env, N, argv, 1 ); + STDLIB_NAPI_ARGV_FLOAT( env, N, argv, 1 ); STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 3 ); STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideY, argv, 4 ); napi_value v; - status = napi_create_double( env, stdlib_strided_scusum( N, (float)sum, (float *)X, strideX, (float *)Y, strideY ), &v ); + status = napi_create_double( env, stdlib_strided_scusum( N, sum, X, strideX, Y, strideY ), &v ); assert( status == napi_ok ); return v; } From 0cda807f5633750480806882927b081840f23d20 Mon Sep 17 00:00:00 2001 From: AuenKr Date: Wed, 20 Mar 2024 18:37:00 +0530 Subject: [PATCH 7/7] fix: fixed src/addon.c --- lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c b/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c index 685a9995d3cd..93edb179b7c5 100644 --- a/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c +++ b/lib/node_modules/@stdlib/blas/ext/base/scusum/src/addon.c @@ -41,11 +41,8 @@ static napi_value addon( napi_env env, napi_callback_info info ) { STDLIB_NAPI_ARGV_INT64( env, strideY, argv, 5 ); STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 2 ); STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideY, argv, 4 ); - - napi_value v; - status = napi_create_double( env, stdlib_strided_scusum( N, sum, X, strideX, Y, strideY ), &v ); - assert( status == napi_ok ); - return v; + stdlib_strided_scusum( N, sum, X, strideX, Y, strideY ); + return NULL; } STDLIB_NAPI_MODULE_EXPORT_FCN( addon )