Skip to content

Commit 464e2cc

Browse files
headlessNodekgryte
andauthored
refactor: update blas/ext/base/gcusumkbn to follow current project conventions
PR-URL: #4412 Co-authored-by: Athan Reines <kgryte@gmail.com> Reviewed-by: Athan Reines <kgryte@gmail.com>
1 parent 94c28dd commit 464e2cc

File tree

9 files changed

+69
-130
lines changed

9 files changed

+69
-130
lines changed

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

+12-28
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 = gcusumkbn( N, 0.0, x, 2, y, 1 );
72+
var v = gcusumkbn( 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-
gcusumkbn( N, 0.0, x1, -2, y1, 1 );
91+
gcusumkbn( 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-
gcusumkbn.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 );
118+
gcusumkbn.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,15 @@ gcusumkbn.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 gcusumkbn = require( '@stdlib/blas/ext/base/gcusumkbn' );
159147

160-
var y;
161-
var x;
162-
var i;
148+
var x = discreteUniform( 10, -100, 100, {
149+
'dtype': 'float64'
150+
});
151+
var y = new Float64Array( x.length );
163152

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-
}
169153
console.log( x );
170154
console.log( y );
171155

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

+11-11
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 Float64Array = require( '@stdlib/array/float64' );
2829
var pkg = require( './../package.json' ).name;
2930
var gcusumkbn = require( './../lib/main.js' );
3031

3132

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

3442
/**
@@ -39,16 +47,8 @@ var gcusumkbn = 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 = new Float64Array( len );
5252
return benchmark;
5353

5454
function benchmark( b ) {

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

+11-11
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 Float64Array = require( '@stdlib/array/float64' );
2829
var pkg = require( './../package.json' ).name;
2930
var gcusumkbn = require( './../lib/ndarray.js' );
3031

3132

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

3442
/**
@@ -39,16 +47,8 @@ var gcusumkbn = 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 = new Float64Array( len );
5252
return benchmark;
5353

5454
function benchmark( b ) {

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

+13-15
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
Computes the cumulative sum of strided array elements using an improved
44
Kahan–Babuška algorithm.
55

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

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

2525
strideX: integer
26-
Index increment for `x`.
26+
Stride length for `x`.
2727

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

3131
strideY: integer
32-
Index increment for `y`.
32+
Stride length for `y`.
3333

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

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

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

63+
6564
{{alias}}.ndarray( N, sum, x, strideX, offsetX, y, strideY, offsetY )
6665
Computes the cumulative sum of strided array elements using an improved
6766
Kahan–Babuška algorithm and alternative indexing semantics.
6867

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

7372
Parameters
7473
----------
@@ -82,7 +81,7 @@
8281
Input array.
8382

8483
strideX: integer
85-
Index increment for `x`.
84+
Stride length for `x`.
8685

8786
offsetX: integer
8887
Starting index for `x`.
@@ -91,7 +90,7 @@
9190
Output array.
9291

9392
strideY: integer
94-
Index increment for `y`.
93+
Stride length for `y`.
9594

9695
offsetY: integer
9796
Starting index for `y`.
@@ -112,8 +111,7 @@
112111
// Advanced indexing:
113112
> x = [ 1.0, -2.0, 3.0, 2.0, 5.0, -1.0 ];
114113
> y = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
115-
> var N = {{alias:@stdlib/math/base/special/floor}}( x.length / 2 );
116-
> {{alias}}.ndarray( N, 0.0, x, 2, 1, y, -1, y.length-1 )
114+
> {{alias}}.ndarray( 3, 0.0, x, 2, 1, y, -1, y.length-1 )
117115
<Float64Array>[ 0.0, 0.0, 0.0, -1.0, 0.0, -2.0 ]
118116

119117
See Also

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

+6-6
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/gcusumkbn/examples/index.js

+5-10
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,15 @@
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 gcusumkbn = require( './../lib' );
2524

26-
var y;
27-
var x;
28-
var i;
25+
var x = discreteUniform( 10, -100, 100, {
26+
'dtype': 'float64'
27+
});
28+
var y = new Float64Array( x.length );
2929

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-
}
3530
console.log( x );
3631
console.log( y );
3732

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,12 @@
3333
* // y => [ 1.0, -1.0, 1.0 ]
3434
*
3535
* @example
36-
* var floor = require( '@stdlib/math/base/special/floor' );
3736
* var gcusumkbn = require( '@stdlib/blas/ext/base/gcusumkbn' );
3837
*
3938
* var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0 ];
4039
* 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 );
4240
*
43-
* gcusumkbn.ndarray( N, 0.0, x, 2, 1, y, 1, 0 );
41+
* gcusumkbn.ndarray( 4, 0.0, x, 2, 1, y, 1, 0 );
4442
* // y => [ 1.0, -1.0, 1.0, 5.0, 0.0, 0.0, 0.0, 0.0 ]
4543
*/
4644

0 commit comments

Comments
 (0)