Skip to content

fix(stats): propagate NaN through normal CDF and quantile kernels - #258

Open
AminMohamed-3 wants to merge 4 commits into
AIcrowd:mainfrom
AminMohamed-3:fix/stats-nan-propagation
Open

fix(stats): propagate NaN through normal CDF and quantile kernels#258
AminMohamed-3 wants to merge 4 commits into
AIcrowd:mainfrom
AminMohamed-3:fix/stats-nan-propagation

Conversation

@AminMohamed-3

Copy link
Copy Markdown

NaN inputs to the normal CDF and inverse-CDF helpers currently match none of their approximation-region masks, leaving those output elements uninitialized. As a result, public calls such as stats.norm.cdf(np.nan) and stats.norm.ppf(np.nan) can return finite values whose contents depend on previous allocations. The same helpers also affect derived distributions.

Initialize both helper output arrays with NaN before filling their valid regions. Add scalar and mixed-array comparisons against SciPy, including lognormal and truncated-normal callers, and verify that NaN inputs retain the same FLOP charge as same-shaped finite inputs. The regression fixture fills otherwise-uninitialized allocations with a finite sentinel so recycled NaN memory cannot hide the defect.

Validation: all 11 original propagation cases failed against the unchanged source; after the fix, 189 focused tests pass (all statistics tests plus dtype-billing tests) on Python 3.12, NumPy 2.4.6, and SciPy 1.18.1. Repository-wide Ruff lint and formatting checks pass, as does the Conventional Commit title check. The full Linux CI matrix has not been run locally.

Developed and tested with AI assistance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant