math.sin on complex, real part

Percentage Accurate: 100.0% → 100.0%
Time: 10.7s
Alternatives: 18
Speedup: 1.5×

Specification

?
\[\begin{array}{l} \\ \left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \end{array} \]
(FPCore (re im)
 :precision binary64
 (* (* 0.5 (sin re)) (+ (exp (- 0.0 im)) (exp im))))
double code(double re, double im) {
	return (0.5 * sin(re)) * (exp((0.0 - im)) + exp(im));
}
real(8) function code(re, im)
    real(8), intent (in) :: re
    real(8), intent (in) :: im
    code = (0.5d0 * sin(re)) * (exp((0.0d0 - im)) + exp(im))
end function
public static double code(double re, double im) {
	return (0.5 * Math.sin(re)) * (Math.exp((0.0 - im)) + Math.exp(im));
}
def code(re, im):
	return (0.5 * math.sin(re)) * (math.exp((0.0 - im)) + math.exp(im))
function code(re, im)
	return Float64(Float64(0.5 * sin(re)) * Float64(exp(Float64(0.0 - im)) + exp(im)))
end
function tmp = code(re, im)
	tmp = (0.5 * sin(re)) * (exp((0.0 - im)) + exp(im));
end
code[re_, im_] := N[(N[(0.5 * N[Sin[re], $MachinePrecision]), $MachinePrecision] * N[(N[Exp[N[(0.0 - im), $MachinePrecision]], $MachinePrecision] + N[Exp[im], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right)
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 18 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 100.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \end{array} \]
(FPCore (re im)
 :precision binary64
 (* (* 0.5 (sin re)) (+ (exp (- 0.0 im)) (exp im))))
double code(double re, double im) {
	return (0.5 * sin(re)) * (exp((0.0 - im)) + exp(im));
}
real(8) function code(re, im)
    real(8), intent (in) :: re
    real(8), intent (in) :: im
    code = (0.5d0 * sin(re)) * (exp((0.0d0 - im)) + exp(im))
end function
public static double code(double re, double im) {
	return (0.5 * Math.sin(re)) * (Math.exp((0.0 - im)) + Math.exp(im));
}
def code(re, im):
	return (0.5 * math.sin(re)) * (math.exp((0.0 - im)) + math.exp(im))
function code(re, im)
	return Float64(Float64(0.5 * sin(re)) * Float64(exp(Float64(0.0 - im)) + exp(im)))
end
function tmp = code(re, im)
	tmp = (0.5 * sin(re)) * (exp((0.0 - im)) + exp(im));
end
code[re_, im_] := N[(N[(0.5 * N[Sin[re], $MachinePrecision]), $MachinePrecision] * N[(N[Exp[N[(0.0 - im), $MachinePrecision]], $MachinePrecision] + N[Exp[im], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right)
\end{array}

Alternative 1: 100.0% accurate, 0.8× speedup?

\[\begin{array}{l} \\ \frac{0.5 \cdot \sin re}{e^{im}} + \sin re \cdot \left(0.5 \cdot e^{im}\right) \end{array} \]
(FPCore (re im)
 :precision binary64
 (+ (/ (* 0.5 (sin re)) (exp im)) (* (sin re) (* 0.5 (exp im)))))
double code(double re, double im) {
	return ((0.5 * sin(re)) / exp(im)) + (sin(re) * (0.5 * exp(im)));
}
real(8) function code(re, im)
    real(8), intent (in) :: re
    real(8), intent (in) :: im
    code = ((0.5d0 * sin(re)) / exp(im)) + (sin(re) * (0.5d0 * exp(im)))
end function
public static double code(double re, double im) {
	return ((0.5 * Math.sin(re)) / Math.exp(im)) + (Math.sin(re) * (0.5 * Math.exp(im)));
}
def code(re, im):
	return ((0.5 * math.sin(re)) / math.exp(im)) + (math.sin(re) * (0.5 * math.exp(im)))
function code(re, im)
	return Float64(Float64(Float64(0.5 * sin(re)) / exp(im)) + Float64(sin(re) * Float64(0.5 * exp(im))))
end
function tmp = code(re, im)
	tmp = ((0.5 * sin(re)) / exp(im)) + (sin(re) * (0.5 * exp(im)));
end
code[re_, im_] := N[(N[(N[(0.5 * N[Sin[re], $MachinePrecision]), $MachinePrecision] / N[Exp[im], $MachinePrecision]), $MachinePrecision] + N[(N[Sin[re], $MachinePrecision] * N[(0.5 * N[Exp[im], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{0.5 \cdot \sin re}{e^{im}} + \sin re \cdot \left(0.5 \cdot e^{im}\right)
\end{array}
Derivation
  1. Initial program 100.0%

    \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. distribute-rgt-inN/A

      \[\leadsto e^{0 - im} \cdot \left(\frac{1}{2} \cdot \sin re\right) + \color{blue}{e^{im} \cdot \left(\frac{1}{2} \cdot \sin re\right)} \]
    2. +-lowering-+.f64N/A

      \[\leadsto \mathsf{+.f64}\left(\left(e^{0 - im} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right), \color{blue}{\left(e^{im} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right)}\right) \]
    3. *-commutativeN/A

      \[\leadsto \mathsf{+.f64}\left(\left(\left(\frac{1}{2} \cdot \sin re\right) \cdot e^{0 - im}\right), \left(\color{blue}{e^{im}} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right)\right) \]
    4. sub0-negN/A

      \[\leadsto \mathsf{+.f64}\left(\left(\left(\frac{1}{2} \cdot \sin re\right) \cdot e^{\mathsf{neg}\left(im\right)}\right), \left(e^{im} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right)\right) \]
    5. exp-negN/A

      \[\leadsto \mathsf{+.f64}\left(\left(\left(\frac{1}{2} \cdot \sin re\right) \cdot \frac{1}{e^{im}}\right), \left(e^{im} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right)\right) \]
    6. un-div-invN/A

      \[\leadsto \mathsf{+.f64}\left(\left(\frac{\frac{1}{2} \cdot \sin re}{e^{im}}\right), \left(\color{blue}{e^{im}} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right)\right) \]
    7. /-lowering-/.f64N/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\left(\frac{1}{2} \cdot \sin re\right), \left(e^{im}\right)\right), \left(\color{blue}{e^{im}} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right)\right) \]
    8. *-lowering-*.f64N/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \sin re\right), \left(e^{im}\right)\right), \left(e^{\color{blue}{im}} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right)\right) \]
    9. sin-lowering-sin.f64N/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \left(e^{im}\right)\right), \left(e^{im} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right)\right) \]
    10. exp-lowering-exp.f64N/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{exp.f64}\left(im\right)\right), \left(e^{im} \cdot \left(\frac{1}{2} \cdot \sin re\right)\right)\right) \]
    11. associate-*r*N/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{exp.f64}\left(im\right)\right), \left(\left(e^{im} \cdot \frac{1}{2}\right) \cdot \color{blue}{\sin re}\right)\right) \]
    12. *-commutativeN/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{exp.f64}\left(im\right)\right), \left(\sin re \cdot \color{blue}{\left(e^{im} \cdot \frac{1}{2}\right)}\right)\right) \]
    13. *-lowering-*.f64N/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{exp.f64}\left(im\right)\right), \mathsf{*.f64}\left(\sin re, \color{blue}{\left(e^{im} \cdot \frac{1}{2}\right)}\right)\right) \]
    14. sin-lowering-sin.f64N/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{exp.f64}\left(im\right)\right), \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \left(\color{blue}{e^{im}} \cdot \frac{1}{2}\right)\right)\right) \]
    15. *-commutativeN/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{exp.f64}\left(im\right)\right), \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \left(\frac{1}{2} \cdot \color{blue}{e^{im}}\right)\right)\right) \]
    16. *-lowering-*.f64N/A

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{exp.f64}\left(im\right)\right), \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \mathsf{*.f64}\left(\frac{1}{2}, \color{blue}{\left(e^{im}\right)}\right)\right)\right) \]
    17. exp-lowering-exp.f64100.0%

      \[\leadsto \mathsf{+.f64}\left(\mathsf{/.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{exp.f64}\left(im\right)\right), \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{exp.f64}\left(im\right)\right)\right)\right) \]
  4. Applied egg-rr100.0%

    \[\leadsto \color{blue}{\frac{0.5 \cdot \sin re}{e^{im}} + \sin re \cdot \left(0.5 \cdot e^{im}\right)} \]
  5. Add Preprocessing

Alternative 2: 100.0% accurate, 1.5× speedup?

\[\begin{array}{l} \\ \sin re \cdot \cosh im \end{array} \]
(FPCore (re im) :precision binary64 (* (sin re) (cosh im)))
double code(double re, double im) {
	return sin(re) * cosh(im);
}
real(8) function code(re, im)
    real(8), intent (in) :: re
    real(8), intent (in) :: im
    code = sin(re) * cosh(im)
end function
public static double code(double re, double im) {
	return Math.sin(re) * Math.cosh(im);
}
def code(re, im):
	return math.sin(re) * math.cosh(im)
function code(re, im)
	return Float64(sin(re) * cosh(im))
end
function tmp = code(re, im)
	tmp = sin(re) * cosh(im);
end
code[re_, im_] := N[(N[Sin[re], $MachinePrecision] * N[Cosh[im], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\sin re \cdot \cosh im
\end{array}
Derivation
  1. Initial program 100.0%

    \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \left(e^{0 - im} + e^{im}\right) \cdot \color{blue}{\left(\frac{1}{2} \cdot \sin re\right)} \]
    2. associate-*r*N/A

      \[\leadsto \left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right) \cdot \color{blue}{\sin re} \]
    3. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right), \color{blue}{\sin re}\right) \]
    4. *-commutativeN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{0 - im} + e^{im}\right)\right), \sin \color{blue}{re}\right) \]
    5. +-commutativeN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{0 - im}\right)\right), \sin re\right) \]
    6. sub0-negN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{\mathsf{neg}\left(im\right)}\right)\right), \sin re\right) \]
    7. cosh-undefN/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(2 \cdot \cosh im\right)\right), \sin re\right) \]
    8. associate-*r*N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\left(\frac{1}{2} \cdot 2\right) \cdot \cosh im\right), \sin \color{blue}{re}\right) \]
    9. metadata-evalN/A

      \[\leadsto \mathsf{*.f64}\left(\left(1 \cdot \cosh im\right), \sin re\right) \]
    10. exp-0N/A

      \[\leadsto \mathsf{*.f64}\left(\left(e^{0} \cdot \cosh im\right), \sin re\right) \]
    11. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(e^{0}\right), \cosh im\right), \sin \color{blue}{re}\right) \]
    12. exp-0N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \cosh im\right), \sin re\right) \]
    13. cosh-lowering-cosh.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \sin re\right) \]
    14. sin-lowering-sin.f64100.0%

      \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
  4. Applied egg-rr100.0%

    \[\leadsto \color{blue}{\left(1 \cdot \cosh im\right) \cdot \sin re} \]
  5. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \sin re \cdot \color{blue}{\left(1 \cdot \cosh im\right)} \]
    2. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\sin re, \color{blue}{\left(1 \cdot \cosh im\right)}\right) \]
    3. sin-lowering-sin.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \left(\color{blue}{1} \cdot \cosh im\right)\right) \]
    4. *-lft-identityN/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \cosh im\right) \]
    5. cosh-lowering-cosh.f64100.0%

      \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \mathsf{cosh.f64}\left(im\right)\right) \]
  6. Applied egg-rr100.0%

    \[\leadsto \color{blue}{\sin re \cdot \cosh im} \]
  7. Add Preprocessing

Alternative 3: 79.0% accurate, 2.5× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;re \leq 1.2 \cdot 10^{-8}:\\ \;\;\;\;re \cdot \cosh im\\ \mathbf{else}:\\ \;\;\;\;\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.041666666666666664 + \left(im \cdot im\right) \cdot 0.001388888888888889\right)\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (re im)
 :precision binary64
 (if (<= re 1.2e-8)
   (* re (cosh im))
   (*
    (sin re)
    (+
     1.0
     (*
      (* im im)
      (+
       0.5
       (*
        im
        (*
         im
         (+ 0.041666666666666664 (* (* im im) 0.001388888888888889))))))))))
double code(double re, double im) {
	double tmp;
	if (re <= 1.2e-8) {
		tmp = re * cosh(im);
	} else {
		tmp = sin(re) * (1.0 + ((im * im) * (0.5 + (im * (im * (0.041666666666666664 + ((im * im) * 0.001388888888888889)))))));
	}
	return tmp;
}
real(8) function code(re, im)
    real(8), intent (in) :: re
    real(8), intent (in) :: im
    real(8) :: tmp
    if (re <= 1.2d-8) then
        tmp = re * cosh(im)
    else
        tmp = sin(re) * (1.0d0 + ((im * im) * (0.5d0 + (im * (im * (0.041666666666666664d0 + ((im * im) * 0.001388888888888889d0)))))))
    end if
    code = tmp
end function
public static double code(double re, double im) {
	double tmp;
	if (re <= 1.2e-8) {
		tmp = re * Math.cosh(im);
	} else {
		tmp = Math.sin(re) * (1.0 + ((im * im) * (0.5 + (im * (im * (0.041666666666666664 + ((im * im) * 0.001388888888888889)))))));
	}
	return tmp;
}
def code(re, im):
	tmp = 0
	if re <= 1.2e-8:
		tmp = re * math.cosh(im)
	else:
		tmp = math.sin(re) * (1.0 + ((im * im) * (0.5 + (im * (im * (0.041666666666666664 + ((im * im) * 0.001388888888888889)))))))
	return tmp
function code(re, im)
	tmp = 0.0
	if (re <= 1.2e-8)
		tmp = Float64(re * cosh(im));
	else
		tmp = Float64(sin(re) * Float64(1.0 + Float64(Float64(im * im) * Float64(0.5 + Float64(im * Float64(im * Float64(0.041666666666666664 + Float64(Float64(im * im) * 0.001388888888888889))))))));
	end
	return tmp
end
function tmp_2 = code(re, im)
	tmp = 0.0;
	if (re <= 1.2e-8)
		tmp = re * cosh(im);
	else
		tmp = sin(re) * (1.0 + ((im * im) * (0.5 + (im * (im * (0.041666666666666664 + ((im * im) * 0.001388888888888889)))))));
	end
	tmp_2 = tmp;
