Skip to content

Commit cfe065b

Browse files
committed
feat: finishing up
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: passed - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent ed17b71 commit cfe065b

File tree

3 files changed

+164
-3
lines changed

3 files changed

+164
-3
lines changed

lib/node_modules/@stdlib/blas/ext/base/gsumpw/lib/accessors.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* @license Apache-2.0
33
*
4-
* Copyright (c) 2020 The Stdlib Authors.
4+
* Copyright (c) 2025 The Stdlib Authors.
55
*
66
* Licensed under the Apache License, Version 2.0 (the "License");
77
* you may not use this file except in compliance with the License.
@@ -91,7 +91,6 @@ function gsumpw( N, x, strideX, offsetX ) {
9191
return N * get( xbuf, ix );
9292
}
9393
s = 0.0;
94-
9594
if ( N <= 8 ) {
9695
s = 0.0;
9796
for ( i = 0; i < N; i++ ) {
@@ -110,6 +109,7 @@ function gsumpw( N, x, strideX, offsetX ) {
110109
s5 = get( xbuf, ix+(5*strideX) );
111110
s6 = get( xbuf, ix+(6*strideX) );
112111
s7 = get( xbuf, ix+(7*strideX) );
112+
ix += 8 * strideX;
113113

114114
M = N % 8;
115115
for ( i = 8; i < N-M; i += 8 ) {
@@ -128,7 +128,7 @@ function gsumpw( N, x, strideX, offsetX ) {
128128

129129
// Clean-up loop...
130130
for ( i; i < N; i++ ) {
131-
s += x[ ix ];
131+
s += get( xbuf, ix );
132132
ix += strideX;
133133
}
134134
return s;

lib/node_modules/@stdlib/blas/ext/base/gsumpw/test/test.main.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
var tape = require( 'tape' );
2424
var isnan = require( '@stdlib/math/base/assert/is-nan' );
2525
var Float64Array = require( '@stdlib/array/float64' );
26+
var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
2627
var gsumpw = require( './../lib' );
2728

2829

@@ -74,6 +75,33 @@ tape( 'the function calculates the sum of all strided array elements', function
7475
t.end();
7576
});
7677

78+
tape( 'the function calculates the sum of all strided array elements (accessors)', function test( t ) {
79+
var x;
80+
var v;
81+
82+
x = [ 1.0, -2.0, -4.0, 5.0, 0.0, 3.0, 0.0, -3.0, 3.0 ];
83+
v = gsumpw( x.length, toAccessorArray( x ), 1 );
84+
t.strictEqual( v, 3.0, 'returns expected value' );
85+
86+
x = [ 1.0, -2.0, -4.0, 5.0, 0.0, 3.0 ];
87+
v = gsumpw( x.length, toAccessorArray( x ), 1 );
88+
t.strictEqual( v, 3.0, 'returns expected value' );
89+
90+
x = [ -4.0, -4.0 ];
91+
v = gsumpw( x.length, toAccessorArray( x ), 1 );
92+
t.strictEqual( v, -8.0, 'returns expected value' );
93+
94+
x = [ NaN, 4.0 ];
95+
v = gsumpw( x.length, toAccessorArray( x ), 1 );
96+
t.strictEqual( isnan( v ), true, 'returns expected value' );
97+
98+
x = [ 1.0, 1.0e100, 1.0, -1.0e100 ];
99+
v = gsumpw( x.length, toAccessorArray( x ), 1 );
100+
t.strictEqual( v, 0.0, 'returns expected value' );
101+
102+
t.end();
103+
});
104+
77105
tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `0.0`', function test( t ) {
78106
var x;
79107
var v;
@@ -122,6 +150,27 @@ tape( 'the function supports a `stride` parameter', function test( t ) {
122150
t.end();
123151
});
124152

153+
tape( 'the function supports a `stride` parameter (accessors)', function test( t ) {
154+
var x;
155+
var v;
156+
157+
x = [
158+
1.0, // 0
159+
2.0,
160+
2.0, // 1
161+
-7.0,
162+
-2.0, // 2
163+
3.0,
164+
4.0, // 3
165+
2.0
166+
];
167+
168+
v = gsumpw( 4, toAccessorArray( x ), 2 );
169+
170+
t.strictEqual( v, 5.0, 'returns expected value' );
171+
t.end();
172+
});
173+
125174
tape( 'the function supports a negative `stride` parameter', function test( t ) {
126175
var x;
127176
var v;
@@ -143,6 +192,27 @@ tape( 'the function supports a negative `stride` parameter', function test( t )
143192
t.end();
144193
});
145194

195+
tape( 'the function supports a negative `stride` parameter (accessors)', function test( t ) {
196+
var x;
197+
var v;
198+
199+
x = [
200+
1.0, // 3
201+
2.0,
202+
2.0, // 2
203+
-7.0,
204+
-2.0, // 1
205+
3.0,
206+
4.0, // 0
207+
2.0
208+
];
209+
210+
v = gsumpw( 4, toAccessorArray( x ), -2 );
211+
212+
t.strictEqual( v, 5.0, 'returns expected value' );
213+
t.end();
214+
});
215+
146216
tape( 'if provided a `stride` parameter equal to `0`, the function returns the sum of the first element repeated N times', function test( t ) {
147217
var x;
148218
var v;

lib/node_modules/@stdlib/blas/ext/base/gsumpw/test/test.ndarray.js

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
var tape = require( 'tape' );
2424
var isnan = require( '@stdlib/math/base/assert/is-nan' );
25+
var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
2526
var gsumpw = require( './../lib/ndarray.js' );
2627

2728

@@ -73,6 +74,33 @@ tape( 'the function calculates the sum of all strided array elements', function
7374
t.end();
7475
});
7576

77+
tape( 'the function calculates the sum of all strided array elements (accessors)', function test( t ) {
78+
var x;
79+
var v;
80+
81+
x = [ 1.0, -2.0, -4.0, 5.0, 0.0, 3.0, 0.0, -3.0, 3.0 ];
82+
v = gsumpw( x.length, toAccessorArray( x ), 1, 0 );
83+
t.strictEqual( v, 3.0, 'returns expected value' );
84+
85+
x = [ 1.0, -2.0, -4.0, 5.0, 0.0, 3.0 ];
86+
v = gsumpw( x.length, toAccessorArray( x ), 1, 0 );
87+
t.strictEqual( v, 3.0, 'returns expected value' );
88+
89+
x = [ -4.0, -4.0 ];
90+
v = gsumpw( x.length, toAccessorArray( x ), 1, 0 );
91+
t.strictEqual( v, -8.0, 'returns expected value' );
92+
93+
x = [ NaN, 4.0 ];
94+
v = gsumpw( x.length, toAccessorArray( x ), 1, 0 );
95+
t.strictEqual( isnan( v ), true, 'returns expected value' );
96+
97+
x = [ 1.0, 1.0e100, 1.0, -1.0e100 ];
98+
v = gsumpw( x.length, toAccessorArray( x ), 1, 0 );
99+
t.strictEqual( v, 0.0, 'returns expected value' );
100+
101+
t.end();
102+
});
103+
76104
tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `0.0`', function test( t ) {
77105
var x;
78106
var v;
@@ -121,6 +149,27 @@ tape( 'the function supports a `stride` parameter', function test( t ) {
121149
t.end();
122150
});
123151

152+
tape( 'the function supports a `stride` parameter (accessors)', function test( t ) {
153+
var x;
154+
var v;
155+
156+
x = [
157+
1.0, // 0
158+
2.0,
159+
2.0, // 1
160+
-7.0,
161+
-2.0, // 2
162+
3.0,
163+
4.0, // 3
164+
2.0
165+
];
166+
167+
v = gsumpw( 4, toAccessorArray( x ), 2, 0 );
168+
169+
t.strictEqual( v, 5.0, 'returns expected value' );
170+
t.end();
171+
});
172+
124173
tape( 'the function supports a negative `stride` parameter', function test( t ) {
125174
var x;
126175
var v;
@@ -142,6 +191,27 @@ tape( 'the function supports a negative `stride` parameter', function test( t )
142191
t.end();
143192
});
144193

194+
tape( 'the function supports a negative `stride` parameter (accessors)', function test( t ) {
195+
var x;
196+
var v;
197+
198+
x = [
199+
1.0, // 3
200+
2.0,
201+
2.0, // 2
202+
-7.0,
203+
-2.0, // 1
204+
3.0,
205+
4.0, // 0
206+
2.0
207+
];
208+
209+
v = gsumpw( 4, toAccessorArray( x ), -2, 6 );
210+
211+
t.strictEqual( v, 5.0, 'returns expected value' );
212+
t.end();
213+
});
214+
145215
tape( 'if provided a `stride` parameter equal to `0`, the function returns the sum of the first element repeated N times', function test( t ) {
146216
var x;
147217
var v;
@@ -174,3 +244,24 @@ tape( 'the function supports an `offset` parameter', function test( t ) {
174244

175245
t.end();
176246
});
247+
248+
tape( 'the function supports an `offset` parameter (accessors)', function test( t ) {
249+
var x;
250+
var v;
251+
252+
x = [
253+
2.0,
254+
1.0, // 0
255+
2.0,
256+
-2.0, // 1
257+
-2.0,
258+
2.0, // 2
259+
3.0,
260+
4.0 // 3
261+
];
262+
263+
v = gsumpw( 4, toAccessorArray( x ), 2, 1 );
264+
265+
t.strictEqual( v, 5.0, 'returns expected value' );
266+
t.end();
267+
});

0 commit comments

Comments
 (0)