On Tue, Nov 8, 2011 at 4:44 AM, Rich Felker wrote: > On Sun, Nov 06, 2011 at 11:28:41PM +0100, Pascal Cuoq wrote: > > > I was looking at implementations for strtod() (long story for another > time) > > It should be noted that the current implementation is not correct. > There's lots of loss-of-precision. > So I have seen, but if it's possible to do better for the objectives of musl, I do not know how. David M. Gay's code is efficient but it's not portable, and the other implementation I found (provided as part of Tcl and Ruby for instance) is only to a few ULPs too. I am going to write my own, with multi-precision integers (that I already rely on for other things). I am hoping that by letting ldexp take care of denormals and infinites, it will be simple. > Glad to hear you found the code pleasant, at least that part. Some > things (like floating point in vfprintf.c) are a bit ugly.. :) > I did look at the floating-point part in vfprintf.c, because of the claim on musl's website that printing floating-point numbers was correct. I have had trouble with floating-point to decimal conversion too, but I cheated a little there by inventing by own format: http://blog.frama-c.com/index.php?post/2011/10/29/A-portable-OCaml-function-to-print-floats Pascal