Statistics.Distribution.Poisson.Internal:probability from math-functions-0.1.5.2

Percentage Accurate: 100.0% → 100.0%
Time: 9.3s
Alternatives: 18
Speedup: 1.0×

Specification

?
\[\begin{array}{l} \\ e^{\left(x + y \cdot \log y\right) - z} \end{array} \]
(FPCore (x y z) :precision binary64 (exp (- (+ x (* y (log y))) z)))
double code(double x, double y, double z) {
	return exp(((x + (y * log(y))) - z));
}
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = exp(((x + (y * log(y))) - z))
end function
public static double code(double x, double y, double z) {
	return Math.exp(((x + (y * Math.log(y))) - z));
}
def code(x, y, z):
	return math.exp(((x + (y * math.log(y))) - z))
function code(x, y, z)
	return exp(Float64(Float64(x + Float64(y * log(y))) - z))
end
function tmp = code(x, y, z)
	tmp = exp(((x + (y * log(y))) - z));
end
code[x_, y_, z_] := N[Exp[N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
e^{\left(x + y \cdot \log y\right) - z}
\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} \\ e^{\left(x + y \cdot \log y\right) - z} \end{array} \]
(FPCore (x y z) :precision binary64 (exp (- (+ x (* y (log y))) z)))
double code(double x, double y, double z) {
	return exp(((x + (y * log(y))) - z));
}
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = exp(((x + (y * log(y))) - z))
end function
public static double code(double x, double y, double z) {
	return Math.exp(((x + (y * Math.log(y))) - z));
}
def code(x, y, z):
	return math.exp(((x + (y * math.log(y))) - z))
function code(x, y, z)
	return exp(Float64(Float64(x + Float64(y * log(y))) - z))
end
function tmp = code(x, y, z)
	tmp = exp(((x + (y * log(y))) - z));
end
code[x_, y_, z_] := N[Exp[N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
e^{\left(x + y \cdot \log y\right) - z}
\end{array}

Alternative 1: 100.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ e^{\left(x + y \cdot \log y\right) - z} \end{array} \]
(FPCore (x y z) :precision binary64 (exp (- (+ x (* y (log y))) z)))
double code(double x, double y, double z) {
	return exp(((x + (y * log(y))) - z));
}
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = exp(((x + (y * log(y))) - z))
end function
public static double code(double x, double y, double z) {
	return Math.exp(((x + (y * Math.log(y))) - z));
}
def code(x, y, z):
	return math.exp(((x + (y * math.log(y))) - z))
function code(x, y, z)
	return exp(Float64(Float64(x + Float64(y * log(y))) - z))
end
function tmp = code(x, y, z)
	tmp = exp(((x + (y * log(y))) - z));
end
code[x_, y_, z_] := N[Exp[N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}

\\
e^{\left(x + y \cdot \log y\right) - z}
\end{array}
Derivation
  1. Initial program 100.0%

    \[e^{\left(x + y \cdot \log y\right) - z} \]
  2. Add Preprocessing
  3. Add Preprocessing

Alternative 2: 90.3% accurate, 0.7× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;y \cdot \log y \leq 1000:\\ \;\;\;\;\frac{{y}^{y}}{e^{z - x}}\\ \mathbf{else}:\\ \;\;\;\;{y}^{y}\\ \end{array} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (if (<= (* y (log y)) 1000.0) (/ (pow y y) (exp (- z x))) (pow y y)))
double code(double x, double y, double z) {
	double tmp;
	if ((y * log(y)) <= 1000.0) {
		tmp = pow(y, y) / exp((z - x));
	} else {
		tmp = pow(y, y);
	}
	return tmp;
}
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8) :: tmp
    if ((y * log(y)) <= 1000.0d0) then
        tmp = (y ** y) / exp((z - x))
    else
        tmp = y ** y
    end if
    code = tmp
end function
public static double code(double x, double y, double z) {
	double tmp;
	if ((y * Math.log(y)) <= 1000.0) {
		tmp = Math.pow(y, y) / Math.exp((z - x));
	} else {
		tmp = Math.pow(y, y);
	}
	return tmp;
}
def code(x, y, z):
	tmp = 0
	if (y * math.log(y)) <= 1000.0:
		tmp = math.pow(y, y) / math.exp((z - x))
	else:
		tmp = math.pow(y, y)
	return tmp
function code(x, y, z)
	tmp = 0.0
	if (Float64(y * log(y)) <= 1000.0)
		tmp = Float64((y ^ y) / exp(Float64(z - x)));
	else
		tmp = y ^ y;
	end
	return tmp
end
function tmp_2 = code(x, y, z)
	tmp = 0.0;
	if ((y * log(y)) <= 1000.0)
		tmp = (y ^ y) / exp((z - x));
	else
		tmp = y ^ y;
	end
	tmp_2 = tmp;
end
code[x_, y_, z_] := If[LessEqual[N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision], 1000.0], N[(N[Power[y, y], $MachinePrecision] / N[Exp[N[(z - x), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[Power[y, y], $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;y \cdot \log y \leq 1000:\\
\;\;\;\;\frac{{y}^{y}}{e^{z - x}}\\

\mathbf{else}:\\
\;\;\;\;{y}^{y}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (*.f64 y (log.f64 y)) < 1e3

    1. Initial program 100.0%

      \[e^{\left(x + y \cdot \log y\right) - z} \]
    2. Step-by-step derivation
      1. associate--l+N/A

        \[\leadsto e^{x + \left(y \cdot \log y - z\right)} \]
      2. +-commutativeN/A

        \[\leadsto e^{\left(y \cdot \log y - z\right) + x} \]
      3. associate-+l-N/A

        \[\leadsto e^{y \cdot \log y - \left(z - x\right)} \]
      4. exp-diffN/A

        \[\leadsto \frac{e^{y \cdot \log y}}{\color{blue}{e^{z - x}}} \]
      5. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\left(e^{y \cdot \log y}\right), \color{blue}{\left(e^{z - x}\right)}\right) \]
      6. *-commutativeN/A

        \[\leadsto \mathsf{/.f64}\left(\left(e^{\log y \cdot y}\right), \left(e^{\color{blue}{z} - x}\right)\right) \]
      7. exp-to-powN/A

        \[\leadsto \mathsf{/.f64}\left(\left({y}^{y}\right), \left(e^{\color{blue}{z - x}}\right)\right) \]
      8. pow-lowering-pow.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(y, y\right), \left(e^{\color{blue}{z - x}}\right)\right) \]
      9. exp-lowering-exp.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(y, y\right), \mathsf{exp.f64}\left(\left(z - x\right)\right)\right) \]
      10. --lowering--.f64100.0%

        \[\leadsto \mathsf{/.f64}\left(\mathsf{pow.f64}\left(y, y\right), \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(z, x\right)\right)\right) \]
    3. Simplified100.0%

      \[\leadsto \color{blue}{\frac{{y}^{y}}{e^{z - x}}} \]
    4. Add Preprocessing

    if 1e3 < (*.f64 y (log.f64 y))

    1. Initial program 100.0%

      \[e^{\left(x + y \cdot \log y\right) - z} \]
    2. Add Preprocessing
    3. Taylor expanded in y around inf

      \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot \left(y \cdot \log \left(\frac{1}{y}\right)\right)\right)}\right) \]
    4. Step-by-step derivation
      1. mul-1-negN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(y \cdot \log \left(\frac{1}{y}\right)\right)\right)\right) \]
      2. distribute-rgt-neg-inN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(y \cdot \left(\mathsf{neg}\left(\log \left(\frac{1}{y}\right)\right)\right)\right)\right) \]
      3. log-recN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(y \cdot \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\log y\right)\right)\right)\right)\right)\right) \]
      4. remove-double-negN/A

        \[\leadsto \mathsf{exp.f64}\left(\left(y \cdot \log y\right)\right) \]
      5. *-lowering-*.f64N/A

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(y, \log y\right)\right) \]
      6. log-lowering-log.f6484.0%

        \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(y, \mathsf{log.f64}\left(y\right)\right)\right) \]
    5. Simplified84.0%

      \[\leadsto e^{\color{blue}{y \cdot \log y}} \]
    6. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto e^{\log y \cdot y} \]
      2. exp-to-powN/A

        \[\leadsto {y}^{\color{blue}{y}} \]
      3. pow-lowering-pow.f6484.0%

        \[\leadsto \mathsf{pow.f64}\left(y, \color{blue}{y}\right) \]
    7. Applied egg-rr84.0%

      \[\leadsto \color{blue}{{y}^{y}} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 3: 73.8% accurate, 1.8× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq -1.7 \cdot 10^{+40}:\\ \;\;\;\;e^{x}\\ \mathbf{elif}\;x \leq -1.55 \cdot 10^{-27}:\\ \;\;\;\;{y}^{y}\\ \mathbf{elif}\;x \leq 6.5:\\ \;\;\;\;e^{0 - z}\\ \mathbf{else}:\\ \;\;\;\;e^{x}\\ \end{array} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (if (<= x -1.7e+40)
   (exp x)
   (if (<= x -1.55e-27) (pow y y) (if (<= x 6.5) (exp (- 0.0 z)) (exp x)))))
double code(double x, double y, double z) {
	double tmp;
	if (x <= -1.7e+40) {
		tmp = exp(x);
	} else if (x <= -1.55e-27) {
		tmp = pow(y, y);
	} else if (x <= 6.5) {
		tmp = exp((0.0 - z));
	} else {
		tmp = exp(x);
	}
	return tmp;
}
real(8) function code(x, y, z)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8) :: tmp
    if (x <= (-1.7d+40)) then
        tmp = exp(x)
    else if (x <= (-1.55d-27)) then
        tmp = y ** y
    else if (x <= 6.5d0) then
        tmp = exp((0.0d0 - z))
    else
        tmp = exp(x)
    end if
    code = tmp
end function
public static double code(double x, double y, double z) {
	double tmp;
	if (x <= -1.7e+40) {
		tmp = Math.exp(x);
	} else if (x <= -1.55e-27) {
		tmp = Math.pow(y, y);
	} else if (x <= 6.5) {
		tmp = Math.exp((0.0 - z));
	} else {
		tmp = Math.exp(x);
	}
	return tmp;
}
def code(x, y, z):
	tmp = 0
	if x <= -1.7e+40:
		tmp = math.exp(x)
	elif x <= -1.55e-27:
		tmp = math.pow(y, y)
	elif x <= 6.5:
		tmp = math.exp((0.0 - z))
	else:
		tmp = math.exp(x)
	return tmp
function code(x, y, z)
	tmp = 0.0
	if (x <= -1.7e+40)
		tmp = exp(x);
	elseif (x <= -1.55e-27)
		tmp = y ^ y;
	elseif (x <= 6.5)
		tmp = exp(Float64(0.0 - z));
	else
		tmp = exp(x);
	end
	return tmp
end
function tmp_2 = code(x, y, z)
	tmp = 0.0;
	if (x <= -1.7e+40)
		tmp = exp(x);
	elseif (x <= -1.55e-27)
		tmp = y ^ y;
	elseif (x <= 6.5)
		tmp = exp((0.0 - z));
	else
		tmp = exp(x);
	end
	tmp_2 = tmp;
