Initial program 0.0
\[\left(x + y\right) \cdot \left(x - y\right)
\]
Simplified0.0
\[\leadsto \color{blue}{\mathsf{fma}\left(x, x, y \cdot \left(-y\right)\right)}
\]
Proof
(fma.f64 x x (*.f64 y (neg.f64 y))): 0 points increase in error, 0 points decrease in error
(fma.f64 x x (Rewrite=> distribute-rgt-neg-out_binary64 (neg.f64 (*.f64 y y)))): 0 points increase in error, 0 points decrease in error
(Rewrite<= fma-neg_binary64 (-.f64 (*.f64 x x) (*.f64 y y))): 1 points increase in error, 0 points decrease in error
(Rewrite=> difference-of-squares_binary64 (*.f64 (+.f64 x y) (-.f64 x y))): 1 points increase in error, 0 points decrease in error
Final simplification0.0
\[\leadsto \mathsf{fma}\left(x, x, -y \cdot y\right)
\]