end
code[re_, im_] := If[LessEqual[re, 1.2e-8], N[(re * N[Cosh[im], $MachinePrecision]), $MachinePrecision], N[(N[Sin[re], $MachinePrecision] * N[(1.0 + N[(N[(im * im), $MachinePrecision] * N[(0.5 + N[(im * N[(im * N[(0.041666666666666664 + N[(N[(im * im), $MachinePrecision] * 0.001388888888888889), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;re \leq 1.2 \cdot 10^{-8}:\\
\;\;\;\;re \cdot \cosh im\\

\mathbf{else}:\\
\;\;\;\;\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.041666666666666664 + \left(im \cdot im\right) \cdot 0.001388888888888889\right)\right)\right)\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if re < 1.19999999999999999e-8

    1. Initial program 100.0%

      \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \left(e^{0 - im} + e^{im}\right) \cdot \color{blue}{\left(\frac{1}{2} \cdot \sin re\right)} \]
      2. associate-*r*N/A

        \[\leadsto \left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right) \cdot \color{blue}{\sin re} \]
      3. *-lowering-*.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right), \color{blue}{\sin re}\right) \]
      4. *-commutativeN/A

        \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{0 - im} + e^{im}\right)\right), \sin \color{blue}{re}\right) \]
      5. +-commutativeN/A

        \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{0 - im}\right)\right), \sin re\right) \]
      6. sub0-negN/A

        \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{\mathsf{neg}\left(im\right)}\right)\right), \sin re\right) \]
      7. cosh-undefN/A

        \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(2 \cdot \cosh im\right)\right), \sin re\right) \]
      8. associate-*r*N/A

        \[\leadsto \mathsf{*.f64}\left(\left(\left(\frac{1}{2} \cdot 2\right) \cdot \cosh im\right), \sin \color{blue}{re}\right) \]
      9. metadata-evalN/A

        \[\leadsto \mathsf{*.f64}\left(\left(1 \cdot \cosh im\right), \sin re\right) \]
      10. exp-0N/A

        \[\leadsto \mathsf{*.f64}\left(\left(e^{0} \cdot \cosh im\right), \sin re\right) \]
      11. *-lowering-*.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(e^{0}\right), \cosh im\right), \sin \color{blue}{re}\right) \]
      12. exp-0N/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \cosh im\right), \sin re\right) \]
      13. cosh-lowering-cosh.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \sin re\right) \]
      14. sin-lowering-sin.f64100.0%

        \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
    4. Applied egg-rr100.0%

      \[\leadsto \color{blue}{\left(1 \cdot \cosh im\right) \cdot \sin re} \]
    5. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \sin re \cdot \color{blue}{\left(1 \cdot \cosh im\right)} \]
      2. *-lowering-*.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\sin re, \color{blue}{\left(1 \cdot \cosh im\right)}\right) \]
      3. sin-lowering-sin.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \left(\color{blue}{1} \cdot \cosh im\right)\right) \]
      4. *-lft-identityN/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \cosh im\right) \]
      5. cosh-lowering-cosh.f64100.0%

        \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \mathsf{cosh.f64}\left(im\right)\right) \]
    6. Applied egg-rr100.0%

      \[\leadsto \color{blue}{\sin re \cdot \cosh im} \]
    7. Taylor expanded in re around 0

      \[\leadsto \mathsf{*.f64}\left(\color{blue}{re}, \mathsf{cosh.f64}\left(im\right)\right) \]
    8. Step-by-step derivation
      1. Simplified78.8%

        \[\leadsto \color{blue}{re} \cdot \cosh im \]

      if 1.19999999999999999e-8 < re

      1. Initial program 100.0%

        \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \left(e^{0 - im} + e^{im}\right) \cdot \color{blue}{\left(\frac{1}{2} \cdot \sin re\right)} \]
        2. associate-*r*N/A

          \[\leadsto \left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right) \cdot \color{blue}{\sin re} \]
        3. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right), \color{blue}{\sin re}\right) \]
        4. *-commutativeN/A

          \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{0 - im} + e^{im}\right)\right), \sin \color{blue}{re}\right) \]
        5. +-commutativeN/A

          \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{0 - im}\right)\right), \sin re\right) \]
        6. sub0-negN/A

          \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{\mathsf{neg}\left(im\right)}\right)\right), \sin re\right) \]
        7. cosh-undefN/A

          \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(2 \cdot \cosh im\right)\right), \sin re\right) \]
        8. associate-*r*N/A

          \[\leadsto \mathsf{*.f64}\left(\left(\left(\frac{1}{2} \cdot 2\right) \cdot \cosh im\right), \sin \color{blue}{re}\right) \]
        9. metadata-evalN/A

          \[\leadsto \mathsf{*.f64}\left(\left(1 \cdot \cosh im\right), \sin re\right) \]
        10. exp-0N/A

          \[\leadsto \mathsf{*.f64}\left(\left(e^{0} \cdot \cosh im\right), \sin re\right) \]
        11. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(e^{0}\right), \cosh im\right), \sin \color{blue}{re}\right) \]
        12. exp-0N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \cosh im\right), \sin re\right) \]
        13. cosh-lowering-cosh.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \sin re\right) \]
        14. sin-lowering-sin.f64100.0%

          \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
      4. Applied egg-rr100.0%

        \[\leadsto \color{blue}{\left(1 \cdot \cosh im\right) \cdot \sin re} \]
      5. Taylor expanded in im around 0

        \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(1 + {im}^{2} \cdot \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)}, \mathsf{sin.f64}\left(re\right)\right) \]
      6. Step-by-step derivation
        1. +-lowering-+.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \left({im}^{2} \cdot \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right), \mathsf{sin.f64}\left(\color{blue}{re}\right)\right) \]
        2. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({im}^{2}\right), \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        3. unpow2N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        4. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        5. +-lowering-+.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \left({im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        6. unpow2N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \left(\left(im \cdot im\right) \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        7. associate-*l*N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \left(im \cdot \left(im \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        8. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \left(im \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        9. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        10. +-lowering-+.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \left(\frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        11. *-commutativeN/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \left({im}^{2} \cdot \frac{1}{720}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        12. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(\left({im}^{2}\right), \frac{1}{720}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        13. unpow2N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{720}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        14. *-lowering-*.f6491.7%

          \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{720}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
      7. Simplified91.7%

        \[\leadsto \color{blue}{\left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.041666666666666664 + \left(im \cdot im\right) \cdot 0.001388888888888889\right)\right)\right)\right)} \cdot \sin re \]
    9. Recombined 2 regimes into one program.
    10. Final simplification82.2%

      \[\leadsto \begin{array}{l} \mathbf{if}\;re \leq 1.2 \cdot 10^{-8}:\\ \;\;\;\;re \cdot \cosh im\\ \mathbf{else}:\\ \;\;\;\;\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.041666666666666664 + \left(im \cdot im\right) \cdot 0.001388888888888889\right)\right)\right)\right)\\ \end{array} \]
    11. Add Preprocessing

    Alternative 4: 78.0% accurate, 2.6× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;re \leq 2 \cdot 10^{-9}:\\ \;\;\;\;re \cdot \cosh im\\ \mathbf{else}:\\ \;\;\;\;\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)\\ \end{array} \end{array} \]
    (FPCore (re im)
     :precision binary64
     (if (<= re 2e-9)
       (* re (cosh im))
       (*
        (sin re)
        (+ 1.0 (* (* im im) (+ 0.5 (* im (* im 0.041666666666666664))))))))
    double code(double re, double im) {
    	double tmp;
    	if (re <= 2e-9) {
    		tmp = re * cosh(im);
    	} else {
    		tmp = sin(re) * (1.0 + ((im * im) * (0.5 + (im * (im * 0.041666666666666664)))));
    	}
    	return tmp;
    }
    
    real(8) function code(re, im)
        real(8), intent (in) :: re
        real(8), intent (in) :: im
        real(8) :: tmp
        if (re <= 2d-9) then
            tmp = re * cosh(im)
        else
            tmp = sin(re) * (1.0d0 + ((im * im) * (0.5d0 + (im * (im * 0.041666666666666664d0)))))
        end if
        code = tmp
    end function
    
    public static double code(double re, double im) {
    	double tmp;
    	if (re <= 2e-9) {
    		tmp = re * Math.cosh(im);
    	} else {
    		tmp = Math.sin(re) * (1.0 + ((im * im) * (0.5 + (im * (im * 0.041666666666666664)))));
    	}
    	return tmp;
    }
    
    def code(re, im):
    	tmp = 0
    	if re <= 2e-9:
    		tmp = re * math.cosh(im)
    	else:
    		tmp = math.sin(re) * (1.0 + ((im * im) * (0.5 + (im * (im * 0.041666666666666664)))))
    	return tmp
    
    function code(re, im)
    	tmp = 0.0
    	if (re <= 2e-9)
    		tmp = Float64(re * cosh(im));
    	else
    		tmp = Float64(sin(re) * Float64(1.0 + Float64(Float64(im * im) * Float64(0.5 + Float64(im * Float64(im * 0.041666666666666664))))));
    	end
    	return tmp
    end
    
    function tmp_2 = code(re, im)
    	tmp = 0.0;
    	if (re <= 2e-9)
    		tmp = re * cosh(im);
    	else
    		tmp = sin(re) * (1.0 + ((im * im) * (0.5 + (im * (im * 0.041666666666666664)))));
    	end
    	tmp_2 = tmp;
    end
    
    code[re_, im_] := If[LessEqual[re, 2e-9], N[(re * N[Cosh[im], $MachinePrecision]), $MachinePrecision], N[(N[Sin[re], $MachinePrecision] * N[(1.0 + N[(N[(im * im), $MachinePrecision] * N[(0.5 + N[(im * N[(im * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    \mathbf{if}\;re \leq 2 \cdot 10^{-9}:\\
    \;\;\;\;re \cdot \cosh im\\
    
    \mathbf{else}:\\
    \;\;\;\;\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if re < 2.00000000000000012e-9

      1. Initial program 100.0%

        \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \left(e^{0 - im} + e^{im}\right) \cdot \color{blue}{\left(\frac{1}{2} \cdot \sin re\right)} \]
        2. associate-*r*N/A

          \[\leadsto \left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right) \cdot \color{blue}{\sin re} \]
        3. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right), \color{blue}{\sin re}\right) \]
        4. *-commutativeN/A

          \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{0 - im} + e^{im}\right)\right), \sin \color{blue}{re}\right) \]
        5. +-commutativeN/A

          \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{0 - im}\right)\right), \sin re\right) \]
        6. sub0-negN/A

          \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{\mathsf{neg}\left(im\right)}\right)\right), \sin re\right) \]
        7. cosh-undefN/A

          \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(2 \cdot \cosh im\right)\right), \sin re\right) \]
        8. associate-*r*N/A

          \[\leadsto \mathsf{*.f64}\left(\left(\left(\frac{1}{2} \cdot 2\right) \cdot \cosh im\right), \sin \color{blue}{re}\right) \]
        9. metadata-evalN/A

          \[\leadsto \mathsf{*.f64}\left(\left(1 \cdot \cosh im\right), \sin re\right) \]
        10. exp-0N/A

          \[\leadsto \mathsf{*.f64}\left(\left(e^{0} \cdot \cosh im\right), \sin re\right) \]
        11. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(e^{0}\right), \cosh im\right), \sin \color{blue}{re}\right) \]
        12. exp-0N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \cosh im\right), \sin re\right) \]
        13. cosh-lowering-cosh.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \sin re\right) \]
        14. sin-lowering-sin.f64100.0%

          \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
      4. Applied egg-rr100.0%

        \[\leadsto \color{blue}{\left(1 \cdot \cosh im\right) \cdot \sin re} \]
      5. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \sin re \cdot \color{blue}{\left(1 \cdot \cosh im\right)} \]
        2. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\sin re, \color{blue}{\left(1 \cdot \cosh im\right)}\right) \]
        3. sin-lowering-sin.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \left(\color{blue}{1} \cdot \cosh im\right)\right) \]
        4. *-lft-identityN/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \cosh im\right) \]
        5. cosh-lowering-cosh.f64100.0%

          \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \mathsf{cosh.f64}\left(im\right)\right) \]
      6. Applied egg-rr100.0%

        \[\leadsto \color{blue}{\sin re \cdot \cosh im} \]
      7. Taylor expanded in re around 0

        \[\leadsto \mathsf{*.f64}\left(\color{blue}{re}, \mathsf{cosh.f64}\left(im\right)\right) \]
      8. Step-by-step derivation
        1. Simplified78.8%

          \[\leadsto \color{blue}{re} \cdot \cosh im \]

        if 2.00000000000000012e-9 < re

        1. Initial program 100.0%

          \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
        2. Add Preprocessing
        3. Taylor expanded in im around 0

          \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
        4. Step-by-step derivation
          1. *-rgt-identityN/A

            \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
          2. +-commutativeN/A

            \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
          3. associate-*r*N/A

            \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
          4. distribute-rgt-outN/A

            \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
          5. associate-*r*N/A

            \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
          6. distribute-lft-outN/A

            \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
          7. *-commutativeN/A

            \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
          8. associate-*l*N/A

            \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
          9. unpow2N/A

            \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
          10. associate-*r*N/A

            \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
          11. *-commutativeN/A

            \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
          12. *-commutativeN/A

            \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
          13. associate-*l*N/A

            \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
          14. distribute-lft-outN/A

            \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
        5. Simplified90.2%

          \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
      9. Recombined 2 regimes into one program.
      10. Add Preprocessing

      Alternative 5: 85.1% accurate, 2.6× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(0.5 \cdot \sin re\right) \cdot \left(im \cdot im + 2\right)\\ \mathbf{if}\;im \leq 0.016:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;im \leq 1.35 \cdot 10^{+154}:\\ \;\;\;\;re \cdot \cosh im\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
      (FPCore (re im)
       :precision binary64
       (let* ((t_0 (* (* 0.5 (sin re)) (+ (* im im) 2.0))))
         (if (<= im 0.016) t_0 (if (<= im 1.35e+154) (* re (cosh im)) t_0))))
      double code(double re, double im) {
      	double t_0 = (0.5 * sin(re)) * ((im * im) + 2.0);
      	double tmp;
      	if (im <= 0.016) {
      		tmp = t_0;
      	} else if (im <= 1.35e+154) {
      		tmp = re * cosh(im);
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      real(8) function code(re, im)
          real(8), intent (in) :: re
          real(8), intent (in) :: im
          real(8) :: t_0
          real(8) :: tmp
          t_0 = (0.5d0 * sin(re)) * ((im * im) + 2.0d0)
          if (im <= 0.016d0) then
              tmp = t_0
          else if (im <= 1.35d+154) then
              tmp = re * cosh(im)
          else
              tmp = t_0
          end if
          code = tmp
      end function
      
      public static double code(double re, double im) {
      	double t_0 = (0.5 * Math.sin(re)) * ((im * im) + 2.0);
      	double tmp;
      	if (im <= 0.016) {
      		tmp = t_0;
      	} else if (im <= 1.35e+154) {
      		tmp = re * Math.cosh(im);
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      def code(re, im):
      	t_0 = (0.5 * math.sin(re)) * ((im * im) + 2.0)
      	tmp = 0
      	if im <= 0.016:
      		tmp = t_0
      	elif im <= 1.35e+154:
      		tmp = re * math.cosh(im)
      	else:
      		tmp = t_0
      	return tmp
      
      function code(re, im)
      	t_0 = Float64(Float64(0.5 * sin(re)) * Float64(Float64(im * im) + 2.0))
      	tmp = 0.0
      	if (im <= 0.016)
      		tmp = t_0;
      	elseif (im <= 1.35e+154)
      		tmp = Float64(re * cosh(im));
      	else
      		tmp = t_0;
      	end
      	return tmp
      end
      
      function tmp_2 = code(re, im)
      	t_0 = (0.5 * sin(re)) * ((im * im) + 2.0);
      	tmp = 0.0;
      	if (im <= 0.016)
      		tmp = t_0;
      	elseif (im <= 1.35e+154)
      		tmp = re * cosh(im);
      	else
      		tmp = t_0;
      	end
      	tmp_2 = tmp;
      end
      
      code[re_, im_] := Block[{t$95$0 = N[(N[(0.5 * N[Sin[re], $MachinePrecision]), $MachinePrecision] * N[(N[(im * im), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[im, 0.016], t$95$0, If[LessEqual[im, 1.35e+154], N[(re * N[Cosh[im], $MachinePrecision]), $MachinePrecision], t$95$0]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \left(0.5 \cdot \sin re\right) \cdot \left(im \cdot im + 2\right)\\
      \mathbf{if}\;im \leq 0.016:\\
      \;\;\;\;t\_0\\
      
      \mathbf{elif}\;im \leq 1.35 \cdot 10^{+154}:\\
      \;\;\;\;re \cdot \cosh im\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if im < 0.016 or 1.35000000000000003e154 < im

        1. Initial program 100.0%

          \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
        2. Add Preprocessing
        3. Taylor expanded in im around 0

          \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \color{blue}{\left(2 + {im}^{2}\right)}\right) \]
        4. Step-by-step derivation
          1. +-lowering-+.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \color{blue}{\left({im}^{2}\right)}\right)\right) \]
          2. unpow2N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \left(im \cdot \color{blue}{im}\right)\right)\right) \]
          3. *-lowering-*.f6481.9%

            \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(im, \color{blue}{im}\right)\right)\right) \]
        5. Simplified81.9%

          \[\leadsto \left(0.5 \cdot \sin re\right) \cdot \color{blue}{\left(2 + im \cdot im\right)} \]

        if 0.016 < im < 1.35000000000000003e154

        1. Initial program 100.0%

          \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
        2. Add Preprocessing
        3. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \left(e^{0 - im} + e^{im}\right) \cdot \color{blue}{\left(\frac{1}{2} \cdot \sin re\right)} \]
          2. associate-*r*N/A

            \[\leadsto \left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right) \cdot \color{blue}{\sin re} \]
          3. *-lowering-*.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right), \color{blue}{\sin re}\right) \]
          4. *-commutativeN/A

            \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{0 - im} + e^{im}\right)\right), \sin \color{blue}{re}\right) \]
          5. +-commutativeN/A

            \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{0 - im}\right)\right), \sin re\right) \]
          6. sub0-negN/A

            \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{\mathsf{neg}\left(im\right)}\right)\right), \sin re\right) \]
          7. cosh-undefN/A

            \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(2 \cdot \cosh im\right)\right), \sin re\right) \]
          8. associate-*r*N/A

            \[\leadsto \mathsf{*.f64}\left(\left(\left(\frac{1}{2} \cdot 2\right) \cdot \cosh im\right), \sin \color{blue}{re}\right) \]
          9. metadata-evalN/A

            \[\leadsto \mathsf{*.f64}\left(\left(1 \cdot \cosh im\right), \sin re\right) \]
          10. exp-0N/A

            \[\leadsto \mathsf{*.f64}\left(\left(e^{0} \cdot \cosh im\right), \sin re\right) \]
          11. *-lowering-*.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(e^{0}\right), \cosh im\right), \sin \color{blue}{re}\right) \]
          12. exp-0N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \cosh im\right), \sin re\right) \]
          13. cosh-lowering-cosh.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \sin re\right) \]
          14. sin-lowering-sin.f64100.0%

            \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
        4. Applied egg-rr100.0%

          \[\leadsto \color{blue}{\left(1 \cdot \cosh im\right) \cdot \sin re} \]
        5. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \sin re \cdot \color{blue}{\left(1 \cdot \cosh im\right)} \]
          2. *-lowering-*.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\sin re, \color{blue}{\left(1 \cdot \cosh im\right)}\right) \]
          3. sin-lowering-sin.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \left(\color{blue}{1} \cdot \cosh im\right)\right) \]
          4. *-lft-identityN/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \cosh im\right) \]
          5. cosh-lowering-cosh.f64100.0%

            \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \mathsf{cosh.f64}\left(im\right)\right) \]
        6. Applied egg-rr100.0%

          \[\leadsto \color{blue}{\sin re \cdot \cosh im} \]
        7. Taylor expanded in re around 0

          \[\leadsto \mathsf{*.f64}\left(\color{blue}{re}, \mathsf{cosh.f64}\left(im\right)\right) \]
        8. Step-by-step derivation
          1. Simplified77.4%

            \[\leadsto \color{blue}{re} \cdot \cosh im \]
        9. Recombined 2 regimes into one program.
        10. Final simplification81.4%

          \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 0.016:\\ \;\;\;\;\left(0.5 \cdot \sin re\right) \cdot \left(im \cdot im + 2\right)\\ \mathbf{elif}\;im \leq 1.35 \cdot 10^{+154}:\\ \;\;\;\;re \cdot \cosh im\\ \mathbf{else}:\\ \;\;\;\;\left(0.5 \cdot \sin re\right) \cdot \left(im \cdot im + 2\right)\\ \end{array} \]
        11. Add Preprocessing

        Alternative 6: 69.4% accurate, 2.7× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;im \leq 9.2 \cdot 10^{-7}:\\ \;\;\;\;\sin re\\ \mathbf{elif}\;im \leq 2 \cdot 10^{+156}:\\ \;\;\;\;re \cdot \cosh im\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\ \end{array} \end{array} \]
        (FPCore (re im)
         :precision binary64
         (if (<= im 9.2e-7)
           (sin re)
           (if (<= im 2e+156)
             (* re (cosh im))
             (*
              (* im (* re (+ 1.0 (* re (* re -0.16666666666666666)))))
              (* im (* (* im im) 0.041666666666666664))))))
        double code(double re, double im) {
        	double tmp;
        	if (im <= 9.2e-7) {
        		tmp = sin(re);
        	} else if (im <= 2e+156) {
        		tmp = re * cosh(im);
        	} else {
        		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664));
        	}
        	return tmp;
        }
        
        real(8) function code(re, im)
            real(8), intent (in) :: re
            real(8), intent (in) :: im
            real(8) :: tmp
            if (im <= 9.2d-7) then
                tmp = sin(re)
            else if (im <= 2d+156) then
                tmp = re * cosh(im)
            else
                tmp = (im * (re * (1.0d0 + (re * (re * (-0.16666666666666666d0)))))) * (im * ((im * im) * 0.041666666666666664d0))
            end if
            code = tmp
        end function
        
        public static double code(double re, double im) {
        	double tmp;
        	if (im <= 9.2e-7) {
        		tmp = Math.sin(re);
        	} else if (im <= 2e+156) {
        		tmp = re * Math.cosh(im);
        	} else {
        		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664));
        	}
        	return tmp;
        }
        
        def code(re, im):
        	tmp = 0
        	if im <= 9.2e-7:
        		tmp = math.sin(re)
        	elif im <= 2e+156:
        		tmp = re * math.cosh(im)
        	else:
        		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664))
        	return tmp
        
        function code(re, im)
        	tmp = 0.0
        	if (im <= 9.2e-7)
        		tmp = sin(re);
        	elseif (im <= 2e+156)
        		tmp = Float64(re * cosh(im));
        	else
        		tmp = Float64(Float64(im * Float64(re * Float64(1.0 + Float64(re * Float64(re * -0.16666666666666666))))) * Float64(im * Float64(Float64(im * im) * 0.041666666666666664)));
        	end
        	return tmp
        end
        
        function tmp_2 = code(re, im)
        	tmp = 0.0;
        	if (im <= 9.2e-7)
        		tmp = sin(re);
        	elseif (im <= 2e+156)
        		tmp = re * cosh(im);
        	else
        		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664));
        	end
        	tmp_2 = tmp;
        end
        
        code[re_, im_] := If[LessEqual[im, 9.2e-7], N[Sin[re], $MachinePrecision], If[LessEqual[im, 2e+156], N[(re * N[Cosh[im], $MachinePrecision]), $MachinePrecision], N[(N[(im * N[(re * N[(1.0 + N[(re * N[(re * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(im * N[(N[(im * im), $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        \mathbf{if}\;im \leq 9.2 \cdot 10^{-7}:\\
        \;\;\;\;\sin re\\
        
        \mathbf{elif}\;im \leq 2 \cdot 10^{+156}:\\
        \;\;\;\;re \cdot \cosh im\\
        
        \mathbf{else}:\\
        \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 3 regimes
        2. if im < 9.1999999999999998e-7

          1. Initial program 100.0%

            \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
          2. Add Preprocessing
          3. Taylor expanded in im around 0

            \[\leadsto \color{blue}{\sin re} \]
          4. Step-by-step derivation
            1. sin-lowering-sin.f6466.0%

              \[\leadsto \mathsf{sin.f64}\left(re\right) \]
          5. Simplified66.0%

            \[\leadsto \color{blue}{\sin re} \]

          if 9.1999999999999998e-7 < im < 2e156

          1. Initial program 100.0%

            \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
          2. Add Preprocessing
          3. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \left(e^{0 - im} + e^{im}\right) \cdot \color{blue}{\left(\frac{1}{2} \cdot \sin re\right)} \]
            2. associate-*r*N/A

              \[\leadsto \left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right) \cdot \color{blue}{\sin re} \]
            3. *-lowering-*.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right), \color{blue}{\sin re}\right) \]
            4. *-commutativeN/A

              \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{0 - im} + e^{im}\right)\right), \sin \color{blue}{re}\right) \]
            5. +-commutativeN/A

              \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{0 - im}\right)\right), \sin re\right) \]
            6. sub0-negN/A

              \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{\mathsf{neg}\left(im\right)}\right)\right), \sin re\right) \]
            7. cosh-undefN/A

              \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(2 \cdot \cosh im\right)\right), \sin re\right) \]
            8. associate-*r*N/A

              \[\leadsto \mathsf{*.f64}\left(\left(\left(\frac{1}{2} \cdot 2\right) \cdot \cosh im\right), \sin \color{blue}{re}\right) \]
            9. metadata-evalN/A

              \[\leadsto \mathsf{*.f64}\left(\left(1 \cdot \cosh im\right), \sin re\right) \]
            10. exp-0N/A

              \[\leadsto \mathsf{*.f64}\left(\left(e^{0} \cdot \cosh im\right), \sin re\right) \]
            11. *-lowering-*.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(e^{0}\right), \cosh im\right), \sin \color{blue}{re}\right) \]
            12. exp-0N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \cosh im\right), \sin re\right) \]
            13. cosh-lowering-cosh.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \sin re\right) \]
            14. sin-lowering-sin.f64100.0%

              \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
          4. Applied egg-rr100.0%

            \[\leadsto \color{blue}{\left(1 \cdot \cosh im\right) \cdot \sin re} \]
          5. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \sin re \cdot \color{blue}{\left(1 \cdot \cosh im\right)} \]
            2. *-lowering-*.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\sin re, \color{blue}{\left(1 \cdot \cosh im\right)}\right) \]
            3. sin-lowering-sin.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \left(\color{blue}{1} \cdot \cosh im\right)\right) \]
            4. *-lft-identityN/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \cosh im\right) \]
            5. cosh-lowering-cosh.f64100.0%

              \[\leadsto \mathsf{*.f64}\left(\mathsf{sin.f64}\left(re\right), \mathsf{cosh.f64}\left(im\right)\right) \]
          6. Applied egg-rr100.0%

            \[\leadsto \color{blue}{\sin re \cdot \cosh im} \]
          7. Taylor expanded in re around 0

            \[\leadsto \mathsf{*.f64}\left(\color{blue}{re}, \mathsf{cosh.f64}\left(im\right)\right) \]
          8. Step-by-step derivation
            1. Simplified79.4%

              \[\leadsto \color{blue}{re} \cdot \cosh im \]

            if 2e156 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Step-by-step derivation
              1. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot \left(im \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              2. associate-*r*N/A

                \[\leadsto \left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right) \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right), \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(\color{blue}{im} \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              6. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              7. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(re \cdot \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \color{blue}{\left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\left(im \cdot im\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              12. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            13. Applied egg-rr83.3%

              \[\leadsto \color{blue}{\left(\left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right) \cdot im\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
          9. Recombined 3 regimes into one program.
          10. Final simplification69.8%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 9.2 \cdot 10^{-7}:\\ \;\;\;\;\sin re\\ \mathbf{elif}\;im \leq 2 \cdot 10^{+156}:\\ \;\;\;\;re \cdot \cosh im\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\ \end{array} \]
          11. Add Preprocessing

          Alternative 7: 67.5% accurate, 2.9× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(im \cdot im\right) \cdot 0.041666666666666664\\ t_1 := im \cdot \left(0.5 + t\_0\right)\\ t_2 := im \cdot t\_0\\ \mathbf{if}\;im \leq 9.2 \cdot 10^{-7}:\\ \;\;\;\;\sin re\\ \mathbf{elif}\;im \leq 2.6 \cdot 10^{+77}:\\ \;\;\;\;\frac{\left(1 - \left(im \cdot im\right) \cdot \left(t\_1 \cdot t\_1\right)\right) \cdot \left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right)}{1 - im \cdot t\_1}\\ \mathbf{elif}\;im \leq 4 \cdot 10^{+154}:\\ \;\;\;\;re \cdot \left(im \cdot t\_2\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot t\_2\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (let* ((t_0 (* (* im im) 0.041666666666666664))
                  (t_1 (* im (+ 0.5 t_0)))
                  (t_2 (* im t_0)))
             (if (<= im 9.2e-7)
               (sin re)
               (if (<= im 2.6e+77)
                 (/
                  (*
                   (- 1.0 (* (* im im) (* t_1 t_1)))
                   (* re (+ 1.0 (* -0.16666666666666666 (* re re)))))
                  (- 1.0 (* im t_1)))
                 (if (<= im 4e+154)
                   (* re (* im t_2))
                   (* (* im (* re (+ 1.0 (* re (* re -0.16666666666666666))))) t_2))))))
          double code(double re, double im) {
          	double t_0 = (im * im) * 0.041666666666666664;
          	double t_1 = im * (0.5 + t_0);
          	double t_2 = im * t_0;
          	double tmp;
          	if (im <= 9.2e-7) {
          		tmp = sin(re);
          	} else if (im <= 2.6e+77) {
          		tmp = ((1.0 - ((im * im) * (t_1 * t_1))) * (re * (1.0 + (-0.16666666666666666 * (re * re))))) / (1.0 - (im * t_1));
          	} else if (im <= 4e+154) {
          		tmp = re * (im * t_2);
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_2;
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: t_0
              real(8) :: t_1
              real(8) :: t_2
              real(8) :: tmp
              t_0 = (im * im) * 0.041666666666666664d0
              t_1 = im * (0.5d0 + t_0)
              t_2 = im * t_0
              if (im <= 9.2d-7) then
                  tmp = sin(re)
              else if (im <= 2.6d+77) then
                  tmp = ((1.0d0 - ((im * im) * (t_1 * t_1))) * (re * (1.0d0 + ((-0.16666666666666666d0) * (re * re))))) / (1.0d0 - (im * t_1))
              else if (im <= 4d+154) then
                  tmp = re * (im * t_2)
              else
                  tmp = (im * (re * (1.0d0 + (re * (re * (-0.16666666666666666d0)))))) * t_2
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double t_0 = (im * im) * 0.041666666666666664;
          	double t_1 = im * (0.5 + t_0);
          	double t_2 = im * t_0;
          	double tmp;
          	if (im <= 9.2e-7) {
          		tmp = Math.sin(re);
          	} else if (im <= 2.6e+77) {
          		tmp = ((1.0 - ((im * im) * (t_1 * t_1))) * (re * (1.0 + (-0.16666666666666666 * (re * re))))) / (1.0 - (im * t_1));
          	} else if (im <= 4e+154) {
          		tmp = re * (im * t_2);
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_2;
          	}
          	return tmp;
          }
          
          def code(re, im):
          	t_0 = (im * im) * 0.041666666666666664
          	t_1 = im * (0.5 + t_0)
          	t_2 = im * t_0
          	tmp = 0
          	if im <= 9.2e-7:
          		tmp = math.sin(re)
          	elif im <= 2.6e+77:
          		tmp = ((1.0 - ((im * im) * (t_1 * t_1))) * (re * (1.0 + (-0.16666666666666666 * (re * re))))) / (1.0 - (im * t_1))
          	elif im <= 4e+154:
          		tmp = re * (im * t_2)
          	else:
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_2
          	return tmp
          
          function code(re, im)
          	t_0 = Float64(Float64(im * im) * 0.041666666666666664)
          	t_1 = Float64(im * Float64(0.5 + t_0))
          	t_2 = Float64(im * t_0)
          	tmp = 0.0
          	if (im <= 9.2e-7)
          		tmp = sin(re);
          	elseif (im <= 2.6e+77)
          		tmp = Float64(Float64(Float64(1.0 - Float64(Float64(im * im) * Float64(t_1 * t_1))) * Float64(re * Float64(1.0 + Float64(-0.16666666666666666 * Float64(re * re))))) / Float64(1.0 - Float64(im * t_1)));
          	elseif (im <= 4e+154)
          		tmp = Float64(re * Float64(im * t_2));
          	else
          		tmp = Float64(Float64(im * Float64(re * Float64(1.0 + Float64(re * Float64(re * -0.16666666666666666))))) * t_2);
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	t_0 = (im * im) * 0.041666666666666664;
          	t_1 = im * (0.5 + t_0);
          	t_2 = im * t_0;
          	tmp = 0.0;
          	if (im <= 9.2e-7)
          		tmp = sin(re);
          	elseif (im <= 2.6e+77)
          		tmp = ((1.0 - ((im * im) * (t_1 * t_1))) * (re * (1.0 + (-0.16666666666666666 * (re * re))))) / (1.0 - (im * t_1));
          	elseif (im <= 4e+154)
          		tmp = re * (im * t_2);
          	else
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_2;
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := Block[{t$95$0 = N[(N[(im * im), $MachinePrecision] * 0.041666666666666664), $MachinePrecision]}, Block[{t$95$1 = N[(im * N[(0.5 + t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(im * t$95$0), $MachinePrecision]}, If[LessEqual[im, 9.2e-7], N[Sin[re], $MachinePrecision], If[LessEqual[im, 2.6e+77], N[(N[(N[(1.0 - N[(N[(im * im), $MachinePrecision] * N[(t$95$1 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(re * N[(1.0 + N[(-0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - N[(im * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[im, 4e+154], N[(re * N[(im * t$95$2), $MachinePrecision]), $MachinePrecision], N[(N[(im * N[(re * N[(1.0 + N[(re * N[(re * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision]]]]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := \left(im \cdot im\right) \cdot 0.041666666666666664\\
          t_1 := im \cdot \left(0.5 + t\_0\right)\\
          t_2 := im \cdot t\_0\\
          \mathbf{if}\;im \leq 9.2 \cdot 10^{-7}:\\
          \;\;\;\;\sin re\\
          
          \mathbf{elif}\;im \leq 2.6 \cdot 10^{+77}:\\
          \;\;\;\;\frac{\left(1 - \left(im \cdot im\right) \cdot \left(t\_1 \cdot t\_1\right)\right) \cdot \left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right)}{1 - im \cdot t\_1}\\
          
          \mathbf{elif}\;im \leq 4 \cdot 10^{+154}:\\
          \;\;\;\;re \cdot \left(im \cdot t\_2\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot t\_2\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 4 regimes
          2. if im < 9.1999999999999998e-7

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re} \]
            4. Step-by-step derivation
              1. sin-lowering-sin.f6466.0%

                \[\leadsto \mathsf{sin.f64}\left(re\right) \]
            5. Simplified66.0%

              \[\leadsto \color{blue}{\sin re} \]

            if 9.1999999999999998e-7 < im < 2.6000000000000002e77

            1. Initial program 99.9%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified22.2%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6447.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified47.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \left(1 + \left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right) \cdot \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)} \]
              2. flip-+N/A

                \[\leadsto \frac{1 \cdot 1 - \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right)}{1 - \left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)} \cdot \left(\color{blue}{re} \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \]
              3. associate-*l/N/A

                \[\leadsto \frac{\left(1 \cdot 1 - \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right)\right) \cdot \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)}{\color{blue}{1 - \left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)}} \]
              4. /-lowering-/.f64N/A

                \[\leadsto \mathsf{/.f64}\left(\left(\left(1 \cdot 1 - \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right)\right) \cdot \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)\right), \color{blue}{\left(1 - \left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right)}\right) \]
            10. Applied egg-rr79.5%

              \[\leadsto \color{blue}{\frac{\left(1 - \left(im \cdot im\right) \cdot \left(\left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right) \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\right) \cdot \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)}{1 - im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)}} \]

            if 2.6000000000000002e77 < im < 4.00000000000000015e154

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6457.9%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified57.9%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6457.9%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified57.9%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Taylor expanded in re around 0

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot re\right)} \]
            13. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{re} \]
              2. *-commutativeN/A

                \[\leadsto re \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)}\right) \]
              4. metadata-evalN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right)\right) \]
              5. pow-sqrN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right)\right) \]
              6. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right)\right) \]
              7. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              8. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(im \cdot im\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              9. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(im \cdot \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right)\right) \]
              12. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \color{blue}{\left({im}^{2}\right)}\right)\right)\right)\right) \]
              13. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \left(im \cdot \color{blue}{im}\right)\right)\right)\right)\right) \]
              14. *-lowering-*.f6484.2%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(im, \color{blue}{im}\right)\right)\right)\right)\right) \]
            14. Simplified84.2%

              \[\leadsto \color{blue}{re \cdot \left(im \cdot \left(im \cdot \left(0.041666666666666664 \cdot \left(im \cdot im\right)\right)\right)\right)} \]

            if 4.00000000000000015e154 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Step-by-step derivation
              1. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot \left(im \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              2. associate-*r*N/A

                \[\leadsto \left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right) \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right), \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(\color{blue}{im} \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              6. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              7. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(re \cdot \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \color{blue}{\left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\left(im \cdot im\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              12. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            13. Applied egg-rr83.3%

              \[\leadsto \color{blue}{\left(\left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right) \cdot im\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
          3. Recombined 4 regimes into one program.
          4. Final simplification70.2%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 9.2 \cdot 10^{-7}:\\ \;\;\;\;\sin re\\ \mathbf{elif}\;im \leq 2.6 \cdot 10^{+77}:\\ \;\;\;\;\frac{\left(1 - \left(im \cdot im\right) \cdot \left(\left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right) \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\right) \cdot \left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right)}{1 - im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)}\\ \mathbf{elif}\;im \leq 4 \cdot 10^{+154}:\\ \;\;\;\;re \cdot \left(im \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\ \end{array} \]
          5. Add Preprocessing

          Alternative 8: 46.2% accurate, 5.7× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(im \cdot im\right) \cdot 0.041666666666666664\\ t_1 := im \cdot \left(0.5 + t\_0\right)\\ t_2 := im \cdot t\_0\\ \mathbf{if}\;im \leq 2.6 \cdot 10^{+77}:\\ \;\;\;\;\frac{\left(1 - \left(im \cdot im\right) \cdot \left(t\_1 \cdot t\_1\right)\right) \cdot \left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right)}{1 - im \cdot t\_1}\\ \mathbf{elif}\;im \leq 4 \cdot 10^{+154}:\\ \;\;\;\;re \cdot \left(im \cdot t\_2\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot t\_2\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (let* ((t_0 (* (* im im) 0.041666666666666664))
                  (t_1 (* im (+ 0.5 t_0)))
                  (t_2 (* im t_0)))
             (if (<= im 2.6e+77)
               (/
                (*
                 (- 1.0 (* (* im im) (* t_1 t_1)))
                 (* re (+ 1.0 (* -0.16666666666666666 (* re re)))))
                (- 1.0 (* im t_1)))
               (if (<= im 4e+154)
                 (* re (* im t_2))
                 (* (* im (* re (+ 1.0 (* re (* re -0.16666666666666666))))) t_2)))))
          double code(double re, double im) {
          	double t_0 = (im * im) * 0.041666666666666664;
          	double t_1 = im * (0.5 + t_0);
          	double t_2 = im * t_0;
          	double tmp;
          	if (im <= 2.6e+77) {
          		tmp = ((1.0 - ((im * im) * (t_1 * t_1))) * (re * (1.0 + (-0.16666666666666666 * (re * re))))) / (1.0 - (im * t_1));
          	} else if (im <= 4e+154) {
          		tmp = re * (im * t_2);
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_2;
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: t_0
              real(8) :: t_1
              real(8) :: t_2
              real(8) :: tmp
              t_0 = (im * im) * 0.041666666666666664d0
              t_1 = im * (0.5d0 + t_0)
              t_2 = im * t_0
              if (im <= 2.6d+77) then
                  tmp = ((1.0d0 - ((im * im) * (t_1 * t_1))) * (re * (1.0d0 + ((-0.16666666666666666d0) * (re * re))))) / (1.0d0 - (im * t_1))
              else if (im <= 4d+154) then
                  tmp = re * (im * t_2)
              else
                  tmp = (im * (re * (1.0d0 + (re * (re * (-0.16666666666666666d0)))))) * t_2
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double t_0 = (im * im) * 0.041666666666666664;
          	double t_1 = im * (0.5 + t_0);
          	double t_2 = im * t_0;
          	double tmp;
          	if (im <= 2.6e+77) {
          		tmp = ((1.0 - ((im * im) * (t_1 * t_1))) * (re * (1.0 + (-0.16666666666666666 * (re * re))))) / (1.0 - (im * t_1));
          	} else if (im <= 4e+154) {
          		tmp = re * (im * t_2);
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_2;
          	}
          	return tmp;
          }
          
          def code(re, im):
          	t_0 = (im * im) * 0.041666666666666664
          	t_1 = im * (0.5 + t_0)
          	t_2 = im * t_0
          	tmp = 0
          	if im <= 2.6e+77:
          		tmp = ((1.0 - ((im * im) * (t_1 * t_1))) * (re * (1.0 + (-0.16666666666666666 * (re * re))))) / (1.0 - (im * t_1))
          	elif im <= 4e+154:
          		tmp = re * (im * t_2)
          	else:
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_2
          	return tmp
          
          function code(re, im)
          	t_0 = Float64(Float64(im * im) * 0.041666666666666664)
          	t_1 = Float64(im * Float64(0.5 + t_0))
          	t_2 = Float64(im * t_0)
          	tmp = 0.0
          	if (im <= 2.6e+77)
          		tmp = Float64(Float64(Float64(1.0 - Float64(Float64(im * im) * Float64(t_1 * t_1))) * Float64(re * Float64(1.0 + Float64(-0.16666666666666666 * Float64(re * re))))) / Float64(1.0 - Float64(im * t_1)));
          	elseif (im <= 4e+154)
          		tmp = Float64(re * Float64(im * t_2));
          	else
          		tmp = Float64(Float64(im * Float64(re * Float64(1.0 + Float64(re * Float64(re * -0.16666666666666666))))) * t_2);
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	t_0 = (im * im) * 0.041666666666666664;
          	t_1 = im * (0.5 + t_0);
          	t_2 = im * t_0;
          	tmp = 0.0;
          	if (im <= 2.6e+77)
          		tmp = ((1.0 - ((im * im) * (t_1 * t_1))) * (re * (1.0 + (-0.16666666666666666 * (re * re))))) / (1.0 - (im * t_1));
          	elseif (im <= 4e+154)
          		tmp = re * (im * t_2);
          	else
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_2;
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := Block[{t$95$0 = N[(N[(im * im), $MachinePrecision] * 0.041666666666666664), $MachinePrecision]}, Block[{t$95$1 = N[(im * N[(0.5 + t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(im * t$95$0), $MachinePrecision]}, If[LessEqual[im, 2.6e+77], N[(N[(N[(1.0 - N[(N[(im * im), $MachinePrecision] * N[(t$95$1 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(re * N[(1.0 + N[(-0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - N[(im * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[im, 4e+154], N[(re * N[(im * t$95$2), $MachinePrecision]), $MachinePrecision], N[(N[(im * N[(re * N[(1.0 + N[(re * N[(re * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision]]]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := \left(im \cdot im\right) \cdot 0.041666666666666664\\
          t_1 := im \cdot \left(0.5 + t\_0\right)\\
          t_2 := im \cdot t\_0\\
          \mathbf{if}\;im \leq 2.6 \cdot 10^{+77}:\\
          \;\;\;\;\frac{\left(1 - \left(im \cdot im\right) \cdot \left(t\_1 \cdot t\_1\right)\right) \cdot \left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right)}{1 - im \cdot t\_1}\\
          
          \mathbf{elif}\;im \leq 4 \cdot 10^{+154}:\\
          \;\;\;\;re \cdot \left(im \cdot t\_2\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot t\_2\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 3 regimes
          2. if im < 2.6000000000000002e77

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified85.1%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6450.8%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified50.8%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \left(1 + \left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right) \cdot \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)} \]
              2. flip-+N/A

                \[\leadsto \frac{1 \cdot 1 - \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right)}{1 - \left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)} \cdot \left(\color{blue}{re} \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \]
              3. associate-*l/N/A

                \[\leadsto \frac{\left(1 \cdot 1 - \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right)\right) \cdot \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)}{\color{blue}{1 - \left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)}} \]
              4. /-lowering-/.f64N/A

                \[\leadsto \mathsf{/.f64}\left(\left(\left(1 \cdot 1 - \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right)\right) \cdot \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)\right), \color{blue}{\left(1 - \left(im \cdot im\right) \cdot \left(\frac{1}{2} + im \cdot \left(im \cdot \frac{1}{24}\right)\right)\right)}\right) \]
            10. Applied egg-rr41.4%

              \[\leadsto \color{blue}{\frac{\left(1 - \left(im \cdot im\right) \cdot \left(\left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right) \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\right) \cdot \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)}{1 - im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)}} \]

            if 2.6000000000000002e77 < im < 4.00000000000000015e154

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6457.9%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified57.9%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6457.9%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified57.9%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Taylor expanded in re around 0

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot re\right)} \]
            13. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{re} \]
              2. *-commutativeN/A

                \[\leadsto re \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)}\right) \]
              4. metadata-evalN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right)\right) \]
              5. pow-sqrN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right)\right) \]
              6. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right)\right) \]
              7. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              8. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(im \cdot im\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              9. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(im \cdot \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right)\right) \]
              12. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \color{blue}{\left({im}^{2}\right)}\right)\right)\right)\right) \]
              13. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \left(im \cdot \color{blue}{im}\right)\right)\right)\right)\right) \]
              14. *-lowering-*.f6484.2%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(im, \color{blue}{im}\right)\right)\right)\right)\right) \]
            14. Simplified84.2%

              \[\leadsto \color{blue}{re \cdot \left(im \cdot \left(im \cdot \left(0.041666666666666664 \cdot \left(im \cdot im\right)\right)\right)\right)} \]

            if 4.00000000000000015e154 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Step-by-step derivation
              1. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot \left(im \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              2. associate-*r*N/A

                \[\leadsto \left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right) \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right), \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(\color{blue}{im} \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              6. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              7. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(re \cdot \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \color{blue}{\left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\left(im \cdot im\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              12. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            13. Applied egg-rr83.3%

              \[\leadsto \color{blue}{\left(\left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right) \cdot im\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
          3. Recombined 3 regimes into one program.
          4. Final simplification49.5%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 2.6 \cdot 10^{+77}:\\ \;\;\;\;\frac{\left(1 - \left(im \cdot im\right) \cdot \left(\left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right) \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\right) \cdot \left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right)}{1 - im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)}\\ \mathbf{elif}\;im \leq 4 \cdot 10^{+154}:\\ \;\;\;\;re \cdot \left(im \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\ \end{array} \]
          5. Add Preprocessing

          Alternative 9: 59.3% accurate, 7.7× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;im \leq 10^{+158}:\\ \;\;\;\;\left(re \cdot \left(0.5 + re \cdot \left(re \cdot \left(-0.08333333333333333 + \left(re \cdot re\right) \cdot 0.004166666666666667\right)\right)\right)\right) \cdot \left(2 + \left(im \cdot im\right) \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.08333333333333333 + \left(im \cdot im\right) \cdot 0.002777777777777778\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (if (<= im 1e+158)
             (*
              (*
               re
               (+
                0.5
                (*
                 re
                 (* re (+ -0.08333333333333333 (* (* re re) 0.004166666666666667))))))
              (+
               2.0
               (*
                (* im im)
                (+
                 1.0
                 (*
                  (* im im)
                  (+ 0.08333333333333333 (* (* im im) 0.002777777777777778)))))))
             (*
              (* im (* re (+ 1.0 (* re (* re -0.16666666666666666)))))
              (* im (* (* im im) 0.041666666666666664)))))
          double code(double re, double im) {
          	double tmp;
          	if (im <= 1e+158) {
          		tmp = (re * (0.5 + (re * (re * (-0.08333333333333333 + ((re * re) * 0.004166666666666667)))))) * (2.0 + ((im * im) * (1.0 + ((im * im) * (0.08333333333333333 + ((im * im) * 0.002777777777777778))))));
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664));
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: tmp
              if (im <= 1d+158) then
                  tmp = (re * (0.5d0 + (re * (re * ((-0.08333333333333333d0) + ((re * re) * 0.004166666666666667d0)))))) * (2.0d0 + ((im * im) * (1.0d0 + ((im * im) * (0.08333333333333333d0 + ((im * im) * 0.002777777777777778d0))))))
              else
                  tmp = (im * (re * (1.0d0 + (re * (re * (-0.16666666666666666d0)))))) * (im * ((im * im) * 0.041666666666666664d0))
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double tmp;
          	if (im <= 1e+158) {
          		tmp = (re * (0.5 + (re * (re * (-0.08333333333333333 + ((re * re) * 0.004166666666666667)))))) * (2.0 + ((im * im) * (1.0 + ((im * im) * (0.08333333333333333 + ((im * im) * 0.002777777777777778))))));
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664));
          	}
          	return tmp;
          }
          
          def code(re, im):
          	tmp = 0
          	if im <= 1e+158:
          		tmp = (re * (0.5 + (re * (re * (-0.08333333333333333 + ((re * re) * 0.004166666666666667)))))) * (2.0 + ((im * im) * (1.0 + ((im * im) * (0.08333333333333333 + ((im * im) * 0.002777777777777778))))))
          	else:
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664))
          	return tmp
          
          function code(re, im)
          	tmp = 0.0
          	if (im <= 1e+158)
          		tmp = Float64(Float64(re * Float64(0.5 + Float64(re * Float64(re * Float64(-0.08333333333333333 + Float64(Float64(re * re) * 0.004166666666666667)))))) * Float64(2.0 + Float64(Float64(im * im) * Float64(1.0 + Float64(Float64(im * im) * Float64(0.08333333333333333 + Float64(Float64(im * im) * 0.002777777777777778)))))));
          	else
          		tmp = Float64(Float64(im * Float64(re * Float64(1.0 + Float64(re * Float64(re * -0.16666666666666666))))) * Float64(im * Float64(Float64(im * im) * 0.041666666666666664)));
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	tmp = 0.0;
          	if (im <= 1e+158)
          		tmp = (re * (0.5 + (re * (re * (-0.08333333333333333 + ((re * re) * 0.004166666666666667)))))) * (2.0 + ((im * im) * (1.0 + ((im * im) * (0.08333333333333333 + ((im * im) * 0.002777777777777778))))));
          	else
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664));
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := If[LessEqual[im, 1e+158], N[(N[(re * N[(0.5 + N[(re * N[(re * N[(-0.08333333333333333 + N[(N[(re * re), $MachinePrecision] * 0.004166666666666667), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(2.0 + N[(N[(im * im), $MachinePrecision] * N[(1.0 + N[(N[(im * im), $MachinePrecision] * N[(0.08333333333333333 + N[(N[(im * im), $MachinePrecision] * 0.002777777777777778), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(im * N[(re * N[(1.0 + N[(re * N[(re * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(im * N[(N[(im * im), $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          \mathbf{if}\;im \leq 10^{+158}:\\
          \;\;\;\;\left(re \cdot \left(0.5 + re \cdot \left(re \cdot \left(-0.08333333333333333 + \left(re \cdot re\right) \cdot 0.004166666666666667\right)\right)\right)\right) \cdot \left(2 + \left(im \cdot im\right) \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.08333333333333333 + \left(im \cdot im\right) \cdot 0.002777777777777778\right)\right)\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if im < 9.99999999999999953e157

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \color{blue}{\left(2 + {im}^{2} \cdot \left(1 + {im}^{2} \cdot \left(\frac{1}{12} + \frac{1}{360} \cdot {im}^{2}\right)\right)\right)}\right) \]
            4. Step-by-step derivation
              1. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \color{blue}{\left({im}^{2} \cdot \left(1 + {im}^{2} \cdot \left(\frac{1}{12} + \frac{1}{360} \cdot {im}^{2}\right)\right)\right)}\right)\right) \]
              2. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(1 + {im}^{2} \cdot \left(\frac{1}{12} + \frac{1}{360} \cdot {im}^{2}\right)\right)}\right)\right)\right) \]
              3. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{1} + {im}^{2} \cdot \left(\frac{1}{12} + \frac{1}{360} \cdot {im}^{2}\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{1} + {im}^{2} \cdot \left(\frac{1}{12} + \frac{1}{360} \cdot {im}^{2}\right)\right)\right)\right)\right) \]
              5. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{12} + \frac{1}{360} \cdot {im}^{2}\right)\right)}\right)\right)\right)\right) \]
              6. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{12} + \frac{1}{360} \cdot {im}^{2}\right)}\right)\right)\right)\right)\right) \]
              7. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{12}} + \frac{1}{360} \cdot {im}^{2}\right)\right)\right)\right)\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{12}} + \frac{1}{360} \cdot {im}^{2}\right)\right)\right)\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \color{blue}{\left(\frac{1}{360} \cdot {im}^{2}\right)}\right)\right)\right)\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \left({im}^{2} \cdot \color{blue}{\frac{1}{360}}\right)\right)\right)\right)\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{360}}\right)\right)\right)\right)\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              13. *-lowering-*.f6490.9%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\frac{1}{2}, \mathsf{sin.f64}\left(re\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
            5. Simplified90.9%

              \[\leadsto \left(0.5 \cdot \sin re\right) \cdot \color{blue}{\left(2 + \left(im \cdot im\right) \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.08333333333333333 + \left(im \cdot im\right) \cdot 0.002777777777777778\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(\frac{1}{2} + {re}^{2} \cdot \left(\frac{1}{240} \cdot {re}^{2} - \frac{1}{12}\right)\right)\right)}, \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(\frac{1}{2} + {re}^{2} \cdot \left(\frac{1}{240} \cdot {re}^{2} - \frac{1}{12}\right)\right)\right), \mathsf{+.f64}\left(\color{blue}{2}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \left({re}^{2} \cdot \left(\frac{1}{240} \cdot {re}^{2} - \frac{1}{12}\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              3. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \left(\left(re \cdot re\right) \cdot \left(\frac{1}{240} \cdot {re}^{2} - \frac{1}{12}\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              4. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \left(re \cdot \left(re \cdot \left(\frac{1}{240} \cdot {re}^{2} - \frac{1}{12}\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \left(re \cdot \left(\frac{1}{240} \cdot {re}^{2} - \frac{1}{12}\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \left(\frac{1}{240} \cdot {re}^{2} - \frac{1}{12}\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              7. sub-negN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \left(\frac{1}{240} \cdot {re}^{2} + \left(\mathsf{neg}\left(\frac{1}{12}\right)\right)\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              8. metadata-evalN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \left(\frac{1}{240} \cdot {re}^{2} + \frac{-1}{12}\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              9. +-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \left(\frac{-1}{12} + \frac{1}{240} \cdot {re}^{2}\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              10. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{-1}{12}, \left(\frac{1}{240} \cdot {re}^{2}\right)\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{-1}{12}, \left({re}^{2} \cdot \frac{1}{240}\right)\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              12. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{-1}{12}, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{1}{240}\right)\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              13. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{-1}{12}, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{1}{240}\right)\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
              14. *-lowering-*.f6457.7%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(\frac{-1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{1}{240}\right)\right)\right)\right)\right)\right), \mathsf{+.f64}\left(2, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{12}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{360}\right)\right)\right)\right)\right)\right)\right) \]
            8. Simplified57.7%

              \[\leadsto \color{blue}{\left(re \cdot \left(0.5 + re \cdot \left(re \cdot \left(-0.08333333333333333 + \left(re \cdot re\right) \cdot 0.004166666666666667\right)\right)\right)\right)} \cdot \left(2 + \left(im \cdot im\right) \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.08333333333333333 + \left(im \cdot im\right) \cdot 0.002777777777777778\right)\right)\right) \]

            if 9.99999999999999953e157 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Step-by-step derivation
              1. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot \left(im \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              2. associate-*r*N/A

                \[\leadsto \left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right) \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right), \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(\color{blue}{im} \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              6. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              7. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(re \cdot \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \color{blue}{\left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\left(im \cdot im\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              12. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            13. Applied egg-rr83.3%

              \[\leadsto \color{blue}{\left(\left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right) \cdot im\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
          3. Recombined 2 regimes into one program.
          4. Final simplification60.7%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 10^{+158}:\\ \;\;\;\;\left(re \cdot \left(0.5 + re \cdot \left(re \cdot \left(-0.08333333333333333 + \left(re \cdot re\right) \cdot 0.004166666666666667\right)\right)\right)\right) \cdot \left(2 + \left(im \cdot im\right) \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.08333333333333333 + \left(im \cdot im\right) \cdot 0.002777777777777778\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\ \end{array} \]
          5. Add Preprocessing

          Alternative 10: 53.3% accurate, 10.6× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\\ \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\ \;\;\;\;\left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right) \cdot \left(1 + 0.5 \cdot \left(im \cdot im\right)\right)\\ \mathbf{elif}\;im \leq 1.42 \cdot 10^{+155}:\\ \;\;\;\;re \cdot \left(im \cdot t\_0\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot t\_0\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (let* ((t_0 (* im (* (* im im) 0.041666666666666664))))
             (if (<= im 1.1e+78)
               (*
                (* re (+ 1.0 (* -0.16666666666666666 (* re re))))
                (+ 1.0 (* 0.5 (* im im))))
               (if (<= im 1.42e+155)
                 (* re (* im t_0))
                 (* (* im (* re (+ 1.0 (* re (* re -0.16666666666666666))))) t_0)))))
          double code(double re, double im) {
          	double t_0 = im * ((im * im) * 0.041666666666666664);
          	double tmp;
          	if (im <= 1.1e+78) {
          		tmp = (re * (1.0 + (-0.16666666666666666 * (re * re)))) * (1.0 + (0.5 * (im * im)));
          	} else if (im <= 1.42e+155) {
          		tmp = re * (im * t_0);
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_0;
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: t_0
              real(8) :: tmp
              t_0 = im * ((im * im) * 0.041666666666666664d0)
              if (im <= 1.1d+78) then
                  tmp = (re * (1.0d0 + ((-0.16666666666666666d0) * (re * re)))) * (1.0d0 + (0.5d0 * (im * im)))
              else if (im <= 1.42d+155) then
                  tmp = re * (im * t_0)
              else
                  tmp = (im * (re * (1.0d0 + (re * (re * (-0.16666666666666666d0)))))) * t_0
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double t_0 = im * ((im * im) * 0.041666666666666664);
          	double tmp;
          	if (im <= 1.1e+78) {
          		tmp = (re * (1.0 + (-0.16666666666666666 * (re * re)))) * (1.0 + (0.5 * (im * im)));
          	} else if (im <= 1.42e+155) {
          		tmp = re * (im * t_0);
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_0;
          	}
          	return tmp;
          }
          
          def code(re, im):
          	t_0 = im * ((im * im) * 0.041666666666666664)
          	tmp = 0
          	if im <= 1.1e+78:
          		tmp = (re * (1.0 + (-0.16666666666666666 * (re * re)))) * (1.0 + (0.5 * (im * im)))
          	elif im <= 1.42e+155:
          		tmp = re * (im * t_0)
          	else:
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_0
          	return tmp
          
          function code(re, im)
          	t_0 = Float64(im * Float64(Float64(im * im) * 0.041666666666666664))
          	tmp = 0.0
          	if (im <= 1.1e+78)
          		tmp = Float64(Float64(re * Float64(1.0 + Float64(-0.16666666666666666 * Float64(re * re)))) * Float64(1.0 + Float64(0.5 * Float64(im * im))));
          	elseif (im <= 1.42e+155)
          		tmp = Float64(re * Float64(im * t_0));
          	else
          		tmp = Float64(Float64(im * Float64(re * Float64(1.0 + Float64(re * Float64(re * -0.16666666666666666))))) * t_0);
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	t_0 = im * ((im * im) * 0.041666666666666664);
          	tmp = 0.0;
          	if (im <= 1.1e+78)
          		tmp = (re * (1.0 + (-0.16666666666666666 * (re * re)))) * (1.0 + (0.5 * (im * im)));
          	elseif (im <= 1.42e+155)
          		tmp = re * (im * t_0);
          	else
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * t_0;
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := Block[{t$95$0 = N[(im * N[(N[(im * im), $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[im, 1.1e+78], N[(N[(re * N[(1.0 + N[(-0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(1.0 + N[(0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[im, 1.42e+155], N[(re * N[(im * t$95$0), $MachinePrecision]), $MachinePrecision], N[(N[(im * N[(re * N[(1.0 + N[(re * N[(re * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\\
          \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\
          \;\;\;\;\left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right) \cdot \left(1 + 0.5 \cdot \left(im \cdot im\right)\right)\\
          
          \mathbf{elif}\;im \leq 1.42 \cdot 10^{+155}:\\
          \;\;\;\;re \cdot \left(im \cdot t\_0\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot t\_0\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 3 regimes
          2. if im < 1.10000000000000007e78

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified85.2%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6451.0%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified51.0%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\frac{1}{2} \cdot \left({im}^{2} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) + re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{2} \cdot {im}^{2}\right) \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) + \color{blue}{re} \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right) \]
              2. distribute-lft1-inN/A

                \[\leadsto \left(\frac{1}{2} \cdot {im}^{2} + 1\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              3. +-commutativeN/A

                \[\leadsto \left(1 + \frac{1}{2} \cdot {im}^{2}\right) \cdot \left(\color{blue}{re} \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(1 + \frac{1}{2} \cdot {im}^{2}\right), \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}\right) \]
              5. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \left(\frac{1}{2} \cdot {im}^{2}\right)\right), \left(\color{blue}{re} \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) \]
              6. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \left({im}^{2}\right)\right)\right), \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) \]
              7. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \left(im \cdot im\right)\right)\right), \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \color{blue}{\left(1 + \frac{-1}{6} \cdot {re}^{2}\right)}\right)\right) \]
              10. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{-1}{6} \cdot {re}^{2}\right)}\right)\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right) \]
              12. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\frac{-1}{6}}\right)\right)\right)\right) \]
              13. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right)\right) \]
              14. *-lowering-*.f6445.2%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right)\right) \]
            11. Simplified45.2%

              \[\leadsto \color{blue}{\left(1 + 0.5 \cdot \left(im \cdot im\right)\right) \cdot \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \]

            if 1.10000000000000007e78 < im < 1.41999999999999994e155

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6455.6%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified55.6%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6455.6%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified55.6%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Taylor expanded in re around 0

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot re\right)} \]
            13. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{re} \]
              2. *-commutativeN/A

                \[\leadsto re \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)}\right) \]
              4. metadata-evalN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right)\right) \]
              5. pow-sqrN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right)\right) \]
              6. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right)\right) \]
              7. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              8. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(im \cdot im\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              9. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(im \cdot \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right)\right) \]
              12. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \color{blue}{\left({im}^{2}\right)}\right)\right)\right)\right) \]
              13. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \left(im \cdot \color{blue}{im}\right)\right)\right)\right)\right) \]
              14. *-lowering-*.f6488.9%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(im, \color{blue}{im}\right)\right)\right)\right)\right) \]
            14. Simplified88.9%

              \[\leadsto \color{blue}{re \cdot \left(im \cdot \left(im \cdot \left(0.041666666666666664 \cdot \left(im \cdot im\right)\right)\right)\right)} \]

            if 1.41999999999999994e155 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Step-by-step derivation
              1. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot \left(im \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              2. associate-*r*N/A

                \[\leadsto \left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right) \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right), \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(\color{blue}{im} \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              6. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              7. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(re \cdot \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \color{blue}{\left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\left(im \cdot im\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              12. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            13. Applied egg-rr83.3%

              \[\leadsto \color{blue}{\left(\left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right) \cdot im\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
          3. Recombined 3 regimes into one program.
          4. Final simplification52.8%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\ \;\;\;\;\left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right) \cdot \left(1 + 0.5 \cdot \left(im \cdot im\right)\right)\\ \mathbf{elif}\;im \leq 1.42 \cdot 10^{+155}:\\ \;\;\;\;re \cdot \left(im \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\ \end{array} \]
          5. Add Preprocessing

          Alternative 11: 53.3% accurate, 11.4× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right) \cdot \left(1 + 0.5 \cdot \left(im \cdot im\right)\right)\\ \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;im \leq 4 \cdot 10^{+154}:\\ \;\;\;\;re \cdot \left(im \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (let* ((t_0
                   (*
                    (* re (+ 1.0 (* -0.16666666666666666 (* re re))))
                    (+ 1.0 (* 0.5 (* im im))))))
             (if (<= im 1.1e+78)
               t_0
               (if (<= im 4e+154)
                 (* re (* im (* im (* (* im im) 0.041666666666666664))))
                 t_0))))
          double code(double re, double im) {
          	double t_0 = (re * (1.0 + (-0.16666666666666666 * (re * re)))) * (1.0 + (0.5 * (im * im)));
          	double tmp;
          	if (im <= 1.1e+78) {
          		tmp = t_0;
          	} else if (im <= 4e+154) {
          		tmp = re * (im * (im * ((im * im) * 0.041666666666666664)));
          	} else {
          		tmp = t_0;
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: t_0
              real(8) :: tmp
              t_0 = (re * (1.0d0 + ((-0.16666666666666666d0) * (re * re)))) * (1.0d0 + (0.5d0 * (im * im)))
              if (im <= 1.1d+78) then
                  tmp = t_0
              else if (im <= 4d+154) then
                  tmp = re * (im * (im * ((im * im) * 0.041666666666666664d0)))
              else
                  tmp = t_0
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double t_0 = (re * (1.0 + (-0.16666666666666666 * (re * re)))) * (1.0 + (0.5 * (im * im)));
          	double tmp;
          	if (im <= 1.1e+78) {
          		tmp = t_0;
          	} else if (im <= 4e+154) {
          		tmp = re * (im * (im * ((im * im) * 0.041666666666666664)));
          	} else {
          		tmp = t_0;
          	}
          	return tmp;
          }
          
          def code(re, im):
          	t_0 = (re * (1.0 + (-0.16666666666666666 * (re * re)))) * (1.0 + (0.5 * (im * im)))
          	tmp = 0
          	if im <= 1.1e+78:
          		tmp = t_0
          	elif im <= 4e+154:
          		tmp = re * (im * (im * ((im * im) * 0.041666666666666664)))
          	else:
          		tmp = t_0
          	return tmp
          
          function code(re, im)
          	t_0 = Float64(Float64(re * Float64(1.0 + Float64(-0.16666666666666666 * Float64(re * re)))) * Float64(1.0 + Float64(0.5 * Float64(im * im))))
          	tmp = 0.0
          	if (im <= 1.1e+78)
          		tmp = t_0;
          	elseif (im <= 4e+154)
          		tmp = Float64(re * Float64(im * Float64(im * Float64(Float64(im * im) * 0.041666666666666664))));
          	else
          		tmp = t_0;
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	t_0 = (re * (1.0 + (-0.16666666666666666 * (re * re)))) * (1.0 + (0.5 * (im * im)));
          	tmp = 0.0;
          	if (im <= 1.1e+78)
          		tmp = t_0;
          	elseif (im <= 4e+154)
          		tmp = re * (im * (im * ((im * im) * 0.041666666666666664)));
          	else
          		tmp = t_0;
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := Block[{t$95$0 = N[(N[(re * N[(1.0 + N[(-0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(1.0 + N[(0.5 * N[(im * im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[im, 1.1e+78], t$95$0, If[LessEqual[im, 4e+154], N[(re * N[(im * N[(im * N[(N[(im * im), $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := \left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right) \cdot \left(1 + 0.5 \cdot \left(im \cdot im\right)\right)\\
          \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\
          \;\;\;\;t\_0\\
          
          \mathbf{elif}\;im \leq 4 \cdot 10^{+154}:\\
          \;\;\;\;re \cdot \left(im \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;t\_0\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if im < 1.10000000000000007e78 or 4.00000000000000015e154 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified87.1%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6455.1%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified55.1%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\frac{1}{2} \cdot \left({im}^{2} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) + re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{2} \cdot {im}^{2}\right) \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) + \color{blue}{re} \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right) \]
              2. distribute-lft1-inN/A

                \[\leadsto \left(\frac{1}{2} \cdot {im}^{2} + 1\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              3. +-commutativeN/A

                \[\leadsto \left(1 + \frac{1}{2} \cdot {im}^{2}\right) \cdot \left(\color{blue}{re} \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(1 + \frac{1}{2} \cdot {im}^{2}\right), \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}\right) \]
              5. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \left(\frac{1}{2} \cdot {im}^{2}\right)\right), \left(\color{blue}{re} \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) \]
              6. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \left({im}^{2}\right)\right)\right), \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) \]
              7. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \left(im \cdot im\right)\right)\right), \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \color{blue}{\left(1 + \frac{-1}{6} \cdot {re}^{2}\right)}\right)\right) \]
              10. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{-1}{6} \cdot {re}^{2}\right)}\right)\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right) \]
              12. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\frac{-1}{6}}\right)\right)\right)\right) \]
              13. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right)\right) \]
              14. *-lowering-*.f6450.0%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, im\right)\right)\right), \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right)\right) \]
            11. Simplified50.0%

              \[\leadsto \color{blue}{\left(1 + 0.5 \cdot \left(im \cdot im\right)\right) \cdot \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \]

            if 1.10000000000000007e78 < im < 4.00000000000000015e154

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6455.6%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified55.6%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6455.6%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified55.6%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Taylor expanded in re around 0

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot re\right)} \]
            13. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{re} \]
              2. *-commutativeN/A

                \[\leadsto re \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)}\right) \]
              4. metadata-evalN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right)\right) \]
              5. pow-sqrN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right)\right) \]
              6. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right)\right) \]
              7. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              8. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(im \cdot im\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              9. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(im \cdot \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right)\right) \]
              12. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \color{blue}{\left({im}^{2}\right)}\right)\right)\right)\right) \]
              13. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \left(im \cdot \color{blue}{im}\right)\right)\right)\right)\right) \]
              14. *-lowering-*.f6488.9%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(im, \color{blue}{im}\right)\right)\right)\right)\right) \]
            14. Simplified88.9%

              \[\leadsto \color{blue}{re \cdot \left(im \cdot \left(im \cdot \left(0.041666666666666664 \cdot \left(im \cdot im\right)\right)\right)\right)} \]
          3. Recombined 2 regimes into one program.
          4. Final simplification52.8%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\ \;\;\;\;\left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right) \cdot \left(1 + 0.5 \cdot \left(im \cdot im\right)\right)\\ \mathbf{elif}\;im \leq 4 \cdot 10^{+154}:\\ \;\;\;\;re \cdot \left(im \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\right) \cdot \left(1 + 0.5 \cdot \left(im \cdot im\right)\right)\\ \end{array} \]
          5. Add Preprocessing

          Alternative 12: 58.8% accurate, 11.9× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;im \leq 2 \cdot 10^{+159}:\\ \;\;\;\;re \cdot \left(1 + im \cdot \left(im \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.041666666666666664 + \left(im \cdot im\right) \cdot 0.001388888888888889\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (if (<= im 2e+159)
             (*
              re
              (+
               1.0
               (*
                im
                (*
                 im
                 (+
                  0.5
                  (*
                   im
                   (*
                    im
                    (+ 0.041666666666666664 (* (* im im) 0.001388888888888889)))))))))
             (*
              (* im (* re (+ 1.0 (* re (* re -0.16666666666666666)))))
              (* im (* (* im im) 0.041666666666666664)))))
          double code(double re, double im) {
          	double tmp;
          	if (im <= 2e+159) {
          		tmp = re * (1.0 + (im * (im * (0.5 + (im * (im * (0.041666666666666664 + ((im * im) * 0.001388888888888889))))))));
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664));
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: tmp
              if (im <= 2d+159) then
                  tmp = re * (1.0d0 + (im * (im * (0.5d0 + (im * (im * (0.041666666666666664d0 + ((im * im) * 0.001388888888888889d0))))))))
              else
                  tmp = (im * (re * (1.0d0 + (re * (re * (-0.16666666666666666d0)))))) * (im * ((im * im) * 0.041666666666666664d0))
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double tmp;
          	if (im <= 2e+159) {
          		tmp = re * (1.0 + (im * (im * (0.5 + (im * (im * (0.041666666666666664 + ((im * im) * 0.001388888888888889))))))));
          	} else {
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664));
          	}
          	return tmp;
          }
          
          def code(re, im):
          	tmp = 0
          	if im <= 2e+159:
          		tmp = re * (1.0 + (im * (im * (0.5 + (im * (im * (0.041666666666666664 + ((im * im) * 0.001388888888888889))))))))
          	else:
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664))
          	return tmp
          
          function code(re, im)
          	tmp = 0.0
          	if (im <= 2e+159)
          		tmp = Float64(re * Float64(1.0 + Float64(im * Float64(im * Float64(0.5 + Float64(im * Float64(im * Float64(0.041666666666666664 + Float64(Float64(im * im) * 0.001388888888888889)))))))));
          	else
          		tmp = Float64(Float64(im * Float64(re * Float64(1.0 + Float64(re * Float64(re * -0.16666666666666666))))) * Float64(im * Float64(Float64(im * im) * 0.041666666666666664)));
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	tmp = 0.0;
          	if (im <= 2e+159)
          		tmp = re * (1.0 + (im * (im * (0.5 + (im * (im * (0.041666666666666664 + ((im * im) * 0.001388888888888889))))))));
          	else
          		tmp = (im * (re * (1.0 + (re * (re * -0.16666666666666666))))) * (im * ((im * im) * 0.041666666666666664));
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := If[LessEqual[im, 2e+159], N[(re * N[(1.0 + N[(im * N[(im * N[(0.5 + N[(im * N[(im * N[(0.041666666666666664 + N[(N[(im * im), $MachinePrecision] * 0.001388888888888889), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(im * N[(re * N[(1.0 + N[(re * N[(re * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(im * N[(N[(im * im), $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          \mathbf{if}\;im \leq 2 \cdot 10^{+159}:\\
          \;\;\;\;re \cdot \left(1 + im \cdot \left(im \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.041666666666666664 + \left(im \cdot im\right) \cdot 0.001388888888888889\right)\right)\right)\right)\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if im < 1.9999999999999999e159

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \left(e^{0 - im} + e^{im}\right) \cdot \color{blue}{\left(\frac{1}{2} \cdot \sin re\right)} \]
              2. associate-*r*N/A

                \[\leadsto \left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right) \cdot \color{blue}{\sin re} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(\left(e^{0 - im} + e^{im}\right) \cdot \frac{1}{2}\right), \color{blue}{\sin re}\right) \]
              4. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{0 - im} + e^{im}\right)\right), \sin \color{blue}{re}\right) \]
              5. +-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{0 - im}\right)\right), \sin re\right) \]
              6. sub0-negN/A

                \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(e^{im} + e^{\mathsf{neg}\left(im\right)}\right)\right), \sin re\right) \]
              7. cosh-undefN/A

                \[\leadsto \mathsf{*.f64}\left(\left(\frac{1}{2} \cdot \left(2 \cdot \cosh im\right)\right), \sin re\right) \]
              8. associate-*r*N/A

                \[\leadsto \mathsf{*.f64}\left(\left(\left(\frac{1}{2} \cdot 2\right) \cdot \cosh im\right), \sin \color{blue}{re}\right) \]
              9. metadata-evalN/A

                \[\leadsto \mathsf{*.f64}\left(\left(1 \cdot \cosh im\right), \sin re\right) \]
              10. exp-0N/A

                \[\leadsto \mathsf{*.f64}\left(\left(e^{0} \cdot \cosh im\right), \sin re\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(e^{0}\right), \cosh im\right), \sin \color{blue}{re}\right) \]
              12. exp-0N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \cosh im\right), \sin re\right) \]
              13. cosh-lowering-cosh.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \sin re\right) \]
              14. sin-lowering-sin.f64100.0%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(1, \mathsf{cosh.f64}\left(im\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
            4. Applied egg-rr100.0%

              \[\leadsto \color{blue}{\left(1 \cdot \cosh im\right) \cdot \sin re} \]
            5. Taylor expanded in im around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(1 + {im}^{2} \cdot \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)}, \mathsf{sin.f64}\left(re\right)\right) \]
            6. Step-by-step derivation
              1. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \left({im}^{2} \cdot \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right), \mathsf{sin.f64}\left(\color{blue}{re}\right)\right) \]
              2. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({im}^{2}\right), \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              3. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              5. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \left({im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              6. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \left(\left(im \cdot im\right) \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              7. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \left(im \cdot \left(im \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \left(im \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              10. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \left(\frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \left({im}^{2} \cdot \frac{1}{720}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              12. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(\left({im}^{2}\right), \frac{1}{720}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              13. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{720}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
              14. *-lowering-*.f6490.9%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{720}\right)\right)\right)\right)\right)\right)\right), \mathsf{sin.f64}\left(re\right)\right) \]
            7. Simplified90.9%

              \[\leadsto \color{blue}{\left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.041666666666666664 + \left(im \cdot im\right) \cdot 0.001388888888888889\right)\right)\right)\right)} \cdot \sin re \]
            8. Taylor expanded in re around 0

              \[\leadsto \color{blue}{re \cdot \left(1 + {im}^{2} \cdot \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)} \]
            9. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(1 + {im}^{2} \cdot \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)}\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)}\right)\right) \]
              3. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\left(im \cdot im\right) \cdot \left(\color{blue}{\frac{1}{2}} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right) \]
              4. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(im \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)}\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \color{blue}{\left(im \cdot \left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)}\right)\right)\right) \]
              6. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \color{blue}{\left(\frac{1}{2} + {im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)}\right)\right)\right)\right) \]
              7. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)}\right)\right)\right)\right)\right) \]
              8. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \left(\left(im \cdot im\right) \cdot \left(\color{blue}{\frac{1}{24}} + \frac{1}{720} \cdot {im}^{2}\right)\right)\right)\right)\right)\right)\right) \]
              9. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \left(im \cdot \color{blue}{\left(im \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)}\right)\right)\right)\right)\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \color{blue}{\left(im \cdot \left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)\right)}\right)\right)\right)\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \color{blue}{\left(\frac{1}{24} + \frac{1}{720} \cdot {im}^{2}\right)}\right)\right)\right)\right)\right)\right)\right) \]
              12. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \color{blue}{\left(\frac{1}{720} \cdot {im}^{2}\right)}\right)\right)\right)\right)\right)\right)\right)\right) \]
              13. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \left({im}^{2} \cdot \color{blue}{\frac{1}{720}}\right)\right)\right)\right)\right)\right)\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{720}}\right)\right)\right)\right)\right)\right)\right)\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{720}\right)\right)\right)\right)\right)\right)\right)\right)\right) \]
              16. *-lowering-*.f6456.9%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{720}\right)\right)\right)\right)\right)\right)\right)\right)\right) \]
            10. Simplified56.9%

              \[\leadsto \color{blue}{re \cdot \left(1 + im \cdot \left(im \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.041666666666666664 + \left(im \cdot im\right) \cdot 0.001388888888888889\right)\right)\right)\right)\right)} \]

            if 1.9999999999999999e159 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified83.3%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Step-by-step derivation
              1. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot \left(im \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              2. associate-*r*N/A

                \[\leadsto \left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right) \cdot \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right) \cdot im\right), \color{blue}{\left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)}\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(\color{blue}{im} \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              6. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\left(re \cdot re\right) \cdot \frac{-1}{6}\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              7. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(re \cdot \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \left(re \cdot \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \left(im \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \color{blue}{\left(\left(im \cdot im\right) \cdot \frac{1}{24}\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\left(im \cdot im\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              12. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \frac{-1}{6}\right)\right)\right)\right), im\right), \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            13. Applied egg-rr83.3%

              \[\leadsto \color{blue}{\left(\left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right) \cdot im\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
          3. Recombined 2 regimes into one program.
          4. Final simplification60.0%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 2 \cdot 10^{+159}:\\ \;\;\;\;re \cdot \left(1 + im \cdot \left(im \cdot \left(0.5 + im \cdot \left(im \cdot \left(0.041666666666666664 + \left(im \cdot im\right) \cdot 0.001388888888888889\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(im \cdot \left(re \cdot \left(1 + re \cdot \left(re \cdot -0.16666666666666666\right)\right)\right)\right) \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\\ \end{array} \]
          5. Add Preprocessing

          Alternative 13: 44.8% accurate, 15.4× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\ \;\;\;\;re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\ \mathbf{else}:\\ \;\;\;\;re \cdot \left(1 + im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (if (<= im 1.1e+78)
             (* re (+ 1.0 (* -0.16666666666666666 (* re re))))
             (* re (+ 1.0 (* im (* im (+ 0.5 (* (* im im) 0.041666666666666664))))))))
          double code(double re, double im) {
          	double tmp;
          	if (im <= 1.1e+78) {
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
          	} else {
          		tmp = re * (1.0 + (im * (im * (0.5 + ((im * im) * 0.041666666666666664)))));
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: tmp
              if (im <= 1.1d+78) then
                  tmp = re * (1.0d0 + ((-0.16666666666666666d0) * (re * re)))
              else
                  tmp = re * (1.0d0 + (im * (im * (0.5d0 + ((im * im) * 0.041666666666666664d0)))))
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double tmp;
          	if (im <= 1.1e+78) {
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
          	} else {
          		tmp = re * (1.0 + (im * (im * (0.5 + ((im * im) * 0.041666666666666664)))));
          	}
          	return tmp;
          }
          
          def code(re, im):
          	tmp = 0
          	if im <= 1.1e+78:
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)))
          	else:
          		tmp = re * (1.0 + (im * (im * (0.5 + ((im * im) * 0.041666666666666664)))))
          	return tmp
          
          function code(re, im)
          	tmp = 0.0
          	if (im <= 1.1e+78)
          		tmp = Float64(re * Float64(1.0 + Float64(-0.16666666666666666 * Float64(re * re))));
          	else
          		tmp = Float64(re * Float64(1.0 + Float64(im * Float64(im * Float64(0.5 + Float64(Float64(im * im) * 0.041666666666666664))))));
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	tmp = 0.0;
          	if (im <= 1.1e+78)
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
          	else
          		tmp = re * (1.0 + (im * (im * (0.5 + ((im * im) * 0.041666666666666664)))));
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := If[LessEqual[im, 1.1e+78], N[(re * N[(1.0 + N[(-0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(re * N[(1.0 + N[(im * N[(im * N[(0.5 + N[(N[(im * im), $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\
          \;\;\;\;re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;re \cdot \left(1 + im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if im < 1.10000000000000007e78

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re} \]
            4. Step-by-step derivation
              1. sin-lowering-sin.f6462.0%

                \[\leadsto \mathsf{sin.f64}\left(re\right) \]
            5. Simplified62.0%

              \[\leadsto \color{blue}{\sin re} \]
            6. Taylor expanded in re around 0

              \[\leadsto \color{blue}{re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)} \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(1 + \frac{-1}{6} \cdot {re}^{2}\right)}\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{-1}{6} \cdot {re}^{2}\right)}\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right) \]
              6. *-lowering-*.f6438.2%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right) \]
            8. Simplified38.2%

              \[\leadsto \color{blue}{re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)} \]

            if 1.10000000000000007e78 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \color{blue}{re \cdot \left(1 + {im}^{2} \cdot \left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(1 + {im}^{2} \cdot \left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              3. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\left(im \cdot im\right) \cdot \left(\color{blue}{\frac{1}{2}} + \frac{1}{24} \cdot {im}^{2}\right)\right)\right)\right) \]
              4. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(im \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \color{blue}{\left(im \cdot \left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right)\right) \]
              6. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right)\right)\right)\right) \]
              7. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right)\right)\right)\right) \]
              8. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right)\right)\right)\right) \]
              9. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right)\right)\right)\right) \]
              10. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              11. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified83.3%

              \[\leadsto \color{blue}{re \cdot \left(1 + im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)} \]
          3. Recombined 2 regimes into one program.
          4. Final simplification46.6%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\ \;\;\;\;re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\ \mathbf{else}:\\ \;\;\;\;re \cdot \left(1 + im \cdot \left(im \cdot \left(0.5 + \left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\ \end{array} \]
          5. Add Preprocessing

          Alternative 14: 44.8% accurate, 19.3× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\ \;\;\;\;re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\ \mathbf{else}:\\ \;\;\;\;re \cdot \left(im \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (if (<= im 1.1e+78)
             (* re (+ 1.0 (* -0.16666666666666666 (* re re))))
             (* re (* im (* im (* (* im im) 0.041666666666666664))))))
          double code(double re, double im) {
          	double tmp;
          	if (im <= 1.1e+78) {
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
          	} else {
          		tmp = re * (im * (im * ((im * im) * 0.041666666666666664)));
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: tmp
              if (im <= 1.1d+78) then
                  tmp = re * (1.0d0 + ((-0.16666666666666666d0) * (re * re)))
              else
                  tmp = re * (im * (im * ((im * im) * 0.041666666666666664d0)))
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double tmp;
          	if (im <= 1.1e+78) {
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
          	} else {
          		tmp = re * (im * (im * ((im * im) * 0.041666666666666664)));
          	}
          	return tmp;
          }
          
          def code(re, im):
          	tmp = 0
          	if im <= 1.1e+78:
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)))
          	else:
          		tmp = re * (im * (im * ((im * im) * 0.041666666666666664)))
          	return tmp
          
          function code(re, im)
          	tmp = 0.0
          	if (im <= 1.1e+78)
          		tmp = Float64(re * Float64(1.0 + Float64(-0.16666666666666666 * Float64(re * re))));
          	else
          		tmp = Float64(re * Float64(im * Float64(im * Float64(Float64(im * im) * 0.041666666666666664))));
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	tmp = 0.0;
          	if (im <= 1.1e+78)
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
          	else
          		tmp = re * (im * (im * ((im * im) * 0.041666666666666664)));
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := If[LessEqual[im, 1.1e+78], N[(re * N[(1.0 + N[(-0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(re * N[(im * N[(im * N[(N[(im * im), $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\
          \;\;\;\;re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;re \cdot \left(im \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if im < 1.10000000000000007e78

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re} \]
            4. Step-by-step derivation
              1. sin-lowering-sin.f6462.0%

                \[\leadsto \mathsf{sin.f64}\left(re\right) \]
            5. Simplified62.0%

              \[\leadsto \color{blue}{\sin re} \]
            6. Taylor expanded in re around 0

              \[\leadsto \color{blue}{re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)} \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(1 + \frac{-1}{6} \cdot {re}^{2}\right)}\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{-1}{6} \cdot {re}^{2}\right)}\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right) \]
              6. *-lowering-*.f6438.2%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right) \]
            8. Simplified38.2%

              \[\leadsto \color{blue}{re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)} \]

            if 1.10000000000000007e78 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re + {im}^{2} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right)} \]
            4. Step-by-step derivation
              1. *-rgt-identityN/A

                \[\leadsto \sin re \cdot 1 + \color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right) + \frac{1}{2} \cdot \sin re\right) \]
              2. +-commutativeN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \color{blue}{\frac{1}{24} \cdot \left({im}^{2} \cdot \sin re\right)}\right) \]
              3. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\frac{1}{2} \cdot \sin re + \left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{\sin re}\right) \]
              4. distribute-rgt-outN/A

                \[\leadsto \sin re \cdot 1 + {im}^{2} \cdot \left(\sin re \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              5. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left({im}^{2} \cdot \sin re\right) \cdot \color{blue}{\left(\frac{1}{2} + \frac{1}{24} \cdot {im}^{2}\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \left(\left({im}^{2} \cdot \sin re\right) \cdot \frac{1}{2} + \color{blue}{\left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\left(\sin re \cdot {im}^{2}\right) \cdot \frac{1}{2} + \left(\color{blue}{{im}^{2}} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              8. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left({im}^{2} \cdot \frac{1}{2}\right) + \color{blue}{\left({im}^{2} \cdot \sin re\right)} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              9. unpow2N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(\left(im \cdot im\right) \cdot \frac{1}{2}\right) + \left({im}^{2} \cdot \sin \color{blue}{re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              10. associate-*r*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(im \cdot \frac{1}{2}\right)\right) + \left({im}^{2} \cdot \color{blue}{\sin re}\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              11. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left({im}^{2} \cdot \sin re\right) \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right) \]
              12. *-commutativeN/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \left(\sin re \cdot {im}^{2}\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right) \]
              13. associate-*l*N/A

                \[\leadsto \sin re \cdot 1 + \left(\sin re \cdot \left(im \cdot \left(\frac{1}{2} \cdot im\right)\right) + \sin re \cdot \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              14. distribute-lft-outN/A

                \[\leadsto \sin re \cdot 1 + \sin re \cdot \color{blue}{\left(im \cdot \left(\frac{1}{2} \cdot im\right) + {im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)} \]
            5. Simplified100.0%

              \[\leadsto \color{blue}{\sin re \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right)} \]
            6. Taylor expanded in re around 0

              \[\leadsto \mathsf{*.f64}\left(\color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)}, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \mathsf{+.f64}\left(\color{blue}{1}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
              6. *-lowering-*.f6472.9%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \frac{1}{24}\right)\right)\right)\right)\right)\right) \]
            8. Simplified72.9%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right)} \cdot \left(1 + \left(im \cdot im\right) \cdot \left(0.5 + im \cdot \left(im \cdot 0.041666666666666664\right)\right)\right) \]
            9. Taylor expanded in im around inf

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)\right)} \]
            10. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right)} \]
              2. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. metadata-evalN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right) \]
              4. pow-sqrN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right) \]
              5. associate-*l*N/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right) \]
              6. *-commutativeN/A

                \[\leadsto \left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right) \cdot \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right) \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \color{blue}{\left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right) \]
              8. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)\right), \left(\color{blue}{{im}^{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left(\frac{-1}{6} \cdot {re}^{2}\right)\right)\right), \left({im}^{\color{blue}{2}} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              13. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \left({im}^{2} \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)\right) \]
              14. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              15. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              16. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              17. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \left({im}^{2} \cdot \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              18. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left({im}^{2}\right), \color{blue}{\frac{1}{24}}\right)\right)\right) \]
              19. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\left(im \cdot im\right), \frac{1}{24}\right)\right)\right) \]
              20. *-lowering-*.f6472.9%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \mathsf{*.f64}\left(\mathsf{*.f64}\left(im, im\right), \frac{1}{24}\right)\right)\right) \]
            11. Simplified72.9%

              \[\leadsto \color{blue}{\left(re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)\right) \cdot \left(\left(im \cdot im\right) \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)} \]
            12. Taylor expanded in re around 0

              \[\leadsto \color{blue}{\frac{1}{24} \cdot \left({im}^{4} \cdot re\right)} \]
            13. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \left(\frac{1}{24} \cdot {im}^{4}\right) \cdot \color{blue}{re} \]
              2. *-commutativeN/A

                \[\leadsto re \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)} \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(\frac{1}{24} \cdot {im}^{4}\right)}\right) \]
              4. metadata-evalN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot {im}^{\left(2 \cdot \color{blue}{2}\right)}\right)\right) \]
              5. pow-sqrN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\frac{1}{24} \cdot \left({im}^{2} \cdot \color{blue}{{im}^{2}}\right)\right)\right) \]
              6. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(\frac{1}{24} \cdot {im}^{2}\right) \cdot \color{blue}{{im}^{2}}\right)\right) \]
              7. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \left({im}^{2} \cdot \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right) \]
              8. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(\left(im \cdot im\right) \cdot \left(\color{blue}{\frac{1}{24}} \cdot {im}^{2}\right)\right)\right) \]
              9. associate-*l*N/A

                \[\leadsto \mathsf{*.f64}\left(re, \left(im \cdot \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              10. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \color{blue}{\left(im \cdot \left(\frac{1}{24} \cdot {im}^{2}\right)\right)}\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \color{blue}{\left(\frac{1}{24} \cdot {im}^{2}\right)}\right)\right)\right) \]
              12. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \color{blue}{\left({im}^{2}\right)}\right)\right)\right)\right) \]
              13. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \left(im \cdot \color{blue}{im}\right)\right)\right)\right)\right) \]
              14. *-lowering-*.f6483.3%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(im, \mathsf{*.f64}\left(\frac{1}{24}, \mathsf{*.f64}\left(im, \color{blue}{im}\right)\right)\right)\right)\right) \]
            14. Simplified83.3%

              \[\leadsto \color{blue}{re \cdot \left(im \cdot \left(im \cdot \left(0.041666666666666664 \cdot \left(im \cdot im\right)\right)\right)\right)} \]
          3. Recombined 2 regimes into one program.
          4. Final simplification46.6%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 1.1 \cdot 10^{+78}:\\ \;\;\;\;re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\ \mathbf{else}:\\ \;\;\;\;re \cdot \left(im \cdot \left(im \cdot \left(\left(im \cdot im\right) \cdot 0.041666666666666664\right)\right)\right)\\ \end{array} \]
          5. Add Preprocessing

          Alternative 15: 34.3% accurate, 19.3× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;im \leq 1.58 \cdot 10^{+78}:\\ \;\;\;\;re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\ \mathbf{else}:\\ \;\;\;\;re \cdot \left(0.008333333333333333 \cdot \left(\left(re \cdot re\right) \cdot \left(re \cdot re\right)\right)\right)\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (if (<= im 1.58e+78)
             (* re (+ 1.0 (* -0.16666666666666666 (* re re))))
             (* re (* 0.008333333333333333 (* (* re re) (* re re))))))
          double code(double re, double im) {
          	double tmp;
          	if (im <= 1.58e+78) {
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
          	} else {
          		tmp = re * (0.008333333333333333 * ((re * re) * (re * re)));
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: tmp
              if (im <= 1.58d+78) then
                  tmp = re * (1.0d0 + ((-0.16666666666666666d0) * (re * re)))
              else
                  tmp = re * (0.008333333333333333d0 * ((re * re) * (re * re)))
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double tmp;
          	if (im <= 1.58e+78) {
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
          	} else {
          		tmp = re * (0.008333333333333333 * ((re * re) * (re * re)));
          	}
          	return tmp;
          }
          
          def code(re, im):
          	tmp = 0
          	if im <= 1.58e+78:
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)))
          	else:
          		tmp = re * (0.008333333333333333 * ((re * re) * (re * re)))
          	return tmp
          
          function code(re, im)
          	tmp = 0.0
          	if (im <= 1.58e+78)
          		tmp = Float64(re * Float64(1.0 + Float64(-0.16666666666666666 * Float64(re * re))));
          	else
          		tmp = Float64(re * Float64(0.008333333333333333 * Float64(Float64(re * re) * Float64(re * re))));
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	tmp = 0.0;
          	if (im <= 1.58e+78)
          		tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
          	else
          		tmp = re * (0.008333333333333333 * ((re * re) * (re * re)));
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := If[LessEqual[im, 1.58e+78], N[(re * N[(1.0 + N[(-0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(re * N[(0.008333333333333333 * N[(N[(re * re), $MachinePrecision] * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          \mathbf{if}\;im \leq 1.58 \cdot 10^{+78}:\\
          \;\;\;\;re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;re \cdot \left(0.008333333333333333 \cdot \left(\left(re \cdot re\right) \cdot \left(re \cdot re\right)\right)\right)\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if im < 1.58000000000000004e78

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re} \]
            4. Step-by-step derivation
              1. sin-lowering-sin.f6462.0%

                \[\leadsto \mathsf{sin.f64}\left(re\right) \]
            5. Simplified62.0%

              \[\leadsto \color{blue}{\sin re} \]
            6. Taylor expanded in re around 0

              \[\leadsto \color{blue}{re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)} \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(1 + \frac{-1}{6} \cdot {re}^{2}\right)}\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{-1}{6} \cdot {re}^{2}\right)}\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right) \]
              6. *-lowering-*.f6438.2%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right) \]
            8. Simplified38.2%

              \[\leadsto \color{blue}{re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)} \]

            if 1.58000000000000004e78 < im

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re} \]
            4. Step-by-step derivation
              1. sin-lowering-sin.f642.6%

                \[\leadsto \mathsf{sin.f64}\left(re\right) \]
            5. Simplified2.6%

              \[\leadsto \color{blue}{\sin re} \]
            6. Taylor expanded in re around 0

              \[\leadsto \color{blue}{re \cdot \left(1 + {re}^{2} \cdot \left(\frac{1}{120} \cdot {re}^{2} - \frac{1}{6}\right)\right)} \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(1 + {re}^{2} \cdot \left(\frac{1}{120} \cdot {re}^{2} - \frac{1}{6}\right)\right)}\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left({re}^{2} \cdot \left(\frac{1}{120} \cdot {re}^{2} - \frac{1}{6}\right)\right)}\right)\right) \]
              3. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\left(\frac{1}{120} \cdot {re}^{2} - \frac{1}{6}\right)}\right)\right)\right) \]
              4. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \left(\color{blue}{\frac{1}{120} \cdot {re}^{2}} - \frac{1}{6}\right)\right)\right)\right) \]
              5. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \left(\color{blue}{\frac{1}{120} \cdot {re}^{2}} - \frac{1}{6}\right)\right)\right)\right) \]
              6. sub-negN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \left(\frac{1}{120} \cdot {re}^{2} + \color{blue}{\left(\mathsf{neg}\left(\frac{1}{6}\right)\right)}\right)\right)\right)\right) \]
              7. metadata-evalN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \left(\frac{1}{120} \cdot {re}^{2} + \frac{-1}{6}\right)\right)\right)\right) \]
              8. +-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \left(\frac{-1}{6} + \color{blue}{\frac{1}{120} \cdot {re}^{2}}\right)\right)\right)\right) \]
              9. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \mathsf{+.f64}\left(\frac{-1}{6}, \color{blue}{\left(\frac{1}{120} \cdot {re}^{2}\right)}\right)\right)\right)\right) \]
              10. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \mathsf{+.f64}\left(\frac{-1}{6}, \left({re}^{2} \cdot \color{blue}{\frac{1}{120}}\right)\right)\right)\right)\right) \]
              11. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \mathsf{+.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\frac{1}{120}}\right)\right)\right)\right)\right) \]
              12. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \mathsf{+.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{1}{120}\right)\right)\right)\right)\right) \]
              13. *-lowering-*.f6414.5%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \mathsf{+.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{1}{120}\right)\right)\right)\right)\right) \]
            8. Simplified14.5%

              \[\leadsto \color{blue}{re \cdot \left(1 + \left(re \cdot re\right) \cdot \left(-0.16666666666666666 + \left(re \cdot re\right) \cdot 0.008333333333333333\right)\right)} \]
            9. Taylor expanded in re around inf

              \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(\frac{1}{120} \cdot {re}^{4}\right)}\right) \]
            10. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(\frac{1}{120}, \color{blue}{\left({re}^{4}\right)}\right)\right) \]
              2. metadata-evalN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(\frac{1}{120}, \left({re}^{\left(2 \cdot \color{blue}{2}\right)}\right)\right)\right) \]
              3. pow-sqrN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(\frac{1}{120}, \left({re}^{2} \cdot \color{blue}{{re}^{2}}\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(\frac{1}{120}, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\left({re}^{2}\right)}\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(\frac{1}{120}, \mathsf{*.f64}\left(\left(re \cdot re\right), \left({\color{blue}{re}}^{2}\right)\right)\right)\right) \]
              6. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(\frac{1}{120}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \left({\color{blue}{re}}^{2}\right)\right)\right)\right) \]
              7. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(\frac{1}{120}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \left(re \cdot \color{blue}{re}\right)\right)\right)\right) \]
              8. *-lowering-*.f6414.1%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(\frac{1}{120}, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \mathsf{*.f64}\left(re, \color{blue}{re}\right)\right)\right)\right) \]
            11. Simplified14.1%

              \[\leadsto re \cdot \color{blue}{\left(0.008333333333333333 \cdot \left(\left(re \cdot re\right) \cdot \left(re \cdot re\right)\right)\right)} \]
          3. Recombined 2 regimes into one program.
          4. Final simplification33.7%

            \[\leadsto \begin{array}{l} \mathbf{if}\;im \leq 1.58 \cdot 10^{+78}:\\ \;\;\;\;re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)\\ \mathbf{else}:\\ \;\;\;\;re \cdot \left(0.008333333333333333 \cdot \left(\left(re \cdot re\right) \cdot \left(re \cdot re\right)\right)\right)\\ \end{array} \]
          5. Add Preprocessing

          Alternative 16: 30.3% accurate, 25.7× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;re \leq 1.12 \cdot 10^{+64}:\\ \;\;\;\;re\\ \mathbf{else}:\\ \;\;\;\;-0.16666666666666666 \cdot \left(re \cdot \left(re \cdot re\right)\right)\\ \end{array} \end{array} \]
          (FPCore (re im)
           :precision binary64
           (if (<= re 1.12e+64) re (* -0.16666666666666666 (* re (* re re)))))
          double code(double re, double im) {
          	double tmp;
          	if (re <= 1.12e+64) {
          		tmp = re;
          	} else {
          		tmp = -0.16666666666666666 * (re * (re * re));
          	}
          	return tmp;
          }
          
          real(8) function code(re, im)
              real(8), intent (in) :: re
              real(8), intent (in) :: im
              real(8) :: tmp
              if (re <= 1.12d+64) then
                  tmp = re
              else
                  tmp = (-0.16666666666666666d0) * (re * (re * re))
              end if
              code = tmp
          end function
          
          public static double code(double re, double im) {
          	double tmp;
          	if (re <= 1.12e+64) {
          		tmp = re;
          	} else {
          		tmp = -0.16666666666666666 * (re * (re * re));
          	}
          	return tmp;
          }
          
          def code(re, im):
          	tmp = 0
          	if re <= 1.12e+64:
          		tmp = re
          	else:
          		tmp = -0.16666666666666666 * (re * (re * re))
          	return tmp
          
          function code(re, im)
          	tmp = 0.0
          	if (re <= 1.12e+64)
          		tmp = re;
          	else
          		tmp = Float64(-0.16666666666666666 * Float64(re * Float64(re * re)));
          	end
          	return tmp
          end
          
          function tmp_2 = code(re, im)
          	tmp = 0.0;
          	if (re <= 1.12e+64)
          		tmp = re;
          	else
          		tmp = -0.16666666666666666 * (re * (re * re));
          	end
          	tmp_2 = tmp;
          end
          
          code[re_, im_] := If[LessEqual[re, 1.12e+64], re, N[(-0.16666666666666666 * N[(re * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          \mathbf{if}\;re \leq 1.12 \cdot 10^{+64}:\\
          \;\;\;\;re\\
          
          \mathbf{else}:\\
          \;\;\;\;-0.16666666666666666 \cdot \left(re \cdot \left(re \cdot re\right)\right)\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if re < 1.11999999999999995e64

            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re} \]
            4. Step-by-step derivation
              1. sin-lowering-sin.f6450.7%

                \[\leadsto \mathsf{sin.f64}\left(re\right) \]
            5. Simplified50.7%

              \[\leadsto \color{blue}{\sin re} \]
            6. Taylor expanded in re around 0

              \[\leadsto \color{blue}{re} \]
            7. Step-by-step derivation
              1. Simplified33.4%

                \[\leadsto \color{blue}{re} \]

              if 1.11999999999999995e64 < re

              1. Initial program 100.0%

                \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
              2. Add Preprocessing
              3. Taylor expanded in im around 0

                \[\leadsto \color{blue}{\sin re} \]
              4. Step-by-step derivation
                1. sin-lowering-sin.f6451.4%

                  \[\leadsto \mathsf{sin.f64}\left(re\right) \]
              5. Simplified51.4%

                \[\leadsto \color{blue}{\sin re} \]
              6. Taylor expanded in re around 0

                \[\leadsto \color{blue}{re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)} \]
              7. Step-by-step derivation
                1. *-lowering-*.f64N/A

                  \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(1 + \frac{-1}{6} \cdot {re}^{2}\right)}\right) \]
                2. +-lowering-+.f64N/A

                  \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{-1}{6} \cdot {re}^{2}\right)}\right)\right) \]
                3. *-commutativeN/A

                  \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
                4. *-lowering-*.f64N/A

                  \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
                5. unpow2N/A

                  \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right) \]
                6. *-lowering-*.f6422.1%

                  \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right) \]
              8. Simplified22.1%

                \[\leadsto \color{blue}{re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)} \]
              9. Taylor expanded in re around inf

                \[\leadsto \color{blue}{\frac{-1}{6} \cdot {re}^{3}} \]
              10. Step-by-step derivation
                1. *-lowering-*.f64N/A

                  \[\leadsto \mathsf{*.f64}\left(\frac{-1}{6}, \color{blue}{\left({re}^{3}\right)}\right) \]
                2. cube-multN/A

                  \[\leadsto \mathsf{*.f64}\left(\frac{-1}{6}, \left(re \cdot \color{blue}{\left(re \cdot re\right)}\right)\right) \]
                3. unpow2N/A

                  \[\leadsto \mathsf{*.f64}\left(\frac{-1}{6}, \left(re \cdot {re}^{\color{blue}{2}}\right)\right) \]
                4. *-lowering-*.f64N/A

                  \[\leadsto \mathsf{*.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(re, \color{blue}{\left({re}^{2}\right)}\right)\right) \]
                5. unpow2N/A

                  \[\leadsto \mathsf{*.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(re, \left(re \cdot \color{blue}{re}\right)\right)\right) \]
                6. *-lowering-*.f6422.1%

                  \[\leadsto \mathsf{*.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(re, \mathsf{*.f64}\left(re, \color{blue}{re}\right)\right)\right) \]
              11. Simplified22.1%

                \[\leadsto \color{blue}{-0.16666666666666666 \cdot \left(re \cdot \left(re \cdot re\right)\right)} \]
            8. Recombined 2 regimes into one program.
            9. Add Preprocessing

            Alternative 17: 34.2% accurate, 34.3× speedup?

            \[\begin{array}{l} \\ re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right) \end{array} \]
            (FPCore (re im)
             :precision binary64
             (* re (+ 1.0 (* -0.16666666666666666 (* re re)))))
            double code(double re, double im) {
            	return re * (1.0 + (-0.16666666666666666 * (re * re)));
            }
            
            real(8) function code(re, im)
                real(8), intent (in) :: re
                real(8), intent (in) :: im
                code = re * (1.0d0 + ((-0.16666666666666666d0) * (re * re)))
            end function
            
            public static double code(double re, double im) {
            	return re * (1.0 + (-0.16666666666666666 * (re * re)));
            }
            
            def code(re, im):
            	return re * (1.0 + (-0.16666666666666666 * (re * re)))
            
            function code(re, im)
            	return Float64(re * Float64(1.0 + Float64(-0.16666666666666666 * Float64(re * re))))
            end
            
            function tmp = code(re, im)
            	tmp = re * (1.0 + (-0.16666666666666666 * (re * re)));
            end
            
            code[re_, im_] := N[(re * N[(1.0 + N[(-0.16666666666666666 * N[(re * re), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
            
            \begin{array}{l}
            
            \\
            re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right)
            \end{array}
            
            Derivation
            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re} \]
            4. Step-by-step derivation
              1. sin-lowering-sin.f6450.9%

                \[\leadsto \mathsf{sin.f64}\left(re\right) \]
            5. Simplified50.9%

              \[\leadsto \color{blue}{\sin re} \]
            6. Taylor expanded in re around 0

              \[\leadsto \color{blue}{re \cdot \left(1 + \frac{-1}{6} \cdot {re}^{2}\right)} \]
            7. Step-by-step derivation
              1. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \color{blue}{\left(1 + \frac{-1}{6} \cdot {re}^{2}\right)}\right) \]
              2. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{-1}{6} \cdot {re}^{2}\right)}\right)\right) \]
              3. *-commutativeN/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \left({re}^{2} \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
              4. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left({re}^{2}\right), \color{blue}{\frac{-1}{6}}\right)\right)\right) \]
              5. unpow2N/A

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\left(re \cdot re\right), \frac{-1}{6}\right)\right)\right) \]
              6. *-lowering-*.f6432.9%

                \[\leadsto \mathsf{*.f64}\left(re, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(\mathsf{*.f64}\left(re, re\right), \frac{-1}{6}\right)\right)\right) \]
            8. Simplified32.9%

              \[\leadsto \color{blue}{re \cdot \left(1 + \left(re \cdot re\right) \cdot -0.16666666666666666\right)} \]
            9. Final simplification32.9%

              \[\leadsto re \cdot \left(1 + -0.16666666666666666 \cdot \left(re \cdot re\right)\right) \]
            10. Add Preprocessing

            Alternative 18: 26.7% accurate, 309.0× speedup?

            \[\begin{array}{l} \\ re \end{array} \]
            (FPCore (re im) :precision binary64 re)
            double code(double re, double im) {
            	return re;
            }
            
            real(8) function code(re, im)
                real(8), intent (in) :: re
                real(8), intent (in) :: im
                code = re
            end function
            
            public static double code(double re, double im) {
            	return re;
            }
            
            def code(re, im):
            	return re
            
            function code(re, im)
            	return re
            end
            
            function tmp = code(re, im)
            	tmp = re;
            end
            
            code[re_, im_] := re
            
            \begin{array}{l}
            
            \\
            re
            \end{array}
            
            Derivation
            1. Initial program 100.0%

              \[\left(0.5 \cdot \sin re\right) \cdot \left(e^{0 - im} + e^{im}\right) \]
            2. Add Preprocessing
            3. Taylor expanded in im around 0

              \[\leadsto \color{blue}{\sin re} \]
            4. Step-by-step derivation
              1. sin-lowering-sin.f6450.9%

                \[\leadsto \mathsf{sin.f64}\left(re\right) \]
            5. Simplified50.9%

              \[\leadsto \color{blue}{\sin re} \]
            6. Taylor expanded in re around 0

              \[\leadsto \color{blue}{re} \]
            7. Step-by-step derivation
              1. Simplified26.9%

                \[\leadsto \color{blue}{re} \]
              2. Add Preprocessing

              Reproduce

              ?
              herbie shell --seed 2024158 
              (FPCore (re im)
                :name "math.sin on complex, real part"
                :precision binary64
                (* (* 0.5 (sin re)) (+ (exp (- 0.0 im)) (exp im))))