<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:10pt"><div><span>Those who need to store or pass around NaNs and infinities today can hold their noses and keep the raw floats as binaries. Hardly ideal, but it gets the job done.</span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><span><br></span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><span>Best,</span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent;
 font-style: normal;"><span>Thomas<br><br></span></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 10pt;"> <div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12pt;"> <div dir="ltr"> <font size="2" face="Arial"> On , Thomas Lindgren <thomasl_erlang@yahoo.com> wrote:<br> </font> </div> <blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; margin-top: 5px; padding-left: 5px;">  <br><br> <div class="y_msg_container"><div id="yiv4966905653"><div><div style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 10pt;"><div class="yiv4966905653" style=""><span class="yiv4966905653" style="">On the positive side, doing "dirty" floating point
 like current Erlang means you don't have to manage or keep up with the strange cruft and corner cases of a rabbit hole far from the erlang core, so I can sort of see the (f.) point. Yet ultimately I consider it a mistaken design choice.</span></div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br clear="none" class="yiv4966905653" style=""></div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">Being dirty, you don't
 have to think about things like NaNs, infinities, denormalized numbers, fp according to <span class="yiv4966905653" style="font-size:10pt;">ISO/IEC 9899:TC3 Section 7.6, tracking the evolution of fp standards or what to do about</span></div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 10pt; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><span class="yiv4966905653" style="font-size:10pt;"><br clear="none"></span></div>







<div class="yiv4966905653" style="">"SEE ALSO</div><div class="yiv4966905653" style="">     fenv(3), feclearexcept(3), fegetenv(3), fegetexceptflag(3), feholdexcept(3),</div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">









</div><div class="yiv4966905653" style="">     fesetenv(3), feraiseexcept(3), fesetexceptflag(3), feraiseexcept(3), feupdateenv(3)"</div><div class="yiv4966905653" style=""><br clear="none"></div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">(Any choice you make beyond providing that is probably a liability.)</div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br clear="none"></div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style:
 normal;">Nevertheless, IEEE arithmetic is the standard and I think we'd at least want to represent and
 operate on standard floating point. </div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><br clear="none"></div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;"><span style="background-color:transparent;">Best,</span><br clear="none"></div><div class="yiv4966905653" style="color: rgb(0, 0, 0); font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: transparent; font-style: normal;">Thomas</div><div class="yiv4966905653yqt7214153569" id="yiv4966905653yqt19614"><div class="yiv4966905653yahoo_quoted" style="display: block;"> <div
 class="yiv4966905653" style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 10pt;"> <div class="yiv4966905653" style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12pt;"> <div class="yiv4966905653" dir="ltr" style=""> <font class="yiv4966905653" size="2" face="Arial" style=""> On Friday, May 16, 2014 12:44 AM, Richard A. O'Keefe <ok@cs.otago.ac.nz> wrote:<br clear="none" class="yiv4966905653" style=""> </font> </div> <blockquote class="yiv4966905653" style="border-left:2px solid rgb(16, 16, 255);margin-left:5px;margin-top:5px;padding-left:5px;">  <br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style=""> <div class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">On 15/05/2014, at 11:35 PM, Loïc Hoguin wrote:<br clear="none" class="yiv4966905653" style=""><br clear="none"
 class="yiv4966905653" style="">> Erlang doesn't have a representation for NaN, +infinity and -infinity.<br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">Does anyone know why?<br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">I've used Smalltalk systems which say "If non-IEEE arithmetic<br clear="none" class="yiv4966905653" style="">was good enough for Granddad, it's good enough for me.  SNIFF!"<br clear="none" class="yiv4966905653" style="">and Smalltalk systems which say "Standard since 1985, available<br clear="none" class="yiv4966905653" style="">everywhere, even on IBM z/Series, what earthly excuse could<br clear="none" class="yiv4966905653" style="">there be for NOT presenting IEEE arithmetic?"<br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">And the ones that don't hide infinities and NaNs turn out to
 be<br clear="none" class="yiv4966905653" style="">easier to use.<br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">Why?<br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">Well, if I have straightforward numeric code, I'm going to<br clear="none" class="yiv4966905653" style="">write it so that infinities and NaNs don't happen, so the<br clear="none" class="yiv4966905653" style="">only downside to being nonstandard is the extra run-time cost.<br clear="none" class="yiv4966905653" style="">But in
 fact very little numeric code is _that_ straightforward.<br clear="none" class="yiv4966905653" style="">Using a Smalltalk that respects the standard, I can take working<br clear="none" class="yiv4966905653" style="">numeric code in C or Fortran and convert it with very little<br clear="none" class="yiv4966905653" style="">effort and it will do the SAME thing.  Using a Smalltalk that<br clear="none" class="yiv4966905653" style="">does not respect the standard, I have to analyse every<br clear="none" class="yiv4966905653" style="">operation to make sure that it will work.<br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">In fact my own Smalltalk library includes some vectorised<br clear="none" class="yiv4966905653" style="">operations on specialised arrays, and it really would NOT<br clear="none" class="yiv4966905653" style="">be safe to switch from an Array that happens to hold<br clear="none"
 class="yiv4966905653" style="">FloatE objects to a FloatEArray if the arithmetic could be<br clear="none" class="yiv4966905653" style="">different in any
 way.<br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">Conversely, if I have some numeric code written in Erlang,<br clear="none" class="yiv4966905653" style="">it would be nice to be able to translate it to C and link<br clear="none" class="yiv4966905653" style="">it in.  But making floating point semantics *different* in<br clear="none" class="yiv4966905653" style="">Erlang and C makes this rather dangerous.<br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">Is Erlang running these days on *any* hardware platform<br clear="none" class="yiv4966905653" style="">that doesn't have IEEE arithmetic?<div class="yiv4966905653" id="yiv4966905653yqtfd74590" style=""><br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style="">_______________________________________________<br clear="none" class="yiv4966905653"
 style="">erlang-questions mailing list<br clear="none" class="yiv4966905653" style=""><a rel="nofollow" shape="rect" class="yiv4966905653" ymailto="mailto:erlang-questions@erlang.org" target="_blank" href="mailto:erlang-questions@erlang.org" style="">erlang-questions@erlang.org</a><br clear="none" class="yiv4966905653" style=""><a rel="nofollow" shape="rect" class="yiv4966905653" target="_blank" href="http://erlang.org/mailman/listinfo/erlang-questions" style="">http://erlang.org/mailman/listinfo/erlang-questions</a></div><br clear="none" class="yiv4966905653" style=""><br clear="none" class="yiv4966905653" style=""></div> </blockquote>  </div> </div>   </div></div> </div></div></div><br><br></div> </blockquote>  </div> </div>   </div> </div></body></html>