stdlib-js / stdlib-js/stdlib

[RFC]: Add C implementation for `@stdlib/stats/base/dists/betaprime/quantile`

オープン
#3,444 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
Accepted C difficulty: 2 Feature Good First Issue priority: Normal RFC Statistics
主要言語
JavaScript
スター
6k
フォーク
1.3k
平均マージ
1日 3時間
マージ済み PR(30日)
611

説明

### 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/betaprime/quantile`](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/@stdlib/stats/base/dists/betaprime/quantile) 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 https://github.com/stdlib-js/stdlib/pull/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

```bash
NODE_ADDONS_PATTERN="@stdlib/stats/base/dists/betaprime/quantile" make install-node-addons
```

#### Run C examples

```bash
make examples-c-files FILES="$(pwd)/lib/node_modules/@stdlib/stats/base/dists/betaprime/quantile/examples/c/example.c"
```

#### Run C benchmarks

```bash
make benchmark-c-files FILES="$(pwd)/lib/node_modules/@stdlib/stats/base/dists/betaprime/quantile/benchmark/c/benchmark.c"
```

#### Run JavaScript benchmarks

```bash
make benchmark-javascript-files FILES="$(pwd)/lib/node_modules/@stdlib/stats/base/dists/betaprime/quantile/benchmark/benchmark.native.js"
```

#### Run all tests

```bash
make TESTS_FILTER=".*/@stdlib/stats/base/dists/betaprime/quantile/.*" 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](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) and the associated [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md). Failure to respect project conventions will result in your PR being rejected without review. Thank you for understanding!

### Checklist

- [x] I have read and understood the [Code of Conduct](https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md).
- [x] Searched for existing issues and pull requests.
- [x] The issue name begins with `RFC:`.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Start by reviewing lib/main.js and its required modules, then compare the expected structure with pull request #3354. Verify C implementations exist for each dependency before following the listed make commands for the native addon, C examples, C benchmarks, JavaScript benchmarks, and tests. Done means all requested C, addon, benchmark, example, build, test, and README pieces work for this package.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
c, javascript, node.js
領域
backend, build-system, testing-qa
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
28/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。