Skip to content

Commit 897aa61

Browse files
headlessNodekgryte
andauthored
refactor: update blas/ext/base/gcusum to follow current project conventions
PR-URL: #4435 Co-authored-by: Athan Reines <[email protected]> Reviewed-by: Athan Reines <[email protected]>
1 parent c0a0110 commit 897aa61

File tree

9 files changed

+71
-97
lines changed

9 files changed

+71
-97
lines changed

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

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,17 @@ The function has the following parameters:
5959
- **N**: number of indexed elements.
6060
- **sum**: initial sum.
6161
- **x**: input [`Array`][mdn-array] or [`typed array`][mdn-typed-array].
62-
- **strideX**: index increment for `x`.
62+
- **strideX**: stride length for `x`.
6363
- **y**: output [`Array`][mdn-array] or [`typed array`][mdn-typed-array].
64-
- **strideY**: index increment for `y`.
64+
- **strideY**: stride length for `y`.
6565

66-
The `N` and `stride` parameters determine which elements in `x` and `y` are accessed at runtime. For example, to compute the cumulative sum of every other element in `x`,
66+
The `N` and stride parameters determine which elements in the strided arrays are accessed at runtime. For example, to compute the cumulative sum of every other element:
6767

6868
```javascript
69-
var floor = require( '@stdlib/math/base/special/floor' );
70-
7169
var x = [ 1.0, 2.0, 2.0, -7.0, -2.0, 3.0, 4.0, 2.0 ];
7270
var y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
7371

74-
var N = floor( x.length / 2 );
75-
76-
var v = gcusum( N, 0.0, x, 2, y, 1 );
72+
var v = gcusum( 4, 0.0, x, 2, y, 1 );
7773
// y => [ 1.0, 3.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ]
7874
```
7975

@@ -83,7 +79,6 @@ Note that indexing is relative to the first index. To introduce an offset, use [
8379

8480
```javascript
8581
var Float64Array = require( '@stdlib/array/float64' );
86-
var floor = require( '@stdlib/math/base/special/floor' );
8782

8883
// Initial arrays...
8984
var x0 = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ] );
@@ -93,9 +88,7 @@ var y0 = new Float64Array( x0.length );
9388
var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
9489
var y1 = new Float64Array( y0.buffer, y0.BYTES_PER_ELEMENT*3 ); // start at 4th element
9590

96-
var N = floor( x0.length / 2 );
97-
98-
gcusum( N, 0.0, x1, -2, y1, 1 );
91+
gcusum( 4, 0.0, x1, -2, y1, 1 );
9992
// y0 => <Float64Array>[ 0.0, 0.0, 0.0, 4.0, 6.0, 4.0, 5.0, 0.0 ]
10093
```
10194

@@ -116,17 +109,13 @@ The function has the following additional parameters:
116109
- **offsetX**: starting index for `x`.
117110
- **offsetY**: starting index for `y`.
118111

119-
While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying `buffer`, `offsetX` and `offsetY` parameters support indexing semantics based on a starting indices. For example, to calculate the cumulative sum of every other value in `x` starting from the second value and to store in the last `N` elements of `y` starting from the last element
112+
While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, offset parameters support indexing semantics based on starting indices. For example, to calculate the cumulative sum of every other element in the strided input array starting from the second element and to store in the last `N` elements of the strided output array starting from the last element:
120113

121114
```javascript
122-
var floor = require( '@stdlib/math/base/special/floor' );
123-
124115
var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ];
125116
var y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
126117

127-
var N = floor( x.length / 2 );
128-
129-
gcusum.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 );
118+
gcusum.ndarray( 4, 0.0, x, 2, 1, y, -1, y.length-1 );
130119
// y => [ 0.0, 0.0, 0.0, 0.0, 5.0, 1.0, -1.0, 1.0 ]
131120
```
132121

@@ -152,20 +141,14 @@ gcusum.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 );
152141
<!-- eslint no-undef: "error" -->
153142

