xtensor
xtensor copied to clipboard
Divergence in default rounding of `xt::round()` from `np.round()`
Consider following bankers rounding for xt::round() instead of rounding away from zero xtensor -
xt::xarray<double> arr1 = {0.5, 1.5, 2.5, 3.5, 4.5};
std::cout<<xt::round(arr1)<<std::endl;
{ 1., 2., 3., 4., 5.}
numpy -
>>> import numpy as np
>>> arr1 = np.array([0.5, 1.5, 2.5, 3.5, 4.5])
>>> np.round(arr1)
array([0., 2., 2., 4., 4.])
What numpy follows when rounding exact halves is round half to nearest even. You can read why it is the default rounding model followed by IEEE_754 becuase of eliminating biases here.
@JohanMabille If this is a valid issue, I'd like to send in a fix. Thanks.
If we want to stick with the original, this must be mentioned somewhere like noteable differences.