Skip to content

Commit 7cc8bb9

Browse files
refactor: update blas/ext/base/dsnannsumors
PR-URL: #2804 Closes: #1491 Ref: #1152 --------- Signed-off-by: Philipp Burckhardt <[email protected]> Co-authored-by: Philipp Burckhardt <[email protected]> Reviewed-by: Philipp Burckhardt <[email protected]>
1 parent d125530 commit 7cc8bb9

19 files changed

+254
-363
lines changed

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/README.md

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,16 @@ The function has the following parameters:
5959
- **out**: output [`Float64Array`][@stdlib/array/float64] whose first element is the sum and whose second element is the number of non-NaN elements.
6060
- **strideOut**: index increment for `out`.
6161

62-
The `N` and `stride` parameters determine which elements are accessed at runtime. For example, to compute the sum of every other element in `x`,
62+
The `N` and stride parameters determine which elements are accessed at runtime. For example, to compute the sum of every other element in `x`,
6363

6464
```javascript
6565
var Float32Array = require( '@stdlib/array/float32' );
6666
var Float64Array = require( '@stdlib/array/float64' );
67-
var floor = require( '@stdlib/math/base/special/floor' );
6867

6968
var x = new Float32Array( [ 1.0, 2.0, NaN, -7.0, NaN, 3.0, 4.0, 2.0 ] );
7069
var out = new Float64Array( 2 );
71-
var N = floor( x.length / 2 );
7270

73-
var v = dsnannsumors( N, x, 2, out, 1 );
71+
var v = dsnannsumors( 4, x, 2, out, 1 );
7472
// returns <Float64Array>[ 5.0, 2 ]
7573
```
7674

