<div dir="ltr"><div><div><div>Paul,<br><br></div>My question is more narrow. It focuses specifically on the binary<->decimal transformation. It appears that while the f.p. instructions and the elementary functions were proved correct to the appropriate precision, there was not much care taken to ensure, for example, that "FLOAT_MAX", "FLOAT_MIN" and "FLOAT_EPS" can be converted in both directions without exceptions and loss of precision, etc. It appears to me that people started caring about these things in the late 80s at the earliest. I'd like to be wrong.<br><br></div>Thanks,<br></div>Leo<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Oct 17, 2016 at 8:55 AM, Paul Koning <span dir="ltr"><<a href="mailto:paulkoning@comcast.net" target="_blank">paulkoning@comcast.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span class=""><br><div><blockquote type="cite"><div>On Oct 14, 2016, at 7:22 PM, Leo Broukhis <<a href="mailto:leob@mailcom.com" target="_blank">leob@mailcom.com</a>> wrote:</div><br class="m_-809352625086394166Apple-interchange-newline"><div><div dir="ltr"><div><div>I wonder what is the historically first programming environment with native binary floating point which had been proved/demonstrated to handle f.p. binary<->decimal I/O conversions 100% correctly?<br></div>By 100% correctly I mean that all valid binary representations of floating point numbers could be, given a format with enough significant digits, converted to unique text strings, and these strings could be converted back to the corresponding unique binary representations.<br></div><div><div><div><br></div><div>Of course, there is enquire.c which facilitated finding bugs in the Unix/Posix environments, but has anyone cared about this during the mainframe era?</div></div></div></div></div></blockquote><br></div></span><div>I believe so, yes.  For the design of the floating point feature of the Electrologica X8 (early 1960s) the design documents discuss correctness, including what the definition of "correct" should be.</div><div><br></div><div>There is a very nice and very detailed correctness proof of that floating point design, documented in <a href="http://repository.tue.nl/674735" target="_blank">http://repository.tue.nl/<wbr>674735</a> .  That paper was written long after the fact, but by one of the people originally involved in that machine.</div><div><br></div><div>Apart from proofs of the correctness of each of the floating point instructions, that paper also describes the sqrt library function.   Interestingly enough, the implementation of that function does not use floating point operations.  But the analysis, in appendix B of the paper, clearly shows the error terms of the approximation used and why the number of steps used is sufficient for correctness of the sqrt implementation.</div><div><br></div><div>For a different machine, the CDC 6000 series, I remember reading complaints about its bizarre rounding behavior (rounding at 1/3 ?).  I forgot where that appeared; possibly a paper by prof. Niklaus Wirth of ETH Zürich.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div><span class="m_-809352625086394166Apple-tab-span" style="white-space:pre-wrap">  </span>paul</div><div><br></div><br></font></span></div></blockquote></div><br></div>