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

Accurate number parsing #19

Open
9il opened this issue May 10, 2021 · 1 comment
Open

Accurate number parsing #19

9il opened this issue May 10, 2021 · 1 comment

Comments

@9il
Copy link

9il commented May 10, 2021

Current implementation has inaccurate number parsing.

How to Read Floating Point Numbers Accurately by William D. Clinger - a classic paper on number parsing.

mir.bignum.decimal can be used for parsing and precise conversion to double.

@mleise
Copy link
Collaborator

mleise commented May 10, 2021

I'm sorry, but I couldn't find the energy to keep working on the library. I am aware that numbers in the "denormalized" range and IIRC with extreme exponents aren't parsed correctly. The rarer cases have a "goto" line to move their code out of the hot loop, but no implementation. The common range of values used in the original benchmark was supposed to be parsed accurately though.

You have done a great job with Mir for the Dlang ecosystem and I think if "fast" was supposed to be a JSON parser, building on top of that foundation would be a good idea. But it was really supposed to be a no dependency, everything inlined type of collection of some particularly fast algorithms developed in recent years or simply standard algorithms, but with the use of the latest SSE or AVX instruction sets. Fast number parsing was one such aspect with JSON as a practical application.

If the benchmark is changed to use more extreme values, I'd just opt for removing "fast" from the table. I had a good time with it and feel like it inspired others to try and optimize their implementations which may have benefited users of Firefox and other open or closed source software.

nuald added a commit to nuald/benchmarks that referenced this issue May 12, 2021
Additionally:
 - D fast is removed from the tests (it doesn't work with the new test suite: etcimon/fast#19 and it's most
 likely it's not going to be fixed);
 - Java (ND4J) test has been fixed to use the same algorithms as other tests;
 - Some merge issues have been resolved.
nuald added a commit to kostya/benchmarks that referenced this issue May 12, 2021
* Initial primes tests have been added.

* Fixed link.

* Maintenance update May 11. 2021.

Additionally:
 - D fast is removed from the tests (it doesn't work with the new test suite: etcimon/fast#19 and it's most
 likely it's not going to be fixed);
 - Java (ND4J) test has been fixed to use the same algorithms as other tests;
 - Some merge issues have been resolved.
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

2 participants