Skip to content

Commit 03ec98a

Browse files
committed
fix: 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: 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 85849de commit 03ec98a

File tree

5 files changed

+38
-74
lines changed

5 files changed

+38
-74
lines changed

lib/node_modules/@stdlib/stats/base/nanminabs/lib/accessors.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ var abs = require( '@stdlib/math/base/special/abs' );
3535
* @param {Array<Function>} x.accessors - array element accessors
3636
* @param {integer} strideX - stride length
3737
* @param {NonNegativeInteger} offsetX - starting index
38-
* @returns {number} minimum value
38+
* @returns {number} minimum absolute value
3939
*
4040
* @example
4141
* var toAccessorArray = require( '@stdlib/array/base/to-accessor-array' );
4242
* var arraylike2object = require( '@stdlib/array/base/arraylike2object' );
4343
*
44-
* var x = toAccessorArray( [ 1.0, -2.0, NaN, 2.0 ] );
44+
* var x = toAccessorArray( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ] );
4545
*
46-
* var v = nanminabs( 4, arraylike2object( x ), 1, 0 );
46+
* var v = nanminabs( 5, arraylike2object( x ), 2, 1 );
4747
* // returns 1.0
4848
*/
4949
function nanminabs( N, x, strideX, offsetX ) {
@@ -61,30 +61,29 @@ function nanminabs( N, x, strideX, offsetX ) {
6161
get = x.accessors[0];
6262

6363
if ( N === 1 || strideX === 0 ) {
64-
return get( xbuf, offsetX );
64+
return abs( get( xbuf, offsetX ) );
6565
}
6666
ix = offsetX;
6767
for ( i = 0; i < N; i++ ) {
6868
v = get( xbuf, ix );
69-
if ( !isnan( v ) ) {
70-
min = abs( v );
69+
if ( v === v ) {
7170
break;
7271
}
7372
ix += strideX;
7473
}
7574
if ( i === N ) {
7675
return NaN;
7776
}
77+
min = abs( v );
7878
i += 1;
7979
for ( i; i < N; i++ ) {
8080
ix += strideX;
81-
v = get( xbuf, ix );
81+
v = abs( get( xbuf, ix ) );
8282
if ( isnan( v ) ) {
8383
continue;
8484
}
85-
v = abs( v );
8685
if ( v < min) {
87-
min = abs( v );
86+
min = v;
8887
}
8988
}
9089
return min;

lib/node_modules/@stdlib/stats/base/nanminabs/lib/index.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,29 @@
2727
* var nanminabs = require( '@stdlib/stats/base/nanminabs' );
2828
*
2929
* var x = [ 1.0, -2.0, NaN, 2.0 ];
30-
* var N = x.length;
3130
*
32-
* var v = nanminabs( N, x, 1 );
31+
* var v = nanminabs( x.length, x, 1 );
3332
* // returns 1.0
3433
*
3534
* @example
36-
* var floor = require( '@stdlib/math/base/special/floor' );
3735
* var nanminabs = require( '@stdlib/stats/base/nanminabs' );
3836
*
3937
* var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ];
40-
* var N = floor( x.length / 2 );
4138
*
42-
* var v = nanminabs.ndarray( N, x, 2, 1 );
39+
* var v = nanminabs.ndarray( 5, x, 2, 1 );
4340
* // returns 1.0
4441
*/
4542

4643
// MODULES //
4744

45+
var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );
4846
var main = require( './main.js' );
47+
var ndarray = require( './ndarray.js' );
48+
49+
50+
// MAIN //
51+
52+
setReadOnly( main, 'ndarray', ndarray );
4953

5054

5155
// EXPORTS //

lib/node_modules/@stdlib/stats/base/nanminabs/lib/main.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,29 @@
2020

2121
// MODULES //
2222

23-
var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );
24-
var nanminabs = require( './nanminabs.js' );
23+
var stride2offset = require( '@stdlib/strided/base/stride2offset' );
2524
var ndarray = require( './ndarray.js' );
2625

2726

2827
// MAIN //
2928

30-
setReadOnly( nanminabs, 'ndarray', ndarray );
29+
/**
30+
* Computes the minimum absolute value of a strided array, ignoring `NaN` values.
31+
*
32+
* @param {PositiveInteger} N - number of indexed elements
33+
* @param {NumericArray} x - input array
34+
* @param {integer} strideX - stride length
35+
* @returns {number} minimum absolute value
36+
*
37+
* @example
38+
* var x = [ 1.0, -2.0, NaN, 2.0 ];
39+
*
40+
* var v = nanminabs( x.length, x, 1 );
41+
* // returns 1.0
42+
*/
43+
function nanminabs( N, x, strideX ) {
44+
return ndarray( N, x, strideX, stride2offset( N, strideX ) );
45+
}
3146

3247

3348
// EXPORTS //

lib/node_modules/@stdlib/stats/base/nanminabs/lib/nanminabs.js

Lines changed: 0 additions & 51 deletions
This file was deleted.

lib/node_modules/@stdlib/stats/base/nanminabs/lib/ndarray.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* @license Apache-2.0
33
*
4-
* Copyright (c) 2025 The Stdlib Authors.
4+
* Copyright (c) 2020 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.
@@ -38,12 +38,9 @@ var accessors = require( './accessors.js' );
3838
* @returns {number} minimum absolute value
3939
*
4040
* @example
41-
* var floor = require( '@stdlib/math/base/special/floor' );
42-
*
4341
* var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ];
44-
* var N = floor( x.length / 2 );
4542
*
46-
* var v = nanminabs( N, x, 2, 1 );
43+
* var v = nanminabs( 5, x, 2, 1 );
4744
* // returns 1.0
4845
*/
4946
function nanminabs( N, x, strideX, offsetX ) {
@@ -61,7 +58,7 @@ function nanminabs( N, x, strideX, offsetX ) {
6158
return accessors( N, o, strideX, offsetX );
6259
}
6360
if ( N === 1 || strideX === 0 ) {
64-
return x[ offsetX ];
61+
return abs( x[ offsetX ] );
6562
}
6663
ix = offsetX;
6764
for ( i = 0; i < N; i++ ) {

0 commit comments

Comments
 (0)