Skip to content

Commit 584cf93

Browse files
committed
refactor: simplify implementation
--- 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: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: passed - 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 00842b8 commit 584cf93

File tree

3 files changed

+8
-86
lines changed

3 files changed

+8
-86
lines changed

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

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

2121
// MODULES //
2222

23-
var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
24-
var abs = require( '@stdlib/math/base/special/abs' );
23+
var f32 = require( '@stdlib/number/float64/base/to-float32' );
24+
var ssumkbn2 = require( '@stdlib/blas/ext/base/ssumkbn2' ).ndarray;
2525

2626

2727
// MAIN //
@@ -53,46 +53,7 @@ var abs = require( '@stdlib/math/base/special/abs' );
5353
* // returns 25.0
5454
*/
5555
function sapxsumkbn2( N, alpha, x, strideX, offsetX ) {
56-
var sum;
57-
var ccs;
58-
var ix;
59-
var cs;
60-
var cc;
61-
var v;
62-
var t;
63-
var c;
64-
var i;
65-
66-
if ( N <= 0 ) {
67-
return 0.0;
68-
}
69-
ix = offsetX;
70-
if ( strideX === 0 ) {
71-
return float64ToFloat32( N * float64ToFloat32( alpha + x[ ix ] ) );
72-
}
73-
sum = 0.0;
74-
ccs = 0.0; // second order correction term for lost low order bits
75-
cs = 0.0; // first order correction term for lost low order bits
76-
for ( i = 0; i < N; i++ ) {
77-
v = float64ToFloat32( alpha + x[ ix ] );
78-
t = float64ToFloat32( sum+v );
79-
if ( abs( sum ) >= abs( v ) ) {
80-
c = float64ToFloat32( float64ToFloat32( sum-t ) + v );
81-
} else {
82-
c = float64ToFloat32( float64ToFloat32( v-t ) + sum );
83-
}
84-
sum = t;
85-
t = float64ToFloat32( cs+c );
86-
if ( abs( cs ) >= abs( c ) ) {
87-
cc = float64ToFloat32( float64ToFloat32( cs-t ) + c );
88-
} else {
89-
cc = float64ToFloat32( float64ToFloat32( c-t ) + cs );
90-
}
91-
cs = t;
92-
ccs = float64ToFloat32( ccs+cc );
93-
ix += strideX;
94-
}
95-
return float64ToFloat32( sum + float64ToFloat32( cs+ccs ) );
56+
return f32( f32( N * alpha ) + ssumkbn2( N, x, strideX, offsetX ) );
9657
}
9758

9859

lib/node_modules/@stdlib/blas/ext/base/sapxsumkbn2/manifest.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"@stdlib/napi/create-double",
4545
"@stdlib/strided/base/stride2offset",
4646
"@stdlib/blas/base/shared",
47-
"@stdlib/math/base/special/absf"
47+
"@stdlib/blas/ext/base/ssumkbn2"
4848
]
4949
},
5050
{
@@ -60,7 +60,7 @@
6060
"dependencies": [
6161
"@stdlib/strided/base/stride2offset",
6262
"@stdlib/blas/base/shared",
63-
"@stdlib/math/base/special/absf"
63+
"@stdlib/blas/ext/base/ssumkbn2"
6464
]
6565
},
6666
{
@@ -76,7 +76,7 @@
7676
"dependencies": [
7777
"@stdlib/strided/base/stride2offset",
7878
"@stdlib/blas/base/shared",
79-
"@stdlib/math/base/special/absf"
79+
"@stdlib/blas/ext/base/ssumkbn2"
8080
]
8181
}
8282
]

lib/node_modules/@stdlib/blas/ext/base/sapxsumkbn2/src/main.c

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include "stdlib/blas/ext/base/sapxsumkbn2.h"
2020
#include "stdlib/strided/base/stride2offset.h"
2121
#include "stdlib/blas/base/shared.h"
22-
#include "stdlib/math/base/special/absf.h"
22+
#include "stdlib/blas/ext/base/ssumkbn2.h"
2323

2424
/**
2525
* Adds a scalar constant to each single-precision floating-point strided array element and computes the sum using a second-order iterative Kahan–Babuška algorithm.
@@ -62,44 +62,5 @@ float API_SUFFIX(stdlib_strided_sapxsumkbn2)( const CBLAS_INT N, const float alp
6262
* @return output value
6363
*/
6464
float API_SUFFIX(stdlib_strided_sapxsumkbn2_ndarray)( const CBLAS_INT N, const float alpha, const float *X, const CBLAS_INT strideX, const CBLAS_INT offsetX ) {
65-
CBLAS_INT ix;
66-
CBLAS_INT i;
67-
float sum;
68-
float ccs;
69-
float cs;
70-
float cc;
71-
float v;
72-
float t;
73-
float c;
74-
75-
if ( N <= 0 ) {
76-
return 0.0f;
77-
}
78-
ix = offsetX;
79-
if ( strideX == 0 ) {
80-
return N * ( alpha + X[ ix ] );
81-
}
82-
sum = 0.0f;
83-
ccs = 0.0f; // second order correction term for lost lower order bits
84-
cs = 0.0f; // first order correction term for lost low order bits
85-
for ( i = 0; i < N; i++ ) {
86-
v = alpha + X[ ix ];
87-
t = sum + v;
88-
if ( stdlib_base_absf( sum ) >= stdlib_base_absf( v ) ) {
89-
c = (sum-t) + v;
90-
} else {
91-
c = (v-t) + sum;
92-
}
93-
sum = t;
94-
t = cs + c;
95-
if ( stdlib_base_absf( cs ) >= stdlib_base_absf( c ) ) {
96-
cc = (cs-t) + c;
97-
} else {
98-
cc = (c-t) + cs;
99-
}
100-
cs = t;
101-
ccs += cc;
102-
ix += strideX;
103-
}
104-
return sum + cs + ccs;
65+
return ( N * alpha ) + API_SUFFIX(stdlib_strided_ssumkbn2_ndarray)( N, X, strideX, offsetX );
10566
}

0 commit comments

Comments
 (0)