[pypy-dev] algorithm used for float -> str conversion

Giuseppe Ottaviano giuott at gmail.com
Wed Jul 6 10:55:04 CEST 2011


> Note that cpython2.7 (and pypy 1.5) already uses a specific algorithm
> to convert float to strings: a slightly customized version of David Gay's
> dtoa.c: http://www.netlib.org/fp/dtoa.c
> it is already faster and more accurate than many libc implementations.

The article says "the Grisu family acts as the default rendering
algorithms in both the V8 and Mozilla Javascript engines (replacing
David Gay's 17-year-old dtoa code)"
I wonder if they had specific reasons to switch that could be relevant
to pypy and cpython as well.

For example, besides speed, Grisu implementations look way simpler
than Gay's code because the latter uses arbitrary precision integers
(and it has to implement them from scratch). For this reason dtoa also
needs dynamic allocations, while Grisu only does simple arithmetic on
machine-word integers (if my understanding is correct, from a quick
look at the paper and the source of both dtoa and grisu).


More information about the pypy-dev mailing list