On 2011-12-20 14:01:19 +0100, David Brown wrote: > There are times when you want IEEE-accurate floating point, because you are > pushing the limits of accuracy, or you want high repeatability. But > normally when you use floating point, you are accepting a certain amount of > inaccuracy. If your code is going to produce incorrect answers because of > the way the compiler/cpu rounds calculations, orders your sums, or treats > denormals and other specials, then I would argue that your code is probably > wrong - perhaps you should be using decimal types, long doubles, __float128, > or some sort of multi-precision maths library instead. I disagree: the operations could be written in an order to avoid some inaccuracies (such as huge cancellations) or to emulate more precision (e.g. via Veltkamp's splitting) or to control the rounding (see some rint() implementation http://sourceware.org/bugzilla/show_bug.cgi?id=602 for instance). On such code, unsafe optimizations could yield problems. -- Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)