Skip to content

refactor: update blas/ext/base/dssum to follow current projects conventions #1861

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 9 additions & 24 deletions lib/node_modules/@stdlib/blas/ext/base/dssum/README.md
Original file line number Diff line number Diff line change
@@ -56,16 +56,14 @@ The function has the following parameters:
- **x**: input [`Float32Array`][@stdlib/array/float32].
- **stride**: index increment for `x`.

The `N` and `stride` parameters determine which elements in `x` are accessed at runtime. For example, to compute the sum of every other element in `x`,
The `N` and `stride` parameters determine which elements in the strided array are accessed at runtime. For example, to compute the sum of every other element in the strided 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 N = floor( x.length / 2 );

var v = dssum( N, x, 2 );
var v = dssum( 4, x, 2 );
// returns 5.0
```

@@ -75,14 +73,11 @@ 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 = dssum( N, x1, 2 );
var v = dssum( 4, x1, 2 );
// returns 5.0
```

@@ -94,26 +89,23 @@ Computes the sum of single-precision floating-point strided array elements using
var Float32Array = require( '@stdlib/array/float32' );

var x = new Float32Array( [ 1.0, -2.0, 2.0 ] );
var N = x.length;

var v = dssum.ndarray( N, x, 1, 0 );
var v = dssum.ndarray( 3, x, 1, 0 );
// returns 1.0
```

The function has the following additional parameters:

- **offset**: 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 sum of 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 sum of every other value in the strided array 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 = dssum.ndarray( N, x, 2, 1 );
var v = dssum.ndarray( 4, x, 2, 1 );
// returns 5.0
```

@@ -139,18 +131,11 @@ var v = dssum.ndarray( N, x, 2, 1 );
<!-- eslint no-undef: "error" -->

