Initial program 0.0
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1
\]
Simplified0.0
\[\leadsto \color{blue}{\mathsf{fma}\left(d1, d2 - d3, d1 \cdot \left(d4 - d1\right)\right)}
\]
Proof
(fma.f64 d1 (-.f64 d2 d3) (*.f64 d1 (-.f64 d4 d1))): 0 points increase in error, 0 points decrease in error
(fma.f64 d1 (-.f64 d2 d3) (Rewrite<= distribute-rgt-out--_binary64 (-.f64 (*.f64 d4 d1) (*.f64 d1 d1)))): 0 points increase in error, 0 points decrease in error
(Rewrite<= fma-def_binary64 (+.f64 (*.f64 d1 (-.f64 d2 d3)) (-.f64 (*.f64 d4 d1) (*.f64 d1 d1)))): 2 points increase in error, 0 points decrease in error
(+.f64 (Rewrite<= distribute-lft-out--_binary64 (-.f64 (*.f64 d1 d2) (*.f64 d1 d3))) (-.f64 (*.f64 d4 d1) (*.f64 d1 d1))): 1 points increase in error, 2 points decrease in error
(Rewrite<= associate--l+_binary64 (-.f64 (+.f64 (-.f64 (*.f64 d1 d2) (*.f64 d1 d3)) (*.f64 d4 d1)) (*.f64 d1 d1))): 0 points increase in error, 0 points decrease in error
Final simplification0.0
\[\leadsto \mathsf{fma}\left(d1, d2 - d3, d1 \cdot \left(d4 - d1\right)\right)
\]