Initial program 0.0
\[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right)
\]
Simplified0.0
\[\leadsto \color{blue}{\sin re \cdot \mathsf{fma}\left(0.5, e^{im}, \frac{0.5}{e^{im}}\right)}
\]
Proof
(*.f64 (sin.f64 re) (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im)))): 0 points increase in error, 0 points decrease in error
(*.f64 (sin.f64 re) (fma.f64 1/2 (exp.f64 im) (/.f64 (Rewrite<= metadata-eval (*.f64 1/2 1)) (exp.f64 im)))): 0 points increase in error, 0 points decrease in error
(*.f64 (sin.f64 re) (fma.f64 1/2 (exp.f64 im) (/.f64 (*.f64 1/2 (Rewrite<= exp-0_binary64 (exp.f64 0))) (exp.f64 im)))): 0 points increase in error, 0 points decrease in error
(*.f64 (sin.f64 re) (fma.f64 1/2 (exp.f64 im) (Rewrite<= associate-*r/_binary64 (*.f64 1/2 (/.f64 (exp.f64 0) (exp.f64 im)))))): 0 points increase in error, 0 points decrease in error
(*.f64 (sin.f64 re) (fma.f64 1/2 (exp.f64 im) (*.f64 1/2 (Rewrite<= exp-diff_binary64 (exp.f64 (-.f64 0 im)))))): 1 points increase in error, 0 points decrease in error
(*.f64 (sin.f64 re) (Rewrite<= fma-def_binary64 (+.f64 (*.f64 1/2 (exp.f64 im)) (*.f64 1/2 (exp.f64 (-.f64 0 im)))))): 0 points increase in error, 0 points decrease in error
(*.f64 (sin.f64 re) (Rewrite<= distribute-lft-in_binary64 (*.f64 1/2 (+.f64 (exp.f64 im) (exp.f64 (-.f64 0 im)))))): 0 points increase in error, 0 points decrease in error
(*.f64 (sin.f64 re) (*.f64 1/2 (Rewrite<= +-commutative_binary64 (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im))))): 0 points increase in error, 0 points decrease in error
(Rewrite<= associate-*l*_binary64 (*.f64 (*.f64 (sin.f64 re) 1/2) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))): 0 points increase in error, 0 points decrease in error
(*.f64 (Rewrite<= *-commutative_binary64 (*.f64 1/2 (sin.f64 re))) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im))): 0 points increase in error, 0 points decrease in error
Final simplification0.0
\[\leadsto \sin re \cdot \mathsf{fma}\left(0.5, e^{im}, \frac{0.5}{e^{im}}\right)
\]