From b041cd2e2e57833ab39693b8692ab45deee8ba59 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Jul 2026 00:18:34 +0000 Subject: [PATCH 1/2] refactor: add explicit `isnan` guard to `stats/base/dists/pareto-type1/mean` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds explicit `isnan( alpha ) || isnan( beta )` short-circuits to the validation prologue in `lib/main.js`, matching the pattern used by 10/12 comparable siblings in `stats/base/dists/pareto-type1` (`cdf`, `entropy`, `kurtosis`, `logcdf`, `logpdf`, `mode`, `pdf`, `quantile`, `skewness`, `variance` — 83.3% conformance) and the package's own C counterpart in `src/main.c`, which uses `stdlib_base_is_nan( alpha ) || stdlib_base_is_nan( beta )`. NaN inputs previously returned NaN via arithmetic propagation through the `(alpha*beta) / (alpha-1)` expression; observable behavior is unchanged. --- .../stats/base/dists/pareto-type1/mean/lib/main.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/pareto-type1/mean/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/pareto-type1/mean/lib/main.js index fce3b5325d88..84cf85d3c6a4 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/pareto-type1/mean/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/pareto-type1/mean/lib/main.js @@ -20,6 +20,7 @@ // MODULES // +var isnan = require( '@stdlib/math/base/assert/is-nan' ); var PINF = require( '@stdlib/constants/float64/pinf' ); @@ -61,7 +62,12 @@ var PINF = require( '@stdlib/constants/float64/pinf' ); * // returns NaN */ function mean( alpha, beta ) { - if ( alpha <= 0.0 || beta <= 0.0 ) { + if ( + isnan( alpha ) || + alpha <= 0.0 || + isnan( beta ) || + beta <= 0.0 + ) { return NaN; } if ( alpha <= 1.0 ) { From f8cdb8416fd839dbbdd797823de52e2532cba8cd Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Jul 2026 00:18:39 +0000 Subject: [PATCH 2/2] refactor: add explicit `isnan` guard to `stats/base/dists/pareto-type1/median` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds explicit `isnan( alpha ) || isnan( beta )` short-circuits to the validation prologue in `lib/main.js`, matching the pattern used by 10/12 comparable siblings in `stats/base/dists/pareto-type1` (`cdf`, `entropy`, `kurtosis`, `logcdf`, `logpdf`, `mode`, `pdf`, `quantile`, `skewness`, `variance` — 83.3% conformance). NaN inputs previously returned NaN via arithmetic propagation through `beta * pow( 2, 1/alpha )`; observable behavior is unchanged. --- .../stats/base/dists/pareto-type1/median/lib/main.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/node_modules/@stdlib/stats/base/dists/pareto-type1/median/lib/main.js b/lib/node_modules/@stdlib/stats/base/dists/pareto-type1/median/lib/main.js index bd926fd56d68..e2306b9e39ea 100644 --- a/lib/node_modules/@stdlib/stats/base/dists/pareto-type1/median/lib/main.js +++ b/lib/node_modules/@stdlib/stats/base/dists/pareto-type1/median/lib/main.js @@ -20,6 +20,7 @@ // MODULES // +var isnan = require( '@stdlib/math/base/assert/is-nan' ); var pow = require( '@stdlib/math/base/special/pow' ); @@ -61,7 +62,12 @@ var pow = require( '@stdlib/math/base/special/pow' ); * // returns NaN */ function median( alpha, beta ) { - if ( alpha <= 0.0 || beta <= 0.0 ) { + if ( + isnan( alpha ) || + alpha <= 0.0 || + isnan( beta ) || + beta <= 0.0 + ) { return NaN; } return beta * pow( 2.0, 1.0/alpha );