Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Divergence in default rounding of xt::round() from np.round() #2800

Open
faze-geek opened this issue Jul 30, 2024 · 2 comments
Open

Divergence in default rounding of xt::round() from np.round() #2800

faze-geek opened this issue Jul 30, 2024 · 2 comments

Comments

@faze-geek
Copy link

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.

@faze-geek
Copy link
Author

@JohanMabille If this is a valid issue, I'd like to send in a fix. Thanks.

@faze-geek faze-geek changed the title DIvergence in default rounding of xt::round() from np.round() Divergence in default rounding of xt::round() from np.round() Jul 30, 2024
@faze-geek
Copy link
Author

If we want to stick with the original, this must be mentioned somewhere like noteable differences.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant