Skip to content

[RFC]: Add C implementation for @stdlib/stats/base/dists/studentized-range/cdf #3887

Open
@Planeshifter

Description

Description

This RFC proposes adding a C implementation, including a Node.js native addon, C benchmarks, and C examples, for the @stdlib/stats/base/dists/studentized-range/cdf package.

When adding support, the following tasks should be completed:

  1. A C source implementation should be added to a src folder within the package's directory.
  2. A native add-on interface should be added in order to call the C implementation from JavaScript.
  3. A JavaScript file should be added to the lib folder to allow benchmarking and unit testing the native implementation from JavaScript.
  4. A new test file should be created which includes unit tests testing against expected behavior.
  5. C benchmarks should be added which measure performance for the C source implementation.
  6. A file containing C examples should be added to demonstrate example usage.
  7. JavaScript benchmarks should be added which measure performance for the native add-on.
  8. Build and configuration files should be added to allow compiling and running the C source implementation using project make commands (as documented below).
  9. The README should be updated to include documentation for the added C API.

To provide a concrete example of what a PR adding the desired method should contain, see #3354, which is a PR adding a C implementation for the CDF of an arcsine distribution. This should provide an idea of what is expected.

Prerequisites

  1. Review JavaScript implementation in lib/main.js and its required modules to identify all stdlib functions used.
  2. Verify C implementations exist for each required function.

Related Issues

#3355

Questions

No.

Other

Once the implementation is ready including C examples and benchmarks, we should be able to run the following make commands.

Build native add-on

NODE_ADDONS_PATTERN="@stdlib/stats/base/dists/studentized-range/cdf" make install-node-addons

Run C examples

make examples-c-files FILES="$(pwd)/lib/node_modules/@stdlib/stats/base/dists/studentized-range/cdf/examples/c/example.c"

Run C benchmarks

make benchmark-c-files FILES="$(pwd)/lib/node_modules/@stdlib/stats/base/dists/studentized-range/cdf/benchmark/c/benchmark.c"

Run JavaScript benchmarks

make benchmark-javascript-files FILES="$(pwd)/lib/node_modules/@stdlib/stats/base/dists/studentized-range/cdf/benchmark/benchmark.native.js"

Run all tests

make TESTS_FILTER=".*/@stdlib/stats/base/dists/studentized-range/cdf/.*" test

Notes

  • If you are interested in contributing a PR which addresses this RFC and are a first-time contributor or not yet familiar with our project conventions, please minimize the submission of LLM-generated code. Please consult our contributing guidelines and the associated development guide. Failure to respect project conventions will result in your PR being rejected without review. Thank you for understanding!

Checklist

  • I have read and understood the Code of Conduct.
  • Searched for existing issues and pull requests.
  • The issue name begins with RFC:.

Activity

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

Metadata

Assignees

No one assigned

    Labels

    AcceptedRFC feature request which has been accepted.CIssue involves or relates to C.FeatureIssue or pull request for adding a new feature.Good First IssueA good first issue for new contributors!RFCRequest for comments. Feature requests and proposed changes.StatisticsIssue or pull request related to statistical functionality.difficulty: 2May require some initial design or R&D, but should be straightforward to resolve and/or implement.priority: NormalNormal priority concern or feature request.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions