Description
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.
Checklist
- I have read and understood the Code of Conduct.
- Searched for existing issues and pull requests.
- The issue name begins with
RFC:
.