Re:FastDoubleParser: Java port of Daniel Lemires fast_double...
by java-man on Monday March 22, 2021 @03:01PM
(#26545227)
My point is about comparing accelerated code behavior to the standard java Double.
Re:FastDoubleParser: Java port of Daniel Lemires fast_double...
by stefs on Monday March 22, 2021 @06:39PM
(#26548335)
your point is still invalid because it's pointless to attempt what you're suggesting. and that's not how unit tests work.
unit testing doesn't mean that all possible values have to be tested. usually it's about code paths, i.e. standard, error and edge cases.
Re:FastDoubleParser: Java port of Daniel Lemires fast_double...
by dodobirdlord on Tuesday March 23, 2021 @02:33AM
(#26551750)
The successes of fuzzing projects like oss-fuzz have demonstrated significant shortcomings to hand-curating test cases in the manner you describe. Testing every 64bit float value is unrealistic, but testing a huge number of randomly selected values by cross-comparison with other libraries is a very good idea for code like this.
Re:FastDoubleParser: Java port of Daniel Lemires fast_double...
by java-man on Monday March 22, 2021 @08:51PM
(#26549569)
My point is based on experience. Yes, it's probably too much to ask to test all 2^64 cases, but I've been dealing with code in production that was failing precisely because some values lead to code paths that gave incorrect results.
In this particular case, I would have tested 2^N where N>32 random, unique values, at a minimum.
Of course, it depends on who the customer is. Some customers can tolerate a few bugs here and there; and some would incur million dollar losses.
Also, while there are only 2^64 distinct double values, there are many more string representations than that. For example, "1" and "1.0" are the same underlying value, but a parser needs to be able to handle both.