[LLVMdev] Optimize away sqrt in simple cases?

Stephen Lin swlin at post.harvard.edu
Tue Apr 23 19:15:45 PDT 2013


> This is not true.  The mathematically correct result for sqrt might not be a representable value in floating point, so rounding may occur between the two steps.  In that case, pow2(sqrt(x)) != x.
>
> --Owen

I think what Christoph is saying is that x will always be at least as
accurate as pow2(sqrt(x)), so it's only unsafe in so far as one's code
is actually depending on an imprecise result.

It's not an "as-if" optimization though, so it definitely would
require "fast math" or something similar; however, it seems like it
would be on the more benign side among optimizations that apply
mathematical identities that are not necessarily identities on floats,
as far as I can tell...

-Stephen



More information about the llvm-dev mailing list