<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Wow.<div>Always nice with war stories from the dusty past :-)</div><div>Does your story imply that the "Maths Problem" can be calculated differently </div><div>still using the standard IEEE representation ?</div><div><br></div><div>Regards</div><div>/Tony</div><div><br><div><div>On 27 nov 2013, at 05:35, Michael Turner <<a href="mailto:michael.eugene.turner@gmail.com">michael.eugene.turner@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Gee, now might be a good time to bore everyone with a war story: a<br>startup I once worked for independently /pre/-invented the Pentium<br>Floating Point Bug, against my strenuous protests. How could this<br>happen, I wondered, as I was losing the battle for IEEE-standard<br>purity? Maybe, I thought, it's because we're a small company that<br>can't afford to hire experts to ratify my opinion?<br><br>We were using Weitek FPU adder and multiplier chips in our hardware,<br>and I implemented floating point division the way they said to do it -<br>the right way. Tried to, that is. I got overruled.<br><br>Not too many years later, for the Pentium design, Intel acquired<br>Weitek's IP. Then they introduced very similar mistakes in floating<br>point arithmetic, through no fault of Weitek. Ours, at least, could<br>have been patched by sending customers a new ROM to socket. Intel's<br>errors went onto a single chip.<br><br>What I learned about IEEE floating point arithmetic is that if you try<br>to clean up floating point "errors" one way, you just squeeze the<br>errors out some place else.<br><br>What I learned about people is that Size Doesn't Matter.<br><br>The proximate provocation in both cases: somebody didn't like how the<br>number printed. I first saw "errors" like when I was in high school,<br>programming in Dartmouth BASIC. I was told, "floating point is like<br>that - if it weren't that, it would be something worse." So I was<br>prepared. But lots of people now graduate with C.S. degrees who aren't<br>prepared.<br><br><br>Regards,<br>Michael Turner<br>Executive Director<br>Project Persephone<br>K-1 bldg 3F<br>7-2-6 Nishishinjuku<br>Shinjuku-ku Tokyo 160-0023<br>Tel: +81 (3) 6890-1140<br>Fax: +81 (3) 6890-1158<br>Mobile: +81 (90) 5203-8682<br><a href="mailto:turner@projectpersephone.org">turner@projectpersephone.org</a><br>http://www.projectpersephone.org/<br><br>"Love does not consist in gazing at each other, but in looking outward<br>together in the same direction." -- Antoine de Saint-Exupéry<br><br><br>On Wed, Nov 27, 2013 at 12:28 PM, Richard A. O'Keefe <ok@cs.otago.ac.nz> wrote:<br><blockquote type="cite"><br>On 27/11/2013, at 3:01 PM, Sanath Prasanna wrote:<br><br><blockquote type="cite">I accepted your comment. But generally we expected full value. I did same in another scripting language like php. It is given correct result.<br></blockquote><br>Wrong.  It *calculated* the same number as Erlang did,<br>but then it *displayed* a different number, a rounded version.<br><br>m% cat >foo.php<br><?php<br>$a = 2452.45*100;<br>echo $a; echo "\n";<br>$a = $a - 245245.0;<br>echo $a; echo "\n";<br>exit;<br>?><br><EOF><br>m% php foo.php<br>245245<br>-2.9103830456734E-11<br><br>We see from this that while the number *displays as*<br>245245, it is not *equal to* 245245.<br><br>As I said, PHP computed *exactly* the same answer as Erlang.<br>Who is this "we" who "expect full value"?<br>This is floating-point arithmetic, not rational arithmetic.<br><br>(Our 2nd year students are taught this stuff, but it doesn't<br>really take.  In 3rd year they have an exercise they have to<br>do where they start to really understand that floating point<br>arithmetic is *not* arithmetic on the mathematical real<br>numbers, but a different mathematical system which sort of<br>approximates the algebra of the reals.  They learn that<br>adding up an array of numbers from left to right generally<br>gives you a different answer from adding up from right to<br>left, for example.)<br><br>Numbers in IEEE floating point arithmetic are precise,<br>but are bounded in their precision, and arithmetic operations<br>on them (including conversion between decimal and binary)<br>have to round their answers to something that is representable.<br>There's a rounding in the conversion of 2452.45 to binary,<br>and then the multiplication incurs another rounding.<br><br>_______________________________________________<br>erlang-questions mailing list<br>erlang-questions@erlang.org<br>http://erlang.org/mailman/listinfo/erlang-questions<br></blockquote>_______________________________________________<br>erlang-questions mailing list<br>erlang-questions@erlang.org<br>http://erlang.org/mailman/listinfo/erlang-questions<br></blockquote></div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px; "><div><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 12px; ">"Installing applications can lead to corruption over time. </span><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 12px; ">Applications gradually write over each other's libraries, partial upgrades occur, user and system errors happen, and minute changes may be unnoticeable and difficult to fix"</span></div><div><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 12px; "><br></span></div></span><br class="Apple-interchange-newline">
</div>
<br></div></body></html>