From 8951e12d6cbe6bacfdda80fb307f44408a1c698f Mon Sep 17 00:00:00 2001 From: Eli Rykoff Date: Wed, 4 Nov 2020 21:52:25 -0800 Subject: [PATCH] BUG: Refactor complex floor_divide to avoid osx-arm64 optimization warnings. --- numpy/core/src/umath/loops.c.src | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/numpy/core/src/umath/loops.c.src b/numpy/core/src/umath/loops.c.src index 570b3ec04bc7..70bf687abe9f 100644 --- a/numpy/core/src/umath/loops.c.src +++ b/numpy/core/src/umath/loops.c.src @@ -2521,21 +2521,16 @@ NPY_NO_EXPORT void NPY_NO_EXPORT void @TYPE@_floor_divide(char **args, npy_intp const *dimensions, npy_intp const *steps, void *NPY_UNUSED(func)) { + @ftype@ mod; BINARY_LOOP { const @ftype@ in1r = ((@ftype@ *)ip1)[0]; const @ftype@ in1i = ((@ftype@ *)ip1)[1]; const @ftype@ in2r = ((@ftype@ *)ip2)[0]; const @ftype@ in2i = ((@ftype@ *)ip2)[1]; - if (npy_fabs@c@(in2r) >= npy_fabs@c@(in2i)) { - const @ftype@ rat = in2i/in2r; - ((@ftype@ *)op1)[0] = npy_floor@c@((in1r + in1i*rat)/(in2r + in2i*rat)); - ((@ftype@ *)op1)[1] = 0; - } - else { - const @ftype@ rat = in2r/in2i; - ((@ftype@ *)op1)[0] = npy_floor@c@((in1r*rat + in1i)/(in2i + in2r*rat)); - ((@ftype@ *)op1)[1] = 0; - } + ((@ftype@ *)op1)[0] = npy_divmod@c@(in1r*in2r + in1i*in2i, + in2r*in2r + in2i*in2i, + &mod); + ((@ftype@ *)op1)[1] = 0; } }