154143
```javascript
155-
var randu = require( '@stdlib/random/base/randu' );
156-
var round = require( '@stdlib/math/base/special/round' );
144+
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
157145
var Float64Array = require( '@stdlib/array/float64' );
158146
var gcusum = require( '@stdlib/blas/ext/base/gcusum' );
159147

160-
var y;
161-
var x;
162-
var i;
163-
164-
x = new Float64Array( 10 );
165-
y = new Float64Array( x.length );
166-
for ( i = 0; i < x.length; i++ ) {
167-
x[ i ] = round( randu()*100.0 );
168-
}
148+
var x = discreteUniform( 10, -100, 100, {
149+
'dtype': 'float64'
150+
});
151+
var y = new Float64Array( x.length );
169152
console.log( x );
170153
console.log( y );
171154

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

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

2323
var bench = require( '@stdlib/bench' );
24-
var randu = require( '@stdlib/random/base/randu' );
24+
var uniform = require( '@stdlib/random/array/uniform' );
2525
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2626
var pow = require( '@stdlib/math/base/special/pow' );
2727
var gfill = require( '@stdlib/blas/ext/base/gfill' );
28+
var zeros = require( '@stdlib/array/zeros' );
2829
var pkg = require( './../package.json' ).name;
2930
var gcusum = require( './../lib/main.js' );
3031

3132

33+
// VARIABLES //
34+
35+
var options = {
36+
'dtype': 'generic'
37+
};
38+
39+
3240
// FUNCTIONS //
3341

3442
/**
@@ -39,16 +47,8 @@ var gcusum = require( './../lib/main.js' );
3947
* @returns {Function} benchmark function
4048
*/
4149
function createBenchmark( len ) {
42-
var y;
43-
var x;
44-
var i;
45-
46-
x = [];
47-
y = [];
48-
for ( i = 0; i < len; i++ ) {
49-
x.push( ( randu()*20.0 ) - 10.0 );
50-
y.push( 0.0 );
51-
}
50+
var x = uniform( len, -100, 100, options );
51+
var y = zeros( len, options.dtype );
5252
return benchmark;
5353

5454
function benchmark( b ) {

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

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

2323
var bench = require( '@stdlib/bench' );
24-
var randu = require( '@stdlib/random/base/randu' );
24+
var uniform = require( '@stdlib/random/array/uniform' );
2525
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2626
var pow = require( '@stdlib/math/base/special/pow' );
2727
var gfill = require( '@stdlib/blas/ext/base/gfill' );
28+
var zeros = require( '@stdlib/array/zeros' );
2829
var pkg = require( './../package.json' ).name;
2930
var gcusum = require( './../lib/ndarray.js' );
3031

3132

33+
// VARIABLES //
34+
35+
var options = {
36+
'dtype': 'generic'
37+
};
38+
39+
3240
// FUNCTIONS //
3341

3442
/**
@@ -39,16 +47,8 @@ var gcusum = require( './../lib/ndarray.js' );
3947
* @returns {Function} benchmark function
4048
*/
4149
function createBenchmark( len ) {
42-
var x;
43-
var y;
44-
var i;
45-
46-
x = [];
47-
y = [];
48-
for ( i = 0; i < len; i++ ) {
49-
x.push( ( randu()*20.0 ) - 10.0 );
50-
y.push( 0.0 );
51-
}
50+
var x = uniform( len, -100, 100, options );
51+
var y = zeros( len, options.dtype );
5252
return benchmark;
5353

5454
function benchmark( b ) {

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

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
{{alias}}( N, sum, x, strideX, y, strideY )
33
Computes the cumulative sum of strided array elements.
44

5-
The `N` and `stride` parameters determine which elements in `x` and `y` are
6-
accessed at runtime.
5+
The `N` and stride parameters determine which elements in the strided arrays
6+
are accessed at runtime.
77

88
Indexing is relative to the first index. To introduce an offset, use a typed
99
array view.
@@ -22,13 +22,13 @@
2222
Input array.
2323

2424
strideX: integer
25-
Index increment for `x`.
25+
Stride length for `x`.
2626

2727
y: Array<number>|TypedArray
2828
Output array.
2929

3030
strideY: integer
31-
Index increment for `y`.
31+
Stride length for `y`.
3232

3333
Returns
3434
-------
@@ -43,31 +43,30 @@
4343
> {{alias}}( x.length, 0.0, x, 1, y, 1 )
4444
[ 1.0, -1.0, 1.0 ]
4545

46-
// Using `N` and `stride` parameters:
46+
// Using `N` and stride parameters:
4747
> x = [ -2.0, 1.0, 1.0, -5.0, 2.0, -1.0 ];
4848
> y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
49-
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
50-
> {{alias}}( N, 0.0, x, 2, y, 2 )
49+
> {{alias}}( 3, 0.0, x, 2, y, 2 )
5150
[ -2.0, 0.0, -1.0, 0.0, 1.0, 0.0 ]
5251

5352
// Using view offsets:
5453
> var x0 = new {{alias:@stdlib/array/float64}}( [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ] );
5554
> var y0 = new {{alias:@stdlib/array/float64}}( x0.length );
5655
> var x1 = new {{alias:@stdlib/array/float64}}( x0.buffer, x0.BYTES_PER_ELEMENT*1 );
5756
> var y1 = new {{alias:@stdlib/array/float64}}( y0.buffer, y0.BYTES_PER_ELEMENT*3 );
58-
> N = {{alias:@stdlib/math/base/special/floor}}( x0.length / 2 );
59-
> {{alias}}( N, 0.0, x1, 2, y1, 1 )
57+
> {{alias}}( 3, 0.0, x1, 2, y1, 1 )
6058
<Float64Array>[ -2.0, 0.0, -1.0 ]
6159
> y0
6260
<Float64Array>[ 0.0, 0.0, 0.0, -2.0, 0.0, -1.0 ]
6361

62+
6463
{{alias}}.ndarray( N, sum, x, strideX, offsetX, y, strideY, offsetY )
6564
Computes the cumulative sum of strided array elements using alternative
6665
indexing semantics.
6766

6867
While typed array views mandate a view offset based on the underlying
69-
buffer, the `offset` parameter supports indexing semantics based on a
70-
starting index.
68+
buffer, the offset parameters support indexing semantics based on starting
69+
indices.
7170

7271
Parameters
7372
----------
@@ -81,7 +80,7 @@
8180
Input array.
8281

8382
strideX: integer
84-
Index increment for `x`.
83+
Stride length for `x`.
8584

8685
offsetX: integer
8786
Starting index for `x`.
@@ -90,7 +89,7 @@
9089
Output array.
9190

9291
strideY: integer
93-
Index increment for `y`.
92+
Stride length for `y`.
9493

9594
offsetY: integer
9695
Starting index for `y`.
@@ -106,14 +105,13 @@
106105
> var x = [ 1.0, -2.0, 2.0 ];
107106
> var y = [ 0.0, 0.0, 0.0 ];
108107
> {{alias}}.ndarray( x.length, 0.0, x, 1, 0, y, 1, 0 )
109-
<Float64Array>[ 1.0, -1.0, 1.0 ]
108+
[ 1.0, -1.0, 1.0 ]
110109

111110
// Advanced indexing:
112111
> x = [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ];
113112
> y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
114-
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
115-
> {{alias}}.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 )
116-
<Float64Array>[ 0.0, 0.0, 0.0, -1.0, 0.0, -2.0 ]
113+
> {{alias}}.ndarray( 3, 0.0, x, 2, 1, y, -1, y.length-1 )
114+
[ 0.0, 0.0, 0.0, -1.0, 0.0, -2.0 ]
117115

118116
See Also
119117
--------

lib/node_modules/@stdlib/blas/ext/base/gcusum/docs/types/index.d.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ interface Routine {
3232
* @param N - number of indexed elements
3333
* @param sum - initial sum
3434
* @param x - input array
35-
* @param strideX - `x` stride length
35+
* @param strideX - stride length for `x`
3636
* @param y - output array
37-
* @param strideY - `y` stride length
37+
* @param strideY - stride length for `y`
3838
* @returns output array
3939
*
4040
* @example
@@ -52,10 +52,10 @@ interface Routine {
5252
* @param N - number of indexed elements
5353
* @param sum - initial sum
5454
* @param x - input array
55-
* @param strideX - `x` stride length
55+
* @param strideX - stride length for `x`
5656
* @param offsetX - starting index for `x`
5757
* @param y - output array
58-
* @param strideY - `y` stride length
58+
* @param strideY - stride length for `y`
5959
* @param offsetY - starting index for `y`
6060
* @returns output array
6161
*
@@ -75,9 +75,9 @@ interface Routine {
7575
* @param N - number of indexed elements
7676
* @param sum - initial sum
7777
* @param x - input array
78-
* @param strideX - `x` stride length
78+
* @param strideX - stride length for `x`
7979
* @param y - output array
80-
* @param strideY - `y` stride length
80+
* @param strideY - stride length for `y`
8181
* @returns output array
8282
*
8383
* @example

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

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,14 @@
1818

1919
'use strict';
2020

21-
var randu = require( '@stdlib/random/base/randu' );
22-
var round = require( '@stdlib/math/base/special/round' );
21+
var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
2322
var Float64Array = require( '@stdlib/array/float64' );
2423
var gcusum = require( './../lib' );
2524

26-
var y;
27-
var x;
28-
var i;
29-
30-
x = new Float64Array( 10 );
31-
y = new Float64Array( x.length );
32-
for ( i = 0; i < x.length; i++ ) {
33-
x[ i ] = round( randu()*100.0 );
34-
}
25+
var x = discreteUniform( 10, -100, 100, {
26+
'dtype': 'float64'
27+
});
28+
var y = new Float64Array( x.length );
3529
console.log( x );
3630
console.log( y );
3731

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,8 @@
3838
*
3939
* var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ];
4040
* var y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
41-
* var N = floor( x.length / 2 );
4241
*
43-
* gcusum.ndarray( N, 0.0, x, 2, 1, y, 1, 0 );
42+
* gcusum.ndarray( 4, 0.0, x, 2, 1, y, 1, 0 );
4443
* // y => [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ]
4544
*/
4645

lib/node_modules/@stdlib/blas/ext/base/gcusum/lib/main.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020

2121
// MODULES //
2222

23-
var gcusumkbn = require( '@stdlib/blas/ext/base/gcusumkbn' );
23+
var stride2offset = require( '@stdlib/strided/base/stride2offset' );
24+
var ndarray = require( './ndarray.js' );
2425

2526

2627
// MAIN //
@@ -31,9 +32,9 @@ var gcusumkbn = require( '@stdlib/blas/ext/base/gcusumkbn' );
3132
* @param {PositiveInteger} N - number of indexed elements
3233
* @param {number} sum - initial sum
3334
* @param {NumericArray} x - input array
34-
* @param {integer} strideX - `x` stride length
35+
* @param {integer} strideX - stride length for `x`
3536
* @param {NumericArray} y - output array
36-
* @param {integer} strideY - `y` stride length
37+
* @param {integer} strideY - stride length for `y`
3738
* @returns {NumericArray} output array
3839
*
3940
* @example
@@ -44,7 +45,9 @@ var gcusumkbn = require( '@stdlib/blas/ext/base/gcusumkbn' );
4445
* // returns [ 1.0, -1.0, 1.0 ]
4546
*/
4647
function gcusum( N, sum, x, strideX, y, strideY ) {
47-
return gcusumkbn( N, sum, x, strideX, y, strideY );
48+
var ox = stride2offset( N, strideX );
49+
var oy = stride2offset( N, strideY );
50+
return ndarray( N, sum, x, strideX, ox, y, strideY, oy );
4851
}
4952

5053

0 commit comments

Comments
 (0)