Optimizers should be careful when applying mathematical algebraic identities to FP variables. If, during the optimization process, the expression is changed to , the meaning of the computation is different.
Converting constants like from decimal to binary at compile time can change the semantic (a conversion at run time obeys the current value of the IEEE rounding modes, and eventually raise the inexact and underflow flags).
Semantics can be changed during common subexpression elimination.
In the code
is not a common subexpression, since it is computed with different
rounding modes.