```javascript
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/base/discrete-uniform' ).factory;
var filledarrayBy = require( '@stdlib/array/filled-by' );
var dssum = require( '@stdlib/blas/ext/base/dssum' );

var x;
var i;

x = new Float32Array( 10 );
for ( i = 0; i < x.length; i++ ) {
x[ i ] = round( randu()*100.0 );
}
var x = filledarrayBy( 10, 'float32', discreteUniform( 0, 100 ) );
console.log( x );

var v = dssum( x.length, x, 1 );
Original file line number Diff line number Diff line change
@@ -21,14 +21,19 @@
// 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 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 dssum = require( './../lib/dssum.js' );


// VARIABLES //

var rand = uniform( -10.0, 10.0 );


// FUNCTIONS //

/**
@@ -39,13 +44,7 @@ var dssum = require( './../lib/dssum.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()*10.0 ) - 20.0;
}
var x = filledarrayBy( len, 'float32', rand );
return benchmark;

function benchmark( b ) {
Original file line number Diff line number Diff line change
@@ -22,10 +22,10 @@

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 isnan = require( '@stdlib/math/base/assert/is-nan' );
var pow = require( '@stdlib/math/base/special/pow' );
var Float32Array = require( '@stdlib/array/float32' );
var tryRequire = require( '@stdlib/utils/try-require' );
var pkg = require( './../package.json' ).name;

@@ -36,6 +36,7 @@ var dssum = tryRequire( resolve( __dirname, './../lib/dssum.native.js' ) );
var opts = {
'skip': ( dssum instanceof Error )
};
var rand = uniform( -10.0, 10.0 );


// FUNCTIONS //
@@ -48,13 +49,7 @@ var opts = {
* @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()*10.0 ) - 20.0;
}
var x = filledarrayBy( len, 'float32', rand );
return benchmark;

function benchmark( b ) {
Original file line number Diff line number Diff line change
@@ -21,14 +21,19 @@
// 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 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 dssum = require( './../lib/ndarray.js' );


// VARIABLES //

var rand = uniform( -10.0, 10.0 );


// FUNCTIONS //

/**
@@ -39,13 +44,7 @@ var dssum = 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()*10.0 ) - 20.0;
}
var x = filledarrayBy( len, 'float32', rand );
return benchmark;

function benchmark( b ) {
Original file line number Diff line number Diff line change
@@ -22,10 +22,10 @@

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 isnan = require( '@stdlib/math/base/assert/is-nan' );
var pow = require( '@stdlib/math/base/special/pow' );
var Float32Array = require( '@stdlib/array/float32' );
var tryRequire = require( '@stdlib/utils/try-require' );
var pkg = require( './../package.json' ).name;

@@ -36,6 +36,7 @@ var dssum = tryRequire( resolve( __dirname, './../lib/ndarray.native.js' ) );
var opts = {
'skip': ( dssum instanceof Error )
};
var rand = uniform( -10.0, 10.0 );


// FUNCTIONS //
@@ -48,13 +49,7 @@ var opts = {
* @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()*10.0 ) - 20.0;
}
var x = filledarrayBy( len, 'float32', rand );
return benchmark;

function benchmark( b ) {
16 changes: 6 additions & 10 deletions lib/node_modules/@stdlib/blas/ext/base/dssum/docs/repl.txt
Original file line number Diff line number Diff line change
@@ -3,8 +3,8 @@
Computes the sum of single-precision floating-point strided array elements
using extended accumulation and returning an extended precision result.

The `N` and `stride` parameters determine which elements in `x` are accessed
at runtime.
The `N` and `stride` parameters determine which elements in the strided
array are accessed at runtime.

Indexing is relative to the first index. To introduce an offset, use a typed
array view.
@@ -36,19 +36,16 @@

// Using `N` and `stride` parameters:
> x = new {{alias:@stdlib/array/float32}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0 ] );
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
> var stride = 2;
> {{alias}}( N, x, stride )
> {{alias}}( 3, x, 2 )
1.0

// 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 );
> N = {{alias:@stdlib/math/base/special/floor}}( x0.length / 2 );
> stride = 2;
> {{alias}}( N, x1, stride )
> {{alias}}( 3, x1, 2 )
-1.0


{{alias}}.ndarray( N, x, stride, offset )
Computes the sum of single-precision floating-point strided array elements
using extended accumulation and alternative indexing semantics and returning
@@ -86,8 +83,7 @@

// Using offset parameter:
> var x = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] );
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
> {{alias}}.ndarray( N, x, 2, 1 )
> {{alias}}.ndarray(3, x, 2, 1 )
-1.0

See Also
13 changes: 3 additions & 10 deletions lib/node_modules/@stdlib/blas/ext/base/dssum/examples/index.js
Original file line number Diff line number Diff line change
@@ -18,18 +18,11 @@

'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/base/discrete-uniform' ).factory;
var filledarrayBy = require( '@stdlib/array/filled-by' );
var dssum = require( './../lib' );

var x;
var i;

x = new Float32Array( 10 );
for ( i = 0; i < x.length; i++ ) {
x[ i ] = round( randu()*100.0 );
}
var x = filledarrayBy( 10, 'float32', discreteUniform( 0, 100 ));
console.log( x );

var v = dssum( x.length, x, 1 );
2 changes: 1 addition & 1 deletion lib/node_modules/@stdlib/blas/ext/base/dssum/include.gypi
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@

# Source files:
'src_files': [
'<(src_dir)/addon.cpp',
'<(src_dir)/addon.c',
'<!@(node -e "var arr = require(\'@stdlib/utils/library-manifest\')(\'./manifest.json\',{},{\'basedir\':process.cwd(),\'paths\':\'posix\'}).src; for ( var i = 0; i < arr.length; i++ ) { console.log( arr[ i ] ); }")',
],

4 changes: 1 addition & 3 deletions lib/node_modules/@stdlib/blas/ext/base/dssum/lib/index.js
Original file line number Diff line number Diff line change
@@ -35,13 +35,11 @@
*
* @example
* var Float32Array = require( '@stdlib/array/float32' );
* var floor = require( '@stdlib/math/base/special/floor' );
* var dssum = require( '@stdlib/blas/ext/base/dssum' );
*
* 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 = dssum.ndarray( N, x, 2, 1 );
* var v = dssum.ndarray( 4, x, 2, 1 );
* // returns 5.0
*/

4 changes: 1 addition & 3 deletions lib/node_modules/@stdlib/blas/ext/base/dssum/lib/ndarray.js
Original file line number Diff line number Diff line change
@@ -36,12 +36,10 @@ var dssumpw = require( '@stdlib/blas/ext/base/dssumpw' ).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 N = floor( x.length / 2 );
*
* var v = dssum( N, x, 2, 1 );
* var v = dssum( 4, x, 2, 1 );
* // returns 5.0
*/
function dssum( N, x, stride, offset ) {
Original file line number Diff line number Diff line change
@@ -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( './dssum.native.js' );


@@ -37,20 +38,19 @@ var addon = require( './dssum.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 N = floor( x.length / 2 );
*
* var v = dssum( N, x, 2, 1 );
* var v = dssum( 4, x, 2, 1 );
* // returns 5.0
*/
function dssum( N, x, stride, offset ) {
var view;
if ( stride < 0 ) {
offset += (N-1) * stride;
}
view = new Float32Array( x.buffer, x.byteOffset+(x.BYTES_PER_ELEMENT*offset), x.length-offset ); // eslint-disable-line max-len

offset = minViewBufferIndex( N, stride, offset );

view = offsetView( x, offset );

return addon( N, view, stride );
}

4 changes: 3 additions & 1 deletion lib/node_modules/@stdlib/blas/ext/base/dssum/package.json
Original file line number Diff line number Diff line change
@@ -73,5 +73,7 @@
"single",
"float32array"
],
"__stdlib__": {}
"__stdlib__": {
"wasm": false
}
}
Loading