From d93d46f897250e8e3f2baaf1b086a01db58f4087 Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Sat, 28 Dec 2024 01:56:38 +0530 Subject: [PATCH 01/19] feat: ndarray-dsmean --- .../@stdlib/stats/base/dsmean/README.md | 129 +++++++++++++++--- .../stats/base/dsmean/benchmark/benchmark.js | 25 ++-- .../base/dsmean/benchmark/benchmark.native.js | 25 ++-- .../dsmean/benchmark/benchmark.ndarray.js | 25 ++-- .../benchmark/benchmark.ndarray.native.js | 25 ++-- .../dsmean/benchmark/c/benchmark.length.c | 54 +++++++- .../@stdlib/stats/base/dsmean/docs/repl.txt | 39 +++--- .../stats/base/dsmean/docs/types/index.d.ts | 14 +- .../stats/base/dsmean/examples/c/example.c | 7 +- .../@stdlib/stats/base/dsmean/include.gypi | 2 +- .../dsmean/include/stdlib/stats/base/dsmean.h | 9 +- .../@stdlib/stats/base/dsmean/lib/dsmean.js | 12 +- .../stats/base/dsmean/lib/dsmean.native.js | 9 +- .../@stdlib/stats/base/dsmean/lib/index.js | 6 +- .../@stdlib/stats/base/dsmean/lib/ndarray.js | 13 +- .../stats/base/dsmean/lib/ndarray.native.js | 21 +-- .../@stdlib/stats/base/dsmean/manifest.json | 77 ++++++++++- .../@stdlib/stats/base/dsmean/src/addon.c | 60 ++++++++ .../@stdlib/stats/base/dsmean/src/addon.cpp | 117 ---------------- .../base/dsmean/src/{dsmean.c => main.c} | 21 ++- .../stats/base/dsmean/test/test.dsmean.js | 86 ------------ .../base/dsmean/test/test.dsmean.native.js | 86 ------------ .../stats/base/dsmean/test/test.ndarray.js | 82 ----------- .../base/dsmean/test/test.ndarray.native.js | 82 ----------- 24 files changed, 434 insertions(+), 592 deletions(-) create mode 100644 lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c delete mode 100644 lib/node_modules/@stdlib/stats/base/dsmean/src/addon.cpp rename lib/node_modules/@stdlib/stats/base/dsmean/src/{dsmean.c => main.c} (53%) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index 8343c4b95c04..175c0593afa3 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -59,10 +59,9 @@ Computes the [arithmetic mean][arithmetic-mean] of a single-precision floating-p var Float32Array = require( '@stdlib/array/float32' ); var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); -var N = x.length; -var v = dsmean( N, x, 1 ); -// returns ~0.3333 +var v = dsmean( x.length, x, 1 ); +// returns ~1.25 ``` The function has the following parameters: @@ -78,9 +77,8 @@ 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 N = floor( x.length / 2 ); -var v = dsmean( N, x, 2 ); +var v = dsmean( x.length, x, 2 ); // returns 1.25 ``` @@ -90,18 +88,15 @@ 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' ); var x0 = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element -var N = floor( x0.length / 2 ); - -var v = dsmean( N, x1, 2 ); +var v = dsmean( 5, x1, 2 ); // returns 1.25 ``` -#### dsmean.ndarray( N, x, stride, offset ) +#### dsmean.ndarray( N, x, strideX, offsetX ) Computes the [arithmetic mean][arithmetic-mean] of a single-precision floating-point strided array using extended accumulation and alternative indexing semantics and returning an extended precision result. @@ -109,26 +104,23 @@ Computes the [arithmetic mean][arithmetic-mean] of a single-precision floating-p var Float32Array = require( '@stdlib/array/float32' ); var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); -var N = x.length; -var v = dsmean.ndarray( N, x, 1, 0 ); -// returns ~0.33333 +var v = dsmean.ndarray( 5, x, 1, 0 ); +// returns ~1.25 ``` The function has the following additional parameters: -- **offset**: starting index for `x`. +- **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 calculate the [arithmetic mean][arithmetic-mean] for every other value in `x` starting from the second value ```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 N = floor( x.length / 2 ); -var v = dsmean.ndarray( N, x, 2, 1 ); +var v = dsmean.ndarray( 5, x, 2, 1 ); // returns 1.25 ``` @@ -141,7 +133,7 @@ var v = dsmean.ndarray( N, x, 2, 1 ); ## Notes - If `N <= 0`, both functions return `NaN`. -- Accumulated intermediate values are stored as double-precision floating-point numbers. +- Accumulated intermediate values are stored as double-precision floating-point numbers. @@ -176,6 +168,107 @@ console.log( v ); + + +
+ +### Usage + +```c +#include "stdlib/stats/base/dnanmax.h" +``` + +#### stdlib_strided_dsmean( N, \*X, strideX ) + +Calculate the Arithmetic Mean value of a double-precision floating-point strided array, ignoring `NaN` values. + +```c +const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 0.0/0.0, 0.0/0.0 }; + +double v = stdlib_strided_dsmean( 5, x, 2 ); +// returns 1.25 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. + +```c +double stdlib_strided_dsmean( const CBLAS_INT N, const double *X, const CBLAS_INT strideX ); +``` + +#### stdlib_strided_dsmean_ndarray( N, \*X, strideX, offsetX ) + +Computes the Arithmetic Mean value of a double-precision floating-point strided array, ignoring `NaN` values and using alternative indexing semantics. + +```c +const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 0.0/0.0, 0.0/0.0 }; + +double v = stdlib_strided_dsmean_ndarray( 5, x, 2, 0 ); +// returns 1.25 +``` + +The function accepts the following arguments: + +- **N**: `[in] CBLAS_INT` number of indexed elements. +- **X**: `[in] double*` input array. +- **strideX**: `[in] CBLAS_INT` stride length for `X`. +- **offsetX**: `[in] CBLAS_INT` starting index for `X`. + +```c +double stdlib_strided_dsmean_ndarray( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/stats/base/dsmean.h" +#include + +int main( void ) { + // Create a strided array: + float x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 }; + + // Specify the number of elements: + const int N = 4; + + // Specify the stride length: + const int stride = 2; + + // Compute the arithmetic mean: + double v = stdlib_strided_dsmean( N, x, strideX ); + + // Print the result: + printf( "mean: %lf\n", v ); +} +``` + +
+ + + + + + + diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js index 86dd34037cc6..bad5ffd1a681 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js @@ -52,7 +52,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float64', rand ); + var x = filledarrayBy( len, 'float32', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js index 20fff494fe8f..2b18a784c41a 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js @@ -61,7 +61,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float64', rand ); + var x = filledarrayBy( len, 'float32', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js index 92faeee13cf6..79c8de58f87d 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js @@ -52,7 +52,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float64', rand ); + var x = filledarrayBy( len, 'float32', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js index 72abe30991b8..387ce44bf58e 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js @@ -61,7 +61,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float64', rand ); + var x = filledarrayBy( len, 'float32', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt b/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt index 4e8877fcd17c..2bb1a62bb9d2 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt +++ b/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt @@ -46,6 +46,7 @@ > {{alias}}( 3, x1, 2 ) ~-0.333 + {{alias}}.ndarray( N, x, strideX, offsetX ) Computes the arithmetic mean of a single-precision floating-point strided array using extended accumulation and alternative indexing semantics and From 43ebd35bf6100996a4f70e373d3e41df094fb26c Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Sun, 29 Dec 2024 01:41:54 +0530 Subject: [PATCH 04/19] fix: bench error --- .../stats/base/dsmean/benchmark/benchmark.js | 25 +++++++------------ .../base/dsmean/benchmark/benchmark.native.js | 21 ++++------------ .../dsmean/benchmark/benchmark.ndarray.js | 25 +++++++------------ .../benchmark/benchmark.ndarray.native.js | 21 ++++------------ .../stats/base/dsmean/examples/index.js | 14 +++-------- .../dsmeanpn/benchmark/benchmark.ndarray.js | 17 ++++++------- 6 files changed, 40 insertions(+), 83 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js index bad5ffd1a681..90e79ad9b14b 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js @@ -21,28 +21,21 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/base/uniform' ); -var bernoulli = require( '@stdlib/random/base/bernoulli' ); -var filledarrayBy = require( '@stdlib/array/filled-by' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var dsmean = require( './../lib/dsmean.js' ); -// FUNCTIONS // +// VARIABLES // -/** -* Returns a random value or `NaN`. -* -* @returns {number} random number or `NaN` -*/ -function rand() { - if ( bernoulli( 0.2 ) ) { - return NaN; - } - return uniform( -10.0, 10.0 ); -} +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // /** * Creates a benchmark function. @@ -52,7 +45,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float32', rand ); + var x = uniform( len, -10.0, 10.0, options ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js index 2b18a784c41a..11cd6a06ecf0 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js @@ -22,9 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/base/uniform' ); -var bernoulli = require( '@stdlib/random/base/bernoulli' ); -var filledarrayBy = require( '@stdlib/array/filled-by' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -37,22 +35,13 @@ var dsmean = tryRequire( resolve( __dirname, './../lib/dsmean.native.js' ) ); var opts = { 'skip': ( dsmean instanceof Error ) }; +var options = { + 'dtype': 'float32' +}; // FUNCTIONS // -/** -* Returns a random value or `NaN`. -* -* @returns {number} random number or `NaN` -*/ -function rand() { - if ( bernoulli( 0.2 ) ) { - return NaN; - } - return uniform( -10.0, 10.0 ); -} - /** * Creates a benchmark function. * @@ -61,7 +50,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float32', rand ); + var x = uniform( len, -10.0, 10.0, options ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js index 79c8de58f87d..56e033893a7a 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js @@ -21,28 +21,21 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/base/uniform' ); -var bernoulli = require( '@stdlib/random/base/bernoulli' ); -var filledarrayBy = require( '@stdlib/array/filled-by' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var dsmean = require( './../lib/ndarray.js' ); -// FUNCTIONS // +// VARIABLES // -/** -* Returns a random value or `NaN`. -* -* @returns {number} random number or `NaN` -*/ -function rand() { - if ( bernoulli( 0.2 ) ) { - return NaN; - } - return uniform( -10.0, 10.0 ); -} +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // /** * Creates a benchmark function. @@ -52,7 +45,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float32', rand ); + var x = uniform( len, -10.0, 10.0, options ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js index 387ce44bf58e..a85845f539da 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js @@ -22,9 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/base/uniform' ); -var bernoulli = require( '@stdlib/random/base/bernoulli' ); -var filledarrayBy = require( '@stdlib/array/filled-by' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -37,22 +35,13 @@ var dsmean = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); var opts = { 'skip': ( dsmean instanceof Error ) }; +var options = { + 'dtype': 'float32' +}; // FUNCTIONS // -/** -* Returns a random value or `NaN`. -* -* @returns {number} random number or `NaN` -*/ -function rand() { - if ( bernoulli( 0.2 ) ) { - return NaN; - } - return uniform( -10.0, 10.0 ); -} - /** * Creates a benchmark function. * @@ -61,7 +50,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float32', rand ); + var x = uniform( len, -10.0, 10.0, options ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js b/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js index e77b5cd218b5..7429d8fbd828 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js @@ -18,18 +18,12 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float32Array = require( '@stdlib/array/float32' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var dsmean = require( './../lib' ); -var x; -var i; - -x = new Float32Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( (randu()*100.0) - 50.0 ); -} +var x = discreteUniform( 10, -50, 50, { + 'dtype': 'float32' +}); console.log( x ); var v = dsmean( x.length, x, 1 ); diff --git a/lib/node_modules/@stdlib/stats/base/dsmeanpn/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/stats/base/dsmeanpn/benchmark/benchmark.ndarray.js index b389eb8ff4f6..b6eb3fed88f5 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmeanpn/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/dsmeanpn/benchmark/benchmark.ndarray.js @@ -21,14 +21,19 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var randu = require( '@stdlib/random/base/randu' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); -var Float32Array = require( '@stdlib/array/float32' ); var pkg = require( './../package.json' ).name; var dsmeanpn = require( './../lib/ndarray.js' ); +// VARIABLES // + +var options = { + 'dtype': 'float32' +}; + // FUNCTIONS // /** @@ -39,13 +44,7 @@ var dsmeanpn = require( './../lib/ndarray.js' ); * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x; - var i; - - x = new Float32Array( len ); - for ( i = 0; i < x.length; i++ ) { - x[ i ] = ( randu()*20.0 ) - 10.0; - } + var x = uniform( len, -10.0, 10.0, options ); return benchmark; function benchmark( b ) { From 09fd34672c483b69323cbd29b009b8132cd0c4f7 Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Sun, 29 Dec 2024 01:48:26 +0530 Subject: [PATCH 05/19] fix: lint error --- .../@stdlib/stats/base/dsmeanpn/benchmark/benchmark.ndarray.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/node_modules/@stdlib/stats/base/dsmeanpn/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/stats/base/dsmeanpn/benchmark/benchmark.ndarray.js index b6eb3fed88f5..222fcc8b0c17 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmeanpn/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/dsmeanpn/benchmark/benchmark.ndarray.js @@ -34,6 +34,7 @@ var options = { 'dtype': 'float32' }; + // FUNCTIONS // /** From 6908a9fe6c44faf3454f112163b9277f475df3e1 Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Tue, 31 Dec 2024 22:19:55 +0530 Subject: [PATCH 06/19] fix: updating files --- .../@stdlib/stats/base/dsmean/README.md | 10 +-- .../@stdlib/stats/base/dsmean/docs/repl.txt | 6 +- .../dsmean/include/stdlib/stats/base/dsmean.h | 4 +- .../@stdlib/stats/base/dsmean/lib/index.js | 2 +- .../@stdlib/stats/base/dsmean/lib/ndarray.js | 3 + .../stats/base/dsmean/lib/ndarray.native.js | 3 + .../@stdlib/stats/base/dsmean/manifest.json | 17 +--- .../@stdlib/stats/base/dsmean/src/main.c | 2 +- .../stats/base/dsmean/test/test.dsmean.js | 75 ++++++++++++++++++ .../base/dsmean/test/test.dsmean.native.js | 79 +++++++++++++++++++ .../stats/base/dsmean/test/test.ndarray.js | 75 ++++++++++++++++++ .../base/dsmean/test/test.ndarray.native.js | 75 ++++++++++++++++++ 12 files changed, 325 insertions(+), 26 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index 5126e199604f..8663aefee7ed 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -104,7 +104,7 @@ 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 calculate the [arithmetic mean][arithmetic-mean] for every other value in `x` starting from the second value +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 calculate the [arithmetic mean][arithmetic-mean] for every other element in `x` starting from the second element ```javascript var Float32Array = require( '@stdlib/array/float32' ); @@ -168,12 +168,12 @@ console.log( v ); #### stdlib_strided_dsmean( N, \*X, strideX ) -Calculate the Arithmetic Mean value of a double-precision floating-point strided array, ignoring `NaN` values. +Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and returning an extended precision result. ```c const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 0.0/0.0, 0.0/0.0 }; -double v = stdlib_strided_dsmean( 5, x, 2 ); +double v = stdlib_strided_dsmean( 4, x, 2 ); // returns 1.25 ``` @@ -189,12 +189,12 @@ double stdlib_strided_dsmean( const CBLAS_INT N, const double *X, const CBLAS_IN #### stdlib_strided_dsmean_ndarray( N, \*X, strideX, offsetX ) -Computes the Arithmetic Mean value of a double-precision floating-point strided array, ignoring `NaN` values and using alternative indexing semantics. +Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and alternative indexing semantics and returning an extended precision result. ```c const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 0.0/0.0, 0.0/0.0 }; -double v = stdlib_strided_dsmean_ndarray( 5, x, 2, 0 ); +double v = stdlib_strided_dsmean_ndarray( 4, x, 2, 0 ); // returns 1.25 ``` diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt b/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt index 2bb1a62bb9d2..0f95e41e2e2b 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt +++ b/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt @@ -21,7 +21,7 @@ Input array. strideX: integer - Stride Length. + Stride length. Returns ------- @@ -53,7 +53,7 @@ returning an extended precision result. While typed array views mandate a view offset based on the underlying - buffer, the `offset` parameter supports indexing semantics based on a + buffer, the offset parameter supports indexing semantics based on a starting index. Parameters @@ -65,7 +65,7 @@ Input array. strideX: integer - Stride Length. + Stride length. offsetX: integer Starting index. diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/include/stdlib/stats/base/dsmean.h b/lib/node_modules/@stdlib/stats/base/dsmean/include/stdlib/stats/base/dsmean.h index 1feff8813d1a..86a3e9c2c22c 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/include/stdlib/stats/base/dsmean.h +++ b/lib/node_modules/@stdlib/stats/base/dsmean/include/stdlib/stats/base/dsmean.h @@ -29,12 +29,12 @@ extern "C" { #endif /** -* Computes the arithmetic mean of a single-precision floating-point strided array using extended accumulation and returning an extended precision result. +* Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and returning an extended precision result. */ double API_SUFFIX(stdlib_strided_dsmean)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX ); /** -* Computes the mean absolute value of a double-precision floating-point strided array, ignoring `NaN` values and using alternative indexing semantics . +* Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and alternative indexing semantics and returning an extended precision result. */ double API_SUFFIX(stdlib_strided_dsmean_ndarray)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/lib/index.js b/lib/node_modules/@stdlib/stats/base/dsmean/lib/index.js index 13758d296e78..e502f880ef2e 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/lib/index.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/lib/index.js @@ -39,7 +39,7 @@ * * var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); * -* var v = dsmean.ndarray( 5, x, 2, 1 ); +* var v = dsmean.ndarray( 4, x, 2, 1 ); * // returns 1.25 */ diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.js b/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.js index d950add0ed5e..6386a7702364 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.js @@ -38,6 +38,9 @@ var dsmeanpn = require( '@stdlib/stats/base/dsmeanpn' ).ndarray; * var Float32Array = require( '@stdlib/array/float32' ); * * var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); +* +* var v = dsmean( N, x, 2, 1 ); +* // returns 1.25 */ function dsmean( N, x, strideX, offsetX ) { return dsmeanpn( N, x, strideX, offsetX ); diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.native.js index 581a53a0a91b..b2a2a0b325e5 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.native.js @@ -38,6 +38,9 @@ var addon = require( './../src/addon.node' ); * var Float32Array = require( '@stdlib/array/float32' ); * * var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); +* +* var v = dsmean( 4, x, 2, 1 ); +* // returns 1.25 */ function dsmean( N, x, strideX, offsetX ) { return addon.ndarray( N, x, strideX, offsetX ); diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/manifest.json b/lib/node_modules/@stdlib/stats/base/dsmean/manifest.json index 80e8850b772b..4bb993838bae 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/manifest.json +++ b/lib/node_modules/@stdlib/stats/base/dsmean/manifest.json @@ -40,8 +40,6 @@ "dependencies": [ "@stdlib/blas/base/shared", "@stdlib/strided/base/stride2offset", - "@stdlib/math/base/assert/is-positive-zero", - "@stdlib/math/base/assert/is-nan", "@stdlib/stats/base/dsmeanpn", "@stdlib/napi/export", "@stdlib/napi/argv", @@ -63,10 +61,7 @@ "libpath": [], "dependencies": [ "@stdlib/blas/base/shared", - "@stdlib/strided/base/stride2offset", - "@stdlib/math/base/assert/is-nan", - "@stdlib/math/base/assert/is-positive-zero", - "@stdlib/stats/base/dsmeanpn" + "@stdlib/strided/base/stride2offset" ] }, { @@ -82,10 +77,7 @@ "libpath": [], "dependencies": [ "@stdlib/blas/base/shared", - "@stdlib/strided/base/stride2offset", - "@stdlib/math/base/assert/is-nan", - "@stdlib/math/base/assert/is-positive-zero", - "@stdlib/stats/base/dsmeanpn" + "@stdlib/strided/base/stride2offset" ] }, { @@ -101,10 +93,7 @@ "libpath": [], "dependencies": [ "@stdlib/blas/base/shared", - "@stdlib/strided/base/stride2offset", - "@stdlib/math/base/assert/is-nan", - "@stdlib/math/base/assert/is-positive-zero", - "@stdlib/stats/base/dsmeanpn" + "@stdlib/strided/base/stride2offset" ] } ] diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c index 96280db716b8..9d40ce1fd1f2 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c @@ -35,7 +35,7 @@ double API_SUFFIX(stdlib_strided_dsmean)( const CBLAS_INT N, const float *X, con } /** -* Computes the maximum value of a double-precision floating-point strided array, ignoring `NaN` values and using alternative indexing semantics. +* Computes the arithmetic mean of a single-precision floating-point strided array using extended accumulation and alternative indexing semantics and returning an extended precision result. * * @param N number of indexed elements * @param X input array diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js index 15115cac672d..5bc9facd17c2 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js @@ -84,3 +84,78 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first t.end(); }); + +tape( 'the function supports a `stride` parameter', function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 2.0, // 1 + -7.0, + -2.0, // 2 + 3.0, + 4.0, // 3 + 2.0 + ]); + + v = dsmean( 4, x, 2, 0 ); + + t.strictEqual( v, 1.25, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a negative `stride` parameter', function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, // 3 + 2.0, + 2.0, // 2 + -7.0, + -2.0, // 1 + 3.0, + 4.0, // 0 + 2.0 + ]); + + v = dsmean( 4, x, -2, 6 ); + + t.strictEqual( v, 1.25, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a `stride` parameter equal to `0`, the function returns the first indexed element', function test( t ) { + var x; + var v; + + x = new Float32Array( [ 1.0, -2.0, -4.0, 5.0, 3.0 ] ); + + v = dsmean( x.length, x, 0, 0 ); + t.strictEqual( v, 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `offset` parameter', function test( t ) { + var x; + var v; + + x = new Float32Array([ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]); + + v = dsmean( 4, x, 2, 1 ); + t.strictEqual( v, 1.25, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.native.js index 1bef7828ca24..ec1a1c734811 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.native.js @@ -175,3 +175,82 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first t.end(); }); + +tape( 'the function supports a `stride` parameter', opts, function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 2.0, // 1 + -7.0, + -2.0, // 2 + 3.0, + 4.0, // 3 + 2.0 + ]); + + v = dsmean( 4, x, 2 ); + + t.strictEqual( v, 1.25, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, // 3 + 2.0, + 2.0, // 2 + -7.0, + -2.0, // 1 + 3.0, + 4.0, // 0 + 2.0 + ]); + + v = dsmean( 4, x, -2 ); + + t.strictEqual( v, 1.25, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a `stride` parameter equal to `0`, the function returns the first element', opts, function test( t ) { + var x; + var v; + + x = new Float32Array( [ 1.0, -2.0, -4.0, 5.0, 3.0 ] ); + + v = dsmean( x.length, x, 0 ); + t.strictEqual( v, 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports view offsets', opts, function test( t ) { + var x0; + var x1; + var v; + + x0 = new Float32Array([ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0, // 3 + 6.0 + ]); + + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + + v = dsmean( 4, x1, 2 ); + t.strictEqual( v, 1.25, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.ndarray.js b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.ndarray.js index 2897dbce39bd..094e304a99e8 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.ndarray.js @@ -84,3 +84,78 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first t.end(); }); + +tape( 'the function supports a `stride` parameter', function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 2.0, // 1 + -7.0, + -2.0, // 2 + 3.0, + 4.0, // 3 + 2.0 + ]); + + v = dsmean( 4, x, 2, 0 ); + + t.strictEqual( v, 1.25, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a negative `stride` parameter', function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, // 3 + 2.0, + 2.0, // 2 + -7.0, + -2.0, // 1 + 3.0, + 4.0, // 0 + 2.0 + ]); + + v = dsmean( 4, x, -2, 6 ); + + t.strictEqual( v, 1.25, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a `stride` parameter equal to `0`, the function returns the first indexed element', function test( t ) { + var x; + var v; + + x = new Float32Array( [ 1.0, -2.0, -4.0, 5.0, 3.0 ] ); + + v = dsmean( x.length, x, 0, 0 ); + t.strictEqual( v, 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `offset` parameter', function test( t ) { + var x; + var v; + + x = new Float32Array([ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]); + + v = dsmean( 4, x, 2, 1 ); + t.strictEqual( v, 1.25, 'returns expected value' ); + + t.end(); +}); diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.ndarray.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.ndarray.native.js index 48171cda6ad8..98d69d9b6b79 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.ndarray.native.js @@ -93,3 +93,78 @@ tape( 'if provided an `N` parameter equal to `1`, the function returns the first t.end(); }); + +tape( 'the function supports a `stride` parameter', opts, function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, // 0 + 2.0, + 2.0, // 1 + -7.0, + -2.0, // 2 + 3.0, + 4.0, // 3 + 2.0 + ]); + + v = dsmean( 4, x, 2, 0 ); + + t.strictEqual( v, 1.25, 'returns expected value' ); + t.end(); +}); + +tape( 'the function supports a negative `stride` parameter', opts, function test( t ) { + var x; + var v; + + x = new Float32Array([ + 1.0, // 3 + 2.0, + 2.0, // 2 + -7.0, + -2.0, // 1 + 3.0, + 4.0, // 0 + 2.0 + ]); + + v = dsmean( 4, x, -2, 6 ); + + t.strictEqual( v, 1.25, 'returns expected value' ); + t.end(); +}); + +tape( 'if provided a `stride` parameter equal to `0`, the function returns the first indexed element', opts, function test( t ) { + var x; + var v; + + x = new Float32Array( [ 1.0, -2.0, -4.0, 5.0, 3.0 ] ); + + v = dsmean( x.length, x, 0, 0 ); + t.strictEqual( v, 1.0, 'returns expected value' ); + + t.end(); +}); + +tape( 'the function supports an `offset` parameter', opts, function test( t ) { + var x; + var v; + + x = new Float32Array([ + 2.0, + 1.0, // 0 + 2.0, + -2.0, // 1 + -2.0, + 2.0, // 2 + 3.0, + 4.0 // 3 + ]); + + v = dsmean( 4, x, 2, 1 ); + t.strictEqual( v, 1.25, 'returns expected value' ); + + t.end(); +}); From 962a19bd9b54539a209fd731c36067a2905aefa2 Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Tue, 31 Dec 2024 22:25:46 +0530 Subject: [PATCH 07/19] fix: bench error --- .../@stdlib/stats/base/dsmean/lib/ndarray.js | 2 +- lib/node_modules/@stdlib/stats/base/dsmean/manifest.json | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.js b/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.js index 6386a7702364..47151caf8708 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/lib/ndarray.js @@ -39,7 +39,7 @@ var dsmeanpn = require( '@stdlib/stats/base/dsmeanpn' ).ndarray; * * var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); * -* var v = dsmean( N, x, 2, 1 ); +* var v = dsmean( 4, x, 2, 1 ); * // returns 1.25 */ function dsmean( N, x, strideX, offsetX ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/manifest.json b/lib/node_modules/@stdlib/stats/base/dsmean/manifest.json index 4bb993838bae..af6b270732d0 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/manifest.json +++ b/lib/node_modules/@stdlib/stats/base/dsmean/manifest.json @@ -61,7 +61,8 @@ "libpath": [], "dependencies": [ "@stdlib/blas/base/shared", - "@stdlib/strided/base/stride2offset" + "@stdlib/strided/base/stride2offset", + "@stdlib/stats/base/dsmeanpn" ] }, { @@ -77,7 +78,8 @@ "libpath": [], "dependencies": [ "@stdlib/blas/base/shared", - "@stdlib/strided/base/stride2offset" + "@stdlib/strided/base/stride2offset", + "@stdlib/stats/base/dsmeanpn" ] }, { @@ -93,7 +95,8 @@ "libpath": [], "dependencies": [ "@stdlib/blas/base/shared", - "@stdlib/strided/base/stride2offset" + "@stdlib/strided/base/stride2offset", + "@stdlib/stats/base/dsmeanpn" ] } ] From c2f2f7500c97d584ce59bfa53472b476688f360f Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Fri, 3 Jan 2025 12:40:36 +0530 Subject: [PATCH 08/19] chore: minor clean up --- .../@stdlib/stats/base/dsmean/README.md | 27 +++++++++++++------ .../stats/base/dsmean/benchmark/benchmark.js | 26 +++++++++++------- .../base/dsmean/benchmark/benchmark.native.js | 22 +++++++++++---- .../dsmean/benchmark/benchmark.ndarray.js | 26 +++++++++++------- .../benchmark/benchmark.ndarray.native.js | 22 +++++++++++---- .../stats/base/dsmean/examples/index.js | 14 +++++++--- .../@stdlib/stats/base/dsmean/src/addon.c | 2 +- .../@stdlib/stats/base/dsmean/src/main.c | 10 +++---- 8 files changed, 103 insertions(+), 46 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index 8663aefee7ed..894d053d5740 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -51,7 +51,7 @@ The [arithmetic mean][arithmetic-mean] is defined as var dsmean = require( '@stdlib/stats/base/dsmean' ); ``` -#### dsmean( N, x, stride ) +#### dsmean( N, x, strideX ) Computes the [arithmetic mean][arithmetic-mean] of a single-precision floating-point strided array `x` using extended accumulation and returning an extended precision result. @@ -68,15 +68,17 @@ The function has the following parameters: - **N**: number of indexed elements. - **x**: input [`Float32Array`][@stdlib/array/float32]. -- **stride**: index increment for `x`. +- **strideX**: stride length for `x`. -The `N` and `stride` parameters determine which elements in `x` are accessed at runtime. For example, to compute the [arithmetic mean][arithmetic-mean] of every other element in `x`, +The `N` and stride parameters determine which elements in `x` are accessed at runtime. For example, to compute the [arithmetic mean][arithmetic-mean] of every other element in `x`, ```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 v = dsmean( 4, x, 2 ); +// returns 1.25 ``` Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views. @@ -88,6 +90,9 @@ var Float32Array = require( '@stdlib/array/float32' ); var x0 = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + +var v = dsmean( 4, x1, 2 ); +// returns 1.25 ``` #### dsmean.ndarray( N, x, strideX, offsetX ) @@ -98,6 +103,9 @@ Computes the [arithmetic mean][arithmetic-mean] of a single-precision floating-p var Float32Array = require( '@stdlib/array/float32' ); var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); + +var v = dsmean.ndarray( x.length, x, 1, 0 ); +// returns ~0.33333 ``` The function has the following additional parameters: @@ -110,6 +118,9 @@ While [`typed array`][mdn-typed-array] views mandate a view offset based on the var Float32Array = require( '@stdlib/array/float32' ); var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] ); + +var v = dsmean.ndarray( 4, x, 2, 1 ); +// returns 1.25 ``` @@ -171,7 +182,7 @@ console.log( v ); Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and returning an extended precision result. ```c -const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 0.0/0.0, 0.0/0.0 }; +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; double v = stdlib_strided_dsmean( 4, x, 2 ); // returns 1.25 @@ -192,7 +203,7 @@ double stdlib_strided_dsmean( const CBLAS_INT N, const double *X, const CBLAS_IN Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and alternative indexing semantics and returning an extended precision result. ```c -const double x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 0.0/0.0, 0.0/0.0 }; +const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; double v = stdlib_strided_dsmean_ndarray( 4, x, 2, 0 ); // returns 1.25 @@ -233,13 +244,13 @@ double stdlib_strided_dsmean_ndarray( const CBLAS_INT N, const double *X, const int main( void ) { // Create a strided array: - float x[] = { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0 }; + const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; // Specify the number of elements: const int N = 4; // Specify the stride length: - const int stride = 2; + const int strideX = 2; // Compute the arithmetic mean: double v = stdlib_strided_dsmean( N, x, strideX ); diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js index 90e79ad9b14b..28df539be0be 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js @@ -21,22 +21,30 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/array/uniform' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var bernoulli = require( '@stdlib/random/base/bernoulli' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var dsmean = require( './../lib/dsmean.js' ); -// VARIABLES // - -var options = { - 'dtype': 'float32' -}; - - // FUNCTIONS // +/** +* Returns a random value or `NaN`. +* +* @private +* @returns {number} random number or `NaN` +*/ +function rand() { + if ( bernoulli( 0.2 ) ) { + return NaN; + } + return uniform( -10.0, 10.0 ); +} + /** * Creates a benchmark function. * @@ -45,7 +53,7 @@ var options = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = uniform( len, -10.0, 10.0, options ); + var x = filledarrayBy( len, 'float32', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js index 11cd6a06ecf0..c35d664e18ce 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js @@ -22,7 +22,9 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/array/uniform' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var bernoulli = require( '@stdlib/random/base/bernoulli' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -35,13 +37,23 @@ var dsmean = tryRequire( resolve( __dirname, './../lib/dsmean.native.js' ) ); var opts = { 'skip': ( dsmean instanceof Error ) }; -var options = { - 'dtype': 'float32' -}; // FUNCTIONS // +/** +* Returns a random value or `NaN`. +* +* @private +* @returns {number} random number or `NaN` +*/ +function rand() { + if ( bernoulli( 0.2 ) ) { + return NaN; + } + return uniform( -10.0, 10.0 ); +} + /** * Creates a benchmark function. * @@ -50,7 +62,7 @@ var options = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = uniform( len, -10.0, 10.0, options ); + var x = filledarrayBy( len, 'float32', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js index 56e033893a7a..42d402c8d751 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js @@ -21,22 +21,30 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/array/uniform' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var bernoulli = require( '@stdlib/random/base/bernoulli' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var dsmean = require( './../lib/ndarray.js' ); -// VARIABLES // - -var options = { - 'dtype': 'float32' -}; - - // FUNCTIONS // +/** +* Returns a random value or `NaN`. +* +* @private +* @returns {number} random number or `NaN` +*/ +function rand() { + if ( bernoulli( 0.2 ) ) { + return NaN; + } + return uniform( -10.0, 10.0 ); +} + /** * Creates a benchmark function. * @@ -45,7 +53,7 @@ var options = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = uniform( len, -10.0, 10.0, options ); + var x = filledarrayBy( len, 'float32', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js index a85845f539da..033184985614 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js @@ -22,7 +22,9 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/array/uniform' ); +var uniform = require( '@stdlib/random/base/uniform' ); +var bernoulli = require( '@stdlib/random/base/bernoulli' ); +var filledarrayBy = require( '@stdlib/array/filled-by' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -35,13 +37,23 @@ var dsmean = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); var opts = { 'skip': ( dsmean instanceof Error ) }; -var options = { - 'dtype': 'float32' -}; // FUNCTIONS // +/** +* Returns a random value or `NaN`. +* +* @private +* @returns {number} random number or `NaN` +*/ +function rand() { + if ( bernoulli( 0.2 ) ) { + return NaN; + } + return uniform( -10.0, 10.0 ); +} + /** * Creates a benchmark function. * @@ -50,7 +62,7 @@ var options = { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = uniform( len, -10.0, 10.0, options ); + var x = filledarrayBy( len, 'float32', rand ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js b/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js index 7429d8fbd828..e77b5cd218b5 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js @@ -18,12 +18,18 @@ 'use strict'; -var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var randu = require( '@stdlib/random/base/randu' ); +var round = require( '@stdlib/math/base/special/round' ); +var Float32Array = require( '@stdlib/array/float32' ); var dsmean = require( './../lib' ); -var x = discreteUniform( 10, -50, 50, { - 'dtype': 'float32' -}); +var x; +var i; + +x = new Float32Array( 10 ); +for ( i = 0; i < x.length; i++ ) { + x[ i ] = round( (randu()*100.0) - 50.0 ); +} console.log( x ); var v = dsmean( x.length, x, 1 ); diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c b/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c index d9d2ff534d19..e22ea09ab563 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c +++ b/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c @@ -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/stats/base/dsmean/src/main.c b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c index 9d40ce1fd1f2..303800e225cd 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c @@ -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. @@ -24,10 +24,10 @@ /** * Computes the arithmetic mean of a single-precision floating-point strided array using extended accumulation and returning an extended precision result. * -* @param N number of indexed elements -* @param X input array -* @param stride stride length -* @return output value +* @param N number of indexed elements +* @param X input array +* @param strideX stride length +* @return output value */ double API_SUFFIX(stdlib_strided_dsmean)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX ) { const CBLAS_INT ox = stdlib_strided_stride2offset( N, strideX ); From 3590eae392826b64cf6adf3bb31f69e27b53946e Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Fri, 3 Jan 2025 13:15:08 +0530 Subject: [PATCH 09/19] chore: bench clean up --- .../@stdlib/stats/base/dsmean/README.md | 16 ++++-------- .../stats/base/dsmean/benchmark/benchmark.js | 26 +++++++------------ .../base/dsmean/benchmark/benchmark.native.js | 22 ++++------------ .../dsmean/benchmark/benchmark.ndarray.js | 26 +++++++------------ .../benchmark/benchmark.ndarray.native.js | 22 ++++------------ .../stats/base/dsmean/examples/index.js | 14 +++------- 6 files changed, 37 insertions(+), 89 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index 894d053d5740..719128a716c7 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -145,18 +145,12 @@ var v = dsmean.ndarray( 4, x, 2, 1 ); ```javascript -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float32Array = require( '@stdlib/array/float32' ); -var dsmean = require( '@stdlib/stats/base/dsmean' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); +var dsmean = require( './../lib' ); -var x; -var i; - -x = new Float32Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( (randu()*100.0) - 50.0 ); -} +var x = discreteUniform( 10, -50, 50, { + 'dtype': 'float32' +}); console.log( x ); var v = dsmean( x.length, x, 1 ); diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js index 28df539be0be..90e79ad9b14b 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.js @@ -21,29 +21,21 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/base/uniform' ); -var bernoulli = require( '@stdlib/random/base/bernoulli' ); -var filledarrayBy = require( '@stdlib/array/filled-by' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var dsmean = require( './../lib/dsmean.js' ); -// FUNCTIONS // +// VARIABLES // -/** -* Returns a random value or `NaN`. -* -* @private -* @returns {number} random number or `NaN` -*/ -function rand() { - if ( bernoulli( 0.2 ) ) { - return NaN; - } - return uniform( -10.0, 10.0 ); -} +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // /** * Creates a benchmark function. @@ -53,7 +45,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float32', rand ); + var x = uniform( len, -10.0, 10.0, options ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js index c35d664e18ce..11cd6a06ecf0 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.native.js @@ -22,9 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/base/uniform' ); -var bernoulli = require( '@stdlib/random/base/bernoulli' ); -var filledarrayBy = require( '@stdlib/array/filled-by' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -37,23 +35,13 @@ var dsmean = tryRequire( resolve( __dirname, './../lib/dsmean.native.js' ) ); var opts = { 'skip': ( dsmean instanceof Error ) }; +var options = { + 'dtype': 'float32' +}; // FUNCTIONS // -/** -* Returns a random value or `NaN`. -* -* @private -* @returns {number} random number or `NaN` -*/ -function rand() { - if ( bernoulli( 0.2 ) ) { - return NaN; - } - return uniform( -10.0, 10.0 ); -} - /** * Creates a benchmark function. * @@ -62,7 +50,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float32', rand ); + var x = uniform( len, -10.0, 10.0, options ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js index 42d402c8d751..56e033893a7a 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.js @@ -21,29 +21,21 @@ // MODULES // var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/base/uniform' ); -var bernoulli = require( '@stdlib/random/base/bernoulli' ); -var filledarrayBy = require( '@stdlib/array/filled-by' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var pkg = require( './../package.json' ).name; var dsmean = require( './../lib/ndarray.js' ); -// FUNCTIONS // +// VARIABLES // -/** -* Returns a random value or `NaN`. -* -* @private -* @returns {number} random number or `NaN` -*/ -function rand() { - if ( bernoulli( 0.2 ) ) { - return NaN; - } - return uniform( -10.0, 10.0 ); -} +var options = { + 'dtype': 'float32' +}; + + +// FUNCTIONS // /** * Creates a benchmark function. @@ -53,7 +45,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float32', rand ); + var x = uniform( len, -10.0, 10.0, options ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js index 033184985614..a85845f539da 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/benchmark/benchmark.ndarray.native.js @@ -22,9 +22,7 @@ var resolve = require( 'path' ).resolve; var bench = require( '@stdlib/bench' ); -var uniform = require( '@stdlib/random/base/uniform' ); -var bernoulli = require( '@stdlib/random/base/bernoulli' ); -var filledarrayBy = require( '@stdlib/array/filled-by' ); +var uniform = require( '@stdlib/random/array/uniform' ); var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); var tryRequire = require( '@stdlib/utils/try-require' ); @@ -37,23 +35,13 @@ var dsmean = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) ); var opts = { 'skip': ( dsmean instanceof Error ) }; +var options = { + 'dtype': 'float32' +}; // FUNCTIONS // -/** -* Returns a random value or `NaN`. -* -* @private -* @returns {number} random number or `NaN` -*/ -function rand() { - if ( bernoulli( 0.2 ) ) { - return NaN; - } - return uniform( -10.0, 10.0 ); -} - /** * Creates a benchmark function. * @@ -62,7 +50,7 @@ function rand() { * @returns {Function} benchmark function */ function createBenchmark( len ) { - var x = filledarrayBy( len, 'float32', rand ); + var x = uniform( len, -10.0, 10.0, options ); return benchmark; function benchmark( b ) { diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js b/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js index e77b5cd218b5..7429d8fbd828 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/examples/index.js @@ -18,18 +18,12 @@ 'use strict'; -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var Float32Array = require( '@stdlib/array/float32' ); +var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); var dsmean = require( './../lib' ); -var x; -var i; - -x = new Float32Array( 10 ); -for ( i = 0; i < x.length; i++ ) { - x[ i ] = round( (randu()*100.0) - 50.0 ); -} +var x = discreteUniform( 10, -50, 50, { + 'dtype': 'float32' +}); console.log( x ); var v = dsmean( x.length, x, 1 ); From 853a6f5b6eae4994fc1badf1f17ee901f9904baa Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Fri, 3 Jan 2025 14:07:05 +0530 Subject: [PATCH 10/19] fix: lint error --- lib/node_modules/@stdlib/stats/base/dsmean/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index 719128a716c7..20e82f4c25c2 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -146,10 +146,10 @@ var v = dsmean.ndarray( 4, x, 2, 1 ); ```javascript var discreteUniform = require( '@stdlib/random/array/discrete-uniform' ); -var dsmean = require( './../lib' ); +var dsmean = require( '@stdlib/stats/base/dsmean' ); var x = discreteUniform( 10, -50, 50, { - 'dtype': 'float32' + 'dtype': 'float32' }); console.log( x ); From 47b8bf452a707bad132b4dbbc824d7d0649d8537 Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Sat, 4 Jan 2025 22:53:01 +0530 Subject: [PATCH 11/19] fix: source clean up --- lib/node_modules/@stdlib/stats/base/dsmean/README.md | 4 ++-- lib/node_modules/@stdlib/stats/base/dsmean/src/main.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index 20e82f4c25c2..e71e7e6779cc 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -179,7 +179,7 @@ Computes the arithmetic mean of a single-precision floating-point strided array const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; double v = stdlib_strided_dsmean( 4, x, 2 ); -// returns 1.25 +// returns 4.0 ``` The function accepts the following arguments: @@ -200,7 +200,7 @@ Computes the arithmetic mean of a single-precision floating-point strided array const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; double v = stdlib_strided_dsmean_ndarray( 4, x, 2, 0 ); -// returns 1.25 +// returns 4.0 ``` The function accepts the following arguments: diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c index 303800e225cd..c65d2b705af0 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c @@ -44,5 +44,5 @@ double API_SUFFIX(stdlib_strided_dsmean)( const CBLAS_INT N, const float *X, con * @return output value */ double API_SUFFIX(stdlib_strided_dsmean_ndarray)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) { - return stdlib_strided_dsmeanpn( N, X, strideX ); + return stdlib_strided_dsmeanpn_ndarray( N, X, strideX, offsetX ); } From e250a2ab0673b9e06ef11e0c24367120a2d4ba6b Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Sat, 18 Jan 2025 18:40:49 +0530 Subject: [PATCH 12/19] chore: minor clean up --- lib/node_modules/@stdlib/stats/base/dsmean/README.md | 4 ++-- lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c | 4 ++-- lib/node_modules/@stdlib/stats/base/dsmean/src/main.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index e71e7e6779cc..562e76c2da5c 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -173,7 +173,7 @@ console.log( v ); #### stdlib_strided_dsmean( N, \*X, strideX ) -Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and returning an extended precision result. +Computes the arithmetic mean of a single-precision floating-point strided array using extended accumulation and returning an extended precision result. ```c const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; @@ -194,7 +194,7 @@ double stdlib_strided_dsmean( const CBLAS_INT N, const double *X, const CBLAS_IN #### stdlib_strided_dsmean_ndarray( N, \*X, strideX, offsetX ) -Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and alternative indexing semantics and returning an extended precision result. +Computes the arithmetic mean of a single-precision floating-point strided array using extended accumulation and alternative indexing semantics and returning an extended precision result. ```c const float x[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f }; diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c b/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c index e22ea09ab563..99c7b646aa9b 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c +++ b/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c @@ -36,7 +36,7 @@ static napi_value addon( napi_env env, napi_callback_info info ) { STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); - STDLIB_NAPI_CREATE_DOUBLE( env, stdlib_strided_dsmean( N, X, strideX ), v ); + STDLIB_NAPI_CREATE_DOUBLE( env, API_SUFFIX( stdlib_strided_dsmean )( N, X, strideX ), v ); return v; } @@ -53,7 +53,7 @@ static napi_value addon_method( napi_env env, napi_callback_info info ) { STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); - STDLIB_NAPI_CREATE_DOUBLE( env, stdlib_strided_dsmean_ndarray( N, X, strideX, offsetX ), v ); + STDLIB_NAPI_CREATE_DOUBLE( env, API_SUFFIX( stdlib_strided_dsmean_ndarray )( N, X, strideX, offsetX ), v ); return v; } diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c index c65d2b705af0..7f361c55943f 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2025 The Stdlib Authors. +* 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. From b94ae378bf72b60fcbe83009e1c40091ed6d4b30 Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Sat, 18 Jan 2025 22:24:46 +0530 Subject: [PATCH 13/19] chore: update addon --- lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c b/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c index 99c7b646aa9b..bf0bbd574374 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c +++ b/lib/node_modules/@stdlib/stats/base/dsmean/src/addon.c @@ -22,7 +22,7 @@ #include "stdlib/napi/argv_int64.h" #include "stdlib/napi/argv_strided_float32array.h" #include "stdlib/napi/create_double.h" -#include +#include "stdlib/blas/base/shared.h" /** * Receives JavaScript callback invocation data. @@ -36,7 +36,7 @@ static napi_value addon( napi_env env, napi_callback_info info ) { STDLIB_NAPI_ARGV_INT64( env, N, argv, 0 ); STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); - STDLIB_NAPI_CREATE_DOUBLE( env, API_SUFFIX( stdlib_strided_dsmean )( N, X, strideX ), v ); + STDLIB_NAPI_CREATE_DOUBLE( env, API_SUFFIX(stdlib_strided_dsmean)( N, X, strideX ), v ); return v; } @@ -53,7 +53,7 @@ static napi_value addon_method( napi_env env, napi_callback_info info ) { STDLIB_NAPI_ARGV_INT64( env, strideX, argv, 2 ); STDLIB_NAPI_ARGV_INT64( env, offsetX, argv, 3 ); STDLIB_NAPI_ARGV_STRIDED_FLOAT32ARRAY( env, X, N, strideX, argv, 1 ); - STDLIB_NAPI_CREATE_DOUBLE( env, API_SUFFIX( stdlib_strided_dsmean_ndarray )( N, X, strideX, offsetX ), v ); + STDLIB_NAPI_CREATE_DOUBLE( env, API_SUFFIX(stdlib_strided_dsmean_ndarray)( N, X, strideX, offsetX ), v ); return v; } From 1297c71da9c5578c9fa238246d01dd6e7ce742c9 Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Sun, 19 Jan 2025 12:01:22 +0530 Subject: [PATCH 14/19] chore: minor clean up --- .../@stdlib/stats/base/dsmean/docs/repl.txt | 10 +++++----- .../base/dsmean/include/stdlib/stats/base/dsmean.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt b/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt index 0f95e41e2e2b..98a5cc9ace0a 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt +++ b/lib/node_modules/@stdlib/stats/base/dsmean/docs/repl.txt @@ -33,18 +33,18 @@ // Standard Usage: > var x = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 2.0 ] ); > {{alias}}( x.length, x, 1 ) - ~0.333 + ~0.3333 // Using `N` and stride parameters: > x = new {{alias:@stdlib/array/float32}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0 ] ); > {{alias}}( 3, x, 2 ) - ~0.333 + ~0.3333 // 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 ); > {{alias}}( 3, x1, 2 ) - ~-0.333 + ~-0.3333 {{alias}}.ndarray( N, x, strideX, offsetX ) @@ -80,12 +80,12 @@ // Standard Usage: > var x = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 2.0 ] ); > {{alias}}.ndarray( x.length, x, 1, 0 ) - ~0.333 + ~0.3333 // Using offset parameter: > var x = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] ); > {{alias}}.ndarray( 3, x, 2, 1 ) - ~-0.333 + ~-0.3333 See Also -------- diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/include/stdlib/stats/base/dsmean.h b/lib/node_modules/@stdlib/stats/base/dsmean/include/stdlib/stats/base/dsmean.h index 86a3e9c2c22c..ec1509a04174 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/include/stdlib/stats/base/dsmean.h +++ b/lib/node_modules/@stdlib/stats/base/dsmean/include/stdlib/stats/base/dsmean.h @@ -29,12 +29,12 @@ extern "C" { #endif /** -* Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and returning an extended precision result. +* Computes the arithmetic mean of a single-precision floating-point strided array using extended accumulation and returning an extended precision result. */ double API_SUFFIX(stdlib_strided_dsmean)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX ); /** -* Computes the arithmetic mean of a single-precision floating-point strided array `x` using extended accumulation and alternative indexing semantics and returning an extended precision result. +* Computes the arithmetic mean of a single-precision floating-point strided array using extended accumulation and alternative indexing semantics and returning an extended precision result. */ double API_SUFFIX(stdlib_strided_dsmean_ndarray)( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); From 2717e0460868d38f2821c24905ae189ad8b50410 Mon Sep 17 00:00:00 2001 From: stdlib-bot <82920195+stdlib-bot@users.noreply.github.com> Date: Sun, 19 Jan 2025 06:35:18 +0000 Subject: [PATCH 15/19] chore: update copyright years --- lib/node_modules/@stdlib/stats/base/dsmean/src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c index 7f361c55943f..c65d2b705af0 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c +++ b/lib/node_modules/@stdlib/stats/base/dsmean/src/main.c @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2020 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 4b9421162f87e6a1225ee3debf98f752918dd419 Mon Sep 17 00:00:00 2001 From: Athan Date: Mon, 3 Feb 2025 00:25:03 -0800 Subject: [PATCH 16/19] docs: update return annotation Signed-off-by: Athan --- lib/node_modules/@stdlib/stats/base/dsmean/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index 562e76c2da5c..841758678c0e 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -61,7 +61,7 @@ var Float32Array = require( '@stdlib/array/float32' ); var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); var v = dsmean( x.length, x, 1 ); -// returns ~0.333 +// returns ~0.33333 ``` The function has the following parameters: From 2ab9bc57069a6948e7c99cba370a8eca6dbb53ab Mon Sep 17 00:00:00 2001 From: Neerajpathak07 Date: Mon, 3 Feb 2025 15:11:08 +0530 Subject: [PATCH 17/19] chore: suggestions from code review --- .../@stdlib/stats/base/dsmean/README.md | 8 ++++---- .../stats/base/dsmean/docs/types/index.d.ts | 2 +- .../stats/base/dsmean/test/test.dsmean.js | 18 +++++++++++------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index 562e76c2da5c..13621e549775 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -185,11 +185,11 @@ double v = stdlib_strided_dsmean( 4, x, 2 ); The function accepts the following arguments: - **N**: `[in] CBLAS_INT` number of indexed elements. -- **X**: `[in] double*` input array. +- **X**: `[in] float*` input array. - **strideX**: `[in] CBLAS_INT` stride length for `X`. ```c -double stdlib_strided_dsmean( const CBLAS_INT N, const double *X, const CBLAS_INT strideX ); +double stdlib_strided_dsmean( const CBLAS_INT N, const float *X, const CBLAS_INT strideX ); ``` #### stdlib_strided_dsmean_ndarray( N, \*X, strideX, offsetX ) @@ -206,12 +206,12 @@ double v = stdlib_strided_dsmean_ndarray( 4, x, 2, 0 ); The function accepts the following arguments: - **N**: `[in] CBLAS_INT` number of indexed elements. -- **X**: `[in] double*` input array. +- **X**: `[in] float*` input array. - **strideX**: `[in] CBLAS_INT` stride length for `X`. - **offsetX**: `[in] CBLAS_INT` starting index for `X`. ```c -double stdlib_strided_dsmean_ndarray( const CBLAS_INT N, const double *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); +double stdlib_strided_dsmean_ndarray( const CBLAS_INT N, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ); ``` diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/docs/types/index.d.ts b/lib/node_modules/@stdlib/stats/base/dsmean/docs/types/index.d.ts index 06f4740a3528..fb2445b409b9 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/docs/types/index.d.ts +++ b/lib/node_modules/@stdlib/stats/base/dsmean/docs/types/index.d.ts @@ -82,7 +82,7 @@ interface Routine { * var x = new Float32Array( [ 1.0, -2.0, 2.0 ] ); * * var v = dsmean.ndarray( x.length, x, 1, 0 ); -* // returns ~1.25 +* // returns ~0.3333 */ declare var dsmean: Routine; diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js index 5bc9facd17c2..6ddc3bbda10d 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js @@ -100,7 +100,7 @@ tape( 'the function supports a `stride` parameter', function test( t ) { 2.0 ]); - v = dsmean( 4, x, 2, 0 ); + v = dsmean( 4, x, 2 ); t.strictEqual( v, 1.25, 'returns expected value' ); t.end(); @@ -121,7 +121,7 @@ tape( 'the function supports a negative `stride` parameter', function test( t ) 2.0 ]); - v = dsmean( 4, x, -2, 6 ); + v = dsmean( 4, x, -2 ); t.strictEqual( v, 1.25, 'returns expected value' ); t.end(); @@ -139,11 +139,12 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f t.end(); }); -tape( 'the function supports an `offset` parameter', function test( t ) { - var x; +tape( 'the function supports view offsets', function test( t ) { + var x0; + var x1; var v; - x = new Float32Array([ + x0 = new Float32Array([ 2.0, 1.0, // 0 2.0, @@ -151,10 +152,13 @@ tape( 'the function supports an `offset` parameter', function test( t ) { -2.0, 2.0, // 2 3.0, - 4.0 // 3 + 4.0, // 3 + 6.0 ]); - v = dsmean( 4, x, 2, 1 ); + x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element + + v = dsmean( 4, x1, 2 ); t.strictEqual( v, 1.25, 'returns expected value' ); t.end(); From aa461138c995d82caff7b93aa68da3edf477aa7c Mon Sep 17 00:00:00 2001 From: Athan Date: Wed, 5 Feb 2025 02:22:57 -0800 Subject: [PATCH 18/19] docs: fix include path Signed-off-by: Athan --- lib/node_modules/@stdlib/stats/base/dsmean/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/README.md b/lib/node_modules/@stdlib/stats/base/dsmean/README.md index 8a5884aff8db..a0085f7dcf51 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/README.md +++ b/lib/node_modules/@stdlib/stats/base/dsmean/README.md @@ -168,7 +168,7 @@ console.log( v ); ### Usage ```c -#include "stdlib/stats/base/dnanmax.h" +#include "stdlib/stats/base/dsmean.h" ``` #### stdlib_strided_dsmean( N, \*X, strideX ) From 69e52612471526862986416b5c4da631a2ad618f Mon Sep 17 00:00:00 2001 From: Athan Date: Wed, 5 Feb 2025 02:24:28 -0800 Subject: [PATCH 19/19] test: fix invocation Signed-off-by: Athan --- lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js index 6ddc3bbda10d..aceb276b342b 100644 --- a/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js +++ b/lib/node_modules/@stdlib/stats/base/dsmean/test/test.dsmean.js @@ -133,7 +133,7 @@ tape( 'if provided a `stride` parameter equal to `0`, the function returns the f x = new Float32Array( [ 1.0, -2.0, -4.0, 5.0, 3.0 ] ); - v = dsmean( x.length, x, 0, 0 ); + v = dsmean( x.length, x, 0 ); t.strictEqual( v, 1.0, 'returns expected value' ); t.end();