@@ -81,17 +79,14 @@ Note that indexing is relative to the first index. To introduce an offset, use [
8179
```javascript
8280
var Float32Array = require( '@stdlib/array/float32' );
8381
var Float64Array = require( '@stdlib/array/float64' );
84-
var floor = require( '@stdlib/math/base/special/floor' );
8582

8683
var x0 = new Float32Array( [ 2.0, 1.0, NaN, -2.0, -2.0, 2.0, 3.0, 4.0 ] );
8784
var x1 = new Float32Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
8885

8986
var out0 = new Float64Array( 4 );
9087
var out1 = new Float64Array( out0.buffer, out0.BYTES_PER_ELEMENT*2 ); // start at 3rd element
9188

92-
var N = floor( x0.length / 2 );
93-
94-
var v = dsnannsumors( N, x1, 2, out1, 1 );
89+
var v = dsnannsumors( 4, x1, 2, out1, 1 );
9590
// returns <Float64Array>[ 5.0, 4 ]
9691
```
9792

@@ -120,13 +115,11 @@ While [`typed array`][mdn-typed-array] views mandate a view offset based on the
120115
```javascript
121116
var Float32Array = require( '@stdlib/array/float32' );
122117
var Float64Array = require( '@stdlib/array/float64' );
123-
var floor = require( '@stdlib/math/base/special/floor' );
124118

125119
var x = new Float32Array( [ 2.0, 1.0, NaN, -2.0, -2.0, 2.0, 3.0, 4.0 ] );
126120
var out = new Float64Array( 4 );
127-
var N = floor( x.length / 2 );
128121

129-
var v = dsnannsumors.ndarray( N, x, 2, 1, out, 2, 1 );
122+
var v = dsnannsumors.ndarray( 4, x, 2, 1, out, 2, 1 );
130123
// returns <Float64Array>[ 0.0, 5.0, 0.0, 4 ]
131124
```
132125

@@ -152,23 +145,23 @@ var v = dsnannsumors.ndarray( N, x, 2, 1, out, 2, 1 );
152145
<!-- eslint no-undef: "error" -->
153146

154147
```javascript
155-
var randu = require( '@stdlib/random/base/randu' );
156-
var round = require( '@stdlib/math/base/special/round' );
148+
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
149+
var bernoulli = require( '@stdlib/random/base/bernoulli' );
150+
var filledarrayBy = require( '@stdlib/array/filled-by' );
157151
var Float32Array = require( '@stdlib/array/float32' );
158152
var Float64Array = require( '@stdlib/array/float64' );
159153
var dsnannsumors = require( '@stdlib/blas/ext/base/dsnannsumors' );
160154

161155
var x;
162-
var i;
163-
164-
x = new Float32Array( 10 );
165-
for ( i = 0; i < x.length; i++ ) {
166-
if ( randu() < 0.2 ) {
167-
x[ i ] = NaN;
168-
} else {
169-
x[ i ] = round( randu()*100.0 );
156+
157+
function rand() {
158+
if ( bernoulli( 0.5 ) < 0.2 ) {
159+
return NaN;
170160
}
161+
return discreteUniform( 0, 100 );
171162
}
163+
164+
x = filledarrayBy( 10, 'float32', rand );
172165
console.log( x );
173166

174167
var out = new Float64Array( 2 );

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/benchmark/benchmark.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24-
var randu = require( '@stdlib/random/base/randu' );
24+
var uniform = require( '@stdlib/random/base/uniform' );
25+
var bernoulli = require( '@stdlib/random/base/bernoulli' );
26+
var filledarrayBy = require( '@stdlib/array/filled-by' );
2527
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2628
var pow = require( '@stdlib/math/base/special/pow' );
27-
var Float32Array = require( '@stdlib/array/float32' );
2829
var Float64Array = require( '@stdlib/array/float64' );
2930
var pkg = require( './../package.json' ).name;
3031
var dsnannsumors = require( './../lib/dsnannsumors.js' );
@@ -42,19 +43,18 @@ var dsnannsumors = require( './../lib/dsnannsumors.js' );
4243
function createBenchmark( len ) {
4344
var out;
4445
var x;
45-
var i;
4646

47-
x = new Float32Array( len );
48-
for ( i = 0; i < len; i++ ) {
49-
if ( randu() < 0.2 ) {
50-
x[ i ] = NaN;
51-
} else {
52-
x[ i ] = ( randu()*10.0 ) - 20.0;
53-
}
54-
}
47+
x = filledarrayBy( len, 'float32', rand );
5548
out = new Float64Array( 2 );
5649
return benchmark;
5750

51+
function rand() {
52+
if ( bernoulli( 0.5 ) < 0.2 ) {
53+
return NaN;
54+
}
55+
return uniform( -10.0, 10.0 );
56+
}
57+
5858
function benchmark( b ) {
5959
var i;
6060

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/benchmark/benchmark.native.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@
2222

2323
var resolve = require( 'path' ).resolve;
2424
var bench = require( '@stdlib/bench' );
25-
var randu = require( '@stdlib/random/base/randu' );
25+
var uniform = require( '@stdlib/random/base/uniform' );
26+
var bernoulli = require( '@stdlib/random/base/bernoulli' );
27+
var filledarrayBy = require( '@stdlib/array/filled-by' );
2628
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2729
var pow = require( '@stdlib/math/base/special/pow' );
28-
var Float32Array = require( '@stdlib/array/float32' );
2930
var Float64Array = require( '@stdlib/array/float64' );
3031
var tryRequire = require( '@stdlib/utils/try-require' );
3132
var pkg = require( './../package.json' ).name;
@@ -51,19 +52,18 @@ var opts = {
5152
function createBenchmark( len ) {
5253
var out;
5354
var x;
54-
var i;
5555

56-
x = new Float32Array( len );
57-
for ( i = 0; i < len; i++ ) {
58-
if ( randu() < 0.2 ) {
59-
x[ i ] = NaN;
60-
} else {
61-
x[ i ] = ( randu()*10.0 ) - 20.0;
62-
}
63-
}
56+
x = filledarrayBy( len, 'float32', rand );
6457
out = new Float64Array( 2 );
6558
return benchmark;
6659

60+
function rand() {
61+
if ( bernoulli( 0.5 ) < 0.2 ) {
62+
return NaN;
63+
}
64+
return uniform( -10.0, 10.0 );
65+
}
66+
6767
function benchmark( b ) {
6868
var i;
6969

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/benchmark/benchmark.ndarray.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
// MODULES //
2222

2323
var bench = require( '@stdlib/bench' );
24-
var randu = require( '@stdlib/random/base/randu' );
24+
var uniform = require( '@stdlib/random/base/uniform' );
25+
var bernoulli = require( '@stdlib/random/base/bernoulli' );
26+
var filledarrayBy = require( '@stdlib/array/filled-by' );
2527
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2628
var pow = require( '@stdlib/math/base/special/pow' );
27-
var Float32Array = require( '@stdlib/array/float32' );
2829
var Float64Array = require( '@stdlib/array/float64' );
2930
var pkg = require( './../package.json' ).name;
3031
var dsnannsumors = require( './../lib/ndarray.js' );
@@ -42,19 +43,18 @@ var dsnannsumors = require( './../lib/ndarray.js' );
4243
function createBenchmark( len ) {
4344
var out;
4445
var x;
45-
var i;
4646

47-
x = new Float32Array( len );
48-
for ( i = 0; i < len; i++ ) {
49-
if ( randu() < 0.2 ) {
50-
x[ i ] = NaN;
51-
} else {
52-
x[ i ] = ( randu()*10.0 ) - 20.0;
53-
}
54-
}
47+
x = filledarrayBy( len, 'float32', rand );
5548
out = new Float64Array( 2 );
5649
return benchmark;
5750

51+
function rand() {
52+
if ( bernoulli( 0.5 ) < 0.2 ) {
53+
return NaN;
54+
}
55+
return uniform( -10.0, 10.0 );
56+
}
57+
5858
function benchmark( b ) {
5959
var i;
6060

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/benchmark/benchmark.ndarray.native.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@
2222

2323
var resolve = require( 'path' ).resolve;
2424
var bench = require( '@stdlib/bench' );
25-
var randu = require( '@stdlib/random/base/randu' );
25+
var uniform = require( '@stdlib/random/base/uniform' );
26+
var bernoulli = require( '@stdlib/random/base/bernoulli' );
27+
var filledarrayBy = require( '@stdlib/array/filled-by' );
2628
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2729
var pow = require( '@stdlib/math/base/special/pow' );
28-
var Float32Array = require( '@stdlib/array/float32' );
2930
var Float64Array = require( '@stdlib/array/float64' );
3031
var tryRequire = require( '@stdlib/utils/try-require' );
3132
var pkg = require( './../package.json' ).name;
@@ -51,19 +52,18 @@ var opts = {
5152
function createBenchmark( len ) {
5253
var out;
5354
var x;
54-
var i;
5555

56-
x = new Float32Array( len );
57-
for ( i = 0; i < len; i++ ) {
58-
if ( randu() < 0.2 ) {
59-
x[ i ] = NaN;
60-
} else {
61-
x[ i ] = ( randu()*10.0 ) - 20.0;
62-
}
63-
}
56+
x = filledarrayBy( len, 'float32', rand );
6457
out = new Float64Array( 2 );
6558
return benchmark;
6659

60+
function rand() {
61+
if ( bernoulli( 0.5 ) < 0.2 ) {
62+
return NaN;
63+
}
64+
return uniform( -10.0, 10.0 );
65+
}
66+
6767
function benchmark( b ) {
6868
var i;
6969

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/docs/repl.txt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
ignoring `NaN` values, using ordinary recursive summation with extended
55
accumulation, and returning an extended precision result.
66

7-
The `N` and `stride` parameters determine which elements are accessed at
7+
The `N` and stride parameters determine which elements are accessed at
88
runtime.
99

1010
Indexing is relative to the first index. To introduce an offset, use a typed
@@ -43,11 +43,10 @@
4343
> {{alias}}( x.length, x, 1, out, 1 )
4444
<Float64Array>[ 1.0, 3 ]
4545

46-
// Using `N` and `stride` parameters:
46+
// Using `N` and stride parameters:
4747
> x = new {{alias:@stdlib/array/float32}}( [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0, NaN, NaN ] );
4848
> out = new {{alias:@stdlib/array/float64}}( 2 );
49-
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
50-
> {{alias}}( N, x, 2, out, 1 )
49+
> {{alias}}( 4, x, 2, out, 1 )
5150
<Float64Array>[ 1.0, 3 ]
5251

5352
// Using view offsets:
@@ -58,13 +57,14 @@
5857
> {{alias}}( N, x1, 2, out, 1 )
5958
<Float64Array>[ 1.0, 3 ]
6059

60+
6161
{{alias}}.ndarray( N, x, strideX, offsetX, out, strideOut, offsetOut )
6262
Computes the sum of single-precision floating-point strided array elements,
6363
ignoring `NaN` values and using ordinary recursive summation with extended
6464
accumulation and alternative indexing semantics.
6565

6666
While typed array views mandate a view offset based on the underlying
67-
buffer, the `offset` parameter supports indexing semantics based on a
67+
buffer, the offset parameter supports indexing semantics based on a
6868
starting index.
6969

7070
Parameters
@@ -106,9 +106,8 @@
106106

107107
// Using offset parameter:
108108
> var x = new {{alias:@stdlib/array/float32}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, 1.0, NaN, NaN ] );
109-
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
110109
> out = new {{alias:@stdlib/array/float64}}( 2 );
111-
> {{alias}}.ndarray( N, x, 2, 1, out, 1, 0 )
110+
> {{alias}}.ndarray( 4, x, 2, 1, out, 1, 0 )
112111
<Float64Array>[ 1.0, 3 ]
113112

114113
See Also

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/examples/index.js

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,23 @@
1818

1919
'use strict';
2020

21-
var randu = require( '@stdlib/random/base/randu' );
22-
var round = require( '@stdlib/math/base/special/round' );
23-
var Float32Array = require( '@stdlib/array/float32' );
21+
var discreteUniform = require( '@stdlib/random/base/discrete-uniform' );
22+
var bernoulli = require( '@stdlib/random/base/bernoulli' );
23+
var filledarrayBy = require( '@stdlib/array/filled-by' );
2424
var Float64Array = require( '@stdlib/array/float64' );
2525
var dsnannsumors = require( './../lib' );
2626

2727
var out;
2828
var x;
29-
var i;
3029

31-
x = new Float32Array( 10 );
32-
for ( i = 0; i < x.length; i++ ) {
33-
if ( randu() < 0.2 ) {
34-
x[ i ] = NaN;
35-
} else {
36-
x[ i ] = round( randu()*100.0 );
30+
function rand() {
31+
if ( bernoulli( 0.5 ) < 0.2 ) {
32+
return NaN;
3733
}
34+
return discreteUniform( 0, 100 );
3835
}
36+
37+
x = filledarrayBy( 10, 'float32', rand );
3938
console.log( x );
4039

4140
out = new Float64Array( 2 );

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/include.gypi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
# Source files:
3838
'src_files': [
39-
'<(src_dir)/addon.cpp',
39+
'<(src_dir)/addon.c',
4040
'<!@(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 ] ); }")',
4141
],
4242

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/lib/index.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,18 @@
3131
* var x = new Float32Array( [ 1.0, -2.0, NaN, 2.0 ] );
3232
* var out = new Float64Array( 2 );
3333
*
34-
* var v = dsnannsumors( x.length, x, 1, out, 1 );
34+
* var v = dsnannsumors( 4, x, 1, out, 1 );
3535
* // returns <Float64Array>[ 1.0, 3 ]
3636
*
3737
* @example
3838
* var Float32Array = require( '@stdlib/array/float32' );
3939
* var Float64Array = require( '@stdlib/array/float64' );
40-
* var floor = require( '@stdlib/math/base/special/floor' );
4140
* var dsnannsumors = require( '@stdlib/blas/ext/base/dsnannsumors' );
4241
*
4342
* var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ] );
4443
* var out = new Float64Array( 2 );
4544
*
46-
* var N = floor( x.length / 2 );
47-
*
48-
* var v = dsnannsumors.ndarray( N, x, 2, 1, out, 1, 0 );
45+
* var v = dsnannsumors.ndarray( 5, x, 2, 1, out, 1, 0 );
4946
* // returns <Float64Array>[ 5.0, 4 ]
5047
*/
5148

lib/node_modules/@stdlib/blas/ext/base/dsnannsumors/lib/ndarray.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,11 @@ var isnan = require( '@stdlib/math/base/assert/is-nan' );
4040
* @example
4141
* var Float32Array = require( '@stdlib/array/float32' );
4242
* var Float64Array = require( '@stdlib/array/float64' );
43-
* var floor = require( '@stdlib/math/base/special/floor' );
4443
*
4544
* var x = new Float32Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ] );
4645
* var out = new Float64Array( 2 );
4746
*
48-
* var N = floor( x.length / 2 );
49-
*
50-
* var v = dsnannsumors( N, x, 2, 1, out, 1, 0 );
47+
* var v = dsnannsumors( 5, x, 2, 1, out, 1, 0 );
5148
* // returns <Float64Array>[ 5.0, 4 ]
5249
*/
5350
function dsnannsumors( N, x, strideX, offsetX, out, strideOut, offsetOut ) {

0 commit comments

Comments
 (0)