On Fri, Oct 10, 2014 at 3:27 PM, Vincent Lefevre <vincent+...@vinc17.org> wrote: > On 2014-10-10 11:07:52 +0200, Jakub Jelinek wrote: >> Though, is such optimization desirable even for fast-math? > > I wonder whether fast-math has a well-defined spec, but it should be > noted that because of possible cancellations, even if the final result > is a float, it may be better to keep intermediate results in double > if the user has used double types (explicitly or implicitly via a > function that returns a double). For instance, if x is a double, > (float) sin(x) and (float) sin((float) x) can give very different > results if x is large compared to the period (2*pi).
I think the only case handled right now is x being float and (float) sin ((double) x) being called. I think for that case the demotion is fine (and it is a common mistake that people don't know about the 'f' variants and expect sin to behave as type-generic function). Richard. > -- > Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> > 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> > Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)