Initial program 0.0
\[re \cdot re + im \cdot im
\]
Taylor expanded in re around 0 0.0
\[\leadsto \color{blue}{{re}^{2} + {im}^{2}}
\]
Simplified0.0
\[\leadsto \color{blue}{\mathsf{fma}\left(im, im, re \cdot re\right)}
\]
Proof
(fma.f64 im im (*.f64 re re)): 0 points increase in error, 0 points decrease in error
(Rewrite=> fma-udef_binary64 (+.f64 (*.f64 im im) (*.f64 re re))): 1 points increase in error, 0 points decrease in error
(Rewrite<= +-commutative_binary64 (+.f64 (*.f64 re re) (*.f64 im im))): 0 points increase in error, 0 points decrease in error
(+.f64 (Rewrite<= unpow2_binary64 (pow.f64 re 2)) (*.f64 im im)): 0 points increase in error, 0 points decrease in error
(+.f64 (pow.f64 re 2) (Rewrite<= unpow2_binary64 (pow.f64 im 2))): 0 points increase in error, 0 points decrease in error
Final simplification0.0
\[\leadsto \mathsf{fma}\left(im, im, re \cdot re\right)
\]