-
Notifications
You must be signed in to change notification settings - Fork 99
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
ryu incorrectly formats this f32 number #235
Comments
Since julia use ryu as its default float point to string algorithm. As a result, it seems like a half of the test cases were failed.
For further confirmation, I hand-picked some test samples and used the Dragonbox algorithm for confirmation:
You may want to test ryu with those cases, add new test cases here: Line 74 in 1264a94
// issue#235
ASSERT_F2S("3.3554432E7", 0x1p+25f); // good
ASSERT_F2S("6.7108864E7", 0x1p+26f); // good
ASSERT_F2S("1.34217728E8", 0x1p+27f);
ASSERT_F2S("2.68435456E8", 0x1p+28f);
ASSERT_F2S("5.36870912E8", 0x1p+29f);
ASSERT_F2S("1.073741824E9", 0x1p+30f);
ASSERT_F2S("2.147483648E9", 0x1p+31f);
ASSERT_F2S("2.147483904E9", 0x1.000002p+31f);
ASSERT_F2S("2.147483904E9", 2147483904.0f); |
think you are mislead, ryu - as well as other SRT converters - doesn't produce exact decimal correspondents, which are often funny for binary FP figures, but the 'Shortest Round Tripping'. The simpliest decimal number from which you get back the origin when converting to binary32. think this issue can be closed. |
An f32 (32 bit floating point value) can represent the number
2147483904
exactly. Ryu formats this number incorrectly. Ryu formats the number as the string2.147484E9
. Ryu should format the number as the string2147483904
.This is a bug in Ryu because it violates correctness criteria 3 from the paper, "correct rounding". Both strings satisfy criteria 1 and 2 but the string
2147483904
is closer to the original number. It has a distance of 0 to the number. Ryu's output has a distance of 96.The text was updated successfully, but these errors were encountered: