Skip to content

[RFC]: move @stdlib/math/base/ops/* packages to @stdlib/number/* and @stdlib/complex/* #2261

Closed
@kgryte

Description

@kgryte

Description

This RFC proposes moving packages found in @stdlib/math/base/ops to respective sub-namespaces in @stdlib/number/* and @stdlib/complex/*. For example,

  • @stdlib/math/base/ops/add => @stdlib/number/float64/base/add
  • @stdlib/math/base/ops/addf => @stdlib/number/float32/base/add
  • ...

Currently, we rely on prefixes and suffixes to distinguish packages in ops; however, this practice breaks down when wanting to add C variants for various integer dtypes. To keep things cleaner, this RFC advocates for migrating to dedicated dtype sub-namespaces for arithmetic, binary, and logical operations, where the latter were already planned for dtype sub-namespaces. Moving their arithmetic counterparts seems better for the sake of consistency than following the math/base/special precedent which stems from C99 and is primarily oriented to floating-point numbers.

Related Issues

Questions

No.

Other

Note that this RFC does not propose changing math/base/special. This applies only to ops which are more universal for each numeric dtype, and where we do actually want dedicated C interfaces for each dtype (e.g., int8_t stdlib_base_int8_add( int8_t x, int8_t y )).

The migration path would be as follows:

  • Copy dtype-specific packages to their respective sub-namespaces.
  • Update all require paths using the dtype-specific packages.
  • Remove all dtype-specific packages from @stdlib/math/base/ops namespace.

cc @Planeshifter

Checklist

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    AcceptedRFC feature request which has been accepted.MaintainersIssue which should be handled by project maintainers & is not recommended for external contributors.MathIssue or pull request specific to math functionality.RFCRequest for comments. Feature requests and proposed changes.release: MajorBreaking change requiring a new major release.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions