Skip to content

refactor: use constants/float64/nan in stats/base/dists/beta/mean - #16357

Merged
kgryte merged 2 commits into
stdlib-js:developfrom
RonakChakrawati:refactor/float64-nan-beta-mean
Oct 30, 2026
Merged

kgryte merged 2 commits into
stdlib-js:developfrom
RonakChakrawati:refactor/float64-nan-beta-mean

Conversation

@RonakChakrawati

@RonakChakrawati RonakChakrawati commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Resolves a part of #11743.

Description

What is the purpose of this pull request?

This pull request:

  • Replaces inline NaN generation (0.0/0.0) in stats/base/dists/beta/mean with the shared NaN constant from @stdlib/constants/float64/nan.
  • Adds the stdlib/constants/float64/nan.h include to src/main.c.
  • Adds @stdlib/constants/float64/nan as a dependency to the build, benchmark, and examples configurations in manifest.json.

There are no behavioral changes; test output is identical before and after the change.

Related Issues

Does this pull request have any related issues?

This pull request has the following related issues:

Reference Packages

Did the content of this pull request follow one or more existing packages? Answering is optional.

This pull request followed these packages:

What carried over from the reference(s)?

  • Package header included first, followed by the stdlib/constants/float64/nan.h dependency header.
  • Dependency added to every manifest configuration whose src compiles ./src/main.c.

What differed, or what did you have to work out yourself?

  • This package has a single inline NaN site in src/main.c, so examples/c/example.c, benchmark/c/benchmark.c, and README.md required no changes.

Questions

Any questions for reviewers of this pull request?

No.

Other

Any other information relevant to this pull request? This may include screenshots, references, and/or implementation notes.

Verification performed locally:

  • make install-node-addons NODE_ADDONS_PATTERN="stats/base/dists/beta/mean"
  • make EXAMPLES_FILTER=".*/stats/base/dists/beta/mean/.*" examples-c
  • make BENCHMARKS_FILTER=".*/stats/base/dists/beta/mean/.*" benchmark-c
  • make test TESTS_FILTER=".*/stats/base/dists/beta/mean/.*"

test.js and test.native.js each pass 1014/1014 with no skips, and the output matches the pre-change baseline apart from timing. The C examples and benchmarks compile and run successfully.

Checklist

Please ensure the following tasks are completed before submitting this pull request.

AI Assistance

When authoring the changes proposed in this PR, did you use any kind of AI assistance?

  • Yes
  • No

If you answered "yes" above, how did you use AI assistance?

  • Code generation (e.g., when writing an implementation or fixing a bug)
  • Test/benchmark generation
  • Documentation (including examples)
  • Research and understanding

Disclosure

If you answered "yes" to using AI assistance, please provide a short disclosure indicating how you used AI assistance. This helps reviewers determine how much scrutiny to apply when reviewing your contribution. Example disclosures: "This PR was written primarily by Claude Code." or "I consulted ChatGPT to understand the codebase, but the proposed changes were fully authored manually by myself.".

I consulted an AI assistant to research the repository's conventions and build/lint workflow, and to review my changes. The proposed patch was authored manually by me.


@stdlib-js/reviewers

Replace inline NaN generation in the C implementation with the shared
stdlib NaN constant. This removes a magic expression in favor of the
canonical constant and keeps NaN generation consistent across packages.

Add `@stdlib/constants/float64/nan` as a dependency to each manifest
configuration which compiles `src/main.c`.

Ref: stdlib-js#11743

---
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_pkg_readmes
    status: na
  - task: lint_markdown_docs
    status: na
  - task: lint_markdown
    status: na
  - task: lint_package_json
    status: na
  - task: lint_repl_help
    status: na
  - task: lint_javascript_src
    status: na
  - 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: passed
  - task: lint_typescript_tests
    status: na
  - task: lint_license_headers
    status: passed
---
@RonakChakrawati
RonakChakrawati requested a review from a team October 29, 2026 11:39
@stdlib-bot stdlib-bot added the Good First PR A pull request resolving a Good First Issue. label Oct 29, 2026
@RonakChakrawati RonakChakrawati changed the title Refactor NaN generation in beta mean using stdlib constant refactor: use constants/float64/nan in stats/base/dists/beta/mean Oct 29, 2026
@stdlib-bot

Copy link
Copy Markdown
Contributor

👋 Hi there! 👋

And thank you for opening your first pull request! We will review it shortly. 🏃 💨

Getting Started

Next Steps

  1. A project maintainer will approve GitHub Actions workflows for your PR.
  2. All CI checks must pass before your submission can be fully reviewed.
  3. You'll need to address any failures in linting or unit tests.

Running Tests Locally

You can use make to run any of the CI commands locally from the root directory of the stdlib repository:

# Run tests for all packages in the math namespace:
make test TESTS_FILTER=".*/@stdlib/math/.*"

# Run benchmarks for a specific package:
make benchmark BENCHMARKS_FILTER=".*/@stdlib/math/base/special/sin/.*"

If you haven't heard back from us within two weeks, please ping us by tagging the "reviewers" team in a comment on this PR.

If you have any further questions while waiting for a response, please join our Zulip community to chat with project maintainers and other community members.

We appreciate your contribution!

Documentation Links

@stdlib-bot stdlib-bot added Statistics Issue or pull request related to statistical functionality. First-time Contributor A pull request from a contributor who has never previously committed to the project repository. Needs Review A pull request which needs code review. labels Oct 29, 2026
@kgryte kgryte added difficulty: 1 Low degree of difficulty. Should be straightforward to implement and/or resolve. review: 5 and removed Needs Review A pull request which needs code review. labels Oct 30, 2026

@kgryte kgryte left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@stdlib-bot

Copy link
Copy Markdown
Contributor

Coverage Report

Package Statements Branches Functions Lines
stats/base/dists/beta/mean $\\color{green}195/195$
$\\color{green}+100.00\\%$
$\\color{green}10/10$
$\\color{green}+100.00\\%$
$\\color{green}2/2$
$\\color{green}+100.00\\%$
$\\color{green}195/195$
$\\color{green}+100.00\\%$

The above coverage report was generated for the changes in this PR.

@kgryte
kgryte merged commit a2e9b09 into stdlib-js:develop Oct 30, 2026
95 of 96 checks passed
@RonakChakrawati
RonakChakrawati deleted the refactor/float64-nan-beta-mean branch October 30, 2026 10:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

difficulty: 1 Low degree of difficulty. Should be straightforward to implement and/or resolve. First-time Contributor A pull request from a contributor who has never previously committed to the project repository. Good First PR A pull request resolving a Good First Issue. review: 5 Statistics Issue or pull request related to statistical functionality.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants