On 11/18/10 08:36, Jim Meyering wrote: > Before I'd looked through the code I started thinking this might > be useful in avoiding snprintf's unhealthy need to malloc. > Then I saw that it uses snprintf. Oh well ;-)
There's a comment on how to fix that, for the common cases of double on float on hosts with IEEE floating point and 64-bit ints. It's a paper published earlier this year by Florian Loitsch <http://dx.doi.org/10.1145/1809028.1806623>. Not only would this fix the malloc problem, it would run rings around sprintf, performance-wise, on all libc implementations that I know of that print floating-point numbers accurately. The idea behind the latest checkin has been in Emacs for years, but the immediate prompt for it was a bug that I found in coreutils od, when I attempted to use it to generate floating point numbers at random (by reading /dev/urandom). The generated numbers turned out to be non-random, and I tracked it down to a bug in od. I'll check in a fix to coreutils shortly.