end
code[x_, y_, z_] := If[LessEqual[x, -1.7e+40], N[Exp[x], $MachinePrecision], If[LessEqual[x, -1.55e-27], N[Power[y, y], $MachinePrecision], If[LessEqual[x, 6.5], N[Exp[N[(0.0 - z), $MachinePrecision]], $MachinePrecision], N[Exp[x], $MachinePrecision]]]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.7 \cdot 10^{+40}:\\
\;\;\;\;e^{x}\\

\mathbf{elif}\;x \leq -1.55 \cdot 10^{-27}:\\
\;\;\;\;{y}^{y}\\

\mathbf{elif}\;x \leq 6.5:\\
\;\;\;\;e^{0 - z}\\

\mathbf{else}:\\
\;\;\;\;e^{x}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if x < -1.69999999999999994e40 or 6.5 < x

    1. Initial program 100.0%

      \[e^{\left(x + y \cdot \log y\right) - z} \]
    2. Add Preprocessing
    3. Taylor expanded in x around inf

      \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
    4. Step-by-step derivation
      1. Simplified85.6%

        \[\leadsto e^{\color{blue}{x}} \]

      if -1.69999999999999994e40 < x < -1.5499999999999999e-27

      1. Initial program 100.0%

        \[e^{\left(x + y \cdot \log y\right) - z} \]
      2. Add Preprocessing
      3. Taylor expanded in y around inf

        \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot \left(y \cdot \log \left(\frac{1}{y}\right)\right)\right)}\right) \]
      4. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(y \cdot \log \left(\frac{1}{y}\right)\right)\right)\right) \]
        2. distribute-rgt-neg-inN/A

          \[\leadsto \mathsf{exp.f64}\left(\left(y \cdot \left(\mathsf{neg}\left(\log \left(\frac{1}{y}\right)\right)\right)\right)\right) \]
        3. log-recN/A

          \[\leadsto \mathsf{exp.f64}\left(\left(y \cdot \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\log y\right)\right)\right)\right)\right)\right) \]
        4. remove-double-negN/A

          \[\leadsto \mathsf{exp.f64}\left(\left(y \cdot \log y\right)\right) \]
        5. *-lowering-*.f64N/A

          \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(y, \log y\right)\right) \]
        6. log-lowering-log.f6477.1%

          \[\leadsto \mathsf{exp.f64}\left(\mathsf{*.f64}\left(y, \mathsf{log.f64}\left(y\right)\right)\right) \]
      5. Simplified77.1%

        \[\leadsto e^{\color{blue}{y \cdot \log y}} \]
      6. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto e^{\log y \cdot y} \]
        2. exp-to-powN/A

          \[\leadsto {y}^{\color{blue}{y}} \]
        3. pow-lowering-pow.f6477.1%

          \[\leadsto \mathsf{pow.f64}\left(y, \color{blue}{y}\right) \]
      7. Applied egg-rr77.1%

        \[\leadsto \color{blue}{{y}^{y}} \]

      if -1.5499999999999999e-27 < x < 6.5

      1. Initial program 100.0%

        \[e^{\left(x + y \cdot \log y\right) - z} \]
      2. Add Preprocessing
      3. Taylor expanded in z around inf

        \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
      4. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
        2. neg-sub0N/A

          \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
        3. --lowering--.f6476.9%

          \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
      5. Simplified76.9%

        \[\leadsto e^{\color{blue}{0 - z}} \]
      6. Step-by-step derivation
        1. sub0-negN/A

          \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
        2. neg-lowering-neg.f6476.9%

          \[\leadsto \mathsf{exp.f64}\left(\mathsf{neg.f64}\left(z\right)\right) \]
      7. Applied egg-rr76.9%

        \[\leadsto e^{\color{blue}{-z}} \]
    5. Recombined 3 regimes into one program.
    6. Final simplification80.6%

      \[\leadsto \begin{array}{l} \mathbf{if}\;x \leq -1.7 \cdot 10^{+40}:\\ \;\;\;\;e^{x}\\ \mathbf{elif}\;x \leq -1.55 \cdot 10^{-27}:\\ \;\;\;\;{y}^{y}\\ \mathbf{elif}\;x \leq 6.5:\\ \;\;\;\;e^{0 - z}\\ \mathbf{else}:\\ \;\;\;\;e^{x}\\ \end{array} \]
    7. Add Preprocessing

    Alternative 4: 73.3% accurate, 1.8× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := e^{0 - z}\\ \mathbf{if}\;z \leq -1.08 \cdot 10^{-24}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;z \leq 4.6 \cdot 10^{+23}:\\ \;\;\;\;e^{x}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
    (FPCore (x y z)
     :precision binary64
     (let* ((t_0 (exp (- 0.0 z))))
       (if (<= z -1.08e-24) t_0 (if (<= z 4.6e+23) (exp x) t_0))))
    double code(double x, double y, double z) {
    	double t_0 = exp((0.0 - z));
    	double tmp;
    	if (z <= -1.08e-24) {
    		tmp = t_0;
    	} else if (z <= 4.6e+23) {
    		tmp = exp(x);
    	} else {
    		tmp = t_0;
    	}
    	return tmp;
    }
    
    real(8) function code(x, y, z)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        real(8), intent (in) :: z
        real(8) :: t_0
        real(8) :: tmp
        t_0 = exp((0.0d0 - z))
        if (z <= (-1.08d-24)) then
            tmp = t_0
        else if (z <= 4.6d+23) then
            tmp = exp(x)
        else
            tmp = t_0
        end if
        code = tmp
    end function
    
    public static double code(double x, double y, double z) {
    	double t_0 = Math.exp((0.0 - z));
    	double tmp;
    	if (z <= -1.08e-24) {
    		tmp = t_0;
    	} else if (z <= 4.6e+23) {
    		tmp = Math.exp(x);
    	} else {
    		tmp = t_0;
    	}
    	return tmp;
    }
    
    def code(x, y, z):
    	t_0 = math.exp((0.0 - z))
    	tmp = 0
    	if z <= -1.08e-24:
    		tmp = t_0
    	elif z <= 4.6e+23:
    		tmp = math.exp(x)
    	else:
    		tmp = t_0
    	return tmp
    
    function code(x, y, z)
    	t_0 = exp(Float64(0.0 - z))
    	tmp = 0.0
    	if (z <= -1.08e-24)
    		tmp = t_0;
    	elseif (z <= 4.6e+23)
    		tmp = exp(x);
    	else
    		tmp = t_0;
    	end
    	return tmp
    end
    
    function tmp_2 = code(x, y, z)
    	t_0 = exp((0.0 - z));
    	tmp = 0.0;
    	if (z <= -1.08e-24)
    		tmp = t_0;
    	elseif (z <= 4.6e+23)
    		tmp = exp(x);
    	else
    		tmp = t_0;
    	end
    	tmp_2 = tmp;
    end
    
    code[x_, y_, z_] := Block[{t$95$0 = N[Exp[N[(0.0 - z), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[z, -1.08e-24], t$95$0, If[LessEqual[z, 4.6e+23], N[Exp[x], $MachinePrecision], t$95$0]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := e^{0 - z}\\
    \mathbf{if}\;z \leq -1.08 \cdot 10^{-24}:\\
    \;\;\;\;t\_0\\
    
    \mathbf{elif}\;z \leq 4.6 \cdot 10^{+23}:\\
    \;\;\;\;e^{x}\\
    
    \mathbf{else}:\\
    \;\;\;\;t\_0\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if z < -1.08000000000000006e-24 or 4.6000000000000001e23 < z

      1. Initial program 100.0%

        \[e^{\left(x + y \cdot \log y\right) - z} \]
      2. Add Preprocessing
      3. Taylor expanded in z around inf

        \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
      4. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
        2. neg-sub0N/A

          \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
        3. --lowering--.f6486.5%

          \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
      5. Simplified86.5%

        \[\leadsto e^{\color{blue}{0 - z}} \]
      6. Step-by-step derivation
        1. sub0-negN/A

          \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
        2. neg-lowering-neg.f6486.5%

          \[\leadsto \mathsf{exp.f64}\left(\mathsf{neg.f64}\left(z\right)\right) \]
      7. Applied egg-rr86.5%

        \[\leadsto e^{\color{blue}{-z}} \]

      if -1.08000000000000006e-24 < z < 4.6000000000000001e23

      1. Initial program 100.0%

        \[e^{\left(x + y \cdot \log y\right) - z} \]
      2. Add Preprocessing
      3. Taylor expanded in x around inf

        \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
      4. Step-by-step derivation
        1. Simplified68.4%

          \[\leadsto e^{\color{blue}{x}} \]
      5. Recombined 2 regimes into one program.
      6. Final simplification78.0%

        \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -1.08 \cdot 10^{-24}:\\ \;\;\;\;e^{0 - z}\\ \mathbf{elif}\;z \leq 4.6 \cdot 10^{+23}:\\ \;\;\;\;e^{x}\\ \mathbf{else}:\\ \;\;\;\;e^{0 - z}\\ \end{array} \]
      7. Add Preprocessing

      Alternative 5: 64.8% accurate, 1.9× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := 0.5 + z \cdot -0.16666666666666666\\ t_1 := z \cdot t\_0\\ \mathbf{if}\;z \leq -2 \cdot 10^{+77}:\\ \;\;\;\;1 + z \cdot \frac{1}{\frac{1}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}}\\ \mathbf{elif}\;z \leq -2.3 \cdot 10^{+46}:\\ \;\;\;\;1 + \frac{z \cdot \left(-1 + t\_1 \cdot \left(z \cdot \left(t\_0 \cdot t\_1\right)\right)\right)}{1 + t\_1 \cdot \left(1 + t\_1\right)}\\ \mathbf{else}:\\ \;\;\;\;e^{x}\\ \end{array} \end{array} \]
      (FPCore (x y z)
       :precision binary64
       (let* ((t_0 (+ 0.5 (* z -0.16666666666666666))) (t_1 (* z t_0)))
         (if (<= z -2e+77)
           (+ 1.0 (* z (/ 1.0 (/ 1.0 (+ -1.0 (* 0.125 (* z (* z z))))))))
           (if (<= z -2.3e+46)
             (+
              1.0
              (/
               (* z (+ -1.0 (* t_1 (* z (* t_0 t_1)))))
               (+ 1.0 (* t_1 (+ 1.0 t_1)))))
             (exp x)))))
      double code(double x, double y, double z) {
      	double t_0 = 0.5 + (z * -0.16666666666666666);
      	double t_1 = z * t_0;
      	double tmp;
      	if (z <= -2e+77) {
      		tmp = 1.0 + (z * (1.0 / (1.0 / (-1.0 + (0.125 * (z * (z * z)))))));
      	} else if (z <= -2.3e+46) {
      		tmp = 1.0 + ((z * (-1.0 + (t_1 * (z * (t_0 * t_1))))) / (1.0 + (t_1 * (1.0 + t_1))));
      	} else {
      		tmp = exp(x);
      	}
      	return tmp;
      }
      
      real(8) function code(x, y, z)
          real(8), intent (in) :: x
          real(8), intent (in) :: y
          real(8), intent (in) :: z
          real(8) :: t_0
          real(8) :: t_1
          real(8) :: tmp
          t_0 = 0.5d0 + (z * (-0.16666666666666666d0))
          t_1 = z * t_0
          if (z <= (-2d+77)) then
              tmp = 1.0d0 + (z * (1.0d0 / (1.0d0 / ((-1.0d0) + (0.125d0 * (z * (z * z)))))))
          else if (z <= (-2.3d+46)) then
              tmp = 1.0d0 + ((z * ((-1.0d0) + (t_1 * (z * (t_0 * t_1))))) / (1.0d0 + (t_1 * (1.0d0 + t_1))))
          else
              tmp = exp(x)
          end if
          code = tmp
      end function
      
      public static double code(double x, double y, double z) {
      	double t_0 = 0.5 + (z * -0.16666666666666666);
      	double t_1 = z * t_0;
      	double tmp;
      	if (z <= -2e+77) {
      		tmp = 1.0 + (z * (1.0 / (1.0 / (-1.0 + (0.125 * (z * (z * z)))))));
      	} else if (z <= -2.3e+46) {
      		tmp = 1.0 + ((z * (-1.0 + (t_1 * (z * (t_0 * t_1))))) / (1.0 + (t_1 * (1.0 + t_1))));
      	} else {
      		tmp = Math.exp(x);
      	}
      	return tmp;
      }
      
      def code(x, y, z):
      	t_0 = 0.5 + (z * -0.16666666666666666)
      	t_1 = z * t_0
      	tmp = 0
      	if z <= -2e+77:
      		tmp = 1.0 + (z * (1.0 / (1.0 / (-1.0 + (0.125 * (z * (z * z)))))))
      	elif z <= -2.3e+46:
      		tmp = 1.0 + ((z * (-1.0 + (t_1 * (z * (t_0 * t_1))))) / (1.0 + (t_1 * (1.0 + t_1))))
      	else:
      		tmp = math.exp(x)
      	return tmp
      
      function code(x, y, z)
      	t_0 = Float64(0.5 + Float64(z * -0.16666666666666666))
      	t_1 = Float64(z * t_0)
      	tmp = 0.0
      	if (z <= -2e+77)
      		tmp = Float64(1.0 + Float64(z * Float64(1.0 / Float64(1.0 / Float64(-1.0 + Float64(0.125 * Float64(z * Float64(z * z))))))));
      	elseif (z <= -2.3e+46)
      		tmp = Float64(1.0 + Float64(Float64(z * Float64(-1.0 + Float64(t_1 * Float64(z * Float64(t_0 * t_1))))) / Float64(1.0 + Float64(t_1 * Float64(1.0 + t_1)))));
      	else
      		tmp = exp(x);
      	end
      	return tmp
      end
      
      function tmp_2 = code(x, y, z)
      	t_0 = 0.5 + (z * -0.16666666666666666);
      	t_1 = z * t_0;
      	tmp = 0.0;
      	if (z <= -2e+77)
      		tmp = 1.0 + (z * (1.0 / (1.0 / (-1.0 + (0.125 * (z * (z * z)))))));
      	elseif (z <= -2.3e+46)
      		tmp = 1.0 + ((z * (-1.0 + (t_1 * (z * (t_0 * t_1))))) / (1.0 + (t_1 * (1.0 + t_1))));
      	else
      		tmp = exp(x);
      	end
      	tmp_2 = tmp;
      end
      
      code[x_, y_, z_] := Block[{t$95$0 = N[(0.5 + N[(z * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(z * t$95$0), $MachinePrecision]}, If[LessEqual[z, -2e+77], N[(1.0 + N[(z * N[(1.0 / N[(1.0 / N[(-1.0 + N[(0.125 * N[(z * N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, -2.3e+46], N[(1.0 + N[(N[(z * N[(-1.0 + N[(t$95$1 * N[(z * N[(t$95$0 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(t$95$1 * N[(1.0 + t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[Exp[x], $MachinePrecision]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := 0.5 + z \cdot -0.16666666666666666\\
      t_1 := z \cdot t\_0\\
      \mathbf{if}\;z \leq -2 \cdot 10^{+77}:\\
      \;\;\;\;1 + z \cdot \frac{1}{\frac{1}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}}\\
      
      \mathbf{elif}\;z \leq -2.3 \cdot 10^{+46}:\\
      \;\;\;\;1 + \frac{z \cdot \left(-1 + t\_1 \cdot \left(z \cdot \left(t\_0 \cdot t\_1\right)\right)\right)}{1 + t\_1 \cdot \left(1 + t\_1\right)}\\
      
      \mathbf{else}:\\
      \;\;\;\;e^{x}\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if z < -1.99999999999999997e77

        1. Initial program 100.0%

          \[e^{\left(x + y \cdot \log y\right) - z} \]
        2. Add Preprocessing
        3. Taylor expanded in z around inf

          \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
        4. Step-by-step derivation
          1. mul-1-negN/A

            \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
          2. neg-sub0N/A

            \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
          3. --lowering--.f6493.3%

            \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
        5. Simplified93.3%

          \[\leadsto e^{\color{blue}{0 - z}} \]
        6. Taylor expanded in z around 0

          \[\leadsto \color{blue}{1 + z \cdot \left(\frac{1}{2} \cdot z - 1\right)} \]
        7. Step-by-step derivation
          1. +-lowering-+.f64N/A

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

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(\frac{1}{2} \cdot z - 1\right)}\right)\right) \]
          3. sub-negN/A

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{1}{2} \cdot z + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
          4. metadata-evalN/A

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{1}{2} \cdot z + -1\right)\right)\right) \]
          5. +-commutativeN/A

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

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \color{blue}{\left(\frac{1}{2} \cdot z\right)}\right)\right)\right) \]
          7. *-lowering-*.f6465.3%

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(\frac{1}{2}, \color{blue}{z}\right)\right)\right)\right) \]
        8. Simplified65.3%

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

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{1}{2} \cdot z + \color{blue}{-1}\right)\right)\right) \]
          2. flip3-+N/A

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{{\left(\frac{1}{2} \cdot z\right)}^{3} + {-1}^{3}}{\color{blue}{\left(\frac{1}{2} \cdot z\right) \cdot \left(\frac{1}{2} \cdot z\right) + \left(-1 \cdot -1 - \left(\frac{1}{2} \cdot z\right) \cdot -1\right)}}\right)\right)\right) \]
          3. metadata-evalN/A

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

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{-1 + {\left(\frac{1}{2} \cdot z\right)}^{3}}{\color{blue}{\left(\frac{1}{2} \cdot z\right) \cdot \left(\frac{1}{2} \cdot z\right)} + \left(-1 \cdot -1 - \left(\frac{1}{2} \cdot z\right) \cdot -1\right)}\right)\right)\right) \]
          5. metadata-evalN/A

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{{-1}^{3} + {\left(\frac{1}{2} \cdot z\right)}^{3}}{\color{blue}{\left(\frac{1}{2} \cdot z\right)} \cdot \left(\frac{1}{2} \cdot z\right) + \left(-1 \cdot -1 - \left(\frac{1}{2} \cdot z\right) \cdot -1\right)}\right)\right)\right) \]
          6. clear-numN/A

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

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

            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{/.f64}\left(\left(\left(\frac{1}{2} \cdot z\right) \cdot \left(\frac{1}{2} \cdot z\right) + \left(-1 \cdot -1 - \left(\frac{1}{2} \cdot z\right) \cdot -1\right)\right), \color{blue}{\left({-1}^{3} + {\left(\frac{1}{2} \cdot z\right)}^{3}\right)}\right)\right)\right)\right) \]
        10. Applied egg-rr22.5%

          \[\leadsto 1 + z \cdot \color{blue}{\frac{1}{\frac{0.25 \cdot \left(z \cdot z\right) + \left(1 + z \cdot 0.5\right)}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}}} \]
        11. Taylor expanded in z around 0

          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{/.f64}\left(\color{blue}{1}, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(\frac{1}{8}, \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(z, z\right)\right)\right)\right)\right)\right)\right)\right) \]
        12. Step-by-step derivation
          1. Simplified93.3%

            \[\leadsto 1 + z \cdot \frac{1}{\frac{\color{blue}{1}}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}} \]

          if -1.99999999999999997e77 < z < -2.3000000000000001e46

          1. Initial program 100.0%

            \[e^{\left(x + y \cdot \log y\right) - z} \]
          2. Add Preprocessing
          3. Taylor expanded in z around inf

            \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
          4. Step-by-step derivation
            1. mul-1-negN/A

              \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
            2. neg-sub0N/A

              \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
            3. --lowering--.f64100.0%

              \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
          5. Simplified100.0%

            \[\leadsto e^{\color{blue}{0 - z}} \]
          6. Taylor expanded in z around 0

            \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
          7. Step-by-step derivation
            1. +-lowering-+.f64N/A

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

              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
            3. sub-negN/A

              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
            4. metadata-evalN/A

              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
            5. +-commutativeN/A

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

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

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

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

              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
            10. *-lowering-*.f645.1%

              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
          8. Simplified5.1%

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

              \[\leadsto \mathsf{+.f64}\left(1, \left(\left(-1 + z \cdot \left(\frac{1}{2} + z \cdot \frac{-1}{6}\right)\right) \cdot \color{blue}{z}\right)\right) \]
            2. flip3-+N/A

              \[\leadsto \mathsf{+.f64}\left(1, \left(\frac{{-1}^{3} + {\left(z \cdot \left(\frac{1}{2} + z \cdot \frac{-1}{6}\right)\right)}^{3}}{-1 \cdot -1 + \left(\left(z \cdot \left(\frac{1}{2} + z \cdot \frac{-1}{6}\right)\right) \cdot \left(z \cdot \left(\frac{1}{2} + z \cdot \frac{-1}{6}\right)\right) - -1 \cdot \left(z \cdot \left(\frac{1}{2} + z \cdot \frac{-1}{6}\right)\right)\right)} \cdot z\right)\right) \]
            3. associate-*l/N/A

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

              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{/.f64}\left(\left(\left({-1}^{3} + {\left(z \cdot \left(\frac{1}{2} + z \cdot \frac{-1}{6}\right)\right)}^{3}\right) \cdot z\right), \color{blue}{\left(-1 \cdot -1 + \left(\left(z \cdot \left(\frac{1}{2} + z \cdot \frac{-1}{6}\right)\right) \cdot \left(z \cdot \left(\frac{1}{2} + z \cdot \frac{-1}{6}\right)\right) - -1 \cdot \left(z \cdot \left(\frac{1}{2} + z \cdot \frac{-1}{6}\right)\right)\right)\right)}\right)\right) \]
          10. Applied egg-rr100.0%

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

          if -2.3000000000000001e46 < z

          1. Initial program 100.0%

            \[e^{\left(x + y \cdot \log y\right) - z} \]
          2. Add Preprocessing
          3. Taylor expanded in x around inf

            \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
          4. Step-by-step derivation
            1. Simplified55.6%

              \[\leadsto e^{\color{blue}{x}} \]
          5. Recombined 3 regimes into one program.
          6. Final simplification65.7%

            \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -2 \cdot 10^{+77}:\\ \;\;\;\;1 + z \cdot \frac{1}{\frac{1}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}}\\ \mathbf{elif}\;z \leq -2.3 \cdot 10^{+46}:\\ \;\;\;\;1 + \frac{z \cdot \left(-1 + \left(z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right) \cdot \left(z \cdot \left(\left(0.5 + z \cdot -0.16666666666666666\right) \cdot \left(z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)\right)\right)\right)}{1 + \left(z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right) \cdot \left(1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;e^{x}\\ \end{array} \]
          7. Add Preprocessing

          Alternative 6: 50.9% accurate, 7.7× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq -800:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;x \leq 7.1 \cdot 10^{+99}:\\ \;\;\;\;1 + z \cdot \frac{1}{\frac{1}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)\\ \end{array} \end{array} \]
          (FPCore (x y z)
           :precision binary64
           (if (<= x -800.0)
             (* z (* (* z z) -0.16666666666666666))
             (if (<= x 7.1e+99)
               (+ 1.0 (* z (/ 1.0 (/ 1.0 (+ -1.0 (* 0.125 (* z (* z z))))))))
               (+ 1.0 (* x (+ 1.0 (* x (+ 0.5 (* x 0.16666666666666666)))))))))
          double code(double x, double y, double z) {
          	double tmp;
          	if (x <= -800.0) {
          		tmp = z * ((z * z) * -0.16666666666666666);
          	} else if (x <= 7.1e+99) {
          		tmp = 1.0 + (z * (1.0 / (1.0 / (-1.0 + (0.125 * (z * (z * z)))))));
          	} else {
          		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))));
          	}
          	return tmp;
          }
          
          real(8) function code(x, y, z)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              real(8), intent (in) :: z
              real(8) :: tmp
              if (x <= (-800.0d0)) then
                  tmp = z * ((z * z) * (-0.16666666666666666d0))
              else if (x <= 7.1d+99) then
                  tmp = 1.0d0 + (z * (1.0d0 / (1.0d0 / ((-1.0d0) + (0.125d0 * (z * (z * z)))))))
              else
                  tmp = 1.0d0 + (x * (1.0d0 + (x * (0.5d0 + (x * 0.16666666666666666d0)))))
              end if
              code = tmp
          end function
          
          public static double code(double x, double y, double z) {
          	double tmp;
          	if (x <= -800.0) {
          		tmp = z * ((z * z) * -0.16666666666666666);
          	} else if (x <= 7.1e+99) {
          		tmp = 1.0 + (z * (1.0 / (1.0 / (-1.0 + (0.125 * (z * (z * z)))))));
          	} else {
          		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))));
          	}
          	return tmp;
          }
          
          def code(x, y, z):
          	tmp = 0
          	if x <= -800.0:
          		tmp = z * ((z * z) * -0.16666666666666666)
          	elif x <= 7.1e+99:
          		tmp = 1.0 + (z * (1.0 / (1.0 / (-1.0 + (0.125 * (z * (z * z)))))))
          	else:
          		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))))
          	return tmp
          
          function code(x, y, z)
          	tmp = 0.0
          	if (x <= -800.0)
          		tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666));
          	elseif (x <= 7.1e+99)
          		tmp = Float64(1.0 + Float64(z * Float64(1.0 / Float64(1.0 / Float64(-1.0 + Float64(0.125 * Float64(z * Float64(z * z))))))));
          	else
          		tmp = Float64(1.0 + Float64(x * Float64(1.0 + Float64(x * Float64(0.5 + Float64(x * 0.16666666666666666))))));
          	end
          	return tmp
          end
          
          function tmp_2 = code(x, y, z)
          	tmp = 0.0;
          	if (x <= -800.0)
          		tmp = z * ((z * z) * -0.16666666666666666);
          	elseif (x <= 7.1e+99)
          		tmp = 1.0 + (z * (1.0 / (1.0 / (-1.0 + (0.125 * (z * (z * z)))))));
          	else
          		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))));
          	end
          	tmp_2 = tmp;
          end
          
          code[x_, y_, z_] := If[LessEqual[x, -800.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 7.1e+99], N[(1.0 + N[(z * N[(1.0 / N[(1.0 / N[(-1.0 + N[(0.125 * N[(z * N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(x * N[(1.0 + N[(x * N[(0.5 + N[(x * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          \mathbf{if}\;x \leq -800:\\
          \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
          
          \mathbf{elif}\;x \leq 7.1 \cdot 10^{+99}:\\
          \;\;\;\;1 + z \cdot \frac{1}{\frac{1}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}}\\
          
          \mathbf{else}:\\
          \;\;\;\;1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 3 regimes
          2. if x < -800

            1. Initial program 100.0%

              \[e^{\left(x + y \cdot \log y\right) - z} \]
            2. Add Preprocessing
            3. Taylor expanded in z around inf

              \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
            4. Step-by-step derivation
              1. mul-1-negN/A

                \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
              2. neg-sub0N/A

                \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
              3. --lowering--.f6434.1%

                \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
            5. Simplified34.1%

              \[\leadsto e^{\color{blue}{0 - z}} \]
            6. Taylor expanded in z around 0

              \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
            7. Step-by-step derivation
              1. +-lowering-+.f64N/A

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

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
              3. sub-negN/A

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
              4. metadata-evalN/A

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
              5. +-commutativeN/A

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

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

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

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

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
              10. *-lowering-*.f6415.7%

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
            8. Simplified15.7%

              \[\leadsto \color{blue}{1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)} \]
            9. Step-by-step derivation
              1. flip3-+N/A

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\color{blue}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}\right)\right)\right)\right) \]
              2. clear-numN/A

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}}}\right)\right)\right)\right) \]
              3. un-div-invN/A

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

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}\right)}\right)\right)\right)\right) \]
              5. clear-numN/A

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \left(\frac{1}{\color{blue}{\frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}}\right)\right)\right)\right)\right) \]
              6. flip3-+N/A

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

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

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left(z \cdot \frac{-1}{6}\right)}\right)\right)\right)\right)\right)\right) \]
              9. *-lowering-*.f6415.7%

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right)\right) \]
            10. Applied egg-rr15.7%

              \[\leadsto 1 + z \cdot \left(-1 + \color{blue}{\frac{z}{\frac{1}{0.5 + z \cdot -0.16666666666666666}}}\right) \]
            11. Taylor expanded in z around inf

              \[\leadsto \color{blue}{\frac{-1}{6} \cdot {z}^{3}} \]
            12. Step-by-step derivation
              1. unpow3N/A

                \[\leadsto \frac{-1}{6} \cdot \left(\left(z \cdot z\right) \cdot \color{blue}{z}\right) \]
              2. unpow2N/A

                \[\leadsto \frac{-1}{6} \cdot \left({z}^{2} \cdot z\right) \]
              3. associate-*r*N/A

                \[\leadsto \left(\frac{-1}{6} \cdot {z}^{2}\right) \cdot \color{blue}{z} \]
              4. unpow2N/A

                \[\leadsto \left(\frac{-1}{6} \cdot \left(z \cdot z\right)\right) \cdot z \]
              5. associate-*r*N/A

                \[\leadsto \left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right) \cdot z \]
              6. *-commutativeN/A

                \[\leadsto z \cdot \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)} \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(z, \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)}\right) \]
              8. associate-*r*N/A

                \[\leadsto \mathsf{*.f64}\left(z, \left(\frac{-1}{6} \cdot \color{blue}{\left(z \cdot z\right)}\right)\right) \]
              9. unpow2N/A

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

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

                \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \left(z \cdot \color{blue}{z}\right)\right)\right) \]
              12. *-lowering-*.f6445.5%

                \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(z, \color{blue}{z}\right)\right)\right) \]
            13. Simplified45.5%

              \[\leadsto \color{blue}{z \cdot \left(-0.16666666666666666 \cdot \left(z \cdot z\right)\right)} \]

            if -800 < x < 7.09999999999999994e99

            1. Initial program 100.0%

              \[e^{\left(x + y \cdot \log y\right) - z} \]
            2. Add Preprocessing
            3. Taylor expanded in z around inf

              \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
            4. Step-by-step derivation
              1. mul-1-negN/A

                \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
              2. neg-sub0N/A

                \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
              3. --lowering--.f6473.2%

                \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
            5. Simplified73.2%

              \[\leadsto e^{\color{blue}{0 - z}} \]
            6. Taylor expanded in z around 0

              \[\leadsto \color{blue}{1 + z \cdot \left(\frac{1}{2} \cdot z - 1\right)} \]
            7. Step-by-step derivation
              1. +-lowering-+.f64N/A

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

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(\frac{1}{2} \cdot z - 1\right)}\right)\right) \]
              3. sub-negN/A

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{1}{2} \cdot z + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
              4. metadata-evalN/A

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{1}{2} \cdot z + -1\right)\right)\right) \]
              5. +-commutativeN/A

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

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \color{blue}{\left(\frac{1}{2} \cdot z\right)}\right)\right)\right) \]
              7. *-lowering-*.f6435.7%

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(\frac{1}{2}, \color{blue}{z}\right)\right)\right)\right) \]
            8. Simplified35.7%

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

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{1}{2} \cdot z + \color{blue}{-1}\right)\right)\right) \]
              2. flip3-+N/A

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{{\left(\frac{1}{2} \cdot z\right)}^{3} + {-1}^{3}}{\color{blue}{\left(\frac{1}{2} \cdot z\right) \cdot \left(\frac{1}{2} \cdot z\right) + \left(-1 \cdot -1 - \left(\frac{1}{2} \cdot z\right) \cdot -1\right)}}\right)\right)\right) \]
              3. metadata-evalN/A

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

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{-1 + {\left(\frac{1}{2} \cdot z\right)}^{3}}{\color{blue}{\left(\frac{1}{2} \cdot z\right) \cdot \left(\frac{1}{2} \cdot z\right)} + \left(-1 \cdot -1 - \left(\frac{1}{2} \cdot z\right) \cdot -1\right)}\right)\right)\right) \]
              5. metadata-evalN/A

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{{-1}^{3} + {\left(\frac{1}{2} \cdot z\right)}^{3}}{\color{blue}{\left(\frac{1}{2} \cdot z\right)} \cdot \left(\frac{1}{2} \cdot z\right) + \left(-1 \cdot -1 - \left(\frac{1}{2} \cdot z\right) \cdot -1\right)}\right)\right)\right) \]
              6. clear-numN/A

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

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

                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{/.f64}\left(\left(\left(\frac{1}{2} \cdot z\right) \cdot \left(\frac{1}{2} \cdot z\right) + \left(-1 \cdot -1 - \left(\frac{1}{2} \cdot z\right) \cdot -1\right)\right), \color{blue}{\left({-1}^{3} + {\left(\frac{1}{2} \cdot z\right)}^{3}\right)}\right)\right)\right)\right) \]
            10. Applied egg-rr25.1%

              \[\leadsto 1 + z \cdot \color{blue}{\frac{1}{\frac{0.25 \cdot \left(z \cdot z\right) + \left(1 + z \cdot 0.5\right)}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}}} \]
            11. Taylor expanded in z around 0

              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{/.f64}\left(\color{blue}{1}, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(\frac{1}{8}, \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(z, z\right)\right)\right)\right)\right)\right)\right)\right) \]
            12. Step-by-step derivation
              1. Simplified46.3%

                \[\leadsto 1 + z \cdot \frac{1}{\frac{\color{blue}{1}}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}} \]

              if 7.09999999999999994e99 < x

              1. Initial program 100.0%

                \[e^{\left(x + y \cdot \log y\right) - z} \]
              2. Add Preprocessing
              3. Taylor expanded in x around inf

                \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
              4. Step-by-step derivation
                1. Simplified88.0%

                  \[\leadsto e^{\color{blue}{x}} \]
                2. Taylor expanded in x around 0

                  \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot x\right)\right)} \]
                3. Step-by-step derivation
                  1. +-lowering-+.f64N/A

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

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

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

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

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

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{\frac{1}{6}}\right)\right)\right)\right)\right)\right) \]
                  7. *-lowering-*.f6483.7%

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{6}}\right)\right)\right)\right)\right)\right) \]
                4. Simplified83.7%

                  \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)} \]
              5. Recombined 3 regimes into one program.
              6. Final simplification52.1%

                \[\leadsto \begin{array}{l} \mathbf{if}\;x \leq -800:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;x \leq 7.1 \cdot 10^{+99}:\\ \;\;\;\;1 + z \cdot \frac{1}{\frac{1}{-1 + 0.125 \cdot \left(z \cdot \left(z \cdot z\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)\\ \end{array} \]
              7. Add Preprocessing

              Alternative 7: 47.9% accurate, 9.0× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq -680:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;x \leq 6 \cdot 10^{+99}:\\ \;\;\;\;1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)\\ \end{array} \end{array} \]
              (FPCore (x y z)
               :precision binary64
               (if (<= x -680.0)
                 (* z (* (* z z) -0.16666666666666666))
                 (if (<= x 6e+99)
                   (+ 1.0 (* z (+ -1.0 (* z (+ 0.5 (* z -0.16666666666666666))))))
                   (+ 1.0 (* x (+ 1.0 (* x (+ 0.5 (* x 0.16666666666666666)))))))))
              double code(double x, double y, double z) {
              	double tmp;
              	if (x <= -680.0) {
              		tmp = z * ((z * z) * -0.16666666666666666);
              	} else if (x <= 6e+99) {
              		tmp = 1.0 + (z * (-1.0 + (z * (0.5 + (z * -0.16666666666666666)))));
              	} else {
              		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))));
              	}
              	return tmp;
              }
              
              real(8) function code(x, y, z)
                  real(8), intent (in) :: x
                  real(8), intent (in) :: y
                  real(8), intent (in) :: z
                  real(8) :: tmp
                  if (x <= (-680.0d0)) then
                      tmp = z * ((z * z) * (-0.16666666666666666d0))
                  else if (x <= 6d+99) then
                      tmp = 1.0d0 + (z * ((-1.0d0) + (z * (0.5d0 + (z * (-0.16666666666666666d0))))))
                  else
                      tmp = 1.0d0 + (x * (1.0d0 + (x * (0.5d0 + (x * 0.16666666666666666d0)))))
                  end if
                  code = tmp
              end function
              
              public static double code(double x, double y, double z) {
              	double tmp;
              	if (x <= -680.0) {
              		tmp = z * ((z * z) * -0.16666666666666666);
              	} else if (x <= 6e+99) {
              		tmp = 1.0 + (z * (-1.0 + (z * (0.5 + (z * -0.16666666666666666)))));
              	} else {
              		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))));
              	}
              	return tmp;
              }
              
              def code(x, y, z):
              	tmp = 0
              	if x <= -680.0:
              		tmp = z * ((z * z) * -0.16666666666666666)
              	elif x <= 6e+99:
              		tmp = 1.0 + (z * (-1.0 + (z * (0.5 + (z * -0.16666666666666666)))))
              	else:
              		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))))
              	return tmp
              
              function code(x, y, z)
              	tmp = 0.0
              	if (x <= -680.0)
              		tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666));
              	elseif (x <= 6e+99)
              		tmp = Float64(1.0 + Float64(z * Float64(-1.0 + Float64(z * Float64(0.5 + Float64(z * -0.16666666666666666))))));
              	else
              		tmp = Float64(1.0 + Float64(x * Float64(1.0 + Float64(x * Float64(0.5 + Float64(x * 0.16666666666666666))))));
              	end
              	return tmp
              end
              
              function tmp_2 = code(x, y, z)
              	tmp = 0.0;
              	if (x <= -680.0)
              		tmp = z * ((z * z) * -0.16666666666666666);
              	elseif (x <= 6e+99)
              		tmp = 1.0 + (z * (-1.0 + (z * (0.5 + (z * -0.16666666666666666)))));
              	else
              		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))));
              	end
              	tmp_2 = tmp;
              end
              
              code[x_, y_, z_] := If[LessEqual[x, -680.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 6e+99], N[(1.0 + N[(z * N[(-1.0 + N[(z * N[(0.5 + N[(z * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(x * N[(1.0 + N[(x * N[(0.5 + N[(x * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              \mathbf{if}\;x \leq -680:\\
              \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
              
              \mathbf{elif}\;x \leq 6 \cdot 10^{+99}:\\
              \;\;\;\;1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)\\
              
              \mathbf{else}:\\
              \;\;\;\;1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 3 regimes
              2. if x < -680

                1. Initial program 100.0%

                  \[e^{\left(x + y \cdot \log y\right) - z} \]
                2. Add Preprocessing
                3. Taylor expanded in z around inf

                  \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                4. Step-by-step derivation
                  1. mul-1-negN/A

                    \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                  2. neg-sub0N/A

                    \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                  3. --lowering--.f6434.1%

                    \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                5. Simplified34.1%

                  \[\leadsto e^{\color{blue}{0 - z}} \]
                6. Taylor expanded in z around 0

                  \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                7. Step-by-step derivation
                  1. +-lowering-+.f64N/A

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

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                  3. sub-negN/A

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                  4. metadata-evalN/A

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                  5. +-commutativeN/A

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

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

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

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

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                  10. *-lowering-*.f6415.7%

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                8. Simplified15.7%

                  \[\leadsto \color{blue}{1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)} \]
                9. Step-by-step derivation
                  1. flip3-+N/A

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\color{blue}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}\right)\right)\right)\right) \]
                  2. clear-numN/A

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}}}\right)\right)\right)\right) \]
                  3. un-div-invN/A

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

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}\right)}\right)\right)\right)\right) \]
                  5. clear-numN/A

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \left(\frac{1}{\color{blue}{\frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}}\right)\right)\right)\right)\right) \]
                  6. flip3-+N/A

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

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

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left(z \cdot \frac{-1}{6}\right)}\right)\right)\right)\right)\right)\right) \]
                  9. *-lowering-*.f6415.7%

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right)\right) \]
                10. Applied egg-rr15.7%

                  \[\leadsto 1 + z \cdot \left(-1 + \color{blue}{\frac{z}{\frac{1}{0.5 + z \cdot -0.16666666666666666}}}\right) \]
                11. Taylor expanded in z around inf

                  \[\leadsto \color{blue}{\frac{-1}{6} \cdot {z}^{3}} \]
                12. Step-by-step derivation
                  1. unpow3N/A

                    \[\leadsto \frac{-1}{6} \cdot \left(\left(z \cdot z\right) \cdot \color{blue}{z}\right) \]
                  2. unpow2N/A

                    \[\leadsto \frac{-1}{6} \cdot \left({z}^{2} \cdot z\right) \]
                  3. associate-*r*N/A

                    \[\leadsto \left(\frac{-1}{6} \cdot {z}^{2}\right) \cdot \color{blue}{z} \]
                  4. unpow2N/A

                    \[\leadsto \left(\frac{-1}{6} \cdot \left(z \cdot z\right)\right) \cdot z \]
                  5. associate-*r*N/A

                    \[\leadsto \left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right) \cdot z \]
                  6. *-commutativeN/A

                    \[\leadsto z \cdot \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)} \]
                  7. *-lowering-*.f64N/A

                    \[\leadsto \mathsf{*.f64}\left(z, \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)}\right) \]
                  8. associate-*r*N/A

                    \[\leadsto \mathsf{*.f64}\left(z, \left(\frac{-1}{6} \cdot \color{blue}{\left(z \cdot z\right)}\right)\right) \]
                  9. unpow2N/A

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

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

                    \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \left(z \cdot \color{blue}{z}\right)\right)\right) \]
                  12. *-lowering-*.f6445.5%

                    \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(z, \color{blue}{z}\right)\right)\right) \]
                13. Simplified45.5%

                  \[\leadsto \color{blue}{z \cdot \left(-0.16666666666666666 \cdot \left(z \cdot z\right)\right)} \]

                if -680 < x < 6.00000000000000029e99

                1. Initial program 100.0%

                  \[e^{\left(x + y \cdot \log y\right) - z} \]
                2. Add Preprocessing
                3. Taylor expanded in z around inf

                  \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                4. Step-by-step derivation
                  1. mul-1-negN/A

                    \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                  2. neg-sub0N/A

                    \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                  3. --lowering--.f6473.2%

                    \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                5. Simplified73.2%

                  \[\leadsto e^{\color{blue}{0 - z}} \]
                6. Taylor expanded in z around 0

                  \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                7. Step-by-step derivation
                  1. +-lowering-+.f64N/A

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

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                  3. sub-negN/A

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                  4. metadata-evalN/A

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                  5. +-commutativeN/A

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

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

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

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

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                  10. *-lowering-*.f6442.1%

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                8. Simplified42.1%

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

                if 6.00000000000000029e99 < x

                1. Initial program 100.0%

                  \[e^{\left(x + y \cdot \log y\right) - z} \]
                2. Add Preprocessing
                3. Taylor expanded in x around inf

                  \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                4. Step-by-step derivation
                  1. Simplified88.0%

                    \[\leadsto e^{\color{blue}{x}} \]
                  2. Taylor expanded in x around 0

                    \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot x\right)\right)} \]
                  3. Step-by-step derivation
                    1. +-lowering-+.f64N/A

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

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

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

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

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

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{\frac{1}{6}}\right)\right)\right)\right)\right)\right) \]
                    7. *-lowering-*.f6483.7%

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{6}}\right)\right)\right)\right)\right)\right) \]
                  4. Simplified83.7%

                    \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)} \]
                5. Recombined 3 regimes into one program.
                6. Final simplification49.6%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;x \leq -680:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;x \leq 6 \cdot 10^{+99}:\\ \;\;\;\;1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)\\ \end{array} \]
                7. Add Preprocessing

                Alternative 8: 47.8% accurate, 9.0× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq -480:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;x \leq 7.1 \cdot 10^{+99}:\\ \;\;\;\;1 + z \cdot \left(-1 + \frac{z}{\frac{-6}{z}}\right)\\ \mathbf{else}:\\ \;\;\;\;1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)\\ \end{array} \end{array} \]
                (FPCore (x y z)
                 :precision binary64
                 (if (<= x -480.0)
                   (* z (* (* z z) -0.16666666666666666))
                   (if (<= x 7.1e+99)
                     (+ 1.0 (* z (+ -1.0 (/ z (/ -6.0 z)))))
                     (+ 1.0 (* x (+ 1.0 (* x (+ 0.5 (* x 0.16666666666666666)))))))))
                double code(double x, double y, double z) {
                	double tmp;
                	if (x <= -480.0) {
                		tmp = z * ((z * z) * -0.16666666666666666);
                	} else if (x <= 7.1e+99) {
                		tmp = 1.0 + (z * (-1.0 + (z / (-6.0 / z))));
                	} else {
                		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))));
                	}
                	return tmp;
                }
                
                real(8) function code(x, y, z)
                    real(8), intent (in) :: x
                    real(8), intent (in) :: y
                    real(8), intent (in) :: z
                    real(8) :: tmp
                    if (x <= (-480.0d0)) then
                        tmp = z * ((z * z) * (-0.16666666666666666d0))
                    else if (x <= 7.1d+99) then
                        tmp = 1.0d0 + (z * ((-1.0d0) + (z / ((-6.0d0) / z))))
                    else
                        tmp = 1.0d0 + (x * (1.0d0 + (x * (0.5d0 + (x * 0.16666666666666666d0)))))
                    end if
                    code = tmp
                end function
                
                public static double code(double x, double y, double z) {
                	double tmp;
                	if (x <= -480.0) {
                		tmp = z * ((z * z) * -0.16666666666666666);
                	} else if (x <= 7.1e+99) {
                		tmp = 1.0 + (z * (-1.0 + (z / (-6.0 / z))));
                	} else {
                		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))));
                	}
                	return tmp;
                }
                
                def code(x, y, z):
                	tmp = 0
                	if x <= -480.0:
                		tmp = z * ((z * z) * -0.16666666666666666)
                	elif x <= 7.1e+99:
                		tmp = 1.0 + (z * (-1.0 + (z / (-6.0 / z))))
                	else:
                		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))))
                	return tmp
                
                function code(x, y, z)
                	tmp = 0.0
                	if (x <= -480.0)
                		tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666));
                	elseif (x <= 7.1e+99)
                		tmp = Float64(1.0 + Float64(z * Float64(-1.0 + Float64(z / Float64(-6.0 / z)))));
                	else
                		tmp = Float64(1.0 + Float64(x * Float64(1.0 + Float64(x * Float64(0.5 + Float64(x * 0.16666666666666666))))));
                	end
                	return tmp
                end
                
                function tmp_2 = code(x, y, z)
                	tmp = 0.0;
                	if (x <= -480.0)
                		tmp = z * ((z * z) * -0.16666666666666666);
                	elseif (x <= 7.1e+99)
                		tmp = 1.0 + (z * (-1.0 + (z / (-6.0 / z))));
                	else
                		tmp = 1.0 + (x * (1.0 + (x * (0.5 + (x * 0.16666666666666666)))));
                	end
                	tmp_2 = tmp;
                end
                
                code[x_, y_, z_] := If[LessEqual[x, -480.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 7.1e+99], N[(1.0 + N[(z * N[(-1.0 + N[(z / N[(-6.0 / z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 + N[(x * N[(1.0 + N[(x * N[(0.5 + N[(x * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                \mathbf{if}\;x \leq -480:\\
                \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
                
                \mathbf{elif}\;x \leq 7.1 \cdot 10^{+99}:\\
                \;\;\;\;1 + z \cdot \left(-1 + \frac{z}{\frac{-6}{z}}\right)\\
                
                \mathbf{else}:\\
                \;\;\;\;1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 3 regimes
                2. if x < -480

                  1. Initial program 100.0%

                    \[e^{\left(x + y \cdot \log y\right) - z} \]
                  2. Add Preprocessing
                  3. Taylor expanded in z around inf

                    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                  4. Step-by-step derivation
                    1. mul-1-negN/A

                      \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                    2. neg-sub0N/A

                      \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                    3. --lowering--.f6434.1%

                      \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                  5. Simplified34.1%

                    \[\leadsto e^{\color{blue}{0 - z}} \]
                  6. Taylor expanded in z around 0

                    \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                  7. Step-by-step derivation
                    1. +-lowering-+.f64N/A

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

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                    3. sub-negN/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                    4. metadata-evalN/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                    5. +-commutativeN/A

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

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

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

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

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                    10. *-lowering-*.f6415.7%

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                  8. Simplified15.7%

                    \[\leadsto \color{blue}{1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)} \]
                  9. Step-by-step derivation
                    1. flip3-+N/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\color{blue}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}\right)\right)\right)\right) \]
                    2. clear-numN/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}}}\right)\right)\right)\right) \]
                    3. un-div-invN/A

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

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}\right)}\right)\right)\right)\right) \]
                    5. clear-numN/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \left(\frac{1}{\color{blue}{\frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}}\right)\right)\right)\right)\right) \]
                    6. flip3-+N/A

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

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

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left(z \cdot \frac{-1}{6}\right)}\right)\right)\right)\right)\right)\right) \]
                    9. *-lowering-*.f6415.7%

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right)\right) \]
                  10. Applied egg-rr15.7%

                    \[\leadsto 1 + z \cdot \left(-1 + \color{blue}{\frac{z}{\frac{1}{0.5 + z \cdot -0.16666666666666666}}}\right) \]
                  11. Taylor expanded in z around inf

                    \[\leadsto \color{blue}{\frac{-1}{6} \cdot {z}^{3}} \]
                  12. Step-by-step derivation
                    1. unpow3N/A

                      \[\leadsto \frac{-1}{6} \cdot \left(\left(z \cdot z\right) \cdot \color{blue}{z}\right) \]
                    2. unpow2N/A

                      \[\leadsto \frac{-1}{6} \cdot \left({z}^{2} \cdot z\right) \]
                    3. associate-*r*N/A

                      \[\leadsto \left(\frac{-1}{6} \cdot {z}^{2}\right) \cdot \color{blue}{z} \]
                    4. unpow2N/A

                      \[\leadsto \left(\frac{-1}{6} \cdot \left(z \cdot z\right)\right) \cdot z \]
                    5. associate-*r*N/A

                      \[\leadsto \left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right) \cdot z \]
                    6. *-commutativeN/A

                      \[\leadsto z \cdot \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)} \]
                    7. *-lowering-*.f64N/A

                      \[\leadsto \mathsf{*.f64}\left(z, \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)}\right) \]
                    8. associate-*r*N/A

                      \[\leadsto \mathsf{*.f64}\left(z, \left(\frac{-1}{6} \cdot \color{blue}{\left(z \cdot z\right)}\right)\right) \]
                    9. unpow2N/A

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

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

                      \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \left(z \cdot \color{blue}{z}\right)\right)\right) \]
                    12. *-lowering-*.f6445.5%

                      \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(z, \color{blue}{z}\right)\right)\right) \]
                  13. Simplified45.5%

                    \[\leadsto \color{blue}{z \cdot \left(-0.16666666666666666 \cdot \left(z \cdot z\right)\right)} \]

                  if -480 < x < 7.09999999999999994e99

                  1. Initial program 100.0%

                    \[e^{\left(x + y \cdot \log y\right) - z} \]
                  2. Add Preprocessing
                  3. Taylor expanded in z around inf

                    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                  4. Step-by-step derivation
                    1. mul-1-negN/A

                      \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                    2. neg-sub0N/A

                      \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                    3. --lowering--.f6473.2%

                      \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                  5. Simplified73.2%

                    \[\leadsto e^{\color{blue}{0 - z}} \]
                  6. Taylor expanded in z around 0

                    \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                  7. Step-by-step derivation
                    1. +-lowering-+.f64N/A

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

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                    3. sub-negN/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                    4. metadata-evalN/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                    5. +-commutativeN/A

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

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

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

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

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                    10. *-lowering-*.f6442.1%

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                  8. Simplified42.1%

                    \[\leadsto \color{blue}{1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)} \]
                  9. Step-by-step derivation
                    1. flip3-+N/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\color{blue}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}\right)\right)\right)\right) \]
                    2. clear-numN/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}}}\right)\right)\right)\right) \]
                    3. un-div-invN/A

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

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}\right)}\right)\right)\right)\right) \]
                    5. clear-numN/A

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \left(\frac{1}{\color{blue}{\frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}}\right)\right)\right)\right)\right) \]
                    6. flip3-+N/A

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

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

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left(z \cdot \frac{-1}{6}\right)}\right)\right)\right)\right)\right)\right) \]
                    9. *-lowering-*.f6442.1%

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right)\right) \]
                  10. Applied egg-rr42.1%

                    \[\leadsto 1 + z \cdot \left(-1 + \color{blue}{\frac{z}{\frac{1}{0.5 + z \cdot -0.16666666666666666}}}\right) \]
                  11. Taylor expanded in z around inf

                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{-6}{z}\right)}\right)\right)\right)\right) \]
                  12. Step-by-step derivation
                    1. /-lowering-/.f6441.9%

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(-6, \color{blue}{z}\right)\right)\right)\right)\right) \]
                  13. Simplified41.9%

                    \[\leadsto 1 + z \cdot \left(-1 + \frac{z}{\color{blue}{\frac{-6}{z}}}\right) \]

                  if 7.09999999999999994e99 < x

                  1. Initial program 100.0%

                    \[e^{\left(x + y \cdot \log y\right) - z} \]
                  2. Add Preprocessing
                  3. Taylor expanded in x around inf

                    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                  4. Step-by-step derivation
                    1. Simplified88.0%

                      \[\leadsto e^{\color{blue}{x}} \]
                    2. Taylor expanded in x around 0

                      \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot \left(\frac{1}{2} + \frac{1}{6} \cdot x\right)\right)} \]
                    3. Step-by-step derivation
                      1. +-lowering-+.f64N/A

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

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

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

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

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

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{\frac{1}{6}}\right)\right)\right)\right)\right)\right) \]
                      7. *-lowering-*.f6483.7%

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{6}}\right)\right)\right)\right)\right)\right) \]
                    4. Simplified83.7%

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

                    \[\leadsto \begin{array}{l} \mathbf{if}\;x \leq -480:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;x \leq 7.1 \cdot 10^{+99}:\\ \;\;\;\;1 + z \cdot \left(-1 + \frac{z}{\frac{-6}{z}}\right)\\ \mathbf{else}:\\ \;\;\;\;1 + x \cdot \left(1 + x \cdot \left(0.5 + x \cdot 0.16666666666666666\right)\right)\\ \end{array} \]
                  7. Add Preprocessing

                  Alternative 9: 45.1% accurate, 9.8× speedup?

                  \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq -420:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;x \leq 1.32 \cdot 10^{+154}:\\ \;\;\;\;1 + z \cdot \left(-1 + \frac{z}{\frac{-6}{z}}\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \end{array} \]
                  (FPCore (x y z)
                   :precision binary64
                   (if (<= x -420.0)
                     (* z (* (* z z) -0.16666666666666666))
                     (if (<= x 1.32e+154)
                       (+ 1.0 (* z (+ -1.0 (/ z (/ -6.0 z)))))
                       (* 0.5 (* x x)))))
                  double code(double x, double y, double z) {
                  	double tmp;
                  	if (x <= -420.0) {
                  		tmp = z * ((z * z) * -0.16666666666666666);
                  	} else if (x <= 1.32e+154) {
                  		tmp = 1.0 + (z * (-1.0 + (z / (-6.0 / z))));
                  	} else {
                  		tmp = 0.5 * (x * x);
                  	}
                  	return tmp;
                  }
                  
                  real(8) function code(x, y, z)
                      real(8), intent (in) :: x
                      real(8), intent (in) :: y
                      real(8), intent (in) :: z
                      real(8) :: tmp
                      if (x <= (-420.0d0)) then
                          tmp = z * ((z * z) * (-0.16666666666666666d0))
                      else if (x <= 1.32d+154) then
                          tmp = 1.0d0 + (z * ((-1.0d0) + (z / ((-6.0d0) / z))))
                      else
                          tmp = 0.5d0 * (x * x)
                      end if
                      code = tmp
                  end function
                  
                  public static double code(double x, double y, double z) {
                  	double tmp;
                  	if (x <= -420.0) {
                  		tmp = z * ((z * z) * -0.16666666666666666);
                  	} else if (x <= 1.32e+154) {
                  		tmp = 1.0 + (z * (-1.0 + (z / (-6.0 / z))));
                  	} else {
                  		tmp = 0.5 * (x * x);
                  	}
                  	return tmp;
                  }
                  
                  def code(x, y, z):
                  	tmp = 0
                  	if x <= -420.0:
                  		tmp = z * ((z * z) * -0.16666666666666666)
                  	elif x <= 1.32e+154:
                  		tmp = 1.0 + (z * (-1.0 + (z / (-6.0 / z))))
                  	else:
                  		tmp = 0.5 * (x * x)
                  	return tmp
                  
                  function code(x, y, z)
                  	tmp = 0.0
                  	if (x <= -420.0)
                  		tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666));
                  	elseif (x <= 1.32e+154)
                  		tmp = Float64(1.0 + Float64(z * Float64(-1.0 + Float64(z / Float64(-6.0 / z)))));
                  	else
                  		tmp = Float64(0.5 * Float64(x * x));
                  	end
                  	return tmp
                  end
                  
                  function tmp_2 = code(x, y, z)
                  	tmp = 0.0;
                  	if (x <= -420.0)
                  		tmp = z * ((z * z) * -0.16666666666666666);
                  	elseif (x <= 1.32e+154)
                  		tmp = 1.0 + (z * (-1.0 + (z / (-6.0 / z))));
                  	else
                  		tmp = 0.5 * (x * x);
                  	end
                  	tmp_2 = tmp;
                  end
                  
                  code[x_, y_, z_] := If[LessEqual[x, -420.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 1.32e+154], N[(1.0 + N[(z * N[(-1.0 + N[(z / N[(-6.0 / z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(x * x), $MachinePrecision]), $MachinePrecision]]]
                  
                  \begin{array}{l}
                  
                  \\
                  \begin{array}{l}
                  \mathbf{if}\;x \leq -420:\\
                  \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
                  
                  \mathbf{elif}\;x \leq 1.32 \cdot 10^{+154}:\\
                  \;\;\;\;1 + z \cdot \left(-1 + \frac{z}{\frac{-6}{z}}\right)\\
                  
                  \mathbf{else}:\\
                  \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\
                  
                  
                  \end{array}
                  \end{array}
                  
                  Derivation
                  1. Split input into 3 regimes
                  2. if x < -420

                    1. Initial program 100.0%

                      \[e^{\left(x + y \cdot \log y\right) - z} \]
                    2. Add Preprocessing
                    3. Taylor expanded in z around inf

                      \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                    4. Step-by-step derivation
                      1. mul-1-negN/A

                        \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                      2. neg-sub0N/A

                        \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                      3. --lowering--.f6434.1%

                        \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                    5. Simplified34.1%

                      \[\leadsto e^{\color{blue}{0 - z}} \]
                    6. Taylor expanded in z around 0

                      \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                    7. Step-by-step derivation
                      1. +-lowering-+.f64N/A

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

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                      3. sub-negN/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                      4. metadata-evalN/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                      5. +-commutativeN/A

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

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

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

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

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                      10. *-lowering-*.f6415.7%

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                    8. Simplified15.7%

                      \[\leadsto \color{blue}{1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)} \]
                    9. Step-by-step derivation
                      1. flip3-+N/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\color{blue}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}\right)\right)\right)\right) \]
                      2. clear-numN/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}}}\right)\right)\right)\right) \]
                      3. un-div-invN/A

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

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}\right)}\right)\right)\right)\right) \]
                      5. clear-numN/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \left(\frac{1}{\color{blue}{\frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}}\right)\right)\right)\right)\right) \]
                      6. flip3-+N/A

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

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

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left(z \cdot \frac{-1}{6}\right)}\right)\right)\right)\right)\right)\right) \]
                      9. *-lowering-*.f6415.7%

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right)\right) \]
                    10. Applied egg-rr15.7%

                      \[\leadsto 1 + z \cdot \left(-1 + \color{blue}{\frac{z}{\frac{1}{0.5 + z \cdot -0.16666666666666666}}}\right) \]
                    11. Taylor expanded in z around inf

                      \[\leadsto \color{blue}{\frac{-1}{6} \cdot {z}^{3}} \]
                    12. Step-by-step derivation
                      1. unpow3N/A

                        \[\leadsto \frac{-1}{6} \cdot \left(\left(z \cdot z\right) \cdot \color{blue}{z}\right) \]
                      2. unpow2N/A

                        \[\leadsto \frac{-1}{6} \cdot \left({z}^{2} \cdot z\right) \]
                      3. associate-*r*N/A

                        \[\leadsto \left(\frac{-1}{6} \cdot {z}^{2}\right) \cdot \color{blue}{z} \]
                      4. unpow2N/A

                        \[\leadsto \left(\frac{-1}{6} \cdot \left(z \cdot z\right)\right) \cdot z \]
                      5. associate-*r*N/A

                        \[\leadsto \left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right) \cdot z \]
                      6. *-commutativeN/A

                        \[\leadsto z \cdot \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)} \]
                      7. *-lowering-*.f64N/A

                        \[\leadsto \mathsf{*.f64}\left(z, \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)}\right) \]
                      8. associate-*r*N/A

                        \[\leadsto \mathsf{*.f64}\left(z, \left(\frac{-1}{6} \cdot \color{blue}{\left(z \cdot z\right)}\right)\right) \]
                      9. unpow2N/A

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

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

                        \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \left(z \cdot \color{blue}{z}\right)\right)\right) \]
                      12. *-lowering-*.f6445.5%

                        \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(z, \color{blue}{z}\right)\right)\right) \]
                    13. Simplified45.5%

                      \[\leadsto \color{blue}{z \cdot \left(-0.16666666666666666 \cdot \left(z \cdot z\right)\right)} \]

                    if -420 < x < 1.31999999999999998e154

                    1. Initial program 100.0%

                      \[e^{\left(x + y \cdot \log y\right) - z} \]
                    2. Add Preprocessing
                    3. Taylor expanded in z around inf

                      \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                    4. Step-by-step derivation
                      1. mul-1-negN/A

                        \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                      2. neg-sub0N/A

                        \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                      3. --lowering--.f6469.9%

                        \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                    5. Simplified69.9%

                      \[\leadsto e^{\color{blue}{0 - z}} \]
                    6. Taylor expanded in z around 0

                      \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                    7. Step-by-step derivation
                      1. +-lowering-+.f64N/A

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

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                      3. sub-negN/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                      4. metadata-evalN/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                      5. +-commutativeN/A

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

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

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

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

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                      10. *-lowering-*.f6439.7%

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                    8. Simplified39.7%

                      \[\leadsto \color{blue}{1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)} \]
                    9. Step-by-step derivation
                      1. flip3-+N/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\color{blue}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}\right)\right)\right)\right) \]
                      2. clear-numN/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}}}\right)\right)\right)\right) \]
                      3. un-div-invN/A

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

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}\right)}\right)\right)\right)\right) \]
                      5. clear-numN/A

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \left(\frac{1}{\color{blue}{\frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}}\right)\right)\right)\right)\right) \]
                      6. flip3-+N/A

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

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

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left(z \cdot \frac{-1}{6}\right)}\right)\right)\right)\right)\right)\right) \]
                      9. *-lowering-*.f6439.7%

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right)\right) \]
                    10. Applied egg-rr39.7%

                      \[\leadsto 1 + z \cdot \left(-1 + \color{blue}{\frac{z}{\frac{1}{0.5 + z \cdot -0.16666666666666666}}}\right) \]
                    11. Taylor expanded in z around inf

                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{-6}{z}\right)}\right)\right)\right)\right) \]
                    12. Step-by-step derivation
                      1. /-lowering-/.f6439.5%

                        \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(-6, \color{blue}{z}\right)\right)\right)\right)\right) \]
                    13. Simplified39.5%

                      \[\leadsto 1 + z \cdot \left(-1 + \frac{z}{\color{blue}{\frac{-6}{z}}}\right) \]

                    if 1.31999999999999998e154 < x

                    1. Initial program 100.0%

                      \[e^{\left(x + y \cdot \log y\right) - z} \]
                    2. Add Preprocessing
                    3. Taylor expanded in x around inf

                      \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                    4. Step-by-step derivation
                      1. Simplified91.4%

                        \[\leadsto e^{\color{blue}{x}} \]
                      2. Taylor expanded in x around 0

                        \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                      3. Step-by-step derivation
                        1. +-lowering-+.f64N/A

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

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

                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                        4. *-commutativeN/A

                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                        5. *-lowering-*.f6491.4%

                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                      4. Simplified91.4%

                        \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]
                      5. Taylor expanded in x around inf

                        \[\leadsto \color{blue}{\frac{1}{2} \cdot {x}^{2}} \]
                      6. Step-by-step derivation
                        1. *-lowering-*.f64N/A

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

                          \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{x}\right)\right) \]
                        3. *-lowering-*.f6491.4%

                          \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{x}\right)\right) \]
                      7. Simplified91.4%

                        \[\leadsto \color{blue}{0.5 \cdot \left(x \cdot x\right)} \]
                    5. Recombined 3 regimes into one program.
                    6. Final simplification45.6%

                      \[\leadsto \begin{array}{l} \mathbf{if}\;x \leq -420:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;x \leq 1.32 \cdot 10^{+154}:\\ \;\;\;\;1 + z \cdot \left(-1 + \frac{z}{\frac{-6}{z}}\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \]
                    7. Add Preprocessing

                    Alternative 10: 44.1% accurate, 10.9× speedup?

                    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;z \leq -10500:\\ \;\;\;\;\left(z \cdot z\right) \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;z \leq 2.2 \cdot 10^{-7}:\\ \;\;\;\;1 + x \cdot \left(1 + x \cdot 0.5\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \end{array} \]
                    (FPCore (x y z)
                     :precision binary64
                     (if (<= z -10500.0)
                       (* (* z z) (+ 0.5 (* z -0.16666666666666666)))
                       (if (<= z 2.2e-7) (+ 1.0 (* x (+ 1.0 (* x 0.5)))) (* 0.5 (* x x)))))
                    double code(double x, double y, double z) {
                    	double tmp;
                    	if (z <= -10500.0) {
                    		tmp = (z * z) * (0.5 + (z * -0.16666666666666666));
                    	} else if (z <= 2.2e-7) {
                    		tmp = 1.0 + (x * (1.0 + (x * 0.5)));
                    	} else {
                    		tmp = 0.5 * (x * x);
                    	}
                    	return tmp;
                    }
                    
                    real(8) function code(x, y, z)
                        real(8), intent (in) :: x
                        real(8), intent (in) :: y
                        real(8), intent (in) :: z
                        real(8) :: tmp
                        if (z <= (-10500.0d0)) then
                            tmp = (z * z) * (0.5d0 + (z * (-0.16666666666666666d0)))
                        else if (z <= 2.2d-7) then
                            tmp = 1.0d0 + (x * (1.0d0 + (x * 0.5d0)))
                        else
                            tmp = 0.5d0 * (x * x)
                        end if
                        code = tmp
                    end function
                    
                    public static double code(double x, double y, double z) {
                    	double tmp;
                    	if (z <= -10500.0) {
                    		tmp = (z * z) * (0.5 + (z * -0.16666666666666666));
                    	} else if (z <= 2.2e-7) {
                    		tmp = 1.0 + (x * (1.0 + (x * 0.5)));
                    	} else {
                    		tmp = 0.5 * (x * x);
                    	}
                    	return tmp;
                    }
                    
                    def code(x, y, z):
                    	tmp = 0
                    	if z <= -10500.0:
                    		tmp = (z * z) * (0.5 + (z * -0.16666666666666666))
                    	elif z <= 2.2e-7:
                    		tmp = 1.0 + (x * (1.0 + (x * 0.5)))
                    	else:
                    		tmp = 0.5 * (x * x)
                    	return tmp
                    
                    function code(x, y, z)
                    	tmp = 0.0
                    	if (z <= -10500.0)
                    		tmp = Float64(Float64(z * z) * Float64(0.5 + Float64(z * -0.16666666666666666)));
                    	elseif (z <= 2.2e-7)
                    		tmp = Float64(1.0 + Float64(x * Float64(1.0 + Float64(x * 0.5))));
                    	else
                    		tmp = Float64(0.5 * Float64(x * x));
                    	end
                    	return tmp
                    end
                    
                    function tmp_2 = code(x, y, z)
                    	tmp = 0.0;
                    	if (z <= -10500.0)
                    		tmp = (z * z) * (0.5 + (z * -0.16666666666666666));
                    	elseif (z <= 2.2e-7)
                    		tmp = 1.0 + (x * (1.0 + (x * 0.5)));
                    	else
                    		tmp = 0.5 * (x * x);
                    	end
                    	tmp_2 = tmp;
                    end
                    
                    code[x_, y_, z_] := If[LessEqual[z, -10500.0], N[(N[(z * z), $MachinePrecision] * N[(0.5 + N[(z * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 2.2e-7], N[(1.0 + N[(x * N[(1.0 + N[(x * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(x * x), $MachinePrecision]), $MachinePrecision]]]
                    
                    \begin{array}{l}
                    
                    \\
                    \begin{array}{l}
                    \mathbf{if}\;z \leq -10500:\\
                    \;\;\;\;\left(z \cdot z\right) \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\\
                    
                    \mathbf{elif}\;z \leq 2.2 \cdot 10^{-7}:\\
                    \;\;\;\;1 + x \cdot \left(1 + x \cdot 0.5\right)\\
                    
                    \mathbf{else}:\\
                    \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\
                    
                    
                    \end{array}
                    \end{array}
                    
                    Derivation
                    1. Split input into 3 regimes
                    2. if z < -10500

                      1. Initial program 100.0%

                        \[e^{\left(x + y \cdot \log y\right) - z} \]
                      2. Add Preprocessing
                      3. Taylor expanded in z around inf

                        \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                      4. Step-by-step derivation
                        1. mul-1-negN/A

                          \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                        2. neg-sub0N/A

                          \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                        3. --lowering--.f6493.4%

                          \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                      5. Simplified93.4%

                        \[\leadsto e^{\color{blue}{0 - z}} \]
                      6. Taylor expanded in z around 0

                        \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                      7. Step-by-step derivation
                        1. +-lowering-+.f64N/A

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

                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                        3. sub-negN/A

                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                        4. metadata-evalN/A

                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                        5. +-commutativeN/A

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

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

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

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

                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                        10. *-lowering-*.f6469.5%

                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                      8. Simplified69.5%

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

                        \[\leadsto \color{blue}{{z}^{3} \cdot \left(\frac{1}{2} \cdot \frac{1}{z} - \frac{1}{6}\right)} \]
                      10. Step-by-step derivation
                        1. sub-negN/A

                          \[\leadsto {z}^{3} \cdot \left(\frac{1}{2} \cdot \frac{1}{z} + \color{blue}{\left(\mathsf{neg}\left(\frac{1}{6}\right)\right)}\right) \]
                        2. metadata-evalN/A

                          \[\leadsto {z}^{3} \cdot \left(\frac{1}{2} \cdot \frac{1}{z} + \frac{-1}{6}\right) \]
                        3. distribute-rgt-inN/A

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

                          \[\leadsto \left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot \left(\left(z \cdot z\right) \cdot z\right) + \frac{-1}{6} \cdot {z}^{3} \]
                        5. unpow2N/A

                          \[\leadsto \left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot \left({z}^{2} \cdot z\right) + \frac{-1}{6} \cdot {z}^{3} \]
                        6. associate-*r*N/A

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

                          \[\leadsto \left(\left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot {z}^{2}\right) \cdot z + \left(\mathsf{neg}\left(\frac{1}{6}\right)\right) \cdot {\color{blue}{z}}^{3} \]
                        8. distribute-lft-neg-inN/A

                          \[\leadsto \left(\left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot {z}^{2}\right) \cdot z + \left(\mathsf{neg}\left(\frac{1}{6} \cdot {z}^{3}\right)\right) \]
                        9. *-commutativeN/A

                          \[\leadsto \left(\left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot {z}^{2}\right) \cdot z + \left(\mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        10. fma-defineN/A

                          \[\leadsto \mathsf{fma}\left(\left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot {z}^{2}, \color{blue}{z}, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        11. associate-*l*N/A

                          \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(\frac{1}{z} \cdot {z}^{2}\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        12. associate-*l/N/A

                          \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \frac{1 \cdot {z}^{2}}{z}, z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        13. *-lft-identityN/A

                          \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \frac{{z}^{2}}{z}, z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        14. unpow2N/A

                          \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \frac{z \cdot z}{z}, z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        15. associate-/l*N/A

                          \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(z \cdot \frac{z}{z}\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        16. *-rgt-identityN/A

                          \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(z \cdot \frac{z \cdot 1}{z}\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        17. associate-*r/N/A

                          \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(z \cdot \left(z \cdot \frac{1}{z}\right)\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        18. rgt-mult-inverseN/A

                          \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(z \cdot 1\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        19. *-rgt-identityN/A

                          \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot z, z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                        20. fma-defineN/A

                          \[\leadsto \left(\frac{1}{2} \cdot z\right) \cdot z + \color{blue}{\left(\mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right)} \]
                      11. Simplified69.5%

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

                      if -10500 < z < 2.2000000000000001e-7

                      1. Initial program 100.0%

                        \[e^{\left(x + y \cdot \log y\right) - z} \]
                      2. Add Preprocessing
                      3. Taylor expanded in x around inf

                        \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                      4. Step-by-step derivation
                        1. Simplified69.4%

                          \[\leadsto e^{\color{blue}{x}} \]
                        2. Taylor expanded in x around 0

                          \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                        3. Step-by-step derivation
                          1. +-lowering-+.f64N/A

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

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

                            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                          4. *-commutativeN/A

                            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                          5. *-lowering-*.f6433.3%

                            \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                        4. Simplified33.3%

                          \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]

                        if 2.2000000000000001e-7 < z

                        1. Initial program 100.0%

                          \[e^{\left(x + y \cdot \log y\right) - z} \]
                        2. Add Preprocessing
                        3. Taylor expanded in x around inf

                          \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                        4. Step-by-step derivation
                          1. Simplified35.2%

                            \[\leadsto e^{\color{blue}{x}} \]
                          2. Taylor expanded in x around 0

                            \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                          3. Step-by-step derivation
                            1. +-lowering-+.f64N/A

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

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

                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                            4. *-commutativeN/A

                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                            5. *-lowering-*.f6416.9%

                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                          4. Simplified16.9%

                            \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]
                          5. Taylor expanded in x around inf

                            \[\leadsto \color{blue}{\frac{1}{2} \cdot {x}^{2}} \]
                          6. Step-by-step derivation
                            1. *-lowering-*.f64N/A

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

                              \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{x}\right)\right) \]
                            3. *-lowering-*.f6436.3%

                              \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{x}\right)\right) \]
                          7. Simplified36.3%

                            \[\leadsto \color{blue}{0.5 \cdot \left(x \cdot x\right)} \]
                        5. Recombined 3 regimes into one program.
                        6. Final simplification44.7%

                          \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -10500:\\ \;\;\;\;\left(z \cdot z\right) \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;z \leq 2.2 \cdot 10^{-7}:\\ \;\;\;\;1 + x \cdot \left(1 + x \cdot 0.5\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \]
                        7. Add Preprocessing

                        Alternative 11: 44.0% accurate, 12.2× speedup?

                        \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;z \leq -24:\\ \;\;\;\;\left(z \cdot z\right) \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;z \leq 370:\\ \;\;\;\;1 + x \cdot \left(x \cdot 0.5\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \end{array} \]
                        (FPCore (x y z)
                         :precision binary64
                         (if (<= z -24.0)
                           (* (* z z) (+ 0.5 (* z -0.16666666666666666)))
                           (if (<= z 370.0) (+ 1.0 (* x (* x 0.5))) (* 0.5 (* x x)))))
                        double code(double x, double y, double z) {
                        	double tmp;
                        	if (z <= -24.0) {
                        		tmp = (z * z) * (0.5 + (z * -0.16666666666666666));
                        	} else if (z <= 370.0) {
                        		tmp = 1.0 + (x * (x * 0.5));
                        	} else {
                        		tmp = 0.5 * (x * x);
                        	}
                        	return tmp;
                        }
                        
                        real(8) function code(x, y, z)
                            real(8), intent (in) :: x
                            real(8), intent (in) :: y
                            real(8), intent (in) :: z
                            real(8) :: tmp
                            if (z <= (-24.0d0)) then
                                tmp = (z * z) * (0.5d0 + (z * (-0.16666666666666666d0)))
                            else if (z <= 370.0d0) then
                                tmp = 1.0d0 + (x * (x * 0.5d0))
                            else
                                tmp = 0.5d0 * (x * x)
                            end if
                            code = tmp
                        end function
                        
                        public static double code(double x, double y, double z) {
                        	double tmp;
                        	if (z <= -24.0) {
                        		tmp = (z * z) * (0.5 + (z * -0.16666666666666666));
                        	} else if (z <= 370.0) {
                        		tmp = 1.0 + (x * (x * 0.5));
                        	} else {
                        		tmp = 0.5 * (x * x);
                        	}
                        	return tmp;
                        }
                        
                        def code(x, y, z):
                        	tmp = 0
                        	if z <= -24.0:
                        		tmp = (z * z) * (0.5 + (z * -0.16666666666666666))
                        	elif z <= 370.0:
                        		tmp = 1.0 + (x * (x * 0.5))
                        	else:
                        		tmp = 0.5 * (x * x)
                        	return tmp
                        
                        function code(x, y, z)
                        	tmp = 0.0
                        	if (z <= -24.0)
                        		tmp = Float64(Float64(z * z) * Float64(0.5 + Float64(z * -0.16666666666666666)));
                        	elseif (z <= 370.0)
                        		tmp = Float64(1.0 + Float64(x * Float64(x * 0.5)));
                        	else
                        		tmp = Float64(0.5 * Float64(x * x));
                        	end
                        	return tmp
                        end
                        
                        function tmp_2 = code(x, y, z)
                        	tmp = 0.0;
                        	if (z <= -24.0)
                        		tmp = (z * z) * (0.5 + (z * -0.16666666666666666));
                        	elseif (z <= 370.0)
                        		tmp = 1.0 + (x * (x * 0.5));
                        	else
                        		tmp = 0.5 * (x * x);
                        	end
                        	tmp_2 = tmp;
                        end
                        
                        code[x_, y_, z_] := If[LessEqual[z, -24.0], N[(N[(z * z), $MachinePrecision] * N[(0.5 + N[(z * -0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 370.0], N[(1.0 + N[(x * N[(x * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(x * x), $MachinePrecision]), $MachinePrecision]]]
                        
                        \begin{array}{l}
                        
                        \\
                        \begin{array}{l}
                        \mathbf{if}\;z \leq -24:\\
                        \;\;\;\;\left(z \cdot z\right) \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\\
                        
                        \mathbf{elif}\;z \leq 370:\\
                        \;\;\;\;1 + x \cdot \left(x \cdot 0.5\right)\\
                        
                        \mathbf{else}:\\
                        \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\
                        
                        
                        \end{array}
                        \end{array}
                        
                        Derivation
                        1. Split input into 3 regimes
                        2. if z < -24

                          1. Initial program 100.0%

                            \[e^{\left(x + y \cdot \log y\right) - z} \]
                          2. Add Preprocessing
                          3. Taylor expanded in z around inf

                            \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                          4. Step-by-step derivation
                            1. mul-1-negN/A

                              \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                            2. neg-sub0N/A

                              \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                            3. --lowering--.f6493.4%

                              \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                          5. Simplified93.4%

                            \[\leadsto e^{\color{blue}{0 - z}} \]
                          6. Taylor expanded in z around 0

                            \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                          7. Step-by-step derivation
                            1. +-lowering-+.f64N/A

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

                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                            3. sub-negN/A

                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                            4. metadata-evalN/A

                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                            5. +-commutativeN/A

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

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

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

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

                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                            10. *-lowering-*.f6469.5%

                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                          8. Simplified69.5%

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

                            \[\leadsto \color{blue}{{z}^{3} \cdot \left(\frac{1}{2} \cdot \frac{1}{z} - \frac{1}{6}\right)} \]
                          10. Step-by-step derivation
                            1. sub-negN/A

                              \[\leadsto {z}^{3} \cdot \left(\frac{1}{2} \cdot \frac{1}{z} + \color{blue}{\left(\mathsf{neg}\left(\frac{1}{6}\right)\right)}\right) \]
                            2. metadata-evalN/A

                              \[\leadsto {z}^{3} \cdot \left(\frac{1}{2} \cdot \frac{1}{z} + \frac{-1}{6}\right) \]
                            3. distribute-rgt-inN/A

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

                              \[\leadsto \left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot \left(\left(z \cdot z\right) \cdot z\right) + \frac{-1}{6} \cdot {z}^{3} \]
                            5. unpow2N/A

                              \[\leadsto \left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot \left({z}^{2} \cdot z\right) + \frac{-1}{6} \cdot {z}^{3} \]
                            6. associate-*r*N/A

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

                              \[\leadsto \left(\left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot {z}^{2}\right) \cdot z + \left(\mathsf{neg}\left(\frac{1}{6}\right)\right) \cdot {\color{blue}{z}}^{3} \]
                            8. distribute-lft-neg-inN/A

                              \[\leadsto \left(\left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot {z}^{2}\right) \cdot z + \left(\mathsf{neg}\left(\frac{1}{6} \cdot {z}^{3}\right)\right) \]
                            9. *-commutativeN/A

                              \[\leadsto \left(\left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot {z}^{2}\right) \cdot z + \left(\mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            10. fma-defineN/A

                              \[\leadsto \mathsf{fma}\left(\left(\frac{1}{2} \cdot \frac{1}{z}\right) \cdot {z}^{2}, \color{blue}{z}, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            11. associate-*l*N/A

                              \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(\frac{1}{z} \cdot {z}^{2}\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            12. associate-*l/N/A

                              \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \frac{1 \cdot {z}^{2}}{z}, z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            13. *-lft-identityN/A

                              \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \frac{{z}^{2}}{z}, z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            14. unpow2N/A

                              \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \frac{z \cdot z}{z}, z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            15. associate-/l*N/A

                              \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(z \cdot \frac{z}{z}\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            16. *-rgt-identityN/A

                              \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(z \cdot \frac{z \cdot 1}{z}\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            17. associate-*r/N/A

                              \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(z \cdot \left(z \cdot \frac{1}{z}\right)\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            18. rgt-mult-inverseN/A

                              \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(z \cdot 1\right), z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            19. *-rgt-identityN/A

                              \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot z, z, \mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right) \]
                            20. fma-defineN/A

                              \[\leadsto \left(\frac{1}{2} \cdot z\right) \cdot z + \color{blue}{\left(\mathsf{neg}\left({z}^{3} \cdot \frac{1}{6}\right)\right)} \]
                          11. Simplified69.5%

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

                          if -24 < z < 370

                          1. Initial program 100.0%

                            \[e^{\left(x + y \cdot \log y\right) - z} \]
                          2. Add Preprocessing
                          3. Taylor expanded in x around inf

                            \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                          4. Step-by-step derivation
                            1. Simplified69.3%

                              \[\leadsto e^{\color{blue}{x}} \]
                            2. Taylor expanded in x around 0

                              \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                            3. Step-by-step derivation
                              1. +-lowering-+.f64N/A

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

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

                                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                              4. *-commutativeN/A

                                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                              5. *-lowering-*.f6433.3%

                                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                            4. Simplified33.3%

                              \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]
                            5. Taylor expanded in x around inf

                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right) \]
                            6. Step-by-step derivation
                              1. *-lowering-*.f6433.1%

                                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{*.f64}\left(\frac{1}{2}, \color{blue}{x}\right)\right)\right) \]
                            7. Simplified33.1%

                              \[\leadsto 1 + x \cdot \color{blue}{\left(0.5 \cdot x\right)} \]

                            if 370 < z

                            1. Initial program 100.0%

                              \[e^{\left(x + y \cdot \log y\right) - z} \]
                            2. Add Preprocessing
                            3. Taylor expanded in x around inf

                              \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                            4. Step-by-step derivation
                              1. Simplified33.7%

                                \[\leadsto e^{\color{blue}{x}} \]
                              2. Taylor expanded in x around 0

                                \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                              3. Step-by-step derivation
                                1. +-lowering-+.f64N/A

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

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

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                                4. *-commutativeN/A

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                5. *-lowering-*.f6416.1%

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                              4. Simplified16.1%

                                \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]
                              5. Taylor expanded in x around inf

                                \[\leadsto \color{blue}{\frac{1}{2} \cdot {x}^{2}} \]
                              6. Step-by-step derivation
                                1. *-lowering-*.f64N/A

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

                                  \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{x}\right)\right) \]
                                3. *-lowering-*.f6436.3%

                                  \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{x}\right)\right) \]
                              7. Simplified36.3%

                                \[\leadsto \color{blue}{0.5 \cdot \left(x \cdot x\right)} \]
                            5. Recombined 3 regimes into one program.
                            6. Final simplification44.6%

                              \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -24:\\ \;\;\;\;\left(z \cdot z\right) \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;z \leq 370:\\ \;\;\;\;1 + x \cdot \left(x \cdot 0.5\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \]
                            7. Add Preprocessing

                            Alternative 12: 44.1% accurate, 12.2× speedup?

                            \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;z \leq -4500000:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;z \leq 390:\\ \;\;\;\;1 + x \cdot \left(x \cdot 0.5\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \end{array} \]
                            (FPCore (x y z)
                             :precision binary64
                             (if (<= z -4500000.0)
                               (* z (* (* z z) -0.16666666666666666))
                               (if (<= z 390.0) (+ 1.0 (* x (* x 0.5))) (* 0.5 (* x x)))))
                            double code(double x, double y, double z) {
                            	double tmp;
                            	if (z <= -4500000.0) {
                            		tmp = z * ((z * z) * -0.16666666666666666);
                            	} else if (z <= 390.0) {
                            		tmp = 1.0 + (x * (x * 0.5));
                            	} else {
                            		tmp = 0.5 * (x * x);
                            	}
                            	return tmp;
                            }
                            
                            real(8) function code(x, y, z)
                                real(8), intent (in) :: x
                                real(8), intent (in) :: y
                                real(8), intent (in) :: z
                                real(8) :: tmp
                                if (z <= (-4500000.0d0)) then
                                    tmp = z * ((z * z) * (-0.16666666666666666d0))
                                else if (z <= 390.0d0) then
                                    tmp = 1.0d0 + (x * (x * 0.5d0))
                                else
                                    tmp = 0.5d0 * (x * x)
                                end if
                                code = tmp
                            end function
                            
                            public static double code(double x, double y, double z) {
                            	double tmp;
                            	if (z <= -4500000.0) {
                            		tmp = z * ((z * z) * -0.16666666666666666);
                            	} else if (z <= 390.0) {
                            		tmp = 1.0 + (x * (x * 0.5));
                            	} else {
                            		tmp = 0.5 * (x * x);
                            	}
                            	return tmp;
                            }
                            
                            def code(x, y, z):
                            	tmp = 0
                            	if z <= -4500000.0:
                            		tmp = z * ((z * z) * -0.16666666666666666)
                            	elif z <= 390.0:
                            		tmp = 1.0 + (x * (x * 0.5))
                            	else:
                            		tmp = 0.5 * (x * x)
                            	return tmp
                            
                            function code(x, y, z)
                            	tmp = 0.0
                            	if (z <= -4500000.0)
                            		tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666));
                            	elseif (z <= 390.0)
                            		tmp = Float64(1.0 + Float64(x * Float64(x * 0.5)));
                            	else
                            		tmp = Float64(0.5 * Float64(x * x));
                            	end
                            	return tmp
                            end
                            
                            function tmp_2 = code(x, y, z)
                            	tmp = 0.0;
                            	if (z <= -4500000.0)
                            		tmp = z * ((z * z) * -0.16666666666666666);
                            	elseif (z <= 390.0)
                            		tmp = 1.0 + (x * (x * 0.5));
                            	else
                            		tmp = 0.5 * (x * x);
                            	end
                            	tmp_2 = tmp;
                            end
                            
                            code[x_, y_, z_] := If[LessEqual[z, -4500000.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 390.0], N[(1.0 + N[(x * N[(x * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.5 * N[(x * x), $MachinePrecision]), $MachinePrecision]]]
                            
                            \begin{array}{l}
                            
                            \\
                            \begin{array}{l}
                            \mathbf{if}\;z \leq -4500000:\\
                            \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
                            
                            \mathbf{elif}\;z \leq 390:\\
                            \;\;\;\;1 + x \cdot \left(x \cdot 0.5\right)\\
                            
                            \mathbf{else}:\\
                            \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\
                            
                            
                            \end{array}
                            \end{array}
                            
                            Derivation
                            1. Split input into 3 regimes
                            2. if z < -4.5e6

                              1. Initial program 100.0%

                                \[e^{\left(x + y \cdot \log y\right) - z} \]
                              2. Add Preprocessing
                              3. Taylor expanded in z around inf

                                \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                              4. Step-by-step derivation
                                1. mul-1-negN/A

                                  \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                                2. neg-sub0N/A

                                  \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                                3. --lowering--.f6493.4%

                                  \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                              5. Simplified93.4%

                                \[\leadsto e^{\color{blue}{0 - z}} \]
                              6. Taylor expanded in z around 0

                                \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                              7. Step-by-step derivation
                                1. +-lowering-+.f64N/A

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

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                                3. sub-negN/A

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                                4. metadata-evalN/A

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                                5. +-commutativeN/A

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

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

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

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

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                                10. *-lowering-*.f6469.5%

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                              8. Simplified69.5%

                                \[\leadsto \color{blue}{1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)} \]
                              9. Step-by-step derivation
                                1. flip3-+N/A

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\color{blue}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}\right)\right)\right)\right) \]
                                2. clear-numN/A

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}}}\right)\right)\right)\right) \]
                                3. un-div-invN/A

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

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}\right)}\right)\right)\right)\right) \]
                                5. clear-numN/A

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \left(\frac{1}{\color{blue}{\frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}}\right)\right)\right)\right)\right) \]
                                6. flip3-+N/A

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

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

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left(z \cdot \frac{-1}{6}\right)}\right)\right)\right)\right)\right)\right) \]
                                9. *-lowering-*.f6469.5%

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right)\right) \]
                              10. Applied egg-rr69.5%

                                \[\leadsto 1 + z \cdot \left(-1 + \color{blue}{\frac{z}{\frac{1}{0.5 + z \cdot -0.16666666666666666}}}\right) \]
                              11. Taylor expanded in z around inf

                                \[\leadsto \color{blue}{\frac{-1}{6} \cdot {z}^{3}} \]
                              12. Step-by-step derivation
                                1. unpow3N/A

                                  \[\leadsto \frac{-1}{6} \cdot \left(\left(z \cdot z\right) \cdot \color{blue}{z}\right) \]
                                2. unpow2N/A

                                  \[\leadsto \frac{-1}{6} \cdot \left({z}^{2} \cdot z\right) \]
                                3. associate-*r*N/A

                                  \[\leadsto \left(\frac{-1}{6} \cdot {z}^{2}\right) \cdot \color{blue}{z} \]
                                4. unpow2N/A

                                  \[\leadsto \left(\frac{-1}{6} \cdot \left(z \cdot z\right)\right) \cdot z \]
                                5. associate-*r*N/A

                                  \[\leadsto \left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right) \cdot z \]
                                6. *-commutativeN/A

                                  \[\leadsto z \cdot \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)} \]
                                7. *-lowering-*.f64N/A

                                  \[\leadsto \mathsf{*.f64}\left(z, \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)}\right) \]
                                8. associate-*r*N/A

                                  \[\leadsto \mathsf{*.f64}\left(z, \left(\frac{-1}{6} \cdot \color{blue}{\left(z \cdot z\right)}\right)\right) \]
                                9. unpow2N/A

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

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

                                  \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \left(z \cdot \color{blue}{z}\right)\right)\right) \]
                                12. *-lowering-*.f6469.5%

                                  \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(z, \color{blue}{z}\right)\right)\right) \]
                              13. Simplified69.5%

                                \[\leadsto \color{blue}{z \cdot \left(-0.16666666666666666 \cdot \left(z \cdot z\right)\right)} \]

                              if -4.5e6 < z < 390

                              1. Initial program 100.0%

                                \[e^{\left(x + y \cdot \log y\right) - z} \]
                              2. Add Preprocessing
                              3. Taylor expanded in x around inf

                                \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                              4. Step-by-step derivation
                                1. Simplified69.3%

                                  \[\leadsto e^{\color{blue}{x}} \]
                                2. Taylor expanded in x around 0

                                  \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                                3. Step-by-step derivation
                                  1. +-lowering-+.f64N/A

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

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

                                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                                  4. *-commutativeN/A

                                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                  5. *-lowering-*.f6433.3%

                                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                4. Simplified33.3%

                                  \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]
                                5. Taylor expanded in x around inf

                                  \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right) \]
                                6. Step-by-step derivation
                                  1. *-lowering-*.f6433.1%

                                    \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{*.f64}\left(\frac{1}{2}, \color{blue}{x}\right)\right)\right) \]
                                7. Simplified33.1%

                                  \[\leadsto 1 + x \cdot \color{blue}{\left(0.5 \cdot x\right)} \]

                                if 390 < z

                                1. Initial program 100.0%

                                  \[e^{\left(x + y \cdot \log y\right) - z} \]
                                2. Add Preprocessing
                                3. Taylor expanded in x around inf

                                  \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                                4. Step-by-step derivation
                                  1. Simplified33.7%

                                    \[\leadsto e^{\color{blue}{x}} \]
                                  2. Taylor expanded in x around 0

                                    \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                                  3. Step-by-step derivation
                                    1. +-lowering-+.f64N/A

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

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

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                                    4. *-commutativeN/A

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                    5. *-lowering-*.f6416.1%

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                  4. Simplified16.1%

                                    \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]
                                  5. Taylor expanded in x around inf

                                    \[\leadsto \color{blue}{\frac{1}{2} \cdot {x}^{2}} \]
                                  6. Step-by-step derivation
                                    1. *-lowering-*.f64N/A

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

                                      \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{x}\right)\right) \]
                                    3. *-lowering-*.f6436.3%

                                      \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{x}\right)\right) \]
                                  7. Simplified36.3%

                                    \[\leadsto \color{blue}{0.5 \cdot \left(x \cdot x\right)} \]
                                5. Recombined 3 regimes into one program.
                                6. Final simplification44.6%

                                  \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -4500000:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;z \leq 390:\\ \;\;\;\;1 + x \cdot \left(x \cdot 0.5\right)\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \]
                                7. Add Preprocessing

                                Alternative 13: 36.7% accurate, 13.8× speedup?

                                \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;z \leq -1260000:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;z \leq 4.5 \cdot 10^{-90}:\\ \;\;\;\;x + 1\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \end{array} \]
                                (FPCore (x y z)
                                 :precision binary64
                                 (if (<= z -1260000.0)
                                   (* z (* (* z z) -0.16666666666666666))
                                   (if (<= z 4.5e-90) (+ x 1.0) (* 0.5 (* x x)))))
                                double code(double x, double y, double z) {
                                	double tmp;
                                	if (z <= -1260000.0) {
                                		tmp = z * ((z * z) * -0.16666666666666666);
                                	} else if (z <= 4.5e-90) {
                                		tmp = x + 1.0;
                                	} else {
                                		tmp = 0.5 * (x * x);
                                	}
                                	return tmp;
                                }
                                
                                real(8) function code(x, y, z)
                                    real(8), intent (in) :: x
                                    real(8), intent (in) :: y
                                    real(8), intent (in) :: z
                                    real(8) :: tmp
                                    if (z <= (-1260000.0d0)) then
                                        tmp = z * ((z * z) * (-0.16666666666666666d0))
                                    else if (z <= 4.5d-90) then
                                        tmp = x + 1.0d0
                                    else
                                        tmp = 0.5d0 * (x * x)
                                    end if
                                    code = tmp
                                end function
                                
                                public static double code(double x, double y, double z) {
                                	double tmp;
                                	if (z <= -1260000.0) {
                                		tmp = z * ((z * z) * -0.16666666666666666);
                                	} else if (z <= 4.5e-90) {
                                		tmp = x + 1.0;
                                	} else {
                                		tmp = 0.5 * (x * x);
                                	}
                                	return tmp;
                                }
                                
                                def code(x, y, z):
                                	tmp = 0
                                	if z <= -1260000.0:
                                		tmp = z * ((z * z) * -0.16666666666666666)
                                	elif z <= 4.5e-90:
                                		tmp = x + 1.0
                                	else:
                                		tmp = 0.5 * (x * x)
                                	return tmp
                                
                                function code(x, y, z)
                                	tmp = 0.0
                                	if (z <= -1260000.0)
                                		tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666));
                                	elseif (z <= 4.5e-90)
                                		tmp = Float64(x + 1.0);
                                	else
                                		tmp = Float64(0.5 * Float64(x * x));
                                	end
                                	return tmp
                                end
                                
                                function tmp_2 = code(x, y, z)
                                	tmp = 0.0;
                                	if (z <= -1260000.0)
                                		tmp = z * ((z * z) * -0.16666666666666666);
                                	elseif (z <= 4.5e-90)
                                		tmp = x + 1.0;
                                	else
                                		tmp = 0.5 * (x * x);
                                	end
                                	tmp_2 = tmp;
                                end
                                
                                code[x_, y_, z_] := If[LessEqual[z, -1260000.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 4.5e-90], N[(x + 1.0), $MachinePrecision], N[(0.5 * N[(x * x), $MachinePrecision]), $MachinePrecision]]]
                                
                                \begin{array}{l}
                                
                                \\
                                \begin{array}{l}
                                \mathbf{if}\;z \leq -1260000:\\
                                \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
                                
                                \mathbf{elif}\;z \leq 4.5 \cdot 10^{-90}:\\
                                \;\;\;\;x + 1\\
                                
                                \mathbf{else}:\\
                                \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\
                                
                                
                                \end{array}
                                \end{array}
                                
                                Derivation
                                1. Split input into 3 regimes
                                2. if z < -1.26e6

                                  1. Initial program 100.0%

                                    \[e^{\left(x + y \cdot \log y\right) - z} \]
                                  2. Add Preprocessing
                                  3. Taylor expanded in z around inf

                                    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                                  4. Step-by-step derivation
                                    1. mul-1-negN/A

                                      \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                                    2. neg-sub0N/A

                                      \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                                    3. --lowering--.f6493.4%

                                      \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                                  5. Simplified93.4%

                                    \[\leadsto e^{\color{blue}{0 - z}} \]
                                  6. Taylor expanded in z around 0

                                    \[\leadsto \color{blue}{1 + z \cdot \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)} \]
                                  7. Step-by-step derivation
                                    1. +-lowering-+.f64N/A

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

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) - 1\right)}\right)\right) \]
                                    3. sub-negN/A

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                                    4. metadata-evalN/A

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(z \cdot \left(\frac{1}{2} + \frac{-1}{6} \cdot z\right) + -1\right)\right)\right) \]
                                    5. +-commutativeN/A

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

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

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

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

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                                    10. *-lowering-*.f6469.5%

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right) \]
                                  8. Simplified69.5%

                                    \[\leadsto \color{blue}{1 + z \cdot \left(-1 + z \cdot \left(0.5 + z \cdot -0.16666666666666666\right)\right)} \]
                                  9. Step-by-step derivation
                                    1. flip3-+N/A

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\color{blue}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}\right)\right)\right)\right) \]
                                    2. clear-numN/A

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \left(z \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}}}\right)\right)\right)\right) \]
                                    3. un-div-invN/A

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

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \color{blue}{\left(\frac{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}\right)}\right)\right)\right)\right) \]
                                    5. clear-numN/A

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \left(\frac{1}{\color{blue}{\frac{{\frac{1}{2}}^{3} + {\left(z \cdot \frac{-1}{6}\right)}^{3}}{\frac{1}{2} \cdot \frac{1}{2} + \left(\left(z \cdot \frac{-1}{6}\right) \cdot \left(z \cdot \frac{-1}{6}\right) - \frac{1}{2} \cdot \left(z \cdot \frac{-1}{6}\right)\right)}}}\right)\right)\right)\right)\right) \]
                                    6. flip3-+N/A

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

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

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \color{blue}{\left(z \cdot \frac{-1}{6}\right)}\right)\right)\right)\right)\right)\right) \]
                                    9. *-lowering-*.f6469.5%

                                      \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{/.f64}\left(z, \mathsf{/.f64}\left(1, \mathsf{+.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{\frac{-1}{6}}\right)\right)\right)\right)\right)\right)\right) \]
                                  10. Applied egg-rr69.5%

                                    \[\leadsto 1 + z \cdot \left(-1 + \color{blue}{\frac{z}{\frac{1}{0.5 + z \cdot -0.16666666666666666}}}\right) \]
                                  11. Taylor expanded in z around inf

                                    \[\leadsto \color{blue}{\frac{-1}{6} \cdot {z}^{3}} \]
                                  12. Step-by-step derivation
                                    1. unpow3N/A

                                      \[\leadsto \frac{-1}{6} \cdot \left(\left(z \cdot z\right) \cdot \color{blue}{z}\right) \]
                                    2. unpow2N/A

                                      \[\leadsto \frac{-1}{6} \cdot \left({z}^{2} \cdot z\right) \]
                                    3. associate-*r*N/A

                                      \[\leadsto \left(\frac{-1}{6} \cdot {z}^{2}\right) \cdot \color{blue}{z} \]
                                    4. unpow2N/A

                                      \[\leadsto \left(\frac{-1}{6} \cdot \left(z \cdot z\right)\right) \cdot z \]
                                    5. associate-*r*N/A

                                      \[\leadsto \left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right) \cdot z \]
                                    6. *-commutativeN/A

                                      \[\leadsto z \cdot \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)} \]
                                    7. *-lowering-*.f64N/A

                                      \[\leadsto \mathsf{*.f64}\left(z, \color{blue}{\left(\left(\frac{-1}{6} \cdot z\right) \cdot z\right)}\right) \]
                                    8. associate-*r*N/A

                                      \[\leadsto \mathsf{*.f64}\left(z, \left(\frac{-1}{6} \cdot \color{blue}{\left(z \cdot z\right)}\right)\right) \]
                                    9. unpow2N/A

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

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

                                      \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \left(z \cdot \color{blue}{z}\right)\right)\right) \]
                                    12. *-lowering-*.f6469.5%

                                      \[\leadsto \mathsf{*.f64}\left(z, \mathsf{*.f64}\left(\frac{-1}{6}, \mathsf{*.f64}\left(z, \color{blue}{z}\right)\right)\right) \]
                                  13. Simplified69.5%

                                    \[\leadsto \color{blue}{z \cdot \left(-0.16666666666666666 \cdot \left(z \cdot z\right)\right)} \]

                                  if -1.26e6 < z < 4.50000000000000009e-90

                                  1. Initial program 100.0%

                                    \[e^{\left(x + y \cdot \log y\right) - z} \]
                                  2. Add Preprocessing
                                  3. Taylor expanded in x around inf

                                    \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                                  4. Step-by-step derivation
                                    1. Simplified70.6%

                                      \[\leadsto e^{\color{blue}{x}} \]
                                    2. Taylor expanded in x around 0

                                      \[\leadsto \color{blue}{1 + x} \]
                                    3. Step-by-step derivation
                                      1. +-lowering-+.f6427.0%

                                        \[\leadsto \mathsf{+.f64}\left(1, \color{blue}{x}\right) \]
                                    4. Simplified27.0%

                                      \[\leadsto \color{blue}{1 + x} \]

                                    if 4.50000000000000009e-90 < z

                                    1. Initial program 100.0%

                                      \[e^{\left(x + y \cdot \log y\right) - z} \]
                                    2. Add Preprocessing
                                    3. Taylor expanded in x around inf

                                      \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                                    4. Step-by-step derivation
                                      1. Simplified39.8%

                                        \[\leadsto e^{\color{blue}{x}} \]
                                      2. Taylor expanded in x around 0

                                        \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                                      3. Step-by-step derivation
                                        1. +-lowering-+.f64N/A

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

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

                                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                                        4. *-commutativeN/A

                                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                        5. *-lowering-*.f6415.7%

                                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                      4. Simplified15.7%

                                        \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]
                                      5. Taylor expanded in x around inf

                                        \[\leadsto \color{blue}{\frac{1}{2} \cdot {x}^{2}} \]
                                      6. Step-by-step derivation
                                        1. *-lowering-*.f64N/A

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

                                          \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{x}\right)\right) \]
                                        3. *-lowering-*.f6431.6%

                                          \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{x}\right)\right) \]
                                      7. Simplified31.6%

                                        \[\leadsto \color{blue}{0.5 \cdot \left(x \cdot x\right)} \]
                                    5. Recombined 3 regimes into one program.
                                    6. Final simplification40.9%

                                      \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -1260000:\\ \;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\ \mathbf{elif}\;z \leq 4.5 \cdot 10^{-90}:\\ \;\;\;\;x + 1\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \]
                                    7. Add Preprocessing

                                    Alternative 14: 33.6% accurate, 13.8× speedup?

                                    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;z \leq -250:\\ \;\;\;\;\left(z \cdot z\right) \cdot 0.5\\ \mathbf{elif}\;z \leq 4.4 \cdot 10^{-90}:\\ \;\;\;\;x + 1\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \end{array} \]
                                    (FPCore (x y z)
                                     :precision binary64
                                     (if (<= z -250.0)
                                       (* (* z z) 0.5)
                                       (if (<= z 4.4e-90) (+ x 1.0) (* 0.5 (* x x)))))
                                    double code(double x, double y, double z) {
                                    	double tmp;
                                    	if (z <= -250.0) {
                                    		tmp = (z * z) * 0.5;
                                    	} else if (z <= 4.4e-90) {
                                    		tmp = x + 1.0;
                                    	} else {
                                    		tmp = 0.5 * (x * x);
                                    	}
                                    	return tmp;
                                    }
                                    
                                    real(8) function code(x, y, z)
                                        real(8), intent (in) :: x
                                        real(8), intent (in) :: y
                                        real(8), intent (in) :: z
                                        real(8) :: tmp
                                        if (z <= (-250.0d0)) then
                                            tmp = (z * z) * 0.5d0
                                        else if (z <= 4.4d-90) then
                                            tmp = x + 1.0d0
                                        else
                                            tmp = 0.5d0 * (x * x)
                                        end if
                                        code = tmp
                                    end function
                                    
                                    public static double code(double x, double y, double z) {
                                    	double tmp;
                                    	if (z <= -250.0) {
                                    		tmp = (z * z) * 0.5;
                                    	} else if (z <= 4.4e-90) {
                                    		tmp = x + 1.0;
                                    	} else {
                                    		tmp = 0.5 * (x * x);
                                    	}
                                    	return tmp;
                                    }
                                    
                                    def code(x, y, z):
                                    	tmp = 0
                                    	if z <= -250.0:
                                    		tmp = (z * z) * 0.5
                                    	elif z <= 4.4e-90:
                                    		tmp = x + 1.0
                                    	else:
                                    		tmp = 0.5 * (x * x)
                                    	return tmp
                                    
                                    function code(x, y, z)
                                    	tmp = 0.0
                                    	if (z <= -250.0)
                                    		tmp = Float64(Float64(z * z) * 0.5);
                                    	elseif (z <= 4.4e-90)
                                    		tmp = Float64(x + 1.0);
                                    	else
                                    		tmp = Float64(0.5 * Float64(x * x));
                                    	end
                                    	return tmp
                                    end
                                    
                                    function tmp_2 = code(x, y, z)
                                    	tmp = 0.0;
                                    	if (z <= -250.0)
                                    		tmp = (z * z) * 0.5;
                                    	elseif (z <= 4.4e-90)
                                    		tmp = x + 1.0;
                                    	else
                                    		tmp = 0.5 * (x * x);
                                    	end
                                    	tmp_2 = tmp;
                                    end
                                    
                                    code[x_, y_, z_] := If[LessEqual[z, -250.0], N[(N[(z * z), $MachinePrecision] * 0.5), $MachinePrecision], If[LessEqual[z, 4.4e-90], N[(x + 1.0), $MachinePrecision], N[(0.5 * N[(x * x), $MachinePrecision]), $MachinePrecision]]]
                                    
                                    \begin{array}{l}
                                    
                                    \\
                                    \begin{array}{l}
                                    \mathbf{if}\;z \leq -250:\\
                                    \;\;\;\;\left(z \cdot z\right) \cdot 0.5\\
                                    
                                    \mathbf{elif}\;z \leq 4.4 \cdot 10^{-90}:\\
                                    \;\;\;\;x + 1\\
                                    
                                    \mathbf{else}:\\
                                    \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\
                                    
                                    
                                    \end{array}
                                    \end{array}
                                    
                                    Derivation
                                    1. Split input into 3 regimes
                                    2. if z < -250

                                      1. Initial program 100.0%

                                        \[e^{\left(x + y \cdot \log y\right) - z} \]
                                      2. Add Preprocessing
                                      3. Taylor expanded in z around inf

                                        \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                                      4. Step-by-step derivation
                                        1. mul-1-negN/A

                                          \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                                        2. neg-sub0N/A

                                          \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                                        3. --lowering--.f6493.4%

                                          \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                                      5. Simplified93.4%

                                        \[\leadsto e^{\color{blue}{0 - z}} \]
                                      6. Taylor expanded in z around 0

                                        \[\leadsto \color{blue}{1 + z \cdot \left(\frac{1}{2} \cdot z - 1\right)} \]
                                      7. Step-by-step derivation
                                        1. +-lowering-+.f64N/A

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

                                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \color{blue}{\left(\frac{1}{2} \cdot z - 1\right)}\right)\right) \]
                                        3. sub-negN/A

                                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{1}{2} \cdot z + \color{blue}{\left(\mathsf{neg}\left(1\right)\right)}\right)\right)\right) \]
                                        4. metadata-evalN/A

                                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \left(\frac{1}{2} \cdot z + -1\right)\right)\right) \]
                                        5. +-commutativeN/A

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

                                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \color{blue}{\left(\frac{1}{2} \cdot z\right)}\right)\right)\right) \]
                                        7. *-lowering-*.f6452.2%

                                          \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(z, \mathsf{+.f64}\left(-1, \mathsf{*.f64}\left(\frac{1}{2}, \color{blue}{z}\right)\right)\right)\right) \]
                                      8. Simplified52.2%

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

                                        \[\leadsto \color{blue}{\frac{1}{2} \cdot {z}^{2}} \]
                                      10. Step-by-step derivation
                                        1. *-lowering-*.f64N/A

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

                                          \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \left(z \cdot \color{blue}{z}\right)\right) \]
                                        3. *-lowering-*.f6453.2%

                                          \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(z, \color{blue}{z}\right)\right) \]
                                      11. Simplified53.2%

                                        \[\leadsto \color{blue}{0.5 \cdot \left(z \cdot z\right)} \]

                                      if -250 < z < 4.39999999999999972e-90

                                      1. Initial program 100.0%

                                        \[e^{\left(x + y \cdot \log y\right) - z} \]
                                      2. Add Preprocessing
                                      3. Taylor expanded in x around inf

                                        \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                                      4. Step-by-step derivation
                                        1. Simplified70.6%

                                          \[\leadsto e^{\color{blue}{x}} \]
                                        2. Taylor expanded in x around 0

                                          \[\leadsto \color{blue}{1 + x} \]
                                        3. Step-by-step derivation
                                          1. +-lowering-+.f6427.0%

                                            \[\leadsto \mathsf{+.f64}\left(1, \color{blue}{x}\right) \]
                                        4. Simplified27.0%

                                          \[\leadsto \color{blue}{1 + x} \]

                                        if 4.39999999999999972e-90 < z

                                        1. Initial program 100.0%

                                          \[e^{\left(x + y \cdot \log y\right) - z} \]
                                        2. Add Preprocessing
                                        3. Taylor expanded in x around inf

                                          \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                                        4. Step-by-step derivation
                                          1. Simplified39.8%

                                            \[\leadsto e^{\color{blue}{x}} \]
                                          2. Taylor expanded in x around 0

                                            \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                                          3. Step-by-step derivation
                                            1. +-lowering-+.f64N/A

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

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

                                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                                            4. *-commutativeN/A

                                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                            5. *-lowering-*.f6415.7%

                                              \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                          4. Simplified15.7%

                                            \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]
                                          5. Taylor expanded in x around inf

                                            \[\leadsto \color{blue}{\frac{1}{2} \cdot {x}^{2}} \]
                                          6. Step-by-step derivation
                                            1. *-lowering-*.f64N/A

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

                                              \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{x}\right)\right) \]
                                            3. *-lowering-*.f6431.6%

                                              \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{x}\right)\right) \]
                                          7. Simplified31.6%

                                            \[\leadsto \color{blue}{0.5 \cdot \left(x \cdot x\right)} \]
                                        5. Recombined 3 regimes into one program.
                                        6. Final simplification36.2%

                                          \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -250:\\ \;\;\;\;\left(z \cdot z\right) \cdot 0.5\\ \mathbf{elif}\;z \leq 4.4 \cdot 10^{-90}:\\ \;\;\;\;x + 1\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \]
                                        7. Add Preprocessing

                                        Alternative 15: 24.9% accurate, 13.8× speedup?

                                        \[\begin{array}{l} \\ \begin{array}{l} t_0 := 0.5 \cdot \left(x \cdot x\right)\\ \mathbf{if}\;z \leq -1.5 \cdot 10^{-92}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;z \leq 4.5 \cdot 10^{-90}:\\ \;\;\;\;x + 1\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                                        (FPCore (x y z)
                                         :precision binary64
                                         (let* ((t_0 (* 0.5 (* x x))))
                                           (if (<= z -1.5e-92) t_0 (if (<= z 4.5e-90) (+ x 1.0) t_0))))
                                        double code(double x, double y, double z) {
                                        	double t_0 = 0.5 * (x * x);
                                        	double tmp;
                                        	if (z <= -1.5e-92) {
                                        		tmp = t_0;
                                        	} else if (z <= 4.5e-90) {
                                        		tmp = x + 1.0;
                                        	} else {
                                        		tmp = t_0;
                                        	}
                                        	return tmp;
                                        }
                                        
                                        real(8) function code(x, y, z)
                                            real(8), intent (in) :: x
                                            real(8), intent (in) :: y
                                            real(8), intent (in) :: z
                                            real(8) :: t_0
                                            real(8) :: tmp
                                            t_0 = 0.5d0 * (x * x)
                                            if (z <= (-1.5d-92)) then
                                                tmp = t_0
                                            else if (z <= 4.5d-90) then
                                                tmp = x + 1.0d0
                                            else
                                                tmp = t_0
                                            end if
                                            code = tmp
                                        end function
                                        
                                        public static double code(double x, double y, double z) {
                                        	double t_0 = 0.5 * (x * x);
                                        	double tmp;
                                        	if (z <= -1.5e-92) {
                                        		tmp = t_0;
                                        	} else if (z <= 4.5e-90) {
                                        		tmp = x + 1.0;
                                        	} else {
                                        		tmp = t_0;
                                        	}
                                        	return tmp;
                                        }
                                        
                                        def code(x, y, z):
                                        	t_0 = 0.5 * (x * x)
                                        	tmp = 0
                                        	if z <= -1.5e-92:
                                        		tmp = t_0
                                        	elif z <= 4.5e-90:
                                        		tmp = x + 1.0
                                        	else:
                                        		tmp = t_0
                                        	return tmp
                                        
                                        function code(x, y, z)
                                        	t_0 = Float64(0.5 * Float64(x * x))
                                        	tmp = 0.0
                                        	if (z <= -1.5e-92)
                                        		tmp = t_0;
                                        	elseif (z <= 4.5e-90)
                                        		tmp = Float64(x + 1.0);
                                        	else
                                        		tmp = t_0;
                                        	end
                                        	return tmp
                                        end
                                        
                                        function tmp_2 = code(x, y, z)
                                        	t_0 = 0.5 * (x * x);
                                        	tmp = 0.0;
                                        	if (z <= -1.5e-92)
                                        		tmp = t_0;
                                        	elseif (z <= 4.5e-90)
                                        		tmp = x + 1.0;
                                        	else
                                        		tmp = t_0;
                                        	end
                                        	tmp_2 = tmp;
                                        end
                                        
                                        code[x_, y_, z_] := Block[{t$95$0 = N[(0.5 * N[(x * x), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z, -1.5e-92], t$95$0, If[LessEqual[z, 4.5e-90], N[(x + 1.0), $MachinePrecision], t$95$0]]]
                                        
                                        \begin{array}{l}
                                        
                                        \\
                                        \begin{array}{l}
                                        t_0 := 0.5 \cdot \left(x \cdot x\right)\\
                                        \mathbf{if}\;z \leq -1.5 \cdot 10^{-92}:\\
                                        \;\;\;\;t\_0\\
                                        
                                        \mathbf{elif}\;z \leq 4.5 \cdot 10^{-90}:\\
                                        \;\;\;\;x + 1\\
                                        
                                        \mathbf{else}:\\
                                        \;\;\;\;t\_0\\
                                        
                                        
                                        \end{array}
                                        \end{array}
                                        
                                        Derivation
                                        1. Split input into 2 regimes
                                        2. if z < -1.50000000000000007e-92 or 4.50000000000000009e-90 < z

                                          1. Initial program 100.0%

                                            \[e^{\left(x + y \cdot \log y\right) - z} \]
                                          2. Add Preprocessing
                                          3. Taylor expanded in x around inf

                                            \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                                          4. Step-by-step derivation
                                            1. Simplified36.7%

                                              \[\leadsto e^{\color{blue}{x}} \]
                                            2. Taylor expanded in x around 0

                                              \[\leadsto \color{blue}{1 + x \cdot \left(1 + \frac{1}{2} \cdot x\right)} \]
                                            3. Step-by-step derivation
                                              1. +-lowering-+.f64N/A

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

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

                                                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \color{blue}{\left(\frac{1}{2} \cdot x\right)}\right)\right)\right) \]
                                              4. *-commutativeN/A

                                                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \left(x \cdot \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                              5. *-lowering-*.f6415.9%

                                                \[\leadsto \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \mathsf{+.f64}\left(1, \mathsf{*.f64}\left(x, \color{blue}{\frac{1}{2}}\right)\right)\right)\right) \]
                                            4. Simplified15.9%

                                              \[\leadsto \color{blue}{1 + x \cdot \left(1 + x \cdot 0.5\right)} \]
                                            5. Taylor expanded in x around inf

                                              \[\leadsto \color{blue}{\frac{1}{2} \cdot {x}^{2}} \]
                                            6. Step-by-step derivation
                                              1. *-lowering-*.f64N/A

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

                                                \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \left(x \cdot \color{blue}{x}\right)\right) \]
                                              3. *-lowering-*.f6421.7%

                                                \[\leadsto \mathsf{*.f64}\left(\frac{1}{2}, \mathsf{*.f64}\left(x, \color{blue}{x}\right)\right) \]
                                            7. Simplified21.7%

                                              \[\leadsto \color{blue}{0.5 \cdot \left(x \cdot x\right)} \]

                                            if -1.50000000000000007e-92 < z < 4.50000000000000009e-90

                                            1. Initial program 100.0%

                                              \[e^{\left(x + y \cdot \log y\right) - z} \]
                                            2. Add Preprocessing
                                            3. Taylor expanded in x around inf

                                              \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                                            4. Step-by-step derivation
                                              1. Simplified71.6%

                                                \[\leadsto e^{\color{blue}{x}} \]
                                              2. Taylor expanded in x around 0

                                                \[\leadsto \color{blue}{1 + x} \]
                                              3. Step-by-step derivation
                                                1. +-lowering-+.f6428.1%

                                                  \[\leadsto \mathsf{+.f64}\left(1, \color{blue}{x}\right) \]
                                              4. Simplified28.1%

                                                \[\leadsto \color{blue}{1 + x} \]
                                            5. Recombined 2 regimes into one program.
                                            6. Final simplification23.8%

                                              \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -1.5 \cdot 10^{-92}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \mathbf{elif}\;z \leq 4.5 \cdot 10^{-90}:\\ \;\;\;\;x + 1\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \left(x \cdot x\right)\\ \end{array} \]
                                            7. Add Preprocessing

                                            Alternative 16: 14.7% accurate, 69.0× speedup?

                                            \[\begin{array}{l} \\ 1 - z \end{array} \]
                                            (FPCore (x y z) :precision binary64 (- 1.0 z))
                                            double code(double x, double y, double z) {
                                            	return 1.0 - z;
                                            }
                                            
                                            real(8) function code(x, y, z)
                                                real(8), intent (in) :: x
                                                real(8), intent (in) :: y
                                                real(8), intent (in) :: z
                                                code = 1.0d0 - z
                                            end function
                                            
                                            public static double code(double x, double y, double z) {
                                            	return 1.0 - z;
                                            }
                                            
                                            def code(x, y, z):
                                            	return 1.0 - z
                                            
                                            function code(x, y, z)
                                            	return Float64(1.0 - z)
                                            end
                                            
                                            function tmp = code(x, y, z)
                                            	tmp = 1.0 - z;
                                            end
                                            
                                            code[x_, y_, z_] := N[(1.0 - z), $MachinePrecision]
                                            
                                            \begin{array}{l}
                                            
                                            \\
                                            1 - z
                                            \end{array}
                                            
                                            Derivation
                                            1. Initial program 100.0%

                                              \[e^{\left(x + y \cdot \log y\right) - z} \]
                                            2. Add Preprocessing
                                            3. Taylor expanded in z around inf

                                              \[\leadsto \mathsf{exp.f64}\left(\color{blue}{\left(-1 \cdot z\right)}\right) \]
                                            4. Step-by-step derivation
                                              1. mul-1-negN/A

                                                \[\leadsto \mathsf{exp.f64}\left(\left(\mathsf{neg}\left(z\right)\right)\right) \]
                                              2. neg-sub0N/A

                                                \[\leadsto \mathsf{exp.f64}\left(\left(0 - z\right)\right) \]
                                              3. --lowering--.f6456.7%

                                                \[\leadsto \mathsf{exp.f64}\left(\mathsf{\_.f64}\left(0, z\right)\right) \]
                                            5. Simplified56.7%

                                              \[\leadsto e^{\color{blue}{0 - z}} \]
                                            6. Taylor expanded in z around 0

                                              \[\leadsto \color{blue}{1 + -1 \cdot z} \]
                                            7. Step-by-step derivation
                                              1. neg-mul-1N/A

                                                \[\leadsto 1 + \left(\mathsf{neg}\left(z\right)\right) \]
                                              2. unsub-negN/A

                                                \[\leadsto 1 - \color{blue}{z} \]
                                              3. --lowering--.f6412.4%

                                                \[\leadsto \mathsf{\_.f64}\left(1, \color{blue}{z}\right) \]
                                            8. Simplified12.4%

                                              \[\leadsto \color{blue}{1 - z} \]
                                            9. Add Preprocessing

                                            Alternative 17: 14.7% accurate, 69.0× speedup?

                                            \[\begin{array}{l} \\ x + 1 \end{array} \]
                                            (FPCore (x y z) :precision binary64 (+ x 1.0))
                                            double code(double x, double y, double z) {
                                            	return x + 1.0;
                                            }
                                            
                                            real(8) function code(x, y, z)
                                                real(8), intent (in) :: x
                                                real(8), intent (in) :: y
                                                real(8), intent (in) :: z
                                                code = x + 1.0d0
                                            end function
                                            
                                            public static double code(double x, double y, double z) {
                                            	return x + 1.0;
                                            }
                                            
                                            def code(x, y, z):
                                            	return x + 1.0
                                            
                                            function code(x, y, z)
                                            	return Float64(x + 1.0)
                                            end
                                            
                                            function tmp = code(x, y, z)
                                            	tmp = x + 1.0;
                                            end
                                            
                                            code[x_, y_, z_] := N[(x + 1.0), $MachinePrecision]
                                            
                                            \begin{array}{l}
                                            
                                            \\
                                            x + 1
                                            \end{array}
                                            
                                            Derivation
                                            1. Initial program 100.0%

                                              \[e^{\left(x + y \cdot \log y\right) - z} \]
                                            2. Add Preprocessing
                                            3. Taylor expanded in x around inf

                                              \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                                            4. Step-by-step derivation
                                              1. Simplified47.9%

                                                \[\leadsto e^{\color{blue}{x}} \]
                                              2. Taylor expanded in x around 0

                                                \[\leadsto \color{blue}{1 + x} \]
                                              3. Step-by-step derivation
                                                1. +-lowering-+.f6412.2%

                                                  \[\leadsto \mathsf{+.f64}\left(1, \color{blue}{x}\right) \]
                                              4. Simplified12.2%

                                                \[\leadsto \color{blue}{1 + x} \]
                                              5. Final simplification12.2%

                                                \[\leadsto x + 1 \]
                                              6. Add Preprocessing

                                              Alternative 18: 14.4% accurate, 207.0× speedup?

                                              \[\begin{array}{l} \\ 1 \end{array} \]
                                              (FPCore (x y z) :precision binary64 1.0)
                                              double code(double x, double y, double z) {
                                              	return 1.0;
                                              }
                                              
                                              real(8) function code(x, y, z)
                                                  real(8), intent (in) :: x
                                                  real(8), intent (in) :: y
                                                  real(8), intent (in) :: z
                                                  code = 1.0d0
                                              end function
                                              
                                              public static double code(double x, double y, double z) {
                                              	return 1.0;
                                              }
                                              
                                              def code(x, y, z):
                                              	return 1.0
                                              
                                              function code(x, y, z)
                                              	return 1.0
                                              end
                                              
                                              function tmp = code(x, y, z)
                                              	tmp = 1.0;
                                              end
                                              
                                              code[x_, y_, z_] := 1.0
                                              
                                              \begin{array}{l}
                                              
                                              \\
                                              1
                                              \end{array}
                                              
                                              Derivation
                                              1. Initial program 100.0%

                                                \[e^{\left(x + y \cdot \log y\right) - z} \]
                                              2. Add Preprocessing
                                              3. Taylor expanded in x around inf

                                                \[\leadsto \mathsf{exp.f64}\left(\color{blue}{x}\right) \]
                                              4. Step-by-step derivation
                                                1. Simplified47.9%

                                                  \[\leadsto e^{\color{blue}{x}} \]
                                                2. Taylor expanded in x around 0

                                                  \[\leadsto \color{blue}{1} \]
                                                3. Step-by-step derivation
                                                  1. Simplified12.0%

                                                    \[\leadsto \color{blue}{1} \]
                                                  2. Add Preprocessing

                                                  Developer Target 1: 100.0% accurate, 1.0× speedup?

                                                  \[\begin{array}{l} \\ e^{\left(x - z\right) + \log y \cdot y} \end{array} \]
                                                  (FPCore (x y z) :precision binary64 (exp (+ (- x z) (* (log y) y))))
                                                  double code(double x, double y, double z) {
                                                  	return exp(((x - z) + (log(y) * y)));
                                                  }
                                                  
                                                  real(8) function code(x, y, z)
                                                      real(8), intent (in) :: x
                                                      real(8), intent (in) :: y
                                                      real(8), intent (in) :: z
                                                      code = exp(((x - z) + (log(y) * y)))
                                                  end function
                                                  
                                                  public static double code(double x, double y, double z) {
                                                  	return Math.exp(((x - z) + (Math.log(y) * y)));
                                                  }
                                                  
                                                  def code(x, y, z):
                                                  	return math.exp(((x - z) + (math.log(y) * y)))
                                                  
                                                  function code(x, y, z)
                                                  	return exp(Float64(Float64(x - z) + Float64(log(y) * y)))
                                                  end
                                                  
                                                  function tmp = code(x, y, z)
                                                  	tmp = exp(((x - z) + (log(y) * y)));
                                                  end
                                                  
                                                  code[x_, y_, z_] := N[Exp[N[(N[(x - z), $MachinePrecision] + N[(N[Log[y], $MachinePrecision] * y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
                                                  
                                                  \begin{array}{l}
                                                  
                                                  \\
                                                  e^{\left(x - z\right) + \log y \cdot y}
                                                  \end{array}
                                                  

                                                  Reproduce

                                                  ?
                                                  herbie shell --seed 2024161 
                                                  (FPCore (x y z)
                                                    :name "Statistics.Distribution.Poisson.Internal:probability from math-functions-0.1.5.2"
                                                    :precision binary64
                                                  
                                                    :alt
                                                    (! :herbie-platform default (exp (+ (- x z) (* (log y) y))))
                                                  
                                                    (exp (- (+ x (* y (log y))) z)))