On Fri, Jan 19, 2018 at 3:30 AM, Matthew Brett <matthew.brett@gmail.com> wrote:
Hi,

Sorry for my confusion, but I noticed (as a result of the discussion
here [1]) that np.rint and the fallback C function [2] seem to round
to even.  But - my impression was that C rint, by default, rounds down
[3].   Is numpy rint not behaving the same way as the GNU C library
rint?

In [4]: np.rint(np.arange(0.5, 11))
Out[4]: array([ 0.,  2.,  2.,  4.,  4.,  6.,  6.,  8.,  8., 10., 10.])

In [5]: np.round(np.arange(0.5, 11))
Out[5]: array([ 0.,  2.,  2.,  4.,  4.,  6.,  6.,  8.,  8., 10., 10.])

The GNU C documentation says that rint "round(s) x to an integer value according to the current rounding mode." The rounding mode is determined by settings in the FPU control word. Numpy runs with it set to round to even, although, IIRC, there is a bug on windows where the library is not setting those  bits correctly.

Chuck