From 3a2d0093faaeda8ae686cbef9e3a34795e9a0f16 Mon Sep 17 00:00:00 2001 From: ganesh-k13 Date: Wed, 14 Sep 2022 10:52:44 +0530 Subject: [PATCH] DOC: Better report integer division overflow (#21506) --- doc/release/upcoming_changes/21506.change.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 doc/release/upcoming_changes/21506.change.rst diff --git a/doc/release/upcoming_changes/21506.change.rst b/doc/release/upcoming_changes/21506.change.rst new file mode 100644 index 000000000000..18bc6cbc286f --- /dev/null +++ b/doc/release/upcoming_changes/21506.change.rst @@ -0,0 +1,18 @@ +Better reporting of integer division overflow +--------------------------------------------- + +Integer division overflow of scalars and arrays used to provide a ``RuntimeWarning`` +and the return value was undefined leading to crashes at rare occasions:: + + >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1) + :1: RuntimeWarning: divide by zero encountered in floor_divide + array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32) + +Integer division overflow now returns the input dtype's minimum value and raise the +following ``RuntimeWarning``:: + + >>> np.array([np.iinfo(np.int32).min]*10, dtype=np.int32) // np.int32(-1) + :1: RuntimeWarning: overflow encountered in floor_divide + array([-2147483648, -2147483648, -2147483648, -2147483648, -2147483648, + -2147483648, -2147483648, -2147483648, -2147483648, -2147483648], + dtype=int32)