Skip to content

feat: add C implementation for blas/ext/base/ndarray/csumkbn - #15802

Open
benatsf wants to merge 1 commit into
stdlib-js:developfrom
benatsf:feat/ndarray-csumkbn-native
Open

benatsf wants to merge 1 commit into
stdlib-js:developfrom
benatsf:feat/ndarray-csumkbn-native

Conversation

@benatsf

@benatsf benatsf commented Oct 2, 2026 •

Copy link
Copy Markdown

Refs #14819.

Description

This pull request adds a C API and optional Node.js native addon for @stdlib/blas/ext/base/ndarray/csumkbn, allowing compensated complex64 sums to run through the existing strided C kernel. The adapter converts ndarray byte strides and offsets into complex element indices and returns a Complex64 value. Browser and unavailable-addon environments retain the existing JavaScript implementation.

The complete package port includes its public header, N-API bridge, build manifests, C documentation/example/benchmark, and separate public, JavaScript, and native behavior tests.

Related Issues

Questions

No.

Other

Validated locally with Node 24.19.0 and GCC: the addon builds and the public export selects it; 75/75 assertions pass with native tests running. Independent fixtures verify cancellation at 2^24 and 2^100, real/imaginary isolation, signed zero and NaN components, empty and singleton views, positive/negative/zero strides, buffer and ndarray offsets, and unchanged input/guard elements. Unavailable-addon dispatch selects the unchanged JS implementation. The C example returns 1+2i for a cancellation fixture; all 18 C benchmark runs complete. JavaScript, Markdown, package metadata, and both upstream EditorConfig configuration checks pass. Applicable C lint is recorded in the validation evidence.

Checklist

AI Assistance

  • Yes

  • No

  • Code generation

  • Test/benchmark generation

  • Documentation (including examples)

  • Research and understanding

Disclosure

The C adapter, Node.js addon, tests, build metadata, documentation, and research were prepared primarily by OpenAI Codex, following the project's existing ndarray/csum native implementation. The existing numerical C kernel and JavaScript implementation are reused. The contributing-guidelines acknowledgment records Codex's review and application of the guidelines under benatsf's explicit authorization to contribute. It does not claim that benatsf personally read the guide or manually reviewed the code. No manual applicant review is claimed.

Adapt complex64 ndarray views to the existing compensated C kernel. Add the public header, optional Node-API addon, native dispatch, build metadata and numerical/view-layout regression coverage while preserving the JavaScript fallback.

Assisted-by: OpenAI Codex
@benatsf
benatsf requested a review from a team October 2, 2026 10:34
@stdlib-bot stdlib-bot added BLAS Issue or pull request related to Basic Linear Algebra Subprograms (BLAS). Needs Review A pull request which needs code review. labels Oct 2, 2026
@stdlib-bot

Copy link
Copy Markdown
Contributor

Hello! Thank you for your contribution to stdlib.

We noticed that the contributing guidelines acknowledgment is missing from your pull request. Here's what you need to do:

  1. Please read our contributing guidelines.

  2. Update your pull request description to include this checked box:

    - [x] Read, understood, and followed the [contributing guidelines](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md)

This acknowledgment confirms that you've read the guidelines, which include:

  • The developer's certificate of origin
  • Your agreement to license your contributions under the project's terms

We can't review or accept contributions without this acknowledgment.

Thank you for your understanding and cooperation. We look forward to reviewing your contribution!

@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 the First-time Contributor A pull request from a contributor who has never previously committed to the project repository. label Oct 2, 2026

This branch has not been deployed

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

Labels

BLAS Issue or pull request related to Basic Linear Algebra Subprograms (BLAS). 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants