Upcast unsigned integer dtypes in cumsum and cumprod #9594
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is a very basic attempt to deal with the following issue (example in #9592 ):
The
cumsum
andcumprod
array methods only partially follow the numpy implementation.They upcast signed integer and boolean dtypes but not unsigned integer dtypes.
This is in contrast to the current numpy and previous numba behavior. (Pre 0.57 it worked correctly but then numpy functions/methods were refactored to use
overloads
.)To embrace ,,Numba tries to bug-for-bug replicate NumPy'' (source) I propose to use
np.int_
andnp.uint
for the return dtype because that seems to be consistent withnp.cumsum
andnp.cumprod
behavior on all platforms.I added a test case (for both signed and unsigned integers) that would catch overflown results with both
cumsum
andcumprod
.Close #9592